diff --git a/doc/lfun/move b/doc/lfun/move
index b323c34..bd9d924 100644
--- a/doc/lfun/move
+++ b/doc/lfun/move
@@ -1,212 +1,242 @@
+
+move()
+******
+
 move()
 
-FUNKTION: 
-     Fuer unbelebte Gegenstaende (/std/thing):
-       varargs int move(object|string dest, int method);
+FUNKTION:
+   Fuer unbelebte Gegenstaende (/std/thing):
+      varargs int move(object|string dest, int method);
 
-     Fuer Lebewesen (/std/living, /std/npc, usw.):
-       varargs int move(object|string dest, int method, string dir, 
-                        string textout, string textin);
+   Fuer Lebewesen (/std/living, /std/npc, usw.):
+      varargs int move(object|string dest, int method, string dir,
+         string textout, string textin);
 
-DEFINIERT IN:
-     /std/thing/moving.c
-     /std/living/moving.c
 
-ARGUMENTE:
-     dest
-          Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).
+DEFINIERT IN
+============
 
-     method
-          Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
-          koennen auch mehrere zusammenge-ODER-t werden).
+   /std/thing/moving.c
+   /std/living/moving.c
 
-     dir
-          Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
-          eingeschlagene Laufrichtung (zB. "nach Norden").
 
-     textout
-          Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
-          Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
-          noch an textout angehaengt. Der Name des Lebewesens wird der
-          Meldung in jedem Fall vorangestellt.
+ARGUMENTE
+=========
 
-     textin
-          Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
-          betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
-          wird noch der Name des Spielers vorangestellt.
+   dest
+        Das Zielobjekt (entweder der Dateiname oder das Objekt selbst).
 
-BESCHREIBUNG:
-     Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
-     Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
-     Bewegungsmethode method zu waehlen.
+   method
+        Die Art der Bewegung (eine der unten aufgefuehrten Arten; es
+        koennen auch mehrere zusammenge-ODER-t werden).
 
-     In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
-     definiert:
-     M_NOCHECK
-          Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
-          in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
-          Fall sein koennte).
+   dir
+        Die Richtung, in die ein Lebewesen geht. Normalerweise ist das die
+        eingeschlagene Laufrichtung (zB. "nach Norden").
 
-     M_GO
-          Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
-          Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
-          benutzen, wenn man Spieler ueber einen SpecialExit in einen
-          benachbarten Raum bewegt.
+   textout
+        Verlaesst ein Lebewesen einen Raum, so wird diese Meldung in den
+        Raum geschickt. Ist bei dir ein String angegeben, so wird dieser
+        noch an textout angehaengt. Der Name des Lebewesens wird der
+        Meldung in jedem Fall vorangestellt.
 
-     M_TPORT
-          Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
-          Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
-          mittels M_TPORT verlaesst oder betritt.
+   textin
+        Dieser Text wird im Zielraum ausgegeben, wenn ein Lebewesen ihn
+        betritt. Bei normaler Fortbewegung ist das "kommt an". Dem Text
+        wird noch der Name des Spielers vorangestellt.
 
-     M_NO_SHOW
-          Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
-          Zielraumes nicht ausgegeben.
 
-     M_NO_ATTACK
-          Beim Bewegen von Lebewesen bekommen diese keinen
-          Begruessungsschlag, wenn ein Feind im Zielraum steht.
+BESCHREIBUNG
+============
 
-     M_SILENT
-          Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
-          Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
+   Es wird versucht, das Objekt in das Zielobjekt dest zu bewegen.
+   Abhaengig vom momentanen Aufenthaltsort und dem Zielobjekt ist die
+   Bewegungsmethode method zu waehlen.
 
-     M_GET
-          Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
-          Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
-          bewegt.
+   In <moving.h> sind folgende Konstanten fuer die Art der Bewegung
+   definiert:
+   M_NOCHECK
+        Es werden keine Abfragen durchgefuehrt, ob das Objekt ueberhaupt
+        in das Zielobjekt hineinpasst (was zB. aus Gewichtsgruenden der
+        Fall sein koennte).
 
