diff --git a/doc/lfun/Defend b/doc/lfun/Defend
index 3e40cfc..dd66fa1 100644
--- a/doc/lfun/Defend
+++ b/doc/lfun/Defend
@@ -40,105 +40,104 @@
 BESCHREIBUNG
 ============
 
-   1. Generell
 
-      Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark
-      die Ruestungen und koerpereigenen Abwehrkraefte sind und die
-      Staerke des Schadens dementsprechend vermindert. Ggf. wird der
-      Schaden zugefuegt und der Feind in  die Liste der Feinde
-      aufgenommen. Der Schaden betraegt: (dam-Summe(Ruestungsstaerken
-      )-random(P_BODY+A_DEX))*CheckResistance/10 aber nicht unter 0.
+Generell
+--------
 
-   2. Der Parameter 'spell'
+   Wenn das Lebewesen angegriffen wird, wird geprueft, wie stark die
+   Ruestungen und koerpereigenen Abwehrkraefte sind und die Staerke
+   des Schadens dementsprechend vermindert. Ggf. wird der Schaden
+   zugefuegt und der Feind in  die Liste der Feinde aufgenommen. Der
+   Schaden betraegt: (dam-
+   Summe(Ruestungsstaerken)-random(P_BODY+A_DEX))*CheckResistance/10
+   aber nicht unter 0.
 
-      Ist 'spell' 0, dann gilt der Angriff als normale physische
-      Attacke Uebergibt man als 'spell'-Parameter ein Mapping, so gibt
-      es dafuer diverse Flags, die das Ergebnis manipulieren (in
-      new_skills.h enthalten). Nichtangabe eines Flags gilt als 0.
 
-      * SP_PHYSICAL_ATTACK ---------- 0/1 1, wenn Ruestungen wirken
-        sollen, 0 sonst -> entspricht !spell, wenn dieses Int ist
+Der Parameter 'spell'
+---------------------
 
-      * SP_NO_ENEMY ----------------- 0/1 1, falls der Angriff nicht
-        toedlich ist, es also keinen echten Gegner gibt -> es wird
-        dann reduce_hit_points() gerufen statt do_damage()
+   Ist 'spell' 0, dann gilt der Angriff als normale physische Attacke
+   Uebergibt man als 'spell'-Parameter ein Mapping, so gibt es dafuer
+   diverse Flags, die das Ergebnis manipulieren (in new_skills.h
+   enthalten). Nichtangabe eines Flags gilt als 0.
 
-      * SP_NO_ACTIVE_DEFENSE -------- 0/1 1, falls aktive Abwehren
-        (wie zurueckschlagende Amulette, Karateabwehren oder
-        Ausweichmanoever) unterbleiben sollen -> zB bei Kratzen durch
-        Dornen oder Fall aus grosser Hoehe ist aktive Abwehr oder
-        Ausweichen unlogisch
+   * SP_PHYSICAL_ATTACK ---------- 0/1 1, wenn Ruestungen wirken
+     sollen, 0 sonst -> entspricht !spell, wenn dieses Int ist
 
-      * SP_RECURSIVE ---------------- 0/1 1, falls der Spell aus
-        einem Defend gerufen wurde (oder einer DefendFunc) ->
-        verhindert Rekursionsprobleme
+   * SP_NO_ENEMY ----------------- 0/1 1, falls der Angriff nicht
+     toedlich ist, es also keinen echten Gegner gibt -> es wird dann
+     reduce_hit_points() gerufen statt do_damage()
 
-      * SP_NAME --------------------- string Name des Spells
+   * SP_NO_ACTIVE_DEFENSE -------- 0/1 1, falls aktive Abwehren (wie
+     zurueckschlagende Amulette, Karateabwehren oder Ausweichmanoever)
+     unterbleiben sollen -> zB bei Kratzen durch Dornen oder Fall aus
+     grosser Hoehe ist aktive Abwehr oder Ausweichen unlogisch
 
-      * SP_GLOBAL_ATTACK ------------ 0/1 1 bei Flaechenspells
+   * SP_RECURSIVE ---------------- 0/1 1, falls der Spell aus einem
+     Defend gerufen wurde (oder einer DefendFunc) -> verhindert
+     Rekursionsprobleme
 
-      * SP_REDUCE_ARMOUR ------------ Mapping: keys AT_X/P_BODY,
-        values int>=0 Die Schutzwirkung durch P_AC/Magie einer
-        Ruestung wird typabhaengig reduziert. Aufbau eines Mappings im
-        Beispiel:
+   * SP_NAME --------------------- string Name des Spells
 
