// Holger@Wunderland 7/99
//
inherit "std/room";
#include <properties.h>
#include <doors.h>
#pragma strict_types
void create() {
::create();
SetProp(P_INDOORS, 0);
SetProp(P_LIGHT, 2);
SetProp(P_INT_SHORT, "Im Tuertestraum B");
SetProp(P_INT_LONG, "Du stehst hier im Tuertestraum B\n"
" +---+ +---+ Das Testgebiet erstreckt sich ueber 4 Raeume. In jedem\n"
" | a +--+ B | Raum sind andere Tueren mit anderen Verhaltensweisen.\n"
" +-+-+ +-+-+ In diesem Raum (draussen) fuehrt eine Holztuer zurueck in\n"
" | | Raum A. Sie schliesst sich bei jedem Reset und benoetigt\n"
" +-+-+ +-+-+ keinen Schluessel. Nach Sueden fuehrt ein Gartentor in\n"
" | d +--+ c | Raum B. Es benoetigt keinen Schluessel und oeffnet sich\n"
" +---+ +---+ in jedem Reset automatisch (durch den Wind).\n");
AddDetail(({"boden"}), "Ein gruener Grasboden.");
AddDetail("decke", "Sowas kannst Du hier nicht finden.");
AddDetail("waende", "Du stehst im Freien. Im Westen fuehrt eine Holztuer. "
"zurueck in den Raum A. Im Sueden fuehrt ein Gartentor in Raum B. Es "
"benoetigt keinen Schluessel und oeffnet sich in jedem Reset "
"automatisch (durch den Wind).");
/////////////////////////////////////////////////////////////////////////
// Zuerst eine Tuer zurueck in Raum A. Die Tuer wird automatisch mit der
// Tuer in Raum A 'verbunden'. Oeffnet/Schliesst man diese hier, passiert
// das gleiche in Raum A. Zusaetzlich setzen wir hier die Exit-Meldungen.
AddDoor("westen", // Tuer nach Westen
"/doc/beispiele/doors/raum_a", 0, // Wie gehabt (siehe Raum A)
DF_AUTO_CLOSE, // Schliesst im Reset
0, // Properties aendern wir spaeter
"in Testraum A", // Die Exit-Richtung
({"Du gehst zurueck in Raum A."}) ); // Die Exit-Messages (man AddExit)
// Jetzt machen wir noch ne Holztuer draus. (wie bei einem Object)
// "@@" wird durch den Zustand der Tuer ersetzt in P_LONG und P_NAME_ADJ
SetDoorProp("westen", P_NAME, "Holztuer");
SetDoorProp("westen", P_NAME_ADJ, "einfach");
SetDoorProp("westen", P_DESCR, "zu Raum A");
SetDoorProp("westen", P_LONG, "Eine einfache Holztuer ohne "
"Schnickschnack. Momentan ist sie @@.");
SetDoorProp("westen", P_GENDER, FEMALE);
SetDoorProp("westen", P_IDS, ({"tuer","holztuer"}));
/////////////////////////////////////////////////////////////////////////
// Jetzt das Gartentor nach Sueden. Es ist AUTO_OPEN und wir setzen eigne
// Messages beim Oeffnen und Schliessen. Diesmal setzen wir alles gleich
// mit AddDoor() (damits schoen unuebersichtlich wird *eg*)
AddDoor(
"sueden", // nach Sueden
"/doc/beispiele/doors/raum_c", //
DS_OPEN, // Es steht offen
DF_AUTO_OPEN, // Es oeffnet sich bei jedem Reset
([ P_NAME : "Gartentor", // Wir setzen alle Properties
P_NAME_ADJ : "knarrend",
P_DESCR : "nach Sueden",
P_LONG : "Eine @@es Gartentor welches in Testraum C fuehrt.",
P_GENDER : NEUTER,
P_ARTICLE : ART_AUTO,
P_IDS : ({"tor","gartentor"})]),
"nach Sueden",
({"Du schlenderst durch das Gartentor",
"&Name schlendert nach Sueden.",
"Durch das Gartentor kommt &name auf Dich zugeschlendert."}));
// Jetzt setzen wir noch eigne Event-Messages fuer das Tor
// Die Messages sind in einem 3-elementigen Array.
// 0. Element: Meldung an den Spieler (0 oder string)
// 1. Element: Meldung an den Raum hier (0, string oder Array)
// 2. Element: Meldung an den Zielraum der Tuer (0, string oder Array)
// Ist ein Element 0 wird eine Default-Meldung erzeugt
// Ist das Element ein String so wird immer dieser ausgegeben.
// Ist das Element ein Array wird das 0. Element davon ausgegeben,
// wenn jemand das Tor oeffnet. Das 1. Element wird ausgegeben, wenn
// das Tor automatisch geoffnet wird (z.B. im Reset). Ist eines der
// beiden Sub-Elemente 0 wird eine Default-Meldung erzeugt.
// Bei der Meldung an den Spieler ist ein Array natuerlich sinnfrei,
// da bei der Automatik keine Meldung an einen Spieler ausgegeben werden
// kann
SetDoorEventMsgs("sueden", ET_DOOR_OPEN,
({"Du oeffnest das Gartentor. Es quietscht und knarrt.",
({"Das Gartentor quietscht, als &name es oeffnet.",
"Ein Windstoss erfasst das Gartentor. Quietschend oeffnet es sich."}),
({"Das Gartentor wird von der anderen Seite geoeffnet.",
"Quietschend oeffnet sich das Gartentor."})}));
// Das gleiche noch fuer den Schliess-Event
SetDoorEventMsgs("sueden", ET_DOOR_CLOSE,
({"Du schliesst das Gartentor. Es quietscht und knarrt.",
({"Das Gartentor quietscht, als &name es schliesst.",0}),
({"Das Gartentor wird von der anderen Seite geschlossen.",0})}));
}
|