Doku-Update

- Info ueber die unterschiedlichen Datentypen fuer spell praezisiert.
- SP_GLOBAL_ATTACK hinzugefuegt.
- Beispiele modernisiert.
- RST-Verlinkung eingebaut und Einrueckungen gefixt.

Change-Id: I0918c9f6782cce083c4be24c29647f379f9dcac1
diff --git a/doc/sphinx/lfun/Defend.rst b/doc/sphinx/lfun/Defend.rst
index 71f76d6..e9ff992 100644
--- a/doc/sphinx/lfun/Defend.rst
+++ b/doc/sphinx/lfun/Defend.rst
@@ -3,172 +3,166 @@
 
 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
 ------------
-::
 
-     /std/living/combat
+  /std/living/combat
 
 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.
+  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.
 
-     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.
+  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:
-                ({
-                 ({ 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.
+    - 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.
+      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.
+      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()
+  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()
 
 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
 -------------
-::
 
-     Hoehe des tatsaechlichen Schadens. Dies kann mehr sein als die
-     Lebenspunkte des Lebewesens.
+  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}), 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());
+  // 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());
+  // ein magischer Angriff mit Treffermeldung:
+  enem->Defend(100, ({DT_BLUDGEON, DT_FIRE}), ([SP_SHOW_DAMAGE:1]),
+    this_object());
 
 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: :doc:`Attack`, :doc:`../props/P_NO_ATTACK`, :doc:`InsertEnemy`
+  Schaden:   :doc:`../props/P_ENABLE_IN_ATTACK_OUT`, 
+    :doc:`../props/P_LAST_MOVE`, :doc:`do_damage`,
+    :doc:`reduce_hit_points`
+  Schutz:    :doc:`../props/P_DEFENDERS`, :doc:`InformDefend`,
+    :doc:`DefendOther`, :doc:`../props/P_ARMOURS`,
+    :doc:`../props/P_AC`, :doc:`../props/P_DEFEND_FUNC`,
+    :doc:`QueryDefend`, :doc:`../props/P_BODY`
+  Daten:     :doc:`../props/P_LAST_COMBAT_TIME`,
+    :doc:`../props/P_LAST_DAMTYPES`,
+    :doc:`../props/P_LAST_DAMTIME`, :doc:`../props/P_LAST_DAMAGE`,
+    :doc:`../props/P_DAMAGE_MSG`
+  Resistenz: :doc:`../props/P_RESISTANCE_STRENGTHS`,
+    :doc:`CheckResistance`
+  Sonstiges: :doc:`CheckSensitiveAttack`,
+    :doc:`InternalModifyDefend`,
+    :doc:`UseSkill`,
+    :doc:`DefendInfo`
 
-15.09.2010, Zesstra
-
+Letzte Aenderung: 29.12.2017, Bugfix