WWI 17.19 Does the player mean… includes the following:
Notice that we can also make rules about actions that apply to two objects, so for instance:
Does the player mean throwing the can of shoe polish at the shoe polish vending machine: it is likely.
which nicely clarifies THROW POLISH AT POLISH, but does not comment on the likelihood of throwing the can at other things or of throwing other things at the vending machine.
…
But there is a caveat. There are some cases where this mechanism will not in fact help Inform to choose its way out of an ambiguous command, because of the way it parses one noun at a time. It usually needs to understand the first noun before it will even try to make sense of the second. So a rule like:
Does the player mean throwing the can of shoe polish at the tree: it is likely.
may not work if the player types THROW POLISH AT TREE and POLISH is ambiguous, because when the parser is trying to understand POLISH, it hasn’t yet seen to the end of the command and realised that the second noun will be the tree; so the second noun is unset and the rule won’t match.
I don’t think I’m alone in being confused by the fact that these two examples seem to be identical except that in the first case the word “polish” applies to both the noun
and second noun
and yet the note for the second example indicates that the prospective identity of the second noun
is not determined when the noun
is being considered (and so implicitly cannot affect the outcome for the noun
).
Testing in 6M62 shows that the shoe polish
/tree
example seems to work just fine for disambiguation (when that’s necessary; note that the grammar line for the throwing it at
action uses the [something preferably held]
token, which also influences disambiguation).
What gives? Is this text just outdated, or a typo of some kind? Or is there some aspect that I’m missing?
For reference, the test scenario I have been using:
Place is a room.
A fixed in place thing called a shoe polish vending machine is in Place.
A fixed in place thing called a tree is in Place.
A can of shoe polish is in Place.
Does the player mean throwing the can of shoe polish at the shoe polish vending machine: it is likely. [when absent, prompts for disambiguation; when present, works as expected]
Does the player mean throwing the can of shoe polish at the tree: it is likely. [when absent, prompts for disambiguation; when present, works as expected]
It does not seem to matter whether the vending machine
is fixed in place
or not.
As a side note, the CheckDPMR()
routine is not in a template file but is found in an I6 inclusion in the Standard Rules. There’s a line
rv = FollowRulebook( (+does the player mean rules+) );
that I think should be
rv = FollowRulebook( (+does the player mean rules+), 0, true); ! MODIFIED
… otherwise you can get some line breaks when the DTPM rules are checked.