Added public files

Roughly added all public files. Probably missed some, though.
diff --git a/doc/beispiele/zauberwald/npc/pixie.c b/doc/beispiele/zauberwald/npc/pixie.c
new file mode 100644
index 0000000..7ed953d
--- /dev/null
+++ b/doc/beispiele/zauberwald/npc/pixie.c
@@ -0,0 +1,150 @@
+// (c) by Padreic (Padreic@mg.mud.de)
+
+#include "../files.h"
+#include <moving.h>
+#include <combat.h>
+
+inherit NPC("stdnpc");
+
+void create()
+{
+   ::create();
+   SetProp(P_SHORT, "Ein kleiner Pixie");
+   SetProp(P_SIZE, 55+random(11));
+   SetProp(P_LONG, BS(
+     "Der Pixie ist etwa "+QueryProp(P_SIZE)+"cm gross und sieht vermutlich einem "
+    +"kleinen pumeligen Menschenkind am aehnlichsten. Wie alle Pixies scheint er "
+    +"sehr verspielt zu sein und nichts als Unfug im Kopf zu haben, Du solltest "
+    +"Dich also vor ihm ihn acht nehmen. Auch wenn er aussieht wie ein Kind, sich "
+    +"benimmt wie ein Kind, so kann er Dir mit seiner Magie sicher uebel zu spieln."));
+   SetProp(P_INFO, /* kleine Warnung fuer die Kaempfer :) */
+     "Man sollte sich immer vor der Magie der Pixies in acht nehmen, sie ist nicht\n"
+    +"unbedingt gefaehrlich, aber es koennen die unerwartesten Dinge geschehn. So\n"
+    +"ist durchaus von Leuten bekannt die einen Kampf als kleine Ratte beendeten,\n"
+    +"oder deren Schwert im Kampf ploetzlich zu Scheisse zerfloss...\n");
+   SetProp(P_NAME_ADJ, "klein");
+   SetProp(P_NAME, "Pixie");
+   SetProp(P_GENDER, MALE);
+   SetProp(P_RACE, "pixie");
+   SetProp(P_ATTRIBUTES, (["int":30,"con":20,"str":15,"dex":30]) );
+   SetProp(P_LEVEL, 20);
+   SetProp(P_MAX_HP, 600);
+   SetProp(P_HP, 600);
+   SetProp(P_MAX_SP, 800);
+   SetProp(P_SP, 800);
+   SetProp(P_ALIGN, 250);
+   SetProp(P_HANDS, ({" mit seinen kleinen Haenden", 150, DT_BLUDGEON}) );
+   SetProp(P_XP, 600*150*5);
+   AddAdjective("klein");
+   AddId("pixie");
+}
+
+// teleporter Ziele im Gebiet. Der Pixie will ja einfach nur ein bisschen
+// Aergern und nicht helfen (ein Pixiekampf ist kein Ausgang :)
+#define DEST ({"lichtungno", "lichtungso", "lichtungn", "lichtungs", \
+               "lichtungnw", "lichtungsw", "lichtungo", "lichtungw", \
+               "weg2", "stein"})
+
+void Attack(object enemy)
+{
+   object ob, weapon;
+   
+   ob=SelectEnemy();
+   if (ob) switch(random(7*8)) { // jede 8te Runde ein Zauberspruch...
+      case 0: // in Frosch verwandeln...
+        if (!ob->QueryProp(P_FROG)) {
+          tell_object(ob, "Der Pixie dreht Dir eine lange Nase und verwandelt Dich in einen Frosch.\n");
+          say(BS("Der Pixie dreht "+ob->name(WEM)+" eine lange Nase und verwandelt "
+                +ob->QueryPronoun(WEN)+" in einen Frosch,"), ob);
+          ob->SetProp(P_FROG, 1);
+          return;
+        }
+        break;
+      case 8..10: // einfach nur nerviger Teleport innerhalb des Gebiets :)
+        tell_object(ob,
+          "Der Pixie schliesst kurz seine Augen und eh Du Dich versiehst, verschwimmt\n"
+         +"alles um Dich herum...\n");
+        say(BS("Der Pixie schliesst kurz seine Augen und ploetzlich loest sich "
+              +ob->name(WER)+" in Luft auf."), ob);
+        ob->move(ROOM(DEST[random(sizeof(DEST))]), M_TPORT|M_NOCHECK|M_SILENT);
+        return;
+      case 16: // Geschlecht aendern... :)
+        tell_object(ob,
+          "Der Pixie grinst breit bis ueber beide Ohren und schaut Dich an, Du weisst\n"
+         +"gar nicht wie Dir geschieht, aber irgendetwas aendert sich an Deinem Koerper.\n");
+        say(BS("Der Pixie grinst "+ob->name(WEN)+" breit an. Ploetzlich "
+         +(ob->QueryProp(P_GENDER)==FEMALE
+         ? "verschwinden ihre Brueste und es waechst ihr ploetzlich ein Bart."
+         : "verschwindet sein Bart und ihm wachsen zwei neue Brueste.")), ob);
+        if (ob->QueryProp(P_GENDER)==FEMALE)
+          ob->SetProp(P_GENDER, MALE);
+        else ob->SetProp(P_GENDER, FEMALE);
+        return;
+      case 24:
+        if (objectp(weapon=ob->QueryProp(P_WEAPON))) {
+           weapon->DoUnwield(1);
+           // verfluchte Waffen nicht betreffen :))
+           if (!objectp(weapon->QueryProp(P_WIELDED))) {
+              string str1, str2;
+              str1=str2=(weapon)->name(WER);
+              if (str1[0..2]=="ein") {
+                str1="D"+str1;
+                str2="s"+str2;
+              }
+              tell_object(ob, BS(
+               "Der Pixie starrt Dir in die Augen und schnippst einmal kurz mit seinen "
+              +"Fingern. Ploetzlich zerrint "+str1+" in Deinen Haenden zu einem Haufen "
+              +"Scheisse."));
+              say(BS("Der Pixie starrt "+weapon->name(WEM)+" in die Augen und "
+                    +"schnippst einmal kurz mit den Fingern. Ploetzlich "
+                    +"zerrint "+weapon->name(WEM)+" "+str2
+                    +" in einen Haufen Scheisse."), ob);
+              weapon->remove();
+              if (weapon) destruct(weapon);
+              return;
+           }
+        }
+        break;
+      case 32:
+        if (!ob->QueryProp(P_BLIND)) {
+          tell_object(ob, BS(
+             "Der Pixie haelt sich die Hand vor die Augen und grinst breit. Ploetzlich "
+            +"merkst Du, wie alles ganz dunkel um Dich rum wird..."));
+          say(BS("Der Pixie haelt sich die Hand vor die Augen und grinst breit. "
+                +ob->name(WER)
+                +" schaut daraufhin ziemlich irritiert in die Gegend."), ob);
+          ob->SetProp(P_BLIND, 1);
+          return;
+        }
+        break;
+      case 40:
+        if (ob->QueryProp(P_POISON)<3 && ob->QueryProp(P_MAX_POISON)>=3) {
+          tell_object(ob, BS(
+             "Der Pixie streicht sich mit der Hand zufrieden ueber seinen Bauch und schaut "
+            +"Dich dabei an. Ploetzlich wird Dir richtig uebel..."));
+          say(BS("Der Pixie streicht sich mit seiner Hand zufrieden ueber seinen Bauch und\n"
+                +"schaut "+ob->name(WEM)+" dabei in die Augen. Ploetzlich wird "+ob->name(WEM)
+                +" ganz uebel."), ob);
+          ob->SetProp(P_POISON, 3);
+          return;
+        }
+        break;
+      case 48:
+        if (!ob->QueryProp(P_DEAF)) {
+          tell_object(ob, "Der Pixie haelt sich die Ohren zu und grinst breit.\n");
+          say(BS("Der Pixie haelt sich die Ohren zu und grinst dabei "
+                +ob->name(WEN)+" an."), ob);
+          ob->SetProp(P_DEAF, 1);
+          return;
+        }
+        break;
+      default:
+   }
+   if (enemy && present(enemy, environment())) ::Attack(enemy);
+}
+
+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/pixie\n");
+}