QuerySkill()
============

FUNKTION
--------
::

    public varargs mapping QuerySkill(string sname, string gilde)

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

    /std/living/skills.c

    

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

    string sname    Name des abzufragenden Skill
    string gilde    Name der Gilde, unter der der Skill gesucht werden soll

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

    Diese Funktion liefert das Skillmappings des Skills 'snme' im Lebewesen
    zurueck. Diese enthaelt Eintraege, die in der Man-Page skill_info_liste
    beschrieben sind.

    Falls 'gilde' nicht angegeben wird, wird der Skill zuerst fuer die Gilde
    P_GUILD des Lebewesens gesucht, ansonsten in den allgemeinen Skills
    "ANY" (es wird NICHT in Gildenobjekt oder Spellbook etwas abgefragt).

RUECKGABEWERT
-------------
::

    Ein Mapping mit Skillinfos oder 0, falls der Skill nicht vorhanden ist.
    Das Mapping ist eine Kopie.

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

    Skills Lernen:  LearnSkill, ModifySkill, LimitAbility
    * Nutzung:      UseSpell, UseSkill
    * Abfragen:     QuerySkillAbility
    * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
                    QuerySkillAttributeModifier, RemoveSkillAttributeModifier
      * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
    * sonstig:      spruchermuedung, skill_info_liste
    * Properties:   P_NEWSKILLS

5. Okt 2011 Gloinson

