SpellSuccess()
==============

FUNKTION
--------
::

    int SpellSuccess(object caster, mapping sinfo)

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

    /std/spellbook.c

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

    object caster    Spell sprechender Spieler
    mapping sinfo    Spell-Info-Mapping mit allen Informationen

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

    Berechnet den Erfolg der Anwendung eines Spells aus seiner
    SI_SKILLABILITY und dem Skill SK_CASTING im Spieler. Laesst
    den Spieler bei besonders gutem Gelingen SK_CASTING lernen.

BEMERKUNGEN
-----------
::

    SK_CASTING muss fuer die SK_CASTING-Boni beherrscht werden.
    Das ist zB im Klerus ab bestimmtem Level der Fall.

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

    Spellbook Lernen: Learn, Erfolg, Misserfolg
    * Verwalten:      AddSpell, QuerySpell
    * Angriff:        TryAttackSpell, TryDefaultAttackSpell,
                      TryGlobalAttackSpell
    * Properties:     P_GLOBAL_SKILLPROPS, P_SB_SPELLS
    Skills Lernen:    LearnSkill, ModifySkill, LimitAbility
    * Nutzung:        UseSpell, UseSkill
    * sonstig:        spruchermuedung, skill_info_liste

5. Okt 2011 Gloinson

