SpellDefend()
*************


FUNKTION
========

   public int SpellDefend(object caster,mapping sinfo);


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

   /std/living/combat.c


ARGUMENTE
=========

   object caster      - Gegner
   mapping sinfo      - Zusatzinformationen zum Spell


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

   Ueber den Skill SK_SPELL_DEFEND mit den Aufrufparametern
     SI_ENEMY    : <caster>
   und
     SI_SKILLARG : <sinfo>
   wird eine Abwehrchance in 0.01%-Schritten fuer einen
   Spell ermittelt, also 0% - 100% bzw. als Rueckgabewert
   0 - 10000.



   Weiterhin wird automatisch P_MAGIC_RESISTANCE_OFFSET und der Skill
   SK_SPELL_DEFEND beruecksichtigt.


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

   Die Abwehrchance in 0.01%-Schritten.



   Fuer Spieler wird dieser Rueckgabewert auf 3333 maximal, also 33,33%
   Abwehrmoeglichkeit beschraenkt.


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

   Die Spellbooks muessen selbst auf die Auswertung dieser Funktion
   achten! Dies geschieht nur im Falle von TryGlobalAttackSpell()
   und bei Spells fuer NPCs mittels P_SPELLS automatisch!

   Bitte bei NPCs nicht pauschal 100% / 10000 zurueckgeben. Danke.


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

   Verwandt:     P_MAGIC_RESISTANCE_OFFSET
   Aehnlich:     P_NOMAGIC
   Generell:     TryGlobalAttackSpell, /std/spellbook.c
   Sonstiges:    UseSkill, SK_SPELL_DEFEND

29.Dez 2007 Gloinson
