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.