diff --git a/doc/lfun/obsolete/AddHpHook b/doc/lfun/obsolete/AddHpHook
index e227951..5a2adce 100644
--- a/doc/lfun/obsolete/AddHpHook
+++ b/doc/lfun/obsolete/AddHpHook
@@ -1,29 +1,52 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 AddHpHook()
-FUNKTION:
-     int AddHpHook(object ob)
+***********
 
-DEFINIERT IN:
-     /std/player/life.c
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** AddHpHook()
 
-ARGUMENTE:
-     ob - das Objekt, das sich eintragen moechte.
 
-BESCHREIBUNG:
-     Traegt ein Objekt in P_HP_HOOKS ein, wenn es nicht schon darin steht.
+FUNKTION
+========
 
-     Aendern sich beim Spieler dann HP oder KP (nicht durch Set()), wird
-     an allen eingetragenen Objekten NotifyHpChange() gerufen.
+   int AddHpHook(object ob)
 
-RUECKGABEWERT:
-     1, wenn Erfolg, 0 sonst
 
-SIEHE AUCH:
-     Gegenpart:	RemoveHpHook()
-     Props:	P_HP_HOOKS, P_HP
-     Verwandt:	reduce_hit_points(), do_damage(), buffer_hp()
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, das sich eintragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Traegt ein Objekt in P_HP_HOOKS ein, wenn es nicht schon darin steht.
+
+   Aendern sich beim Spieler dann HP oder KP (nicht durch Set()), wird
+   an allen eingetragenen Objekten NotifyHpChange() gerufen.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn Erfolg, 0 sonst
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart: RemoveHpHook()
+   Props:     P_HP_HOOKS, P_HP
+   Verwandt:  reduce_hit_points(), do_damage(), buffer_hp()
 
 23.Feb.2004 Gloinson
diff --git a/doc/lfun/obsolete/AddInsertHook b/doc/lfun/obsolete/AddInsertHook
index 5e80272..9a372ba 100644
--- a/doc/lfun/obsolete/AddInsertHook
+++ b/doc/lfun/obsolete/AddInsertHook
@@ -1,59 +1,85 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 AddInsertHook()
+***************
 
-FUNKTION:
-     void AddInsertHook(object ob);
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** AddInsertHook()
 
-DEFINIERT IN:
-     /std/player/restrictions.c
 
-ARGUMENTE:
-     ob - Das Objekt, das informiert werden soll, wenn ein Objekt dem
-          Spielerinventar hinzugefuegt wurde.
+FUNKTION
+========
 
-BESCHREIBUNG:
-     (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
-      H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
-      vorhanden.)
+   void AddInsertHook(object ob);
 
-     Diese Funktion wird im Spielerobjekt aufgerufen, um das Objekt ob als
-     Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
-     werden informiert, wenn ein Objekt ins Spielerinventar bewegt wurde.
-     Technisch wird die Bewegung ueber NotifyInsert() im Spielerobjekt
-     detektiert, und im Listener-Objekt wird die Funktion InsertNotify()
-     gerufen, die als Parameter das neu ins Spielerinventar bewegte Objekt
-     uebergeben bekommt.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-BEMERKUNGEN:
-     Das Listener-Objekt muss sich ebenfalls im Spielerinventar befinden,
-     ansonsten wird der eingetragene Hook wieder geloescht.
+   /std/player/restrictions.c
 
-BEISPIEL:
-     
-     a) Objekt "ob" wird im Spieler als Listener angemeldet:
-        this_player()->AddInsertHook(ob);
 
-     b) Objekt "new" wird ins Spielerinventar bewegt, das Spielerobjekt
-        informiert "ob" darueber:
-        ob->InsertNotify(new);
+ARGUMENTE
+=========
 
-     c) Das Listener-Objekt "ob" reagiert darauf, z.B. indem es die Fackel
-        loescht, sofern sie vorher brannte:
-        void InsertNotify(object new) {
-          if ( objectp(new) && new->id("\nfackel") && 
-               new->QueryProp(P_LIGHTED) )
-            new->unlight();
-          return;
-        }
+   ob - Das Objekt, das informiert werden soll, wenn ein Objekt dem
+        Spielerinventar hinzugefuegt wurde.
 
