diff --git a/doc/lfun/AddExtraLook b/doc/lfun/AddExtraLook
index 526a851..7436f7e 100644
--- a/doc/lfun/AddExtraLook
+++ b/doc/lfun/AddExtraLook
@@ -1,96 +1,130 @@
+
 AddExtraLook()
-varargs int AddExtraLook(string look, [int duration, string key,
-                         string lookende, object ob]);
-DEFINIERT IN:
+**************
+
+AddExtraLook() varargs int AddExtraLook(string look, [int duration,
+string key,
+
+   string lookende, object ob]);
+
+
+DEFINIERT IN
+============
+
    /std/living/description.c
 
-BESCHREIBUNG:
+
+BESCHREIBUNG
+============
+
    Der Extralook erscheint in der Langbeschreibung des Lebewesens.
    Eintraege koennen mit dieser Funktion hinzugefuegt werden. Dies ist der
    bevorzugte Weg, wenn ansonsten extra ein Objekt im Spielerinventar abgelegt
    werden muesste.
-   
+
+
+
    Alle Parameter bis auf <look> sind optional.
 
-ARGUMENTE:
-  - string look:
-    String, der in der Langbeschreibung des Lebewesens zusaetzlich ausgegeben
-    wird.
-    Kann auch ein Funktionsname sein, wenn <ob> angegeben wird (s.u.).
-  - int duration:
-    > 0: Wie lang bleibt der Extralook gueltig (in Sekunden)? Anschliessend 
-         wird er automatisch geloescht.
-    0:   Dieser Eintrag bleibt unbegrenzt gueltig.
-    < 0: Dieser Eintrag bleibt bis zum Ende/Reboot bestehen.
-  - string key:
-    Schluesselwort, unter dem der Eintrag registriert wird und mit dem man ihn
-    auch mittels RemoveExtraLook() entfernen kann. Sollte natuerlich
-    moeglichst eindeutig sein. ;-) Wenn <key> nicht angeben wird, wird der 
-    Objektname (object_name()) benutzt.
-  - string lookende:
-    String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, wenn der
-    eingetragene Extralook abgelaufen ist.
-    Kann auch ein Funktionsname sein, wenn <ob> angegeben wird.
-  - object ob:
-    Wenn hier ein Objekt angegeben wird, werden <look> und <lookende> als
-    Funktonsnamen aufgefasst. Diese Funktionen werden in <ob> aufgerufen, wenn
-    der Extralook des Lebewesen angezeigt wird bzw. der eingetragene Extralook
-    abgelaufen ist. Diese Funktionen bekommen das jeweilige Lebenwesen als
-    Objekt uebergeben. Sie muessen einen String zurueckliefern, der ausgegeben
-    wird. Dieser String wird direkt so ausgeben, also selber fuer Zeilenumbruch
-    etc. sorgen!
-    WICHTIG: Das Objekt sollte nach Moeglichkeit eine Blueprint sein, da das
-    ganze nix mehr ausgibt, sobald der Clone zerstoert wird, falls hier 
-    einer angeben wird. Wenn ihr keine BP uebergebt: Wisst, was ihr tut. ;-)
 
-RUECKGABEWERTE:
-  > 0, falls der Eintrag erfolgreich registriert wurde.
-  < 0 sonst.
-    -1: <key> war nicht gueltig und es konnte keiner ermittelt werden.
-    -2: <look> war kein gueltiger String.
-    -3: <duration> war kein Integer.
-    -4: unter <key> gibt es schon einen Eintrag.
+ARGUMENTE
+=========
 
-BEMERKUNGEN:
-  Die Strings <look> und <lookende> werden vor Ausgabe durch
-  replace_personal() geschickt, daher ist die Verwendung von @WER1, @WESSEN1
-  usw. moeglich (s. replace_personal). Dies gilt aber _nicht_ fuer den Fall,
-  dass die entsprechenden Funktionen in <ob> gerufen werden, dann muessen die
-  Funktionen selber umbrechen, etc.
-  Nach replace_personal() werden die Strings noch von break_string() auf 78
-  Zeilen umgebrochen, allerdings bleiben dabei vorhandene Umbrueche erhalten.
-  Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der
-  Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit aufgerufen
-  wird.
+   - string look:
+     String, der in der Langbeschreibung des Lebewesens zusaetzlich ausgegeben
+     wird.
+     Kann auch ein Funktionsname sein, wenn <ob> angegeben wird (s.u.).
+   - int duration:
+     > 0: Wie lang bleibt der Extralook gueltig (in Sekunden)? Anschliessend
+          wird er automatisch geloescht.
+     0:   Dieser Eintrag bleibt unbegrenzt gueltig.
+     < 0: Dieser Eintrag bleibt bis zum Ende/Reboot bestehen.
+   - string key:
+     Schluesselwort, unter dem der Eintrag registriert wird und mit dem man ihn
+     auch mittels RemoveExtraLook() entfernen kann. Sollte natuerlich
+     moeglichst eindeutig sein. ;-) Wenn <key> nicht angeben wird, wird der
+     Objektname (object_name()) benutzt.
+   - string lookende:
+     String, der an das Lebewesen (nur bei Spielern) ausgegeben wird, wenn der
+     eingetragene Extralook abgelaufen ist.
+     Kann auch ein Funktionsname sein, wenn <ob> angegeben wird.
+   - object ob:
+     Wenn hier ein Objekt angegeben wird, werden <look> und <lookende> als
+     Funktonsnamen aufgefasst. Diese Funktionen werden in <ob> aufgerufen, wenn
+     der Extralook des Lebewesen angezeigt wird bzw. der eingetragene Extralook
+     abgelaufen ist. Diese Funktionen bekommen das jeweilige Lebenwesen als
+     Objekt uebergeben. Sie muessen einen String zurueckliefern, der ausgegeben
+     wird. Dieser String wird direkt so ausgeben, also selber fuer Zeilenumbruch
+     etc. sorgen!
+     WICHTIG: Das Objekt sollte nach Moeglichkeit eine Blueprint sein, da das
+     ganze nix mehr ausgibt, sobald der Clone zerstoert wird, falls hier
+     einer angeben wird. Wenn ihr keine BP uebergebt: Wisst, was ihr tut. ;-)
 
