Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/zauberwald/npc/laufeiche.c b/doc/beispiele/zauberwald/npc/laufeiche.c
new file mode 100644
index 0000000..0649276
--- /dev/null
+++ b/doc/beispiele/zauberwald/npc/laufeiche.c
@@ -0,0 +1,124 @@
+// (c) by Padreic (Padreic@mg.mud.de)
+
+#include "../files.h"
+#include <combat.h>
+#include <moving.h>
+#include <new_skills.h>
+
+inherit NPC("stdnpc");
+inherit MNPC_MOVING;
+
+void create()
+{
+   if (!clonep(ME)) return;
+   stdnpc::create();
+   moving::mnpc_create();
+   SetProp(P_NAME_ADJ, "alt");
+   SetProp(P_NAME, "Eiche");
+   SetProp(P_SHORT, "Eine alte Eiche");
+   SetProp(P_MSGOUT, "wandert");
+   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_LEVEL, 50);
+   SetProp(P_ATTRIBUTES, (["int":50,"con":50,"str":70,"dex":15]) );
+   SetProp(P_GENDER, FEMALE);
+   SetProp(P_MAX_HP, 500);
+   SetProp(P_HP, 500);
+   SetProp(P_ALIGN, 500);
+   SetProp(P_BODY, 100);
+   SetProp(P_SIZE, 650+random(151));
+   AddAdjective("alt");
+   AddId(({"eiche", "eichen", WALDID("eiche") }));
+   SetProp(P_HANDS, ({" mit einem ihrer langen Aeste",400, DT_WHIP}) );
+   SetProp(P_SKILL_ATTRIBUTE_OFFSETS, ([SA_SPEED:180]));
+   SetProp(P_NOCORPSE, 1);
+   SetProp(P_XP, 500*400*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 ]) );
+   SetProp(MNPC_AREA, ({ ROOM("weg2"), ROOM("lichtung") }) );
+   SetProp(MNPC_RANDOM, 10);
+   SetProp(MNPC_DELAY, 8);
+   SetProp(MNPC_WALK_TIME, 600);
+   SetProp(MNPC_FLAGS, MNPC_WALK|MNPC_NO_WALK_IN_FIGHT|MNPC_ONLY_EXITS);
+}
+
+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 Eiche auf Dich gezogen, das war ganz und gar nicht\n"
+         +"klug von Dir. Jetzt lebe auch mit den Konsequenzen....\n";
+}
+
+int remove()
+// wenn eine Eiche getoetet wird, dann verlangsamt das den reset der Eiche
+// die auf weg2 blockt. In der Regel steht ja auch so schon immer eine der
+// wanderden Eichen dort. Dies soll verhindern, das gerade eine Eiche resetet
+// wenn man eine tod hat.
+{
+   call_other(ROOM("weg2"), "delay_reset");
+   catch(call_other(QueryProp(MNPC_HOME), "delay_reset", 900+random(3600)));
+   return (int)::remove();
+}
+
+// wenn man den MNPC mit einem anderen stdnpc kombiniert muessen einige
+// funktionen per Hand ueberschrieben werden....
+
+void reset()
+{
+   stdnpc::reset();
+   moving::mnpc_reset();
+}
+
+void init()
+{
+   stdnpc::init();
+   moving::mnpc_init();
+}
+
+varargs int move(mixed dest, int meth, string dir, string out, string in)
+{
+   int i;
+
+   // extra fuer den Zauberwald eingebaut
+   if (environment() && object_name(environment())==ROOM("weg2")) {
+      // wenn es die einzige Eiche ist, dann bleibt sie hier stehn,
+      // bewacht den Weg und bewegt sich nicht mehr hier weg!
+      object *inv;
+
+      inv = all_inventory(environment()) - ({ ME });
+      for (i=sizeof(inv)-1; i>=0; i--)
+         if (BLUE_NAME(inv[i])==NPC("laufeiche")) break;
+      if (i<0) return ME_CANT_LEAVE_ENV;
+   }
+   //////////////////////////////////////
+   i=(int)stdnpc::move(dest, meth, dir, out, in);
+   if (i!=1) return i;
+   moving::mnpc_move();
+   return 1;
+}
+
+int PreventFollow(object dest)
+{  return moving::mnpc_PreventFollow(dest);  }
+
+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/laufeiche\n");
+}