Tads 3 new need help

Is the away to stop implic action say on a door?

1 Like

Depends on what you’re trying to do. If it’s specifically a door that you don’t want an implicit action to open, then something like:

        dobjFor(Open) {
                verify() {
                        nonObvious;
                        inherited;
                }
        }

Is probably what you want. Sample game illustrating:

#include <adv3.h>
#include <en_us.h>


startRoom:      Room 'Void'
        "This is a featureless void. "
        north = northDoor
;
+ northDoor: Door 'door' 'door'
        "It's a generic door. "
        destination = otherRoom
        dobjFor(Open) {
                verify() {
                        nonObvious;
                        inherited;
                }
        }
;

otherRoom: Room 'Another Void'
        "This is a featureless void, but a different one. "
        south = otherDoor
;
+ otherDoor: Door -> northDoor 'door' 'door';

me:     Person
        location = startRoom
;

versionInfo:    GameID
        name = 'sample'
        byline = 'nobody'
        authorEmail = 'nobody <foo@bar.com>'
        desc = '[This space intentionally left blank]'
        version = '1.0'
        IFID = '12345'
;
gameMain:       GameMainDef
        initialPlayerChar = me
;

Which gets you:

Void
This is a featureless void.

>n
You must open the door first.

>open door
Opened.

>n
Another Void
This is a featureless void, but a different one.

If you want to handle any implicit action for an object (but not disable implicit actions globally) or globally disable some specific action from being called implicitly, that’s a little trickier. There’s a recent-ish thread where I asked about some implicit action corner cases and there are a couple scenarios and their solutions discussed in the thread.

4 Likes

Thank you so much.