-BEISPIELE:
-  # einfacher Eintrag, "fuer die Ewigkeit"
-  living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
 
-  # Eintrag der nach 1h automatisch weg ist.
-  living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
-  
-  # Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann.
-  living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
-                       "humni_marmeladen_look");
-  
-  # Mit "Ende"-Meldung, aber kein eigener Schluessel.
-  living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
-                       "Du bist endlich wieder trocken. Puuh.");
-  
-  # Mit Objekt, was den Extralook dynamisch erzeugt
-  living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, this_object());
-    In diesem Fall muss this_object() natuerlich die Funktion
-    "get_my_special_extralook()" definieren, die einen String zurueckgibt.
+RUECKGABEWERTE
+==============
 
-  # Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
-  living->AddExtraLook("get_my_special_extralook", 3600, 0,
-                       "extralookende", this_object());
+   > 0, falls der Eintrag erfolgreich registriert wurde.
+   < 0 sonst.
+     -1: <key> war nicht gueltig und es konnte keiner ermittelt werden.
+     -2: <look> war kein gueltiger String.
+     -3: <duration> war kein Integer.
+     -4: unter <key> gibt es schon einen Eintrag.
 
-SIEHE AUCH:
+
+BEMERKUNGEN
+===========
+
+   Die Strings <look> und <lookende> werden vor Ausgabe durch
+   replace_personal() geschickt, daher ist die Verwendung von @WER1, @WESSEN1
+   usw. moeglich (s. replace_personal). Dies gilt aber _nicht_ fuer den Fall,
+   dass die entsprechenden Funktionen in <ob> gerufen werden, dann muessen die
+   Funktionen selber umbrechen, etc.
+   Nach replace_personal() werden die Strings noch von break_string() auf 78
+   Zeilen umgebrochen, allerdings bleiben dabei vorhandene Umbrueche erhalten.
+   Die Meldung von <lookende> bzw. der Funktionsaufruf erfolgt, wenn der
+   Extralook der Lebewesen das erste Mal nach Ablauf der Gueltigkeit aufgerufen
+   wird.
+
+
+BEISPIELE
+=========
+
+   # einfacher Eintrag, "fuer die Ewigkeit"
+   living->AddExtraLook("@WER1 hat den Drachengott der SSP besiegt.");
+
+   # Eintrag der nach 1h automatisch weg ist.
+   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600);
+
+
+
+   # Eintrag mit bestimmten Schluessel, damit man ihn wieder entfernen kann.
+   living->AddExtraLook("@WER1 ist ganz mit Marmelade bedeckt.", 3600,
+                        "humni_marmeladen_look");
+
+
+
+   # Mit "Ende"-Meldung, aber kein eigener Schluessel.
+   living->AddExtraLook("@WER1 ist patschnass.", 1200, 0,
+                        "Du bist endlich wieder trocken. Puuh.");
+
+
+
+   # Mit Objekt, was den Extralook dynamisch erzeugt
+   living->AddExtraLook("get_my_special_extralook", 3600, 0, 0, this_object());
+     In diesem Fall muss this_object() natuerlich die Funktion
+     "get_my_special_extralook()" definieren, die einen String zurueckgibt.
+
+   # Mit Objekt, was den Extralook und die Endemeldung dynamisch erzeugt
+   living->AddExtraLook("get_my_special_extralook", 3600, 0,
+                        "extralookende", this_object());
+
+
+SIEHE AUCH
+==========
+
    RemoveExtraLook(),
    replace_personal(), break_string()
    P_INTERNAL_EXTRA_LOOK
 
 14.05.2007, Zesstra
-