-           ([AT_BOOTS: 0,  // Stiefel schuetzen gar nicht P_BODY:  50,
-           // Koerper zu 50% AT_BELT: 600  // Guertel zu 600% ])
+   * SP_GLOBAL_ATTACK ------------ 0/1 1 bei Flaechenspells
 
-        -> alle 'fehlenden' Eintraege wirken normal
+   * SP_REDUCE_ARMOUR ------------ Mapping: keys AT_X/P_BODY, values
+     int>=0 Die Schutzwirkung durch P_AC/Magie einer Ruestung wird
+     typabhaengig reduziert. Aufbau eines Mappings im Beispiel:
 
-      * SP_SHOW_DAMAGE -------------- 0/1 oder Array von Arrays 0,
-        fuer keine Treffermeldung, 1 sonst In einem Array koennen
-        Ersatz-Treffermeldungen definiert werden. Format ist:
+     ([AT_BOOTS: 0,  // Stiefel schuetzen gar nicht P_BODY:  50,  //
+     Koerper zu 50% AT_BELT: 600  // Guertel zu 600% ]) -> alle
+     'fehlenden' Eintraege wirken normal
 
-              ({
+   * SP_SHOW_DAMAGE -------------- 0/1 oder Array von Arrays 0, fuer
+     keine Treffermeldung, 1 sonst In einem Array koennen Ersatz-
+     Treffermeldungen definiert werden. Format ist:
 
-           ({ int lphit1, string mess_me, string mess_en, string
-           mess_room }), ({ lphit2, mess_me, mess_en, mess_room }),
-           ... ({ lphitn, mess_me, mess_en, mess_room }), }) wobei
-           lphit1<lphit2<...<lphitn sein muss, d.h. das Array-Array
-           aufsteigend sortiert.
+        ({ ({ int lphit1, string mess_me, string mess_en, string
+        mess_room }), ({ lphit2, mess_me, mess_en, mess_room }), ...
+        ({ lphitn, mess_me, mess_en, mess_room }), }) wobei
+        lphit1<lphit2<...<lphitn sein muss, d.h. das Array-Array
+        aufsteigend sortiert.
 
-        Ist ein Treffer x LP hart, werden die Meldungen des lphit-
-        Arrays ausgegeben, dessen Wert am naehesten unter dem Schaden
-        liegt.
+     Ist ein Treffer x LP hart, werden die Meldungen des lphit-Arrays
+     ausgegeben, dessen Wert am naehesten unter dem Schaden liegt.
 
-        In den Meldungen mess_me (an den Getroffenen), mess_en (an den
-        Feind), mess_room (an die restlichen Umstehenden) koennen
-        Ersatzstrings wie folgt verwendet werden:
+     In den Meldungen mess_me (an den Getroffenen), mess_en (an den
+     Feind), mess_room (an die restlichen Umstehenden) koennen
+     Ersatzstrings wie folgt verwendet werden:
 
-           @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen
-           (TO) @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes
-           (enemy)
+     @WER1/@WESSEN1/@WEM1/@WEN1 - name(casus) des Getroffenen (TO)
+     @WER2/@WESSEN2/@WEM2/@WEN2 - name(casus) des Feindes (enemy)
 
-      * EINFO_DEFEND ------------ Mapping Dieses Mapping liefert
-        erweiterte Informationen zu dem bisherigen Ablauf des aktiven
-        Attacks. Die verfuegbaren Informationen sind in der Manpage zu
-        DefendInfo festgehalten.
+     EINFO_DEFEND ------------ Mapping Dieses Mapping liefert
+     erweiterte Informationen zu dem bisherigen Ablauf des aktiven
+     Attacks. Die verfuegbaren Informationen sind in der Manpage zu
+     DefendInfo festgehalten.
 
-   3. Reihenfolgen in Defend
 
-      * das Living wird angegriffen, wenn - P_NO_ATTACK != 0 -
-        'enemy' existiert und kein netztoter Spieler ist
+Reihenfolgen in Defend
+----------------------
 
-      * P_DEFENDERS werden durchgegangen (und eventuell
-        benachrichtigt)
+   * das Living wird angegriffen, wenn * P_NO_ATTACK != 0 * 'enemy'
+     existiert und kein netztoter Spieler ist
 
-      * P_TMP_ATTACK_HOOK wird abgefragt
+   * P_DEFENDERS werden durchgegangen (und eventuell benachrichtigt)
 
-      * die Ruestungen werden vom Schaden gegebenenfalls abgezogen
+   * P_TMP_ATTACK_HOOK wird abgefragt
 
-      * magischer Ausweichskill beruecksichtigt
+   * die Ruestungen werden vom Schaden gegebenenfalls abgezogen
 
-      * sensitive Objekte werden ggf. benachrichtigt
+   * magischer Ausweichskill beruecksichtigt
 
-      * InternalModifyDefend wird gerufen
+   * sensitive Objekte werden ggf. benachrichtigt
 
-      * Koerperabwehr abgezogen
+   * InternalModifyDefend wird gerufen
 
-      * der Schaden an do_damage()/reduce_hit_points() uebergeben
+   * Koerperabwehr abgezogen
 
-      * Flucht ueberpruefen mit CheckWimpyAndFlee()
+   * der Schaden an do_damage()/reduce_hit_points() uebergeben
+
+   * Flucht ueberpruefen mit CheckWimpyAndFlee()
 
 
 BEMERKUNGEN
@@ -161,39 +160,38 @@
    Hoehe des tatsaechlichen Schadens. Dies kann mehr sein als die
    Lebenspunkte des Lebewesens.
 
-BEISPIELE (SIEHE AUCH Defend_bsp):
-   // ein simpler Angriff: enem->Defend(100, ({DT_BLUDGEON}),
-   ([SP_PHYSICAL_ATTACK:1]), this_object());
 
-   // ein magischer Angriff (ohne Treffermeldung): enem->Defend(100,
-   ({DT_BLUDGEON, DT_FIRE}), ([SP_PHYSICAL_ATTACK:0]), this_object());
+BEISPIELE (SIEHE AUCH Defend_bsp)
+=================================
 
-   // ein magischer Angriff mit Treffermeldung: enem->Defend(100,
-   ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
+   // ein simpler Angriff:
+   enem->Defend(100, ({DT_BLUDGEON}), ([SP_PHYSICAL_ATTACK:1]), this_object());
 
-      this_object());
+   // ein magischer Angriff (ohne Treffermeldung):
+   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_PHYSICAL_ATTACK:0]), this_object());
+
+   // ein magischer Angriff mit Treffermeldung:
+   enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
+     this_object());
 
 
 SIEHE AUCH
 ==========
 
