Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/efun/environment b/doc/efun/environment
new file mode 100644
index 0000000..ea10b3d
--- /dev/null
+++ b/doc/efun/environment
@@ -0,0 +1,69 @@
+SYNOPSIS
+        object environment();
+        object environment(object obj);
+        object environment(string obj);
+
+ARGUMENTE:
+     obj
+          Objekt oder Pfad-String eines Objektes dessen Umgebungsobjekt
+          gesucht ist
+
+BESCHREIBUNG:
+     Es wird das Objekt bestimmt, in dem sich obj aufhaelt.
+     Wird obj nicht angegeben, so wird this_object() als Objekt angenommen.
+
+     Zerstoerte Objekte haben kein Environment.
+
+BEMERKUNGEN:
+     - Blueprints, wie zum Beispiel Raeume haben oft kein environment(). Man
+       sollte daher ueberpruefen, ob ein environment() existiert, wenn man
+       darin oder darauf eine Funktion aufrufen will.
+
+BEISPIELE:
+     // In der Variable "raum" steht der Raum, in dem sich der Spieler derzeit
+     // aufhaelt - das kann auch 0 sein!
+     raum = environment(this_player());
+
+     // Dieses Objekt hat noch kein environment, da es eben erst geclont
+     // wurde. Ergo steht in env eine 0.
+     obj = clone_object("/std/thing");
+     env = environment(obj);
+
+     // alle Methoden die auf Environment arbeiten, sollten das vorher
+     // pruefen - insbesondere tell_room()
+     if(this_player() && environment(this_player()) &&
+        objectp(o=present("schild",environment(this_player()))) {
+
+      write("Du klebst Deine Plakette auf "+o->name(WEN)+".\n");
+      tell_room(environment(this_player()), break_string(
+		this_player()->Name(WER)+" pappt einen Aufkleber auf "+
+		o->name(WEN)+".",78),
+		({this_player()}));
+     }
+
+     // wenn Dinge sehr offensichtlich in Leuten kaputtgehen wird es
+     // komplexer (man kann das natuerlich noch weiter schachteln oder
+     // ueber all_environment() versuchen zu loesen
+     if(environment()) {
+      object ee;
+      ee=environment(environment());
+      if(living(environment())) {
+       tell_object(environment(),Name(WER)+" zerfaellt.\n");
+       if(ee)
+        tell_room(ee,
+	 environment()->Name(WESSEN)+" "+name(RAW)+" zerfaellt.\n",
+	 ({environment()}));
+      } else if(ee && living(ee))
+       if(environment()->QueryProp(P_TRANSPARENT))
+        tell_object(ee, Name(WER)+" zerfaellt in Deine"+
+	 (environment()->QueryProp(P_PLURAL)?"n":
+	  (environment()->QueryProp(P_GENDER)==FEMALE?"r":"m"))+
+	 environment()->name(RAW)+".\n");
+      } else tell_room(environment(),Name(WER)+" zerfaellt.\n");
+     }
+
+SIEHE AUCH:
+        first_inventory(E), next_inventory(E), all_inventory(E)
+        all_environment(E)
+
+20. Sep. 2002 Gloinson@MG
\ No newline at end of file