-     M_PUT
-          Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
-          bewegt.
+   M_GO
+        Ein Lebewesen bewegt sich gehend von einem Raum in den naechsten.
+        Bei normalem Gehen wird diese Methode benutzt; man sollte sie auch
+        benutzen, wenn man Spieler ueber einen SpecialExit in einen
+        benachbarten Raum bewegt.
 
-     M_GIVE
-          Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
-          weitergereicht.
+   M_TPORT
+        Ein Lebewesen wird von einem Raum in einen anderen teleportiert.
+        Im Gegensatz zu M_GO kann ein Raum verhindern, dass man ihn
+        mittels M_TPORT verlaesst oder betritt.
 
-     M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
-          Es wird die gesamte Menge bewegt, nicht nur ein Teil.
+   M_NO_SHOW
+        Beim Bewegen von Lebewesen bekommen diese die Beschreibung des
+        Zielraumes nicht ausgegeben.
 
-     Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
-     reicht es, als method M_NOCHECK zu uebergeben.
+   M_NO_ATTACK
+        Beim Bewegen von Lebewesen bekommen diese keinen
+        Begruessungsschlag, wenn ein Feind im Zielraum steht.
 
-     Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
-     beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
-     M_SILENT enthalten, so geschieht dies ohne Meldungen.
+   M_SILENT
+        Es werden beim Bewegen keine Meldungen ausgegeben. Dieser
+        Parameter wirkt sich nur auf das Bewegen von Lebenwesen aus.
 
-     Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
-     Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
-     laesst sich nur bei Lebewesen anwenden.
+   M_GET
+        Das Objekt wird von einem unbelebten Objekt (zB. einem Raum, einer
+        Leiche, einem Beutel) in ein lebendes Objekt (Spieler oder NPC)
+        bewegt.
 
-ANMERKUNG:
-     Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
-     greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
-     aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
-     anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
-     ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
-     genau macht. ;-)
-     
-     Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
-     von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
-     landet.
+   M_PUT
+        Das Objekt wird von einem lebenden Objekt in ein unbelebtes Objekt
+        bewegt.
 
-     Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
-     auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
-     innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
-     allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
+   M_GIVE
+        Das Objekt wird von einem Lebewesen an ein anderes Lebewesen
+        weitergereicht.
 
-     Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
-     oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
-     erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
+   M_MOVE_ALL (Nur fuer Objekte, die /std/unit.c erben)
+        Es wird die gesamte Menge bewegt, nicht nur ein Teil.
 
-RUeCKGABEWERT:
-     Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
-     definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
-     Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
-     Zukunft wird == MOVE_OK empfohlen.)
-     
-     MOVE_OK
-          Die Bewegung wurde erfolgreich abgeschlossen.
+   Soll das Objekt auf jeden Fall und ohne jede Abfrage bewegt werden, so
+   reicht es, als method M_NOCHECK zu uebergeben.
 
-     ME_PLAYER
-          Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
-          mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
-          angegeben werden.
+   Waffen und Ruestungen werden, soweit sie gezueckt bzw. angezogen sind,
+   beim Bewegen auf jeden Fall weggesteckt bzw. ausgezogen. Ist in method
+   M_SILENT enthalten, so geschieht dies ohne Meldungen.
 
-     ME_TOO_HEAVY
-          Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
-          aufnehmen.
+   Die erste Art des Funktionsaufrufs ist sowohl beim Bewegen von
+   Lebewesen als auch von unbelebten Objekten moeglich. Die zweite Art
+   laesst sich nur bei Lebewesen anwenden.
 
-     ME_CANT_TPORT_IN
-          Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
-          M_TPORT ohne M_NOCHECK).
 
-     ME_CANT_TPORT_OUT
-          Der Raum, in dem sich das Lebewesen befindet, verbietet das
-          Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
+ANMERKUNG
+=========
 
