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