-   Angriff: *Attack()*, *P_NO_ATTACK*, *InsertEnemy()* Schaden:
-   *P_ENABLE_IN_ATTACK_OUT*,
+   Angriff: *Attack()*, *P_NO_ATTACK*, *InsertEnemy()*
 
-      *P_LAST_MOVE*, *do_damage()*, *reduce_hit_points()*
+   Schaden:   *P_ENABLE_IN_ATTACK_OUT*, *P_LAST_MOVE*, *do_damage()*,
+   *reduce_hit_points()*
 
-   Schutz:    *P_DEFENDERS*, *InformDefend()*,
-      *DefendOther()*, *P_ARMOURS*, *P_AC*, *P_DEFEND_FUNC*,
-      *QueryDefend()*, *P_BODY*
+   Schutz:    *P_DEFENDERS*, *InformDefend()*, *DefendOther()*,
+   *P_ARMOURS*, *P_AC*, *P_DEFEND_FUNC*, *QueryDefend()*, *P_BODY*
 
-   Daten:     *P_LAST_COMBAT_TIME*,
-      *P_LAST_DAMTYPES*, *P_LAST_DAMTIME*, *P_LAST_DAMAGE*,
-      *P_DAMAGE_MSG*
+   Daten:     *P_LAST_COMBAT_TIME*, *P_LAST_DAMTYPES*,
+   *P_LAST_DAMTIME*, *P_LAST_DAMAGE*, *P_DAMAGE_MSG*
 
-   Resistenz: *P_RESISTANCE_STRENGTHS*,
-      *CheckResistance()*
+   Resistenz: *P_RESISTANCE_STRENGTHS*, *CheckResistance()*
 
-   Sonstiges: *CheckSensitiveAttack()*,
-      *InternalModifyDefend()*, *UseSkill()*, *DefendInfo()*
+   Sonstiges: *CheckSensitiveAttack()*, *InternalModifyDefend()*,
+   *UseSkill()*, *DefendInfo()*
 
 Letzte Aenderung: 29.12.2017, Bugfix
