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";
+}