diff --git a/doc/lfun/AddResistanceModifier b/doc/lfun/AddResistanceModifier
index 6476f86..b8a5ad8 100644
--- a/doc/lfun/AddResistanceModifier
+++ b/doc/lfun/AddResistanceModifier
@@ -1,49 +1,75 @@
+
 AddResistanceModifier()
+***********************
 
-FUNKTION:
-     varargs int AddResistanceModifier(mapping mod, string add)
 
-DEFINIERT IN:
-     /std/living/combat.c
+FUNKTION
+========
 
-ARGUMENTE:
-     mapping mod:
-      Mapping mit Schadensarten und ihrem Resistenzmodifikator (der im Bereich
-      von -1.0 bis +x liegen kann), z.B. ([DT_FIRE:-1.0]) (Totalresistenz).
-     string add:
-      Ein Identifikator fuer _diesen_ Eintrag des setzenden Objektes.
+   varargs int AddResistanceModifier(mapping mod, string add)
 
-BESCHREIBUNG:
-     Es werden Resistenzen in dem Objekt gesetzt, die solange bestehen, wie
-     das setzende Objekt existiert, oder nicht RemoveResistanceModifier
-     (mit eventuellem Schluessel add) aufgerufen wird. Zusaetzliche Resistenzen
-     werden eingerechnet.
 
-BEMERKUNGEN:
-     Fuer Ruestungen kann und sollte man P_RESISTANCE_STRENGTHS verwenden.
+DEFINIERT IN
+============
 
-BEISPIELE:
-     // Oel mit vervierfachtem Feuerschaden
-     int add_action() {
-      ...
-      write(break_string("Du schuettest das Oel ueber "+
-			 npc->name(WEN)+".",78));
-      ...
-      npc->AddResistanceModifier(([DT_FIRE:3.0]), "oel");
-      SetProp(P_INVIS,1);
-      SetProp(P_EXTRA_LOOK, "Ueberall tropft Oel herunter.\n");
-      move(npc,M_NOCHECK);
-      ...
-     }
+   /std/living/combat.c
 
-RUeCKGABEWERT:
-     1 fuer Erfolg
 
-SIEHE AUCH:
-     Modifikatoren:	RemoveResistanceModifier(), P_RESISTANCE_MODIFIER
-     simple Resistenz:	P_RESISTANCE, P_VULNERABILITY
-     Hauptmapping:	P_RESISTANCE_STRENGTHS
-     Berechnung:	CheckResistance(), UpdateResistanceStrengths()
-     anderes:		balance, /std/armour/combat.c, /std/living/combat.c
+ARGUMENTE
+=========
+
+   mapping mod:
+    Mapping mit Schadensarten und ihrem Resistenzmodifikator (der im Bereich
+    von -1.0 bis +x liegen kann), z.B. ([DT_FIRE:-1.0]) (Totalresistenz).
+   string add:
+    Ein Identifikator fuer _diesen_ Eintrag des setzenden Objektes.
+
+
+BESCHREIBUNG
+============
+
+   Es werden Resistenzen in dem Objekt gesetzt, die solange bestehen, wie
+   das setzende Objekt existiert, oder nicht RemoveResistanceModifier
+   (mit eventuellem Schluessel add) aufgerufen wird. Zusaetzliche Resistenzen
+   werden eingerechnet.
+
+
+BEMERKUNGEN
+===========
+
+   Fuer Ruestungen kann und sollte man P_RESISTANCE_STRENGTHS verwenden.
+
+
+BEISPIELE
+=========
+
+   // Oel mit vervierfachtem Feuerschaden
+   int add_action() {
+    ...
+    write(break_string("Du schuettest das Oel ueber "+
+                       npc->name(WEN)+".",78));
+    ...
+    npc->AddResistanceModifier(([DT_FIRE:3.0]), "oel");
+    SetProp(P_INVIS,1);
+    SetProp(P_EXTRA_LOOK, "Ueberall tropft Oel herunter.\n");
+    move(npc,M_NOCHECK);
+    ...
+   }
+
+
+RUeCKGABEWERT
+=============
+
+   1 fuer Erfolg
+
+
+SIEHE AUCH
+==========
+
+   Modifikatoren:     RemoveResistanceModifier(), P_RESISTANCE_MODIFIER
+   simple Resistenz:  P_RESISTANCE, P_VULNERABILITY
+   Hauptmapping:      P_RESISTANCE_STRENGTHS
+   Berechnung:        CheckResistance(), UpdateResistanceStrengths()
+   anderes:           balance, /std/armour/combat.c, /std/living/combat.c
 
 29.Apr 2002, Gloinson@MG