-SIEHE AUCH:
-    NotifyInsert(), RemoveInsertHook(), QueryInsertHooks()
 
-----------------------------------------------------------------------------
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion wird im Spielerobjekt aufgerufen, um das Objekt ob als
+   Hook-Listener anzumelden. Auf diese Weise eingetragene Listener
+   werden informiert, wenn ein Objekt ins Spielerinventar bewegt wurde.
+   Technisch wird die Bewegung ueber NotifyInsert() im Spielerobjekt
+   detektiert, und im Listener-Objekt wird die Funktion InsertNotify()
+   gerufen, die als Parameter das neu ins Spielerinventar bewegte Objekt
+   uebergeben bekommt.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Das Listener-Objekt muss sich ebenfalls im Spielerinventar befinden,
+   ansonsten wird der eingetragene Hook wieder geloescht.
+
+
+BEISPIEL
+========
+
+   a) Objekt "ob" wird im Spieler als Listener angemeldet:
+      this_player()->AddInsertHook(ob);
+
+   b) Objekt "new" wird ins Spielerinventar bewegt, das Spielerobjekt
+      informiert "ob" darueber:
+      ob->InsertNotify(new);
+
+   c) Das Listener-Objekt "ob" reagiert darauf, z.B. indem es die Fackel
+      loescht, sofern sie vorher brannte:
+      void InsertNotify(object new) {
+        if ( objectp(new) && new->id("\nfackel") &&
+             new->QueryProp(P_LIGHTED) )
+          new->unlight();
+        return;
+      }
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), RemoveInsertHook(), QueryInsertHooks()
+
 Last modified: 14.04.2010, Arathorn
diff --git a/doc/lfun/obsolete/ModifySkillAttributeOld b/doc/lfun/obsolete/ModifySkillAttributeOld
index 65d9afc..b0b81ab 100644
--- a/doc/lfun/obsolete/ModifySkillAttributeOld
+++ b/doc/lfun/obsolete/ModifySkillAttributeOld
@@ -1,90 +1,118 @@
+
 ModifySkillAttributeOld()
+*************************
 
-FUNKTION:
-    varargs int ModifySkillAttributeOld(object caster, string atrname, 
-                                        int value, int duration, mixed fun)
 
-DEFINIERT IN:
-    /std/living/skill_attributes.c
+FUNKTION
+========
 
-ARGUMENTE:
-    <caster>    IGNORIERT
-                frueher Objekt, das die Modifikation vornimmt, heute ist
-                dieses Argument ohne Bedeutung und wird ignoriert.
+   varargs int ModifySkillAttributeOld(object caster, string atrname,
+                                       int value, int duration, mixed fun)
 
-    <atrname>   STRING
-                Name des zu veraendernden Attributes
-                (Definiert in /sys/living/skill_attributes.h)
 
-    <value>     INT
-                Neuer Wert des Attributs (Standard: 100)
+DEFINIERT IN
+============
 
-    <duration>  INT
-                Dauer in Sekunden
+   /std/living/skill_attributes.c
 
-    <fun>       NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!!
 
-BESCHREIBUNG:
-    Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen
-    Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen!
+ARGUMENTE
+=========
 
-    Aendert ein Skill-Attribut eines Living.
-    
-    Fuer <value> ist folgendes zu beachten:
-    Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die
-    Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren
-    additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier
-    uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur 
-    ein Modifikator zur gleichen Zeit aktiv war.)
-    Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge-
-    tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge-
-    tragen, bei 50 einer von -50, welcher das Skillattribute folglich 
-    reduziert.
+   <caster>    IGNORIERT
+               frueher Objekt, das die Modifikation vornimmt, heute ist
+               dieses Argument ohne Bedeutung und wird ignoriert.
 
-    Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA
-    zulaessig.
+   <atrname>   STRING
+               Name des zu veraendernden Attributes
+               (Definiert in /sys/living/skill_attributes.h)
 
-RUECKGABEWERT:
-     0  wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt
-        werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()).
-    >0  wenn alles okay war
+   <value>     INT
+               Neuer Wert des Attributs (Standard: 100)
 
-BEMERKUNGEN:
-    Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das
-    Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu
-    ueberschreiben. Dies ist inzwischen ohne Bedeutung.
+   <duration>  INT
+               Dauer in Sekunden
 
