Beispiele fuer PresentExits/SelectExit

Die Zielauswahl des MNPC kann ueber diese beiden
Funktionen beeinflusst bzw. ersetzt werden.

Change-Id: Idcc6193b45a8c1b2adcbb6a8b6d73e25db73b0ac
diff --git a/p/service/padreic/mnpc/mnpc.doc b/p/service/padreic/mnpc/mnpc.doc
index bd240ac..c25d4cf 100644
--- a/p/service/padreic/mnpc/mnpc.doc
+++ b/p/service/padreic/mnpc/mnpc.doc
@@ -94,7 +94,11 @@
 
 /***************************************************************************/
 
-Nun noch ein Beispiel fuer einen Laufnpc im Glockenwald:
+Beispiele
+=========
+
+1.
+Ein Beispiel fuer einen Laufnpc im Glockenwald:
 
   create()
   {
@@ -112,7 +116,7 @@
   // komplexere Bedingungen zu implementieren.
   int PreventEnter(string file)
   {
-    call_other(file, "???");
+    load_object(file);
     if (::PreventEnter(file) || present("elster", find_object(file)))
       return 1;
     return 0;
@@ -123,3 +127,42 @@
 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.
+
+
+2)
+Ein Beispiel fuer eine andere Zielfindung durch Ueberschreiben von
+PresentExits(). Diese Funktion sammelt verfuegbare Ausgaenge zusammen,
+normalerweise durch Abfrage von P_EXITS im Environment, wenn kein
+Mapping uebergeben wird.
+
+struct exit_s *PresentExits(mapping exits=0)
+{ // Einfach eine andere Prop mit der gleichen Datenstruktur wie P_EXITS
+  // verarbeiten lassen
+  return ::PresentExits(environment->QueryProp(MY_MNPC_DESTS));
+  // oder:
+  return ::PresentExits(environment->QueryProp(get_my_mnpc_destinations()));
+}
+
+3)
+Alternativ ein Beispiel fuer eine andere Zielfindung durch Ueberschreiben
+von SelectExit(). Diese Funktion prueft die von PresentExits() gelieferte
+Ausgangsliste auf Benutzbarkeit und waehlt normalerweise einen zufaelligen
+aus.
+
+struct exit_s SelectExit(struct exit_s *exitlist=0)
+{
+  return ::SelectExit(PresentExits(environment->QueryProp(MY_MNPC_DESTS)));
+}
+
+4)
+SelectExit() nutzen, um die Bewegungsrichtung zu aendern.
+
+struct exit_s SelectExit(struct exit_s *exitlist=0)
+{
+  struct exit_s ex = ::SelectExit(exitlist);
+  if (ex && ex.cmd="norden"
+      && object_name(environment())==KNEIPEN_PFAD)
+    ex.msg = "einen Saufen";
+  return ex;
+}
+