Added Padreics moving NPC
diff --git a/p/service/padreic/mnpc/mnpc.doc b/p/service/padreic/mnpc/mnpc.doc
new file mode 100644
index 0000000..86a9fa4
--- /dev/null
+++ b/p/service/padreic/mnpc/mnpc.doc
@@ -0,0 +1,103 @@
+/*
+ * Der ultimative NPC : mnpc.c (C) by Sir Lunch a lot
+ * $Id: mnpc.c,v 1.1 1993/10/12 16:23:07 djc Exp djc $
+ */
+
+Dieser urspruengliche mnpc wurde von mir weiterentwickelt und stark
+optimiert. Er ist gedacht um relativ einfach, effiziente Laufnpcs zu
+programmieren und erspart einem dadurch das Rad erneut erfinden zu muessen.
+Der Urspruengliche mnpc.c von Sir liegt fuer interessierte weiterhin in
++d/unterwelt/std/mnpc.sir.
+
+Die Eigenschaften im Ueberblick:
+
+MNPC_AREA - In diesem Feld stehen die Raeume, in denen der NPC herumlaufen
+   kann, ({}) bedeutet, das der NPC ueberall hin kann (bitte nur mit
+   aeusserster Vorsicht und Absprache des RMs benutzen!!!).
+   Bsp.: SetProp(MNPC_AREA, ({ "/d/ebene/room/ak_str" }));
+     Dieser NPC kann ueber saemtliche Raeume der Akademiestrasse laufen, also
+     z.b. in einen Raum mit dem Filenamen /d/ebene/room/ak_str1
+     aber auch in alle Raeume in einem Verzeichnis /d/ebene/room/ak_str/*
+
+MNPC_HOME - der Startraum des NPCs in den er spaeter ggf. auch wieder
+   zurueckkehrt. Setzt man diese Property nicht, wird versucht, den Ort des
+   Clonens zu erraten/bestimmen, aber wenn man sicher gehen moechte, dass der
+   MNPC das Home hat, was man denkt, sollte man es explizit setzen.
+
+MNPC_DELAY und. MNPC_RANDOM
+  MNPC_DELAY + random(MNPC_RANDOM) ergibt den Abstand zwischen zwei
+  Bewegungen des NPCs.
+  ACHTUNG: 
+    1. Diese Werte muessen gesetzt werden, _bevor_ MNPC_FLAGS 
+    gesetzt werden, da die Set-Methode von MNPC_FLAGS die Anmeldung im
+    walk_master durchfuehrt. Sonst werden die Default-Werte benutzt!
+    2. Wenn diese Werte geaendert werden, sollte man die MNPC_FLAGS neu
+    setzen, um so die Neuanmeldung im walk_master auszuloesen.
+
+MNPC_WALK_TIME - Zeitangabe wie lange es dauert bis der NPC stehen bleibt
+   falls er keinen Spieler mehr trifft. Dieser Wert sollte etwa 3-10 mal so
+   gross sein, wie die durchschnittliche Laufgeschwindigkeit. Wenn der NPC
+   dann einen reset lang keinen Spieler mehr trifft, movt er wieder in
+   seinen Startraum und wartet dort auf neue Spieler.
+   Defaultmaessig 600 sek.
+
+MNPC_FLAGS - property mit einem oder mehreren gesetzten Flags
+  MNPC_WALK  -  ueber dieses Flag kann das laufen ein- bzw. ausgeschaltet
+     werden.
+
+  MNPC_FOLLOW_PLAYER  -  der NPC verfolgt die Spieler, die er trifft
+
+  MNPC_NO_WALK_IN_FIGHT  -  der NPC bleibt beim kaempfen und rennt nicht weg
+
+  MNPC_GO_HOME_WHEN_STOPPED  -  der NPC geht sofort nach Hause wenn seine
+     Zeit abgelaufen ist.
+
+  MNPC_ONLY_EXITS - der NPC benutzt beim laufen keine SpecialExits
+     Diese Funktion ist sehr wichtig, da durch SpecialExits auch Raeume
+     betreten werden koennen die nicht in MNPC_AREA erlaubt wurden! Hierauf
+     muss dann bereits bei der Gebietskonstruktion geachtet werden.
+
+  MNPC_EXACT_AREA_MATCH - Die in MNPC_AREA angebeben Filenamen werden exakt
+     geprueft, d.h. tempel1 matcht auch nur tempel1, aber nicht mehr tempel14.
+     Folge: in MNPC_AREA muessten nun _alle_ Raeume einzeln angegeben werden, die
+     betreten werden duerfen.
+
+  MNPC_NO_MOVE_HOME - Der MNPC geht im reset() nicht nach Hause, wenn er
+     laenger keinen Spielerkontakt hatte, sondern bleibt an dem Standort,
+     wo er stehen blieb.
+     Achtung: sollte dieser Raum entladen werden, wird der MNPC dort
+     zuerstoert. Der Heimatraum des MNPC sollte dafuer vorsorgen (s. AddItem).
+     Ebenso kann es passieren, dass der MNPC sehr sehr lange nicht mehr
+     loslaeuft, sollte sein Standort einsam liegen.
+
+/***************************************************************************/
+
+Nun noch ein Beispiel fuer einen Laufnpc im Glockenwald:
+
+  create()
+  {
+     ::create();
+     SetProp(MNPC_DELAY, 30);
+     SetProp(MNPC_RANDOM, 30);
+     SetProp(MNPC_FLAGS, MNPC_WALK|MNPC_FOLLOW_PLAYER|MNPC_NO_WALK_IN_FIGHT);
+     SetProp(MNPC_AREA, ({ "/d/wald/troy/glockenwald" }));
+     ...
+  }
+
+  // diese Funktion entscheidet darueber ob ein Raum betreten werden darf,
+  // oder nicht (hier wird also auch MNPC_AREA abgearbeitet). Ein
+  // Ueberschreiben dieser Funktion kann manchmal sinnvoll sein, um
+  // komplexere Bedingungen zu implementieren.
+  int PreventEnter(string file)
+  {
+    call_other(file, "???");
+    if (::PreventEnter(file) || present("elster", find_object(file)))
+      return 1;
+    return 0;
+  }
+ 
+Dieser NPC laeuft durch den Glockenwald und sobald er einen Spieler trifft,
+verfolgt er diesen, bis zum Rande des Glockenwaldes. Wenn ein Spieler ihn
+angreift, bleibt er automatisch stehen. Die Spieler sind nur in Raeumen
+sicher, in denen sich eine Elster befindet, denn diese Raeume betritt der
+NPC nicht.