diff --git a/doc/lfun/InFight b/doc/lfun/InFight
index 73fef03..df311ce 100644
--- a/doc/lfun/InFight
+++ b/doc/lfun/InFight
@@ -6,7 +6,7 @@
 FUNKTION
 ========
 
-   mixed InFight()
+   object InFight()
 
 
 ARGUMENTE
@@ -24,11 +24,14 @@
    Funktion environment gefiltert und so festgestellt, ob
    die Umgebung der beiden Feinde gleich ist.
 
-RUECKGABEWERT:
-   Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt im
-   Moment keine Feinde hat bzw. die nicht im selben Raum sind, oder
-   aber das Feindobjekt, das als erstes im Array steht und anwesend
-   ist.
+
+RUECKGABEWERT
+=============
+
+   Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt
+   im Moment keine Feinde hat bzw. die nicht im selben Raum
+   sind, oder aber das Feindobjekt, das als erstes im Array
+   steht und anwesend ist.
 
 
 BEISPIEL
diff --git a/doc/lfun/NewDoor b/doc/lfun/NewDoor
index c534be5..6048d53 100644
--- a/doc/lfun/NewDoor
+++ b/doc/lfun/NewDoor
@@ -72,8 +72,6 @@
         ([ D_STATUS_CLOSED : "Die Tuer ist geschlossen.\n",
            D_STATUS_OPEN   : "Die Tuer ist offen.\n" ])
 
-
-
         Default: "Eine Tuer.\n"
 
    D_SHORT
@@ -191,12 +189,15 @@
    ** Tueren mit Bewegungsmeldung:
 
       NewDoor("norden","/room/see2",
+              ({"gitter","eisengitter"}),
               ({ D_MSGS,  ({"nach Norden","schwimmt",
-                            "kommt hereingeschwommen"}) }) );
+                            "schwimmt von Sueden herein"}),
+                 D_GENDER, NEUTER}) );
 
    ** Eine Tuer mit Testfunktion:
 
       NewDoor("osten","/mein/zielraum",
+              ({"tuer"}),
               ({ D_TESTFUNC, "blocker_da" }) );
 
       Die Funktion blocker_da:
@@ -204,11 +205,12 @@
       int blocker_da()      // KEINE protected-Funktion! Sie wird sonst NICHT
       {                     // aufgerufen und ausgewertet!
         if ( present("mein_fieses_mo\nster",this_object()) )
-         {
-          write("Ein fieses Monster stellt sich Dir in den Weg.\n");
+        {
+          tell_object(this_player(),
+              "Ein fieses Monster stellt sich Dir in den Weg.\n");
           return 1;
-         }
-        return 0;           // optional
+        }
+        return 0;
       }
 
    ** Nun noch eine Tuer mit einigen Extras:
@@ -216,30 +218,30 @@
       NewDoor("nordwesten","/rooms/kammer",
               ({"tuer","holztuer"}),
               ({
-                D_FLAGS,  (DOOR_CLOSED|DOOR_RESET_CL),
-                D_MSGS,   ({"nach Nordwesten","geht",
-                          "kommt durch eine Tuer herein"}),
-                D_SHORT,  "Im Nordwesten siehst Du eine %se Holztuer.",
-                D_LONG,   "Sie trennt den Laden vom dahinterliegenden Raum.\n",
-                D_NAME,   "Holztuer",
-                D_FUNC,   "view",
-                D_FUNC2,  "look_up"
+                D_FLAGS, (DOOR_CLOSED|DOOR_RESET_CL),
+                D_MSGS,  ({"nach Nordwesten","geht",
+                         "kommt durch eine Tuer herein"}),
+                D_SHORT, "Im Nordwesten siehst Du eine %se Holztuer.",
+                D_LONG,  "Sie trennt den Laden vom dahinterliegenden Raum.\n",
+                D_NAME,  "Holztuer",
+                D_FUNC,  "view",
+                D_FUNC2, "look_up"
               }) );
 
       Im Startraum:
 
       void view()
       {
-        write("Der Angestellte wirft Dir einen missbilligenden Blick zu, "
-              "laesst Dich aber passieren.\n");
+        tell_object(this_player(), break_string("Der Angestellte wirft Dir "
+          "einen missbilligenden Blick zu, laesst Dich aber passieren.",78));
       }
 
       Im Zielraum:
 
       void look_up()
       {
-        write("Ein alter Mann schaut kurz zu Dir auf und vertieft sich dann "
-              "wieder in seine Akten.\n");
+        tell_object(this_player(), break_string("Ein alter Mann schaut kurz "
+          "zu Dir auf und vertieft sich dann wieder in seine Akten.",78));
       }
 
 
diff --git a/doc/lfun/move b/doc/lfun/move
index e2bc712..53593f8 100644
--- a/doc/lfun/move
+++ b/doc/lfun/move
@@ -82,6 +82,8 @@
    M_SILENT
         Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
         Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
+        (Magier mit 'mschau an' sehen die Bewegungen dennoch, es wird
+         eine Standardmeldung ausgegeben.)
 
    M_GET
         Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
