diff --git a/doc/sefun/CountUp b/doc/sefun/CountUp
index 5515780..9e55d69 100644
--- a/doc/sefun/CountUp
+++ b/doc/sefun/CountUp
@@ -1,25 +1,40 @@
-FUNKTION:
-	public varargs string CountUp( string *s, string sep, string lastsep );
 
-ARGUMENTE:
-	*s
-	  Array von Strings mit Woertern.
-  sep
-    String, der zwischen den Woerten in der Aufzaehlung eingefuegt wird.
-    Standard: ", "
-  lastsep
-    String, der zwischen dem vorletzten und letzten Element eingefuegt wird.
-    Standard: " und "
+CountUp()
+*********
 
-BESCHREIBUNG:
-	Die Woerter Wort_1 bis Wort_n aus dem Stringaray werden als
-	Aufzaehlung in der Form
-	  Wort_1<sep>Wort_2, ... Wort_n-1<lastsep>Wort_n
-	zusammengesetzt. Mit Standardwerten also:
-	  Wort_1, Wort_2, ... Wort_n-1 und Wort_n
 
-RUeCKGABEWERT:
-	String als Aufzaehlung der einzelnen Woerter.
+FUNKTION
+========
 
-----------------------------------------------------------------------------
+   public varargs string CountUp( string *s, string sep, string lastsep );
+
+
+ARGUMENTE
+=========
+
+         *s
+           Array von Strings mit Woertern.
+   sep
+     String, der zwischen den Woerten in der Aufzaehlung eingefuegt wird.
+     Standard: ", "
+   lastsep
+     String, der zwischen dem vorletzten und letzten Element eingefuegt wird.
+     Standard: " und "
+
+
+BESCHREIBUNG
+============
+
+   Die Woerter Wort_1 bis Wort_n aus dem Stringaray werden als
+   Aufzaehlung in der Form
+     Wort_1<sep>Wort_2, ... Wort_n-1<lastsep>Wort_n
+   zusammengesetzt. Mit Standardwerten also:
+     Wort_1, Wort_2, ... Wort_n-1 und Wort_n
+
+
+RUeCKGABEWERT
+=============
+
+   String als Aufzaehlung der einzelnen Woerter.
+
 15.03.2008, Zesstra
diff --git a/doc/sefun/_notify_fail b/doc/sefun/_notify_fail
index 84aa4de..a9801ef 100644
--- a/doc/sefun/_notify_fail
+++ b/doc/sefun/_notify_fail
@@ -1,18 +1,35 @@
+
+_notify_fail()
+**************
+
 simul_efun::_notify_fail(E)
-FUNKTION:
-     void _notify_fail(string str)
 
-ARGUMENTE:
-     str
-	umgebrochener Fehlermeldungsstring
 
-BESCHREIBUNG:
-     Identisches Verhalten zu notify_fail(E), bis darauf, dass bei bereits
-     gesetzter Fehlermeldung _keine_ neue Fehlermeldung gesetzt wird.
+FUNKTION
+========
 
-SIEHE AUCH:
-     notify_fail(E), P_ACTUAL_NOTIFY_FAIL
-     add_action(E), AddCmd(L), AddAction(L),
-     query_verb(E)
+   void _notify_fail(string str)
+
+
+ARGUMENTE
+=========
+
+   str
+      umgebrochener Fehlermeldungsstring
+
+
+BESCHREIBUNG
+============
+
+   Identisches Verhalten zu notify_fail(E), bis darauf, dass bei bereits
+   gesetzter Fehlermeldung _keine_ neue Fehlermeldung gesetzt wird.
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), P_ACTUAL_NOTIFY_FAIL
+   add_action(E), AddCmd(L), AddAction(L),
+   query_verb(E)
 
 24 Maerz 2004 Gloinson
diff --git a/doc/sefun/break_string b/doc/sefun/break_string
index 52d4d7b..8e3017d 100644
--- a/doc/sefun/break_string
+++ b/doc/sefun/break_string
@@ -1,90 +1,112 @@
-FUNKTION:
-    string break_string(string str)
-    string break_string(string str, int width)
-    string break_string(string str, int width, string indent)
-    string break_string(string str, int width, int space)
-    string break_string(string str, int width, string indent, int flags)
-    string break_string(string str, int width, int space, int flags)
 
-ARGUMENTE:
-    str    - umzubrechender String
-    width  - optional: maximale Zeilenlaenge (default 78)
-    indent - optional: String, der vor jeder umgebrochenen Zeile erscheint
-    space  - optional: Anzahl der Leerzeichen vor jeder umgebrochenen Zeile
-    flags  - optional: hiermit laesst sich das Verhalten von break_string()
-             aendern; moegliche Flags siehe Punkt 'Beschreibung'
+break_string()
+**************
 
-BESCHREIBUNG:
-    In der ersten Form wird der String 'str' durch Einfuegen von "\n" so um-
-    gebrochen, dass bei einer anschliessenden Ausgabe keine Zeile laenger
-    als 'width' Zeichen ist. Eventuell schon in 'str' vorhandene "\n" werden
-    dabei vorher entfernt.
 
-    Gibt man zusaetzlich noch einen String 'indent' an, so wird dieser vor
-    jede der umgebrochenen Zeilen gesetzt.
+FUNKTION
+========
 
-    Analog wird bei der Angabe der Zahl 'space' ein String mit 'space' Leer-
-    zeichen vor jede umgebrochene Zeile gesetzt.
+   string break_string(string str)
+   string break_string(string str, int width)
+   string break_string(string str, int width, string indent)
+   string break_string(string str, int width, int space)
+   string break_string(string str, int width, string indent, int flags)
+   string break_string(string str, int width, int space, int flags)
 
-    Zusaetzlich gibt es folgende optionale Flags, die man beliebig kombinieren
-    kann:
 
-        BS_LEAVE_MY_LFS  -  schon im Text vorhandene "\n" werden beibehalten
-        BS_SINGLE_SPACE  -  doppelte Leerzeichen sowie Leerzeichen nach Zeilen-
-                            umbruechen werden entfernt
-        BS_BLOCK         -  der Text wird im Blocksatz formatiert
-        BS_NO_PARINDENT  -  bei Blocksatz mit vorgegebenen Zeilenumbruechen
-                            (BS_BLOCK|BS_LEAVE_MY_LFS) werden Zeilen nach "\n"
-                            normalerweise mit einem Leerzeichen begonnen.
-                            Um das Einfuegen des fuehrenden Leerzeichens zu
-                            unterdruecken, muss BS_NO_PARINDENT angegeben werden
-        BS_INDENT_ONCE   -  die erste Zeile des Textes wird mit vorangestelltem
-                            'indent' ausgegeben; alle folgenden Zeilen bekommen
-                            einen Leerstring vorangestellt
-        BS_PREPEND_INDENT - der Ident wird dem Text vorangestellt sofern der 
-                            Indent + Text laenger als eine Zeile ist. Der Text
-			    wird um ein Leerzeichen eingerueckt, was mittels
-                            BS_NO_PARINDENT verhindert werden kann.
+ARGUMENTE
+=========
 
-RUECKGABEWERT:
-    Der umgebrochene Text.
+   str    - umzubrechender String
+   width  - optional: maximale Zeilenlaenge (default 78)
+   indent - optional: String, der vor jeder umgebrochenen Zeile erscheint
+   space  - optional: Anzahl der Leerzeichen vor jeder umgebrochenen Zeile
+   flags  - optional: hiermit laesst sich das Verhalten von break_string()
+            aendern; moegliche Flags siehe Punkt 'Beschreibung'
 
-    Laufzeit-Fehler, wenn der Indent laenger ist als die vorgegebene Breite.
 
-BEISPIELE:
-    write(break_string("Dies ist ein laengerer Text. Nur so als Beispiel.",27));
+BESCHREIBUNG
+============
 
-        => Dies ist ein laengerer
-           Text. Nur so als Beispiel.
+   In der ersten Form wird der String 'str' durch Einfuegen von "\n" so um-
+   gebrochen, dass bei einer anschliessenden Ausgabe keine Zeile laenger
+   als 'width' Zeichen ist. Eventuell schon in 'str' vorhandene "\n" werden
+   dabei vorher entfernt.
 
-    write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: "));
+   Gibt man zusaetzlich noch einen String 'indent' an, so wird dieser vor
+   jede der umgebrochenen Zeilen gesetzt.
 
-        => Wargon sagt: Mit indent sieht
-           Wargon sagt: das so aus
+   Analog wird bei der Angabe der Zahl 'space' ein String mit 'space' Leer-
+   zeichen vor jede umgebrochene Zeile gesetzt.
 
-    write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: ",
-                        BS_INDENT_ONCE));
+   Zusaetzlich gibt es folgende optionale Flags, die man beliebig kombinieren
+   kann:
 
-        => Wargon sagt: Mit indent sieht
-                        das so aus
+       BS_LEAVE_MY_LFS  -  schon im Text vorhandene "\n" werden beibehalten
+       BS_SINGLE_SPACE  -  doppelte Leerzeichen sowie Leerzeichen nach Zeilen-
+                           umbruechen werden entfernt
+       BS_BLOCK         -  der Text wird im Blocksatz formatiert
+       BS_NO_PARINDENT  -  bei Blocksatz mit vorgegebenen Zeilenumbruechen
+                           (BS_BLOCK|BS_LEAVE_MY_LFS) werden Zeilen nach "\n"
+                           normalerweise mit einem Leerzeichen begonnen.
+                           Um das Einfuegen des fuehrenden Leerzeichens zu
+                           unterdruecken, muss BS_NO_PARINDENT angegeben werden
+       BS_INDENT_ONCE   -  die erste Zeile des Textes wird mit vorangestelltem
+                           'indent' ausgegeben; alle folgenden Zeilen bekommen
+                           einen Leerstring vorangestellt
+       BS_PREPEND_INDENT - der Ident wird dem Text vorangestellt sofern der
+                           Indent + Text laenger als eine Zeile ist. Der Text
+                           wird um ein Leerzeichen eingerueckt, was mittels
+                           BS_NO_PARINDENT verhindert werden kann.
 
-    write(break_string("Mit Leerzeichen sieht das so aus", 30, 2));
 
-        =>   Mit Leerzeichen sieht das so
-             aus...
+RUECKGABEWERT
+=============
 
-    write(break_string("Ich will es\naber vorformatiert!",60,
-                        "Wargon sagt: ", BS_LEAVE_MY_LFS));
+   Der umgebrochene Text.
 
-        => Wargon sagt: Ich will es
-           Wargon sagt: aber vorformatiert!
+   Laufzeit-Fehler, wenn der Indent laenger ist als die vorgegebene Breite.
 
-    write(break_string("Ich will es\naber vorformatiert!",30,
-                        "Wargon sagt: ", BS_PREPEND_INDENT));
 
-        => Wargon sagt:
-            Ich will es aber 
-            vorformatiert!
+BEISPIELE
+=========
 
-SIEHE AUCH:
-    senderwiederholung
+   write(break_string("Dies ist ein laengerer Text. Nur so als Beispiel.",27));
+
+       => Dies ist ein laengerer
+          Text. Nur so als Beispiel.
+
+   write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: "));
+
+       => Wargon sagt: Mit indent sieht
+          Wargon sagt: das so aus
+
+   write(break_string("Mit indent sieht das so aus", 30, "Wargon sagt: ",
+                       BS_INDENT_ONCE));
+
+       => Wargon sagt: Mit indent sieht
+                       das so aus
+
+   write(break_string("Mit Leerzeichen sieht das so aus", 30, 2));
+
+       =>   Mit Leerzeichen sieht das so
+            aus...
+
+   write(break_string("Ich will es\naber vorformatiert!",60,
+                       "Wargon sagt: ", BS_LEAVE_MY_LFS));
+
+       => Wargon sagt: Ich will es
+          Wargon sagt: aber vorformatiert!
+
+   write(break_string("Ich will es\naber vorformatiert!",30,
+                       "Wargon sagt: ", BS_PREPEND_INDENT));
+
+       => Wargon sagt:
+           Ich will es aber
+           vorformatiert!
+
+
+SIEHE AUCH
+==========
+
+   senderwiederholung
diff --git a/doc/sefun/broken_count_bits b/doc/sefun/broken_count_bits
index 09e56b8..de01e96 100644
--- a/doc/sefun/broken_count_bits
+++ b/doc/sefun/broken_count_bits
@@ -1,29 +1,48 @@
+
+broken_count_bits()
+*******************
+
+
 SYNOPSIS
-        int count_bits (string str)
+========
+
+   int count_bits (string str)
+
 
 DESTRIPTION
-        Count the number of set bits in bitstring <str> and return the number
-        as result.
+===========
+
+   Count the number of set bits in bitstring <str> and return the number
+   as result.
+
 
 NOTE
-	Bitstrings store 6 Bits per Character. Consequently, the functions for
-	manipulating bitstrings (see below) do generally not work on most
-	strings. An exception is this (s)efun. It accepts strings which are
-	not correct bitstrings (like getuid(PL)), BUT: It does NOT work
-	correctly on them! The results are NOT the correct number of bits!
-	Additionally, count_bits() in LDMud rejects such strings with an error
-	instead of returning false results, as all the other functions for
-	bitstrings do as well.
+====
+
+   Bitstrings store 6 Bits per Character. Consequently, the functions for
+   manipulating bitstrings (see below) do generally not work on most
+   strings. An exception is this (s)efun. It accepts strings which are
+   not correct bitstrings (like getuid(PL)), BUT: It does NOT work
+   correctly on them! The results are NOT the correct number of bits!
+   Additionally, count_bits() in LDMud rejects such strings with an error
+   instead of returning false results, as all the other functions for
+   bitstrings do as well.
+
 
 EXAMPLES
-        string s;
+========
 
-        s = set_bit("", 3); s = set_bit(s, 15);
+   string s;
 
-        count_bits(s) --> returns 2
+   s = set_bit("", 3); s = set_bit(s, 15);
+
+   count_bits(s) --> returns 2
+
 
 SEE ALSO
-        clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
-        or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E)
+========
+
+   clear_bit(E), set_bit(E), test_bit(E), next_bit(E), last_bit(E),
+   or_bits(E), xor_bits(E), invert_bits(E), copy_bits(E)
 
 19.12.2006, Zesstra
diff --git a/doc/sefun/cindent b/doc/sefun/cindent
index 72119b3..e0e16af 100644
--- a/doc/sefun/cindent
+++ b/doc/sefun/cindent
@@ -1,9 +1,22 @@
-SYNOPSIS:
-        int cindent(string file)
 
-DESCRIPTION:
-        Indent a file using an LPC-enhanced version of the GNU indent
-	program, which is modelled after the Berkeley indent(1).
+cindent()
+*********
 
-SEE ALSO:
-	ed(E)
+
+SYNOPSIS
+========
+
+   int cindent(string file)
+
+
+DESCRIPTION
+===========
+
+   Indent a file using an LPC-enhanced version of the GNU indent
+   program, which is modelled after the Berkeley indent(1).
+
+
+SEE ALSO
+========
+
+   ed(E)
diff --git a/doc/sefun/debug_info b/doc/sefun/debug_info
index 18747b0..02e02b8 100644
--- a/doc/sefun/debug_info
+++ b/doc/sefun/debug_info
@@ -1,490 +1,508 @@
-DEPRECATED
-SYNOPSIS
-        #include <debug_info.h>
 
-        mixed debug_info(int flag)
-        mixed debug_info(int flag, mixed arg)
-        mixed debug_info(int flag, mixed arg2, mixed arg3)
+debug_info()
+************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <debug_info.h>
+
+   mixed debug_info(int flag)
+   mixed debug_info(int flag, mixed arg)
+   mixed debug_info(int flag, mixed arg2, mixed arg3)
+
 
 BESCHREIBUNG
-        Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
-        des Treibers. <flag> kann dabei folgende in debug_info.h definierte
-        Werte enthalten:
+============
 
-        DINFO_OBJECT   (0): Angezeigt werden Informationen zum in <arg>
-            spezifizierten Objekt, zum Beispiel heart_beat,
-            enable_commands etc. Die Funktion liefert 0 zurueck.
+   Sammelt entsprechend den Angaben in <flag> gewisse intere Debuginfos
+   des Treibers. <flag> kann dabei folgende in debug_info.h definierte
+   Werte enthalten:
 
-        DINFO_MEMORY   (1): Angezeigt werden Informationen zu
-            Speicherbelegung und -ausnutzung des in <arg> spezifizierten
-            Objekts, zum Beispiel Anzahl Strings, Variablen, geerbte Files,
-            Objektgroesse etc. Die Funktion liefert 0 zurueck.
+   DINFO_OBJECT   (0): Angezeigt werden Informationen zum in <arg>
+       spezifizierten Objekt, zum Beispiel heart_beat,
+       enable_commands etc. Die Funktion liefert 0 zurueck.
 
-        DINFO_OBJLIST  (2): debug_info() liefert Objekte aus der globalen
-            Objektliste. Wenn <arg2> nicht angegeben wird, wird das erste
-            Element aus der Objektliste gelierfert, wenn <arg2> eine Zahl n
-            ist, das n-te Element. Ist <arg2> ein Objekt, werden die
-            nachfolgenden Objekte in der Objektliste zurueck geliefert.
-            Das optionale Argument <arg3> bezeichnet die Anzahl zurueck
-            gelieferter Objekte. Wenn <arg3> 0 ist, wird ein einzelnes
-            Objekt zurueck geliefert. Wenn <arg3> eine Zahl m enthaelt, wird
-            ein Array mit hoechstens m Elementen zurueck geliefert. Auf
-            diese Weise kann ein Array mit saemtlichen Objekten im Spiel
-            erzeugt werden, wenn fuer <arg3> __INT_MAX__ gesetzt wird (eine
-            entsprechende maximale Arraygroesse vorausgesetzt).
+   DINFO_MEMORY   (1): Angezeigt werden Informationen zu
+       Speicherbelegung und -ausnutzung des in <arg> spezifizierten
+       Objekts, zum Beispiel Anzahl Strings, Variablen, geerbte Files,
+       Objektgroesse etc. Die Funktion liefert 0 zurueck.
 
-        DINFO_MALLOC   (3): Entsprichend der Eingabe des 'malloc'-Kommandos.
-            Es muessen keine weiteren Argumente angegeben werden.
+   DINFO_OBJLIST  (2): debug_info() liefert Objekte aus der globalen
+       Objektliste. Wenn <arg2> nicht angegeben wird, wird das erste
+       Element aus der Objektliste gelierfert, wenn <arg2> eine Zahl n
+       ist, das n-te Element. Ist <arg2> ein Objekt, werden die
+       nachfolgenden Objekte in der Objektliste zurueck geliefert.
+       Das optionale Argument <arg3> bezeichnet die Anzahl zurueck
+       gelieferter Objekte. Wenn <arg3> 0 ist, wird ein einzelnes
+       Objekt zurueck geliefert. Wenn <arg3> eine Zahl m enthaelt, wird
+       ein Array mit hoechstens m Elementen zurueck geliefert. Auf
+       diese Weise kann ein Array mit saemtlichen Objekten im Spiel
+       erzeugt werden, wenn fuer <arg3> __INT_MAX__ gesetzt wird (eine
+       entsprechende maximale Arraygroesse vorausgesetzt).
 
-        DINFO_STATUS   (4): Angezeigt wird die Statusinformation des Drivers.
-            Optional kann das Argument <arg> die Werte 0, "tables", "swap",
-            "malloc" oder andere vom Driver akzeptierte Argumente enthalten.
-            Das Resultat ist ein druckbarer String, der die Statusinformation
-            enthaelt, oder 0, wenn ein ungueltiges Argument angegeben wurde.
+   DINFO_MALLOC   (3): Entsprichend der Eingabe des 'malloc'-Kommandos.
+       Es muessen keine weiteren Argumente angegeben werden.
 
-        DINFO_DUMP     (5): Die durch <arg2> angeforderte Information wird
-            in ein File geschrieben, das man mit <arg3> angeben kann. Wird
-            <arg3> nicht angegeben, wird eine Standarddatei verwendet.
-            debug_info() ueberprueft mittels master->valid_write(), ob es
-            das File schreiben kann. Falls bereits eine entsprechende Datei
-            existiert, wird diese ueberschrieben. Die Funktion liefert 1
-            bei Erfolg, 0 sonst.
+   DINFO_STATUS   (4): Angezeigt wird die Statusinformation des Drivers.
+       Optional kann das Argument <arg> die Werte 0, "tables", "swap",
+       "malloc" oder andere vom Driver akzeptierte Argumente enthalten.
+       Das Resultat ist ein druckbarer String, der die Statusinformation
+       enthaelt, oder 0, wenn ein ungueltiges Argument angegeben wurde.
 
-            <arg2> == "objects": liefert Informationen ueber alle Objekte im
-                Spiel und schreibt diese standardmaessig in die Datei
-                /OBJ_DUMP, dem valid_write() wird 'objdump' uebergeben.
-                Die Datei enthaelt fuer jedes Objekt eine Zeile, in der
-                jeweils folgende Informationen aufgelistet sind:
-                  - Name des Objekts (object_name)
-                  - Groesse im Speicher, gemeinsamer genutzter Speicher nur
-                    einmal gezaehlt
-                  - Groesse im Speicher, wenn es keine gemeinsam genutzte
-                    Daten geben wuerde
-                  - Anzahl Referenzen
-                  - 'HB', wenn das Objekt einen heart_beat hat, sonst nichts.
-                  - der Name der Umgebung oder '--', wenn das Objekt keine
-                    Umgebung hat
-                  - in Klammern die Anzahl der durch das Objekt verursachten
-                    Verarbeitungsschritten (execution ticks)
-                  - der Swap-Status:
-                      > nichts, wenn das Objekt nicht geswapt wurde
-                      > 'PROG SWAPPED', wenn nur das Programm geswapt wurde
-                      > 'VAR SWAPPED', wenn nur die Variablen geswapt wurden
-                      > 'SWAPPED', wenn beide geswapt wurden
-                  - die Zeit, zu der das Objekt geladen wurde.
+   DINFO_DUMP     (5): Die durch <arg2> angeforderte Information wird
+       in ein File geschrieben, das man mit <arg3> angeben kann. Wird
+       <arg3> nicht angegeben, wird eine Standarddatei verwendet.
+       debug_info() ueberprueft mittels master->valid_write(), ob es
+       das File schreiben kann. Falls bereits eine entsprechende Datei
+       existiert, wird diese ueberschrieben. Die Funktion liefert 1
+       bei Erfolg, 0 sonst.
 
-            <arg2> == "destructed": liefert Informationen ueber alle
-                zerstoerten Objekte und schreibt diese standardmaessig in
-                die Datei /DEST_OBJ_DUMP, dem valid_write() wird 'objdump'
-                uebergeben. Die Datei enthaelt fuer jedes Objekt eine Zeile,
-                in der jeweils folgende Informationen aufgelistet sind:
-                  - Name des Objekts (object_name)
-                  - Anzahl der Referenzen
-                  - 'NEW', wenn das Objekt in diesem Verarbeitungszyklus
-                    zerstoert wurde, nichts wenn es bereits fruehre zerstoert
-                    worden war.
+       <arg2> == "objects": liefert Informationen ueber alle Objekte im
+           Spiel und schreibt diese standardmaessig in die Datei
+           /OBJ_DUMP, dem valid_write() wird 'objdump' uebergeben.
+           Die Datei enthaelt fuer jedes Objekt eine Zeile, in der
+           jeweils folgende Informationen aufgelistet sind:
+             - Name des Objekts (object_name)
+             - Groesse im Speicher, gemeinsamer genutzter Speicher nur
+               einmal gezaehlt
+             - Groesse im Speicher, wenn es keine gemeinsam genutzte
+               Daten geben wuerde
+             - Anzahl Referenzen
+             - 'HB', wenn das Objekt einen heart_beat hat, sonst nichts.
+             - der Name der Umgebung oder '--', wenn das Objekt keine
+               Umgebung hat
+             - in Klammern die Anzahl der durch das Objekt verursachten
+               Verarbeitungsschritten (execution ticks)
+             - der Swap-Status:
+                 > nichts, wenn das Objekt nicht geswapt wurde
+                 > 'PROG SWAPPED', wenn nur das Programm geswapt wurde
+                 > 'VAR SWAPPED', wenn nur die Variablen geswapt wurden
+                 > 'SWAPPED', wenn beide geswapt wurden
+             - die Zeit, zu der das Objekt geladen wurde.
 
-            <arg2> == "opcodes": liefert Nutzungsinformationen ueber die
-                opcodes. Standardmaessig wird in die Datei /OPC_DUMP
-                geschrieben. valid_write() wird 'opcdump' uebergeben.
+       <arg2> == "destructed": liefert Informationen ueber alle
+           zerstoerten Objekte und schreibt diese standardmaessig in
+           die Datei /DEST_OBJ_DUMP, dem valid_write() wird 'objdump'
+           uebergeben. Die Datei enthaelt fuer jedes Objekt eine Zeile,
+           in der jeweils folgende Informationen aufgelistet sind:
+             - Name des Objekts (object_name)
+             - Anzahl der Referenzen
+             - 'NEW', wenn das Objekt in diesem Verarbeitungszyklus
+               zerstoert wurde, nichts wenn es bereits fruehre zerstoert
+               worden war.
 
-            <arg2> == "memory": liefert eine Liste aller allokierten
-                Speicherbloecke.
-                Standardmaessig wird in die Datei /MEMORY_DUMP geschrieben;
-                valid_write() wird 'memdump' uebergeben.  Existiert die
-                Datei bereits, werden die neuen Daten angehaengt.
-                Wenn der Allokator einen Speicherabzug nicht unterstuetzt,
-                wird keine Datei geschrieben und immer 0 zurueckgegeben.
-                Diese Funktion ist am nuetzlichsten wenn der Allokator
-                mit MALLOC_TRACE und MALLOC_LPC_TRACE kompiliert
-                wurde.
+       <arg2> == "opcodes": liefert Nutzungsinformationen ueber die
+           opcodes. Standardmaessig wird in die Datei /OPC_DUMP
+           geschrieben. valid_write() wird 'opcdump' uebergeben.
+
+       <arg2> == "memory": liefert eine Liste aller allokierten
+           Speicherbloecke.
+           Standardmaessig wird in die Datei /MEMORY_DUMP geschrieben;
+           valid_write() wird 'memdump' uebergeben.  Existiert die
+           Datei bereits, werden die neuen Daten angehaengt.
+           Wenn der Allokator einen Speicherabzug nicht unterstuetzt,
+           wird keine Datei geschrieben und immer 0 zurueckgegeben.
+           Diese Funktion ist am nuetzlichsten wenn der Allokator
+           mit MALLOC_TRACE und MALLOC_LPC_TRACE kompiliert
+           wurde.
 
 
-        DINFO_DATA    (6): Liefert Rohdaten ueber gewisse, durch <arg2>
-            spezifizierte Aspekte des Treibers. Das Resultat der Funktion ist
-            ein Array mit der Information oder 0, falls <arg2> keinen
-            gueltigen Wert enthalten hat.
-            Ist <arg3> eine Zahl, die kleiner ist als die Anzahl Elemente im
-            Resultat-Array, liefert die Funktion nur das entsprechende
-            Element zurueck.
-            Zulaessige Werte fuer <arg2> sind: DID_STATUS, DID_SWAP und
-            DID_MALLOC.
+   DINFO_DATA    (6): Liefert Rohdaten ueber gewisse, durch <arg2>
+       spezifizierte Aspekte des Treibers. Das Resultat der Funktion ist
+       ein Array mit der Information oder 0, falls <arg2> keinen
+       gueltigen Wert enthalten hat.
+       Ist <arg3> eine Zahl, die kleiner ist als die Anzahl Elemente im
+       Resultat-Array, liefert die Funktion nur das entsprechende
+       Element zurueck.
+       Zulaessige Werte fuer <arg2> sind: DID_STATUS, DID_SWAP und
+       DID_MALLOC.
 