-     ME_CANT_BE_DROPPED
-          Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
-          gesetzt ist).
+   Diese Funktion sollte nicht (mehr) ueberschrieben werden. Stattdessen
+   greift bitte auf PreventMove() und NotifyMove() zurueck. RMs sind
+   aufgerufen, Objekt mit ueberschriebenen move() nur noch dann
+   anzuschliessen, wenn der Zweck sonst nicht erreicht werden kann. Solltet
+   ihr move() ueberschreiben: Seid euch sehr genau im klaren, was move()
+   genau macht. ;-)
 
-     ME_CANT_BE_TAKEN
-          Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
-          ist).
 
-     ME_CANT_BE_INSERTED
-          Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
 
-     ME_CANT_LEAVE_ENV
-          Der Container verhindert ein verlassen des Objektes
+   Wenn Livings bewegt werden, sorgt move() automatisch in Abhaengigkeit
+   von P_PARA dafuer, dass das Lebewesen in der korrekten (Parallel-)Welt
+   landet.
 
-     ME_TOO_HEAVY_FOR_ENV
-          Ein Objekt kann einen Behaelter nicht verlassen, da es dem 
-          Lebewesen sonst zu schwer wuerde.
+   Bei Gegenstaenden wird ebenfalls versucht, die richtige Zielwelt
+   auszuwaehlen (damit z.B. in der Parallelwelt geworfene Bumerangs auch nur
+   innerhalb der Parallelwelt fliegen). Um Rechenzeit zu sparen, wird das
+   allerdings nur versucht, wenn 'dest' ein Filename ist und kein Objekt.
 
-     TOO_MANY_OBJECTS
-          Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
+   Grund: bei Zielobjekten handelt es sich meist um Bewegungen in das Inv
+   oder Env eines Spielers - und die sind uninteressant. Raumwechsel dagegen
+   erfolgen fast immer unter Angabe eines Filenamens anstatt eines Objektes.
 
-     ME_NOT_ALLOWED
-          Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
-          Testspielern und Magiern betreten werden. Bei Spielern oder
-          Gildentesties gibt es diese Fehlermeldung.
-     ME_WAS_DESTRUCTED
-          Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
-          zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
-          beendet werden konnte. (Bsp: sensitive Objekte)
 
-     ME_DONT_WANT_TO_BE_MOVED
-          Das Objekt moechte nicht bewegt werden.
+RUeCKGABEWERT
+=============
 
-BEISPIELE:
-        o Ein Objekt "gibt sich" dem Spieler:
+   Alle Rueckgabewerte sind als symbolische Konstanten in <moving.h>
+   definiert. (MOVE_OK ist 1, alle anderen sind <0 und symbolisieren Fehler.
+   Traditionell erfolgt die Pruefung auf erfolgreiches Move mit == 1, in
+   Zukunft wird == MOVE_OK empfohlen.)
 
-          move(this_player(), M_GET);
 
-        o Ein Lebewesen wird in die Abenteurergilde teleportiert:
 
-          lv->move("/gilden/abenteurer", M_TPORT);
+   MOVE_OK
+        Die Bewegung wurde erfolgreich abgeschlossen.
 
-        o Ein Spieler "wird in die Gilde gegangen":
+   ME_PLAYER
+        Lebewesen lassen sich nicht ohne weiteres bewegen. Es muss
+        mindestens eine der Methoden M_NOCHECK, M_GO oder M_TPORT
+        angegeben werden.
 
-          this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
+   ME_TOO_HEAVY
+        Das Zielobjekt kann dieses Objekt aus Gewichtsgruenden nicht mehr
+        aufnehmen.
 
-          Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
-          Meldung:
-          "<name> geht in die Gilde."
+   ME_CANT_TPORT_IN
+        Das Zielobjekt verbietet das Teleportieren in sich hinein (nur bei
+        M_TPORT ohne M_NOCHECK).
 
