§6.9. Going, Pushing Things in Directions

Going is the most complex of actions after looking (or perhaps including looking): the success of every movement depends on the direction the player goes; the room he starts from; the room he intends to reach; whether there are any doors intervening (and, if so, whether these are closed or locked); whether he is traveling by vehicle; and whether he is pushing anything in front of him. When he gets there, the description he sees is itself generated by a looking command.

Pushing something in a direction is really a sort of going. The command >PUSH WHEELBARROW WEST first checks certain qualifying rules: by default, only things defined as pushable between rooms may be pushed, and they may be pushed only in horizontal directions (not UP or DOWN) -- though these rules can be overridden, as we see in Zorb. If the player's pushing attempt passes these criteria, the action is translated automatically into a going action, with all the usual checks about whether that direction leads anywhere, whether a door is in the way, and so on. The converted action afterward can be caught with such rules as

Instead of going to the Alpine Meadow with the wheelbarrow:
    say "You don't want to crush the delicate blooms."

Instead of going north with the handcart:
    say "The headwind is so stiff that you are unable to make much northerly progress at all while encumbered by the handcart."

Since the two actions are internally being handled as one, both are discussed here.

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.

Assuming that travel succeeds, 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.

If these methods are not enough, the looking action has an action-specific variable called "the room-describing action", which records whether this particular instance of looking comes about because the player typed LOOK or because the player traveled to a new location. We can consult this variable if we want to make looking work differently after going, as for instance here:

Check looking when the room-describing action is the going action:
    say "You are temporarily too blinded to see." instead.

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.

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.

* See Map for how to create other kinds of new direction

* 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


arrow-up.pngStart of Chapter 6: Commands
arrow-left.pngBack to §6.8. Taking, Dropping, Inserting and Putting
arrow-right.pngOnward to §6.10. Entering and Exiting, Sitting and Standing

*ExampleVeronica
An effect that occurs only when the player leaves a region entirely.

*ExampleMattress King
Adding extra phrasing to the action to PUSH something in a direction.

*ExampleThe Second Oldest Problem
Adapting the going action so that something special can happen when going from a dark room to another dark room.

*ExampleMisadventure
A going by name command which does respect movement rules, and accepts names of rooms as commands.

*ExampleMinimal Movement
Supplying a default direction for "go", so that "leave", "go", etc., are always interpreted as "out".

A not-infrequent desire in IF is to provide a few lines of comment when the player first enters a new room, after the objects are described but before anything else (such as an every turn rule) can fire. The cleanest, most systematic solution is to add a rule to the carry out looking rulebook, so:

paste.png "Saint Eligius"

The first look rule is listed after the room description paragraphs about objects rule in the carry out looking rules. A room can be commented or uncommented. A room is usually uncommented.

This is the first look rule:
    if the location is uncommented, carry out the gawking at activity with the location.

Gawking at something is an activity.

Rule for gawking at the Diamond Market:
    say "Your throat closes and your eyes begin to sting. You have long disdained pomp and luxury, and railed against the oppression that brings such wealth to some men at the cost of the lives of others; you were not prepared for the magnificence."

After gawking at a room (called the target): now the target is commented.

And now the scene itself:

The Cobbled Alley is a room. "The Alley has never been made into a proper street: the buildings on either side are simply too important to tear down. For all that, there isn't much sign of the magnificence nearby. The entrance you seek is set below street level, four grimy steps down to a half-basement."

After going to Diamond Market:
    say "You descend the steps quickly and step into the small foyer, allowing yourself to be searched for weapons, before going on to...";
    continue the action.

Diamond Market is down from Cobbled Alley. "The roof is vaulted and painted in allegorical images representing Plenty, the Riches of the Earth, and Saint Eligius, patron of goldsmiths and jewelers.

Under their watchful eye, dozens of men in sober black robes sit; and on the tables before them are rubies, emeralds, sapphires from oversea, but most of all diamonds, both raw and cut."

The burly guard is a man in Diamond Market. "A burly guard patrols quite close to you, but even he is more sumptuously dressed than the average burly guard, and his buttons shine."

Test me with "d / look".

*ExampleSaint 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.

A not-infrequent desire in IF is to provide a few lines of comment when the player first enters a new room, after the objects are described but before anything else (such as an every turn rule) can fire. The cleanest, most systematic solution is to add a rule to the carry out looking rulebook, so:

paste.png "Saint Eligius"

The first look rule is listed after the room description paragraphs about objects rule in the carry out looking rules. A room can be commented or uncommented. A room is usually uncommented.

This is the first look rule:
    if the location is uncommented, carry out the gawking at activity with the location.

Gawking at something is an activity.

Rule for gawking at the Diamond Market:
    say "Your throat closes and your eyes begin to sting. You have long disdained pomp and luxury, and railed against the oppression that brings such wealth to some men at the cost of the lives of others; you were not prepared for the magnificence."

After gawking at a room (called the target): now the target is commented.

And now the scene itself:

The Cobbled Alley is a room. "The Alley has never been made into a proper street: the buildings on either side are simply too important to tear down. For all that, there isn't much sign of the magnificence nearby. The entrance you seek is set below street level, four grimy steps down to a half-basement."

After going to Diamond Market:
    say "You descend the steps quickly and step into the small foyer, allowing yourself to be searched for weapons, before going on to...";
    continue the action.

Diamond Market is down from Cobbled Alley. "The roof is vaulted and painted in allegorical images representing Plenty, the Riches of the Earth, and Saint Eligius, patron of goldsmiths and jewelers.

Under their watchful eye, dozens of men in sober black robes sit; and on the tables before them are rubies, emeralds, sapphires from oversea, but most of all diamonds, both raw and cut."

The burly guard is a man in Diamond Market. "A burly guard patrols quite close to you, but even he is more sumptuously dressed than the average burly guard, and his buttons shine."

Test me with "d / look".

6

**ExampleUp and Up
Adding a short message as the player approaches a room, before the room description itself appears.

**ExampleWonderland
Hiking Mount Rainier, with attention to which locations are higher and which lower than the present location.

**ExampleSafari 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.

***ExamplePolarity
A "go back" command that keeps track of the direction from which the player came, and sends him back.

***ExampleBumping into Walls
Offering the player a list of valid directions if he tries to go in a direction that leads nowhere.

***ExampleZorb
Replacing the message the player receives when attempting to push something that isn't pushable, and also to remove the restriction that objects cannot be pushed up or down.

***ExampleProvenance Unknown
Allowing something like PUSH TELEVISION EAST to push the cart on which the television rests.

***ExampleOwen's Law
OUT always means "move to an outdoors room, or else to a room with more exits than this one has"; IN always means the opposite.