-            <arg2> == DID_STATUS (0): Liefert die "status" und "status table"
-                Information. Folgende Indizes sind definiert:
-                  - int DID_ST_BOOT_TIME
-                        die Zeit (time()), zu der das Mud gestartet wurde
-                  - int DID_ST_ACTIONS
-                  - int DID_ST_ACTIONS_SIZE
-                        die Anzahl und Groesse im Speicher der allozierten
-                        Actions.
-                  - int DID_ST_SHADOWS
-                  - int DID_ST_SHADOWS_SIZE
-                        Anzahl und Groesse im Speicher aller allozierten
-                        Shadows.
-                  - int DID_ST_OBJECTS
-                  - int DID_ST_OBJECTS_SIZE
-                        Anzahl und Groesse im Speicher aller Objekte.
-                  - int DID_ST_OBJECTS_SWAPPED
-                  - int DID_ST_OBJECTS_SWAP_SIZE
-                        Anzahl und Groesse im Speicher der geswapten
-                        Variablenbloecke der Objekte
-                  - int DID_ST_OBJECTS_LIST
-                        Anzahl Objekte in der Objektliste
-                  - int DID_ST_OBJECTS_NEWLY_DEST
-                        Anzahl der frisch zerstoerten Objekte (d.h. Objekte,
-                        die in diesem Verarbeitungszyklus zerstoert wurden)
-                  - int DID_ST_OBJECTS_DESTRUCTED
-                        Anzahl der zerstoerten, aber noch immer referenzierten
-                        Objekte, ohne die unter DID_ST_OBJECTS_NEWLY_DEST
-                        bereits gezaehlten.
-                  - int DID_ST_OBJECTS_PROCESSED
-                        Anzahl der gelisteten Objekte, die im letzten
-                        Verarbeitungszyklus verarbeitet wurden.
-                  - float DID_ST_OBJECTS_AVG_PROC
-                        Durchschnittlicher Anteil der pro Zyklus verarbeiteten
-                        Objekte, ausgedrueckt in Prozent (0 .. 1.0)
-                  - int DID_ST_OTABLE
-                        Anzahl eingetragener Objekte in der Objekttabelle
-                  - int DID_ST_OTABLE_SLOTS
-                        Anzahl von Hashplaetzen, die von jeder Objekttabelle
-                        bereitgestellt werden
-                  - int DID_ST_OTABLE_SIZE
-                        Durch die Objekttabelle belegter Speicher
-                  - int DID_ST_HBEAT_OBJS
-                        Anzahl Objekte mit einem heart_beat()
-                  - int DID_ST_HBEAT_CALLS
-                        Anzahl aktiver heart_beat() Zyklen bisher (d.h.
-                        Zyklen, in denen mindestens eine heart_beat() Funktion
-                        aufgerufen wurde)
-                  - int DID_ST_HBEAT_CALLS_TOTAL
-                        Gesamtzahl von heart_beat() Zyklen bisher.
-                  - int DID_ST_HBEAT_SLOTS
-                  - int DID_ST_HBEAT_SIZE
-                        Anzahl und Groesse aller allozierten Eintraege in der
-                        heart_beat() Tabelle.
-                  - int DID_ST_HBEAT_PROCESSED
-                        Anzahl heart_beat()s im letzten Zyklus
-                  - float DID_ST_HBEAT_AVG_PROC
-                        Durchschnittlicher Anteil der pro Zyklus aufgerufenen
-                        heart_beat()s, ausgedrueckt in Prozent (0 .. 1.0)
-                  - int DID_ST_CALLOUTS
-                        Anzahl und Groesse aller laufenden call_out()s
-                  - int DID_ST_ARRAYS
-                  - int DID_ST_ARRAYS_SIZE
-                        Anzahl und Groesse aller Arrays
-                  - int DID_ST_MAPPINGS
-                  - int DID_ST_MAPPINGS_SIZE
-                        Anzahl und Groesse aller Mappings
-                  - int DID_ST_PROGS
-                  - int DID_ST_PROGS_SIZE
-                        Anzahl und Groesse aller Programme
-                  - int DID_ST_PROGS_SWAPPED
-                  - int DID_ST_PROGS_SWAP_SIZE
-                        Anzahl und Groesse der geswapten Programme
-                  - int DID_ST_USER_RESERVE
-                  - int DID_ST_MASTER_RESERVE
-                  - int DID_ST_SYSTEM_RESERVE
-                        Momentane Groesse der drei Speicherreserven
-                  - int DID_ST_ADD_MESSAGE
-                  - int DID_ST_PACKETS
-                  - int DID_ST_PACKET_SIZE
-                        Anzahl Aufrufe von add_message(), Anzahl und Groesse
-                        der versendeten Pakete.
-                        Wenn der Driver nicht mit COMM_STAT kompiliert wurde,
-                        liefern alle drei Werte immer -1 zurueck.
-                  - int DID_ST_APPLY
-                  - int DID_ST_APPLY_HITS
-                        Anzahl Aufrufen von apply_low(), und wie viele davon
-                        Cache-Treffer waren. Wenn der Driver nicht mit
-                        APPLY_CACHE_STAT kompiliert wurde, liefern beide
-                        Werte immer -1.
-                  - int DID_ST_STRINGS
-                  - int DID_ST_STRING_SIZE
-                        Anzahl unterschiedlicher Strings in der Stringtabelle,
-                        sowie ihre Groesse
-                  - int DID_ST_STR_TABLE_SIZE
-                        Groesse der String Tabelle
-                  - int DID_ST_STR_REQ
-                  - int DID_ST_STR_REQ_SIZE
-                        Gesamte Anzahl von String Allokationen, und ihre
-                        Groesse
-                  - int DID_ST_STR_SEARCHES
-                  - int DID_ST_STR_SEARCH_LEN
-                        Anzahl Suchvorgaenge in der Stringtabelle und die
-                        Gesamtlaenge des Suchstrings
-                  - int DID_ST_STR_FOUND
-                        Anzahl erfolgreicher Suchvorgaenge
-                  - int DID_ST_STR_ENTRIES
-                        Anzahl Eintraege (Hash Ketten) in der String Tabelle
-                  - int DID_ST_STR_ADDED
-                        Anzahl zur String Tabelle bisher hinzugefuegter
-                        Strings
-                  - int DID_ST_STR_DELETED
-                        Anzahl aus der String Tabelle bisher geloeschter
-                        Strings
-                  - int DID_ST_STR_COLLISIONS
-                        Anzahl zu einer existierenden Hash Kette hinzugefuegte
-                        Strings
-                  - int DID_ST_RX_CACHED
-                        Anzahl gecacheter regulaerer Ausdruecke (regular
-                        expressions)
-                  - int DID_ST_RX_TABLE
-                  - int DID_ST_RX_TABLE_SIZE
-                        Anzahl Plaetze in der Regexp Cache Tabelle und
-                        Speicherbedarf der gecacheten Ausdruecke
-                  - int DID_ST_RX_REQUESTS
-                        Anzahl Anfragen fuer neue regexps
-                  - int DID_ST_RX_REQ_FOUND
-                        Anzahl gefundener regexps in der regexp Cache Tabelle
-                  - int DID_ST_RX_REQ_COLL
-                        Anzahl angefragter regexps, die mit einer bestehenden
-                        regexp kollidierten
-                  - int DID_ST_MB_FILE
-                        Die Groesse des 'File' Speicherpuffers
-                  - int DID_ST_MB_SWAP
-                        Die Groesse des 'Swap' Speicherpuffers
+       <arg2> == DID_STATUS (0): Liefert die "status" und "status table"
+           Information. Folgende Indizes sind definiert:
+             - int DID_ST_BOOT_TIME
+                   die Zeit (time()), zu der das Mud gestartet wurde
+             - int DID_ST_ACTIONS
+             - int DID_ST_ACTIONS_SIZE
+                   die Anzahl und Groesse im Speicher der allozierten
+                   Actions.
+             - int DID_ST_SHADOWS
+             - int DID_ST_SHADOWS_SIZE
+                   Anzahl und Groesse im Speicher aller allozierten
+                   Shadows.
+             - int DID_ST_OBJECTS
+             - int DID_ST_OBJECTS_SIZE
+                   Anzahl und Groesse im Speicher aller Objekte.
+             - int DID_ST_OBJECTS_SWAPPED
+             - int DID_ST_OBJECTS_SWAP_SIZE
+                   Anzahl und Groesse im Speicher der geswapten
+                   Variablenbloecke der Objekte
+             - int DID_ST_OBJECTS_LIST
+                   Anzahl Objekte in der Objektliste
+             - int DID_ST_OBJECTS_NEWLY_DEST
+                   Anzahl der frisch zerstoerten Objekte (d.h. Objekte,
+                   die in diesem Verarbeitungszyklus zerstoert wurden)
+             - int DID_ST_OBJECTS_DESTRUCTED
+                   Anzahl der zerstoerten, aber noch immer referenzierten
+                   Objekte, ohne die unter DID_ST_OBJECTS_NEWLY_DEST
+                   bereits gezaehlten.
+             - int DID_ST_OBJECTS_PROCESSED
+                   Anzahl der gelisteten Objekte, die im letzten
+                   Verarbeitungszyklus verarbeitet wurden.
+             - float DID_ST_OBJECTS_AVG_PROC
+                   Durchschnittlicher Anteil der pro Zyklus verarbeiteten
+                   Objekte, ausgedrueckt in Prozent (0 .. 1.0)
+             - int DID_ST_OTABLE
+                   Anzahl eingetragener Objekte in der Objekttabelle
+             - int DID_ST_OTABLE_SLOTS
+                   Anzahl von Hashplaetzen, die von jeder Objekttabelle
+                   bereitgestellt werden
+             - int DID_ST_OTABLE_SIZE
+                   Durch die Objekttabelle belegter Speicher
+             - int DID_ST_HBEAT_OBJS
+                   Anzahl Objekte mit einem heart_beat()
+             - int DID_ST_HBEAT_CALLS
+                   Anzahl aktiver heart_beat() Zyklen bisher (d.h.
+                   Zyklen, in denen mindestens eine heart_beat() Funktion
+                   aufgerufen wurde)
+             - int DID_ST_HBEAT_CALLS_TOTAL
+                   Gesamtzahl von heart_beat() Zyklen bisher.
+             - int DID_ST_HBEAT_SLOTS
+             - int DID_ST_HBEAT_SIZE
+                   Anzahl und Groesse aller allozierten Eintraege in der
+                   heart_beat() Tabelle.
+             - int DID_ST_HBEAT_PROCESSED
+                   Anzahl heart_beat()s im letzten Zyklus
+             - float DID_ST_HBEAT_AVG_PROC
+                   Durchschnittlicher Anteil der pro Zyklus aufgerufenen
+                   heart_beat()s, ausgedrueckt in Prozent (0 .. 1.0)
+             - int DID_ST_CALLOUTS
+                   Anzahl und Groesse aller laufenden call_out()s
+             - int DID_ST_ARRAYS
+             - int DID_ST_ARRAYS_SIZE
+                   Anzahl und Groesse aller Arrays
+             - int DID_ST_MAPPINGS
+             - int DID_ST_MAPPINGS_SIZE
+                   Anzahl und Groesse aller Mappings
+             - int DID_ST_PROGS
+             - int DID_ST_PROGS_SIZE
+                   Anzahl und Groesse aller Programme
+             - int DID_ST_PROGS_SWAPPED
+             - int DID_ST_PROGS_SWAP_SIZE
+                   Anzahl und Groesse der geswapten Programme
+             - int DID_ST_USER_RESERVE
+             - int DID_ST_MASTER_RESERVE
+             - int DID_ST_SYSTEM_RESERVE
+                   Momentane Groesse der drei Speicherreserven
+             - int DID_ST_ADD_MESSAGE
+             - int DID_ST_PACKETS
+             - int DID_ST_PACKET_SIZE
+                   Anzahl Aufrufe von add_message(), Anzahl und Groesse
+                   der versendeten Pakete.
+                   Wenn der Driver nicht mit COMM_STAT kompiliert wurde,
+                   liefern alle drei Werte immer -1 zurueck.
+             - int DID_ST_APPLY
+             - int DID_ST_APPLY_HITS
+                   Anzahl Aufrufen von apply_low(), und wie viele davon
+                   Cache-Treffer waren. Wenn der Driver nicht mit
+                   APPLY_CACHE_STAT kompiliert wurde, liefern beide
+                   Werte immer -1.
+             - int DID_ST_STRINGS
+             - int DID_ST_STRING_SIZE
+                   Anzahl unterschiedlicher Strings in der Stringtabelle,
+                   sowie ihre Groesse
+             - int DID_ST_STR_TABLE_SIZE
+                   Groesse der String Tabelle
+             - int DID_ST_STR_REQ
+             - int DID_ST_STR_REQ_SIZE
+                   Gesamte Anzahl von String Allokationen, und ihre
+                   Groesse
+             - int DID_ST_STR_SEARCHES
+             - int DID_ST_STR_SEARCH_LEN
+                   Anzahl Suchvorgaenge in der Stringtabelle und die
+                   Gesamtlaenge des Suchstrings
+             - int DID_ST_STR_FOUND
+                   Anzahl erfolgreicher Suchvorgaenge
+             - int DID_ST_STR_ENTRIES
+                   Anzahl Eintraege (Hash Ketten) in der String Tabelle
+             - int DID_ST_STR_ADDED
+                   Anzahl zur String Tabelle bisher hinzugefuegter
+                   Strings
+             - int DID_ST_STR_DELETED
+                   Anzahl aus der String Tabelle bisher geloeschter
+                   Strings
+             - int DID_ST_STR_COLLISIONS
+                   Anzahl zu einer existierenden Hash Kette hinzugefuegte
+                   Strings
+             - int DID_ST_RX_CACHED
+                   Anzahl gecacheter regulaerer Ausdruecke (regular
+                   expressions)
+             - int DID_ST_RX_TABLE
+             - int DID_ST_RX_TABLE_SIZE
+                   Anzahl Plaetze in der Regexp Cache Tabelle und
+                   Speicherbedarf der gecacheten Ausdruecke
+             - int DID_ST_RX_REQUESTS
+                   Anzahl Anfragen fuer neue regexps
+             - int DID_ST_RX_REQ_FOUND
+                   Anzahl gefundener regexps in der regexp Cache Tabelle
+             - int DID_ST_RX_REQ_COLL
+                   Anzahl angefragter regexps, die mit einer bestehenden
+                   regexp kollidierten
+             - int DID_ST_MB_FILE
+                   Die Groesse des 'File' Speicherpuffers
+             - int DID_ST_MB_SWAP
+                   Die Groesse des 'Swap' Speicherpuffers
 
-            <arg2> == DID_SWAP (1): Liefert "status swap"-Information:
-                  - int DID_SW_PROGS
-                  - int DID_SW_PROG_SIZE
-                        Anzahl und Groesse der geswappten Programmbloecke
-                  - int DID_SW_PROG_UNSWAPPED
-                  - int DID_SW_PROG_U_SIZE
-                        Anzahl und Groesse der nicht geswappten Bloecke
-                  - int DID_SW_VARS
-                  - int DID_SW_VAR_SIZE
-                        Anzahl und Groesse der geswappten Variablenbloecke
-                  - int DID_SW_FREE
-                  - int DID_SW_FREE_SIZE
-                        Anzahl und Groesse der freien Bloecke in der
-                        Auslagerungsdatei
-                  - int DID_SW_FILE_SIZE
-                        Groesse der Auslagerungsdatei
-                  - int DID_SW_REUSED
-                        Gesamter wiederverwendeter Speicherplatz in der
-                        Auslagerungsdatei
-                  - int DID_SW_SEARCHES
-                  - int DID_SW_SEARCH_LEN
-                        Anzahl und Gesamtlaenge der Suchvorgaenge nach
-                        wiederverwendbaren Bloecken in der Auslagerungsdatei
-                  - int DID_SW_F_SEARCHES
-                  - int DID_SW_F_SEARCH_LEN
-                        Anzahl und Gesamtlaenge der Suchvorgaenge nach einem
-                        Block, der frei gemacht werden kann.
-                  - int DID_SW_COMPACT
-                        TRUE wenn der Swapper im Compact-Modus laeuft
-                  - int DID_SW_RECYCLE_FREE
-                        TRUE wenn der Swapper gerade einen freien Block
-                        wiederverwendet
+       <arg2> == DID_SWAP (1): Liefert "status swap"-Information:
+             - int DID_SW_PROGS
+             - int DID_SW_PROG_SIZE
+                   Anzahl und Groesse der geswappten Programmbloecke
+             - int DID_SW_PROG_UNSWAPPED
+             - int DID_SW_PROG_U_SIZE
+                   Anzahl und Groesse der nicht geswappten Bloecke
+             - int DID_SW_VARS
+             - int DID_SW_VAR_SIZE
+                   Anzahl und Groesse der geswappten Variablenbloecke
+             - int DID_SW_FREE
+             - int DID_SW_FREE_SIZE
+                   Anzahl und Groesse der freien Bloecke in der
+                   Auslagerungsdatei
+             - int DID_SW_FILE_SIZE
+                   Groesse der Auslagerungsdatei
+             - int DID_SW_REUSED
+                   Gesamter wiederverwendeter Speicherplatz in der
+                   Auslagerungsdatei
+             - int DID_SW_SEARCHES
+             - int DID_SW_SEARCH_LEN
+                   Anzahl und Gesamtlaenge der Suchvorgaenge nach
+                   wiederverwendbaren Bloecken in der Auslagerungsdatei
+             - int DID_SW_F_SEARCHES
+             - int DID_SW_F_SEARCH_LEN
+                   Anzahl und Gesamtlaenge der Suchvorgaenge nach einem
+                   Block, der frei gemacht werden kann.
+             - int DID_SW_COMPACT
+                   TRUE wenn der Swapper im Compact-Modus laeuft
+             - int DID_SW_RECYCLE_FREE
+                   TRUE wenn der Swapper gerade einen freien Block
+                   wiederverwendet
 
-            <arg2> == DID_MEMORY (2): Liefert die "status malloc"-Information:
-                  - string DID_MEM_NAME
-                        Der Name des Allokators: "sysmalloc", "smalloc",
-                        "slaballoc"
-                  - int DID_MEM_SBRK
-                  - int DID_MEM_SBRK_SIZE
-                        Anzahl und Groesse der Speicherbloecke, die vom
-                        Betriebssystem angefordert wurden (smalloc, slaballoc)
-                  - int DID_MEM_LARGE
-                  - int DID_MEM_LARGE_SIZE
-                  - int DID_MEM_LFREE
-                  - int DID_MEM_LFREE_SIZE
-                        Anzahl und Groesse der grossen allozierten bzw.
-                        freien Bloecke (smalloc, slaballoc)
-                  - int DID_MEM_LWASTED
-                  - int DID_MEM_LWASTED_SIZE
-                        Anzahl und Groesse der unbrauchbaren grossen
-                        Speicherfragmente (smalloc, slaballoc)
-                  - int DID_MEM_CHUNK
-                  - int DID_MEM_CHUNK_SIZE
-                        Anzahl und Groesse kleiner Speicherbloecke (chunk
-                        blocks; smalloc, slaballoc)
-                  - int DID_MEM_SMALL
-                  - int DID_MEM_SMALL_SIZE
-                  - int DID_MEM_SFREE
-                  - int DID_MEM_SFREE_SIZE
-                        Anzahl und groesse der allozierten bzw. freien
-                        kleinen Speicherbloecke (smalloc, slaballoc)
-                  - int DID_MEM_SWASTED
-                  - int DID_MEM_SWASTED_SIZE
-                        Anzahl und Groesse der unbrauchbar kleinen
-                        Speicherfragmente (smalloc, slaballoc)
-                  - int DID_MEM_MINC_CALLS
-                  - int DID_MEM_MINC_SUCCESS
-                  - int DID_MEM_MINC_SIZE
-                        Anzahl Aufrufe von malloc_increment(), Anzahl der
-                        erfolgreichen Aufrufe und die Groesse des auf diese
-                        Art allozierten Speichers (smalloc, slaballoc)
-                  - int DID_MEM_PERM
-                  - int DID_MEM_PERM_SIZE
-                        Anzahl und Groesse permanenter (non-GCable)
-                        Allokationen (smalloc, slaballoc)
-                  - int DID_MEM_CLIB
-                  - int DID_MEM_CLIB_SIZE
-                        Anzahl und Groesse der Allokationen durch Clib
-                        Funktionen (nur smalloc, slaballoc mit SBRK_OK)
-                  - int DID_MEM_OVERHEAD
-                        Overhead fuer jede Allokation (smalloc, slaballoc)
-                  - int DID_MEM_ALLOCATED
-                        Der Speicher, der durch die Speicherverwaltung
-                        alloziert wurde, inklusive den Overhead fuer die
-                        Speicherverwaltung (smalloc, slaballoc)
-                  - int DID_MEM_USED
-                        Der Speicher, der durch den Driver belegt ist, ohne
-                        den durch die Speicherverwaltung belegten Speicher
-                        (smalloc, slaballoc)
-                  - int DID_MEM_TOTAL_UNUSED
-                        Der Speicher, der vom System zur Verfuegung gestellt,
-                        aber vom Treiber nicht benoetigt wird.
-                  - int DID_MEM_AVL_NODES          (smalloc, slaballoc)
-                        Anzahl der AVL-Knoten, die zur Verwaltung der
-                        freien grossen Speicherbloecke verwendet werden
-                        (nur smalloc). Dieser Wert kann in Zukunft
-                        wieder verschwinden.
-                  - mixed * DID_MEM_EXT_STATISTICS (smalloc, slaballoc)
-                        Detaillierte Statistiken des Allokators sofern
-                        diese aktiviert wurden; 0 anderenfalls.
+       <arg2> == DID_MEMORY (2): Liefert die "status malloc"-Information:
+             - string DID_MEM_NAME
+                   Der Name des Allokators: "sysmalloc", "smalloc",
+                   "slaballoc"
+             - int DID_MEM_SBRK
+             - int DID_MEM_SBRK_SIZE
+                   Anzahl und Groesse der Speicherbloecke, die vom
+                   Betriebssystem angefordert wurden (smalloc, slaballoc)
+             - int DID_MEM_LARGE
+             - int DID_MEM_LARGE_SIZE
+             - int DID_MEM_LFREE
+             - int DID_MEM_LFREE_SIZE
+                   Anzahl und Groesse der grossen allozierten bzw.
+                   freien Bloecke (smalloc, slaballoc)
+             - int DID_MEM_LWASTED
+             - int DID_MEM_LWASTED_SIZE
+                   Anzahl und Groesse der unbrauchbaren grossen
+                   Speicherfragmente (smalloc, slaballoc)
+             - int DID_MEM_CHUNK
+             - int DID_MEM_CHUNK_SIZE
+                   Anzahl und Groesse kleiner Speicherbloecke (chunk
+                   blocks; smalloc, slaballoc)
+             - int DID_MEM_SMALL
+             - int DID_MEM_SMALL_SIZE
+             - int DID_MEM_SFREE
+             - int DID_MEM_SFREE_SIZE
+                   Anzahl und groesse der allozierten bzw. freien
+                   kleinen Speicherbloecke (smalloc, slaballoc)
+             - int DID_MEM_SWASTED
+             - int DID_MEM_SWASTED_SIZE
+                   Anzahl und Groesse der unbrauchbar kleinen
+                   Speicherfragmente (smalloc, slaballoc)
+             - int DID_MEM_MINC_CALLS
+             - int DID_MEM_MINC_SUCCESS
+             - int DID_MEM_MINC_SIZE
+                   Anzahl Aufrufe von malloc_increment(), Anzahl der
+                   erfolgreichen Aufrufe und die Groesse des auf diese
+                   Art allozierten Speichers (smalloc, slaballoc)
+             - int DID_MEM_PERM
+             - int DID_MEM_PERM_SIZE
+                   Anzahl und Groesse permanenter (non-GCable)
+                   Allokationen (smalloc, slaballoc)
+             - int DID_MEM_CLIB
+             - int DID_MEM_CLIB_SIZE
+                   Anzahl und Groesse der Allokationen durch Clib
+                   Funktionen (nur smalloc, slaballoc mit SBRK_OK)
+             - int DID_MEM_OVERHEAD
+                   Overhead fuer jede Allokation (smalloc, slaballoc)
+             - int DID_MEM_ALLOCATED
+                   Der Speicher, der durch die Speicherverwaltung
+                   alloziert wurde, inklusive den Overhead fuer die
+                   Speicherverwaltung (smalloc, slaballoc)
+             - int DID_MEM_USED
+                   Der Speicher, der durch den Driver belegt ist, ohne
+                   den durch die Speicherverwaltung belegten Speicher
+                   (smalloc, slaballoc)
+             - int DID_MEM_TOTAL_UNUSED
+                   Der Speicher, der vom System zur Verfuegung gestellt,
+                   aber vom Treiber nicht benoetigt wird.
+             - int DID_MEM_AVL_NODES          (smalloc, slaballoc)
+                   Anzahl der AVL-Knoten, die zur Verwaltung der
+                   freien grossen Speicherbloecke verwendet werden
+                   (nur smalloc). Dieser Wert kann in Zukunft
+                   wieder verschwinden.
+             - mixed * DID_MEM_EXT_STATISTICS (smalloc, slaballoc)
+                   Detaillierte Statistiken des Allokators sofern
+                   diese aktiviert wurden; 0 anderenfalls.
 
-                        Dieser Wert kann in Zukunft wieder verschwinden.
+                   Dieser Wert kann in Zukunft wieder verschwinden.
 
-                        Das Array enthaelt NUM+2 Eintraege, wobei NUM
-                        Anzahl der verschiedenen 'kleinen'
-                        Blockgroessen ist. Eintrag [NUM] beschreibt
-                        die uebergrossen 'kleinen' Bloecke, Eintrag
-                        [NUM+1] beschreibt summarisch die 'grossen'
-                        Bloecke. Jeder Eintrag ist ein Array mit
-                        diesen Feldern:
+                   Das Array enthaelt NUM+2 Eintraege, wobei NUM
+                   Anzahl der verschiedenen 'kleinen'
+                   Blockgroessen ist. Eintrag [NUM] beschreibt
+                   die uebergrossen 'kleinen' Bloecke, Eintrag
+                   [NUM+1] beschreibt summarisch die 'grossen'
+                   Bloecke. Jeder Eintrag ist ein Array mit
+                   diesen Feldern:
 
-                        int DID_MEM_ES_MAX_ALLOC:
-                          Maximale Anzahl allokierter Bloecke dieser
-                          Groesse.
+                   int DID_MEM_ES_MAX_ALLOC:
+                     Maximale Anzahl allokierter Bloecke dieser
+                     Groesse.
 
-                        int DID_MEM_ES_CUR_ALLOC:
-                          Derzeitige Anzahl allokierter Bloecke dieser
-                          Groesse.
-                          Current number of allocated blocks of this size.
+                   int DID_MEM_ES_CUR_ALLOC:
+                     Derzeitige Anzahl allokierter Bloecke dieser
+                     Groesse.
+                     Current number of allocated blocks of this size.
 
-                        int DID_MEM_ES_MAX_FREE:
-                          Maximale Anzahl freier Bloecke dieser
-                          Groesse.
+                   int DID_MEM_ES_MAX_FREE:
+                     Maximale Anzahl freier Bloecke dieser
+                     Groesse.
 
-                        int DID_MEM_ES_CUR_FREE:
-                          Derzeitige Anzahl freier Bloecke dieser
-                          Groesse.
+                   int DID_MEM_ES_CUR_FREE:
+                     Derzeitige Anzahl freier Bloecke dieser
+                     Groesse.
 
-                        float DID_MEM_ES_AVG_XALLOC:
-                          Durchschnittliche Zahl von Allokationen pro
-                          Sekunde.
+                   float DID_MEM_ES_AVG_XALLOC:
+                     Durchschnittliche Zahl von Allokationen pro
+                     Sekunde.
 
-                        float DID_MEM_ES_AVG_XFREE:
-                          Durchschnittliche Zahl von Deallokationen pro
-                          Sekunde.
+                   float DID_MEM_ES_AVG_XFREE:
+                     Durchschnittliche Zahl von Deallokationen pro
+                     Sekunde.
 
-                      Die Durchschnittsstatistiken schliessen interne
-                      Umsortierungen der Blocklisten nicht ein.
+                 Die Durchschnittsstatistiken schliessen interne
+                 Umsortierungen der Blocklisten nicht ein.
 
 
-        DINFO_TRACE    (7): Liefert die 'trace' Information aus dem
-            Call Stack entsprechend der Spezifikation in <arg2>. Das Resultat
-            ist entweder ein Array (dessen Format nachstehend erlaeutert ist)
-            oder ein druckbarer String. Wird <arg2> weggelasen entspricht
-            dies DIT_CURRENT.
+   DINFO_TRACE    (7): Liefert die 'trace' Information aus dem
+       Call Stack entsprechend der Spezifikation in <arg2>. Das Resultat
+       ist entweder ein Array (dessen Format nachstehend erlaeutert ist)
+       oder ein druckbarer String. Wird <arg2> weggelasen entspricht
+       dies DIT_CURRENT.
 
