| 6.9. Going, Pushing Things in Directions |
It is very common for players to make a mistake and type the wrong direction command, or even to misunderstand the room description and not recognize all the possible exits. Bumping into Walls helpfully adds a facility so that when the player tries to go in the wrong direction, the game lists the correct possibilities, as in
From here, the viable exits are to the south, the east and the west.
Another useful technique is to provide some sense of the journey between locations, especially if they are remote from one another or the player has to do something unusual to get from one to the other. Up and Up adds a short description of travel when we approach a new room, before the room description is printed; Veronica, conversely, adds a comment when the player leaves a region of the map. The Second Oldest Problem intervenes and kills a player who tries to travel from one dark room to another. Mattress King embellishes the description that automatically results from PUSH MATTRESS WEST, adding a line that describes the player pushing the object before describing the new room approached.
We may also want to add a brief comment when we arrive in a new room, after the room description is printed. One trivial way to do this is to append the line to the room's main description, conditionally, like this:
The Hammock Emporium is a room. "This is Cousin Ed's shop, the big dream he left accounting to pursue. You can't help gawking at the Luxury Leather Space Hammock, made of genuine red buffalo skins[if unvisited]. [paragraph break]So this is why Grampa makes all those 'lying down on the job' jokes every Thanksgiving[end if].".
But often we want our first-glance comment to come after some items in the room are described; and for this effect, we would use the "first look rule" defined in Saint Eligius.
Another category of examples treat how we handle the movement commands themselves. The eight compass directions, with UP and DOWN, IN and OUT, are used as standard in most interactive fiction, but they are not the only possible way of navigating, and strike many newcomers to the genre as counter-intuitive, since when strolling around in real life most of us rarely think about our travel in terms of compass orientation. Misadventure allows the player to GO TO a named room, instead, and calculates the best route to reach the destination; Safari Guide builds on this by letting the player make the whole trip in a single move, automatically opening any doors that stand in his way en route.
In the same spirit of interpreting the player's intentions sensibly, Provenance Unknown modifies the pushing command so that if the player pushes the top object in a stack of objects towards a direction, Inform attempts to move the bottom item instead. This is convenient if, for instance, we have a heavy television on a movable cart and want PUSH TELEVISION WEST to work just as well as PUSH CART WEST. Zorb demonstrates adjusting the restrictions on when the player is allowed to push things in directions in the first place.
We also sometimes want to respond sensibly to terse movement commands or ones that rely on some knowledge of where the player has already been. Polarity provides a GO BACK command, allowing the player to retreat in the direction from which he came, while Minimal Movement understands LEAVE, GO, and so on as OUT, in the absence of other information. Owen's Law takes this further, calculating from the best routes on a map how to make OUT mean "move towards the exit of this indoor room", and IN mean "proceed further into the interior". Wonderland assigns altitudes to all rooms and works out the local best meaning of UP and DOWN accordingly.
Indirection renames the compass directions to correspond to primary colors, as in Mayan thinking. The World of Charles S. Roberts substitutes new ones, instead, introducing a hex-grid map in place of the usual one.
See Varying What Is Read for further divisions of the standard compass, such as north-northwest
See Ships, Trains and Elevators for ship-board directions
See Bicycles, Cars and Boats for common vehicles in which to travel the map
|  Example Up and Up Adding a short message as the player approaches a room, before the room description itself appears. | |
| Example Veronica An effect that occurs only when the player leaves a region entirely. | |
There are two aspects of Inform's handling of pushable objects that are particularly prime for modification. One is that we may want to change the rules about pushable objects
Second, Inform by default assumes that it is impossible to push objects in up or down directions. This makes lots of sense if the player is trying to push a wheelbarrow up a ladder; it makes less sense if instead we're pushing a ball up a slope.
We solve both problems with some syntax borrowed from the chapter on rulebooks: in the first case, we replace the old rule with a new one with more friendly phrasing; in the second, we remove the rule entirely. More about how to do this is described in the rulebooks chapter; and in general we can find out what rules contribute to any given action by looking at the Actions index. In this case, the action is "pushing it to", which has its own set of prerequisites (called check rules) that make sure the object can safely be pushed, before turning processing over to the going action.
"Zorb"
Section 1 - Procedure
The new can't push unpushable things rule is listed instead of the can't push unpushable things rule in the check pushing it to rules.
Include Plurality by Emily Short. [This allows us to use the "is-are" replacement in the following rule.]
This is the new can't push unpushable things rule:
if the noun is not pushable between rooms:
say "[The noun] [is-are] not amenable to being pushed from place to place." instead.
The can't push vertically rule is not listed in any rulebook.
And now to provide a scenario where the player can push something up and down a hillside. Most of the rest of the example is there for local color and to provide a way to demonstrate these rule adjustments:
Section 2 - Scenario
The Steep Hill is a room. The Crest is above Steep Hill. The Valley is below Steep Hill.
The flat rock is a fixed in place thing in the Steep Hill.
The Zorb is a transparent open enterable container in the Steep Hill. "[if the player props the Zorb]The Zorb rests here, kept from further rolling by your support[otherwise]The Zorb is here[end if].". It is pushable between rooms. The description of the Zorb is "A giant plastic inflatable ball, like a hamster ball for humans[if someone is in the Zorb]. Inside [is-are list of people in the Zorb][end if]."
Lucy is a woman in the Zorb.
Carry out going with the Zorb when the Zorb contains Lucy:
say "Lucy whoops delightedly as she rides along in the Zorb."
Every turn when the Zorb is not in the Valley and the player does not prop the Zorb:
let next room be the room down from the location of the Zorb;
if the player is in the location of the Zorb:
say "The Zorb succumbs to gravity and rolls down toward [the next room].";
move the Zorb to the next room;
if the player is in the location of the Zorb:
say "The Zorb rolls ponderously but inevitably into the vicinity."
Propping relates one person to one thing. The verb to prop (it props, they prop, it propped, it is propped, it is propping) implies the propping relation.
Carry out going with the Zorb:
now the player props the Zorb.
Before doing something when the action requires a touchable noun:
if the noun is not the Zorb, now the player does not prop the Zorb.
Check waving hands when the player is propping something (called casualty):
try the player releasing the casualty.
Understand "let go of [something]" or "let [something] go" or "release [something]" or "free [something]" as releasing. Releasing is an action applying to one thing.
Check releasing:
if the player carries the noun:
try dropping the noun instead.
Check releasing:
if the player does not prop the noun:
say "You are not supporting [the noun]." instead.
Carry out releasing:
now the player does not prop the noun.
Report releasing:
say "You let go of [the noun]."
Test me with "d / push zorb up / look / push zorb up / wave / d / d / push zorb up / release zorb / d / push zorb up / touch rock / push the flat rock south".
|
| Example Saint Eligius Adding a first look rule that comments on locations when we visit them for the first time, inserting text after objects are listed but before any "every turn" rules might occur. | |
| Example Misadventure A going by name command which does respect movement rules, and accepts names of rooms as commands. | |
|  Example Safari Guide The same functionality, but making the player continue to move until he reaches his destination or a barrier, handling all openable doors on the way. | |
| Example Minimal Movement Supplying a default direction for "go", so that "leave", "go", etc., are always interpreted as "out". | |
|  Example Wonderland Hiking Mount Rainier, with attention to which locations are higher and which lower than the present location. | |
| Example Indirection Renaming the directions of the compass so that "white" corresponds to north, "red" to east, "yellow" to south, and "black" to west. | |