Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/zauberwald/npc/waechter.c b/doc/beispiele/zauberwald/npc/waechter.c
new file mode 100644
index 0000000..55c1a10
--- /dev/null
+++ b/doc/beispiele/zauberwald/npc/waechter.c
@@ -0,0 +1,87 @@
+// (c) by Padreic (Padreic@mg.mud.de)
+
+#include "../files.h"
+#include <combat.h>
+#include <new_skills.h>
+
+inherit NPC("stdnpc");
+
+void create()
+{
+   ::create();
+   SetProp(P_NAME, "Waechter des Waldes");
+   SetProp(P_SHORT, "Der Waechter des Waldes");
+   SetProp(P_LONG,
+     "Vor Dir steht eine sehr sehr alte Eiche. Doch diese Eiche ist keine\n"
+    +"gewoehnliche Eiche, wie Du sie bereits an vielen anderen Stellen gesehn hast.\n"
+    +"Diese Eiche lebt! Du kannst deutlich einen Mund, eine Nase und sogar zwei\n"
+    +"Ohren erkennen. Sie ist eigentlich sehr friedlich gesonnen, kann aber auch\n"
+    +"sehr sehr boese werden, wenn es jemand wagt die Ruhe des Waldes zu stoeren.\n");
+   SetProp(P_RACE, "eiche");
+   SetProp(P_AGGRESSIVE, 0);
+   SetProp(P_LEVEL, 100);
+   SetProp(P_ATTRIBUTES, (["int":80,"con":100,"str":100,"dex":20]) );
+   SetProp(P_GENDER, MALE);
+   SetProp(P_MAX_HP, 1000);
+   SetProp(P_HP, 1000);
+   SetProp(P_ALIGN, 500);
+   SetProp(P_BODY, 100);
+   SetProp(P_SIZE, 1500);
+   SetProp(P_DISABLE_ATTACK, -10000); // is nich :)
+   AddId(({"eiche", "waechter","waechter des waldes", WALDID("waechtereiche") }));
+   SetProp(P_HANDS, ({" mit einem seiner langen Aeste",550,DT_WHIP}) );
+   SetProp(P_SKILL_ATTRIBUTE_OFFSETS, ([SA_SPEED:210]));
+   SetProp(P_NOCORPSE, 1);
+   SetProp(P_XP, 1000*550*5);
+   SetProp(P_DEFAULT_INFO, "bleibt absolut regungslos und reagiert ueberhaupt nicht.\n");
+   SetProp(P_RESISTANCE_STRENGTHS,
+    ([DT_SLASH:     0.1,
+      DT_MAGIC:    -1.0,
+      DT_BLUDGEON: -0.5,
+      DT_POISON:    0.25,
+      DT_HOLY:     -1.0,
+      DT_RIP:       0.25,
+      DT_FIRE:      0.25,
+      DT_PIERCE:   -0.5,
+      DT_WHIP:     -1.0 ]) );
+   AddCmd(({"osten", "westen"}), "cmd_blocken");
+}
+
+static string _query_info()
+{
+   if (!PL || PL->QueryProp(ZAUBERWALD)<=time())
+      return "Die alte Eiche ist Dir sehr friedlich gesonnen. Es ist jedoch auch sicher\n"
+            +"klug dieses nicht zu aendern, da sie mit ihren Aesten wohl auch sehr kraeftig\n"
+            +"zuschlagen kann.\n";
+   return "Du hast den Zorn der alten Waechtereiche auf Dich gezogen, das war ganz und\n"
+         +"gar nicht klug von Dir. Jetzt lebe auch mit den Konsequenzen....\n";
+}
+
+static int cmd_blocken()
+{
+   if (PL->QueryProp(P_RACE)=="Dunkelelf" &&
+       PL->QueryProp(AUSGANG)==query_verb()) {
+      write(BS(Name(WER, 1)+" laesst Dich nicht vorbei.")
+           +break_string("Du solltest hier besser verschwinden, "
+                        +"so Typen wie Du sind hier nicht gern gesehn!",
+                        78, Name(WER, 1)+" sagt: "));
+      return 1;
+   }
+   if (PL && PL->QueryProp(ZAUBERWALD) &&
+       PL->QueryProp(AUSGANG)==query_verb()) {
+      write(BS(Name(WER, 1)+" steht Dir da leider im Weg und laesst Dich nicht vorbei."));
+      return 1;
+   }
+}
+
+int remove()
+{
+   call_other(ROOM("weg1"), "delay_reset");
+   return (int)::remove();
+}
+
+void NotifyPlayerDeath(object who, object killer, object lost_exp)
+{
+  if (!who || killer!=ME) return; // uninteressant
+  log_file("padreic/kill", ctime(time())+" "+capitalize(getuid(who))+" getoetet von /zauberwald/waechter\n");
+}