-            <arg2> == DIT_CURRENT (0): Momentaner Call Trace
-                   == DIT_ERROR   (1): Letzter Fehler Trace (caught oder
-                        uncaught)
-                   == DIT_UNCAUGHT_ERROR (2): Letzer Fehler Trace, der nicht
-                        gefangen werden konnte (uncaught)
+       <arg2> == DIT_CURRENT (0): Momentaner Call Trace
+              == DIT_ERROR   (1): Letzter Fehler Trace (caught oder
+                   uncaught)
+              == DIT_UNCAUGHT_ERROR (2): Letzer Fehler Trace, der nicht
+                   gefangen werden konnte (uncaught)
 
-            Die Information wird in Form eines Array uebergeben.
+       Die Information wird in Form eines Array uebergeben.
 
-            Die Fehlertraces werden nur geaendert, wenn ein entsprechender
-            Fehler auftritt; ausserdem werden sie bei einem GC (Garbage
-            Collection) geloescht. Nach einem Fehler, der nicht gefangen
-            werden konnte (uncaught error), weisen beide Traces auf das
-            gleiche Array, sodass der ==-Operator gilt.
+       Die Fehlertraces werden nur geaendert, wenn ein entsprechender
+       Fehler auftritt; ausserdem werden sie bei einem GC (Garbage
+       Collection) geloescht. Nach einem Fehler, der nicht gefangen
+       werden konnte (uncaught error), weisen beide Traces auf das
+       gleiche Array, sodass der ==-Operator gilt.
 
-            Wenn das Array mehr als ein Element enthaelt, ist das erste
-            Element 0 oder der Name des Objekts, dessen heart_beat() den
-            laufenden Zyklus begonnen hat; alle nachfolgenden Elemente
-            bezeichnen den Call Stack, beginnen mit der hoechsten
-            aufgerufenen Funktion.
+       Wenn das Array mehr als ein Element enthaelt, ist das erste
+       Element 0 oder der Name des Objekts, dessen heart_beat() den
+       laufenden Zyklus begonnen hat; alle nachfolgenden Elemente
+       bezeichnen den Call Stack, beginnen mit der hoechsten
+       aufgerufenen Funktion.
 
-            Alle Eintraege im Array sind wiederum Arrays mit folgenden
-            Elementen:
-              - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
-                    TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
-                                           vorkommen)
-                    TRACE_TYPE_SEFUN  (1): eine simul-efun
-                    TRACE_TYPE_EFUN   (2): eine Efun Closure
-                    TRACE_TYPE_LAMBDA (3): eine lambda Closure
-                    TRACE_TYPE_LFUN   (4): eine normale Lfun
-              - int[TRACE_NAME]
-                    _TYPE_EFUN    : entweder der Name der Funktion oder der
-                                    Code einer Operator-Closure
-                    _TYPE_LAMBDA  : die numerische Lambda-ID
-                    _TYPE_LFUN    : der Name der Lfun
-              - string[TRACE_PROGRAM]:  Der Name des Programms mit dem Code
-              - string[TRACE_OBJECT]:   Der Name des Objekts, fuer das der
-                                        Code ausgefuehrt wurde
-              - int[TRACE_LOC]:
-                    _TYPE_LAMBDA  : Der Offset des Programms seit Beginn des
-                                    Closure-Codes
-                    _TYPE_LFUN    : Die Zeilennummer.
+       Alle Eintraege im Array sind wiederum Arrays mit folgenden
+       Elementen:
+         - int[TRACE_TYPE]: Der Typ der aufrufenden Funktion
+               TRACE_TYPE_SYMBOL (0): ein Funktionssymbol (sollte nicht
+                                      vorkommen)
+               TRACE_TYPE_SEFUN  (1): eine simul-efun
+               TRACE_TYPE_EFUN   (2): eine Efun Closure
+               TRACE_TYPE_LAMBDA (3): eine lambda Closure
+               TRACE_TYPE_LFUN   (4): eine normale Lfun
+         - int[TRACE_NAME]
+               _TYPE_EFUN    : entweder der Name der Funktion oder der
+                               Code einer Operator-Closure
+               _TYPE_LAMBDA  : die numerische Lambda-ID
+               _TYPE_LFUN    : der Name der Lfun
+         - string[TRACE_PROGRAM]:  Der Name des Programms mit dem Code
+         - string[TRACE_OBJECT]:   Der Name des Objekts, fuer das der
+                                   Code ausgefuehrt wurde
+         - int[TRACE_LOC]:
+               _TYPE_LAMBDA  : Der Offset des Programms seit Beginn des
+                               Closure-Codes
+               _TYPE_LFUN    : Die Zeilennummer.
 
-            <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
-                momentanen Call Trace als druckbarer String.
+       <arg2> == DIT_STR_CURRENT (3): Liefert Informationen ueber den
+           momentanen Call Trace als druckbarer String.
 
-            <arg2> == DIT_CURRENT_DEPTH (4): Liefert die Zahl der Frames auf
-                dem Control Stack (Rekursionstiefe).
+       <arg2> == DIT_CURRENT_DEPTH (4): Liefert die Zahl der Frames auf
+           dem Control Stack (Rekursionstiefe).
 
-        DINFO_EVAL_NUMBER (8): gibt die Nummer der aktuellen Berechnung
-            zurueck. Diese Nummer wird fuer jeden vom driver initiierten
-            Aufruf von LPC-Code erhoeht, also bei Aufruf von:
-              - Kommandos (die per add_action hinzugefuegt wurden)
-              - heart_beat, reset, clean_up
-              - Aufrufe durch call_out oder input_to
-              - master applies, die auf externe Ereignisse zurueckgehen
-              - driver hooks genauso
-              - Rueckrufen von send_erq
-              - logon in interaktiven Objekten
+   DINFO_EVAL_NUMBER (8): gibt die Nummer der aktuellen Berechnung
+       zurueck. Diese Nummer wird fuer jeden vom driver initiierten
+       Aufruf von LPC-Code erhoeht, also bei Aufruf von:
+         - Kommandos (die per add_action hinzugefuegt wurden)
+         - heart_beat, reset, clean_up
+         - Aufrufe durch call_out oder input_to
+         - master applies, die auf externe Ereignisse zurueckgehen
+         - driver hooks genauso
+         - Rueckrufen von send_erq
+         - logon in interaktiven Objekten
 
-           Dieser Zaehler kann z.B. benutzt werden, um zu verhindern, dass
-           bestimmte Aktionen mehrfach innerhalb eines heart_beat()
-           ausgefuehrt werden. Eine andere Anwendungsmoeglichkeit sind
-           Zeitstempel zur Sortierung zur Sortierung von Ereignissen.
+      Dieser Zaehler kann z.B. benutzt werden, um zu verhindern, dass
+      bestimmte Aktionen mehrfach innerhalb eines heart_beat()
+      ausgefuehrt werden. Eine andere Anwendungsmoeglichkeit sind
+      Zeitstempel zur Sortierung zur Sortierung von Ereignissen.
 
-           Es ist zu beachten, dass der Zaehler ueberlaufen kann, insbesondere
-           auf 32-bit-Systemen. Er kann demzufolge auch negativ werden.
+      Es ist zu beachten, dass der Zaehler ueberlaufen kann, insbesondere
+      auf 32-bit-Systemen. Er kann demzufolge auch negativ werden.
 
 
 GESCHICHTE
-        Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
-            nur auszugeben.
-        DINFO_DUMP wurde in 3.2.7 eingefuehrt.
-        LDMud 3.2.8 fuegte die Datengroesse des Objekts zum Resultat von
-            DINFO_MEMORY hinzu, ausserdem die DINFO_DATA Abfrage und die
-            verschiedenen DID_MEM_WASTED Statistiken.
-        LDMud 3.2.9 fuegte DINFO_TRACE, das Indizierungs-Feature von
-            DINFO_DATA, den 'destructed'-DINFO_DUMP, die DID_MEM_CLIB*,
-            die DID_MEM_PERM*, ausserdem DID_ST_OBJECTS_NEWLY_DEST,
-            DID_ST_OBJECTS_DEST, DID_MEM_OVERHEAD, DID_MEM_ALLOCATED,
-            DID_MEM_USED, DID_MEM_TOTAL_UNUSED, DID_ST_HBEAT_CALLS_TOTAL
-            und die found / added / collision Stringstatistiken.
-        LDMud 3.2.10 fuegte die Erzeugungszeit zu DINFO_DUMP:"objects" hinzu,
-            entfernte DID_MEM_UNUSED aus DINFO_DATA:DID_MEMORY, fuegte
-            DINFO_DATA:DID_STATUS DID_ST_BOOT_TIME, DID_ST_MB_FILE und
-            DID_ST_MB_SWAP hinzu und entfernte DID_ST_CALLOUT_SLOTS daraus,
-            fuegte das dritte Argument zu DINFO_OBJLIST hinzu, und veraenderte
-            die Bedeutung von DID_ST_CALLOUT_SIZE und DID_ST_HBEAT_SIZE
-            bzw. _SLOTS.
-        LDMud 3.3.533 fuegte DID_MEM_AVL_NODES zu DINFO_DATA:DID_MEMORY
-            hinzu.
-        LDMud 3.3.603 fuegte DID_MEM_EXT_STATISTICS zu DINFO_DATA:DID_MEMORY
-            hinzu.
-        LDMud 3.3.718 fuegte DIT_CURRENT_DEPTH to DINFO_TRACE hinzu.
-        LDMud 3.3.719 fuegte DINFO_EVAL_NUMBER hinzu.
+==========
+
+   Seit 3.2.7 liefert DINFO_STATUS die Information zurueck, anstatt sie
+       nur auszugeben.
+   DINFO_DUMP wurde in 3.2.7 eingefuehrt.
+   LDMud 3.2.8 fuegte die Datengroesse des Objekts zum Resultat von
+       DINFO_MEMORY hinzu, ausserdem die DINFO_DATA Abfrage und die
+       verschiedenen DID_MEM_WASTED Statistiken.
+   LDMud 3.2.9 fuegte DINFO_TRACE, das Indizierungs-Feature von
+       DINFO_DATA, den 'destructed'-DINFO_DUMP, die DID_MEM_CLIB*,
+       die DID_MEM_PERM*, ausserdem DID_ST_OBJECTS_NEWLY_DEST,
+       DID_ST_OBJECTS_DEST, DID_MEM_OVERHEAD, DID_MEM_ALLOCATED,
+       DID_MEM_USED, DID_MEM_TOTAL_UNUSED, DID_ST_HBEAT_CALLS_TOTAL
+       und die found / added / collision Stringstatistiken.
+   LDMud 3.2.10 fuegte die Erzeugungszeit zu DINFO_DUMP:"objects" hinzu,
+       entfernte DID_MEM_UNUSED aus DINFO_DATA:DID_MEMORY, fuegte
+       DINFO_DATA:DID_STATUS DID_ST_BOOT_TIME, DID_ST_MB_FILE und
+       DID_ST_MB_SWAP hinzu und entfernte DID_ST_CALLOUT_SLOTS daraus,
+       fuegte das dritte Argument zu DINFO_OBJLIST hinzu, und veraenderte
+       die Bedeutung von DID_ST_CALLOUT_SIZE und DID_ST_HBEAT_SIZE
+       bzw. _SLOTS.
+   LDMud 3.3.533 fuegte DID_MEM_AVL_NODES zu DINFO_DATA:DID_MEMORY
+       hinzu.
+   LDMud 3.3.603 fuegte DID_MEM_EXT_STATISTICS zu DINFO_DATA:DID_MEMORY
+       hinzu.
+   LDMud 3.3.718 fuegte DIT_CURRENT_DEPTH to DINFO_TRACE hinzu.
+   LDMud 3.3.719 fuegte DINFO_EVAL_NUMBER hinzu.
+
 
 SIEHE AUCH
-        trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
+==========
+
+   trace(E), traceprefix(E), malloc(D), status(D), dumpallobj(D)
diff --git a/doc/sefun/deep_present b/doc/sefun/deep_present
index 78c0983..c3f673a 100644
--- a/doc/sefun/deep_present
+++ b/doc/sefun/deep_present
@@ -1,21 +1,40 @@
-FUNKTION:
-        object deep_present(string what)
-        object deep_present(object what)
-        object deep_present(string what, object ob)
-        object deep_present(object what, object ob)
 
-ARGUMENTE:
-        what - Objekt oder ID des Objektes, nach dem gesucht werden soll
-        ob - Objekt, in dem gesucht werden soll
+deep_present()
+**************
 
-BESCHREIBUNG:
-        deep_present() sucht in this_object() (oder in ob, falls angegeben)
-        nach dem Objekt what oder einem Objekt, das auf what anspricht.
-        Im Gegensatz zu present() wird aber das komplette Inventory berueck-
-        sichtigt (also zB. auch der Inhalt von Beuteln).
 
-RUECKGABEWERT:
-        das gefundene Objekt oder 0
+FUNKTION
+========
 
-SIEHE AUCH:
-        present(E)
+   object deep_present(string what)
+   object deep_present(object what)
+   object deep_present(string what, object ob)
+   object deep_present(object what, object ob)
+
+
+ARGUMENTE
+=========
+
+   what - Objekt oder ID des Objektes, nach dem gesucht werden soll
+   ob - Objekt, in dem gesucht werden soll
+
+
+BESCHREIBUNG
+============
+
+   deep_present() sucht in this_object() (oder in ob, falls angegeben)
+   nach dem Objekt what oder einem Objekt, das auf what anspricht.
+   Im Gegensatz zu present() wird aber das komplette Inventory berueck-
+   sichtigt (also zB. auch der Inhalt von Beuteln).
+
+
+RUECKGABEWERT
+=============
+
+   das gefundene Objekt oder 0
+
+
+SIEHE AUCH
+==========
+
+   present(E)
diff --git a/doc/sefun/dtime b/doc/sefun/dtime
index 6624642..dac7dd0 100644
--- a/doc/sefun/dtime
+++ b/doc/sefun/dtime
@@ -1,24 +1,49 @@
-FUNKTION:
-	string dtime(int time)
 
-ARGUMENTE:
-	time - Umzuwandelndes Datum in Sekunden seit 1.1.1970, 0:0:0h
+dtime()
+*******
 
-BESCHREIBUNG:
-	Wandelt das Datum time in einen deutschsprachigen String der Form
-	"<wtag>, <tag>. <mon> <jahr>, <std>:<min>:<sek>" um.
 
-RUECKGABEWERT:
-	Der String mit dem umgewandelten Datum.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Als time wird meistens das Ergebnis von time() benutzt.
-  strftime() stellt eine wesentlich flexiblere Moeglichkeit der Ausgabe von
-  Zeiten dar.
+   string dtime(int time)
 
-BEISPIELE:
-	datum = dtime(time());
-        => datum = "Mon,  6. Mar 1994, 15:00:08"
 
-SIEHE AUCH:
-	ctime(E), strftime(E), time(E)
+ARGUMENTE
+=========
+
+   time - Umzuwandelndes Datum in Sekunden seit 1.1.1970, 0:0:0h
+
+
+BESCHREIBUNG
+============
+
+   Wandelt das Datum time in einen deutschsprachigen String der Form
+   "<wtag>, <tag>. <mon> <jahr>, <std>:<min>:<sek>" um.
+
+
+RUECKGABEWERT
+=============
+
+   Der String mit dem umgewandelten Datum.
+
+
+BEMERKUNGEN
+===========
+
+         Als time wird meistens das Ergebnis von time() benutzt.
+   strftime() stellt eine wesentlich flexiblere Moeglichkeit der Ausgabe von
+   Zeiten dar.
+
+
+BEISPIELE
+=========
+
+   datum = dtime(time());
+   => datum = "Mon,  6. Mar 1994, 15:00:08"
+
+
+SIEHE AUCH
+==========
+
+   ctime(E), strftime(E), time(E)
diff --git a/doc/sefun/dump_netdead b/doc/sefun/dump_netdead
index c73b2c0..b5b480a 100644
--- a/doc/sefun/dump_netdead
+++ b/doc/sefun/dump_netdead
@@ -1,13 +1,29 @@
-FUNKTION:
-        string *dump_netdead()
 
-BESCHREIBUNG:
-        Gibt ein Array mit den Namen aller zur Zeit netztoten Spieler
-        zurueck.
+dump_netdead()
+**************
 
-RUECKGABEWERT:
-        Ein Stringarray mit den Namen der netztoten Spieler.
-        gibt.
 
-SIEHE AUCH:
-        find_netdead(E)
+FUNKTION
+========
+
+   string *dump_netdead()
+
+
+BESCHREIBUNG
+============
+
+   Gibt ein Array mit den Namen aller zur Zeit netztoten Spieler
+   zurueck.
+
+
+RUECKGABEWERT
+=============
+
+   Ein Stringarray mit den Namen der netztoten Spieler.
+   gibt.
+
+
+SIEHE AUCH
+==========
+
+   find_netdead(E)
diff --git a/doc/sefun/enable_commands b/doc/sefun/enable_commands
index 6508b5f..593fb31 100644
--- a/doc/sefun/enable_commands
+++ b/doc/sefun/enable_commands
@@ -1,26 +1,42 @@
+
+enable_commands()
+*****************
+
+
 SYNOPSIS
-        void enable_commands();
+========
+
+   void enable_commands();
+
 
 BESCHREIBUNG
-        Erlaubt dem Objekt, Kommandos zu verwenden, die normalerweise Usern
-        zugaenglich sind. Der Aufruf markiert das Objekt als "living". Dies
-        wird fuer Spieler und alle von /std/npc abgeleiteten Objekte
-        bereits von der Mudlib erledigt und sollte nicht nochmals gemacht
-        werden.
+============
 
-        Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
-        Compat-Modus) aufgerufen werden, weil der Kommandogeber auf dieses
-        Objekt gesetzt wird.
+   Erlaubt dem Objekt, Kommandos zu verwenden, die normalerweise Usern
+   zugaenglich sind. Der Aufruf markiert das Objekt als "living". Dies
+   wird fuer Spieler und alle von /std/npc abgeleiteten Objekte
+   bereits von der Mudlib erledigt und sollte nicht nochmals gemacht
+   werden.
+
+   Diese Funktion darf nicht ausserhalb von create() (oder reset(0) im
+   Compat-Modus) aufgerufen werden, weil der Kommandogeber auf dieses
+   Objekt gesetzt wird.
+
 
 BEISPIEL
-        void create()
-        {
-            enable_commands();
-            ...
-        }
+========
 
-        Dies markiert das Objekt als "living".
+   void create()
+   {
+       enable_commands();
+       ...
+   }
+
+   Dies markiert das Objekt als "living".
+
 
 SIEHE AUCH
-        command(E), living(E), disable_commands(E), native(C), hooks(C)
-        set_living_name(E)
+==========
+
+   command(E), living(E), disable_commands(E), native(C), hooks(C)
+   set_living_name(E)
diff --git a/doc/sefun/file_time b/doc/sefun/file_time
index 6c24baa..ddaefce 100644
--- a/doc/sefun/file_time
+++ b/doc/sefun/file_time
@@ -1,5 +1,13 @@
-FUNKTION:
-	int file_time(string filename);
 
-Liefert den Zeitpunkt der letzten Modifikation des Files in Sekunden seit
-dem 1.1.1970, 0:00. Kann per ctime() in ein lesbares Format gebracht werden.
+file_time()
+***********
+
+
+FUNKTION
+========
+
+   int file_time(string filename);
+
+Liefert den Zeitpunkt der letzten Modifikation des Files in Sekunden
+seit dem 1.1.1970, 0:00. Kann per ctime() in ein lesbares Format
+gebracht werden.
diff --git a/doc/sefun/find_living b/doc/sefun/find_living
index 106dd63..5930695 100644
--- a/doc/sefun/find_living
+++ b/doc/sefun/find_living
@@ -1,22 +1,42 @@
-SYNOPSIS:
-        object find_living(string str)
 
-BESCHREIBUNG:
-        Findet das erste "lebende" Objekt, welches per set_living_name() den
-        Namen <str> setzte.
-        
-        Das Objekt muss ausserdem per enable_commands() als Lebewesen
-        markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
-        _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
-        werden.
+find_living()
+*************
 
-BEISPIEL:
-        object ob;
-        ob = find_living("Public Enemy");
 
-SIEHE AUCH:
-        find_player(E), enable_commands(E), set_living_name(E)
+SYNOPSIS
+========
 
-LETZTE AeNDERUNG:
+   object find_living(string str)
+
+
+BESCHREIBUNG
+============
+
+   Findet das erste "lebende" Objekt, welches per set_living_name() den
+   Namen <str> setzte.
+
+
+
+   Das Objekt muss ausserdem per enable_commands() als Lebewesen
+   markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
+   _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
+   werden.
+
+
+BEISPIEL
+========
+
+   object ob;
+   ob = find_living("Public Enemy");
+
+
+SIEHE AUCH
+==========
+
+   find_player(E), enable_commands(E), set_living_name(E)
+
+
+LETZTE AeNDERUNG
+================
+
 09.10.2011, Zesstra
-
diff --git a/doc/sefun/find_livings b/doc/sefun/find_livings
index cc9228f..7f8f9b1 100644
--- a/doc/sefun/find_livings
+++ b/doc/sefun/find_livings
@@ -1,24 +1,49 @@
-FUNKTION:
-        object *find_livings(string name)
 
-ARGUMENTE:
-        name - der living_name der gesuchten Lebewesen
+find_livings()
+**************
 
-BESCHREIBUNG:
-        Diese Funktion liefert ein Array mit allen Lebewesen, die den gleichen
-        living_name haben.
 
-RUECKGABEWERT:
-        Array mit den Lebewesen oder 0, wenn es kein Lebewesen diesen Namens
-        gibt.
+FUNKTION
+========
 
-BEISPIELE:
-        ob = find_livings("herkules");
-        => ob = ({ [/human:herkules], 
-                   [/d/inseln/wargon/luftschloss/mon/herkules] })
+   object *find_livings(string name)
 
-SIEHE AUCH:
-        find_living(E), set_living_name(E), find_player(E), find_netdead(E)
 
-LETZTE AENDERUNG:
+ARGUMENTE
+=========
+
+   name - der living_name der gesuchten Lebewesen
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert ein Array mit allen Lebewesen, die den gleichen
+   living_name haben.
+
+
+RUECKGABEWERT
+=============
+
+   Array mit den Lebewesen oder 0, wenn es kein Lebewesen diesen Namens
+   gibt.
+
+
+BEISPIELE
+=========
+
+   ob = find_livings("herkules");
+   => ob = ({ [/human:herkules],
+              [/d/inseln/wargon/luftschloss/mon/herkules] })
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), set_living_name(E), find_player(E), find_netdead(E)
+
+
+LETZTE AENDERUNG
+================
+
 19. Okt. 2015, Arathorn
diff --git a/doc/sefun/find_netdead b/doc/sefun/find_netdead
index d44ee9e..8686436 100644
--- a/doc/sefun/find_netdead
+++ b/doc/sefun/find_netdead
@@ -1,25 +1,46 @@
-FUNKTION:
-        object find_netdead(string name)
 
-ARGUMENTE:
-        name - Name des gesuchten Spielers
-
-BESCHREIBUNG:
-        Falls der Spieler name netztot ist, liefert diese Funktion das Spieler-
-        objekt zurueck.
-
-        Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
-        nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
-        UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
-        zurueckliefern, wenn das die UUID "Jof_1234" hat).
+find_netdead()
+**************
 
 
-RUECKGABEWERT:
-        Der netztote Spieler oder 0, falls es keinen Netztoten diesen Namens
-        gibt.
+FUNKTION
+========
 
-SIEHE AUCH:
-        find_living(E), find_player(E)
+   object find_netdead(string name)
 
-LETZT AeNDERUNG:
+
+ARGUMENTE
+=========
+
+   name - Name des gesuchten Spielers
+
+
+BESCHREIBUNG
+============
+
+   Falls der Spieler name netztot ist, liefert diese Funktion das Spieler-
+   objekt zurueck.
+
+   Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
+   nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
+   UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
+   zurueckliefern, wenn das die UUID "Jof_1234" hat).
+
+
+RUECKGABEWERT
+=============
+
+   Der netztote Spieler oder 0, falls es keinen Netztoten diesen Namens
+   gibt.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_player(E)
+
+
+LETZT AeNDERUNG
+===============
+
 06.01.2009, Zesstra
diff --git a/doc/sefun/find_player b/doc/sefun/find_player
index 57c85f3..048b105 100644
--- a/doc/sefun/find_player
+++ b/doc/sefun/find_player
@@ -1,42 +1,60 @@
-FUNKTION:
-        object find_player(string uid)
 
-BESCHREIBUNG:
-        Findet den Spieler mit dem Namen bzw. der User-ID <uid>.
-        
-        Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
-        nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
-        UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
-        zurueckliefern, wenn das die UUID "Jof_1234" hat).
+find_player()
+*************
 
-        Rueckgabewert ist das Spielerobjekt (wenn Spieler anwesend),
-        ansonsten 0.
 
-BEISPIEL:
+FUNKTION
+========
 
-        object ob;
-        ob = find_player("deepthought");
+   object find_player(string uid)
 
-        if(ob)
-          tell_object(ob,"Tach Du!\n");
 
-        oder auch 
+BESCHREIBUNG
+============
 
-        if(ob = find_player("deepthought"))
-          tell_object(ob,"Tach Du!\n");
+   Findet den Spieler mit dem Namen bzw. der User-ID <uid>.
 
-ANMERKUNGEN:
 
-        Via find_player() werden auch unsichtbare Magier gefunden. In 
-        Objekten, die fuer Spieler gedacht sind, muss dies dann extra
-        per Abfrage auf if(ob->QueryProp(P_INVIS)) getestet werden.
 
-        Netztote Spieler und Monster werden nicht gefunden da find_player
-        den Namen aus set_living_name() verwendet, der in player.c ge-
-        setzt wird.
-        
-SIEHE AUCH:
-        find_living(E), set_living_name(E), find_object(E), find_netdead(E)
+   Akzeptiert auch die UUID statt einer UID. In diesem Fall erfolgt aber
+   nur eine Pruefung, ob die UID des gefundenen Spielers zur angegebenen
+   UUID passt (d.h. "jof_-1" wuerde dann ggf. auch das Spielerobjekt Jof
+   zurueckliefern, wenn das die UUID "Jof_1234" hat).
 
-----------------------------------------------------------------------------
-Letzte Aenderung: 06.01.2009, Zesstra 
+   Rueckgabewert ist das Spielerobjekt (wenn Spieler anwesend),
+   ansonsten 0.
+
+
+BEISPIEL
+========
+
+   object ob;
+   ob = find_player("deepthought");
+
+   if(ob)
+     tell_object(ob,"Tach Du!\n");
+
+   oder auch
+
+   if(ob = find_player("deepthought"))
+     tell_object(ob,"Tach Du!\n");
+
+
+ANMERKUNGEN
+===========
+
+   Via find_player() werden auch unsichtbare Magier gefunden. In
+   Objekten, die fuer Spieler gedacht sind, muss dies dann extra
+   per Abfrage auf if(ob->QueryProp(P_INVIS)) getestet werden.
+
+   Netztote Spieler und Monster werden nicht gefunden da find_player
+   den Namen aus set_living_name() verwendet, der in player.c ge-
+   setzt wird.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), set_living_name(E), find_object(E), find_netdead(E)
+
+Letzte Aenderung: 06.01.2009, Zesstra
diff --git a/doc/sefun/getuuid b/doc/sefun/getuuid
index 5b34343..63ea31e 100644
--- a/doc/sefun/getuuid
+++ b/doc/sefun/getuuid
@@ -1,17 +1,29 @@
-SYNOPSIS:
-    string getuuid(object ob)
 
-DESCRIPTION:
-    Liefert eine eindeutige (get unique uid) UID fuer einen Spieler.
-    Wird zusammengesetzt aus der UID des Spielers und seinem
-    Erstlogin-Datum.
+getuuid()
+*********
 