-BEISPIELE:
-    Ein NPC:
+   <fun>       NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!!
 
-    void
-    create() {
-    .
-    .
-    .
-    AddSpell(1, 1,
-      "Der fuerchterliche NPC haut Dir auf den Kopf.\n",
-      "Der fuerchterliche NPC haut @WEN auf den Kopf.\n",
-      DT_MAGIC, "schwaechen");
-    .
-    .
-    }
 
-    schwaechen(object enemy, int damage, mixed *dam_type) {
-      int ergebnis;
-      ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5);
-      if (ergebnis > 0)
-          tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n");
-    }
-    
-    Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um
-    50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator).
+BESCHREIBUNG
+============
 
-SIEHE AUCH:
-    P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS,
-    ModifySkillAttribute, QuerySkillAttribute(),
-    RemoveSkillAttributeModifer(), QuerySkillAttributeModifier()
+   Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen
+   Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen!
 
------------------------------------------------------------------------------
+   Aendert ein Skill-Attribut eines Living.
+
+
+
+   Fuer <value> ist folgendes zu beachten:
+   Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die
+   Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren
+   additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier
+   uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur
+   ein Modifikator zur gleichen Zeit aktiv war.)
+   Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge-
+   tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge-
+   tragen, bei 50 einer von -50, welcher das Skillattribute folglich
+   reduziert.
+
+   Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA
+   zulaessig.
+
+
+RUECKGABEWERT
+=============
+
+    0  wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt
+       werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()).
+   >0  wenn alles okay war
+
+
+BEMERKUNGEN
+===========
+
+   Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das
+   Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu
+   ueberschreiben. Dies ist inzwischen ohne Bedeutung.
+
+
+BEISPIELE
+=========
+
+   Ein NPC:
+
+   void
+   create() {
+   .
+   .
+   .
+   AddSpell(1, 1,
+     "Der fuerchterliche NPC haut Dir auf den Kopf.\n",
+     "Der fuerchterliche NPC haut @WEN auf den Kopf.\n",
+     DT_MAGIC, "schwaechen");
+   .
+   .
+   }
+
+   schwaechen(object enemy, int damage, mixed *dam_type) {
+     int ergebnis;
+     ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5);
+     if (ergebnis > 0)
+         tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n");
+   }
+
+
+
+   Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um
+   50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator).
+
+
+SIEHE AUCH
+==========
+
+   P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS,
+   ModifySkillAttribute, QuerySkillAttribute(),
+   RemoveSkillAttributeModifer(), QuerySkillAttributeModifier()
+
 07.08.2008 Zesstra
