InternalModifyDefend()
======================

InternalModifyDefend(L)
-----------------------
::

FUNKTION
--------
::

     protected void InternalModifyDefend(int dam, mixed dt, mixed spell,
				      object enemy)

DEFINIERT IN
------------
::

     /std/living/combat

ARGUMENTE
---------
::

     int dam             Staerke des abzuwehrenden Angriffs (in HP/10)
     string/string* dt   Art(en) des Schadens, der angerichtet werden soll
     int/mapping spell   0 fuer normale Angriffe (keine Zauber)
                         1 fuer Zauber (Standardruestungen ignorieren)
                         mapping fuer mehr Informationen
     object enemy        der Feind/Schadenverursacher

BESCHREIBUNG
------------
::

     Dient dazu noch Aenderungen am Verhalten der Defend() vornehmen zu
     koennen. Die Parameter werden alle per Referenz uebergeben, Aenderungen
     wirken also direkt in der Defend()!
     Einfach ueberschreiben, aber ::InternalModifyDefend(&..., &....) nicht
     vergessen!

SIEHE AUCH
----------
::

     InternalModifyAttack(L)
     Defend(L)

28.03.2008, Zesstra