-    Nach einer Selbstloeschung und neuem Login erhaelt der Spieler eine
-    neue UUID, bei einer Restaurierung behaelt er seine alte UUID.
 
-    Wenn die Funktion ohne Parameter aufgerufen wird, wird per Default
-    this_object() genommen.
-    
+SYNOPSIS
+========
 
-SEE ALSO:
-        getuid(E)
+   string getuuid(object ob)
+
+
+DESCRIPTION
+===========
+
+   Liefert eine eindeutige (get unique uid) UID fuer einen Spieler.
+   Wird zusammengesetzt aus der UID des Spielers und seinem
+   Erstlogin-Datum.
+
+   Nach einer Selbstloeschung und neuem Login erhaelt der Spieler eine
+   neue UUID, bei einer Restaurierung behaelt er seine alte UUID.
+
+   Wenn die Funktion ohne Parameter aufgerufen wird, wird per Default
+   this_object() genommen.
+
+
+SEE ALSO
+========
+
+   getuid(E)
diff --git a/doc/sefun/iso2ascii b/doc/sefun/iso2ascii
index fe7757a..bd64d73 100644
--- a/doc/sefun/iso2ascii
+++ b/doc/sefun/iso2ascii
@@ -1,17 +1,32 @@
-FUNKTION:
-	public string iso2ascii( string str );
 
-ARGUMENTE:
-	str
-	  String, in welchem Zeichen ersetzt werden sollen.
+iso2ascii()
+***********
 
-BESCHREIBUNG:
-	In dem String werden alle Nicht-ASCII-Zeichen durch ASCII-Zeichen
-	ersetzt, und zwar Umlaute in der bekannten Form und alle anderen
-	durch ein Fragezeichen.
 
-RUeCKGABEWERT:
-	String mit ASCII-Zeichen.
+FUNKTION
+========
 
-----------------------------------------------------------------------------
+   public string iso2ascii( string str );
+
+
+ARGUMENTE
+=========
+
+   str
+     String, in welchem Zeichen ersetzt werden sollen.
+
+
+BESCHREIBUNG
+============
+
+   In dem String werden alle Nicht-ASCII-Zeichen durch ASCII-Zeichen
+   ersetzt, und zwar Umlaute in der bekannten Form und alle anderen
+   durch ein Fragezeichen.
+
+
+RUeCKGABEWERT
+=============
+
+   String mit ASCII-Zeichen.
+
 Last modified: Fri Jul  6 19:36:09 2001 by Patryn
diff --git a/doc/sefun/log_file b/doc/sefun/log_file
index 6cdab31..a3f3cab 100644
--- a/doc/sefun/log_file
+++ b/doc/sefun/log_file
@@ -1,35 +1,59 @@
-FUNKTION:
-	int log_file(string file, string text)
-  int log_file(string file, string text, int size_to_break)
 
-ARGUMENTE:
-	file - Name der Datei, in die geschrieben werden soll
-	text - Der Text, der geschrieben werden soll
-	size_to_break - Groesse, ab der ein neues File begonnen wird (optional)
+log_file()
+**********
 
-BESCHREIBUNG:
-	log_file schreibt den Text text in die Datei /log/file.
-	Sollte file schon mit einem /log/ beginnen, wird kein erneutes /log/ davor
-	eingefuegt.
 
-RUECKGABEWERT:
-	1 bei Erfolg oder 0, falls ein Fehler beim Schreiben auftrat.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Wenn die Groesse von file vor dem Schreiben 50000 Bytes ueberschreitet,
-	wird sie in file.old umbenannt. Eine schon vorhandene Datei file.old
-	wird dabei geloescht. Der Text wird nach dem Umbenennen geschrieben.
-	Wird 'size_to_break' angegeben und ist dies > 0, wird dieser Wert (in 
-	Bytes) statt der 50000 Bytes zum Rotieren des Logfiles benutzt.
+         int log_file(string file, string text)
+   int log_file(string file, string text, int size_to_break)
 
-BEISPIELE:
-	log_file( "report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
-	In /log/report/wargon.rep finde ich nun die neueste Typomeldung... ;)
-	log_file( "/log/report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
-	Gleiches Ergebnis. ;-)
 
-SIEHE AUCH:
-	write_file(E)
+ARGUMENTE
+=========
+
+   file - Name der Datei, in die geschrieben werden soll
+   text - Der Text, der geschrieben werden soll
+   size_to_break - Groesse, ab der ein neues File begonnen wird (optional)
+
+
+BESCHREIBUNG
+============
+
+   log_file schreibt den Text text in die Datei /log/file.
+   Sollte file schon mit einem /log/ beginnen, wird kein erneutes /log/ davor
+   eingefuegt.
+
+
+RUECKGABEWERT
+=============
+
+   1 bei Erfolg oder 0, falls ein Fehler beim Schreiben auftrat.
+
+
+BEMERKUNGEN
+===========
+
+   Wenn die Groesse von file vor dem Schreiben 50000 Bytes ueberschreitet,
+   wird sie in file.old umbenannt. Eine schon vorhandene Datei file.old
+   wird dabei geloescht. Der Text wird nach dem Umbenennen geschrieben.
+   Wird 'size_to_break' angegeben und ist dies > 0, wird dieser Wert (in
+   Bytes) statt der 50000 Bytes zum Rotieren des Logfiles benutzt.
+
+
+BEISPIELE
+=========
+
+   log_file( "report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
+   In /log/report/wargon.rep finde ich nun die neueste Typomeldung... ;)
+   log_file( "/log/report/wargon.rep", "TYPO von bla in blubb:\ntest\n");
+   Gleiches Ergebnis. ;-)
+
+
+SIEHE AUCH
+==========
+
+   write_file(E)
 
 29.01.2017, Zesstra
-
diff --git a/doc/sefun/lowerchar b/doc/sefun/lowerchar
index 0ec62bf..8e6cfdd 100644
--- a/doc/sefun/lowerchar
+++ b/doc/sefun/lowerchar
@@ -1,20 +1,42 @@
-FUNKTION:
-	int lowerchar(int char)
 
-ARGUMENTE:
-	char - Das umzuwandelnde Zeichen
+lowerchar()
+***********
 
-BESCHREIBUNG:
-	Wenn char ein Grossbuchstabe ist, so wird es in einen Kleinbuchstaben
-	umgewandelt. Andere Zeichen werden von dieser Funktion nicht beein-
-        flusst.
 
-RUECKGABEWERT:
-	Das umgewandelte Zeichen.
+FUNKTION
+========
 
-BEISPIELE:
-	printf("%c\n", lowerchar('A')); => a
-	printf("%c\n", lowerchar('1')); => 1
+   int lowerchar(int char)
 
-SIEHE AUCH:
-	lower_case(E), lowerstring(E), upperstring(E), capitalize(E)
+
+ARGUMENTE
+=========
+
+   char - Das umzuwandelnde Zeichen
+
+
+BESCHREIBUNG
+============
+
+   Wenn char ein Grossbuchstabe ist, so wird es in einen Kleinbuchstaben
+   umgewandelt. Andere Zeichen werden von dieser Funktion nicht beein-
+   flusst.
+
+
+RUECKGABEWERT
+=============
+
+   Das umgewandelte Zeichen.
+
+
+BEISPIELE
+=========
+
+   printf("%c\n", lowerchar('A')); => a
+   printf("%c\n", lowerchar('1')); => 1
+
+
+SIEHE AUCH
+==========
+
+   lower_case(E), lowerstring(E), upperstring(E), capitalize(E)
diff --git a/doc/sefun/lowerstring b/doc/sefun/lowerstring
index 30748fc..a483224 100644
--- a/doc/sefun/lowerstring
+++ b/doc/sefun/lowerstring
@@ -1,20 +1,45 @@
-FUNKTION:
-	string lowerstring(string str)
 
-ARGUMENTE:
-	str - Der umzuwandelnde String.
+lowerstring()
+*************
 
-BESCHREIBUNG:
-	Alle Grossbuchstaben in str werden in Kleinbuchstaben umgewandelt.
 
-RUECKGABEWERT:
-	Der umgewandelte String.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	lowerstring ist mit lower_case identisch!
+   string lowerstring(string str)
 
-BEISPIELE:
-	s = lowerstring("So, McLaud...\n"); => s = "so, mclaud...\n"
 
-SIEHE AUCH:
-	lower_case(E), lowerchar(E), upperstring(E), capitalize(E)
+ARGUMENTE
+=========
+
+   str - Der umzuwandelnde String.
+
+
+BESCHREIBUNG
+============
+
+   Alle Grossbuchstaben in str werden in Kleinbuchstaben umgewandelt.
+
+
+RUECKGABEWERT
+=============
+
+   Der umgewandelte String.
+
+
+BEMERKUNGEN
+===========
+
+   lowerstring ist mit lower_case identisch!
+
+
+BEISPIELE
+=========
+
+   s = lowerstring("So, McLaud...\n"); => s = "so, mclaud...\n"
+
+
+SIEHE AUCH
+==========
+
+   lower_case(E), lowerchar(E), upperstring(E), capitalize(E)
diff --git a/doc/sefun/m_copy_delete b/doc/sefun/m_copy_delete
index cb1c97b..9aa90f2 100644
--- a/doc/sefun/m_copy_delete
+++ b/doc/sefun/m_copy_delete
@@ -1,43 +1,68 @@
-FUNKTION:
-	mapping m_copy_delete(mapping map, mixed key)
 
-ARGUMENTE:
-	map - das Mapping, aus dem geloescht werden soll.
-	key - der zu loeschende Eintrag
+m_copy_delete()
+***************
 
-BESCHREIBUNG:
-	Aus dem Mapping map wird der Eintrag key geloescht (wenn er in map vor-
-	handen ist). map wird dabei nicht veraendert.
 
-RUECKGABEWERT:
-	Eine (flache !) Kopie von map ohne den Eintrag key, d.h. enthaltene
-	Mappings/Arrays werden nicht kopiert.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Das urspruengliche Mapping wird bei dieser Operation nicht veraendert!
-	Wenn man nur einen Wert aus dem Mapping loeschen will und die Kopie nicht
-	braucht, bietet sich efun::m_delete(mapping,key) sehr an, da die Erstellung
-  einer Kopie sehr aufwendig sein kann.
+   mapping m_copy_delete(mapping map, mixed key)
 
-BEISPIELE:
-	mapping m1, m2;
 
-        m1 = ([ "a":1, "b":2, "c":3 ]);
+ARGUMENTE
+=========
 
-        m2 = m_copy_delete(m1, "b");
-           => m1 = ([ "a":1, "b":2, "c":3 ])
-	      m2 = ([ "a":1, "c":3 ])
+   map - das Mapping, aus dem geloescht werden soll.
+   key - der zu loeschende Eintrag
 
-        m_copy_delete(m1, "a");
-           => (es hat sich nichts geaendert)
 
-        m1 = m_copy_delete(m1, "a");
-           => m1 = ([ "b":2, "c":3 ])
+BESCHREIBUNG
+============
 
-        Im letzten Fall sollte aber besser efun::m_delete(m1, "a") benutzt 
-        werden, da ansonsten das Mapping unnoetig kopiert wird und Rechen-
-        leistung frisst. 
+   Aus dem Mapping map wird der Eintrag key geloescht (wenn er in map vor-
+   handen ist). map wird dabei nicht veraendert.
 
-SIEHE AUCH:
-  efun::m_delete(E), mappingp(E), mkmapping(E), m_indices,(E) m_values(E),
-  sizeof(E), widthof(E)
+
+RUECKGABEWERT
+=============
+
+   Eine (flache !) Kopie von map ohne den Eintrag key, d.h. enthaltene
+   Mappings/Arrays werden nicht kopiert.
+
+
+BEMERKUNGEN
+===========
+
+         Das urspruengliche Mapping wird bei dieser Operation nicht veraendert!
+         Wenn man nur einen Wert aus dem Mapping loeschen will und die Kopie nicht
+         braucht, bietet sich efun::m_delete(mapping,key) sehr an, da die Erstellung
+   einer Kopie sehr aufwendig sein kann.
+
+
+BEISPIELE
+=========
+
+   mapping m1, m2;
+
+   m1 = ([ "a":1, "b":2, "c":3 ]);
+
+   m2 = m_copy_delete(m1, "b");
+      => m1 = ([ "a":1, "b":2, "c":3 ])
+         m2 = ([ "a":1, "c":3 ])
+
+   m_copy_delete(m1, "a");
+      => (es hat sich nichts geaendert)
+
+   m1 = m_copy_delete(m1, "a");
+      => m1 = ([ "b":2, "c":3 ])
+
+   Im letzten Fall sollte aber besser efun::m_delete(m1, "a") benutzt
+   werden, da ansonsten das Mapping unnoetig kopiert wird und Rechen-
+   leistung frisst.
+
+
+SIEHE AUCH
+==========
+
+   efun::m_delete(E), mappingp(E), mkmapping(E), m_indices,(E) m_values(E),
+   sizeof(E), widthof(E)
diff --git a/doc/sefun/match_living b/doc/sefun/match_living
index 44801a8..5cb347b 100644
--- a/doc/sefun/match_living
+++ b/doc/sefun/match_living
@@ -1,30 +1,52 @@
+
+match_living()
+**************
+
 match_living(sefun)
-FUNKTION:
-     varargs mixed match_living( string str, int players_only,
-				 string *exclude)
-
-ARGUMENTE:
-     string str		- Kuerzel, nach dem die living_names durchsucht
-			  werden soll
-     int players_only	- 1, um nur Spieler (Interactives) zu suchen
-     string *exlude	- welche Namen sollen ignoriert werden
 
 
-BESCHREIBUNG:
-     Sucht alle Lebewesen, deren Namen mit str beginnen.
+FUNKTION
+========
 
-RUECKGABEWERT:
-     Ein String, falls es ein Lebewesen mit dem Namen str gibt (der Name
-     muss genau passen).
-     -1, wenn es mehrere Lebewesen gibt, deren Namen mit str beginnen.
-     -2, wenn es kein Lebewesen gibt, dessen Name mit str beginnt.
+   varargs mixed match_living( string str, int players_only,
+                               string *exclude)
 
-BEISPIELE:
-     match_living("wargon"); => "wargon", wenn Wargon eingeloggt ist.
-     match_living("war");    => "wargon", wenn es kein anderes Lebewesen
-                                gibt, dessen Name mit "war" beginnt.
 
-SIEHE AUCH:
-     find_living(E), find_player(E), find_netdead(E)
+ARGUMENTE
+=========
+
+   string str         - Kuerzel, nach dem die living_names durchsucht
+                        werden soll
+   int players_only   - 1, um nur Spieler (Interactives) zu suchen
+   string *exlude     - welche Namen sollen ignoriert werden
+
+
+BESCHREIBUNG
+============
+
+   Sucht alle Lebewesen, deren Namen mit str beginnen.
+
+
+RUECKGABEWERT
+=============
+
+   Ein String, falls es ein Lebewesen mit dem Namen str gibt (der Name
+   muss genau passen).
+   -1, wenn es mehrere Lebewesen gibt, deren Namen mit str beginnen.
+   -2, wenn es kein Lebewesen gibt, dessen Name mit str beginnt.
+
+
+BEISPIELE
+=========
+
+   match_living("wargon"); => "wargon", wenn Wargon eingeloggt ist.
+   match_living("war");    => "wargon", wenn es kein anderes Lebewesen
+                              gibt, dessen Name mit "war" beginnt.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_player(E), find_netdead(E)
 
 27. Mai 2004 Gloinson
diff --git a/doc/sefun/md5 b/doc/sefun/md5
index 1e65090..f48dcc8 100644
--- a/doc/sefun/md5
+++ b/doc/sefun/md5
@@ -1,30 +1,52 @@
+
+md5()
+*****
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        string md5 (string arg [ , int iterations ] )
-        string md5 (int *  arg [ , int iterations ] )
+========
+
+   string md5 (string arg [ , int iterations ] )
+   string md5 (int *  arg [ , int iterations ] )
+
 
 BESCHREIBUNG
-        Berechnet den MD5-Hashwert von <arg>.
-        Das Argument kann ein String, oder ein Array von Zahlen sein (von
-        welchen nur das unterste Byte betrachted wird).
+============
 
-        Das Ergebnis wird als 32-stelliger Hexadezimalwert geliefert.
+   Berechnet den MD5-Hashwert von <arg>.
+   Das Argument kann ein String, oder ein Array von Zahlen sein (von
+   welchen nur das unterste Byte betrachted wird).
 
-        Ist das <iterations> Argument eine Zahl groesser 0, berechnet der
-        Driver den Digest mit diese Anzahl an Wiederholungen. Fehlt die
-        Angabe, fuehrt der Driver die Digest-Berechnung einmal aus.
+   Das Ergebnis wird als 32-stelliger Hexadezimalwert geliefert.
+
+   Ist das <iterations> Argument eine Zahl groesser 0, berechnet der
+   Driver den Digest mit diese Anzahl an Wiederholungen. Fehlt die
+   Angabe, fuehrt der Driver die Digest-Berechnung einmal aus.
+
 
 BEISPIEL
-        string s;
+========
 
-        s = md5("Hallo");
-        s = md5( ({ 'H', 'e', 'l', 'l', 'o' }) )
-        s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
+   string s;
+
+   s = md5("Hallo");
+   s = md5( ({ 'H', 'e', 'l', 'l', 'o' }) )
+   s = md5( ({ 'H', 'e', 'l', 'l', 'o' }), 2 )
+
 
 AENDERUNGEN
-        Eingefuehrt in LDMud 3.2.9
-        LDMud 3.2.12 fuehrte Zaehlenarrays als Argument ein, also auch
-          die Anzahl der Wiederholungen.
+===========
+
+   Eingefuehrt in LDMud 3.2.9
+   LDMud 3.2.12 fuehrte Zaehlenarrays als Argument ein, also auch
+     die Anzahl der Wiederholungen.
+
 
 SIEHE AUCH
-        crypt(E), md5_crypt(E), sha1(E), hash(E), hmac(E)
+==========
+
+   crypt(E), md5_crypt(E), sha1(E), hash(E), hmac(E)
diff --git a/doc/sefun/mkdirp b/doc/sefun/mkdirp
index a05d4e6..2bb9d06 100644
--- a/doc/sefun/mkdirp
+++ b/doc/sefun/mkdirp
@@ -1,21 +1,42 @@
-FUNKTION:
-        int mkdirp(string dir)
 
-ARGUMENTE:
-        dir - Name des zu erstellenden Verzeichnisses (absolut)
+mkdirp()
+********
 
-BESCHREIBUNG:
-        Erzeugt das Verzeichnis <dir>. Dies muss als abs. Pfad angegeben
-        werden.
-        Wenn noetig, wird die ganze Verzeichnishierarchie rekursiv erstellt.
-        
-RUECKGABEWERT:
-        0 - Verzeichnis konnte nicht erstellt werden
-        1 - Verzeichnis wurde erstellt oder existierte bereits
 
-SIEHE AUCH:
-        mkdir(E)
+FUNKTION
+========
 
-LETZT AeNDERUNG:
+   int mkdirp(string dir)
+
+
+ARGUMENTE
+=========
+
+   dir - Name des zu erstellenden Verzeichnisses (absolut)
+
+
+BESCHREIBUNG
+============
+
+   Erzeugt das Verzeichnis <dir>. Dies muss als abs. Pfad angegeben
+   werden.
+   Wenn noetig, wird die ganze Verzeichnishierarchie rekursiv erstellt.
+
+
+RUECKGABEWERT
+=============
+
+   0 - Verzeichnis konnte nicht erstellt werden
+   1 - Verzeichnis wurde erstellt oder existierte bereits
+
+
+SIEHE AUCH
+==========
+
+   mkdir(E)
+
+
+LETZT AeNDERUNG
+===============
+
 26.01.2013, Zesstra
-
diff --git a/doc/sefun/notify_fail b/doc/sefun/notify_fail
index 1970367..85b700a 100644
--- a/doc/sefun/notify_fail
+++ b/doc/sefun/notify_fail
@@ -1,85 +1,107 @@
-FUNKTION:
-     #include <notify_fail.h>
 
-     varargs void notify_fail(string str, int prio)
-     varargs void notify_fail(closure cl, int prio)
+notify_fail()
+*************
 
-ARGUMENTE:
-     str   Meldung die an den Spieler anstatt des 'Wie bitte' ausgegeben
-           werden soll
-     cl    Closure, die bei Fehlschlag ausgefuehrt werden soll
-     prio  Prioritaet dieses Objekts bei diesem Setzen der Meldung
 
-BESCHREIBUNG:
-     Merkt sich den angegebenen str und gibt ihn im Falle einer inkorrekten
-     Eingabe des Spielers anstatt eines 'Wie bitte' aus.
+FUNKTION
+========
 
-     Gedacht ist notify_fail, um dem Spieler eine bessere Hilfestellung
-     bei Kommandos / Eingaben zu geben, um ihn u.U. auf die richtige
-     Syntax hinzuweisen.
+   #include <notify_fail.h>
 
-     Wird notify_fail mehrfach (durch verschiedene Objekte o.ae.) auf-
-     gerufen, wird der letzte erfolgreiche Aufruf gewertet. Eine Meldung wird
-     dann tatsaechlich gesetzt, wenn die Prioritaet dieses Objekts gleich
-     gross oder groesser ist als die Prioritaet des Objekts, was das bisher
-     gueltige notify_fail() gesetzt hat. Folgende Prioritaeten sind
-     vordefiniert und werden automatisch ermittelt:
-     NF_NL_OWN    100         // eigenes Objekt (soul) ueberschreibt kaum was
-     NF_NL_THING  100000
-     NF_NL_ROOM   1000000     // Raeume ueberschreiben sonstigen Krams
-     NF_NL_LIVING 10000000    // Lebewesen ueberschreiben auch Raeume
-     2 weitere vordefinierte koennen von Magier angegeben werden:
-     NF_NL_NONE   -1          // wird von allem ueberschrieben
-     NF_NL_MAX    __INT_MAX__ // hoechste Prioritaet, ueberschreibt alles
+   varargs void notify_fail(string str, int prio)
+   varargs void notify_fail(closure cl, int prio)
 
-     Wird eine Closure als Argument gegeben, wird sie im Fehlerfall
-     (also erst wenn ein Kommando endgueltig fehlgeschlagen hat)
-     ausgefuehrt und hat die Fehlermeldung als Resultat
-     zurueckzugeben. Die Closure erhaelt als Argument den
-     originalen Befehlsgeber; in der Regel dies ist this_player(),
-     was aber vom MODIFY_CMD hook geaendert werden kann.
 
-     notify_fail() erkennt verschachtelte Kommandos (siehe Efun
-     command()), und ein notify_fail() in einem Unterkommando
-     hat keinen Einfluss auf das uebergeordnete Kommando.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-     - solange man sich nicht absolut sicher ist, dass ein bestimmtes Objekt
-       mit dem Kommando gemeint ist (Identifikation ueber id()), sollte man
-       - notify_fail(str); return 0;
-       nutzen anstatt mit
-       - write(str) return 1;
-       die Kommandoauswertung abzubrechen (und anderen Objekten die Chance
-       zu nehmen das Kommando zu erfuellen)
-     - Kommandos werden uebrigens oft erst vom betretenen Raum, dann von den
-       Objekten abgearbeitet (je nachdem wann diese dazukamen)
-     - die Prioritaet wird momentan nicht gespeichert, sie ist nur beim Setzen
-       relevant. Will spaeter ein anderes Objekt eine Meldung setzen, wird
-       fuer das eigene Objekt die Standardprioritaet ermittelt, auch wenn man
-       eine andere hier uebergeben hat
-     - Die NF_NL_* sind in /sys/notify_fail.h defniert.
+   str   Meldung die an den Spieler anstatt des 'Wie bitte' ausgegeben
+         werden soll
+   cl    Closure, die bei Fehlschlag ausgefuehrt werden soll
+   prio  Prioritaet dieses Objekts bei diesem Setzen der Meldung
 
-BEISPIELE:
-     Ein Raum erwartet die korrekte Eingabe von 'iss suppe':
 
