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
