QueryDefend()
*************


FUNKTION
========

   int QueryDefend(string|string* dtyp, int|mapping spell, object enemy);


DEFINIERT IN
============

   /std/armour/combat.c


ARGUMENTE
=========

   dtyp  - Schadenstypen der Angriffsart
   spell - 0       bei konventionellem Angriff,
           != 0    bei Angriff mit einem nichtphysischen Spell,
           mapping bei genaueren Angaben zur Wirkung
   enemy - Der angreifende Gegner


BESCHREIBUNG
============

   Dies ist die zentrale Funktion einer Ruestung. Sie wird in jeder
   Kampfrunde aus /std/living/combat::Defend() fuer jede Ruestung aufgerufen,
   die der Spieler angezogen hat.

   Der Schutzwert von P_AC entfaltet seine Wirkung nur bei konventionellen
   Angriffen:
   * wenn 'spell' 0 ist (bei Aufruf aus der Defend heraus ausgeschlossen)
   * wenn 'spell' ein Mapping mit dem Flag SP_PHYSICAL_ATTACK != 0 UND
                  in 'dtyp' mindestens ein physischer Schaden enthalten ist


RUeCKGABEWERT
=============

   Die Ruestungsstaerke in dieser Kampfrunde. Sie ermittelt sich als
   Zufallszahl zwischen 0 und P_AC, zuzueglich des Ergebnisses des
   DefendFunc()-Aufrufs.


BEMERKUNGEN
===========

   Auch wenn man eine DefendFunc() benutzt, darf der Rueckgabewert
   insgesamt nicht groesser werden als der fuer den Ruestungstyp
   maximal zulaessige!


SIEHE AUCH
==========

   Ruestungen: P_ARMOUR_TYPE, P_NR_HANDS, P_ARMOURS, P_WORN
   Schutz:     P_AC, Defend(), DefendFunc
   Sonstiges:  P_EQUIP_TIME, P_LAST_USE, P_DAM_TYPE
   Verwandt:   QueryArmourByType(L), P_WEAPON, FilterClothing(),
               FilterArmours()
   Resistenz:  P_RESISTANCE_STRENGTHS, CheckResistance(L)

28.Jul 2014 Gloinson
