18.15. Phrases concerning rules

| Chapter 18: Rulebooks |

| 18.15. Phrases concerning rules

| This section and the previous one are about a feature which is being withdrawn from Inform in future. Experience shows there are equally good ways to achieve the same ends without needing procedural rules. As elegant as they were, they often confused users, and they were expensive at run-time (that is, they made everything work more slowly). Withdrawing them from Inform will make it possible to make more efficient story files, and will simplify the language. The "ignore" phrase is only one of a suite, which should only be used in procedural rules. The full list is: ignore (rule)
This phrase can only be used in procedural rules, which are now deprecated. It causes the named rule to be ignored (skipped over without producing a result) within the scope of the current "follow".
reinstate (rule)
This phrase can only be used in procedural rules, which are now deprecated. Its only effect is to reverse the effect of any "ignore" phrase affecting the rule named.
reject the result of (rule)
This phrase can only be used in procedural rules, which are now deprecated. It causes the named rule to used, but to have its result ignored, within the scope of the current "follow". In other words, if the rule succeeds or fails then this is suppressed and its rulebook continues.
accept the result of (rule)
This phrase can only be used in procedural rules, which are now deprecated. Its only effect is to reverse the effect of any "reject the result of" phrase affecting the rule named.
substitute (rule) for (rule)
This phrase can only be used in procedural rules, which are now deprecated. Whenever the second rule is to be invoked - from any rulebook, or as a result of any "follow" instruction - invoke the first one instead.
restore the original (rule)
This phrase can only be used in procedural rules, which are now deprecated. Its only effect is to reverse the effect of any "substitute ... for ..." phrase affecting the rule named.
move (rule) to before (rule)
This phrase can only be used in procedural rules, which are now deprecated. This causes the first rule to be ignored whenever it turns up in the ordinary way, but to be invoked either immediately before the second rule whenever that second rule is invoked. In effect, it cuts out the first rule from wherever it was, and glues it onto the second. Note that there is no obligation for the first rule to begin in the same rulebook(s) as the second, so this can be used to slot in a wholly new rule, perhaps only if certain circumstances hold.
move (rule) to after (rule)
This phrase can only be used in procedural rules, which are now deprecated. This causes the first rule to be ignored whenever it turns up in the ordinary way, but to be invoked either immediately after the second rule whenever that second rule is invoked. In effect, it cuts out the first rule from wherever it was, and glues it onto the second. Note that there is no obligation for the first rule to begin in the same rulebook(s) as the second, so this can be used to slot in a wholly new rule, perhaps only if certain circumstances hold.
These rule-changing instructions allow apparently casual sentences to wreak havoc with the model world. This, for instance, is quite the recipe for mayhem and perplexity: A procedural rule: reject the result of the before rules; ignore the after rules; move the after rules to before the before rules.

391
| Example Uptempo Adjust time advancement so the game clock moves fifteen minutes each turn. |
RB

392
| Example Solitude Novice mode that prefaces every prompt with a list of possible commands the player could try, and highlights every important word used, to alert players to interactive items in the scenery. |
RB

393
| Example Swigmore U. Adding a new kind of supporter called a perch, where everything dropped lands on the floor. |
RB

394
| Example Lethal Concentration 1 A poisonous gas that spreads from room to room, incapacitating or killing the player when it reaches sufficient levels. |
RB

