Beispieldateien

Einfache Räume

----------


// raum1.c

// Ein Beispielraum, welcher ein paar Möglichkeiten von Räumen 
// wiederspiegelt. Dieser Raum ist draußen.
//
// 05.08.99 Holger@Wunderland
//

inherit "std/room";          // Standard-Raum erben

#include <properties.h>      // wichtige Properties holen

void create() {

    // Der Standard-Raum braucht auch sein create()
    // NIEMALS VERGESSEN!
    ::create();

    // eine Kurzbeschreibung des Raumes
    SetProp(P_INT_SHORT, "Im ersten Raum des Beispielgebietes");

    // eine ausführliche Beschreibung des Raumes (bei 'schau')
    SetProp(P_INT_LONG,
      "Du stehst hier in im Beispielgebiet. Dieser Raum hier ist eine kleine "
      "Wiese unter freiem Himmel. Nachts wird es nicht voellig dunkel und "
      "ab und zu hoert man Voegel zwitschern.");

    // Da man auch nachts was sieht, noch eine Beschreibung für die Nacht
    SetProp(P_INT_LONG_NIGHT,
      "Du stehst hier in im Beispielgebiet. Dieser Raum hier ist eine kleine "
      "Wiese unter freiem Himmel. Es ist mittlerweile Nacht geworden und Du "
      "kannst trotzdem noch etwas sehen.");

    // Der Raum ist im Freien. (ist standardmäßig 0 - könnte also
    // auch weggelassen werden) Nur für die Vollständigkeit.
    SetProp(P_INDOORS, 0);

    // Wir setzen das Lichtlevel hier auf 2. Nachts wird es um 1 reduziert,
    // Lichtquellen erhoehen es um je 1. Wenn das Level 0 ist, herrscht
    // Finsternis. Da wir aber eine Nachtbeschreibung haben wollen -> 2
    SetProp(P_LIGHT, 2);

    // Nun kommen Sachen, die der Spieler untersuchen kann, dabei sollte man
    // nicht zu sparsam mit Details umgehen, da diese das Spielen
    // abwechslungsreich machen. Zeilenumbrüche koennen wie bei den meisten
    // properties weggelassen werden! (automatisch)

    AddDetail(({"beispiele", "beispiel"}),
      "Ja genau hier um dich herum sind jede Menge Beispiele.");
    AddDetail(({"beispielraum", "raum", "umgebung"}),
      "Du stehst in einem Beispielraum. Schau Dir doch mal "__FILE__" an!");
    //( __FILE__ gibt hierbei den Pfad dieses Raumes zurück.)

    // Jetzt ein Detail mit Tag und Nachtbeschreibung (3. Argument)
    AddDetail(({"wiese", "schemen"}),
      // tagsüber
      "Du stehst hier auf einer Wiese. Die Sonne scheint und die Voegel "
      "zwitschern.",
      // nachts scheint keine Sonne!
      "Du stehst hier auf einer Wiese. Der Mond scheint hell und Du kannst "
      "Deine Umgebung schemenhaft wahrnehmen.");

    // Details 'Sonne', 'Mond' und 'Sterne' sind in Räumen die draußen sind
    // immer schon vorhanden. Sie zeigen Tage oder Nacht an und können auch
    // überschrieben werden.

    AddDetail("sonne",
      "Die Sonne scheint hell und lacht Dich an.",   // tagsüber
      "Die Sonne hat dem Mond Platz gemacht!");      // nachts
    AddDetail(({"mond", "nacht"}),
      "Den Mond kannst Du bei Tage nicht sehen.",    // tagsüber
      "Der Mond erhellt die dunkle Nacht");          // nachts
 
    // Auch wenn es nicht in der Langbeschreibung steht, jeder Raum
    // sollte einen Boden haben. Indoors-Räume sollten Wände+Decke haben!
    AddDetail("boden",
      "Auf dem Boden waechst Gras, wie sich das fuer eine Wiese gehoert!");
    AddDetail("gras",
      "Das Gras sieht gruen und saftig aus.",
      "Im Dunkel der Nacht siehst Du das Gras kaum.");
    AddDetail(({"vogel", "voegel"}),
      "Die Voegel kann man nicht sehen, nur hoeren!",
      "Auch nachts gibt es noch ein paar Voegel hier. Man kann sie aber "
      "nur hoeren.");

    // eine Beschreibung, die man 'hören' kann
    AddSoundDetail(({"voegel","vogel", "gezwitscher","zwitschern"}),
      "Die Voegel zwitschern vor sich hin. Klingt schoen!");

    // eine unspezifische Geräuschkulisse (bei 'lausche')
    SetProp(P_SOUND, "Um Dich herum zwitschern Voegel.");

    // Zufällige Raummeldungen alle 30 Sekunden (etwas Leben) ;-)
    AddRoomMessage(({
       "Ein paar Voegel zwitschern in der Ferne.",  
       "Hinter Dir kraechzt etwas.",
       "Ueber Dir schreit ein Vogel."}), 30);

    // drei ganz normale Ausgänge, die Spieler benutzen können
    AddExit("westen", "/doc/beispiele/vorwagen");
    AddExit("norden", "/doc/beispiele/raum3");
    AddExit("sueden", "/doc/beispiele/raum4");

    // Ein Ausgang nach unten. Wir setzen eigene Bewegungsmeldungen
    AddExit("unten",  "/doc/beispiele/raum2", "nach unten", ({
      "Du kletterst nach unten.",          // Meldung an den Spieler
      "&Name klettert nach unten.",        // Meldung an den Raum
      "&Name kommt herabgestiegen."}));    // meldung an den Zielraum

    // Wir legen einen Maiskolben hierher. Wenn er weggenommen wird,
    // wird er beim Raumreset neu hingelegt (REFRESH_REMOVE)
    AddItem("/doc/beispiele/maiskolben", REFRESH_REMOVE );
    
    // Und eine Fackel für den Weg nach unten
    AddItem("/obj/fackel", REFRESH_REMOVE);
}