Aktionen sind also der Motor der Welt. Sie werden meist von der Spielfigur ausgelöst. (Das Programm die Spielfigur aber auch dazu zwingen, eine bestimmte Aktion auszuführen, und auch Nichtspielercharaktere können Aktionen ausführen.) Wenn die Spielfigur dem Wunsch des Spielers gemäß eine Aktion ausführen soll, überprüfen Check-Regeln, ob die Aktion möglich ist; Carry-out-Regeln, was die Aktion bewirkt; und Report-Regeln, was dem Spieler als Antwort ausgegeben wird.
Diese Regeln bilden quasi die Naturgesetze der Welt und beschreiben, wie sich Dinge üblicherweise verhalten: Alles Essbare kann man essen, alles Tragbare tragen, alle vorhandenen Wege kann man begehen. An diesen Naturgesetzen muss man selten etwas ändern.
Aber man will für einzelne Fälle Ausnahmen hinzufügen. Dazu bieten die Regeln hooks an, Stellen, an denen man in den Kreislauf der Regelverarbeitung eingreifen kann. Für jede Aktion kann man zusätzliche Regeln einrichten: Before, Instead und After.
- Die Before-Regeln werden vor den standardmäßigen Check-Regeln ausgeführt.
- Die Instead-Regeln werden statt der standardmäßigen Check-Regeln ausgeführt.
- Die After-Regeln werden nach den standardmäßigen Carry-out-Regeln ausgeführt.
(Andere Darstellung mit etwas mehr Text.)
Am häufigsten braucht man die Instead-Regeln, und auf die können wir uns am Anfang auch beschränken. Eine solche Regel besteht aus einem Kopf und dem Rumpf. Der Kopf beginnt mit “Instead of”, gefolgt von einer Aktion, optional mit Angaben zu den Objekten der Aktion. “Instead of eating something” gilt für alle Dinge, “Instead of eating the apple” nur für den Apfel. Im Rumpf der Aktion stehen dann die imperativen Anweisungen, was in diesem Fall zu geschehen hat.
Standardmäßig wird nach einer Instead-Regel die Regelverarbeitung abgebrochen, man kann die ursprüngliche Aktion aber regulär fortsetzen, indem man ans Ende der Anweisungen ein “continue the action” setzt.
[Regel für ein konkretes Objekt:] Instead of eating the apple: remove the apple from play; say "Ugh, there was something inside."; say "Something dropped at your feet."; now the silver key is in the location of the player. [Regel für beliebige Objekt der Klasse Thing:] Instead of eating something: if the noun is edible: remove the noun from play; say "That tasted okay.“"; otherwise: say "You're being silly." ["the noun" ist dabei eine globale Variable, die das jeweilige direkte Objekt jeder aktuellen Aktion enthält] [Wer nicht mit der globalen noun-Variable arbeiten will, kann dem Objekt der Aktion auf einen lokalen Namen zuweisen:] Instead of eating something (called the foodstuff): if the foodstuff is edible: remove the foodstuff from play; say "That tasted okay.“"; otherwise: say "You're being silly." A piece of clothing is a kind of thing. It is always wearable. The plural of piece of clothing is pieces of clothing. [Regel für beliebige Objekt der Klasse Kleidungsstück:] Instead of wearing a piece of clothing (called the clothes): now the player is wearing the clothes; say "You put on [the clothes]." [Eine Regel für beliebige Objekt der Klasse Kleidungsstück, die sich zusätzlich durch eine bestimmte Eigenschaft auszeichnen:] Instead of wearing a piece of clothing (called the clothes) worn by the player: say "You're already wearing [the clothes], stupid!" [Noch eine Regel für beliebige Objekt der Klasse Kleidungsstück, die sich zusätzlich durch eine bestimmte Eigenschaften auszeichnen. Die Eigenschaft "outsize" muss vorher definiert worden sein.] Instead of wearing an outsize piece of clothing (called the clothes): say "That's too big for you."
Später mal ausführlicher erklären:
Manchmal will man nur Aktionen umleiten:
Instead of jumping: try going up.