mirror of
https://github.com/ganelson/inform.git
synced 2024-07-16 22:14:23 +03:00
40 lines
1.9 KiB
Plaintext
40 lines
1.9 KiB
Plaintext
*** Check, carry out, report
|
|
(Sanity-check stage before the Before rules; Delicious, Delicious Rocks)
|
|
Adding a "sanity-check" stage to decide whether an action makes any sense, which occurs before any before rules, implicit taking, or check rules.
|
|
|
|
In some cases, we may want to add new stages to action processing. One possibility is a stage where we check the sanity of what the player is trying to do before executing any of the other commands; so that we avoid, for instance
|
|
|
|
>EAT ROCK
|
|
(first taking the rock)
|
|
That's plainly inedible.
|
|
|
|
Here is how we might insert such a stage in our action processing, using rulebook manipulation.
|
|
|
|
{*} "Delicious, Delicious Rocks"
|
|
|
|
Section 1 - Procedure
|
|
|
|
The sanity-check rules are a rulebook.
|
|
|
|
This is the sanity-check stage rule:
|
|
abide by the sanity-check rules.
|
|
|
|
The sanity-check stage rule is listed after the before stage rule in the action-processing rules.
|
|
|
|
Section 2 - Scenario
|
|
|
|
Candyland is a room. The lollipop tree is an edible thing in Candyland. The genuine rock is a thing in Candyland.
|
|
|
|
Sanity-check eating an inedible thing:
|
|
say "Your digestion is so delicate -- you're sure [the noun] wouldn't agree with you." instead.
|
|
|
|
Test me with "eat lollipop / eat rock".
|
|
|
|
Notice that now Inform does not try taking the rock before rejecting the player's attempt to eat it.
|
|
|
|
It is of course possible to get the same effect with
|
|
|
|
Before eating an inedible thing:
|
|
say "Your digestion is so delicate -- you're sure [the noun] wouldn't agree with you." instead.
|
|
|
|
...and in a small game with few rules, there's not much reason to add an extra stage. The ability to modify the stages of action processing becomes useful when we have a fairly large game with sophisticated modeling and want to be sure that some kinds of message (such as the sanity-check) are always handled before other things that we might be doing at the before stage (such as generating implicit actions like opening doors before going through them). |