
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