-
diff --git a/doc/lfun/obsolete/NotifyGiveQuest b/doc/lfun/obsolete/NotifyGiveQuest
index 7e29798..220942b 100644
--- a/doc/lfun/obsolete/NotifyGiveQuest
+++ b/doc/lfun/obsolete/NotifyGiveQuest
@@ -1,37 +1,62 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Events (siehe "man events").                                        *
-***********************************************************************
+
+NotifyGiveQuest()
+*****************
+
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Events (siehe "man
+events").                                        * ******************
+*****************************************************
 
 NotifyGiveQuest()
 
-FUNKTION:
-     void NotifyGiveQuest(object pl, string key);
-     
-DEFINIERT IN:
-     /std/gilden_ob.c
-     
-ARGUMENTE:
-     pl     Der Spieler, der eine Quest geloest hat.
-     key    Name der geloesten Quest.
-     
-BESCHREIBUNG:
-     Die Funktion wird in der Gilde des Spielers aufgerufen, wenn der 
-     Spieler eine gueltige Quest besteht - und zwar unabhaengig davon,
-     ob er sie bereits geloest hat, oder nicht.
-     
-RUECKGABEWERT:
-     keiner
-     
-BEMERKUNGEN:
-     Die Funktion ist dafuer gedacht, von Gildenprogrammierern ueberschrieben
-     zu werden, wenn beispielsweise bestimmte Quests als Aufstiegsbedingung
-     verlangt werden, diese aber in der entsprechenden Gilde geloest sein
-     muessen (z.B. Obergladiator als Level-5-Zauberer).
-     
-SIEHE AUCH:
-     /std/gilden_ob.c
-     /std/player/quests.c
 
-----------------------------------------------------------------------------
+FUNKTION
+========
+
+   void NotifyGiveQuest(object pl, string key);
+
+
+DEFINIERT IN
+============
+
+   /std/gilden_ob.c
+
+
+ARGUMENTE
+=========
+
+   pl     Der Spieler, der eine Quest geloest hat.
+   key    Name der geloesten Quest.
+
+
+BESCHREIBUNG
+============
+
+   Die Funktion wird in der Gilde des Spielers aufgerufen, wenn der
+   Spieler eine gueltige Quest besteht - und zwar unabhaengig davon,
+   ob er sie bereits geloest hat, oder nicht.
+
+
+RUECKGABEWERT
+=============
+
+   keiner
+
+
+BEMERKUNGEN
+===========
+
+   Die Funktion ist dafuer gedacht, von Gildenprogrammierern ueberschrieben
+   zu werden, wenn beispielsweise bestimmte Quests als Aufstiegsbedingung
+   verlangt werden, diese aber in der entsprechenden Gilde geloest sein
+   muessen (z.B. Obergladiator als Level-5-Zauberer).
+
+
+SIEHE AUCH
+==========
+
+   /std/gilden_ob.c
+   /std/player/quests.c
+
 Last modified: Fri Oct 4 10:17:00 1996 by Silvana
diff --git a/doc/lfun/obsolete/NotifyHpChange b/doc/lfun/obsolete/NotifyHpChange
index 6f82b03..3c96222 100644
--- a/doc/lfun/obsolete/NotifyHpChange
+++ b/doc/lfun/obsolete/NotifyHpChange
@@ -1,47 +1,71 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 NotifyHpChange()
+****************
 
-FUNKTION:
-	void NotifyHpChange();
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** NotifyHpChange()
 
-DEFINIERT IN:
-	/std/player/life.c
 
-ARGUMENTE:
-	keine
+FUNKTION
+========
 
-BESCHREIBUNG:
-	Wenn sich die Lebenspunkte eines Spielers aendern, so werden davon
-	auch andere Objekte unterrichtet, sofern diese mittels der Funktion
-	AddHpHook() bei eben diesem Spieler angemeldet wurden.
-	Fortan wird dann die Funktion NotifyHpChange() in diesen
-	angemeldeten Objekten aufgerufen, wenn sich die Property P_HP des
-	Spielers aendert. Es werden hierbei keine Argumente an
-	NotifyHpChange() uebergeben, die aktuellen Lebenspunkte kann man ja
-	auch ohne weiteres ueber die Property P_HP in Erfahrung bringen und
-	aeltere Werte muss man sich gesondert merken. Zu beachten ist, dass
-	die Property P_HP bei Aufruf der Funktion NotifyHpChange() bereits
-	den neuen Wert enthaelt.
-	Bei dem Spieler angemeldete Objekte, die von Lebenspunkteaenderungen
-	informiert werden sollen, werden automatisch aus der Liste entfernt,
-	wenn sie zerstoert wurden. Diese Liste ist in der Property
-	P_HP_HOOKS zu finden. Per Hand kann man sie auch explizit mittels
-	der Funktion RemoveHpHook() entfernen.
-	Stirbt ein Spieler, so wird die Funktion NotifyPlayerDeath()
-	aufgerufen und nicht NotifyHpChange()!
+   void NotifyHpChange();
 
-RUeCKGABEWERT:
-	keiner
 
-BEISPIELE:
-	ist in Arbeit
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-	P_HP, P_HP_HOOKS, AddHpHook(), RemoveHpHook(),
-	Defend(), do_damage(), NotifyPlayerDeath()
+   /std/player/life.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   Wenn sich die Lebenspunkte eines Spielers aendern, so werden davon
+   auch andere Objekte unterrichtet, sofern diese mittels der Funktion
+   AddHpHook() bei eben diesem Spieler angemeldet wurden.
+   Fortan wird dann die Funktion NotifyHpChange() in diesen
+   angemeldeten Objekten aufgerufen, wenn sich die Property P_HP des
+   Spielers aendert. Es werden hierbei keine Argumente an
+   NotifyHpChange() uebergeben, die aktuellen Lebenspunkte kann man ja
+   auch ohne weiteres ueber die Property P_HP in Erfahrung bringen und
+   aeltere Werte muss man sich gesondert merken. Zu beachten ist, dass
+   die Property P_HP bei Aufruf der Funktion NotifyHpChange() bereits
+   den neuen Wert enthaelt.
+   Bei dem Spieler angemeldete Objekte, die von Lebenspunkteaenderungen
+   informiert werden sollen, werden automatisch aus der Liste entfernt,
+   wenn sie zerstoert wurden. Diese Liste ist in der Property
+   P_HP_HOOKS zu finden. Per Hand kann man sie auch explizit mittels
+   der Funktion RemoveHpHook() entfernen.
+   Stirbt ein Spieler, so wird die Funktion NotifyPlayerDeath()
+   aufgerufen und nicht NotifyHpChange()!
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+BEISPIELE
+=========
+
+   ist in Arbeit
+
+
+SIEHE AUCH
+==========
+
+   P_HP, P_HP_HOOKS, AddHpHook(), RemoveHpHook(),
+   Defend(), do_damage(), NotifyPlayerDeath()
+
 Last modified: Thu Nov 19 13:54:33 1998 by Patryn
diff --git a/doc/lfun/obsolete/QueryEnemy b/doc/lfun/obsolete/QueryEnemy
index bf0b583..2613f53 100644
--- a/doc/lfun/obsolete/QueryEnemy
+++ b/doc/lfun/obsolete/QueryEnemy
@@ -1,24 +1,51 @@
-********************* OBSOLETE LFUN ***********************************
-FUNKTION:
-	object QueryEnemy();
 
-DEFINIERT IN:
-	/std/living/combat.c
+QueryEnemy()
+************
 
-ARGUMENTE:
-	keine
+********************* OBSOLETE LFUN
+***********************************
 
-RUeCKGABEWERT:
-	gefundener Gegner
 
-BESCHREIBUNG:
-	Diese Funktion liefert zufaellig einen der anwesenden Gegner
-	zurueck, sofern keine Gegner bevorzugt ausgewaehlt werden.
+FUNKTION
+========
 
-BEMERKUNGEN:
-  Diese Lfun existiert nicht mehr. Bitte SelectEnemy() benutzen.
+   object QueryEnemy();
 
-SIEHE AUCH:
-	SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
-----------------------------------------------------------------------------
+
+DEFINIERT IN
+============
+
+   /std/living/combat.c
+
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUeCKGABEWERT
+=============
+
+   gefundener Gegner
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert zufaellig einen der anwesenden Gegner
+   zurueck, sofern keine Gegner bevorzugt ausgewaehlt werden.
+
+
+BEMERKUNGEN
+===========
+
+   Diese Lfun existiert nicht mehr. Bitte SelectEnemy() benutzen.
+
+
+SIEHE AUCH
+==========
+
+   SelectEnemy(), QueryPreferedEnemy(), P_PREFERED_ENEMY
+
 07.02.2009, Zesstra
diff --git a/doc/lfun/obsolete/QueryInsertHooks b/doc/lfun/obsolete/QueryInsertHooks
index c43d036..317104c 100644
--- a/doc/lfun/obsolete/QueryInsertHooks
+++ b/doc/lfun/obsolete/QueryInsertHooks
@@ -1,31 +1,52 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 QueryInsertHooks()
+******************
 
-FUNKTION:
-     object *QueryInsertHooks();
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** QueryInsertHooks()
 
-DEFINIERT IN:
-     /std/player/restrictions.c
 
-ARGUMENTE:
-     keine
+FUNKTION
+========
 
-BESCHREIBUNG:
-     (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
-      H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
-      vorhanden.)
+   object *QueryInsertHooks();
 
-     Diese Funktion gibt die aktuell beim Spielerobjekt angemeldeten
-     Listener-Objekte zurueck.
 
-RUeCKGABEWERT:
-     Array aus Objektpointern oder leeres Array
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    NotifyInsert(), AddInsertHook(), RemoveInsertHook()
+   /std/player/restrictions.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion gibt die aktuell beim Spielerobjekt angemeldeten
+   Listener-Objekte zurueck.
+
+
+RUeCKGABEWERT
+=============
+
+   Array aus Objektpointern oder leeres Array
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), AddInsertHook(), RemoveInsertHook()
+
 Last modified: 14.04.2010, Arathorn
