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