STANDARDOBJEKT FUER RAEUME:
07.05.1996 (Yantro)
05.12.2001 (Holger)
BENUTZUNG:
inherit "room";
#include <properties.h>
BESCHREIBUNG:
Ein Raum ist ein Objekt, dass von Spielern oder anderen Lebewesen
betreten werden kann. Er hat Lang- und Kurzbeschrreibungen von
innen und aussen (zum Beispiel Schiffe oder aehnliche Raeume in
Raeumen), die sich der Spieler je nach seinen Beduerfnissen
anzeigen lassen kann (kurz/lang-Modus). Entsprechend den Beschrei-
bungen koennen sichtbare, hoerbare oder lesbare Details angegeben
werden. Auch in dem Raum selbst kann ein bestimmter Geruch oder ein
bestimmte Geraeuchkulisse herrschen. Ausserdem zeigt der Raum die
vorhandenen Ausgaenge an, sofern der Spieler die entsprechende
Einstellung getroffen hat. (im WL default)
Aussenraeume werden vom Tag-/Nachtwechsel beeinflusst. Es koennen
aber in allen Raeumen tag-/nachtaebhaengige Beschreibungen fuer
Details gesetzt werden.
PROPERTIES:
Der Standardraum erbt die meisten seiner Eigenschaften vom std/thing
und std/container. Daher gelten fuer ihn zunaechst auch alle Proper-
ties, die es im 'thing' und im 'container' gibt. Insbesondere gilt
das fuer P_LONG, P_NAME, P_GENDER, P_TRANSPARENT oder P_TRANSLUCENT
falls der Room wiederum in einem Room liegt und daher von 'aussen'
als Objekt sichtbar ist. Beschrieben werden hier daher nur die
Room-spezifischen Properties.
P_INT_SHORT
Eine Kurzbeschreibung innerhalb des Raumes. (ohne Punkt am Ende)
P_INT_LONG
Langbeschreibung innerhalb des Raumes. (automagischer Zeilenumbruch)
P_INT_LONG_NIGHT
Alternative Langbeschreibung innerhalb des Raumes, die Nachts ge-
zeigt wird. (automagischer Zeilenumbruch)
P_INT_LONG_ILUM
Alternative Langbeschreibung innerhalb des Raumes, die Nachts ge-
zeigt wird, wenn der Spieler eine Lichtquelle bei sich traegt.
(automagischer Zeilenumbruch)
P_INDOORS
Wenn 0, dann ist der Raum im Freien ist, wenn 1, ist es ein 'innen'
liegender Raum - ein Innenraum sozusagen. :-)
P_LIGHT
Gibt das Lichtlevel innerhalb des Raumes an. 0 ist dunkel, Werte
groesser 0 bedeuten Helligkeit. Bei Aussenraeumen (im Freien) wird
das Lichtlevel nachts veringert. P_LIGHT wird nicht veraendert,
aber der Spieler sieht um 1 Lichtlevel schlechter. Das heisst,
Aussenraeume mit Lichtlevel 1 werden nachts ganz finster (wie 0),
mit Lichtlevel 2 behalten sie auch nachts eine gewisse 'Resthellig-
keit' (wie 1). Zusaetzlich wird das tatsaechliche Lichtlevel auch
vom Spieler oder anderen Lichtquellen beeinflusst. Es ist daher
NICHT empfehlenswert, mittels P_LIGHT die tatsaechliche Helligkeit
in einem Raum zu erfahren. Benutze statt dessen QueryLight(L).
Merke: Innenraeume P_LIGHT auf 1, Aussenraeume P_LIGHT auf 1 oder 2
P_SOUND
Gibt einen String an, der ausgegeben wird, wenn der Spieler in die-
sem Raum lauscht.
P_SMELL
Gibt einen String an, der ausgegeben wird, wenn der Spieler in die-
sem Raum riecht.
P_NO_TPORT
Zum Verhindern von Teleportversuchen in und/oder aus dem Raum.
P_NOMAGIC
Legt fuer jedes Spell-level (1-10) einen Wert fest, der bestimmt ob
und mit welcher Wahrscheinlichkeit Zaubersprueche dieser Stufe im
Raum ausgefuehrt werden konnen.
P_TIMEZONE
Enthaelt die fuer diesen Raum gueltige Zeitzone. Ist keine Zeitzone
gesetzt, gilt automatisch TZ_STANDARD.
P_TELEPORT_FORBIDDEN
Verhindert, wenn gesetzt, dass Teleporttore in diesem Raum gebaut
werden duerfen.
P_TRANSPARENT
Ist ungleich 0, wenn man in den Raum von aussen reinschauen kann,
oder von innen nach aussen. (nur sinnvoll bei Raeumen, die in einem
anderen Raum liegen - Transporter)
P_TRANSLUCENT
Ist ungleich 0, wenn Licht in den Raum von aussen eindringen kann,
oder von innen nach aussen. (nur sinnvoll bei Raeumen, die in einem
anderen Raum liegen - Transporter)
P_ITEMS
Sollte niemals gesetzt werden, wird durch AddItem(L) gefuellt und
enthaelt Informationen ueber die im Raum 'enthaltenen' Items.
P_EXITS
Sollte niemals gesetzt werden, wird durch AddExit(L) gefuellt und
enthaelt Informationen ueber die Ausgaenge dieses Raumes.
P_DOORS
Sollte niemals gesetzt werden, wird durch AddDoor(L) gefuellt und
enthaelt Informationen ueber die Tueren dieses Raumes.
P_ROOM_MSG
Sollte niemals gesetzt werden. Enthaelt die Room-Messages, die
durch AddRoomMessage(L) zum Raum hinzugefuegt wurden.
FUNKTIONEN:
Der Standardraum erbt die meisten seiner Funktionen vom std/thing
und std/container. Daher gelten fuer ihn zunaechst auch alle Meth-
oden, die es im 'thing' und im 'container' gibt. Insbesondere gilt
das fuer AddDetail(L), AddReadDetail(L), AddSoundDetail(L),
AddSmellDetail(L), AddCmd(L) und RemoveCmd(L). Beschrieben werden
hier daher nur die Room-spezifischen Methoden.
AddExit(kommando, zielraumpfad, richtungstext, *meldungen)
Ein Ausgang in einen anderen (benachbarten) Raum wird angelegt. Die
Meldungen koennen - muessen aber nicht - angepasst werden. Das
Argument 'zielraumpfad' kann auch eine Closure sein, die weitere
Pruefungen vornimmt oder den Zielraum dynamisch bestimmt. Frueher
war AddSpecialExit(obsolete) dafuer gedacht.
RemoveExit(kommando)
Entfernt einen Ausgang, der mit AddExit(L) angelegt wurde.
AddWizExit(kommando, zielraumpfad, richtungstext, *meldungen)
Im Prinzip das gleiche wie AddExit(L), bis auf den Unterschied,
dass Spieler einen solchen Ausgang weder sehen, noch benutzen
koennen.
RemoveWizExit(kommando)
Wie RemoveExit(L), fuer Wiz-Exits.
AddDoor(kommando, zielraumpfad, status, flags, props, richtungstext,
*meldungen)
Aehnlich AddExit(L). Legt jedoch eine (ver-/ab-)schliessbare Tuer
an, die bestimmte Eigenschaften besitzt. Mehr zu Tueren in der
Manpage AddDoor(L).
RemoveDoor(L)
Entfernt eine mit AddDoor(L) angelegte Tuer wieder.
AddRoomMessage(message, delay)
Erzeugt im Abstand von 'delay' Sekunden eine Nachricht, die im Raum
ausgegeben wird. 'message' kann ein String, eine Closure oder ein
Array aus Strings und/oder Closures sein. Im letzteren Fall wird
immer eine Nachricht oder Closure ausgewaehlt/ausgefuehrt. Ist es
ein einzelner String oder Closure, wird diese regelmaessig ausge-
geben oder ausgefuehrt.
AddItem(filename, refresh[, extra])
Ein Objekt mit Pfad 'filename' wird erzeugt und in den Raum gelegt.
Dabei gibt es vier verschiedene Erneuerungs-(Refresh-)modi:
REFRESH_NONE: Das Objekt wird nur beim allerersten mal
erzeugt, und dann nie wieder (erst beim reboot)
REFRESH_DESTRUCT: Ein neues Objekt wird erst erzeugt,
wenn das alte zerstoert ist. So kann man sicher
gehen, dass nur ein Exemplar im Spiel ist.
REFRESH_REMOVE: Beim reset wird ein neues Objekt erzeugt,
wenn sich das alte nicht mehr im Raum befindet.
REFRESH_ALWAYS: Bei jedem reset wird ein neues Objekt
erzeugt. VORSICHT: Kann zu riesigen Mengen von
Objekten fuehren, wenn ein Raum lange nicht be-
sucht wird.
SIEHE AUCH:
P_LONG, P_NAME, P_GENDER, P_TRANSPARENT oder P_TRANSLUCENT
P_INT_SHORT, P_INT_LONG, P_INT_LONG_NIGHT, P_INT_LONG_ILUM,
P_INDOORS, P_LIGHT, P_SOUND, P_SMELL, P_NO_TPORT, P_NOMAGIC,
P_TIMEZONE, P_TELEPORT_FORBIDDEN, P_TRANSPARENT, P_TRANSLUCENT
P_ITEMS, P_EXITS, P_DOORS, P_ROOM_MSG, AddDetail(L),
AddReadDetail(L), AddSoundDetail(L), AddSmellDetail(L), AddCmd(L)
RemoveCmd(L), AddExit(L), RemoveExit(L), AddWizExit(L),
RemoveWizExit(L), AddDoor(L), RemoveDoor(L), AddRoomMessage(L),
AddItem(L), thing(STD), container(STD), MNPCExits(L)
|