diff --git a/doc/lfun/obsolete/QueryOptQP b/doc/lfun/obsolete/QueryOptQP
index f6f72c5..77404ad 100644
--- a/doc/lfun/obsolete/QueryOptQP
+++ b/doc/lfun/obsolete/QueryOptQP
@@ -1,25 +1,43 @@
+
 QueryOptQP()
+************
 
-FUNKTION:
-    int QueryOptQP()
 
-DEFINIERT IN:
-    /secure/questmaster.c
+FUNKTION
+========
 
-ARGUMENTE:
-    keine
+   int QueryOptQP()
 
-RUECKGABEWERT:
-    Abenteuerpunkte der optionalen Quests
 
-BESCHREIBUNG:
-    Diese Funktion liefert die Abenteuerpunkte der optionalen
-    Abenteuer zurueck. 
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
-    QueryMaxQP, QueryTotalQP
+   /secure/questmaster.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   keine
+
+
+RUECKGABEWERT
+=============
+
+   Abenteuerpunkte der optionalen Quests
+
+
+BESCHREIBUNG
+============
+
+   Diese Funktion liefert die Abenteuerpunkte der optionalen
+   Abenteuer zurueck.
+
+
+SIEHE AUCH
+==========
+
+   GiveQuest, QueryQuest, /secure/questmaster.h, QueryGroupedKeys,
+   QueryMaxQP, QueryTotalQP
+
 Zuletzt geaendert: Sam, 25. Nov 2000, 14:04:28 von Zook.