"Lethal Concentration" A concentration is a kind of value. 200.9ppm specifies concentration. 200.9 ppm specifies concentration. A room has a concentration called current concentration. A room has a concentration called former concentration. Probability inverse is a number that varies. [This is expressed as an inverse of the actual probability of diffusion from one room to another, to avoid error.] Probability inverse is 20. [That is, any given molecule of gas has a 5% chance of leaving by a given doorway at any given minute. Probability inverse should never drop below 10, the maximum number of exits from the room.] Every turn: follow the diffusion rules. The diffusion rules are a rulebook. A diffusion rule (this is the gas movement rule): repeat with space running through rooms: let sum be 0.0 ppm; repeat with way running through directions: let second space be the room way from the space; if second space is a room: let difference be the former concentration of the second space minus the former concentration of the space; increase sum by the difference; let sum be sum divided by probability inverse; now current concentration of the space is the former concentration of the space plus the sum. A technical note: it would be possible to write "repeat with space running through rooms... repeat with second space running through rooms adjacent to the space" instead, but in practice this loops through all the rooms * all the rooms again * all the directions (to determine adjacency). Phrasing the loop this way omits the second multiplier. For a map of 25 rooms, this means that the loop runs 25 times faster than it would otherwise, and of course for a larger map the effect would be even more dramatic. A diffusion rule (this is the resetting concentration rule): repeat with space running through rooms: now the former concentration of the space is the current concentration of the space. The last diffusion rule (this is the lethal dosage rule): if the current concentration of the location is greater than LC50: say "The concentration in the air overpowers you..."; end the story; otherwise: if the current concentration of the location is greater than TLV-STEL: say "You feel extremely uncomfortable in this environment." Instead of doing something when the current concentration of the location is greater than TLV-STEL: if going, continue the action; say "You can't work in this environment: your eyes and nose sting and it hurts to breathe." And, for testing purposes, a square grid of rooms: Room 1A is west of Room 1B. Room 1B is west of Room 1C. Room 1C is west of Room 1D. Room 1D is west of Room 1E. Room 2A is south of room 1A and west of Room 2B. Room 2B is west of Room 2C and south of Room 1B. Room 2C is west of Room 2D and south of Room 1C. Room 2D is west of Room 2E and south of Room 1D. Room 2E is south of Room 1E. Room 3A is south of room 2A and west of Room 3B. Room 3B is west of Room 3C and south of Room 2B. Room 3C is west of Room 3D and south of Room 2C. Room 3D is west of Room 3E and south of Room 2D. Room 3E is south of Room 2E. Room 4A is south of room 3A and west of Room 4B. Room 4B is west of Room 4C and south of Room 3B. Room 4C is west of Room 4D and south of Room 3C. Room 4D is west of Room 4E and south of Room 3D. Room 4E is south of Room 3E. Room 5A is south of room 4A and west of Room 5B. Room 5B is west of Room 5C and south of Room 4B. Room 5C is west of Room 5D and south of Room 4C. Room 5D is west of Room 5E and south of Room 4D. Room 5E is south of Room 4E. The former concentration of room 3C is 800.0 ppm. For variety of testing, here is another room set-up, this time with some corridors and walls within; uncommenting it, and commenting out the connected grid, will let us explore what would happen in alternative cases, to prove to ourselves that the model works consistently. [Room 1A is west of Room 1B. Room 1B is west of Room 1C. Room 1C is west of Room 1D. Room 1D is west of Room 1E. Room 2A is west of Room 2B. Room 2B is west of Room 2C. Room 2C is west of Room 2D. Room 2D is west of Room 2E. Room 2E is south of Room 1E. Room 3A is south of room 2A and west of Room 3B. Room 3B is west of Room 3C. Room 3C is west of Room 3D. Room 3D is west of Room 3E. Room 4A is west of Room 4B. Room 4B is west of Room 4C. Room 4C is west of Room 4D. Room 4D is west of Room 4E. Room 4E is south of Room 3E. Room 5A is south of room 4A and west of Room 5B. Room 5B is west of Room 5C and south of Room 4B. Room 5C is west of Room 5D and south of Room 4C. Room 5D is west of Room 5E and south of Room 4D. Room 5E is south of Room 4E.] For the sake at least of seeing what's going on in the example, let's also provide the player with the means to view the gas diffusion graphically: The status grid is a device carried by the player. The status grid is switched on. Every turn: try examining the grid. Instead of examining the status grid: say "[fixed letter spacing][bar][line break]"; say "|[state of room 1A]|[state of room 1B]|[state of room 1C]|[state of room 1D]|[state of room 1E]|[line break]"; say "[bar][line break]"; say "|[state of room 2A]|[state of room 2B]|[state of room 2C]|[state of room 2D]|[state of room 2E]|[line break]"; say "[bar][line break]"; say "|[state of room 3A]|[state of room 3B]|[state of room 3C]|[state of room 3D]|[state of room 3E]|[line break]"; say "[bar][line break]"; say "|[state of room 4A]|[state of room 4B]|[state of room 4C]|[state of room 4D]|[state of room 4E]|[line break]"; say "[bar][line break]"; say "|[state of room 5A]|[state of room 5B]|[state of room 5C]|[state of room 5D]|[state of room 5E]|[line break]"; say "[bar][variable letter spacing][line break]". To say bar: say "----------------------------------------------". TLV is a concentration that varies. TLV is 30.0ppm. [Long-term exposure maximum, safe for 8 hours a day.] TLV-STEL is a concentration that varies. TLV-STEL is 50.0ppm. [Short-term exposure maximum, safe for fifteen minutes max.] TLV-C is a concentration that varies. TLV-C is 150.0ppm. [Absolute exposure ceiling.] LC50 is a concentration that varies. LC50 is 300.0ppm. [Concentration at which 50 percent of test subjects die of exposure, usually expressed in terms of time and body weight; in our LC50 these are factored in for the player's weight for one minute.] The values set for these would depend on the type of poisonous gas in question; we'd want to adjust appropriately. Include Basic Screen Effects by Emily Short. To say state of (space - a room): if the space is the location, say bold type; if the current concentration of space is less than TLV, say blue letters; if the current concentration of space is TLV, say blue letters; if the current concentration of space is greater than TLV, say green letters; if the current concentration of space is greater than TLV-STEL, say yellow letters; if the current concentration of space is greater than TLV-C, say red letters; if current concentration of space is less than 10.0ppm, say " "; if current concentration of space is less than 100.0ppm, say " "; say current concentration of space; say roman type; say default letters. Now, in theory we might also want to account for sources and sinks, items that either inject poisonous gas into the environment or remove it again. For simplicity, we will assume that these contributions can also be calculated in ppm and that the total number of inert and poisonous gas molecules in a room never changes (so if poison gas molecules are added, an equal number of inert molecules are removed). If room pressure were able to change, our model would have to be improved, so let us assume for now that that never happens. We want this sink/source business to calculate before any other portion of the diffusion rulebook, so set it as a first diffusion rule. A gas source is a kind of thing. A gas source has a concentration called the contribution. The contribution of a gas source is usually 30.0ppm. Room 2B contains a gas source called a spigot. The contribution of the spigot is 50.0ppm. Room 5A contains a gas source. A gas sink is a kind of thing. A gas sink has a concentration called the contribution. The contribution of a gas sink is usually 30.0ppm. Room 5E contains a gas sink called a fan. The contribution of the fan is 80.0ppm. The first diffusion rule (this is the sources and sinks rule): consider the sources rule; consider the sinks rule. This is the sinks rule: repeat with item running through gas sinks: let space be the location of the item; decrease the former concentration of the space by the contribution of the item; if the former concentration of the space is less than 0.0ppm, now the former concentration of the space is 0.0ppm. This is the sources rule: repeat with second item running through gas sources: let space be the location of the second item; increase the former concentration of the space by the contribution of the second item; if the former concentration of the space is less than 0.0ppm, now the former concentration of the space is 0.0ppm. Test me with "z / z / z / z / z / z / z / z".

395
| Example Lethal Concentration 2 Poisonous gas again, only this time it sinks. |
RB

Previous | Contents | Next