Junge, Du brauchst Variablen. Du musst den Zustand des Spiels speichern, z.B. ob der Schrank verschlossen ist, oder ob die Kabel repariert sind. Das macht man mit Variablen.
Brauchst Du diese Info nur in einem Raum, reicht eine Raumvariable, d.h. Du schreibst z.B. an den Anfang des Raumskripts:
// Zustand des Schranks, 0 = verschlossen, 1 = zu, 2 = offen
int schrank;
Im Fall der Kabel, wo der Zustand in mehr als einem Raum verändert bzw. abgefragt werden muss, braucht man eine globale Variable. Also Global Variables im Baum aufmachen, neue bool, name "kabel_repariert", Anfangswert "false".
Wenn nun im Raum mit den Kabeln diese repariert werden, benutzt Du
kabel_repariert = true;
Im anderen Raum dann
if (kabel_repariert) {
// licht anschalten, etc.
}
else player.Say("Ich kann nix sehen, zu dunkel hier.");
Beim Schrank ähnlich:
// öffnen
if (schrank == 0) player.Say("Er ist verschlossen.");
else if (schrank == 2) player.Say("Er ist schon offen.");
else {
// schrank öffnen, etc.
...
}
// use inv
if (player.ActiveInventory != iSchrankSchluessel) player.Say("Das macht keinen Sinn.");
else {
if (schrank == 1) player.Say("Ich werde den Schrank nicht wieder zuschließen, warum auch?");
else if (schrank == 2) player.Say("Ich werde den Schlüssel nicht in den Schrank legen, warum auch?");
else {
schrank = 1; // nicht verschlossen aber zu
player.Say("Der Schlüssel passt! Ich schließe den Schrank auf.");
}
}