§12.7. New actions
It is not often that we need to create new actions, but a large work of interactive fiction with no novelty actions is a flavourless dish. Here we shall create an action for photographing things.
The Ruins is a room. "You find this clearing in the rainforest oddly familiar." The camera is in the Ruins. "Your elephantine camera hangs from a convenient branch."
Photographing is an action applying to one visible thing and requiring light.
In theory that text is already sufficient to make the new action, but what we have so far is rudimentary to say the least. The two qualifications give Inform the useful information that we cannot photograph in the dark, and that we need to be photographing something - not, as in the case of waiting or taking inventory, acting without reference to any particular thing external to ourselves.
The word "visible" here tells Inform that we do not need to be able to touch the thing in question: a line of sight is good enough. These two stipulations were necessary because the default arrangement is that any object must be in touching range, and that most actions can be performed in darkness. (Also, note that if you invent an action which needs to apply to directions like "north" or "south", you need to make this apply to visible things, because the object used inside Inform to represent the idea of "north" can be seen but not touched. So for understanding purposes, "visible thing" is understood as meaning any visible thing or direction: it's more general than "thing", not more specific.)
Occasionally, when writing general rules about actions, it can be useful to find out what the current action's requirements are: the following conditions do what they suggest.
if action requires a touchable noun:
This condition is true if the action being processed is one whose (first) noun is an object which needs to be touchable by the actor. For example, it's true for "taking", but false for "examining".
if action requires a touchable second noun:
This condition is true if the action being processed is one whose second noun is an object which needs to be touchable by the actor. For example, it's true for "putting the brick in the sack", but false for "throwing the brick at the window".
if action requires a carried noun:
This condition is true if the action being processed is one whose (first) noun is an object which needs to be carried by the actor. For example, it's true for "dropping", but false for "taking".
if action requires a carried second noun:
This condition is true if the action being processed is one whose second noun is an object which needs to be carried by the actor.
if action requires light:
This condition is true if the action being processed is one which can only be performed if the actor has light to see by. For example, it's true for "examining", but false for "dropping".
As further examples, here we create "blinking" and "scraping X with Y". Note the use of "it" to indicate that the name of an object should go here.
Blinking is an action applying to nothing. Scraping it with is an action applying to two things.
The photographing action now exists, but with two provisos: (a) it never happens, because Inform does not know what commands by the player should cause it, and (b) even if it were to happen, nothing would follow, because Inform does not know what to do. (There are no check, carry out or report rules yet.)
The first problem is easily overcome:
Understand "photograph [something]" as photographing.
We will return to the whole subject of parsing, as this process of understanding the player's commands is called, later. But this gives the gist of it.
See Understand for the full story
| ExampleRed Cross A DIAGNOSE command which allows the player to check on the health of someone.
|
|
"3 AM"
Understand "shake [something preferably held]" as shaking.
Shaking is an action applying to one carried thing.
Carry out shaking:
say "Nothing results of your shaking [the noun]."
Instead of shaking a closed container when something is in the noun:
say "Something rattles inside [the noun]."
Instead of shaking a closed transparent container when something is in the noun:
say "Inside [the noun] there are banging noises produced by [the list of things contained by the noun]."
Instead of shaking an open container which contains something:
say "[The list of things contained by the noun] might fly out."
The Wawa is a room. "A convenience store, if you like to call it that, vending the usual assortment of chips, donuts, soda, and beer. There is something of a line at the sandwich counter."
The box of enrobed cakes is in the Wawa. "A box of Tastykake Enrobed Cakes has fallen off its shelf." The description is "'Enrobed Cakes' is a fancy term for 'strange sponge-like baked good, covered in a thin shell of waxy chocolate'. They are addictive, but not in a way that lets you respect yourself in the morning." The box is a closed openable container. In the box is a cake.
Instead of opening the box, say "The Wawa clerks frown on the consumption of unpurchased foodstuffs."
The can of root beer is a closed openable container carried by the player. The can of root beer is either agitated or calm.
Because the can of root beer should have some reactions to having been shaken later in the game, we need to borrow a few ideas from the chapter on Time:
Instead of shaking the can of root beer:
the can calms down in five turns from now;
say "You give the can a good hard shake.";
now the can is agitated.
Instead of listening to the can: say "It sounds [if agitated]fizzy[otherwise]calm[end if]!"
At the time when the can calms down:
now the can is calm.
The sticky mess is fixed in place. "There is a sticky mess on the ground."
Instead of opening the agitated can of root beer:
now the can of root beer is nowhere;
now the sticky mess is in the location;
say "You open the can and fizzing sweet soda goes absolutely everywhere."
Instead of opening the calm can of root beer when the can has been agitated:
now the can of root beer is nowhere;
say "The root beer is disappointingly flat. That's what you get for shaking it up!"
Test me with "get box / shake box / open box / shake box / listen to can / shake can / listen to can / wait / wait / wait / wait / wait / listen to can / open can".
|   Example3 AM A shake command which agitates soda and makes items thump around in boxes.
|
"3 AM"
Understand "shake [something preferably held]" as shaking.
Shaking is an action applying to one carried thing.
Carry out shaking:
say "Nothing results of your shaking [the noun]."
Instead of shaking a closed container when something is in the noun:
say "Something rattles inside [the noun]."
Instead of shaking a closed transparent container when something is in the noun:
say "Inside [the noun] there are banging noises produced by [the list of things contained by the noun]."
Instead of shaking an open container which contains something:
say "[The list of things contained by the noun] might fly out."
The Wawa is a room. "A convenience store, if you like to call it that, vending the usual assortment of chips, donuts, soda, and beer. There is something of a line at the sandwich counter."
The box of enrobed cakes is in the Wawa. "A box of Tastykake Enrobed Cakes has fallen off its shelf." The description is "'Enrobed Cakes' is a fancy term for 'strange sponge-like baked good, covered in a thin shell of waxy chocolate'. They are addictive, but not in a way that lets you respect yourself in the morning." The box is a closed openable container. In the box is a cake.
Instead of opening the box, say "The Wawa clerks frown on the consumption of unpurchased foodstuffs."
The can of root beer is a closed openable container carried by the player. The can of root beer is either agitated or calm.
Because the can of root beer should have some reactions to having been shaken later in the game, we need to borrow a few ideas from the chapter on Time:
Instead of shaking the can of root beer:
the can calms down in five turns from now;
say "You give the can a good hard shake.";
now the can is agitated.
Instead of listening to the can: say "It sounds [if agitated]fizzy[otherwise]calm[end if]!"
At the time when the can calms down:
now the can is calm.
The sticky mess is fixed in place. "There is a sticky mess on the ground."
Instead of opening the agitated can of root beer:
now the can of root beer is nowhere;
now the sticky mess is in the location;
say "You open the can and fizzing sweet soda goes absolutely everywhere."
Instead of opening the calm can of root beer when the can has been agitated:
now the can of root beer is nowhere;
say "The root beer is disappointingly flat. That's what you get for shaking it up!"
Test me with "get box / shake box / open box / shake box / listen to can / shake can / listen to can / wait / wait / wait / wait / wait / listen to can / open can".
"3 AM"
Understand "shake [something preferably held]" as shaking.
Shaking is an action applying to one carried thing.
Carry out shaking:
say "Nothing results of your shaking [the noun]."
Instead of shaking a closed container when something is in the noun:
say "Something rattles inside [the noun]."
Instead of shaking a closed transparent container when something is in the noun:
say "Inside [the noun] there are banging noises produced by [the list of things contained by the noun]."
Instead of shaking an open container which contains something:
say "[The list of things contained by the noun] might fly out."
The Wawa is a room. "A convenience store, if you like to call it that, vending the usual assortment of chips, donuts, soda, and beer. There is something of a line at the sandwich counter."
The box of enrobed cakes is in the Wawa. "A box of Tastykake Enrobed Cakes has fallen off its shelf." The description is "'Enrobed Cakes' is a fancy term for 'strange sponge-like baked good, covered in a thin shell of waxy chocolate'. They are addictive, but not in a way that lets you respect yourself in the morning." The box is a closed openable container. In the box is a cake.
Instead of opening the box, say "The Wawa clerks frown on the consumption of unpurchased foodstuffs."
The can of root beer is a closed openable container carried by the player. The can of root beer is either agitated or calm.
Because the can of root beer should have some reactions to having been shaken later in the game, we need to borrow a few ideas from the chapter on Time:
Instead of shaking the can of root beer:
the can calms down in five turns from now;
say "You give the can a good hard shake.";
now the can is agitated.
Instead of listening to the can: say "It sounds [if agitated]fizzy[otherwise]calm[end if]!"
At the time when the can calms down:
now the can is calm.
The sticky mess is fixed in place. "There is a sticky mess on the ground."
Instead of opening the agitated can of root beer:
now the can of root beer is nowhere;
now the sticky mess is in the location;
say "You open the can and fizzing sweet soda goes absolutely everywhere."
Instead of opening the calm can of root beer when the can has been agitated:
now the can of root beer is nowhere;
say "The root beer is disappointingly flat. That's what you get for shaking it up!"
Test me with "get box / shake box / open box / shake box / listen to can / shake can / listen to can / wait / wait / wait / wait / wait / listen to can / open can".
|