Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/zauberwald/room/tuempel.c b/doc/beispiele/zauberwald/room/tuempel.c
new file mode 100644
index 0000000..6f22d86
--- /dev/null
+++ b/doc/beispiele/zauberwald/room/tuempel.c
@@ -0,0 +1,179 @@
+// (c) by Thomas Winheller (Padreic@mg.mud.de)
+
+#include "../files.h"
+#include <moving.h>
+
+inherit ROOM("stdroom");
+inherit "/std/room/kraeuter";
+
+void create()
+{
+   ::create();
+   SetProp(P_LIGHT, 2);
+   SetProp(P_INDOORS, 0);
+   SetProp(P_INT_SHORT, "An einem verwunschenden Weiher");
+   AddSpecialDetail(({"ort", "weiher"}), "_query_int_long");
+   AddDetail(({"seerosen", "farben", "farbenvielfalt"}),
+     "Auf dem Wasser schwimmen zahlreiche Seerosen in allen Farben des Regenbogens\n"
+    +"eine solche Farbenvielfalt wie hier, hast Du bisher noch nirgendwo sonst\n"
+    +"gesehn.\n");
+   AddDetail("regenbogen", "Derzeit steht keiner am Himmel.\n");
+   AddDetail(({"libelle", "libellen", "atmosphaere", "summen"}),
+     "Hier und da schwirren ueber dem Weiher einige Libellen herum. Ihr Summen\n"
+    +"verbreitet eine richtig idyllische Atmosphaere an diesem Ort.\n");
+   AddDetail(({"pixies", "zauberwesen"}),
+     "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(({"wald", "zauberwald", "punkt"}),
+     "Der verwunschene Weiher ist mehr oder weniger der zentrale Punkt hier im\n"
+    +"Zauberwald. Er liegt mitten auf einer grossen Lichtung umgeben vom dichten\n"
+    +"Wald der Pixies\n");
+   AddDetail(({"lichtung", "mitte"}),
+     "Der Weiher befindet sich genau in der Mitte der Lichtung, sieh Dich halt\n"
+    +"einfach mal um.\n");
+   AddDetail(({"boden", "ufer"}),
+     "Das Ufer des Weihers besteht aus zahlreichen Steinen die bis in den Weiher\n"
+    +"hineinreichen. Auf und zwischen diesen Steinen sind jedoch ueberall zahlreiche\n"
+    +"kleine und mittlere Pflanzen gewachsen.\n");
+   AddDetail(({"stein", "steine"}), "Ein Stein ist ein Stein ist ein Stein ist ein Stein ist ein Stein.\n");
+   AddDetail("pflanzen",
+     "Die verschiedensten Pflanzen wachsen zwischen den Steinen empor und begruenen\n"
+    +"das Ufer. An einer Stelle kannst Du sogar weissen Wasser-Hahnenfuss wachsen\n"
+    +"sehen.\n");
+   AddDetail(({"wasser", "schimmer", "schimmern"}),
+     "Das Wasser ist irgendwie recht trueb und es geht ein sehr seltsames Schimmern\n"
+    +"von ihm aus. Irgendetwas besonderes hat es mit diesem Wasser auf sich, das\n"
+    +"spuerst Du genau. Du weisst jedoch nicht, ob es etwas gutes oder etwas boeses\n"
+    +"ist.\n");
+   AddDetail(({"himmel", "luft", "sonne", "waerme", "strahlen", "sonnenstrahlen"}),
+     "Die Sonne steht hoch am Himmel und fuellt diesen Ort mit einer herrlichen\n"
+    +"Waerme und ihre Strahlen reflektieren im Wasser in allen erdenklichen Farben.\n");
+   AddExit("norden", ROOM("lichtungn"));
+   AddExit("nordosten", ROOM("lichtungno"));
+   AddExit("nordwesten", ROOM("lichtungnw"));
+   AddExit("osten", ROOM("lichtungo"));
+   AddExit("westen", ROOM("lichtungw"));
+   AddExit("sueden", ROOM("lichtungs"));
+   AddExit("suedwesten", ROOM("lichtungsw"));
+   AddExit("suedosten", ROOM("lichtungso"));
+   AddItem(NPC("ulinia"), REFRESH_REMOVE, 1);
+   AddCmd(({"bad", "bade", "schwimm", "schwimme", "tauch", "tauche"}), "cmd_schwimmen");
+   AddCmd(({"trink", "trinke"}), "cmd_trinken");
+   AddCmd(({"pflueck", "pfluecke"}), "cmd_pfluecken");
+   // Detail per Hand hinzufuegen, da GetPlant anstelle von AddPlant
+   // verwendet wird.
+   AddPlantDetail(OBJ("hahnenfuss"));
+}
+
+static int cmd_trinken(string str)
+{
+   int drink;
+   object ob;
+   if (member(({"wasser", "wasser aus teich", "wasser aus tuempel",
+                "wasser aus see", "aus teich", "aus tuempel", "aus wasser",
+                "aus see"}), str)==-1) {
+      notify_fail("Was moechtest Du trinken?\n");
+      return 0;
+   }
+   if ((ob=present(WALDID("fee"), ME)) && !ob->IsEnemy(PL)) {
+      write(BS("Die Waldfee scheint Deinen Entschluss ein wenig von dem "
+         +"Wasser zu kosten, bemerkt zu haben und straft Dich mit einem "
+         +"mahnenden Blick ab. Du ueberlegst es Dir also noch einmal und "
+         +"laesst von Deinem Vorhaben ab."));
+      return 1;
+   }
+   // das tanken am Wasser ist umsonst, es heilt dabei wie ein
+   // Kneipengetraenk das genau 1 Muenze kostet. Geheilt werden nur SP
+   // Ein Missbrauch ist im Wald ausgeschlossen, bzw. man muesste den
+   // gesamten Wald leermetzeln und kann dann ueben bis zum naechsten
+   // reset. Bei Kosten von einer Muenze pro Heilung ist es sehr fraglich
+   // ob sich das lohnt.... :)
+   drink=(PL->QueryProp(P_MAX_DRINK)) - (PL->QueryProp(P_DRINK));
+   if (drink>10) drink=10; // nie mehr als fuer 10 soak tanken...
+   if (drink <= 0 || !PL->drink_soft(drink, 1)) {
+      write("Du bist so voll, Du kannst leider wirklich nichts mehr trinken...\n");
+      return 1;
+   }
+   write("Du gehst an den Rand des Weihers und nimmst einen kraeftigen Schluck von dem\n"
+        +"Wasser. Sogleich spuerst Du, wie Deine mentalen Kraefte langsam gestaerkt\n"
+        +"werden.\n");
+   if (PL->drink_soft(drink)) { // soak gutschreiben erfolgreich?
+      PL->buffer_sp(drink*6, 5);
+      PL->SetProp(ZAUBERWALD, time()+AGGRESSIVE_TIME);
+   }
+   return 1;
+}
+
+static int cmd_schwimmen(string str)
+{
+   string verb;
+
+   // besondere Eigenschaft der schluesselwoerter ausnutzen... :)
+   verb=(query_verb()||"");
+   if (verb[<1]!='e') verb+="e";
+   if (member(({"in teich", "in weiher", "in tuempel", "in see"}), str)==-1) {
+      notify_fail("Worin willst Du "+verb+"n?\n");
+      return 0;
+   }
+   str=capitalize(str[3..]); // "in " abschneiden...
+   if (present(WALDID("fee"), ME)) {
+      write(BS("Die Waldfee scheint Deinen Entschluss im "+str+" "+verb
+         +"n zu gehn irgendwie bemerkt zu haben und straft Dich mit einem "
+         +"mahnenden Blick ab. Deine Lust zum "+capitalize(verb)
+         +"n sinkt sogleich gegen null, denn Du verspuerst keine grosse "
+         +"Lust Dich mit der Waldfee anzulegen."));
+      return 1;
+   }
+   write(BS("Mutig gehst Du einen Schritt ins Wasser, da ueberkommt Dich auch "
+           +"schon ein seltsames kribbeln am ganzen Koerper. In windeseile "
+           +"hast Du den "+str+" auch schon wieder verlassen."));
+   return 1;
+}
+
+static int cmd_pfluecken(string str)
+{
+   object ob;
+   notify_fail("WAS moechtest Du pfluecken?\n");
+   if (member(({"hahnenfuss",
+                "wasser-hahnenfuss",
+                "weisser hahnenfuss",
+                "weisser wasser-hahnenfuss"}), str)<0) return 0;
+   if ((ob=present(WALDID("fee"), ME)) && !ob->IsEnemy(PL)) {
+      write(BS("Die Waldfee scheint Dein Vorhaben bemerkt zu haben und "
+         +"straft Dich mit einem mahnenden Blick ab. Du ueberlegst es Dir "
+         +"wieder anders und laesst von Deinem Vorhaben ab, solange die "
+         +"Fee hier wacht."));
+      return 1;
+   }
+   ob=GetPlant(OBJ("hahnenfuss"));
+   if (objectp(ob)) {
+      if (ob->move(PL, M_GET)==1)
+          write(BS("Vorsichtig pflueckst Du "+ob->name(WEN, 1)
+                  +" und nimmst "+ob->QueryPronoun(WEN)+" an Dich."));
+      else write(BS("Vorsichtig pflueckst Du "+ob->name(WEN, 1)+" kannst "
+                  +ob->QueryPronoun(WEN)+" aber nicht nehmen."));
+   }
+   else if (!ob)
+      write(BS("Der Hahnenfuss ist noch nicht wieder weit genug "
+              +"nachgewachsen um ihn pfluecken zu koennen."));
+   return 1;
+}
+
+static string _query_int_long()
+{
+   if (present(WALDID("fee"), ME))
+      return
+        "Du stehst nun an einem kleinen verwunschenen Weiher, inmitten des Zauberwalds.\n"
+       +"Auf dem Wasser schwimmen zahlreiche Seerosen in den verschiedensten Farben\n"
+       +"und hier und dort schwirrt eine Libelle in der Luft. Mitten ueber dem Weiher\n"
+       +"schwebt eine wunderschoene Waldfee in der Luft und scheint den Weiher zu\n"
+       +"bewachen. Irgendetwas geheimnisvolles scheint es mit dem Weiher auf sich\n"
+       +"zu haben, nur was?\n";
+   return
+     "Du stehst nun an einem kleinen verwunschenen Weiher, inmitten des Zauberwalds.\n"
+    +"Auf dem Wasser schwimmen zahlreiche Seerosen in den verschiedensten Farben und\n"
+    +"hier und dort schwirrt eine Libelle in der Luft. Alles scheint hier sehr\n"
+    +"friedlich zu sein, fast ein wenig zu friedlich. Irgendetwas geheimnisvolles\n"
+    +"scheint es mit diesem Weiher auf sich zu haben, nur was?\n";
+}