
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
