If you type ‘actions’ while testing your scenario, it will afterwards help you by showing which actions Inform is generating in response to your typed commands.
In this instance:
Silent Dungeon
You are in the Silent Dungeon. How will you ever escape?
You can see a Mysterious Door here.
>actions
Actions listing on.
>n
[going north]
Executing the "Report going north from the Silent Dungeon" rule.
Sunny Field
You are in a Sunny Field. That was easier than I thought.
You can see a Mysterious Door here.
[going north - succeeded]
>s
[going south]
Silent Dungeon
You are in the Silent Dungeon. How will you ever escape?
You can see a Mysterious Door here.
[going south - succeeded]
>go door
[entering the Mysterious Door]
[(1) going the Mysterious Door]
Sunny Field
You are in a Sunny Field. That was easier than I thought.
You can see a Mysterious Door here.
[(1) going the Mysterious Door - succeeded]
[entering the Mysterious Door - succeeded]
>s
[going south]
Silent Dungeon
You are in the Silent Dungeon. How will you ever escape?
You can see a Mysterious Door here.
[going south - succeeded]
>enter door
[entering the Mysterious Door]
[(1) going the Mysterious Door]
Sunny Field
You are in a Sunny Field. That was easier than I thought.
You can see a Mysterious Door here.
[(1) going the Mysterious Door - succeeded]
[entering the Mysterious Door - succeeded]
which shows you that typing ‘n’ generates a going north
action, but typing ‘go [through] [the] [mysterious] door’ or ‘enter [the] [mysterious] door’ first generate a entering the Mysterious Door
action, which is subsequently converted to a going the Mysterious Door
action- hence Report going north...
does not fire.
EDIT 2: in detail The reason Report going north...
does not fire is that, although a [going …] action is generated, so the ‘Report going…’ rulebook is run through, the object of the action is the Mysterious Door and ‘north’ never comes into it.
Conversely, the reason Report going through the Mysterious Door...
does fire when the action is [going north] is that when [going a direction] involves a door (as well as when the action is [going a door]), the action variable the door gone through
is set to that door, and this is used to match action patterns like ... going through ...
in subsequent rule definitions of the going action.
This behaviour is defined in the Standard Rules here:
The going action has an object called the door gone through (matched as "through").
which is essentially saying “when parsing action patterns during processing of the [going] action, match ‘… through something …’ against the object represented by ‘the door gone through’”. ‘(matched as “through”)’ just creates syntactic sugar, allowing the writing of neater rules like Report going through *a door*
rather than the equivalent Report going when the door gone through is *a door*
.
Similarly, there are action variables ‘the room gone from’ (matched as “from”) and ‘the room gone to’ (matched as “to”), so that convoluted rules like `Report going when the room gone from is the Silent Dungeon and the room gone to is the Sunny Field and the door gone through is the Mysterious Door…’ can be condensed into ‘Report going from the Silent Dungeon to the Sunny Field through the Mysterious Door…’
See Writing with Inform §12.10. Action variables
EDIT 3:
So in summary:
Report going through *a door*...
will fire in response to any of ‘go a direction’ or ‘go a door’ or ‘go through a door’ or ‘enter a door’;
Report going *a direction*...
will fire in response to ‘go a direction’ but NOT ‘go a door’ or ‘go through a door’ or ‘enter a door’;
Report going *a door*...
will fire in response to ‘go a door’ or ‘go through a door’ or ‘enter a door’ but NOT ‘go a direction’
small print
Interestingly, the Standard Rules extension, where all this is taking place, uses an undocumented syntax to convert one action to another, e.g.:
Check an actor entering (this is the convert enter door into go rule):
if the noun is a door, convert to the going action on the noun.
rather than the documented try the actor going the noun
syntax.
The result of using this undocumented syntax is that although the original action may be recorded as succeeding if the action it is converted to succeeds (as in the above transcript), it is nevertheless aborted immediately after the convert.....
phrase- so if, as in the example above, the conversion takes place during the Check stage, the Carry Out, After and Report rules of the original action do not run.
The end result is similar to the documented syntax of
try the actor going the noun;
stop the action;
EDIT: this undocumented syntax is defined in the Standard Rules here:
To convert to (AN - an action name) on (O - an object):
(- return GVS_Convert({AN},{O},0); -) - in to only.
To convert to request of (X - object) to perform (AN - action name) with
(Y - object) and (Z - object):
(- return ConvertToRequest({X}, {AN}, {Y}, {Z}); -).
To convert to special going-with-push action:
(- return ConvertToGoingWithPush(); -).