Added public files
Roughly added all public files. Probably missed some, though.
diff --git a/doc/std/room b/doc/std/room
new file mode 100644
index 0000000..94e575f
--- /dev/null
+++ b/doc/std/room
@@ -0,0 +1,143 @@
+STANDARDOBJEKT FUER RAEUME:
+
+BENUTZUNG:
+ inherit "/std/room";
+
+ #include <properties.h>
+ #include <rooms.h> // Fuer AddItem() und NewDoor()
+
+BESCHREIBUNG:
+ Ein Raum ist ein Objekt, das von Spielern oder anderen Lebewesen
+ betreten werden kann. Er hat Lang- und Kurzbeschreibungen 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).
+
+ Properties:
+
+ P_INT_SHORT
+ Kurzbeschreibung innerhalb des Raumes
+ P_INT_LONG
+ Langbeschreibung innerhalb des Raumes
+ P_SHORT
+ Kurzbeschreibung von aussen (nur noetig, wenn man den Raum
+ auch wirklich von aussen sehen kann)
+ P_LONG
+ Langbeschreibung von aussen (siehe P_SHORT)
+ Um Situationsbezogene Beschreibungen zu bekommen, kann man
+ Querymethoden auf die jeweiligen Properties setzen, siehe Dokumentation
+ zu Set().
+
+ P_LIGHT
+ Lichtlevel des Raums (0 dunkel, 1 hell)
+ P_LIGHT_TYPE
+ Lichtart, mit der der Raum beleuchtet ist, zB LT_SUNLIGHT
+ P_INDOORS
+ Wenn es sich um einen Aussenraum handelt, 0. 1 fuer Innenraeume.
+ P_TRANSPARENT
+ Ist ungleich 0, wenn man in den Raum von aussen reinschauen
+ kann, oder von innen nach aussen
+ P_NO_TPORT
+ Zum verhindern von Teleportversuchen in oder aus dem Raum
+ P_NOMAGIC
+ Im Raum kann nicht gezaubert werden.
+ P_WATER
+ Im Raum kann geangelt werden, und man kann ggf. sogar Fische fangen.
+
+ Funktionen:
+
+ AddExit(string|string* kmnd, string zielraum)
+ <kmnd> kann ein String sein oder eine Liste von Strings
+ mit den Kommandos mit denen der Spieler in <zielraum>
+ landen soll.
+ RemoveExit(string|string* kmnd)
+ <kmnd> ist ein String oder eine Liste von Strings, deren
+ Ausgaenge entfernt werden sollen. Dabei muss man etwas vor-
+ sichtig sein, da ein Spieler, der zum Zeitpunkt des Aufrufs
+ im Raum ist, die Aktion fuer sich noch definiert hat.
+ Also: Nur benutzen, wenn man weiss, was man tut!
+ AddSpecialExit(string|string* kmnd, string funktion)
+ <funktion> wird aufgerufen, wenn der Spieler das Kommando
+ <kmnd> tippt (oder eins der Kommandos, wenn <kmnd> eine
+ Liste ist). Nuetzlich zum Beispiel um einen Spieler nur
+ durchzulassen, wenn ein Waechter nicht da ist.
+ P_AERIAL_HELPERS/P_AQUATIC_HELPERS
+ Sollte es gewuenscht sein, dass bestimmte Raeume z.B. nur
+ fliegend erreicht werden koennen, oder dass man fuer einen
+ bestimmten Ausgang tauchen koennen muss, sind diese
+ Properties hilfreich, die im Spielerobjekt definiert sind
+ und die dort aktuell registrierten Hilfsobjekte fuers
+ Fliegen/Segeln und Tauchen enthalten.
+ RemoveSpecialExit(string|string* kmnd)
+ siehe RemoveExit()
+ NewDoor()
+ Fuegt dem Raum eine Tuer hinzu, die in einen zweiten Raum fuehrt,
+ und die der Spieler (ggf. mit einem Schluessel) oeffnen und
+ schliessen kann.
+
+ Um Raeume interessanter zu machen, kann man ihnen Details, die
+ vom Spieler angeschaut werden koennen, einbauen:
+
+ AddDetail(string|string* keys, string descr)
+ Eine Beschreibung von Details, die vom Spieler angeschaut
+ werden koennen wird dem Raum gegeben. <keys> kann ein
+ String sein oder eine Liste von Strings. <descr> ist
+ die Beschreibung, die der Spieler erhaelt.
+ RemoveDetail(string|string* keys)
+ Entfernt ein Detail aus einem Raum. <keys> kann ein String
+ sein oder eine Liste von Strings.
+ AddSpecialDetail(string|string* keys, string function)
+ Im Prinzip wie AddDetail(), nur wird als zweites Argument
+ kein fester String angegeben, sondern eine Funktion, die
+ einen String zurueckgeben muss. Damit kann man variable
+ Details programmieren.
+ RemoveSpecialDetail(string|string* keys)
+ siehe RemoveDetail()
+ AddReadDetail(string|string* keys, string desc)
+ <desc> wird ausgegeben, wenn ein Spieler den <key> liest.
+ <keys> kann wieder ein String oder eine Liste von Strings
+ sein.
+ RemoveReadDetail(string|string* keys)
+ siehe RemoveDetail()
+ AddRoomMessage(string* msg, int prob, string|mixed *func)
+ Alle <prob> Sekunden wird aus einer Liste von Meldungen
+ (<msg>) zufaellig eine ausgesucht, die dann im Raum er-
+ scheint. Wenn das Argument <func> angegeben ist, wird
+ eine Funktion diesen Namens aufgerufen, der der Index
+ der ausgegebenen Meldung als Argument uebergeben wird.
+ Func darf auch einen Array von Funktionen enthalten.
+
+ AddCmd(string|string* cmd, string func, int flag)
+ Im Raum wird beim Kommando <cmd> (oder einem der Kommandos)
+ die Funktion <func> aufgerufen. <func> muss 1 zurueck-
+ geben, wenn die Funktion die Kombination aus Kommando
+ und Argumenten akzeptiert, ansonsten 0. Alles was ein
+ Spieler hinter <cmd> noch angibt, wird der Funktion als
+ Argument uebergeben. Wenn <flag> gesetzt ist, wird jedes
+ Kommando, das mit <cmd> beginnt akzeptiert.
+ RemoveCmd(string|string* cmd)
+ Entfernt ein Kommando aus dem Raum.
+ ACHTUNG: Bei Spielern, die zum Zeitpunkt des Funktions-
+ aufrufs noch im Raum sind, ist das Kommando noch definiert.
+ Also: Nur benutzen, wenn man genau weiss, was man tut.
+
+ AddItem(string filename, int refresh)
+ Ein Objekt mit Pfad <filename> wird erzeugt und in den
+ Raum bewegt, dabei gibt es vier verschiedene Modi, die
+ ueber das Argument <refresh> angegeben werden:
+ 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.
+ Die Konstanten REFRESH_* sind in <rooms.h> definiert.
+
+ Auf die Properties P_EXITS, P_SPECIAL_EXITS, P_DETAILS,
+ P_SPECIAL_DETAILS, P_READ_DETAILS, P_COMMANDS und P_ITEMS
+ sollte NICHT direkt zugegriffen werden.