Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/zauberwald/room/stdlichtung.c b/doc/beispiele/zauberwald/room/stdlichtung.c
new file mode 100644
index 0000000..341ee6e
--- /dev/null
+++ b/doc/beispiele/zauberwald/room/stdlichtung.c
@@ -0,0 +1,157 @@
+// (c) by Thomas Winheller (Padreic@mg.mud.de)
+
+#include "../files.h"
+#include <moving.h>
+
+inherit ROOM("stdroom");
+inherit "/std/room/kraeuter";
+
+void maybe_replace_program()
+// dieser Standardraum, darf _nicht_ replaced werden...
+{ }
+
+int tuempel_ex(string exit, mapping map_ldfied)
+{   return map_ldfied[exit]==ROOM("tuempel");  }
+
+static int plant;
+
+void create()
+{
+   int i;
+   string tuempel, dir;
+   mixed tmp;
+
+   if (!clonep(ME)) return;
+   ::create();
+   plant=0;
+   SetProp(P_INDOORS, 0);
+   SetProp(P_LIGHT, 1);
+   SetProp(P_INT_SHORT, "Am Rande der Zauberlichtung");
+   SetProp(EXTRA_LONG, "");
+   if (PO) dir=(PO->CustomizeObject());
+   if (!dir) return;
+   dir=(["o":"ost", "w":"west", "n":"nord", "s":"sued",
+         "no":"nordost", "nw":"nordwest",
+         "so":"suedost", "sw":"suedwest"])[dir[8..]];
+   tuempel=filter(m_indices(QueryProp(P_EXITS)||([])), "tuempel_ex", ME, QueryProp(P_EXITS)||([]))[0][0..<3];
+   dir=capitalize(dir); tuempel=capitalize(tuempel);
+   SetProp(P_INT_LONG, BS(
+     "Du stehst am "+dir+"rand der grossen Lichtung inmitten des Zauberwalds. "
+    +tuempel+"lich von hier, befindet sich genau in der Mitte der "
+    +"Lichtung ein kleiner Tuempel in dessen Wasser sich das Sonnenlicht in "
+    +"allen Farben des Regenbogens spiegelt. Hier und da stehen um den Teich "
+    +"herum vereinzelt einige Eichen die sich irgendwie zu bewegen "
+    +"scheinen und ab und zu siehst Du wie sich einige kleine Pixies aus "
+    +"dem Wald heraus ans Wasser trauen. Die Eichen jedoch, halten immer "
+    +"einen deutlichen Abstand zum Wasser."+QueryProp(EXTRA_LONG)));
+   AddDetail(({"raum", lower_case(dir)+"rand", "zauberwald"}), QueryProp(P_INT_LONG));
+   AddDetail(({"pixies", "zauberwesen", "unfug"}),
+     "Pixies sind kleine verspielte Zauberwesen, die hier im Zauberwald wohnen. Um\n"
+    +"einem von ihnen zu begegnen wirst Du hier im Wald sicher nich lange suchen\n" 
+    +"muessen, doch vorsicht, sie haben nichts als Unfug im Kopf...\n");
+   AddDetail(({"farben", "regenbogen", "computer"}),
+     "Noch nie einen Regenbogen gesehn? Hmm.. dann sitzt Du wirklich eindeutig\n"
+    +"zuviel vor Deinem Computer...\n");
+   AddDetail("abstand",
+     "Wieso sie diesen Abstand halten kannst Du nicht nachvollziehn, aber mehr als\n"
+    +"ein paar Meter gehen sie nie an den alten Weiher dran.\n");
+   AddDetail(({"sonne", "sonnenstrahlen", "sonnenlicht", "himmel", "herz"}),
+     "Zahlreiche warme Sonnenstrahlen erwaermen Dein Herz und Du bist richtig\n"
+    +"gluecklich. Solch ein Idyllisches Plaetzchen willst Du am liebsten nie\n"
+    +"wieder verlassen. Fehlt eigentlich nur noch ein Partner, mit dem man\n"
+    +"hier gemeinsam in der Sonne liegen und das rauschen des Wassers geniessen\n"
+    +"kann.\n");
+   AddDetail("partner", "Den musst Du Dir schon selbst mitbringen...\n");
+   AddDetail(({"wald", "zauberwald"}),
+     "Du befindest Dich quasi mittem ihn ihm. Rund herum um die Lichtung schliesst\n"
+    +"sich ein dichter Wald an.\n");
+   AddDetail(({"eiche", "eichen"}),
+     "Hier befindet sich gerade keine, so dass Du sie nich naeher ansehn kannst.\n");
+   AddDetail(({"lichtung", "rand", "plaetzchen"}), QueryProp(P_INT_LONG));
+   AddDetail(({"wasser", "tuempel", "teich", lower_case(tuempel)+"en", "mitte"}),
+     "Wenn Du Dir den Tuempel in der Mitte der Lichtung etwas naeher ansehen\n"
+    +"moechtest, solltest Du vielleicht einfach noch ein bisschen naeher rangehn.\n");
+   AddDetail(({"waldweg", "weg"}),
+     "Ueber den Waldweg kannst Du den Wald wieder verlassen wenn Du moechtest.\n");
+   AddDetail(({"boden"}),
+     "Der Boden ist hier nirgends nackt sichtbar, sondern ist mit einem schoenen\n"
+    +"gruenen Rasenteppich bedeckt. Nicht zu hoch und nicht zu tief, offensichtlich\n"
+    +"bedarf diese Grasart keinerlei Pflege oder aber irgendjemand pflegt diesen\n"
+    +"Rasen hier seeehhhhrrr gruendlich.\n");
+   AddDetail(({"grasart", "rasen", "art", "gras", "rasenteppich", "halme"}),
+     "Du schaust Dir den Rasen noch einmal gruendlich an und streichst mit Deiner\n"
+    +"Hand durch die Halme. Was auch immer das fuer eine Art ist, solch einen Rasen\n"
+    +"hast Du noch nicht gesehn.\n");
+   AddDetail("hand",
+     "Sei lieber vorsichtig, sonst ist die Hand schneller ab als Du denkst...\n");
+   AddDetail("pflege",
+     "Ob jemand diesen Rasen pflegt, bzw. _wer_ kannst Du nicht entdecken...\n");
+   AddSounds(({"rauschen", "wasser"}), "Leise hoerst Du das rauschen des Wassers....\n");
+}
+
+#define VERB (["iss": "essen", "esse": "essen", "pflueck": "pfluecken", "pfluecke": "pfluecken"])
+
+static int cmd_pilze(string str)
+{
+   notify_fail("Was moechtest Du "+VERB[query_verb()]+"?\n");
+   if (str!="pilz" && str!="pilze") return 0;
+   if (plant>time()) {
+      write("Du solltest die Pilze erstmal in Ruhe wieder etwas nachwachsen lassen.\n");
+      return 1;
+   }
+   if (PL->QueryProp(ZAUBERWALD)<=time()) {
+      write("Du bist nur Gast hier und die Bewohner des Zauberwalds, sehen es nicht gerne\n"
+           +"wenn man hier einfach so die Pilze pflueckt.\n");
+      return 1;
+   }
+   plant=time()+300;
+   write("Du pflueckst Dir einige Pilze und isst sie. Anschliessend geht es Dir\n"
+        +"bedeutend besser.\n");
+   PL->reduce_hit_points( negate(100+random(100)) );
+   return 1;
+}
+
+static int cmd_farne(string str)
+{
+   int food;
+   notify_fail("Was moechtest Du "+VERB[query_verb()]+"?\n");
+   if (str!="farn" && str!="farne") return 0;
+   if (PL->QueryProp(ZAUBERWALD)<=time()) {
+      write("Du bist nur Gast hier und die Bewohner des Zauberwalds, sehen es nicht gerne\n"
+           +"wenn man hier einfach so den Farn abreisst.\n");
+      return 1;
+   }
+   // das tanken am Wasser ist umsonst, es heilt dabei wie ein
+   // mittleres Kneipenessen das genau 1 Muenze kostet. Geheilt werden nur HP
+   // Ein Missbrauch ist im Wald ausgeschlossen, bzw. man muesste den
+   // gesamten Wald leermetzeln und kann dann hier tanken bis zum naechsten
+   // reset. Bei Kosten von einer Muenze pro Heilung ist es sehr fraglich
+   // ob sich das lohnt.... :)
+   food=(PL->QueryProp(P_MAX_FOOD)) - (PL->QueryProp(P_FOOD));
+   if (food>10) food=10; // nie mehr als fuer 10 food tanken...
+   if (food <= 0 || !PL->eat_food(food, 1)) {
+      write("Du bist so voll, Du kannst leider wirklich nichts mehr essen...\n");
+      return 1;
+   }
+   write("Du pflueckst ein wenig von dem Farn und isst ihn. Sogleich spuerst Du, wie es\n"
+        +"Dir allmaehlich wieder besser geht...\n");
+   if (PL->eat_food(food)) { // food gutschreiben erfolgreich?
+      PL->buffer_hp(food*6, 8);
+      PL->SetProp(ZAUBERWALD, time()+AGGRESSIVE_TIME);
+   }
+   return 1;
+}
+
+static int cmd_sueden()
+{
+   if (PL->QueryProp(ZAUBERWALD)>time()) {
+      write("Du versuchst in den Wald zu fluechten, doch die Farne und Buesche bilden\n"
+           +"eine pflanzliche Barriere und lassen Dich nicht hindurch.\n");
+      return 1;
+   }
+   write("Du machst einen Schritt hin nach Sueden und sofort biegen sich auf magische\n"
+        +"Weise die Farne und Buesche zur Seite und geben einen Trampelpfad nach Sueden\n"
+        +"frei.\n");
+   PL->move(ROOM("huette"), M_GO, "durch die Buesche nach Sueden", "zwaengt sich");
+   return 1;
+}