![]() | Chapter 18: Rulebooks | ![]() ![]() |
| 18.12. Rulebooks producing values |
We have now seen two ways to write the outcome of a rule: as simple success or failure, with more or less explicit phrases like:
rule succeeds;
rule fails;
continue the action;
stop the action;
and by using a named outcome for the current rulebook as if it were a phrase, as in:
low background noise;
There is still a third way: we can stop a rule and at the same time produce a value. This isn't needed very often - none of the built-in rulebooks in the Standard Rules produces a value.
As we've seen, every rulebook has one kind of value as its basis, and it also has another kind of value for it to produce. If we call these K and L, then we have altogether four ways to write down the kind of a rulebook:
rulebook
K based rulebook
rulebook producing L
K based rulebook producing L
If we don't mention K, Inform assumes the rulebook is action based. If we don't mention L, Inform assumes L is "nothing", that is, Inform assumes no value is ever produced. Thus
Drum summons rules is a rulebook.
is equivalent to
Drum summons rules is an action based rulebook producing nothing.
But let's now look at a rulebook which does produce something.
The cat behavior rules is a rulebook producing an object.
This rulebook works out which thing the cat will destroy next. We might have rules like this one:
Cat behavior when Austin can see the ball of wool:
rule succeeds with result the ball of wool.
The value is produced only when a rule succeeds, using this phrase:
rule succeeds with result (value)
|
This phrase can only be used in a rule which produces a value, and the value given must be of the right kind. It causes the current rule to finish immediately, to succeed, and to produce the value given.
|
How are we to use the cat behavior rulebook? If we write:
consider cat behavior
then the rulebook runs just as any other rulebook would, but the value produced is lost at the end, which defeats the point. Instead, we might write:
Every turn:
let the destroyed object be the object produced by the cat behavior rules;
if the destroyed object is not nothing:
say "Austin pounces on [the destroyed object] in a flurry.";
remove the destroyed object.
The key phrase here is
object produced by the cat behavior rules
which accesses the value this rulebook produces. In general, we write:
(name of kind) produced by (rule producing values) ... value
|
This phrase is used to follow the named rule, and to collect the resulting value.
|
(name of kind) produced by (values based rule producing values) for (value) ... value
|
This phrase is used to follow the named rule based on the value given, and to collect the resulting value.
|
| ![]() ![]() Example Tilt 2A deck of cards with fully implemented individual cards; when the player has a full poker hand, the inventory listing describes the resulting hand accordingly. |
|
| Previous | Contents | Next |