-
diff --git a/doc/lfun/obsolete/RemoveHpHook b/doc/lfun/obsolete/RemoveHpHook
index d3177f1..54c93ec 100644
--- a/doc/lfun/obsolete/RemoveHpHook
+++ b/doc/lfun/obsolete/RemoveHpHook
@@ -1,25 +1,48 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 RemoveHpHook()
-FUNKTION:
-     int RemoveHpHook(object ob)
+**************
 
-DEFINIERT IN:
-     /std/player/life.c
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** RemoveHpHook()
 
-ARGUMENTE:
-     ob - das Objekt, das sich austragen moechte.
 
-BESCHREIBUNG:
-     Entfernt den Eintrag fuer dieses Objekt in P_HP_HOOKS.
+FUNKTION
+========
 
-RUECKGABEWERT:
-     1, wenn Erfolg, 0 sonst
+   int RemoveHpHook(object ob)
 
-SIEHE AUCH:
-     Gegenpart:	AddHpHook()
-     Props:	P_HP_HOOKS, P_HP
+
+DEFINIERT IN
+============
+
+   /std/player/life.c
+
+
+ARGUMENTE
+=========
+
+   ob - das Objekt, das sich austragen moechte.
+
+
+BESCHREIBUNG
+============
+
+   Entfernt den Eintrag fuer dieses Objekt in P_HP_HOOKS.
+
+
+RUECKGABEWERT
+=============
+
+   1, wenn Erfolg, 0 sonst
+
+
+SIEHE AUCH
+==========
+
+   Gegenpart: AddHpHook()
+   Props:     P_HP_HOOKS, P_HP
 
 23.Feb.2004 Gloinson
diff --git a/doc/lfun/obsolete/RemoveInsertHook b/doc/lfun/obsolete/RemoveInsertHook
index f232eed..6c77edf 100644
--- a/doc/lfun/obsolete/RemoveInsertHook
+++ b/doc/lfun/obsolete/RemoveInsertHook
@@ -1,31 +1,52 @@
-********************* OBSOLETE LFUN ***********************************
-* Diese Efun bitte nicht mehr benutzen, sondern stattdessen die       *
-* Hooks (s. /doc/std/hooks).                                          *
-***********************************************************************
+
 RemoveInsertHook()
+******************
 
-FUNKTION:
-     void RemoveInsertHook(object ob);
+********************* OBSOLETE LFUN
+*********************************** * Diese Efun bitte nicht mehr
+benutzen, sondern stattdessen die       * * Hooks (s. /doc/std/hooks).
+* *******************************************************************
+**** RemoveInsertHook()
 
