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