-     int iss_cmd(string str){
-       // zu Anfang der Funktion das notify_fail definieren
-       notify_fail("Moechtest Du vielleicht von der Suppe essen?\n");
+BESCHREIBUNG
+============
 
-       // Spieler hat nur 'iss' ohne Parameter eingegeben oder einen anderen
-       // Parameter angegeben ... Abbruch!
-       // Falls kein weiteres Objekt das Kommando erfuellt oder das
-       // notify_fail() mit einer eigenen Meldung ueberschreibt, wird obige
-       // Meldung an den Spieler ausgegeben.
+   Merkt sich den angegebenen str und gibt ihn im Falle einer inkorrekten
+   Eingabe des Spielers anstatt eines 'Wie bitte' aus.
 
-       if(!str || str!="suppe") return 0;
-       // ab hier ist die Eingabe dann wirklich 'suppe' und die Funktion
-       // kann beliebig fortgefuehrt werden
-       ...
-       return   1;
+   Gedacht ist notify_fail, um dem Spieler eine bessere Hilfestellung
+   bei Kommandos / Eingaben zu geben, um ihn u.U. auf die richtige
+   Syntax hinzuweisen.
 
-SIEHE AUCH:
-     add_action(E), AddCmd(L), AddAction(L),
-     query_verb(E), query_notify_fail(E)
+   Wird notify_fail mehrfach (durch verschiedene Objekte o.ae.) auf-
+   gerufen, wird der letzte erfolgreiche Aufruf gewertet. Eine Meldung wird
+   dann tatsaechlich gesetzt, wenn die Prioritaet dieses Objekts gleich
+   gross oder groesser ist als die Prioritaet des Objekts, was das bisher
+   gueltige notify_fail() gesetzt hat. Folgende Prioritaeten sind
+   vordefiniert und werden automatisch ermittelt:
+   NF_NL_OWN    100         // eigenes Objekt (soul) ueberschreibt kaum was
+   NF_NL_THING  100000
+   NF_NL_ROOM   1000000     // Raeume ueberschreiben sonstigen Krams
+   NF_NL_LIVING 10000000    // Lebewesen ueberschreiben auch Raeume
+   2 weitere vordefinierte koennen von Magier angegeben werden:
+   NF_NL_NONE   -1          // wird von allem ueberschrieben
+   NF_NL_MAX    __INT_MAX__ // hoechste Prioritaet, ueberschreibt alles
+
+   Wird eine Closure als Argument gegeben, wird sie im Fehlerfall
+   (also erst wenn ein Kommando endgueltig fehlgeschlagen hat)
+   ausgefuehrt und hat die Fehlermeldung als Resultat
+   zurueckzugeben. Die Closure erhaelt als Argument den
+   originalen Befehlsgeber; in der Regel dies ist this_player(),
+   was aber vom MODIFY_CMD hook geaendert werden kann.
+
+   notify_fail() erkennt verschachtelte Kommandos (siehe Efun
+   command()), und ein notify_fail() in einem Unterkommando
+   hat keinen Einfluss auf das uebergeordnete Kommando.
+
+
+BEMERKUNGEN
+===========
+
+   - solange man sich nicht absolut sicher ist, dass ein bestimmtes Objekt
+     mit dem Kommando gemeint ist (Identifikation ueber id()), sollte man
+     - notify_fail(str); return 0;
+     nutzen anstatt mit
+     - write(str) return 1;
+     die Kommandoauswertung abzubrechen (und anderen Objekten die Chance
+     zu nehmen das Kommando zu erfuellen)
+   - Kommandos werden uebrigens oft erst vom betretenen Raum, dann von den
+     Objekten abgearbeitet (je nachdem wann diese dazukamen)
+   - die Prioritaet wird momentan nicht gespeichert, sie ist nur beim Setzen
+     relevant. Will spaeter ein anderes Objekt eine Meldung setzen, wird
+     fuer das eigene Objekt die Standardprioritaet ermittelt, auch wenn man
+     eine andere hier uebergeben hat
+   - Die NF_NL_* sind in /sys/notify_fail.h defniert.
+
+
+BEISPIELE
+=========
+
+   Ein Raum erwartet die korrekte Eingabe von 'iss suppe':
+
+   int iss_cmd(string str){
+     // zu Anfang der Funktion das notify_fail definieren
+     notify_fail("Moechtest Du vielleicht von der Suppe essen?\n");
+
+     // Spieler hat nur 'iss' ohne Parameter eingegeben oder einen anderen
+     // Parameter angegeben ... Abbruch!
+     // Falls kein weiteres Objekt das Kommando erfuellt oder das
+     // notify_fail() mit einer eigenen Meldung ueberschreibt, wird obige
+     // Meldung an den Spieler ausgegeben.
+
+     if(!str || str!="suppe") return 0;
+     // ab hier ist die Eingabe dann wirklich 'suppe' und die Funktion
+     // kann beliebig fortgefuehrt werden
+     ...
+     return   1;
+
+
+SIEHE AUCH
+==========
+
+   add_action(E), AddCmd(L), AddAction(L),
+   query_verb(E), query_notify_fail(E)
 
 8.Aug 2007 Gloinson
diff --git a/doc/sefun/object_info b/doc/sefun/object_info
index 3945651..bee892e 100644
--- a/doc/sefun/object_info
+++ b/doc/sefun/object_info
@@ -1,129 +1,148 @@
-DEPRECATED
-SYNOPSIS
-        #include <objectinfo.h>
 
-        mixed * object_info(object ob, int what)
-        mixed * object_info(object ob, int what, int index)
+object_info()
+*************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <objectinfo.h>
+
+   mixed * object_info(object ob, int what)
+   mixed * object_info(object ob, int what, int index)
+
 
 DESCRIPTION
-        Returns some internal information about object <ob>, collected
-        in an array. Argument <what> determines which information is
-        returned.
+===========
 
-        The result is usually an array. However, if <index> is specified,
-        the result is the value from position <index> of the array which
-        would have been returned normally.
+   Returns some internal information about object <ob>, collected
+   in an array. Argument <what> determines which information is
+   returned.
 
-        The possible values of <what>, and the indices of the returned
-        arrays are defined in the include file <objectinfo.h>, and may
-        change in future versions of the driver!
+   The result is usually an array. However, if <index> is specified,
+   the result is the value from position <index> of the array which
+   would have been returned normally.
+
+   The possible values of <what>, and the indices of the returned
+   arrays are defined in the include file <objectinfo.h>, and may
+   change in future versions of the driver!
 
 
-        <what> == OINFO_BASIC:
+   <what> == OINFO_BASIC:
 
-          This call returns basic information about <ob>:
+     This call returns basic information about <ob>:
 
-          int [OIB_HEART_BEAT]:       1 if <ob> has a heart_beat, 0 else.
-          int [OIB_IS_WIZARD]:        1 if <ob> has the wizard flag set,
-                                        0 else.
-            This entry is always 0 when set_is_wizard() is not available.
-          int [OIB_ENABLE_COMMANDS]:  1 if <ob> can give commands, 0 else.
-          int [OIB_CLONE]:            1 if <ob> is a clone, 0 else.
-          int [OIB_DESTRUCTED]:       1 if <ob> is destructed, 0 else.
-          int [OIB_SWAPPED]:          1 if <ob> is swapped, 0 else.
-          int [OIB_ONCE_INTERACTIVE]: 1 if <ob> was once interactive, 0 else.
-          int [OIB_RESET_STATE]:      1 if <ob> is (still) reset, 0 else.
-          int [OIB_WILL_CLEAN_UP]:    1 if <ob> will call clean_up(), 0 else.
-          int [OIB_LAMBDA_REFERENCED]: 1 if <ob> has lambdas, 0 else.
-          int [OIB_SHADOW]:           1 if <ob> has a shadow structure tied
-                                        to it, 0 if not.
-          int [OIB_REPLACED]:         1 if the program for <ob> was replaced,
-                                      0 else.
-          int [OIB_NEXT_RESET]:   time of the next reset
-          int [OIB_TIME_OF_REF]:  time of the last call to <ob>
-          int [OIB_NEXT_CLEANUP]: time of the next data cleanup
-          int [OIB_REF]:          number of references to <ob>
-          int [OIB_GIGATICKS] and [OIB_TICKS]: together, these numbers
-            give the accumulated evaluation cost spend in <ob>
-          int [OIB_SWAP_NUM]:     the swap number for <ob>s program,
-                                  or -1 if not swapped.
-          int [OIB_PROG_SWAPPED]: 1 if <ob>'s program is swapped, 0 else.
-          int [OIB_VAR_SWAPPED]:  1 if <ob>'s variables are swapped, 0 else.
-          int [OIB_NAME]:         <ob>'s object name.
-          int [OIB_LOAD_NAME]:    <ob>'s load name.
-          object [OIB_NEXT_ALL]:  next object in the object list.
-          object [OIB_PREV_ALL]:  previous object in the object list.
+     int [OIB_HEART_BEAT]:       1 if <ob> has a heart_beat, 0 else.
+     int [OIB_IS_WIZARD]:        1 if <ob> has the wizard flag set,
+                                   0 else.
+       This entry is always 0 when set_is_wizard() is not available.
+     int [OIB_ENABLE_COMMANDS]:  1 if <ob> can give commands, 0 else.
+     int [OIB_CLONE]:            1 if <ob> is a clone, 0 else.
+     int [OIB_DESTRUCTED]:       1 if <ob> is destructed, 0 else.
+     int [OIB_SWAPPED]:          1 if <ob> is swapped, 0 else.
+     int [OIB_ONCE_INTERACTIVE]: 1 if <ob> was once interactive, 0 else.
+     int [OIB_RESET_STATE]:      1 if <ob> is (still) reset, 0 else.
+     int [OIB_WILL_CLEAN_UP]:    1 if <ob> will call clean_up(), 0 else.
+     int [OIB_LAMBDA_REFERENCED]: 1 if <ob> has lambdas, 0 else.
+     int [OIB_SHADOW]:           1 if <ob> has a shadow structure tied
+                                   to it, 0 if not.
+     int [OIB_REPLACED]:         1 if the program for <ob> was replaced,
+                                 0 else.
+     int [OIB_NEXT_RESET]:   time of the next reset
+     int [OIB_TIME_OF_REF]:  time of the last call to <ob>
+     int [OIB_NEXT_CLEANUP]: time of the next data cleanup
+     int [OIB_REF]:          number of references to <ob>
+     int [OIB_GIGATICKS] and [OIB_TICKS]: together, these numbers
+       give the accumulated evaluation cost spend in <ob>
+     int [OIB_SWAP_NUM]:     the swap number for <ob>s program,
+                             or -1 if not swapped.
+     int [OIB_PROG_SWAPPED]: 1 if <ob>'s program is swapped, 0 else.
+     int [OIB_VAR_SWAPPED]:  1 if <ob>'s variables are swapped, 0 else.
+     int [OIB_NAME]:         <ob>'s object name.
+     int [OIB_LOAD_NAME]:    <ob>'s load name.
+     object [OIB_NEXT_ALL]:  next object in the object list.
+     object [OIB_PREV_ALL]:  previous object in the object list.
 
 
-        <what> == OINFO_POSITION:
+   <what> == OINFO_POSITION:
 
-          This call returns information about <ob>'s position in the
-          global list of objects:
+     This call returns information about <ob>'s position in the
+     global list of objects:
 
-          object [OIP_NEXT]: next object in the object list.
-          object [OIP_PREV]: previous object in the object list.
-          int    [OIP_POS]:  position of <ob> in list, counting from 0 up.
+     object [OIP_NEXT]: next object in the object list.
+     object [OIP_PREV]: previous object in the object list.
+     int    [OIP_POS]:  position of <ob> in list, counting from 0 up.
 
-          This call can be expensive in computing time.
+     This call can be expensive in computing time.
 
 
-        <what> == OINFO_MEMORY:
+   <what> == OINFO_MEMORY:
 
-          This call returns information about the program <ob> uses:
+     This call returns information about the program <ob> uses:
 
-          int    [OIM_REF]:            number of references to the program.
-          string [OIM_NAME]:           name of program.
-          int    [OIM_PROG_SIZE]:      size of the program.
-          int    [OIM_NUM_FUNCTIONS]:  number of functions in the program.
-          int    [OIM_SIZE_FUNCTIONS]: size needed for the function structs.
-          int    [OIM_NUM_VARIABLES]:  number of variables in the program.
-          int    [OIM_SIZE_VARIABLES]: size needed for the variable structs.
-          int    [OIM_NUM_STRINGS]:    number of strings in the program.
-          int    [OIM_SIZE_STRINGS]:   size needed for the string pointers.
-          int    [OIM_SIZE_STRINGS_DATA]: size needed for the string data,
-                                       scaled down according to the extend of
-                                       data sharing.
-          int    [OIM_SIZE_STRINGS_TOTAL]: unmodified size needed for the
-                                       string data.
-          int    [OIM_NUM_INCLUDES]:   number of included files in the program.
-          int    [OIM_NUM_INHERITED]:  number of inherited programs.
-          int    [OIM_SIZE_INHERITED]: size needed for the inherit structs.
-          int    [OIM_TOTAL_SIZE]:     total size of the program.
-          int    [OIM_DATA_SIZE]:      total size of the values held in the
-                                       object's variables, scaled down
-                                       according to the extend of data
-                                       sharing.
-          int    [OIM_DATA_SIZE_TOTAL]: unmodified total size of the values
-                                       held in the object's variables
-          int    [OIM_NO_INHERIT]:     1 if the program can't be inherited.
-          int    [OIM_NO_CLONE]:       1 if the program/blueprint can't be
-                                       cloned.
-          int    [OIM_NO_SHADOW]:      1 if the program's functions can't be
-                                       shadowed.
-          int    [OIM_SHARE_VARIABLES]:  1 if clones of this program share
-                                       their initial variable values with
-                                       the blueprint.
+     int    [OIM_REF]:            number of references to the program.
+     string [OIM_NAME]:           name of program.
+     int    [OIM_PROG_SIZE]:      size of the program.
+     int    [OIM_NUM_FUNCTIONS]:  number of functions in the program.
+     int    [OIM_SIZE_FUNCTIONS]: size needed for the function structs.
+     int    [OIM_NUM_VARIABLES]:  number of variables in the program.
+     int    [OIM_SIZE_VARIABLES]: size needed for the variable structs.
+     int    [OIM_NUM_STRINGS]:    number of strings in the program.
+     int    [OIM_SIZE_STRINGS]:   size needed for the string pointers.
+     int    [OIM_SIZE_STRINGS_DATA]: size needed for the string data,
+                                  scaled down according to the extend of
+                                  data sharing.
+     int    [OIM_SIZE_STRINGS_TOTAL]: unmodified size needed for the
+                                  string data.
+     int    [OIM_NUM_INCLUDES]:   number of included files in the program.
+     int    [OIM_NUM_INHERITED]:  number of inherited programs.
+     int    [OIM_SIZE_INHERITED]: size needed for the inherit structs.
+     int    [OIM_TOTAL_SIZE]:     total size of the program.
+     int    [OIM_DATA_SIZE]:      total size of the values held in the
+                                  object's variables, scaled down
+                                  according to the extend of data
+                                  sharing.
+     int    [OIM_DATA_SIZE_TOTAL]: unmodified total size of the values
+                                  held in the object's variables
+     int    [OIM_NO_INHERIT]:     1 if the program can't be inherited.
+     int    [OIM_NO_CLONE]:       1 if the program/blueprint can't be
+                                  cloned.
+     int    [OIM_NO_SHADOW]:      1 if the program's functions can't be
+                                  shadowed.
+     int    [OIM_SHARE_VARIABLES]:  1 if clones of this program share
+                                  their initial variable values with
+                                  the blueprint.
 
-          This call swaps in the program if necessary.
-          Note that the OIM_SIZE_xxx entries only give the size spent on
-          the structures and pointers, not the size of the variable data,
-          function code, and strings themselves.
+     This call swaps in the program if necessary.
+     Note that the OIM_SIZE_xxx entries only give the size spent on
+     the structures and pointers, not the size of the variable data,
+     function code, and strings themselves.
+
 
 HISTORY
-        Introduced in LDMud 3.2.6.
-        Changes in LDMud 3.2.7:
-          - new basic result OIB_REPLACED.
-          - basic result OIB_IS_WIZARD is always 0 if set_is_wizard()
-              is not available.
-          - basic result OIB_APPROVED is gone.
-        LDMud 3.2.8 added OIM_DATA_SIZE to the result of OINFO_MEMORY.
-        LDMud 3.2.9 added the index mechanism, OIM_NUM_INCLUDES,
-          OIM_NO_INHERIT, OIM_NO_SHADOW, OIM_NO_CLONE, OIM_SIZE_STRINGS_DATA,
-          OIM_SIZE_STRINGS_TOTAL, and OIM_DATA_SIZE_TOTAL to the result
-          of OINFO_MEMORY.
-        LDMud 3.3.378 added the OIM_SHARE_VARIABLES to the result
-          of OINFO_MEMORY.
-        LDMud 3.3.654 added the OIB_NEXT_CLEANUP to the result of OINFO_BASIC.
+=======
+
+   Introduced in LDMud 3.2.6.
+   Changes in LDMud 3.2.7:
+     - new basic result OIB_REPLACED.
+     - basic result OIB_IS_WIZARD is always 0 if set_is_wizard()
+         is not available.
+     - basic result OIB_APPROVED is gone.
+   LDMud 3.2.8 added OIM_DATA_SIZE to the result of OINFO_MEMORY.
+   LDMud 3.2.9 added the index mechanism, OIM_NUM_INCLUDES,
+     OIM_NO_INHERIT, OIM_NO_SHADOW, OIM_NO_CLONE, OIM_SIZE_STRINGS_DATA,
+     OIM_SIZE_STRINGS_TOTAL, and OIM_DATA_SIZE_TOTAL to the result
+     of OINFO_MEMORY.
+   LDMud 3.3.378 added the OIM_SHARE_VARIABLES to the result
+     of OINFO_MEMORY.
+   LDMud 3.3.654 added the OIB_NEXT_CLEANUP to the result of OINFO_BASIC.
+
 
 SEE ALSO
-        debug_info(E)
+========
+
+   debug_info(E)
diff --git a/doc/sefun/obsolete/exclude_alist b/doc/sefun/obsolete/exclude_alist
index a967a14..5d1aace 100644
--- a/doc/sefun/obsolete/exclude_alist
+++ b/doc/sefun/obsolete/exclude_alist
@@ -1,4 +1,11 @@
-SYNOPSIS:
-	mixed *exclude_alist(int i, mixed *alist)
+
+exclude_alist()
+***************
+
+
+SYNOPSIS
+========
+
+   mixed *exclude_alist(int i, mixed *alist)
 
 Remove element i from alist.
diff --git a/doc/sefun/obsolete/remove_alist b/doc/sefun/obsolete/remove_alist
index cf9bc61..fceac4f 100644
--- a/doc/sefun/obsolete/remove_alist
+++ b/doc/sefun/obsolete/remove_alist
@@ -1,3 +1,7 @@
-mixed *remove_alist(mixed key, mixed *alist)
+
+remove_alist()
+**************
+
+mixed >>*<<remove_alist(mixed key, mixed >>*<<alist)
 
 Removes element associated by key key from alist.
diff --git a/doc/sefun/old_explode b/doc/sefun/old_explode
index 6b13d8e..357e838 100644
--- a/doc/sefun/old_explode
+++ b/doc/sefun/old_explode
@@ -1,28 +1,53 @@
-FUNKTION:
-	string *old_explode(string str, string del)
 
-ARGUMENTE:
-	str - Der String, der aufgespaltet werden soll.
-	del - Der String, nach dem str aufgespalten werden soll.
+old_explode()
+*************
 
-BESCHREIBUNG:
-	Durch Ausschneiden von del wird der String str in ein Array von Strings
-	zerlegt. Dieses Array wird anschliessend zuruckgegeben.
 
-RUECKGABEWERT:
-	Das Array mit den Bestandteilen der Zerlegung.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Das Verhalten von old_explode() entspricht dem dem explode()-Verhalten,
-	das in /doc/efun/explode als "altes" Verhalten bezeichnet wird, d.h.
-	Leerstrings an Anfang und Ende des zerlegten Strings werden entfernt!
+   string *old_explode(string str, string del)
 
-BEISPIELE:
-	strs = explode( "nimm alles", " "); => strs = ({ "nimm", "alles" })
-	strs = explode( "abc", "abc" );     => strs = ({ })
-	strs = explode( "ein test", "" );   => strs = ({ "ein test" })
-	strs = explode( "a b", "a");        => strs = ({ " b" });
 
-SIEHE AUCH:
-	explode(E), new_explode(E), efun::explode(E), sscanf(E)
-        implode(E), regexplode(E)
+ARGUMENTE
+=========
+
+   str - Der String, der aufgespaltet werden soll.
+   del - Der String, nach dem str aufgespalten werden soll.
+
+
+BESCHREIBUNG
+============
+
+   Durch Ausschneiden von del wird der String str in ein Array von Strings
+   zerlegt. Dieses Array wird anschliessend zuruckgegeben.
+
+
+RUECKGABEWERT
+=============
+
+   Das Array mit den Bestandteilen der Zerlegung.
+
+
+BEMERKUNGEN
+===========
+
+   Das Verhalten von old_explode() entspricht dem dem explode()-Verhalten,
+   das in /doc/efun/explode als "altes" Verhalten bezeichnet wird, d.h.
+   Leerstrings an Anfang und Ende des zerlegten Strings werden entfernt!
+
+
+BEISPIELE
+=========
+
+   strs = explode( "nimm alles", " "); => strs = ({ "nimm", "alles" })
+   strs = explode( "abc", "abc" );     => strs = ({ })
+   strs = explode( "ein test", "" );   => strs = ({ "ein test" })
+   strs = explode( "a b", "a");        => strs = ({ " b" });
+
+
+SIEHE AUCH
+==========
+
+   explode(E), new_explode(E), efun::explode(E), sscanf(E)
+   implode(E), regexplode(E)
diff --git a/doc/sefun/process_call b/doc/sefun/process_call
index c00a039..cd43faf 100644
--- a/doc/sefun/process_call
+++ b/doc/sefun/process_call
@@ -1,21 +1,38 @@
+
+process_call()
+**************
+
 simul_efun::process_call(E)
-FUNKTION:
-     int process_call()
 
-BESCHREIBUNG:
-     Gibt zurueck, ob die Ausfuehrung zum derzeitigen Zeitpunkt durch
-     process_string() ausgerufen wurde.
 
-BEISPIELE:
-     process_string("@@current_long@@");
-     ...
-     string current_long() {
-      if(process_call())
-       return("Dieser String wurde durch ein process_string eingefuegt.");
-      else return("Du hast die Funktion direkt gerufen!");
-     }
+FUNKTION
+========
 
-SIEHE AUCH:
-     notify_fail(E), process_string(E), replace_personal(E)
+   int process_call()
+
+
+BESCHREIBUNG
+============
+
+   Gibt zurueck, ob die Ausfuehrung zum derzeitigen Zeitpunkt durch
+   process_string() ausgerufen wurde.
+
+
+BEISPIELE
+=========
+
+   process_string("@@current_long@@");
+   ...
+   string current_long() {
+    if(process_call())
+     return("Dieser String wurde durch ein process_string eingefuegt.");
+    else return("Du hast die Funktion direkt gerufen!");
+   }
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), process_string(E), replace_personal(E)
 
 28. Maerz 2004 Gloinson
diff --git a/doc/sefun/process_string b/doc/sefun/process_string
index 75c9290..fbc7018 100644
--- a/doc/sefun/process_string
+++ b/doc/sefun/process_string
@@ -1,57 +1,77 @@
+
+process_string()
+****************
+
 process_string(E)
-FUNKTION:
-     string process_string(string str)
-     string process_string(closure cl)
-
-BESCHREIBUNG:
-     Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
-     durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
-     durch einen impliziten Funktionsaufruf.
-
-     Der zu ersetzenden Substring hat die Form:
-     @@function[:filename][|argument1|argument2]@@
-
-     Die entsprechende Funktion muss einen String zurueckgeben, oder der
-     process_string() uebergebene String str wird nicht modifiziert.
-
-     process_string() arbeitet nicht rekursiv, object_name und argument sind
-     optionale Werte.
-
-     Falls eine Closure angegeben wurde, wird diese lediglich gerufen
-     und nicht gefiltert.
-
-ANMERKUNGEN:
-     - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
-		   anfangen, '_' ist nicht moeglich!
-     - folgendes Properties und Details werden bei der Abfrage ueber
-       process_string() gefiltert:
-       P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
-       P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
-     - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
-       process_call()
-
-BEISPIEL:
-     // komplette Ersetzung ...
-     SetProp(P_LONG,"@@current_long@@");
-     ...
-     string current_long() {
-      if(x) return(break_string("Die Beschreibung."));
-      else return(break_string("Die andere Beschreibung."));
-     }
-
-     -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
 
 
-     // Teilersetzung
-     SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
-     ...
-     string farbenfun(string str) {
-      return(str+" "+"gelbes");
-     }
+FUNKTION
+========
 
-     -> bei Abfrage: "Ein huebsch gelbes Ding."
+   string process_string(string str)
+   string process_string(closure cl)
 
-SIEHE AUCH:
-     notify_fail(E), process_call(E), replace_personal(E)
+
+BESCHREIBUNG
+============
+
+   Durchsucht den String str nach Vorkommnissen von Substrings, die "Wert
+   durch Funktionsaufruf zu ersetzen" andeuten. Die Form ist: @@, gefolgt
+   durch einen impliziten Funktionsaufruf.
+
+   Der zu ersetzenden Substring hat die Form:
+   @@function[:filename][|argument1|argument2]@@
+
+   Die entsprechende Funktion muss einen String zurueckgeben, oder der
+   process_string() uebergebene String str wird nicht modifiziert.
+
+   process_string() arbeitet nicht rekursiv, object_name und argument sind
+   optionale Werte.
+
+   Falls eine Closure angegeben wurde, wird diese lediglich gerufen
+   und nicht gefiltert.
+
+
+ANMERKUNGEN
+===========
+
+   - Die Funktion, die gerufen werden soll, _muss_ mit einem Buchstaben
+                 anfangen, '_' ist nicht moeglich!
+   - folgendes Properties und Details werden bei der Abfrage ueber
+     process_string() gefiltert:
+     P_LONG, P_SHORT, P_READ_MSG, AddReadDetail()-Details und NPC-Chats
+     P_INT_LONG ueber int_long(), P_INT_SHORT ueber int_short()
+   - die Nutzung kann zu Sicherheitsproblemen fuehren, siehe auch
+     process_call()
+
+
+BEISPIEL
+========
+
+   // komplette Ersetzung ...
+   SetProp(P_LONG,"@@current_long@@");
+   ...
+   string current_long() {
+    if(x) return(break_string("Die Beschreibung."));
+    else return(break_string("Die andere Beschreibung."));
+   }
+
+   -> bei Abfrage: "Die Beschreibung." oder "Die andere Beschreibung."
+
+
+   // Teilersetzung
+   SetProp(P_SHORT, "Ein @@farbenfun|huebsch@@ Ding");
+   ...
+   string farbenfun(string str) {
+    return(str+" "+"gelbes");
+   }
+
+   -> bei Abfrage: "Ein huebsch gelbes Ding."
+
+
+SIEHE AUCH
+==========
+
+   notify_fail(E), process_call(E), replace_personal(E)
 
 22. Nov. 2006 Arathorn
diff --git a/doc/sefun/query_editing b/doc/sefun/query_editing
index 010c98e..32358ed 100644
--- a/doc/sefun/query_editing
+++ b/doc/sefun/query_editing
@@ -1,13 +1,29 @@
+
+query_editing()
+***************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        mixed query_editing(object ob);
+========
+
+   mixed query_editing(object ob);
+
 
 BESCHREIBUNG
-        Liefert 1, wenn <ob> interaktiv ist (das heisst, es gibt einen realen
-        Benutzer mit einer Socketverbindung zum Mud) und gerade mit ed() eine
-        Datei bearbeitet. Wenn ed() mit einem Funktionsnamen als zweites
-        Argument aufgerufen wird, wird das Objekt, aus dem ed() aufgerufen
-        wurde, geliefert, sonst 0.
+============
+
+   Liefert 1, wenn <ob> interaktiv ist (das heisst, es gibt einen realen
+   Benutzer mit einer Socketverbindung zum Mud) und gerade mit ed() eine
+   Datei bearbeitet. Wenn ed() mit einem Funktionsnamen als zweites
+   Argument aufgerufen wird, wird das Objekt, aus dem ed() aufgerufen
+   wurde, geliefert, sonst 0.
+
 
 SIEHE AUCH
-        ed(E)
+==========
+
+   ed(E)
diff --git a/doc/sefun/query_idle b/doc/sefun/query_idle
index 7c0a0a5..7deccee 100644
--- a/doc/sefun/query_idle
+++ b/doc/sefun/query_idle
@@ -1,8 +1,21 @@
+
+query_idle()
+************
+
+
 SYNOPSIS
-        int query_idle(object ob);
+========
+
+   int query_idle(object ob);
+
 
 BESCHREIBUNG
-        Gibt an, seit wie vielen Sekunden ein Player Objekt <ob> idle ist.
+============
+
+   Gibt an, seit wie vielen Sekunden ein Player Objekt <ob> idle ist.
+
 
 SIEHE AUCH
-        interactive(E)
+==========
+
+   interactive(E)
diff --git a/doc/sefun/query_input_pending b/doc/sefun/query_input_pending
index 8033cec..c40c355 100644
--- a/doc/sefun/query_input_pending
+++ b/doc/sefun/query_input_pending
@@ -1,11 +1,27 @@
+
+query_input_pending()
+*********************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        object query_input_pending(object ob);
+========
+
+   object query_input_pending(object ob);
+
 
 BESCHREIBUNG
-        Wenn <ob> interaktiv und ein input_to() haengig ist, so liefert die
-        Efun das Objekt zurueck, welches den input_to() aufgerfuen hat. Ist
-        kein input_to() haengig, liefert die Funktion 0.
+============
+
+   Wenn <ob> interaktiv und ein input_to() haengig ist, so liefert die
+   Efun das Objekt zurueck, welches den input_to() aufgerfuen hat. Ist
+   kein input_to() haengig, liefert die Funktion 0.
+
 
 SIEHE AUCH
-        input_to(E), find_input_to(E), input_to_info(E), remove_input_to(E)
+==========
+
+   input_to(E), find_input_to(E), input_to_info(E), remove_input_to(E)
diff --git a/doc/sefun/query_ip_name b/doc/sefun/query_ip_name
index d16298f..76de80f 100644
--- a/doc/sefun/query_ip_name
+++ b/doc/sefun/query_ip_name
@@ -1,12 +1,28 @@
+
+query_ip_name()
+***************
+
+
 GESCHUETZT
+==========
+
+
 SYNOPSIS
-        string query_ip_name(object ob);
+========
+
+   string query_ip_name(object ob);
+
 
 BESCHREIBUNG
-        Liefert den IP-Namen des Users <ob> oder des aktuellen Benutzers, wenn
-        <ob> nicht angegeben wurde. Der IP-Name wird durch den asynchronen
-        Prozess hname ermittelt. Wenn der IP-Name nicht ermittelt werden kann,
-        liefert query_ip_name() die IP-Nummer zurueck.
+============
+
+   Liefert den IP-Namen des Users <ob> oder des aktuellen Benutzers, wenn
+   <ob> nicht angegeben wurde. Der IP-Name wird durch den asynchronen
+   Prozess hname ermittelt. Wenn der IP-Name nicht ermittelt werden kann,
+   liefert query_ip_name() die IP-Nummer zurueck.
+
 
 SIEHE AUCH
-        query_ip_number(E)
+==========
+
+   query_ip_number(E)
diff --git a/doc/sefun/query_ip_number b/doc/sefun/query_ip_number
index a462aba..d09bc88 100644
--- a/doc/sefun/query_ip_number
+++ b/doc/sefun/query_ip_number
@@ -1,24 +1,43 @@
+
+query_ip_number()
+*****************
+
+
 GESCHUETZT
+==========
+
+
 SYNOPSIS
-        string query_ip_number(object ob);
-        string query_ip_number(mixed & ob);
+========
+
+   string query_ip_number(object ob);
+   string query_ip_number(mixed & ob);
+
 
 BESCHREIBUNG
-        Liefert die IP-Nummer des Benutzers <ob> oder des aktuellen Benutzers,
-        wenn <ob> nicht angegeben wurde.
+============
 
-        Wenn <ob> als Referenz angegeben wird (dann muss es ein gueltiges
-        Objekt sein), wird dieses bei der Ausgabe auf die struct sockaddr_in
-        gesetzt. struct sockaddr_in ist ein Integer-Array, mit einem Integer
-        pro Adressbyte:
+   Liefert die IP-Nummer des Benutzers <ob> oder des aktuellen Benutzers,
+   wenn <ob> nicht angegeben wurde.
 
-            ob[0 .. 1] : sin_family
-            ob[2 .. 3] : sin_port
-            ob[4 .. 7] : sin_addr
-            ob[8 ..15] : nicht definiert.
+   Wenn <ob> als Referenz angegeben wird (dann muss es ein gueltiges
+   Objekt sein), wird dieses bei der Ausgabe auf die struct sockaddr_in
+   gesetzt. struct sockaddr_in ist ein Integer-Array, mit einem Integer
+   pro Adressbyte:
+
+       ob[0 .. 1] : sin_family
+       ob[2 .. 3] : sin_port
+       ob[4 .. 7] : sin_addr
+       ob[8 ..15] : nicht definiert.
+
 
 AENDERUNGEN
-        Die Rueckgabe von struct sockaddr_in wurde in 3.2.1@81 eingefuehrt.
+===========
+
+   Die Rueckgabe von struct sockaddr_in wurde in 3.2.1@81 eingefuehrt.
+
 
 SIEHE AUCH
-        query_ip_name(E)
+==========
+
+   query_ip_name(E)
diff --git a/doc/sefun/query_limits b/doc/sefun/query_limits
index 954577a..8af988f 100644
--- a/doc/sefun/query_limits
+++ b/doc/sefun/query_limits
@@ -1,56 +1,82 @@
-DEPRECATED
-SYNOPSIS
-        #include <sys/rtlimits.h>
 
-        int *query_limits();
-        int *query_limits(int default);
+query_limits()
+**************
+
+
+DEPRECATED
+==========
+
+
+SYNOPSIS
+========
+
+   #include <sys/rtlimits.h>
+
+   int *query_limits();
+   int *query_limits(int default);
+
 
 BESCHREIBUNG
-        Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
-        die standardmaessigen Laufzeit Limiten, wenn <default> wahr ist.
-        Die Eintraege im gelieferten Array bedeuten:
+============
 
-        int[LIMIT_EVAL]:        die maximalen Eval Kosten
-        int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
-        int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
-        int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
-                                /write_bytes() bearbeitet werden koennen
-        int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
-                                /write_file() bearbeitet werden koennen
-        int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
-        int[LIMIT_COST]:        wie die aktuellen Kosten einzurechnen sind
+   Liefert ein Array mit den momentan gueltigen Laufzeit Limiten bzw.
+   die standardmaessigen Laufzeit Limiten, wenn <default> wahr ist.
+   Die Eintraege im gelieferten Array bedeuten:
 
-        Ausser fuer LIMIT_COST ein Limit von '0' (auch LIMIT_UNLIMITED)
-        bedeutet 'keine Limit'.
+   int[LIMIT_EVAL]:        die maximalen Eval Kosten
+   int[LIMIT_ARRAY]:       die maximale Anzahl Array Eintraege
+   int[LIMIT_MAPPING]:     die maximale Anzahl Mapping Eintraege
+   int[LIMIT_BYTE]:        die maximale Anzahl Bytes, die mit read_bytes()
+                           /write_bytes() bearbeitet werden koennen
+   int[LIMIT_FILE]:        die maximale Anzahl Bytes, die mit read_file()
+                           /write_file() bearbeitet werden koennen
+   int[LIMIT_CALLOUTS]:    die maximale Anzahl gleichzeitiger call_out()s
+   int[LIMIT_COST]:        wie die aktuellen Kosten einzurechnen sind
 
-        LIMIT_COST hat diese Bedeutungen:
-          
-          wert > 0: Maximal <wert> fuer als Kosten fuer die aktuelle Ausfuehrung
-                    verwendet, ungeachtet wie lange sie tatsaechlich dauert.
-               = 0: ist die derzeite LIMIT_EVAL groesser als die vorherige
-                    LIMIT_EVAL, kostet die aktuelle Ausfuehrung nur 10
-                    Ticks; andernfalls werden die gesamten Kosten angerechnet.
-                < 0: (-wert)% der aktuellen Ausfuehrungskosten werden
-                     angerechnet.
+   Ausser fuer LIMIT_COST ein Limit von '0' (auch LIMIT_UNLIMITED)
+   bedeutet 'keine Limit'.
 
-BEMERKUNGEN:
-        "Aktuelle Kosten" bei LIMIT_COST hat im Falle der Benutzung von
-        limited() die Bedeutung von "im limited verbrauchte Kosten", steuert
-        also, wieviel der im Durchlaufen der Funktion im limited()
-        verbrauchten Ticks mit dem Ende von limited() angezogen wird.
+   LIMIT_COST hat diese Bedeutungen:
+
+
+
+     wert > 0: Maximal <wert> fuer als Kosten fuer die aktuelle Ausfuehrung
+               verwendet, ungeachtet wie lange sie tatsaechlich dauert.
+          = 0: ist die derzeite LIMIT_EVAL groesser als die vorherige
+               LIMIT_EVAL, kostet die aktuelle Ausfuehrung nur 10
+               Ticks; andernfalls werden die gesamten Kosten angerechnet.
+           < 0: (-wert)% der aktuellen Ausfuehrungskosten werden
+                angerechnet.
+
+
+BEMERKUNGEN
+===========
+
+   "Aktuelle Kosten" bei LIMIT_COST hat im Falle der Benutzung von
+   limited() die Bedeutung von "im limited verbrauchte Kosten", steuert
+   also, wieviel der im Durchlaufen der Funktion im limited()
+   verbrauchten Ticks mit dem Ende von limited() angezogen wird.
+
 
 BEISPIELE
-        query_limits()
-        --> liefert die momentan gueltigen Laufzeit Limiten.
-        query_limits(1)
-        --> liefert die standardmaessigen Laufzeit Limiten.
+=========
+
+   query_limits()
+   --> liefert die momentan gueltigen Laufzeit Limiten.
+   query_limits(1)
+   --> liefert die standardmaessigen Laufzeit Limiten.
+
 
 AENDERUNGEN
-        Eingefuehrt in LDMud 3.2.7.
-        LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.
+===========
+
+   Eingefuehrt in LDMud 3.2.7.
+   LIMIT_CALLOUTS wurde in LDMud 3.2.9 eingefuehrt.
+
 
 SIEHE AUCH
-        limited(E), set_limits(E)
+==========
+
+   limited(E), set_limits(E)
 
 16.05.2007, Zesstra
-
diff --git a/doc/sefun/query_mud_port b/doc/sefun/query_mud_port
index 2e5c6d2..de4c1e2 100644
--- a/doc/sefun/query_mud_port
+++ b/doc/sefun/query_mud_port
@@ -1,23 +1,39 @@
+
+query_mud_port()
+****************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        int query_mud_port(void)
-        int query_mud_port(object user)
-        int query_mud_port(int num)
+========
+
+   int query_mud_port(void)
+   int query_mud_port(object user)
+   int query_mud_port(int num)
+
 
 DESCRIPTION
-        Returns the port number the parser uses for user connections.
+===========
 
-        If no argument is given, the port for this_player() is
-        returned. If this_player() is not existing or not interactive,
-        the first port number open for connections is returned.
+   Returns the port number the parser uses for user connections.
 
-        If an user object is given, the port used for its connection
-        is returned.
-        If a positive number is given, the <num>th port number the
-        parser uses for connections is returned (given that there are
-        that many ports).
-        If -1 is given, the number of ports open for connections is
-        returned.
+   If no argument is given, the port for this_player() is
+   returned. If this_player() is not existing or not interactive,
+   the first port number open for connections is returned.
+
+   If an user object is given, the port used for its connection
+   is returned.
+   If a positive number is given, the <num>th port number the
+   parser uses for connections is returned (given that there are
+   that many ports).
+   If -1 is given, the number of ports open for connections is
+   returned.
+
 
 SEE ALSO
-        query_udp_port(E)
+========
+
+   query_udp_port(E)
diff --git a/doc/sefun/query_next_reset b/doc/sefun/query_next_reset
index 03bbd7e..528ae56 100644
--- a/doc/sefun/query_next_reset
+++ b/doc/sefun/query_next_reset
@@ -1,27 +1,47 @@
+
+query_next_reset()
+******************
+
 simul_efun::query_next_reset(E)
-FUNKTION:
-     varargs int query_next_reset(object ob)
 
-ARGUMENTE:
-     ob - das interessierende Objekt; wenn nicht angegeben, wird 
-          this_object() verwendet
 
-BESCHREIBUNG:
-     Diese sefun gibt den Zeitpunkt des naechsten Resets des Objektes ob 
-     zurueck. Die Angabe erfolgt in Sekunden, die seit dem 01. Januar 1970 
-     00:00:00 GMT verstrichen sind, analog zu time().
+FUNKTION
+========
 
-     In der Regel erfolgt der Reset im naechsten Backend-Zyklus nach dem 
-     Faelligkeitszeitpunkt,  d.h. momentan in den nachfolgenden 2s.
-     Allerdings kann dies auch mal nen Zyklus laenger dauern (4s), wenn der
-     Driver viel zu tun hat.
+   varargs int query_next_reset(object ob)
 
-BEMERKUNGEN:
-     Diese sefun ist object_info()-Abfragen vorzuziehen, da die Parameter und
-     Rueckgabewerte von object_info() bei verschiedenen Gamedriverversionen
-     variieren koennen.
 
-SIEHE AUCH:
-     call_out(E), object_info(E), reset(L), set_next_reset(E), time(E)
+ARGUMENTE
+=========
+
+   ob - das interessierende Objekt; wenn nicht angegeben, wird
+        this_object() verwendet
+
+
+BESCHREIBUNG
+============
+
+   Diese sefun gibt den Zeitpunkt des naechsten Resets des Objektes ob
+   zurueck. Die Angabe erfolgt in Sekunden, die seit dem 01. Januar 1970
+   00:00:00 GMT verstrichen sind, analog zu time().
+
+   In der Regel erfolgt der Reset im naechsten Backend-Zyklus nach dem
+   Faelligkeitszeitpunkt,  d.h. momentan in den nachfolgenden 2s.
+   Allerdings kann dies auch mal nen Zyklus laenger dauern (4s), wenn der
+   Driver viel zu tun hat.
+
+
+BEMERKUNGEN
+===========
+
+   Diese sefun ist object_info()-Abfragen vorzuziehen, da die Parameter und
+   Rueckgabewerte von object_info() bei verschiedenen Gamedriverversionen
+   variieren koennen.
+
+
+SIEHE AUCH
+==========
+
+   call_out(E), object_info(E), reset(L), set_next_reset(E), time(E)
 
 28.07.2014 Arathorn
diff --git a/doc/sefun/query_once_interactive b/doc/sefun/query_once_interactive
index c794223..bfb8b55 100644
--- a/doc/sefun/query_once_interactive
+++ b/doc/sefun/query_once_interactive
@@ -1,8 +1,21 @@
+
+query_once_interactive()
+************************
+
+
 SYNOPSIS
-        int query_once_interactive(object obj);
+========
+
+   int query_once_interactive(object obj);
+
 
 BESCHREIBUNG
-        Wahr, wenn <obj> interaktiv ist oder dies einmal war.
+============
+
+   Wahr, wenn <obj> interaktiv ist oder dies einmal war.
+
 
 SIEHE AUCH
-        remove_interactive(E)
+==========
+
+   remove_interactive(E)
diff --git a/doc/sefun/query_shadowing b/doc/sefun/query_shadowing
index 3ce5d6a..aadf109 100644
--- a/doc/sefun/query_shadowing
+++ b/doc/sefun/query_shadowing
@@ -1,18 +1,38 @@
+
+query_shadowing()
+*****************
+
+
 DEPRECATED
+==========
+
 query_shadowing(E)
-FUNKTION:
-     object query_shadowing(object obj)
 
-BESCHREIBUNG:
-     Die Funktion gibt das derzeit vom Objekt <obj> beschattete Objekt
-     victim oder 0 zurueck.
 
-BEISPIELE:
-     // B beschattet A
-     query_shadowing(find_object(B)) == A
+FUNKTION
+========
 
-SIEHE AUCH:
-     Generell:	     shadow(E), unshadow(E)
-     Rechte:	     query_allow_shadow(M), query_prevent_shadow(L)
+   object query_shadowing(object obj)
 
-23.02.2016, Zesstra
\ No newline at end of file
+
+BESCHREIBUNG
+============
+
+   Die Funktion gibt das derzeit vom Objekt <obj> beschattete Objekt
+   victim oder 0 zurueck.
+
+
+BEISPIELE
+=========
+
+   // B beschattet A
+   query_shadowing(find_object(B)) == A
+
+
+SIEHE AUCH
+==========
+
+   Generell:       shadow(E), unshadow(E)
+   Rechte:         query_allow_shadow(M), query_prevent_shadow(L)
+
+23.02.2016, Zesstra
diff --git a/doc/sefun/query_snoop b/doc/sefun/query_snoop
index 4da8838..94e598a 100644
--- a/doc/sefun/query_snoop
+++ b/doc/sefun/query_snoop
@@ -1,10 +1,26 @@
+
+query_snoop()
+*************
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        object query_snoop(object victim)
+========
+
+   object query_snoop(object victim)
+
 
 DESCRIPTION
-        Returns the user who currently snoops victim. The calling
-        object must be privileged by the master object.
+===========
+
+   Returns the user who currently snoops victim. The calling
+   object must be privileged by the master object.
+
 
 SEE ALSO
-        snoop(E)
+========
+
+   snoop(E)
diff --git a/doc/sefun/query_wiz_grp b/doc/sefun/query_wiz_grp
index c45cfe1..fe01fbd 100644
--- a/doc/sefun/query_wiz_grp
+++ b/doc/sefun/query_wiz_grp
@@ -1,15 +1,34 @@
-FUNKTION:
-        query_wiz_grp(string wiz)
-        query_wiz_grp(object wiz)
 
-ARGUMENTE:
-        wiz - Spieler, dessen Magierlevelgruppe ermittelt werden soll
+query_wiz_grp()
+***************
 
-BESCHREIBUNG:
-        Diese Funktion ermittelt die Magiergruppe, der der Spieler wiz angehoert.
 
-RUECKGABEWERT:
-        Die Magierlevelgruppe des Spielers.
+FUNKTION
+========
 
-SIEHE AUCH:
-        /secure/wizlevels.h
+   query_wiz_grp(string wiz)
+   query_wiz_grp(object wiz)
+
+
+ARGUMENTE
+=========
+
+   wiz - Spieler, dessen Magierlevelgruppe ermittelt werden soll
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion ermittelt die Magiergruppe, der der Spieler wiz angehoert.
+
+
+RUECKGABEWERT
+=============
+
+   Die Magierlevelgruppe des Spielers.
+
+
+SIEHE AUCH
+==========
+
+   /secure/wizlevels.h
diff --git a/doc/sefun/query_wiz_level b/doc/sefun/query_wiz_level
index 03e89cb..3645035 100644
--- a/doc/sefun/query_wiz_level
+++ b/doc/sefun/query_wiz_level
@@ -1,43 +1,70 @@
-FUNKTION:
-	int query_wiz_level(object ob)
-	int query_wiz_level(string ob)
 
-ARGUMENTE:
-	ob - Der Spieler/das Objekt, dessen Magierlevel ermittelt werden soll.
-       Es kann auch eine UID (z.B. "zesstra", "d.inseln.zesstra") als String
-       uebergeben werden.
+query_wiz_level()
+*****************
 
-BESCHREIBUNG:
-	query_wiz_level() liefert den Magierlevel des Objekts ob zurueck.
-	Normale Spieler haben einen Magierlevel von 0, Seher normalerweise
-  einen von 1 (auf jeden Fall < 10).
-  Objekte bekommen folgende Level:
-  /d/           - 25
-  /p/           - 21
-  /obj/         - 0
-  /std/         - 0
-  /gilden/      - 30
-  /spellbooks/  - 30
-  /players/     - entsprechend Magier, 20 - 111
-  /secure/      - 100
 
-RUECKGABEWERT:
-	Der Magierlevel des Spielers/Objekts.
+FUNKTION
+========
 
-BEMERKUNGEN:
-	Wird als Parameter ein String mit einem Spielernamen uebergeben, so 
-	kann auch der Magierlevel eines nicht eingeloggten Spielers heraus-
-	gefunden werden.
+   int query_wiz_level(object ob)
+   int query_wiz_level(string ob)
 
-BEISPIELE:
-	lv = query_wiz_level(find_player("jof"))
-	   => lv = 111, falls Jof eingeloggt ist.
-	lv = query_wiz_level("jof")
-           => lv = 111 in jedem Fall.
 
-SIEHE AUCH:
-	/secure/wizlevels.h
+ARGUMENTE
+=========
 
-LETZTE AeNDERUNG:
+    ob - Der Spieler/das Objekt, dessen Magierlevel ermittelt werden soll.
+   Es kann auch eine UID (z.B. "zesstra", "d.inseln.zesstra") als String
+   uebergeben werden.
+
+
+BESCHREIBUNG
+============
+
+         query_wiz_level() liefert den Magierlevel des Objekts ob zurueck.
+         Normale Spieler haben einen Magierlevel von 0, Seher normalerweise
+   einen von 1 (auf jeden Fall < 10).
+   Objekte bekommen folgende Level:
+   /d/           - 25
+   /p/           - 21
+   /obj/         - 0
+   /std/         - 0
+   /gilden/      - 30
+   /spellbooks/  - 30
+   /players/     - entsprechend Magier, 20 - 111
+   /secure/      - 100
+
+
+RUECKGABEWERT
+=============
+
+   Der Magierlevel des Spielers/Objekts.
+
+
+BEMERKUNGEN
+===========
+
+   Wird als Parameter ein String mit einem Spielernamen uebergeben, so
+   kann auch der Magierlevel eines nicht eingeloggten Spielers heraus-
+   gefunden werden.
+
+
+BEISPIELE
+=========
+
+   lv = query_wiz_level(find_player("jof"))
+      => lv = 111, falls Jof eingeloggt ist.
+   lv = query_wiz_level("jof")
+      => lv = 111 in jedem Fall.
+
+
+SIEHE AUCH
+==========
+
+   /secure/wizlevels.h
+
+
+LETZTE AeNDERUNG
+================
+
 15.10.2007, Zesstra
-
diff --git a/doc/sefun/read_data b/doc/sefun/read_data
index b0707ac..1756890 100644
--- a/doc/sefun/read_data
+++ b/doc/sefun/read_data
@@ -1,18 +1,34 @@
+
+read_data()
+***********
+
+
 SYNOPSIS
-        string read_data(string file, int start, int anzahl)
+========
+
+   string read_data(string file, int start, int anzahl)
+
 
 BESCHREIBUNG
-        Diese Funktion macht genau das, was read_file() tut (also siehe dort),
-        allerdings stellt sie sicher, dass <file> immer mit einem /data/
-        beginnt (setzt es also notfalls davor).
-        Es wird also immer irgendwo unterhalb von /data/ gelesen.
+============
+
+   Diese Funktion macht genau das, was read_file() tut (also siehe dort),
+   allerdings stellt sie sicher, dass <file> immer mit einem /data/
+   beginnt (setzt es also notfalls davor).
+   Es wird also immer irgendwo unterhalb von /data/ gelesen.
+
 
 BEISPIEL
-        # read_data("/d/ebene/zesstra/blupp");
-        -> liest das File /data/d/ebene/zesstra/blupp.
-        # read_data("/data/d/ebene/zesstra/blupp");
-        -> tut dasselbe.
+========
+
+   # read_data("/d/ebene/zesstra/blupp");
+   -> liest das File /data/d/ebene/zesstra/blupp.
+   # read_data("/data/d/ebene/zesstra/blupp");
+   -> tut dasselbe.
+
 
 SIEHE AUCH
-        write_data()
-        read_file(E), write_file(E), read_bytes(E), write_file(E)
+==========
+
+   write_data()
+   read_file(E), write_file(E), read_bytes(E), write_file(E)
diff --git a/doc/sefun/replace_personal b/doc/sefun/replace_personal
index 2a18dc7..3804be3 100644
--- a/doc/sefun/replace_personal
+++ b/doc/sefun/replace_personal
@@ -1,84 +1,113 @@
-FUNKTION:
-     varargs string replace_personal(string str, mixed *obs [, int caps]);
 
-DEFINIERT IN:
-     /secure/simul_efun.c
+replace_personal()
+******************
 
-ARGUMENTE:
-     str    - zu bearbeitender String
-     obs    - Liste von Objekt1, Objekt2, ..., Objekt9
-              (Objekte oder Strings)
-     caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
-              0 sonst
 
-BESCHREIBUNG:
-     Ersetzt in Strings
-     @WERx, @WESSENx, @WEMx, @WENx durch
-        Objectx->name(<casus>, 1);
-     @WERUx, @WESSENUx, @WEMUx, @WENUx durch
-        Objectx->name(<casus>);
-     @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
-        Objectx->QueryPronoun(<casus>);
-     @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
-        Objectx->QueryArticle(<casus>, 1, 1);
-     @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
-        Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
-     oder den entsprechenden String bei "Objektx".            
+FUNKTION
+========
 
-BEMERKUNGEN:
-     x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
-     
-     Besonderheiten beim Possessivpronomen (@WERQPPGNx):
-     G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S 
-     oder P) ersetzt werden. 
-     Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
-     besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x 
-     bestimmt.
-     
-RUeCKGABEWERT:
-     durchersetzter String 
-     
-Beispiele:
+   varargs string replace_personal(string str, mixed *obs [, int caps]);
 