-DEFINIERT IN:
-     /std/player/restrictions.c
 
-ARGUMENTE:
-     ob - Das Objekt, das als Listener aus der Liste ausgetragen werden soll
+FUNKTION
+========
 
-BESCHREIBUNG:
-     (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
-      H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
-      vorhanden.)
+   void RemoveInsertHook(object ob);
 
-     Diese Funktion wird im Spielerobjekt aufgerufen, um ein als Listener
-     eingetragenes Hook-Objekt ob wieder auszutragen.
 
-RUeCKGABEWERT:
-     keiner
+DEFINIERT IN
+============
 
-SIEHE AUCH:
-    NotifyInsert(), AddInsertHook(), QueryInsertHooks()
+   /std/player/restrictions.c
 
-----------------------------------------------------------------------------
+
+ARGUMENTE
+=========
+
+   ob - Das Objekt, das als Listener aus der Liste ausgetragen werden soll
+
+
+BESCHREIBUNG
+============
+
+   (Diese Funktionalitaet wurde ersetzt durch den allgemeinen Hook
+    H_HOOK_INSERT und ist nur noch aus Gruenden der Kompatibilitaet
+    vorhanden.)
+
+   Diese Funktion wird im Spielerobjekt aufgerufen, um ein als Listener
+   eingetragenes Hook-Objekt ob wieder auszutragen.
+
+
+RUeCKGABEWERT
+=============
+
+   keiner
+
+
+SIEHE AUCH
+==========
+
+   NotifyInsert(), AddInsertHook(), QueryInsertHooks()
+
 Last modified: 14.04.2010, Arathorn
diff --git a/doc/lfun/obsolete/TestAttributeLock b/doc/lfun/obsolete/TestAttributeLock
index 126e931..3d5d54d 100644
--- a/doc/lfun/obsolete/TestAttributeLock
+++ b/doc/lfun/obsolete/TestAttributeLock
@@ -1,25 +1,47 @@
-********************* OBSOLETE LFUN ***********************************
+
 TestAttributeLock()
-FUNKTION:
-     string TestAttributeLock(mapping check)
+*******************
 
-DEFINIERT IN:
-     /std/living/attributes.c
-
-PARAMETER:
-     check	- Mapping mit Attributen: ([<attr>:<wert>])
+********************* OBSOLETE LFUN
+*********************************** TestAttributeLock()
 
-BESCHREIBUNG:
-     Prueft, ob eines der im Mapping enthaltenen Attribute blockiert
-     ist (bereits durch einen anderen Modifier belegt wurde).
-     
-     Da Modifier nicht mehr direkt blockieren ist diese Funktion obsolet
-     und in Livings inzwischen nicht mehr existent.
 
-SIEHE AUCH:
-     QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
-     SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
-     P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
-     P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
+FUNKTION
+========
+
+   string TestAttributeLock(mapping check)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+PARAMETER
+=========
+
+   check      - Mapping mit Attributen: ([<attr>:<wert>])
+
+
+BESCHREIBUNG
+============
+
+   Prueft, ob eines der im Mapping enthaltenen Attribute blockiert
+   ist (bereits durch einen anderen Modifier belegt wurde).
+
+
+
+   Da Modifier nicht mehr direkt blockieren ist diese Funktion obsolet
+   und in Livings inzwischen nicht mehr existent.
+
+
+SIEHE AUCH
+==========
+
+   QueryAttribute(), QueryRealAttribute(), QueryAttributeOffset(),
+   SetAttr(), SetAttribute(), SetRealAttribute(), UpdateAttributes(),
+   P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS, P_ATTRIBUTES_MODIFIER,
+   P_X_ATTR_MOD, P_M_ATTR_MOD, /std/living/attributes.c
 
 11.05.2007, Zesstra
diff --git a/doc/lfun/obsolete/extra_look b/doc/lfun/obsolete/extra_look
index 753a8ed..d8e9703 100644
--- a/doc/lfun/obsolete/extra_look
+++ b/doc/lfun/obsolete/extra_look
@@ -1,19 +1,32 @@
-********************* VERALTETE LFUN ******************************
-* Diese LFUN ist veraltet. Bitte benutzt sie NICHT mehr, sondern  *
-* stattdessden AddExtraLook().                                    *
+
+extra_look()
+************
+
+********************* VERALTETE LFUN ****************************** *
+Diese LFUN ist veraltet. Bitte benutzt sie NICHT mehr, sondern  * *
+stattdessden AddExtraLook().                                    *
 *******************************************************************
 
 extra_look()
 
