Here’s the best way I’ve come up with to do it:
[code]Flying is an action applying to one topic.
Understand “fly [text]” as flying.
Understand “fly” as flying. [maybe not needed?]
Instead of flying “plane” when the player is in the plane:
say “You fly the plane.[line break]”.
Instead of flying “plane” when the player is not in the plane:
say “You are not in a plane.[line break]”.
Instead of flying:
If the player is in the plane
Begin;
say “You fly the plane.[line break]”;
Otherwise;
say “You flap your arms but nothing happens.[line break]”;
End if.[/code]
The problems are minor: If you’re in the plane with the doodad and you say “fly doodad”, you end up flying the plane.
Adding a block like this caused only the last set to fire:
[code]Instead of flying “plane” when the player is in the plane:
say “You fly the plane.[line break]”.
Instead of flying “plane” when the player is not in the plane:
say “You are not in a plane.[line break]”.
Instead of flying [text]:
If the player is in the plane
Begin;
say “Perhaps you be a little clearer.”; [in case they say something that happens to mean plane]
Otherwise;
say “It doesn’t seem flyable.[line break]”;
Instead of flying:
If the player is in the plane
Begin;
say “You fly the plane.[line break]”;
Otherwise;
say “You flap your arms but nothing happens.[line break]”;
End if.[/code]
This didn’t seem to be possible, unless I couldn’t get the syntax right:
Flying is an action applying to nothing or applying to one thing.
Understand "fly [thing]" as flying.
Understand "fly" as flying.
This is the ideal sort of result I want: