UseSkill()
FUNKTION:
    public varargs mixed UseSkill(string skill, mapping args)

DEFINIERT IN:
    /std/living/skills.c

ARGUMENTE:
    string skill     Skill-Name
    mapping args     Argumente (veraenderte Skillmapping-Informationen)

BESCHREIBUNG:
    Benutzt einen Skill. Dieser Skill sollte (als grossgeschriebener Skill)
    im Living vorliegen und das Living darf kein Geist sein.
    
    Die Argumente 'args' werden temporaer auf das Skillmapping des Living
    addiert (also nur fuer diesen Aufruf und SI_INHERIT gueltig).
    
    Eine ausfuehrbare Skill-Funktion zum Skill wird in folgender
    Reihenfolge bestimmt:
    - eine gesetzte SI_CLOSURE nutzen
    - ein gesetztes SI_SKILLFUNC in der gesetzten Gilde nutzen
    - im Living die Funktion "StdSkill_"+skill (zB Waffenskills) nutzen
    - QuerySkillAbility() nutzen
    Die so bestimmte Skill-Funktion wird dann als SI_CLOSURE im Spieler
    gesetzt und ist bis zur Zerstoerung der entsprechenden Objekte gueltig.
    Die Methode wird dann gerufen (der Skill also angewandt).
    
    Standardmaessig gibt ein UseSkill() also einfach den SI_SKILLABILITY-Wert
    eines Skills zurueck, es sei denn, eine Funktion wurde fuer den Skill
    an einer der oben genannten Stellen implementiert.
    
    Ein eventuell uebergeordneter Skill (SI_INHERIT) wird mit dem durch den
    Aufruf der Skill-Funktion veraenderten Mapping mit UseSkill(skill, args)
    ebenfalls noch ausgefuehrt, bevor das Resultat zurueckgegeben wird.

SIEHE AUCH:
    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
    * Nutzung:      UseSpell
    * Abfragen:     QuerySkill, QuerySkillAbility
    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
    * sonstig:      spruchermuedung, skill_info_liste
    * Properties:   P_NEWSKILLS
    Spellbook:      Learn, SpellSuccess, Erfolg, Misserfolg

4. Okt 2011 Gloinson