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
