Still pushing!
Standard Rules: Actions 9
As we’ve discussed before, Inform entertains basic conceptions of spatial relationships, though there is not a built-in model for the way things exist in spaces like rooms or containers. For instance, the Standard Rules will respond to look under [something] commands, but it has by default no mechanism or data structure for tracking whether or not one thing is actually under or above another.
Actions like pulling and pushing connote perspective and distance. We push from ourselves, for instance, and pull to, but the Standard Rules leave such considerations to us.
§120. Pulling.
As already suggested, there isn’t any real simulation for pulling built into Inform. This is an action players will try, whether due to tradition or deduction, and so it really ought to be included in the Standard Rules.
Pulling is an action applying to one thing.
The Pulling action translates into Inter as "Pull".
The specification of the pulling action is "Pulling is the act of pulling
something not grossly larger than the actor by an amount which would not
substantially move it.
In the Standard Rules there are no carry out rules for this action because
nothing in the standard Inform world model which reacts to it. The action
is provided for authors to hang more interesting behaviour onto for special
cases: say, pulling a lever. ('The big red lever is a fixed in place device.
Instead of pulling the big red lever, try switching on the lever. Instead
of pushing the big red lever, try switching off the lever.')"
§121. Check.
It isn’t possible to pull something fixed in place.
Check an actor pulling (this is the can't pull what's fixed in place rule):
if the noun is fixed in place:
if the actor is the player:
say "[regarding the noun][They] [are] fixed in place." (A);
stop the action.
Note that pulling scenery generates a different, less communicative response. In both cases, of course, we authors would likely write our own texts, but what else is new?
Check an actor pulling (this is the can't pull scenery rule):
if the noun is scenery:
if the actor is the player:
say "[We] [are] unable to." (A);
stop the action.
Player’s can’t pull other people. The generic "[The noun] [might not like] that." response is used a whopping six times in the Standard Rules. We first saw it issued as a reply to touching other people.
Check an actor pulling (this is the can't pull people rule):
if the noun is a person:
if the actor is the player:
say "[The noun] [might not like] that." (A);
stop the action.
§122. Report.
The response for player’s pulling themselves is handled in the report phase, and while I can see an argument for doing, I would personally have left it as a check rule.
Then again, both of these reported outcomes, handled in a single rule, describe a very limited kind of action “success.”
Report an actor pulling (this is the report pulling rule):
if the actor is the player:
if the action is not silent:
now the prior named object is nothing;
say "Nothing obvious [happen]." (A);
otherwise:
say "[The actor] [pull] [the noun]." (B).
§123. Pushing.
Observant readers will note that the second paragraph of the pushing specification has been copied directly from the pulling specification. This sounds worse than it is in practice, as the actions’ respective rules are more or less identical. Still, as anyone who has implemented a push button before can attest, there exists a ready example that would have fit right at home in the specification.
Pushing is an action applying to one thing.
The Pushing action translates into Inter as "Push".
The specification of the pushing action is "Pushing is the act of pushing
something not grossly larger than the actor by an amount which would not
substantially move it. (See also the pushing it to action, which involves
a longer-distance push between rooms.)
In the Standard Rules there are no carry out rules for this action because
nothing in the standard Inform world model which reacts to it. The action
is provided for authors to hang more interesting behaviour onto for special
cases: say, pulling a lever. ('The big red lever is a fixed in place device.
Instead of pulling the big red lever, try switching on the lever. Instead
of pushing the big red lever, try switching off the lever.')"
I’ll collapse the following action processing rules, since they are identical—down to the bifurcated report rule—to those for pulling.
Action Processing Rules for pushing
§124. Check.
Check an actor pushing something (this is the can't push what's fixed in place rule):
if the noun is fixed in place:
if the actor is the player:
say "[regarding the noun][They] [are] fixed in place." (A);
stop the action.
Check an actor pushing something (this is the can't push scenery rule):
if the noun is scenery:
if the actor is the player:
say "[We] [are] unable to." (A);
stop the action.
Check an actor pushing something (this is the can't push people rule):
if the noun is a person:
if the actor is the player:
say "[The noun] [might not like] that." (A);
stop the action.
§125. Report.
Report an actor pushing something (this is the report pushing rule):
if the actor is the player:
if the action is not silent:
now the prior named object is nothing;
say "Nothing obvious [happen]." (A);
otherwise:
say "[The actor] [push] [the noun]." (B).
§126. Turning.
For every thing, turn, turn, turn. turning, as is the case with many other actions, belongs here by right of tradition and, besides, it is something players will often try. Hoever, in its current state, it is more a placeholder that an attempt to simulate. Note that, despite the mention of a dial here in the specification, turning as-is has no relation to the setting it to action. Authors implementing combination locks and the like will likely come up with their own suitable grammar.
Turning is an action applying to one thing.
The Turning action translates into Inter as "Turn".
The specification of the turning action is "Turning is the act of rotating
something - say, a dial.
In the Standard Rules there are no carry out rules for this action because
nothing in the standard Inform world model which reacts to it. The action
is provided for authors to hang more interesting behaviour onto for special
cases: say, turning a capstan."
Once again, the rules are practically identical to those for pushing and pulling, so I’ve collapsed the details.
Action Processing Rules for turning
§127. Check.
Check an actor turning (this is the can't turn what's fixed in place rule):
if the noun is fixed in place:
if the actor is the player:
say "[regarding the noun][They] [are] fixed in place." (A);
stop the action.
Check an actor turning (this is the can't turn scenery rule):
if the noun is scenery:
if the actor is the player:
say "[We] [are] unable to." (A);
stop the action.
Check an actor turning (this is the can't turn people rule):
if the noun is a person:
if the actor is the player:
say "[The noun] [might not like] that." (A);
stop the action.
§128. Report.
Report an actor turning (this is the report turning rule):
if the actor is the player:
if the action is not silent:
now the prior named object is nothing;
say "Nothing obvious [happen]." (A);
otherwise:
say "[The actor] [turn] [the noun]." (B).
§129. Pushing it to.
And now, a change of pace: the pushing it to action does have spatial significance, as it involves moving arge objects between rooms. I fondly recall pushing (old Infocom spoiler) the gold machine from room to room in Zork III and, less fondly, the blocks of the royal puzzle. There’s quite a bit more implementation here, including a tailor-made property and a new I6-invoked special going-with-push action.
Pushing it to is an action applying to one thing and one visible thing.
The Pushing it to action translates into Inter as "PushDir".
The specification of the pushing it to action is "This action covers pushing
a large object, not being carried, so that the actor pushes it from one room
to another: for instance, pushing a bale of hay to the east.
This is rapidly converted into a special form of the going action. If the
noun object has the either/or property 'pushable between rooms', then the
action is converted to going by the 'standard pushing in directions rule'.
If that going action succeeds, then the original pushing it to action
stops; it's only if that fails that we run on into the 'block pushing in
directions rule', which then puts an end to the matter."
§130. Check.
Note that there are only check rules involved. The pushing it to action will either fail or be converted.
The action first tests to determine if the noun is pushable between rooms.
Check an actor pushing something to (this is the can't push unpushable things rule):
if the noun is not pushable between rooms:
if the actor is the player:
say "[The noun] [cannot] be pushed from place to place." (A);
stop the action.
Should that test succeed, the rulebook verifies that the second noun is a direction (it doesn’t matter whether there is a room in that direction yet, that’s handled elsewhere).
Check an actor pushing something to (this is the can't push to non-directions rule):
if the second noun is not a direction:
if the actor is the player:
say "[regarding the noun][They] [aren't] a direction." (A);
stop the action.
I’m not sure whether this warrants a built-in rule or not. Something can be pushed up a ramp, of course, but not a ladder.
Check an actor pushing something to (this is the can't push vertically rule):
if the second noun is up or the second noun is down:
if the actor is the player:
say "[The noun] [cannot] be pushed up or down." (A);
stop the action.
A player cannot push something pushable between rooms when they are enclosed by it!
Check an actor pushing something to (this is the can't push from within rule):
if the noun encloses the actor:
if the actor is the player:
say "[The noun] [cannot] be pushed from here." (A);
stop the action.
Finally, the conversion. From a natural language point of view, we don’t have insight into the operation of this action, but we can glean from successes that the player and the noun are generally moved to the room gone to.
Check an actor pushing something to (this is the standard pushing in directions rule):
convert to special going-with-push action.
The Standard Rules does not always account for cases in which authors disable its machinery, but, should the standard pushing in directions rule be delisted or replaced, the block pushing in directions rule might execute.
Check an actor pushing something to (this is the block pushing in directions rule):
if the actor is the player:
say "[The noun] [cannot] be pushed from place to place." (A);
stop the action.
Let’s add a few more.
§131. Squeezing.
A lot of us will remember squeezing from Plundered Hearts, but that usage involved a second noun. Having read these rules front to back, we might best remember the squeezing action for Graham Nelson’s use of the term mildly fruity.
Squeezing is an action applying to one thing.
The Squeezing action translates into Inter as "Squeeze".
The specification of the squeezing action is "Squeezing is an action which
can conveniently vary from squeezing something hand-held, like a washing-up
liquid bottle, right up to squeezing a pillar in a bear hug.
In the Standard Rules there are no carry out rules for this action because
nothing in the standard Inform world model which reacts to it. The action
is provided for authors to hang more interesting behaviour onto for special
cases. A mildly fruity message is produced to players who attempt to
squeeze people, which is blocked by a check squeezing rule."
§132. Check.
There is only one rule in the check squeezing rulebook: a prohibition against squeezing. The response is identical to those for other actions discussed today: it isn’t the response that’s humorous, it’s the rule name.
Check an actor squeezing (this is the innuendo about squeezing people rule):
if the noun is a person:
if the actor is the player:
say "[The noun] [might not like] that." (A);
stop the action.
§133. Report.
This rule and its structure are familiar by now.
Report an actor squeezing (this is the report squeezing rule):
if the actor is the player:
if the action is not silent:
say "[We] [achieve] nothing by this." (A);
otherwise:
say "[The actor] [squeeze] [the noun]." (B).
§134. Saying yes.
saying yes and its opposite, saying no, are barely actions at all. It’s worth noting that the yes, y, no, and n inputs handled by if the player consents phrases all come straight from the keyboard, so Inform doesn’t handle such inputs as actions. A lot of intervention will be required before much can be done with these actions.
Still, players are likely to type such things. Some kind of reply is probably in order.
Section 8 - Standard actions which always do nothing unless rules intervene
Saying yes is an action applying to nothing.
The Saying yes action translates into Inter as "Yes".
The specification of the saying yes action is
"The Standard Rules define this action in only a minimal way, blocking it
with a check rule which stops it in all cases. It exists so that before
or instead rules can be written to make it do interesting things in special
cases. (Or to reconstruct the action as something more substantial, unlist
the block rule and supply carry out and report rules, together perhaps
with some further check rules.)"
§134. Saying yes.
There’s only one check rule here. It could arguably be handled as a mistake in current versions of Inform, though that probably isn’t adequate for compatibility reasons.
Check an actor saying yes (this is the block saying yes rule):
if the actor is the player:
say "That was a rhetorical question." (A);
stop the action.
Since the code for saying no is nearly identical, I have hidden it beneath a summary.
Action Processing Rules for saying no
§136. Saying no.
Saying no is an action applying to nothing.
The Saying no action translates into Inter as "No".
The specification of the saying no action is
"The Standard Rules define this action in only a minimal way, blocking it
with a check rule which stops it in all cases. It exists so that before
or instead rules can be written to make it do interesting things in special
cases. (Or to reconstruct the action as something more substantial, unlist
the block rule and supply carry out and report rules, together perhaps
with some further check rules.)"
§137. Check
Check an actor saying no (this is the block saying no rule):
if the actor is the player:
say "That was a rhetorical question." (A);
stop the action.
§138. Burning.
A burning action will usually require an amount of contextual simulation that a general ruleset cannot provide. Should there be a system of ignition, burn durations, damage modeling, and the like? The Standard Rules allows for a very basic burning action. It does not allow for commands like burn kinding with the lit match, which beg such questions and involve additional nouns.
Burning is an action applying to one thing.
The Burning action translates into Inter as "Burn".
The specification of the burning action is
"The Standard Rules define this action in only a minimal way, blocking it
with a check rule which stops it in all cases. It exists so that before
or instead rules can be written to make it do interesting things in special
cases. (Or to reconstruct the action as something more substantial, unlist
the block rule and supply carry out and report rules, together perhaps
with some further check rules.)"
§139. Check.
There is only one rule here to acknowledge and prevent all attempts.
Check an actor burning (this is the block burning rule):
if the actor is the player:
say "This dangerous act [would achieve] little." (A);
stop the action.
§140. Waking up.
The presence of the word up in this action might have implications for command grammar, but ultimately this feels like a reflexive version of the waking action rather than its own separate thing.
Perhaps it has been retained for its humor, which stands out a bit.
Waking up is an action applying to nothing.
The Waking up action translates into Inter as "Wake".
The specification of the waking up action is
"The Standard Rules define this action in only a minimal way, blocking it
with a check rule which stops it in all cases. It exists so that before
or instead rules can be written to make it do interesting things in special
cases. (Or to reconstruct the action as something more substantial, unlist
the block rule and supply carry out and report rules, together perhaps
with some further check rules.)"
§141. Check.
A single check rule ending in failure.
Check an actor waking up (this is the block waking up rule):
if the actor is the player:
now the prior named object is nothing;
say "The dreadful truth [are], this [are not] a dream." (A);
stop the action.
§142. Thinking.
This is another action that is largely in place for its humor. The specification is, word-for-word, the same as that for the waking up action, though I would add that many authors have used the command think as a basis for either hinting or goal tracking-sytems.
Thinking is an action applying to nothing.
The Thinking action translates into Inter as "Think".
The specification of the thinking action is
"The Standard Rules define this action in only a minimal way, blocking it
with a check rule which stops it in all cases. It exists so that before
or instead rules can be written to make it do interesting things in special
cases. (Or to reconstruct the action as something more substantial, unlist
the block rule and supply carry out and report rules, together perhaps
with some further check rules.)"
§143. Check.
A lone, humor-forward, placeholder rule.
Check an actor thinking (this is the block thinking rule):
if the actor is the player:
say "What a good idea." (A);
stop the action.
We draw ever closer to the end of the Actions section of the Standard Rules. This seems a good place to stop, as we can resume with the actions pertaining to sensory data (smelling, listening, tasting). As readers may recall, we paused to discusslistening with regard to the supplying a missing noun rulebook. That must seem like a lifetime ago!