-     replace_personal("@WER1", ({find_player("gloinson")}))
-     == "Gloinson"
-     
-     replace_personal("@WEMQP1", ({find_player("gloinson")}))
-     == "ihm"     
-     
-     // unbestimmter und bestimmter Artikel:
-     replace_personal("@WER1 zueckt @WENU2 und verhaut @WEN3.", 
-                      ({find_player("gloinson"),
-                        find_object("/obj/mpa"), 
-                        find_object("/obj/wanderer")}))
-     == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
-     
-     // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ,
-     // Femininum, Plural) auf die Taschen, nicht auf Kessa:
-     replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
-                      "Taschen.", 
-                      ({find_player("kessa"), 
-                        find_player("gloinson")}))
-     == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
 
-     // Ein Beispiel mit laengerem *obs:
-     replace_personal("@WER1 zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
-                      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die "
-                      "@WEN4 haut und die Schuhe in @WEMQPPFS2 Tasche "
-                      "verschwinden laesst. @WERU5 schaut zu und kichert "
-                      "irre. Wenn das @WER6 gesehen haette!",
-                      ({find_player("gloinson"), 
-                        find_player("kessa"),
-                        find_object("/obj/mpa"),                        
-                        "Birne",
-                        find_object("/obj/wanderer"),
-                        find_netdead("jof")}),1)
-     == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so beeindruckt, "
-        "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in ihrer "
-        "Tasche verschwinden laesst. Ein Wanderer schaut zu und kichert "
-        "irre. Wenn das Jof gesehen haette!"
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-     AddCmd(L)
+   /secure/simul_efun.c
 
-05. September 2015, Arathorn
+
+ARGUMENTE
+=========
+
+   str    - zu bearbeitender String
+   obs    - Liste von Objekt1, Objekt2, ..., Objekt9
+            (Objekte oder Strings)
+   caps   - 1 fuer Grossschreibung des Ersetzten nach Satzenden (.,?,!,")
+            0 sonst
+
+
+BESCHREIBUNG
+============
+
+   Ersetzt in Strings
+   @WERx, @WESSENx, @WEMx, @WENx durch
+      Objectx->name(<casus>, 1);
+   @WERUx, @WESSENUx, @WEMUx, @WENUx durch
+      Objectx->name(<casus>);
+   @WERQPx, @WESSENQPx, @WEMQPx, @WENQPx durch
+      Objectx->QueryPronoun(<casus>);
+   @WERQAx, @WESSENQAx, @WEMQAx, @WENQAx durch
+      Objectx->QueryArticle(<casus>, 1, 1);
+   @WERQPPGNx, @WESSENQPPGNx, @WEMQPPGNx, @WENQPPGNx durch
+      Objectx->QueryPossPronoun(<gender>, <casus>, <number>);
+   oder den entsprechenden String bei "Objektx".
+
+
+BEMERKUNGEN
+===========
+
+   x steht fuer die Position des Objekts/Strings in *obs, beginnend bei 1.
+
+
+
+   Besonderheiten beim Possessivpronomen (@WERQPPGNx):
+   G muss durch das Geschlecht (M, F oder N) und N durch den Numerus (S
+   oder P) ersetzt werden.
+   Alle Angaben, auch der CASUS, beziehen sich dabei auf das Objekt, welches
+   besessen wird, nicht auf den Besitzer! Dieser ist bereits durch x
+   bestimmt.
+
+
+RUeCKGABEWERT
+=============
+
+   durchersetzter String
+
+Beispiele
+
+   replace_personal("@WER1", ({find_player("gloinson")})) ==
+   "Gloinson"
+
+   replace_personal("@WEMQP1", ({find_player("gloinson")})) == "ihm"
+
+   // unbestimmter und bestimmter Artikel: replace_personal("@WER1
+   zueckt @WENU2 und verhaut @WEN3.",
+
+      ({find_player("gloinson"),
+         find_object("/obj/mpa"), find_object("/obj/wanderer")}))
+
+   == "Gloinson zueckt eine Zeitung und verhaut den Wanderer."
+
+   // Beim Possessivpronomen beziehen sich WEN, F und P (Akkusativ, //
+   Femininum, Plural) auf die Taschen, nicht auf Kessa:
+   replace_personal("@WER1 steckt @WESSEN2 Turnschuhe in @WENQPPFP1 "
+
+      "Taschen.", ({find_player("kessa"),
+
+         find_player("gloinson")}))
+
+   == "Kessa steckt Gloinsons Turnschuhe in ihre Taschen."
+
+   // Ein Beispiel mit laengerem >>*<<obs: replace_personal("@WER1
+   zieht @WENQPPMP1 neuen Turnschuhe an. @WER2 ist "
+
+      "so beeindruckt, dass @WERQP2 @WEMQP1 @WENU3 auf die " "@WEN4
+      haut und die Schuhe in @WEMQPPFS2 Tasche " "verschwinden laesst.
+      @WERU5 schaut zu und kichert " "irre. Wenn das @WER6 gesehen
+      haette!", ({find_player("gloinson"),
+
+         find_player("kessa"), find_object("/obj/mpa"), "Birne",
+         find_object("/obj/wanderer"), find_netdead("jof")}),1)
+
+   == "Gloinson zieht seine neuen Turnschuhe an. Kessa ist so
+   beeindruckt, "
+      "dass sie ihm eine Zeitung auf die Birne haut und die Schuhe in
+      ihrer " "Tasche verschwinden laesst. Ein Wanderer schaut zu und
+      kichert " "irre. Wenn das Jof gesehen haette!"
+
+
+SIEHE AUCH
+==========
+
+   AddCmd(L)
+
+5. September 2015, Arathorn
diff --git a/doc/sefun/restore_object b/doc/sefun/restore_object
index eac5e01..631252d 100644
--- a/doc/sefun/restore_object
+++ b/doc/sefun/restore_object
@@ -1,18 +1,31 @@
+
+restore_object()
+****************
+
+
 SYNOPSIS
-        mixed restore_object(string name);
+========
+
+   mixed restore_object(string name);
+
 
 BESCHREIBUNG
-        Diese Simul-Efun unterscheidet sich in einigen Details von der
-        Driver-Efun restore_object() (s. auch dort! Wichtig!).
+============
 
-        1. diese sefun restauriert auch die mit F_SAVE markierten Properties
-        eines Objektes, sofern das Savefile von sefun save_object erstellt
-        wurde (was die efun des Driver nicht tut!).
-        2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
-        wird das Savefile als erstes immer unter /data/+name gesucht. Erst wenn es
-        dort nicht gefunden wird, wird unter name gesucht.
+   Diese Simul-Efun unterscheidet sich in einigen Details von der
+   Driver-Efun restore_object() (s. auch dort! Wichtig!).
+
+   1. diese sefun restauriert auch die mit F_SAVE markierten Properties
+   eines Objektes, sofern das Savefile von sefun save_object erstellt
+   wurde (was die efun des Driver nicht tut!).
+   2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
+   wird das Savefile als erstes immer unter /data/+name gesucht. Erst wenn es
+   dort nicht gefunden wird, wird unter name gesucht.
+
 
 SIEHE AUCH
