diff --git a/doc/lfun/SetTimedAttrModifier b/doc/lfun/SetTimedAttrModifier
index 5804823..5ab39dd 100644
--- a/doc/lfun/SetTimedAttrModifier
+++ b/doc/lfun/SetTimedAttrModifier
@@ -1,92 +1,113 @@
+
 SetTimedAttrModifier()
-FUNKTION:
-     int SetTimedAttrModifier(string key, mapping modifier, 
-                              int outdated, object dependent, mixed notify) 
-DEFINIERT IN:
-     /std/living/attributes.c
-
-ARGUMENTE:
-     key	-	in P_TIMED_ATTR_MOD vorzunehmender oder zu 
-                        aendernder Eintrag
-     modifier   -       Mapping mit den Attributveraenderungen
-     outdated   -       Zeitpunkt zu dem die Attributveraenderungen
-                        ablaufen sollen in Sekunden seit dem
-                        1. Jan 1970, 0.0:0 GMT oder 0
-     dependent  -       Objekt dessen Existenz eine Bedingung fuer die
-                        Attributveraenderung sein soll oder 0
-     notify     -       Objekt oder File das mittels 
-                        NotifyTimedAttrModExpired ueber
-                        den Attributablauf informiert werden soll
-
-BESCHREIBUNG:
-     Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder
-     modifiziert und update_max_sp_and_hp aufgerufen.
-     Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key
-     besonderes Augenmerk zu legen.
-
-     Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen,
-     welcher die Attribute des Livings um die in modifier stehenden Offsets
-     veraendert.
-
-     Diese Veraenderung ist solange aktiv bis entweder die in outdated
-     stehende Zeit ueberschritten ist oder das in dependent uebergebene
-     Objekt nicht mehr existiert.
-     Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab
-     und kann durch DeleteTimedAttrModifier geloescht werden.
-     Laeuft die Attributveraenderung ab, so wird der in notify angegebene
-     Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon 
-     benachrichtigt.
-     Der Funktion NotifyTimedAttrModExpired wird als Argument der key
-     der abgelaufenen Attributveraenderung uebergeben.
-
-BEISPIELE:
-     Ein NPC kann einen Spieler auf die folgende Weise solange die
-     Attribute um eins herabsetzen bis entweder eine Stunde verstrichen
-     ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet
-     wurde.
-
-       player->SetTimedAttrModifier( player->query_real_name(),
-                                     ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]),
-                                     time()+3600,
-                                     this_object(),
-                                     this_object()
-                                   );
-
-     Will der NPC nun noch darauf reagieren, dass die Attributmodifikation
-     durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen.
-
-       void NotifyTimedAttrModExpired(string str)
-       {
-           // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod
-           // gerade abgelaufen ist. Also Meldungsausgabe an
-           // previous_object().
-           tell_object(previous_object()
-               ,"Da hast Du aber nochmal Glueck gehabt.\n");
-       }
-
-
-RUeCKGABEWERT:
-     TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments,
-                                   eines fehlenden modifier-Arguments oder
-                                   eines bereits abgelaufenen
-                                   outdatet-Arguments
-     TATTR_OK                -     Im Erfolgsfall
-
-     Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
-
-SIEHE AUCH:
-     Attribute:  QueryAttribute(), SetAttribute()
-                 SetRealAttribute(), QueryRealAttribute(),
-                 QueryAttributeOffset(),
-                 UpdateAttributes()
-     Methoden:   QueryTimedAttrModifier(), DeleteTimedAttrModifier()
-     Callback:   NotifyTimedAttrModExpired()
-     Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS
-		 P_X_ATTR_MOD, P_M_ATTR_MOD
-		 P_TIMED_ATTR_MOD
-     Sonstiges:  /std/living/attributes.c
-
-LETZTE Aenderung:
-15.02.2009, Zesstra
+**********************
 
 
+FUNKTION
+========
+
+   int SetTimedAttrModifier(string key, mapping modifier,
+                            int outdated, object dependent, mixed notify)
+
+
+DEFINIERT IN
+============
+
+   /std/living/attributes.c
+
+
+ARGUMENTE
+=========
+
+   key        -       in P_TIMED_ATTR_MOD vorzunehmender oder zu
+                      aendernder Eintrag
+   modifier   -       Mapping mit den Attributveraenderungen
+   outdated   -       Zeitpunkt zu dem die Attributveraenderungen
+                      ablaufen sollen in Sekunden seit dem
+                      1. Jan 1970, 0.0:0 GMT oder 0
+   dependent  -       Objekt dessen Existenz eine Bedingung fuer die
+                      Attributveraenderung sein soll oder 0
+   notify     -       Objekt oder File das mittels
+                      NotifyTimedAttrModExpired ueber
+                      den Attributablauf informiert werden soll
+
+
+BESCHREIBUNG
+============
+
+   Der zu key gehoerende Eintrag wird in P_TIMED_ATTR_MOD angelegt oder
+   modifiziert und update_max_sp_and_hp aufgerufen.
+   Es empfiehlt sich auf die Eindeutigkeit des string-Parameters key
+   besonderes Augenmerk zu legen.
+
+   Unter dem Key key wird in P_TIMED_ATTR_MOD ein Eintrag vorgenommen,
+   welcher die Attribute des Livings um die in modifier stehenden Offsets
+   veraendert.
+
+   Diese Veraenderung ist solange aktiv bis entweder die in outdated
+   stehende Zeit ueberschritten ist oder das in dependent uebergebene
+   Objekt nicht mehr existiert.
+   Sind beide Argumente 0 so laeuft die Attributveraenderung nicht ab
+   und kann durch DeleteTimedAttrModifier geloescht werden.
+   Laeuft die Attributveraenderung ab, so wird der in notify angegebene
+   Empfaenger mittels Aufruf NotifyTimedAttrModExpired davon
+   benachrichtigt.
+   Der Funktion NotifyTimedAttrModExpired wird als Argument der key
+   der abgelaufenen Attributveraenderung uebergeben.
+
+
+BEISPIELE
+=========
+
+   Ein NPC kann einen Spieler auf die folgende Weise solange die
+   Attribute um eins herabsetzen bis entweder eine Stunde verstrichen
+   ist oder der NPC nicht mehr existiert zum Beispiel weil er getoetet
+   wurde.
+
+     player->SetTimedAttrModifier( player->query_real_name(),
+                                   ([A_STR:-1,A_INT:-1,A_DEX:-1,A_CON:-1]),
+                                   time()+3600,
+                                   this_object(),
+                                   this_object()
+                                 );
+
+   Will der NPC nun noch darauf reagieren, dass die Attributmodifikation
+   durch Timeout abgelaufen ist, so koennte dies folgendermassen geschehen.
+
+     void NotifyTimedAttrModExpired(string str)
+     {
+         // Die Funktion wird aus dem Lebewesen gerufen, in welchem der Mod
+         // gerade abgelaufen ist. Also Meldungsausgabe an
+         // previous_object().
+         tell_object(previous_object()
+             ,"Da hast Du aber nochmal Glueck gehabt.\n");
+     }
+
+
+RUeCKGABEWERT
+=============
+
+   TATTR_INVALID_ARGS      -     Im Falle eines fehlenden key-Arguments,
+                                 eines fehlenden modifier-Arguments oder
+                                 eines bereits abgelaufenen
+                                 outdatet-Arguments
+   TATTR_OK                -     Im Erfolgsfall
+
+   Die Rueckgabewerte sind in /sys/living/attributes.h definiert.
+
+
+SIEHE AUCH
+==========
+
+   Attribute:  QueryAttribute(), SetAttribute()
+               SetRealAttribute(), QueryRealAttribute(),
+               QueryAttributeOffset(),
+               UpdateAttributes()
+   Methoden:   QueryTimedAttrModifier(), DeleteTimedAttrModifier()
+   Callback:   NotifyTimedAttrModExpired()
+   Properties: P_ATTRIBUTES, P_ATTRIBUTES_OFFSETS
+               P_X_ATTR_MOD, P_M_ATTR_MOD
+               P_TIMED_ATTR_MOD
+   Sonstiges:  /std/living/attributes.c
+
+LETZTE Aenderung: 15.02.2009, Zesstra
