Graue Boxen

Ein beliebtes Feature in Inform sind graue Boxen im Spiel, die berühmte Zitate, Hinweise oder ähnliches enthalten. Der Knackpunkt bei ihnen ist, dass sie nur einmal im Spiel erscheinen, etwa wenn ein Spieler einen bestimmten Raum zum ersten Mal betritt.

!***************************************************
!Boxen
!***************************************************
Constant CeterumCenseo 0;
Constant NonMulta 1;

!ein einfacher Array mit [Anzahl der Boxen] Elemente,
!die anfangs den Wert 0 haben.

Constant MAX_BOXES 12

Global nextBox = -1;
Array box_shown -> MAX_BOXES;

!Funktion zum Aufrufen der Boxen
[ ShowBox num;
   if(box_shown->num) rfalse;
   nextBox = num;
];

[ DrawBox num;
   box_shown->num = 1;
   switch(num) {
       CeterumCenseo:
         box "Ceterum censeo Carthaginem"
             "esse delendam!";
       NonMulta:
         box "Non multa, sed multum.";
       default:
         box "Non boxus existit..."
   }
   rtrue;
];

[ AfterPrompt;
    if (nextBox != -1) {
      DrawBox(nextBox);
      nextBox = -1;
    }
];

!********************* Ende Code ********************

Soll beispielsweise eine Box beim ersten Betreten eines Raums aufgerufen werden, sieht der Code so aus:

Object Raum "Karthago"
    with description "Du bist in Karthago.",
        each_turn [;
            ShowBox(CeterumCenseo);
        ];

Einfach, nicht?