-        save_object(E), restore_object(E), save_value(E)
-29.01.2017, Zesstra
+==========
 
+   save_object(E), restore_object(E), save_value(E)
+
+29.01.2017, Zesstra
diff --git a/doc/sefun/save_object b/doc/sefun/save_object
index 9614685..fc8175f 100644
--- a/doc/sefun/save_object
+++ b/doc/sefun/save_object
@@ -1,22 +1,35 @@
+
+save_object()
+*************
+
+
 SYNOPSIS
-        mixed save_object(string name);
+========
+
+   mixed save_object(string name);
+
 
 BESCHREIBUNG
-        Diese Simul-Efun unterscheidet sich in einigen Details von der
-        Driver-Efun save_object() (s. auch dort! Wichtig!).
-        1. diese sefun speichert auch die mit F_SAVE markierten Properties
-        eines Objektes ab (was die efun des Driver nicht tut!).
-        2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
-        wird /data/ vorangestellt, d.h. das Savefile wird immer unter /data/
-        erstellt.
-        3. das Format, in dem gespeichert wird, kann bei der sefun nicht
-        ausgewaehlt werden (ist aber auch nicht noetig!), sondern ein
-        mudlib-weiter Standard wird benutzt.
-        4. will man nicht in einem File speichern, sondern das, was im File
-        stehen wurde, als String zurueckhaben, muss man 0 als 'name'
-        uebergeben.
+============
+
+   Diese Simul-Efun unterscheidet sich in einigen Details von der
+   Driver-Efun save_object() (s. auch dort! Wichtig!).
+   1. diese sefun speichert auch die mit F_SAVE markierten Properties
+   eines Objektes ab (was die efun des Driver nicht tut!).
+   2. Sofern ein Pfad angegeben wird und dieser NICHT mit /data/ beginnt,
+   wird /data/ vorangestellt, d.h. das Savefile wird immer unter /data/
+   erstellt.
+   3. das Format, in dem gespeichert wird, kann bei der sefun nicht
+   ausgewaehlt werden (ist aber auch nicht noetig!), sondern ein
+   mudlib-weiter Standard wird benutzt.
+   4. will man nicht in einem File speichern, sondern das, was im File
+   stehen wurde, als String zurueckhaben, muss man 0 als 'name'
+   uebergeben.
+
 
 SIEHE AUCH
-        save_object(E), restore_object(E), save_value(E)
-29.01.2017, Zesstra
+==========
 
+   save_object(E), restore_object(E), save_value(E)
+
+29.01.2017, Zesstra
diff --git a/doc/sefun/send_room b/doc/sefun/send_room
index 24b05fa..7ddf43d 100644
--- a/doc/sefun/send_room
+++ b/doc/sefun/send_room
@@ -1,30 +1,42 @@
-FUNKTION:
+
+send_room()
+***********
+
+
+FUNKTION
+========
+
 varargs void send_room(object|string room, string msg, int msg_type,
-                       string msg_action, string msg_prefix,
-                       object *exclude, object origin)
+   string msg_action, string msg_prefix, object >>*<<exclude, object
+   origin)
 
-BESCHREIBUNG:
-        Sendet msg an alle Objekte in room durch Aufruf von ReceiveMsg() mit
-        den uebergebenen Argumenten.
-        Zur Bedeutung der Argumente siehe Manpage von ReceiveMsg().
 
-        Wenn das Raumobjekt mit seinem Namen angegeben ist, wird das Objekt
-        unter diesem Namen gesucht und und geladen, falls notwendig.
+BESCHREIBUNG
+============
 
-        Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
-        die darin enthaltenen Objekte gesendet wird.
-        Das ist sinnvoll, wenn zB ein Spieler Ausloeser einer Meldung ist
-        und diese selbst nicht erhalten soll.
+   Sendet msg an alle Objekte in room durch Aufruf von ReceiveMsg() mit
+   den uebergebenen Argumenten.
+   Zur Bedeutung der Argumente siehe Manpage von ReceiveMsg().
 
-        origin gibt an, welches Objekt die Meldung ausloest (muss nicht das
-        sendende Objekt selber) und wird vor allem fuer die Ignorierepruefung
-        verwendet. Default ist das sendende Objekt.
+   Wenn das Raumobjekt mit seinem Namen angegeben ist, wird das Objekt
+   unter diesem Namen gesucht und und geladen, falls notwendig.
 
-        Letztendlich ist die sefun vergleichbar zu tell_room().
+   Mit dem Array <*exclude> kann man verhindern, dass die Nachricht an
+   die darin enthaltenen Objekte gesendet wird.
+   Das ist sinnvoll, wenn zB ein Spieler Ausloeser einer Meldung ist
+   und diese selbst nicht erhalten soll.
+
+   origin gibt an, welches Objekt die Meldung ausloest (muss nicht das
+   sendende Objekt selber) und wird vor allem fuer die Ignorierepruefung
+   verwendet. Default ist das sendende Objekt.
+
+   Letztendlich ist die sefun vergleichbar zu tell_room().
+
 
 SIEHE AUCH
-        ReceiveMsg(L)
-        tell_object(E), tell_room(E), say(E), write(E)
+==========
+
+   ReceiveMsg(L)
+   tell_object(E), tell_room(E), say(E), write(E)
 
 13.03.2016, Zesstra
-
diff --git a/doc/sefun/set_heart_beat b/doc/sefun/set_heart_beat
index 837759e..a304181 100644
--- a/doc/sefun/set_heart_beat
+++ b/doc/sefun/set_heart_beat
@@ -1,23 +1,41 @@
+
+set_heart_beat()
+****************
+
+
 SYNOPSIS
-        int set_heart_beat(int flag);
+========
+
+   int set_heart_beat(int flag);
+
 
 BESCHREIBUNG
-        Schaltet den Heartbeat ein (1) oder aus (0). Der Treiber wendet die
-        Lfun heart_beat() auf das aktuelle Objekt alle __HEARTBEAT_INTERVAL__
-        Sekunden an, wenn der Heartbeat eingeschaltet ist. Ein Shadow
-        auf der Lfun wird ignoriert.
-        
-        Der Heartbeat sollte immer ausgeschaltet werden, wenn er nicht
-        gebraucht wird. Das reduziert die Systemauslastung.
+============
 
-        Liefert '1' bei Erfolg, '0' bei Fehler.
+   Schaltet den Heartbeat ein (1) oder aus (0). Der Treiber wendet die
+   Lfun heart_beat() auf das aktuelle Objekt alle __HEARTBEAT_INTERVAL__
+   Sekunden an, wenn der Heartbeat eingeschaltet ist. Ein Shadow
+   auf der Lfun wird ignoriert.
 
-        Das Abschalten eines bereits abgeschalteten Heartbeats (und umgekehrt
-        das Einschalten eines bereits eingeschalteten Heartbeats) zaehlt
-        als Fehler.
+
+
+   Der Heartbeat sollte immer ausgeschaltet werden, wenn er nicht
+   gebraucht wird. Das reduziert die Systemauslastung.
+
+   Liefert '1' bei Erfolg, '0' bei Fehler.
+
+   Das Abschalten eines bereits abgeschalteten Heartbeats (und umgekehrt
+   das Einschalten eines bereits eingeschalteten Heartbeats) zaehlt
+   als Fehler.
+
 
 BEMERKUNGEN
-        __HEARTBEAT_INTERVAL__ ist in MG = 2 Sekunden
+===========
+
+   __HEARTBEAT_INTERVAL__ ist in MG = 2 Sekunden
+
 
 SIEHE AUCH
-        heart_beat(A), call_out(E)
+==========
+
+   heart_beat(A), call_out(E)
diff --git a/doc/sefun/set_light b/doc/sefun/set_light
index 62390c4..b9dfc9c 100644
--- a/doc/sefun/set_light
+++ b/doc/sefun/set_light
@@ -1,17 +1,32 @@
-SYNOPSIS:
-        int set_light(int n)
 
-DESCRIPTION:
-        An object is by default dark. It can be set to not dark by
-        calling set_light(1). The environment will then also get this
-        light. The returned value is the total number of lights in
-        this room. So if you call set_light(0) it will return the
-        light level of the current object.
-        
-        Note that the value of the argument is added to the light of
-        the current object.
+set_light()
+***********
 
-BUGS:
-	This handling of light by the parser is inappropriate for most
-	purposes: If you put a burning candle into a safe, the safe
-	will start to emit light.
+
+SYNOPSIS
+========
+
+   int set_light(int n)
+
+
+DESCRIPTION
+===========
+
+   An object is by default dark. It can be set to not dark by
+   calling set_light(1). The environment will then also get this
+   light. The returned value is the total number of lights in
+   this room. So if you call set_light(0) it will return the
+   light level of the current object.
+
+
+
+   Note that the value of the argument is added to the light of
+   the current object.
+
+
+BUGS
+====
+
+   This handling of light by the parser is inappropriate for most
+   purposes: If you put a burning candle into a safe, the safe
+   will start to emit light.
diff --git a/doc/sefun/set_living_name b/doc/sefun/set_living_name
index 360a3ce..e588e6e 100644
--- a/doc/sefun/set_living_name
+++ b/doc/sefun/set_living_name
@@ -1,25 +1,41 @@
-SYNOPSIS:
-        void set_living_name(string name)
 
-BESCHREIBUNG:
-        Setzt einen "Lebewesennamen" fuer das Objekt, indem Name und Objekt in
-        eine Tabelle eingetragen werden, welche von find_living() durchsucht 
-        wird. Nach Setzen des Namens kann das Objekt per find_living() 
-        gefunden werden.
+set_living_name()
+*****************
 
-        Das Objekt muss ausserdem per enable_commands() als Lebewesen
-        markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
-        _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
-        werden.
 
-        Alle von /std/npc erbenden NPCs setzen ebenfalls automatisch einen
-        LivingName, der lower_case(P_NAME) entspricht.
+SYNOPSIS
+========
 
-        Ein Objekt kann nur einen Namen haben, mit dem es per find_living()
-        gesucht werden kann.
+   void set_living_name(string name)
 
-SIEHE AUCH:
-        find_living(E), find_livings(E), find_player(E), enable_commands(E)
 
-LETZTE AeNDERNG:
+BESCHREIBUNG
+============
+
+   Setzt einen "Lebewesennamen" fuer das Objekt, indem Name und Objekt in
+   eine Tabelle eingetragen werden, welche von find_living() durchsucht
+   wird. Nach Setzen des Namens kann das Objekt per find_living()
+   gefunden werden.
+
+   Das Objekt muss ausserdem per enable_commands() als Lebewesen
+   markiert worden sein. Dies ist fuer alle von /std/npc erbenden NPCs
+   _automatisch_ der Fall und sollte daher nicht nochmal explizit gemacht
+   werden.
+
+   Alle von /std/npc erbenden NPCs setzen ebenfalls automatisch einen
+   LivingName, der lower_case(P_NAME) entspricht.
+
+   Ein Objekt kann nur einen Namen haben, mit dem es per find_living()
+   gesucht werden kann.
+
+
+SIEHE AUCH
+==========
+
+   find_living(E), find_livings(E), find_player(E), enable_commands(E)
+
+
+LETZTE AeNDERNG
+===============
+
 19.10.2015, Arathorn
diff --git a/doc/sefun/set_object_heart_beat b/doc/sefun/set_object_heart_beat
index a7ba4ef..caecca2 100644
--- a/doc/sefun/set_object_heart_beat
+++ b/doc/sefun/set_object_heart_beat
@@ -1,15 +1,34 @@
-FUNKTION:
-        int set_object_heart_beat(object ob, int on)
 
-ARGUMENTE:
-        ob - Objekt, dessen heart_beat veraendert werden soll
-        on - Soll der heart_beat ein- oder ausgeschaltet werden?
+set_object_heart_beat()
+***********************
 
-BESCHREIBUNG:
-        Der heart_beat des Objektes wird ein- (on=1) oder aus- (on=0) geschaltet.
 
-RUECKGABEWERT:
-        1, wenn das Setzen geklappt hat, ansonsten 0.
+FUNKTION
+========
 
-SIEHE AUCH:
-        set_heart_beat(E), heart_beat(L), call_out(E)
+   int set_object_heart_beat(object ob, int on)
+
+
+ARGUMENTE
+=========
+
+   ob - Objekt, dessen heart_beat veraendert werden soll
+   on - Soll der heart_beat ein- oder ausgeschaltet werden?
+
+
+BESCHREIBUNG
+============
+
+   Der heart_beat des Objektes wird ein- (on=1) oder aus- (on=0) geschaltet.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn das Setzen geklappt hat, ansonsten 0.
+
+
+SIEHE AUCH
+==========
+
+   set_heart_beat(E), heart_beat(L), call_out(E)
diff --git a/doc/sefun/sha1 b/doc/sefun/sha1
index 00bb6cc..ef3b10e 100644
--- a/doc/sefun/sha1
+++ b/doc/sefun/sha1
@@ -1,22 +1,44 @@
+
+sha1()
+******
+
+
 DEPRECATED
+==========
+
+
 SYNOPSIS
-        string sha1 (string arg)
-        string sha1 (int *  arg)
+========
+
+   string sha1 (string arg)
+   string sha1 (int *  arg)
+
 
 BESCHREIBUNG
-        Berechnet den SHA1-Hashwert von <arg>.
-        Das Argument kann ein String, oder ein Array von Zahlen sein (von
-        welchen nur das unterste Byte betrachted wird).
+============
+
+   Berechnet den SHA1-Hashwert von <arg>.
+   Das Argument kann ein String, oder ein Array von Zahlen sein (von
+   welchen nur das unterste Byte betrachted wird).
+
 
 BEISPIEL
-        string s;
+========
 
