Beispieldateien

Türbeispielraum B

----------



// 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})}));
}