diff --git a/doc/lfun/Defend b/doc/lfun/Defend
index aa53945..3e40cfc 100644
--- a/doc/lfun/Defend
+++ b/doc/lfun/Defend
@@ -6,8 +6,9 @@
 FUNKTION
 ========
 
-   public int Defend(int dam, string|string* dam_type, int|mapping spell,
-                      object enemy)
+   public int Defend(int dam, string|string* dam_type, int|mapping
+   spell,
+      object enemy)
 
 
 DEFINIERT IN
@@ -19,120 +20,139 @@
 ARGUMENTE
 =========
 
-   int dam                  initiale Staerke des Angriffs (10 dam ~ 1 HP)
-   string* dam_type         Art(en) des Schadens, der angerichtet werden
-                            soll
-                            Muss ein Array von Schadenstypen sein,
-                            alte Objekte uebergeben hier manchmal strings.
-   int/mapping spell        - 0 fuer normale Angriffe (keine Zauber)
-                            - 1 fuer Zauber (Standardruestungen ignorieren)
-                            - mapping fuer mehr Informationen
-                            Heute bitte nach Moeglichkeit ein Mapping
-                            uebergeben.
-   object enemy             der Feind/Schadenverursacher
+   int dam
+      Initiale Staerke des Angriffs (10 dam ~ 1 HP)
+
+   string* dam_type
+      Art des Schadens, der angerichtet werden soll Muss ein Array von
+      Schadenstypen sein, alte Objekte uebergeben hier manchmal
+      strings.
+
+   mapping spell
+      Mapping mit zusaetzlichen Informationen zum Angriff(Siehe unten)
+      Alte Objekte uebergeben manchmal einen Integer (0 fuer
+      Physikalischen Angriff, 1 fuer Zauber.
+
+   object enemy
+      Der Feind/Schadenverursacher
 
 
 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.
+
+      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.
 
    2. Der Parameter 'spell'
-   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
-   - 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_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_RECURSIVE ---------------- 0/1
-              1, falls der Spell aus einem Defend gerufen wurde (oder einer
-              DefendFunc)
-              -> verhindert Rekursionsprobleme
-   - SP_NAME --------------------- string
-              Name des Spells
-   - 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:
-              ([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:
+      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
+
+      * 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_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_RECURSIVE ---------------- 0/1 1, falls der Spell aus
+        einem Defend gerufen wurde (oder einer DefendFunc) ->
+        verhindert Rekursionsprobleme
+
+      * SP_NAME --------------------- string Name des Spells
+
+      * SP_GLOBAL_ATTACK ------------ 0/1 1 bei Flaechenspells
+
+      * 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:
+
+           ([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.
 
-              Ist ein Treffer x LP hart, werden die Meldungen des lphit-
-              Arrays ausgegeben, dessen Wert am naehesten unter dem Schaden
-              liegt.
+           ({ 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.
 
-              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)
-   - 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.
+        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:
+
+           @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.
 
    3. Reihenfolgen in Defend
-   - das Living wird angegriffen, wenn
-     - P_NO_ATTACK != 0
-     - 'enemy' existiert und kein netztoter Spieler ist
-   - P_DEFENDERS werden durchgegangen (und eventuell benachrichtigt)
-   - P_TMP_ATTACK_HOOK wird abgefragt
-   - die Ruestungen werden vom Schaden gegebenenfalls abgezogen
-   - magischer Ausweichskill beruecksichtigt
-   - sensitive Objekte werden ggf. benachrichtigt
-   - InternalModifyDefend wird gerufen
-   - Koerperabwehr abgezogen
-   - der Schaden an do_damage()/reduce_hit_points() uebergeben
-   - Flucht ueberpruefen mit CheckWimpyAndFlee()
+
+      * das Living wird angegriffen, wenn - P_NO_ATTACK != 0 -
+        'enemy' existiert und kein netztoter Spieler ist
+
+      * P_DEFENDERS werden durchgegangen (und eventuell
+        benachrichtigt)
+
+      * P_TMP_ATTACK_HOOK wird abgefragt
+
+      * die Ruestungen werden vom Schaden gegebenenfalls abgezogen
+
+      * magischer Ausweichskill beruecksichtigt
+
+      * sensitive Objekte werden ggf. benachrichtigt
+
+      * InternalModifyDefend wird gerufen
+
+      * Koerperabwehr abgezogen
+
+      * der Schaden an do_damage()/reduce_hit_points() uebergeben
+
+      * Flucht ueberpruefen mit CheckWimpyAndFlee()
 
 
 BEMERKUNGEN
 ===========
 
-   Ruestungen wirken konventionell nur, wenn mindestens ein Schadensanteil
-   mechanisch ist und es kein Spell oder ein Spell mit SP_PHYSICAL_ATTACK
-   auf 1 ist.
+   Ruestungen wirken konventionell nur, wenn mindestens ein
+   Schadensanteil mechanisch ist und es kein Spell oder ein Spell mit
+   SP_PHYSICAL_ATTACK auf 1 ist.
 
-   Defend() beruecksichtigt magische Verteidigungen, die der Spieler bei
-   sich hat, sollte also aus Fairness gegenueber den Objekten anderer
-   Magier immer dem direkten reduce_hit_points() oder do_damage()
-   vorgezogen werden. Mittels der Flags in 'spell' kann man sehr viel
-   aendern.
+   Defend() beruecksichtigt magische Verteidigungen, die der Spieler
+   bei sich hat, sollte also aus Fairness gegenueber den Objekten
+   anderer Magier immer dem direkten reduce_hit_points() oder
+   do_damage() vorgezogen werden. Mittels der Flags in 'spell' kann
+   man sehr viel aendern.
 
 
 RUECKGABEWERT
@@ -142,11 +162,11 @@
    Lebenspunkte des Lebewesens.
 
 BEISPIELE (SIEHE AUCH Defend_bsp):
-   // ein simpler Angriff: enem->Defend(100, ({DT_BLUDGEON}), 0,
-   this_object());
+   // 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}), 1, this_object());
+   ({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]),
@@ -157,19 +177,23 @@
 SIEHE AUCH
 ==========
 
-   Angriff:   Attack(L), P_NO_ATTACK, InsertEnemy(L)
-   Schaden:   P_ENABLE_IN_ATTACK_OUT, P_LAST_MOVE,
-              do_damage(L), reduce_hit_points(L)
-   Schutz:    P_DEFENDERS, InformDefend(L), DefendOther(L)
-              P_ARMOURS, P_AC, P_DEFEND_FUNC, QueryDefend(L)
-              P_BODY, A_DEX
-   Daten:     P_LAST_COMBAT_TIME
-              P_LAST_DAMTYPES, P_LAST_DAMTIME, P_LAST_DAMAGE
-              P_DAMAGE_MSG
-   Resistenz: P_RESISTANCE_STRENGTHS, CheckResistance(L)
-   Sonstiges: CheckSensitiveAttack(L)
-              InternalModifyDefend(L)
-              UseSkill(L),
-              DefendInfo
+   Angriff: *Attack()*, *P_NO_ATTACK*, *InsertEnemy()* Schaden:
+   *P_ENABLE_IN_ATTACK_OUT*,
 
-15.09.2010, Zesstra
+      *P_LAST_MOVE*, *do_damage()*, *reduce_hit_points()*
+
+   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*
+
+   Resistenz: *P_RESISTANCE_STRENGTHS*,
+      *CheckResistance()*
+
+   Sonstiges: *CheckSensitiveAttack()*,
+      *InternalModifyDefend()*, *UseSkill()*, *DefendInfo()*
+
+Letzte Aenderung: 29.12.2017, Bugfix