diff --git a/doc/props/P_PRE_INFO b/doc/props/P_PRE_INFO
index 099e592..12bec6a 100644
--- a/doc/props/P_PRE_INFO
+++ b/doc/props/P_PRE_INFO
@@ -21,11 +21,9 @@
    Ist die Property in einem NPC definiert, so wird ihr Ergebnis
    ausgewertet, bevor eine Frage an das Infosystem uebergeben wird.
 
-
-
    Moegliche Werte:
-   - numerischer Wert ungleich 0
-     => der NPC gibt _keinerlei_ Antwort, die Frage fuehrt sozusagen
+   - numerischer Wert > 0
+     => der NPC gibt keinerlei Antwort, die Frage fuehrt sozusagen
         ins Leere
 
    - Stringwert
@@ -35,10 +33,10 @@
        Der Fragende selbst bekommt bei angegebenem Stringwert:
        "XY " + Stringwert.
 
-   - Closure
-     => die Antwort bzw. Reaktion des NPCs obliegt ganz der
-        angegebenen Closure. Diese muss dabei einen String oder
-        Ganzzahlen-Wert zurueckgeben
+   - Wenn eine als Querymethode gesetzte Closure einen String oder
+     einen Integer > 0 zurueckgibt, sind die  Auswirkungen identisch
+     zu den beiden oben beschriebenen Faellen. Siehe auch Beispiel
+     unten.
 
 
 BEISPIEL
@@ -49,22 +47,14 @@
 
      SetProp(P_CHAT_CHANCE,0); // NPC latscht los
 
-
-
    Und eine Weile spaeter:
 
-
-
      SetProp(P_CHAT_CHANCE,5); // NPC ruht wieder, quasselt rum
 
-
-
    Waehrend des Herumlaufens, also wenn er nicht automatisch schwatzt,
    soll er auch keinerlei Fragen beantworten:
 
-
-
-     Set(P_PRE_INFO, function mixed () {
+     Set(P_PRE_INFO, function string () {
        return (QueryProp(P_CHAT_CHANCE) ? 0 :
          "hat gerade keine Zeit fuer Dich.");
        }, F_QUERY_METHOD);
@@ -83,4 +73,4 @@
 
    AddInfo(), /std/npc/info.c
 
-Last modified: 01.03.2016 by Arathorn
+Last modified: 2019-Okt-16 by Arathorn
diff --git a/doc/sphinx/lfun/InFight.rst b/doc/sphinx/lfun/InFight.rst
index e8020fa..734e9c3 100644
--- a/doc/sphinx/lfun/InFight.rst
+++ b/doc/sphinx/lfun/InFight.rst
@@ -5,7 +5,7 @@
 --------
 ::
 
-        mixed InFight()
+        object InFight()
 
 ARGUMENTE
 ---------
@@ -23,7 +23,10 @@
         Funktion environment gefiltert und so festgestellt, ob
         die Umgebung der beiden Feinde gleich ist.
 
-RUECKGABEWERT: 
+RUECKGABEWERT
+-------------
+::
+
         Als Rueckgabewert enthaelt man entweder 0, wenn das Objekt
         im Moment keine Feinde hat bzw. die nicht im selben Raum
         sind, oder aber das Feindobjekt, das als erstes im Array
diff --git a/doc/sphinx/lfun/NewDoor.rst b/doc/sphinx/lfun/NewDoor.rst
index 22cc177..c13e3f8 100644
--- a/doc/sphinx/lfun/NewDoor.rst
+++ b/doc/sphinx/lfun/NewDoor.rst
@@ -71,8 +71,6 @@
           ([ D_STATUS_CLOSED : "Die Tuer ist geschlossen.\n",
              D_STATUS_OPEN   : "Die Tuer ist offen.\n" ])
 
-          
-
           Default: "Eine Tuer.\n"
 
      D_SHORT
@@ -192,12 +190,15 @@
   ** Tueren mit Bewegungsmeldung:
 
      NewDoor("norden","/room/see2",
+             ({"gitter","eisengitter"}),
              ({ D_MSGS,  ({"nach Norden","schwimmt",
-                           "kommt hereingeschwommen"}) }) );
+                           "schwimmt von Sueden herein"}),
+                D_GENDER, NEUTER}) );
 
   ** Eine Tuer mit Testfunktion:
 
      NewDoor("osten","/mein/zielraum",
+             ({"tuer"}),
              ({ D_TESTFUNC, "blocker_da" }) );
 
      Die Funktion blocker_da:
@@ -205,11 +206,12 @@
      int blocker_da()      // KEINE protected-Funktion! Sie wird sonst NICHT
      {                     // aufgerufen und ausgewertet!
        if ( present("mein_fieses_mo\nster",this_object()) )
-        {
-         write("Ein fieses Monster stellt sich Dir in den Weg.\n");
+       {
+         tell_object(this_player(),
+             "Ein fieses Monster stellt sich Dir in den Weg.\n");
          return 1;
-        }
-       return 0;           // optional
+       }
+       return 0;
      }
 
   ** Nun noch eine Tuer mit einigen Extras:
@@ -217,30 +219,30 @@
      NewDoor("nordwesten","/rooms/kammer",
              ({"tuer","holztuer"}),
              ({
-               D_FLAGS,  (DOOR_CLOSED|DOOR_RESET_CL),
-               D_MSGS,   ({"nach Nordwesten","geht",
-                         "kommt durch eine Tuer herein"}),
-               D_SHORT,  "Im Nordwesten siehst Du eine %se Holztuer.",
-               D_LONG,   "Sie trennt den Laden vom dahinterliegenden Raum.\n",
-               D_NAME,   "Holztuer",
-               D_FUNC,   "view",
-               D_FUNC2,  "look_up"
+               D_FLAGS, (DOOR_CLOSED|DOOR_RESET_CL),
+               D_MSGS,  ({"nach Nordwesten","geht",
+                        "kommt durch eine Tuer herein"}),
+               D_SHORT, "Im Nordwesten siehst Du eine %se Holztuer.",
+               D_LONG,  "Sie trennt den Laden vom dahinterliegenden Raum.\n",
+               D_NAME,  "Holztuer",
+               D_FUNC,  "view",
+               D_FUNC2, "look_up"
              }) );
 
      Im Startraum:
 
      void view()
      {
-       write("Der Angestellte wirft Dir einen missbilligenden Blick zu, "
-             "laesst Dich aber passieren.\n");
+       tell_object(this_player(), break_string("Der Angestellte wirft Dir "
+         "einen missbilligenden Blick zu, laesst Dich aber passieren.",78));
      }
 
      Im Zielraum:
 
      void look_up()
      {
-       write("Ein alter Mann schaut kurz zu Dir auf und vertieft sich dann "
-             "wieder in seine Akten.\n");
+       tell_object(this_player(), break_string("Ein alter Mann schaut kurz "
+         "zu Dir auf und vertieft sich dann wieder in seine Akten.",78));
      }
 
 SIEHE AUCH
diff --git a/doc/sphinx/lfun/move.rst b/doc/sphinx/lfun/move.rst
index d8f6aa9..bf29137 100644
--- a/doc/sphinx/lfun/move.rst
+++ b/doc/sphinx/lfun/move.rst
@@ -81,6 +81,8 @@
      M_SILENT
           Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
           Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
+          (Magier mit 'mschau an' sehen die Bewegungen dennoch, es wird
+           eine Standardmeldung ausgegeben.)
 
      M_GET
           Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
diff --git a/doc/sphinx/props/P_PRE_INFO.rst b/doc/sphinx/props/P_PRE_INFO.rst
index 9efed27..703d397 100644
--- a/doc/sphinx/props/P_PRE_INFO.rst
+++ b/doc/sphinx/props/P_PRE_INFO.rst
@@ -20,11 +20,9 @@
         Ist die Property in einem NPC definiert, so wird ihr Ergebnis
         ausgewertet, bevor eine Frage an das Infosystem uebergeben wird.
 
-        
-
         Moegliche Werte:
-        - numerischer Wert ungleich 0
-          => der NPC gibt _keinerlei_ Antwort, die Frage fuehrt sozusagen
+        - numerischer Wert > 0
+          => der NPC gibt keinerlei Antwort, die Frage fuehrt sozusagen
              ins Leere
 
         - Stringwert
@@ -34,10 +32,11 @@
             Der Fragende selbst bekommt bei angegebenem Stringwert:
             "XY " + Stringwert.
 
-        - Closure
-          => die Antwort bzw. Reaktion des NPCs obliegt ganz der 
-             angegebenen Closure. Diese muss dabei einen String oder 
-             Ganzzahlen-Wert zurueckgeben
+        - Wenn eine als Querymethode gesetzte Closure einen String oder
+          einen Integer > 0 zurueckgibt, sind die  Auswirkungen identisch
+          zu den beiden oben beschriebenen Faellen. Siehe auch Beispiel
+          unten.
+
 
 BEISPIEL
 --------
@@ -48,22 +47,14 @@
 
           SetProp(P_CHAT_CHANCE,0); // NPC latscht los
 
-        
-
         Und eine Weile spaeter:
 
-        
-
           SetProp(P_CHAT_CHANCE,5); // NPC ruht wieder, quasselt rum
 
-        
-
         Waehrend des Herumlaufens, also wenn er nicht automatisch schwatzt,
         soll er auch keinerlei Fragen beantworten:
 
-          
-
-          Set(P_PRE_INFO, function mixed () {
+          Set(P_PRE_INFO, function string () {
             return (QueryProp(P_CHAT_CHANCE) ? 0 : 
               "hat gerade keine Zeit fuer Dich."); 
             }, F_QUERY_METHOD);
@@ -83,5 +74,5 @@
         AddInfo(), /std/npc/info.c
 
 
-Last modified: 01.03.2016 by Arathorn
+Last modified: 2019-Okt-16 by Arathorn
 
