diff --git a/doc/lfun/QuerySkillAttribute b/doc/lfun/QuerySkillAttribute
index d0b1bd1..1b3a71e 100644
--- a/doc/lfun/QuerySkillAttribute
+++ b/doc/lfun/QuerySkillAttribute
@@ -1,58 +1,87 @@
+
 QuerySkillAttribute()
-FUNKTION:
-    public int QuerySkillAttribute(string atrname)
+*********************
 
-DEFINIERT IN:
-    /std/living/skill_attributes.c
-    
-ARGUMENTE:
-    string atrname            Name des abzufragenden Attributs
-    
-BESCHREIBUNG:
-    Mit dieser Funktion kann man den Wert bestimmter Attribute
-    abfragen, dabei werden das abgefragte Attribut, Todesfolgen,
-    SA_QUALITY und Werte in P_SKILL_ATTRIBUTE_OFFSETS
-    beruecksichtigt.
-    
-    Momentane Skills siehe ModifySkillAttribute.
 
-RUECKGABEWERT:
-    Der Wert des Attributs. Ist nichts bestimmtes gesetzt, wird
-    der Standardwert 100 zurueckgegeben.
-    Der Rueckgabewert liegt zwischen 10 bis 1000 (Prozent).
-    
-BEMERKUNG:
-    Die Funktion ist zwar als 'varargs' definiert, gibt man allerdings
-    keinen Attributnamen an, wird immer 100 zurueckgegeben.
-    
-BEISPIEL:
-    // ein Spieler kann ein Stueck Kaese stibitzen, wenn er schnell
-    // genug ist ... (15% ueber normal)
-    if(this_player()->QuerySkillAttribute(SA_SPEED)>=115) {
-      tell_object(this_player(),
-        "Du schnappst das Stueck Kaese aus der Falle.\n");
-      obj kaese = clone_object(...);
-      [...]
-    } else {
-      mapping amap=map_indices(VALID_ARMOUR_CLASS,#'!);
-      amap[AT_GLOVE]=100;
-      tell_object(this_player(),
-        "Du bist zu langsam und die Falle schnappt hungrig zu.\n");
-      this_player()->Defend(random(100),
-                           ({DT_PIERCE, DT_SQUEEZE}),
-                           ([SP_PHYSICAL_ATTACK: 1,
-                             SP_REDUCE_ARMOUR: amap,
-                             SP_SHOW_DAMAGE: 0]));
-    }
+FUNKTION
+========
 
-SIEHE AUCH:
-    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
-    * Nutzung:      UseSpell, UseSkill
-    * Abfragen:     QuerySkill, QuerySkillAbility
-    * Modifikation: ModifySkillAttribute,
-                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
-      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
-    * sonstig:      spruchermuedung, skill_info_liste
-    * Properties:   P_NEWSKILLS
+   public int QuerySkillAttribute(string atrname)
+
+
+DEFINIERT IN
+============
+
+   /std/living/skill_attributes.c
+
+
+ARGUMENTE
+=========
+
+   string atrname            Name des abzufragenden Attributs
+
+
+BESCHREIBUNG
+============
+
+   Mit dieser Funktion kann man den Wert bestimmter Attribute
+   abfragen, dabei werden das abgefragte Attribut, Todesfolgen,
+   SA_QUALITY und Werte in P_SKILL_ATTRIBUTE_OFFSETS
+   beruecksichtigt.
+
+
+
+   Momentane Skills siehe ModifySkillAttribute.
+
+
+RUECKGABEWERT
+=============
+
+   Der Wert des Attributs. Ist nichts bestimmtes gesetzt, wird
+   der Standardwert 100 zurueckgegeben.
+   Der Rueckgabewert liegt zwischen 10 bis 1000 (Prozent).
+
+
+BEMERKUNG
+=========
+
+   Die Funktion ist zwar als 'varargs' definiert, gibt man allerdings
+   keinen Attributnamen an, wird immer 100 zurueckgegeben.
+
+
+BEISPIEL
+========
+
+   // ein Spieler kann ein Stueck Kaese stibitzen, wenn er schnell
+   // genug ist ... (15% ueber normal)
+   if(this_player()->QuerySkillAttribute(SA_SPEED)>=115) {
+     tell_object(this_player(),
+       "Du schnappst das Stueck Kaese aus der Falle.\n");
+     obj kaese = clone_object(...);
+     [...]
+   } else {
+     mapping amap=map_indices(VALID_ARMOUR_CLASS,#'!);
+     amap[AT_GLOVE]=100;
+     tell_object(this_player(),
+       "Du bist zu langsam und die Falle schnappt hungrig zu.\n");
+     this_player()->Defend(random(100),
+                          ({DT_PIERCE, DT_SQUEEZE}),
+                          ([SP_PHYSICAL_ATTACK: 1,
+                            SP_REDUCE_ARMOUR: amap,
+                            SP_SHOW_DAMAGE: 0]));
+   }
+
+
+SIEHE AUCH
+==========
+
+   Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
+   * Nutzung:      UseSpell, UseSkill
+   * Abfragen:     QuerySkill, QuerySkillAbility
+   * Modifikation: ModifySkillAttribute,
+                   QuerySkillAttributeModifier, RemoveSkillAttributeModifier
+     * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
+   * sonstig:      spruchermuedung, skill_info_liste
+   * Properties:   P_NEWSKILLS
 
 5. Okt 2011 Gloinson