-        o Ein Spieler schwimmt durchs Meer:
+   ME_CANT_TPORT_OUT
+        Der Raum, in dem sich das Lebewesen befindet, verbietet das
+        Teleportieren aus sich hinaus (nur bei M_TPORT ohne M_NOCHECK).
 
-          this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
-                              "schwimmt herein");
+   ME_CANT_BE_DROPPED
+        Das Objekt kann nicht fallen gelassen werden (zB. weil P_NODROP
+        gesetzt ist).
 
-          Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
-          Spieler in seinem Zielraum sehen "<name> schwimmt herein."
+   ME_CANT_BE_TAKEN
+        Das Objekt kann nicht genommen werden (zB. weil P_NOGET gesetzt
+        ist).
 
-SIEHE AUCH:
-     move_object(), remove(), setmin, setmmin, setmout, setmmout, review,
-     PreventInsert(), PreventLeave(), PreventInsertLiving(),
-     PreventLeaveLiving(), PreventMove(), NotifyInsert(), NotifyLeave(),
-     NotifyMove(), NotifyRemove(), init(), exit(),
-     P_NO_PLAYERS, P_PARA, /std/thing/moving.c, /std/living/moving.c
-     -----------------------------------------------------------------------
+   ME_CANT_BE_INSERTED
+        Das Zielobjekt verhindert das Einfuegen aus bestimmten Gruenden.
+
+   ME_CANT_LEAVE_ENV
+        Der Container verhindert ein verlassen des Objektes
+
+   ME_TOO_HEAVY_FOR_ENV
+        Ein Objekt kann einen Behaelter nicht verlassen, da es dem
+        Lebewesen sonst zu schwer wuerde.
+
+   TOO_MANY_OBJECTS
+        Das Zielobjekt kann soviele Objekte nicht mehr aufnehmen.
+
+   ME_NOT_ALLOWED
+        Raeume mit gesetzter Property P_NO_PLAYERS koennen nur von
+        Testspielern und Magiern betreten werden. Bei Spielern oder
+        Gildentesties gibt es diese Fehlermeldung.
+   ME_WAS_DESTRUCTED
+        Das Objekt hat sich entweder im Verlaufe der Bewegung selbst
+        zerstoert oder wurde zerstoert, sodass move() nicht erfolgreich
+        beendet werden konnte. (Bsp: sensitive Objekte)
+
+   ME_DONT_WANT_TO_BE_MOVED
+        Das Objekt moechte nicht bewegt werden.
+
+
+BEISPIELE
+=========
+
+   o Ein Objekt "gibt sich" dem Spieler:
+
+     move(this_player(), M_GET);
+
+   o Ein Lebewesen wird in die Abenteurergilde teleportiert:
+
+     lv->move("/gilden/abenteurer", M_TPORT);
+
+   o Ein Spieler "wird in die Gilde gegangen":
+
+     this_player()->move("/gilden/abenteurer", M_GO, "in die Gilde");
+
+     Spieler, die mit ihm im gleichen Raum stehen, sehen folgende
+     Meldung:
+     "<name> geht in die Gilde."
+
+   o Ein Spieler schwimmt durchs Meer:
+
+     this_player()->move("meer_xy", M_GO, "nach Norden", "schwimmt",
+                         "schwimmt herein");
+
+     Spieler in seinem Startraum sehen "<name> schwimmt nach Norden.",
+     Spieler in seinem Zielraum sehen "<name> schwimmt herein."
+
+
+SIEHE AUCH
+==========
+
+   move_object(), remove(), setmin, setmmin, setmout, setmmout, review,
+   PreventInsert(), PreventLeave(), PreventInsertLiving(),
+   PreventLeaveLiving(), PreventMove(), NotifyInsert(), NotifyLeave(),
+   NotifyMove(), NotifyRemove(), init(), exit(),
+   P_NO_PLAYERS, P_PARA, /std/thing/moving.c, /std/living/moving.c
+   -----------------------------------------------------------------------
+
 2015-Jan-19, Arathorn
