secret door not very secret (adv3Lite)

In the basement, there is a tool rack on the west wall. If Harry grabs the right object on the rack, the pegboard springs out from the wall to reveal a secret door. Mechanism works correctly, but the secret door isn’t very secret.

In the banner above the transcript display, the Room Title is shown along with exits listed: North, West, Up.

But the West exit is the secret door. According to the Adv3Lite Manual, secret doors are not supposed to be listed as exits unless they’ve been opened.

Here’s an isolated recreation of the problem in my test bed, minus the mechanism to actually open the door (since that works, and my problem is with the behavior before the door is opened.)

[code]#charset “us-ascii”

#include <tads.h>
#include “advlite.h”

versionInfo: GameID
IFID = ‘243748b1-5310-4916-8436-890e9ccc16fd’
name = ‘test’
byline = ‘by Jerry Ford’
htmlByline = ‘by
Jerry Ford

version = ‘1’
authorEmail = ‘Jerry Ford jerry.o.ford@gmail.com
desc = ‘Testing followAgendaItem’
htmlDesc = ‘Testing secret door.’

;

gameMain: GameMainDef
/* the initial player character is ‘harry’ */
initialPlayerChar = harry
paraBrksBtwnSubcontents = nil
usePastTense = true
;

// harry, main character
harry: Actor ‘Harry;;man self’ @roomA
“Harry. <.p>”
globalParamName = ‘harry’
isHim = true
isInitState = true
person = 3
proper = true

;
roomA: Room ‘Room A’
“Now in Room A.”

north = roomB

;

roomB: Room ‘Room B’
“Now in Room B.”

south = roomA
north: TravelConnector
{
    destination = toolRack
    
}

;

  • toolRack: SecretDoor ‘tool rack;pegboard’
    “A pegboard tool rack was mounted to the wall next to the broad empty table.
    \b
    Hammer, crowbar, all manner of tools hung from pegs
    in the board. \b
    Incongruously amidst the vast collection of carpentry
    tools, there was also a brightly painted ceramic Day of the Dead medallion,
    a black grinning skull with colorful flowers and an intricate floral pattern
    painted on it in pastels, hanging on a peg in the board.
    <.p>”

    isOpen = nil

    otherSide = secretDoorFromRoomC
    vocabWhenOpen = ‘hidden room;pegboard;tool rack’

    contentsListed = nil
    ;

roomC: Room ‘Room C’
“Now in Room C.”

south = secretDoorFromRoomC

;
++ secretDoorFromRoomC: Door ‘door;basement’
“The door led into the basement of the Hernandez compound. <.p>”
otherSide = toolRack
;

[/code]

In this example, the secret door is in room B and it opens to the north. So I expect North to not be listed as an Exit since the secret door cannot be opened in this example. But, when I run this code, North is in fact shown as an exit. Trying to go north does not work, but the message displayed, rather than something on the order of “no exit to the north”, again spills the beans…

Jerry

My immediate reaction, without actually testing it, is that the problem may be to the fact that you’ve defined:

north: TravelConnector
    {
        destination = toolRack        
    }

Rather than

north = toolRack  

The latter being needed for a SecretDoor to work as specified.

Yes, that was it.

Though it wasn’t apparent in the test bed code, the travel connector was there so that Harry can explore the basement unaccompanied, even find and open the secret passage, but he can’t actually go down the passage without an escort. And he has to find the escort.

So, once the secret door was open, I wanted a travel barrier to prevent him from going through it alone.

You’ve now pointed out that if doesn’t work that way, so I’ve now put the barrier code in harry.beforeTravel() and it seems to be working.

Thanks.

You should also be able to put the travel barrier directly on the SecretDoor (since SecretDoor inherits from Door which inherits from TravelConnector).