-FUNKTION:
-    string extra_look();
 
-BESCHREIBUNG:
-    Kann in Objekt definiert sein. Wenn ein Living (std/living/description)
-    das Objekt enthaelt, wird zu dessen long() der zurueckgegebene String
-    hinzugefuegt.
+FUNKTION
+========
 
-SIEHE AUCH:
-    AddExtraLook()
+   string extra_look();
+
+
+BESCHREIBUNG
+============
+
+   Kann in Objekt definiert sein. Wenn ein Living (std/living/description)
+   das Objekt enthaelt, wird zu dessen long() der zurueckgegebene String
+   hinzugefuegt.
+
+
+SIEHE AUCH
+==========
+
+   AddExtraLook()
 
 25.Jan 2015 Gloinson
diff --git a/doc/lfun/obsolete/paramove b/doc/lfun/obsolete/paramove
index 96686a2..25ce252 100644
--- a/doc/lfun/obsolete/paramove
+++ b/doc/lfun/obsolete/paramove
@@ -1,45 +1,66 @@
-****************************************************************************
-************************* VERALTETE LFUN ***********************************
-************************* DO NOT USE!    ***********************************
-****************************************************************************
+
 paramove()
+**********
 
-FUNKTION:
-     int paramove();
 
-DEFINIERT IN:
-     /std/room/para.c
+FUNKTION
+========
 
-ARGUMENTE:
-     keine
+   int paramove();
 
-BESCHREIBUNG:
-     Bewegt den Spieler ggf. in eine Paralleldimension.
 
-RUeCKGABEWERT:
-     1, wenn der Spieler die Dimension gewechselt hat.
+DEFINIERT IN
+============
 
-BEISPIEL:
-     init(){
-       if(!paramove()) ::init();
-      }
+   /std/room/para.c
 
-BEMERKUNGEN:
-     DIESE FUNKTION NICHT MEHR BENUTZEN!
 
-     Diese Funktion sollte nur aus einem init() aufgerufen werden!
+ARGUMENTE
+=========
 
-     Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit 
-     von P_PARA landet, ist die Funktion move() zustaendig. Als Magier 
-     muss man sich darum nicht gesondert kuemmern. Das heisst aber auch, 
-     dass beim Anschluss eines Normalweltraumes automatisch alle in dem 
-     Verzeichnis mit gleichem Namen vorhandenen Parallelweltraeume mit 
-     angeschlossen werden.
+   keine
 
-     Deswegen ist paramove() veraltet und sollte nicht mehr genutzt werden.
 
-SIEHE AUCH:
-     /std/room/para.c, P_PARA, P_NO_PLAYERS, move
+BESCHREIBUNG
+============
 
-----------------------------------------------------------------------------
+   Bewegt den Spieler ggf. in eine Paralleldimension.
+
+
+RUeCKGABEWERT
+=============
+
+   1, wenn der Spieler die Dimension gewechselt hat.
+
+
+BEISPIEL
+========
+
+   init(){
+     if(!paramove()) ::init();
+    }
+
+
+BEMERKUNGEN
+===========
+
+   DIESE FUNKTION NICHT MEHR BENUTZEN!
+
+   Diese Funktion sollte nur aus einem init() aufgerufen werden!
+
+   Fuer die Entscheidung, in welchem Raum ein Spieler in Abhaengigkeit
+   von P_PARA landet, ist die Funktion move() zustaendig. Als Magier
+   muss man sich darum nicht gesondert kuemmern. Das heisst aber auch,
+   dass beim Anschluss eines Normalweltraumes automatisch alle in dem
+   Verzeichnis mit gleichem Namen vorhandenen Parallelweltraeume mit
+   angeschlossen werden.
+
+   Deswegen ist paramove() veraltet und sollte nicht mehr genutzt werden.
+
+
+SIEHE AUCH
+==========
+
+   /std/room/para.c, P_PARA, P_NO_PLAYERS, move
+
 Last modified: 05.08.2007, Zesstra