-        s = sha1("Hello");
-        s = sha1( ({ 'H', 'e', 'l', 'l', 'o' })
+   string s;
+
+   s = sha1("Hello");
+   s = sha1( ({ 'H', 'e', 'l', 'l', 'o' })
+
 
 HISTORY
-        Eingefuehrt in LDMud 3.3.523.
-        LDMud 3.3.712 fuehrte Zaehlenarrays als Argument ein.
+=======
+
+   Eingefuehrt in LDMud 3.3.523.
+   LDMud 3.3.712 fuehrte Zaehlenarrays als Argument ein.
+
 
 SIEHE AUCH
-        crypt(E), md5(E)
+==========
+
+   crypt(E), md5(E)
diff --git a/doc/sefun/shadow b/doc/sefun/shadow
index 9309dea..2b7032c 100644
--- a/doc/sefun/shadow
+++ b/doc/sefun/shadow
@@ -1,143 +1,162 @@
-FUNKTION:
-     object shadow(object ob, int flag)
 
-ARGUMENTE:
-     object ob		- das vom shadow betroffene Objekt
-     int flag		- 0 fuer eine Shadow-Existenzabfrage
-                      1 fuer Shadow durch previous_object()
-
-BESCHREIBUNG:
-     Wenn <flag> nicht 0 ist, wird das aktuelle Objekt dem Objekt obj
-     als Shadow uebergeworfen. Bei Erfolg wird das geshadowte Objekt
-     zurueckgegeben, sonst 0.
-     Wenn <flag> 0 ist, wird entweder 0 oder das geshadowte Objekt
-     zurueck gegeben.
-
-     Wenn ein Objekt A ein Objekt B beschattet, werden alle call_other() fuer
-     B auf A umgeleitet. Wenn die an B gerufene Funktion in A existiert, so
-     wird sie in A gerufen, bei Nichtexistenz in B.
-     A ist das einzige Objekt, welche die beschatteten Funktionen mit 
-     call_other() in B aufrufen kann, selbst B kann nicht per call_other() 
-     diese Funktion rufen.
-     Alle intern verwendeten Funktionen arbeiten jedoch weiterhin normal.
-
-     Das aufrufende Objekt muss vom Master-Objekt die Erlaubnis haben,
-     als Shadow zu wirken.
-
-     Es gibt folgende Kriterien fuer eine erfolgreiche Beschattung:
-     - das zu beschattende Objekt ob:
-       - ist weder ein access_rights-Objekt noch ein ROOT-Objekt
-       - gibt beim Aufruf von query_prevent_shadow(beschatter) eine 0
-         zurueck
-       - beschattet selbst niemanden
-       - hat kein '#pragma no_shadow' gesetzt
-     - der Beschatter:
-       - wird nicht selbst (direkt) beschattet
-       - beschattet noch niemanden (sonst folgt direkter Abbruch)
-       - hat kein environment()
-       - definiert/beschattet keine Methode, die im beschatteten Objekt ob 
-         als nomask definiert ist
-
-     Beschattet man ein Objekt A mit einem Objekt B und dann das Objekt A
-     zusaetzlich mit einem Objekt C, so wird eine Beschattungshierarchie
-     erstellt:
-
-     B macht shadow(A, 1)
-     B->A
-     C macht shadow(A, 1)
-     C->B->A
-
-BEISPIELE:
-     // wenn: B beschattet A, dann
-     shadow(find_object(A), 0) == B
+shadow()
+********
 
 
-     // 3 Objekte beschatten in Hierarchie (liegt auch im Pfad)
-     --- aa.c ---
-     void fun() {
-         printf("%O [a] fun()\n", this_object());
-     }
+FUNKTION
+========
 
-     void fun3() {
-         printf("%O [a] fun3()\n", this_object());
-     }
+   object shadow(object ob, int flag)
 
-     --- bb.c ---
-     int fun() {
-         printf("%O [b] fun()\n", this_object());
-         find_object("/doc/beispiele/shadow/aa")->fun();
-     }
 
-     void fun2() {
-         printf("%O [b] fun2()\n", this_object());
-         find_object("/doc/beispiele/shadow/aa")->fun3();
-         this_object()->fun3();
-     }
+ARGUMENTE
+=========
 
-     void do_shadow(object target) { shadow(target, 1); }
+   object ob          - das vom shadow betroffene Objekt
+   int flag           - 0 fuer eine Shadow-Existenzabfrage
+                    1 fuer Shadow durch previous_object()
 
-     --- cc.c ---
-     int fun() {
-         printf("%O [c] fun()\n", this_object());
-         find_object("/doc/beispiele/shadow/aa")->fun();
-     }
 
-     void fun3() {
-         printf("%O [c] fun3()\n", this_object());
-     }
+BESCHREIBUNG
+============
 
-     void do_shadow(object target) { shadow(target, 1); }
+   Wenn <flag> nicht 0 ist, wird das aktuelle Objekt dem Objekt obj
+   als Shadow uebergeworfen. Bei Erfolg wird das geshadowte Objekt
+   zurueckgegeben, sonst 0.
+   Wenn <flag> 0 ist, wird entweder 0 oder das geshadowte Objekt
+   zurueck gegeben.
 
-     // darauf arbeitender Code
+   Wenn ein Objekt A ein Objekt B beschattet, werden alle call_other() fuer
+   B auf A umgeleitet. Wenn die an B gerufene Funktion in A existiert, so
+   wird sie in A gerufen, bei Nichtexistenz in B.
+   A ist das einzige Objekt, welche die beschatteten Funktionen mit
+   call_other() in B aufrufen kann, selbst B kann nicht per call_other()
+   diese Funktion rufen.
+   Alle intern verwendeten Funktionen arbeiten jedoch weiterhin normal.
 
-     object a, b, c;
+   Das aufrufende Objekt muss vom Master-Objekt die Erlaubnis haben,
+   als Shadow zu wirken.
 
-     destruct("/doc/beispiele/shadow/aa");
-     a = load_object("/doc/beispiele/shadow/aa");
-     destruct("/doc/beispiele/shadow/bb");
-     b = load_object("/doc/beispiele/shadow/bb");
-     destruct("/doc/beispiele/shadow/cc");
-     c = load_object("/doc/beispiele/shadow/cc");
+   Es gibt folgende Kriterien fuer eine erfolgreiche Beschattung:
+   - das zu beschattende Objekt ob:
+     - ist weder ein access_rights-Objekt noch ein ROOT-Objekt
+     - gibt beim Aufruf von query_prevent_shadow(beschatter) eine 0
+       zurueck
+     - beschattet selbst niemanden
+     - hat kein '#pragma no_shadow' gesetzt
+   - der Beschatter:
+     - wird nicht selbst (direkt) beschattet
+     - beschattet noch niemanden (sonst folgt direkter Abbruch)
+     - hat kein environment()
+     - definiert/beschattet keine Methode, die im beschatteten Objekt ob
+       als nomask definiert ist
 
-     b->do_shadow(a);
-     c->do_shadow(a);
-     printf("--- a->fun() ---\n");
-     a->fun();
-     printf("--- b->fun() ---\n");
-     b->fun();
-     printf("--- c->fun() ---\n");
-     c->fun();
-     printf("--- b->fun2() ---\n");
-     b->fun2();
+   Beschattet man ein Objekt A mit einem Objekt B und dann das Objekt A
+   zusaetzlich mit einem Objekt C, so wird eine Beschattungshierarchie
+   erstellt:
 
-     // ... und seine Ausgabe:
+   B macht shadow(A, 1)
+   B->A
+   C macht shadow(A, 1)
+   C->B->A
 
-     --- a->fun() ---
-     /doc/beispiele/shadow/cc [c] fun()
-     /doc/beispiele/shadow/bb [b] fun()
-     /doc/beispiele/shadow/aa [a] fun()
-     --- b->fun() ---
-     /doc/beispiele/shadow/cc [c] fun()
-     /doc/beispiele/shadow/bb [b] fun()
-     /doc/beispiele/shadow/aa [a] fun()
-     --- c->fun() ---
-     /doc/beispiele/shadow/cc [c] fun()
-     /doc/beispiele/shadow/bb [b] fun()
-     /doc/beispiele/shadow/aa [a] fun()
-     --- b->fun2() ---
-     /doc/beispiele/shadow/bb [b] fun2()
-     /doc/beispiele/shadow/aa [a] fun3()
-     /doc/beispiele/shadow/cc [c] fun3()
 
-     // Der erste Aufruf von b::fun2() in a findet sofort a::fun3()! Der
-     // Driver nimmt an, dass alle Shadows ab c bei Rufen von b nach a
-     // schon ihre Chance hatten.
-     // Der zweite Aufruf allerdings ist auf b und wird beim Durchgeben
-     // an a von c uebernommen.
+BEISPIELE
+=========
 
-SIEHE AUCH:
-     Generell:	     shadow(E)
-     Rechte:	     query_allow_shadow(M), query_prevent_shadow(L)
-     Informationen:  query_shadowing(E)
+   // wenn: B beschattet A, dann
+   shadow(find_object(A), 0) == B
 
-8.Aug 2007 Gloinson
\ No newline at end of file
+
+   // 3 Objekte beschatten in Hierarchie (liegt auch im Pfad)
+   --- aa.c ---
+   void fun() {
+       printf("%O [a] fun()\n", this_object());
+   }
+
+   void fun3() {
+       printf("%O [a] fun3()\n", this_object());
+   }
+
+   --- bb.c ---
+   int fun() {
+       printf("%O [b] fun()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun();
+   }
+
+   void fun2() {
+       printf("%O [b] fun2()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun3();
+       this_object()->fun3();
+   }
+
+   void do_shadow(object target) { shadow(target, 1); }
+
+   --- cc.c ---
+   int fun() {
+       printf("%O [c] fun()\n", this_object());
+       find_object("/doc/beispiele/shadow/aa")->fun();
+   }
+
+   void fun3() {
+       printf("%O [c] fun3()\n", this_object());
+   }
+
+   void do_shadow(object target) { shadow(target, 1); }
+
+   // darauf arbeitender Code
+
+   object a, b, c;
+
+   destruct("/doc/beispiele/shadow/aa");
+   a = load_object("/doc/beispiele/shadow/aa");
+   destruct("/doc/beispiele/shadow/bb");
+   b = load_object("/doc/beispiele/shadow/bb");
+   destruct("/doc/beispiele/shadow/cc");
+   c = load_object("/doc/beispiele/shadow/cc");
+
+   b->do_shadow(a);
+   c->do_shadow(a);
+   printf("--- a->fun() ---\n");
+   a->fun();
+   printf("--- b->fun() ---\n");
+   b->fun();
+   printf("--- c->fun() ---\n");
+   c->fun();
+   printf("--- b->fun2() ---\n");
+   b->fun2();
+
+   // ... und seine Ausgabe:
+
+   --- a->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- b->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- c->fun() ---
+   /doc/beispiele/shadow/cc [c] fun()
+   /doc/beispiele/shadow/bb [b] fun()
+   /doc/beispiele/shadow/aa [a] fun()
+   --- b->fun2() ---
+   /doc/beispiele/shadow/bb [b] fun2()
+   /doc/beispiele/shadow/aa [a] fun3()
+   /doc/beispiele/shadow/cc [c] fun3()
+
+   // Der erste Aufruf von b::fun2() in a findet sofort a::fun3()! Der
+   // Driver nimmt an, dass alle Shadows ab c bei Rufen von b nach a
+   // schon ihre Chance hatten.
+   // Der zweite Aufruf allerdings ist auf b und wird beim Durchgeben
+   // an a von c uebernommen.
+
+
+SIEHE AUCH
+==========
+
+   Generell:       shadow(E)
+   Rechte:         query_allow_shadow(M), query_prevent_shadow(L)
+   Informationen:  query_shadowing(E)
+
+8.Aug 2007 Gloinson
diff --git a/doc/sefun/shout b/doc/sefun/shout
index ead266f..0d38abb 100644
--- a/doc/sefun/shout
+++ b/doc/sefun/shout
@@ -1,69 +1,93 @@
-FUNKTION:
-     varargs void shout( string text, mixed where )
 
-DEFINIERT IN:
-     /secure/simul_efun.c
+shout()
+*******
 
-ARGUMENTE:
-     text
-          Der Text, der ausgegeben werden soll
 
-     where [optional]
-          Wo soll man den Text ueberall hoeren koennen?
+FUNKTION
+========
 
-BESCHREIBUNG:
-     Der Text 'text' wird an alle Spieler in einem Gebiet ausgegeben.
-     Wird der Parameter 'where' weggelassen bzw. ist er null, so geht der
-     Text an alle Spieler im Mud. Das catch_tell() von NPCs wird nicht
-     ausgeloest.
+   varargs void shout( string text, mixed where )
 
-     Ist 'where' eine Zahl != 0, so wird der Text nur an Spieler ausgegeben,
-     die sich im selben Gebiet aufhalten wie this_player(). Dabei wird die
-     Zugehoerigkeit zum selben Gebiet an den ersten zwei Ebenen des Pfades
-     der Raeume festgemacht. Befindet sich this_player() z.B. in
-     "/d/ebene/irgendwo", so geht der Text an alle Spieler, deren Aufenthalts-
-     orte in "/d/ebene/*" liegen.
 
-     Fuer 'where' kann auch direkt ein Pfad angegeben werden. So wuerde ein
-     'shout( txt, "/players/" )' an alle Spieler gehen, die sich in
-     (eigentlich nicht erwuenschten) Raeumen in /players/* befinden.
+DEFINIERT IN
+============
 
-     Um mit einem Aufruf gleich mehrere Pfade abzudecken, kann auch ein Array
-     von Strings uebergeben werden. Alle Pfade werden als 'regular expression'
-     interpretiert. Dadurch ist es moeglich, die Zielraeume auf einfache Art
-     sehr genau einzuschraenken.
+   /secure/simul_efun.c
 
-     HINWEIS: Bitte ueberleg vor jedem shout() genau, ob es wirklich noetig
-     ist, dass _jeder_ etwas davon mitbekommt oder ob es nicht vielleicht
-     sinnvoller ist, das Zielgebiet etwas einzuschraenken. Im Zweifelsfall
-     sollte der zustaendige RM aufpassen, dass die Spieler nicht durch allzu
-     zahlreiche shouts belaestigt werden.
 
-RUeCKGABEWERT:
-     keiner
+ARGUMENTE
+=========
 
-BEISPIELE:
-     shout( "Du spuerst, wie ein Zittern durch das MorgenGrauen geht.\n" );
-        Der allseits bekannte Text wird an alle Spieler im MG ausgegeben.
+   text
+        Der Text, der ausgegeben werden soll
 
-     shout( "Du hoerst eine gewaltige Explosion.\n", 1 );
-        Von der Explosion bekommen alle Spieler in derselben Gegend etwas mit,
-        aber nicht am anderen Ende des Muds.
+   where [optional]
+        Wo soll man den Text ueberall hoeren koennen?
 
-     shout( "Irgendwo ist ein Baum umgefallen.\n", "/d/vland/" );
-        ... gibt eine Meldung aus, die keinen wirklich interessiert. Aber es
-        trifft eh nur Leute in einem unwichtigen Teil des MorgenGrauen. ;-)
 
-     shout( "Aufwachen Du Idler!\n", "/players/.*/workroom" );
-        Mit Hilfe von regular expressions kann man recht einfach z.B. alle
-        Workrooms auf einmal adressieren.
+BESCHREIBUNG
+============
 
-     shout( "Halloooooo, Echoooooo!\n", ({ "/d/gebirge/", "/d/ebene/" }) );
-        Wenn der Spieler hoch oben auf dem Berg laut genug ruft, hoert man
-        ihn auch noch weit in der Ebene.
+   Der Text 'text' wird an alle Spieler in einem Gebiet ausgegeben.
+   Wird der Parameter 'where' weggelassen bzw. ist er null, so geht der
+   Text an alle Spieler im Mud. Das catch_tell() von NPCs wird nicht
+   ausgeloest.
 
-SIEHE AUCH:
-     write(), say(), tell_object(), tell_room(), regexp()
+   Ist 'where' eine Zahl != 0, so wird der Text nur an Spieler ausgegeben,
+   die sich im selben Gebiet aufhalten wie this_player(). Dabei wird die
+   Zugehoerigkeit zum selben Gebiet an den ersten zwei Ebenen des Pfades
+   der Raeume festgemacht. Befindet sich this_player() z.B. in
+   "/d/ebene/irgendwo", so geht der Text an alle Spieler, deren Aufenthalts-
+   orte in "/d/ebene/*" liegen.
 
-----------------------------------------------------------------------------
+   Fuer 'where' kann auch direkt ein Pfad angegeben werden. So wuerde ein
+   'shout( txt, "/players/" )' an alle Spieler gehen, die sich in
+   (eigentlich nicht erwuenschten) Raeumen in /players/* befinden.
+
+   Um mit einem Aufruf gleich mehrere Pfade abzudecken, kann auch ein Array
+   von Strings uebergeben werden. Alle Pfade werden als 'regular expression'
+   interpretiert. Dadurch ist es moeglich, die Zielraeume auf einfache Art
+   sehr genau einzuschraenken.
+
+   HINWEIS: Bitte ueberleg vor jedem shout() genau, ob es wirklich noetig
+   ist, dass _jeder_ etwas davon mitbekommt oder ob es nicht vielleicht
+   sinnvoller ist, das Zielgebiet etwas einzuschraenken. Im Zweifelsfall
+   sollte der zustaendige RM aufpassen, dass die Spieler nicht durch allzu
+   zahlreiche shouts belaestigt werden.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   shout( "Du spuerst, wie ein Zittern durch das MorgenGrauen geht.\n" );
+      Der allseits bekannte Text wird an alle Spieler im MG ausgegeben.
+
+   shout( "Du hoerst eine gewaltige Explosion.\n", 1 );
+      Von der Explosion bekommen alle Spieler in derselben Gegend etwas mit,
+      aber nicht am anderen Ende des Muds.
+
+   shout( "Irgendwo ist ein Baum umgefallen.\n", "/d/vland/" );
+      ... gibt eine Meldung aus, die keinen wirklich interessiert. Aber es
+      trifft eh nur Leute in einem unwichtigen Teil des MorgenGrauen. ;-)
+
+   shout( "Aufwachen Du Idler!\n", "/players/.*/workroom" );
+      Mit Hilfe von regular expressions kann man recht einfach z.B. alle
+      Workrooms auf einmal adressieren.
+
+   shout( "Halloooooo, Echoooooo!\n", ({ "/d/gebirge/", "/d/ebene/" }) );
+      Wenn der Spieler hoch oben auf dem Berg laut genug ruft, hoert man
+      ihn auch noch weit in der Ebene.
+
+
+SIEHE AUCH
+==========
+
+   write(), say(), tell_object(), tell_room(), regexp()
+
 Last modified: Sun Nov 28 03:00:00 1999 by Tiamak
diff --git a/doc/sefun/time2string b/doc/sefun/time2string
index 4dae719..4acd1a2 100644
--- a/doc/sefun/time2string
+++ b/doc/sefun/time2string
@@ -1,53 +1,75 @@
-FUNKTION:
-	string time2string( string format, int time )
-	
-ARGUMENTE:
-	format: String, der das Format der Zeitausgabe festlegt.
-	time: Eine Anzahl von Sekunden, die ausgegeben werden soll.
 
-ERGEBNIS:
-	Zeit in String-Form.
+time2string()
+*************
 
-BESCHREIBUNG:
-	Der Formatstring wird zurueckgegeben, wobei bestimmte Ersetzungs-
-	symbole durch passende Daten, die aus der Zeit berechnet werden,
-	ersetzt werden. Die Ersetzungssymbole funktionieren aehnlich
-	denen aus 'printf' bekannten Symbolen. Insbesondere kann eine
-	Feldbreite mit angegeben werden.
 
-	Folgende Ersetzungssymbole sind erlaubt:
-	%%	wird durch ein Prozent (%) ersetzt.
-	%n, %w, %d, %h, %m, %s
-		  werden durch die Anzahl der Monate, Wochen, Tage, Stunden, Minuten oder
-      Sekunden ersetzt. Die Funktion erkennt, welches die groesste benutzte
-		  Zeiteinheit ist und rechnet die keineren so um, dass sie zwischen 0 und
-      jeweiligen Maximum der Zeiteinheit liegen (59, 23 etc.) liegen.
- 	%N	wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
-      je nachdem welchen Wertd %n haette.
- 	%W	wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
-		  je nachdem welchen Wert %w haette.
-	%D	wird durch die Worte 'Tag' oder 'Tage' ersetzt,
-		  je nachdem welchen Wert %d haette.
-	%H,%M,%S
-		  werden durch die Worte 'Stunde(n)', 'Minute(n)' bzw. 'Sekunde(n)'
-      ersetzt.
-	%X	wird durch die groesste Zeiteinheit ersetzt, die nicht Null ist. Wenn
-      bei %X die Feldbreite 0 angegeben wird (also %0X), dann wird nicht der
-      ausgeschriebene Name, sonder eine Abkuerzung fuer die Zeiteinheit
-      ausgegeben. (Das sind dann 'd','h','m' oder 's'.)
-	%x	wird durch den numerischen Wert dieser Zeiteinheit
-		  ersetzt.
-			
-BEISPIELE:
-	time2string( "%m %M", 60 ) -> "1 Minute"
-	time2string( "%m %M", 120 ) -> "2 Minuten"
-	time2string( "%s %S", 125 ) -> "125 Sekunden"
-	time2string( "%m %M und %s %S" ) -> "2 Minuten und 5 Sekunden"
-	time2string( "%d:%02h:%02m:%02s", 10000 ) -> "0:02:46:40"
-	time2string( "%x %X", 3600 ) -> "1 Stunde"
-	time2string( "%x %0X", 3600 ) -> "1 h"
-	time2string( "%x %X", 360000 ) -> "4 Tage"
-	time2string( "%x %0X", 360000 ) -> "4 d"
+FUNKTION
+========
 
-SIEHE AUCH:
-	sprintf(E)
+   string time2string( string format, int time )
+
+
+ARGUMENTE
+=========
+
+   format: String, der das Format der Zeitausgabe festlegt.
+   time: Eine Anzahl von Sekunden, die ausgegeben werden soll.
+
+
+ERGEBNIS
+========
+
+   Zeit in String-Form.
+
+
+BESCHREIBUNG
+============
+
+     Der Formatstring wird zurueckgegeben, wobei bestimmte Ersetzungs-
+     symbole durch passende Daten, die aus der Zeit berechnet werden,
+     ersetzt werden. Die Ersetzungssymbole funktionieren aehnlich
+     denen aus 'printf' bekannten Symbolen. Insbesondere kann eine
+     Feldbreite mit angegeben werden.
+
+     Folgende Ersetzungssymbole sind erlaubt:
+     %%      wird durch ein Prozent (%) ersetzt.
+     %n, %w, %d, %h, %m, %s
+               werden durch die Anzahl der Monate, Wochen, Tage, Stunden, Minuten oder
+   Sekunden ersetzt. Die Funktion erkennt, welches die groesste benutzte
+               Zeiteinheit ist und rechnet die keineren so um, dass sie zwischen 0 und
+   jeweiligen Maximum der Zeiteinheit liegen (59, 23 etc.) liegen.
+     %N      wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
+   je nachdem welchen Wertd %n haette.
+     %W      wird durch die Worte 'Woche' oder 'Wochen' ersetzt,
+               je nachdem welchen Wert %w haette.
+     %D      wird durch die Worte 'Tag' oder 'Tage' ersetzt,
+               je nachdem welchen Wert %d haette.
+     %H,%M,%S
+               werden durch die Worte 'Stunde(n)', 'Minute(n)' bzw. 'Sekunde(n)'
+   ersetzt.
+     %X      wird durch die groesste Zeiteinheit ersetzt, die nicht Null ist. Wenn
+   bei %X die Feldbreite 0 angegeben wird (also %0X), dann wird nicht der
+   ausgeschriebene Name, sonder eine Abkuerzung fuer die Zeiteinheit
+   ausgegeben. (Das sind dann 'd','h','m' oder 's'.)
+     %x      wird durch den numerischen Wert dieser Zeiteinheit
+               ersetzt.
+
+
+BEISPIELE
+=========
+
+   time2string( "%m %M", 60 ) -> "1 Minute"
+   time2string( "%m %M", 120 ) -> "2 Minuten"
+   time2string( "%s %S", 125 ) -> "125 Sekunden"
+   time2string( "%m %M und %s %S" ) -> "2 Minuten und 5 Sekunden"
+   time2string( "%d:%02h:%02m:%02s", 10000 ) -> "0:02:46:40"
+   time2string( "%x %X", 3600 ) -> "1 Stunde"
+   time2string( "%x %0X", 3600 ) -> "1 h"
+   time2string( "%x %X", 360000 ) -> "4 Tage"
+   time2string( "%x %0X", 360000 ) -> "4 d"
+
+
+SIEHE AUCH
+==========
+
+   sprintf(E)
diff --git a/doc/sefun/update_actions b/doc/sefun/update_actions
index b28cf9f..b25c07c 100644
--- a/doc/sefun/update_actions
+++ b/doc/sefun/update_actions
@@ -1,38 +1,63 @@
-FUNKTION:
-        void update_actions()
 
-ARGUMENTE:
-        keine
+update_actions()
+****************
 
-BESCHREIBUNG:
-        Falls eine Aktion ein add_action() ausgeloest hat, werden mit dieser
-        Funktion die neuen Befehle bei allen Lebewesen im aufrufenden Objekt
-        bzw. in der Umgebung des aufrufenden Objektes aktiv.
 
-RUECKGABEWERT:
-        keiner
+FUNKTION
+========
 
-BEMERKUNGEN:
-        Diese Funktion wird eigentlich nur benoetigt, wenn man mit add_action()
-        anstelle von AddCmd() arbeitet (zB. bei Objekten, die nicht
-        /std/thing/commands inheriten).
+   void update_actions()
 
-BEISPIELE:
-        /* Normalerweise sollte man es SO gerade nicht machen. Stattdessen
-         * sollte die "kletter"-Funktion pruefen, ob die Luke geoeffnet ist, 
-         * und sich im Fehlerfall beschweren.
-         * So aber dient es als schoenes Beispiel fuer update_actions() ;)
-         */
-        int oeffne(string str)
-        {
-          if( str == "luke" ) {
-            write( "Du oeffnest die Luke. Du kannst jetzt nach unten klettern.\n");
-            add_action("kletter", "kletter", 1);
-            update_actions();
-            return 1;
-          }
-          return 0;
-        }
 
-SIEHE AUCH:
-  add_action(E), AddCmd(L), RemoveCmd(L)
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Falls eine Aktion ein add_action() ausgeloest hat, werden mit dieser
+   Funktion die neuen Befehle bei allen Lebewesen im aufrufenden Objekt
+   bzw. in der Umgebung des aufrufenden Objektes aktiv.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Diese Funktion wird eigentlich nur benoetigt, wenn man mit add_action()
+   anstelle von AddCmd() arbeitet (zB. bei Objekten, die nicht
+   /std/thing/commands inheriten).
+
+
+BEISPIELE
+=========
+
+   /* Normalerweise sollte man es SO gerade nicht machen. Stattdessen
+    * sollte die "kletter"-Funktion pruefen, ob die Luke geoeffnet ist,
+    * und sich im Fehlerfall beschweren.
+    * So aber dient es als schoenes Beispiel fuer update_actions() ;)
+    */
+   int oeffne(string str)
+   {
+     if( str == "luke" ) {
+       write( "Du oeffnest die Luke. Du kannst jetzt nach unten klettern.\n");
+       add_action("kletter", "kletter", 1);
+       update_actions();
+       return 1;
+     }
+     return 0;
+   }
+
+
+SIEHE AUCH
+==========
+
+   add_action(E), AddCmd(L), RemoveCmd(L)
diff --git a/doc/sefun/upperstring b/doc/sefun/upperstring
index 665ed16..416c90d 100644
--- a/doc/sefun/upperstring
+++ b/doc/sefun/upperstring
@@ -1,17 +1,39 @@
-FUNKTION:
-	string upperstring(string str)
 
-ARGUMENTE:
-	str - Der umzuwandelnde String.
+upperstring()
+*************
 
-BESCHREIBUNG:
-	Alle Kleinbuchstaben in str werden in Grossbuchstaben umgewandelt.
 
-RUECKGABEWERT:
-	Der umgewandelte String.
+FUNKTION
+========
 
-BEISPIELE:
-	s = upperstring( "Na, Sterblicher!\n") => s = "NA, STERBLICHER!\n"
+   string upperstring(string str)
 
-SIEHE AUCH:
-	lowerstring(E), lower_case(E), capitalize(E)
+
+ARGUMENTE
+=========
+
+   str - Der umzuwandelnde String.
+
+
+BESCHREIBUNG
+============
+
+   Alle Kleinbuchstaben in str werden in Grossbuchstaben umgewandelt.
+
+
+RUECKGABEWERT
+=============
+
+   Der umgewandelte String.
+
+
+BEISPIELE
+=========
+
+   s = upperstring( "Na, Sterblicher!\n") => s = "NA, STERBLICHER!\n"
+
+
+SIEHE AUCH
+==========
+
+   lowerstring(E), lower_case(E), capitalize(E)
diff --git a/doc/sefun/uptime b/doc/sefun/uptime
index ee7a536..4c007a3 100644
--- a/doc/sefun/uptime
+++ b/doc/sefun/uptime
@@ -1,16 +1,37 @@
-FUNKTION:
-        string uptime()
 
-ARGUMENTE:
-        keine
+uptime()
+********
 
-BESCHREIBUNG:
-        Liefert die aktuelle Uptime des MorgenGrauens.
 
-RUECKGABEWERT:
-        Die Uptime als Zeitstring.
+FUNKTION
+========
 
-BEISPIELE:
-        ut = uptime() => ut = "14 Tage, 9 Stunden, 3 Minuten und 7 Sekunden."
+   string uptime()
 
-SIEHE AUCH:
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Liefert die aktuelle Uptime des MorgenGrauens.
+
+
+RUECKGABEWERT
+=============
+
+   Die Uptime als Zeitstring.
+
+
+BEISPIELE
+=========
+
+   ut = uptime() => ut = "14 Tage, 9 Stunden, 3 Minuten und 7 Sekunden."
+
+
+SIEHE AUCH
+==========
diff --git a/doc/sefun/wizlist b/doc/sefun/wizlist
index a2ba7bd..f81b9b8 100644
--- a/doc/sefun/wizlist
+++ b/doc/sefun/wizlist
@@ -1,66 +1,84 @@
-SYNOPSIS:
-  varargs void wizlist(string name, int sortkey ) 	
 
-DESCRIPTION:
-  wizlist() liefert eine Liste mit verschiedenen Verbrauchsdaten 
-	zu Magiern. Es werden dabei normalerweise 21 Eintraege ausgegeben:
-  10 vor <name>, <name> selbst und 10 nach <name>.
+wizlist()
+*********
 
-  Die Liste ist dabei folgendermassen aufgebaut:
 
-	1. WL_NAME
-	   Gesammelt werden die Daten pro UID. Hierbei zaehlt aber jede EUID, nicht
-     nur die von Magiern.
-     Das heisst, Objekte unter /d/polar/vanion/eispalast
-	   werden nicht unter "vanion" sondern unter "d.polar.vanion"
-	   abgerechnet.
+SYNOPSIS
+========
 
-	2. WL_COMMANDS
-     Anzahl der diesem Objekt zugeordneten commands.
+   varargs void wizlist(string name, int sortkey )
 
-	3. WL_COMMANDS * 100 / total_cmd 
-     Prozentualer Anteil an den gesamt verbrauchten commands.
 
-	4. WL_COST (links in der eckigen Klammer)
-     Anzahl der verbrauchten eval ticks. Dies ist zeitlich gewichtet, d.h.
-     nimmt im Lauf der Zeit ab, wenn nichts mehr dazu kommt.
+DESCRIPTION
+===========
 
-  5. WL_TOTAL_GIGACOST (rechts in der eckigen Klammer)
-     Anzahl der insgesamt verbrauchten eval ticks in Giga-Ticks.
-     Nicht zeitlich gewichtet.
+   wizlist() liefert eine Liste mit verschiedenen Verbrauchsdaten
+         zu Magiern. Es werden dabei normalerweise 21 Eintraege ausgegeben:
+   10 vor <name>, <name> selbst und 10 nach <name>.
 
-	6. WL_HEART_BEATS
-     Anzahl der ausgeloesten heart beats.
-  
-  7. WL_ARRAY_TOTAL
+   Die Liste ist dabei folgendermassen aufgebaut:
 
-  8. WL_MAPPING_TOTAL
+         1. WL_NAME
+            Gesammelt werden die Daten pro UID. Hierbei zaehlt aber jede EUID, nicht
+      nur die von Magiern.
+      Das heisst, Objekte unter /d/polar/vanion/eispalast
+            werden nicht unter "vanion" sondern unter "d.polar.vanion"
+            abgerechnet.
 
-PARAMETERS: 
-  Wird name angegeben, wird erzwungen, dass die erwaehnte EUID mit
-  in der Liste dargestellt wird. Wird name nicht angegeben, wird es
-  automatisch auf this_player()->query_real_name() gesetzt.
+         2. WL_COMMANDS
+      Anzahl der diesem Objekt zugeordneten commands.
 
-  Wird als name "TOP100" angegeben, wird die Top-100-Liste ausgegeben.
+         3. WL_COMMANDS * 100 / total_cmd
+      Prozentualer Anteil an den gesamt verbrauchten commands.
 
-  Wird als name "ALL" angegeben, wird die vollstaendige Liste aus-
-  gegeben.
+         4. WL_COST (links in der eckigen Klammer)
+      Anzahl der verbrauchten eval ticks. Dies ist zeitlich gewichtet, d.h.
+      nimmt im Lauf der Zeit ab, wenn nichts mehr dazu kommt.
 
-  Durch Angabe von sortkey kann die Liste nach einer der Spalten 
-  sortiert werden. Gueltige Werte sind die in /sys/wizlist.h ange-
-  gebenen Defines.
-	
-EXAMPLE: 
-  > xeval wizlist("vanion", WL_HEART_BEATS)
-      Erzwingt Vanions Eintrag in der Liste und sortiert die Liste anhand
-      der durch die EUIDs ausgefuehrten heart beats.
+   5. WL_TOTAL_GIGACOST (rechts in der eckigen Klammer)
+      Anzahl der insgesamt verbrauchten eval ticks in Giga-Ticks.
+      Nicht zeitlich gewichtet.
 
-  > xeval wizlist("ALL", WL_EVAL_COST)
+         6. WL_HEART_BEATS
+      Anzahl der ausgeloesten heart beats.
+
+
+
+   7. WL_ARRAY_TOTAL
+
+   8. WL_MAPPING_TOTAL
+
+PARAMETERS:
+   Wird name angegeben, wird erzwungen, dass die erwaehnte EUID mit in
+   der Liste dargestellt wird. Wird name nicht angegeben, wird es
+   automatisch auf this_player()->query_real_name() gesetzt.
+
+   Wird als name "TOP100" angegeben, wird die Top-100-Liste
+   ausgegeben.
+
+   Wird als name "ALL" angegeben, wird die vollstaendige Liste aus-
+   gegeben.
+
+   Durch Angabe von sortkey kann die Liste nach einer der Spalten
+   sortiert werden. Gueltige Werte sind die in /sys/wizlist.h ange-
+   gebenen Defines.
+
+EXAMPLE
+   > xeval wizlist("vanion", WL_HEART_BEATS)
+      Erzwingt Vanions Eintrag in der Liste und sortiert die Liste
+      anhand der durch die EUIDs ausgefuehrten heart beats.
+
+   > xeval wizlist("ALL", WL_EVAL_COST)
       Zeigt die komplette Liste nach eval ticks-Verbauch sortiert an.
 
-SEE ALSO:
-      wizlist_info(E)
 
-LAST UPDATED:
-  09.05.2015, Zesstra
+SEE ALSO
+========
 
+   wizlist_info(E)
+
+
+LAST UPDATED
+============
+
+   09.05.2015, Zesstra
diff --git a/doc/sefun/wizlist_info b/doc/sefun/wizlist_info
index 2a5c127..0c86434 100644
--- a/doc/sefun/wizlist_info
+++ b/doc/sefun/wizlist_info
@@ -1,39 +1,58 @@
-GESCHUETZT
-SYNOPSIS
-        #include <sys/wizlist.h>
 
-        *mixed wizlist_info();
+wizlist_info()
+**************
+
+
+GESCHUETZT
+==========
+
+
+SYNOPSIS
+========
+
+   #include <sys/wizlist.h>
+
+   *mixed wizlist_info();
+
 
 BESCHREIBUNG
-        Liefert ein Array mit Eintraegen aus der Wizlist (der internen
-        Magierliste). Die Benutzung muss durch das Masterobjekt erlaubt
-        werden.
+============
 
-        Das Resultat ist ein Array mit einem Eintrag fuer jeden Magier (uid).
-        Jeder Eintrag enthaelt wiederum ein Array mit folgenden Elementen:
+   Liefert ein Array mit Eintraegen aus der Wizlist (der internen
+   Magierliste). Die Benutzung muss durch das Masterobjekt erlaubt
+   werden.
 
-            string  w[WL_NAME]          Name des Magiers
-            int w[WL_COMMANDS]          Gewichtete Anzahl Kommandi, die von
-                                        Objekten dieses Gottes ausgefuehrt
-                                        wurden
-            int w[WL_COSTE]             Gewichtete Summe der Eval-Kosten
-            int w[WL_GIGACOST]          Gewichtete Summe der Eval-Kosten
-            int W[WL_TOTAL_COST]        Totale Summe der Eval-Kosten
-            int w[WL_TOTAL_GIGACOST]    Totale Summe der Eval-Kosten
-            int w[WL_HEART_BEAT]        Gewichtete Anzahl der heat_beat()s
-            int w[WL_CALL_OUT]          Reserviert fuer call_out()s
-                                        (bisher nicht implementiert)
-            int w[WL_ARRAY_TOTAL]       Totale Groesse aller Arrays in
-                                        Elementen
-            mixed w[WL_EXTRA]           Die eigentliche Wizlist-Info
+   Das Resultat ist ein Array mit einem Eintrag fuer jeden Magier (uid).
+   Jeder Eintrag enthaelt wiederum ein Array mit folgenden Elementen:
 
-        Die "gewichteten" Werte verfallen pro Stunde um 10%.
+       string  w[WL_NAME]          Name des Magiers
+       int w[WL_COMMANDS]          Gewichtete Anzahl Kommandi, die von
+                                   Objekten dieses Gottes ausgefuehrt
+                                   wurden
+       int w[WL_COSTE]             Gewichtete Summe der Eval-Kosten
+       int w[WL_GIGACOST]          Gewichtete Summe der Eval-Kosten
+       int W[WL_TOTAL_COST]        Totale Summe der Eval-Kosten
+       int w[WL_TOTAL_GIGACOST]    Totale Summe der Eval-Kosten
+       int w[WL_HEART_BEAT]        Gewichtete Anzahl der heat_beat()s
+       int w[WL_CALL_OUT]          Reserviert fuer call_out()s
+                                   (bisher nicht implementiert)
+       int w[WL_ARRAY_TOTAL]       Totale Groesse aller Arrays in
+                                   Elementen
+       mixed w[WL_EXTRA]           Die eigentliche Wizlist-Info
+
+   Die "gewichteten" Werte verfallen pro Stunde um 10%.
+
 
 AENDERUNGEN
-        LDMud 3.2.10 trennte das alte WL_EVAL_COST in WL_COST und WL_GIGACOST,
-        um laengeren Uptimes gerecht zu werden. Ausserdem wurde
-        WL_TOTAL_COST und WL_TOTAL_GIGACOST eingefuehrt.
+===========
+
+   LDMud 3.2.10 trennte das alte WL_EVAL_COST in WL_COST und WL_GIGACOST,
+   um laengeren Uptimes gerecht zu werden. Ausserdem wurde
+   WL_TOTAL_COST und WL_TOTAL_GIGACOST eingefuehrt.
+
 
 SIEHE AUCH
-        privilege_violation(M), set_extra_wizinfo_size(E),
-        get_extra_wizinfo(E), set_extra_wizinfo(E)
+==========
+
+   privilege_violation(M), set_extra_wizinfo_size(E),
+   get_extra_wizinfo(E), set_extra_wizinfo(E)
diff --git a/doc/sefun/write_data b/doc/sefun/write_data
index 5a205d5..b8f0d4f 100644
--- a/doc/sefun/write_data
+++ b/doc/sefun/write_data
@@ -1,23 +1,39 @@
+
+write_data()
+************
+
+
 SYNOPSIS
-        string write_data(string file, int start, int anzahl)
+========
+
+   string write_data(string file, int start, int anzahl)
+
 
 BESCHREIBUNG
-        Diese Funktion macht genau das, was write_file() tut (also siehe dort),
-        allerdings stellt sie sicher, dass <file> immer mit einem /data/
-        beginnt (setzt es also notfalls davor).
-        Es wird also immer irgendwo unterhalb von /data/ geschrieben.
+============
 
-        Die Benutzung dieser sefun wird dringend empfohlen, falls Daten
-        ausserhalb von Spielerobjekten gepeichert werden, damit Daten und
-        Code getrennt abgelegt sind. Dies vereinfacht z.B. die
-        Datensicherung.
+   Diese Funktion macht genau das, was write_file() tut (also siehe dort),
+   allerdings stellt sie sicher, dass <file> immer mit einem /data/
+   beginnt (setzt es also notfalls davor).
+   Es wird also immer irgendwo unterhalb von /data/ geschrieben.
+
+   Die Benutzung dieser sefun wird dringend empfohlen, falls Daten
+   ausserhalb von Spielerobjekten gepeichert werden, damit Daten und
+   Code getrennt abgelegt sind. Dies vereinfacht z.B. die
+   Datensicherung.
+
 
 BEISPIEL
-        # write_file("/d/ebene/zesstra/blupp", "Testdaten.\n");
-        -> schreibt in das File /data/d/ebene/zesstra/blupp.
-        # write_file("/data/d/ebene/zesstra/blupp", "Testdaten.\n");
-        -> tut dasselbe.
+========
+
+   # write_file("/d/ebene/zesstra/blupp", "Testdaten.\n");
+   -> schreibt in das File /data/d/ebene/zesstra/blupp.
+   # write_file("/data/d/ebene/zesstra/blupp", "Testdaten.\n");
+   -> tut dasselbe.
+
 
 SIEHE AUCH
-        read_data()
-        read_file(E), write_file(E), read_bytes(E), write_file(E)
+==========
+
+   read_data()
+   read_file(E), write_file(E), read_bytes(E), write_file(E)
