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.