// This file is part of UNItopia Mudlib.
// ----------------------------------------------------------------
// File:        /room/bsp/bsp1.c
// Description: Einfuehrungskurs - Raum 1
// Author:      Unbekannt.
// Modified by: 

/* Erst mal das ganz Grundlegende: Man kann Kommentare entweder mehrzeilig 
   durch diese / und *-Kombination begrenzen oder 
*/
// einzeilige Kommentare durch das // beginnen.

/* Kommentare sind SEHR wichtig, bei komplizierten Programmcode weiss der
   Programmierer nach einiger Zeit selber nicht mehr, was er dabei gedacht
   hat, darum solltest Du immer dazuschreiben, was Du eigentlich hier
   programmiert hast. Dazu dienen Kommentare. 
*/
// In diesen Beispielraeumen wurden allderings schon uebertrieben viele
// Kommentare verwendet :). Ein gesundes Verhaeltnis ist etwa 1:1 
// Kommentar:Code...
// Darueber kann man allerdings auch streiten.

inherit "/i/room";
//	Hiermit werden saemtliche, zum Erzeugen eines Raumes noetigen
//	Funktionen in dieses Objekt integriert. Dazu gehoeren u.a. die
//	Funktionen set_short(), set_exits() usw.. Bei Interesse kann man
//	ja einmal einen Blick in die Datei /i/room.c riskieren.
//	[Inheritfiles stellen einem Objekt weitere Funktionen als eine
//	Art Bibliothek zur Verfuegung.]


/* Diese Funktion wird beim Erschaffen eines jeden Objektes automatisch
   aufgerufen. Zum erschaffen eines Raumes genuegt es sich in diesen
   hineinzubewegen (mit zgehzu), alternativ kann man den Raum auch
   laden.
   In create() sollte man im Allgemeinen Default-Werte setzen.
   In Raeumen ist das der Platz fuer Raumbeschreibung und Detail-
   beschreibungen. 
*/
void create() {
    set_short("Beispielraum Nr. 1");
    //	Mit set_short(string) setzt man die Kurzbeschreibung eines Raumes
    //	(aber auch bei anderen Objekten - dazu spaeter mehr). Diese
    //	Beschreibung erhaelt der Spieler nur, wenn er auf Kurzbeschreibung
    //	umgeschaltet hat. Der uebergebene String hat weder einen Punkt
    // noch ein \n am Ende!

    set_long(
	"Du bist im Beispielraum Nr. 1 des Einfuehrungskurses fuer Goetter. "
	"Mit dem Zauberstab-Kommando 'zmore hier' kannst Du den Quellcode fuer "
	"diesen Raum lesen.\n"
	"Dieser Raum ist die simpelste Art eines Raumes, er liegt im Freien "
	"(es wird also Nachts dunkel) und 'Kaempfen' ist hier erlaubt.");
    //	Mit set_long(string) setzt man die ausfuehrliche Beschreibung des
    //	Raumes. 
    //	Um den Zeilenumbruch brauchst Du Dich nicht zu kuemmern, dies wird 
    //	bei long Beschreibungen immer automatisch gemacht.
    //	Lediglich an die Leerzeichen musst Du denken.
    //
    //	Moechtest Du einen Absatz in der Beschreibung haben, dann machst Du
    //	einfach ein \n an die entsprechende Stelle.
    //
    //	Eine \n am Ende des ganzen Strings hat eine besondere Bewandnis:
    //	Dann wird der Zeilenumbruch nicht automatisch gemacht, Du musst dann
    //	alle \n von Hand einfuegen (das war die alte Methhode, die Du nicht 
    //	mehr verwenden solltest.)

    // Ausser einem "Aussehen" verpassen wir dem Raum nun auch analog zu
    // set_long mit Hilfe von set_smell, set_noise und set_feel einen
    // Geruch, ein Geraeusch und ein Gefuehl.
    set_smell ("Hier riecht es nach Orangen.");
    set_noise ("Du meinst, das Knabbern von Holzwuermern zu hoeren.");
    set_feel ("Beim Umhertasten stellst Du fest, dass der Raum einen "
        "Boden und vier Waende besitzt.");
    // Zugegebenermassen nicht sehr geistreich, aber es geht ja "nur"
    // ums Prinzip.

    set_exits( ({"bsp_eingang", "bsp2" }),
               ({"sueden", "norden" }) );
    //	Mit set_exits() werden die Ausgaenge des Raumes gesetzt.
    //	Zu diesem Zweck werden zwei String-Arrays uebergeben.
    //	Das erste Array enthaelt die Filenamen der Raeume hinter den Ausgaengen,
    //	das zweite die Richtungen der Ausgaenge. Die Filenamen werden ohne den
    //	Extender .c angegeben und zum ersten Filename gehoert natuerlich
    //	die erste Richtung usw. Die Raeume koennen mit ihrem RELATIVEN
    //	Filenamen angesprochen werden, das heisst, der Raum wird im selben
    //	Verzeichnis gesucht, wie der Raum, indem wir uns gerade befinden. In 
    //	diesem Beispiel ist das /room/bsp. Mit "../anderer_raum" kann man auf
    //	"/room/anderer_raum.c" verweisen, mit z.B. "/room/rathaus/forum"
    //	auf einen Raum in einem ganz anderen Pfad. Schau mal in der
    //	Enzyclopaedia die Doku zu der efun abs_path() an, die funktioniert 
    //	genauso.
    //	Ein Array wird mit ({ eingeleitet und mit }) beendet.

   add_type("teleport_rein_verboten", 1);
    //	Verhindert, dass hier Spieler/Engel reinteleportieren.
    //	Steht hier nur drin, weil dieser Kurs zum fuer Spieler abgesperrten
    //	Ostteil des Rathauses gehoert. (ignore it :-)

}
//	Da create() als Rueckgabe void (also nichts) liefert, kann man sich
//	das return; sparen. Bei Funktionen, die Werte zurueckliefern muss
//	man selbstverstaendlich mit 'return wert;' einen korrekten Wert
//	zurueckliefern. Im Beispiel geschieht der Ruecksprung mit der
//	schliessenden Klammer '}'.
