 Skills sind Fertigkeiten, die ein Spieler erwerben kann. Zu einem Skill koennen
mehrere Verben gehoeren. Ausserdem kann ein Verb unter Umstaenden bei mehreren
Skills definiert sein (zB, falls es eine Magiergilde und eine Psionkier-
gilde gaebe, koennte es skills "magie" und "psi" geben, die beide das
Verb "teleportiere" definieren).

 Welche Skills es gibt, welche Verben dazugehoeren, welche Objekte und
Funktionen diesen zugeordnet sind, regelt ein zentraler "Skillmaster".
Darueberhinaus gibt es in jedem Spielerobjekt ein "Skill"-Modul.

Der Skillmaster offeriert die folgenden Funktionen:

InsertSkill(string skillname, string skilldescr, string *verben,
            string *objFunDescr)
 skillname ist (natuerlich) der Name des Skills (zB Magie).
 skilldescr ist ein string, der den Skill naeher beschreibt, zB
            "Magie gibt dem Anwender ein breites Spektrum von Moeglichkeiten,
             sowohl im Kampf als auch ausserhalb."
 verben ist ein Array, der die Verben zu dem Skill enthaelt.
 objFunDescr ist ein Array, der dieselbe Groesse haben muss wie Verben. Jedes
             Element ist ein 4-elementiger Array. Erstes Element dieses Arrays
             ist ein Filename, zweites eine Funktion. Bei der Eingabe des Verbs
             wird in dem Objekt die Funktion aufgerufen. Die dabei uebergebenen
             Parameter werden spaeter beschrieben.
             Drittes Element ist ein String, der die zu diesem Verb und Skill
             gehoerende Aktion naeher beschreibt, zB:
             "Die Magische Rakete kostet den Gegner zwischen 5 und 10 Hitpoints"
             Das 4. Element muss eine Zahl aus [1..19] sein und gibt den Level
             an, ab dem ein Player dieses Skillverb erwerben kann.
 Die Funktion darf nur von Erzmagiern aufgerufen werden.
 Es darf noch keinen Skill dieses Names geben. Falls man einen bestehenden
 Skill lediglich erweitern moechte, muss man die Funktion AddVerbs benutzen
 (siehe unten).

RemoveSkill(skillname)
 entfernt einen Skill wieder. ACHTUNG: Wenn Player den Skill bereits erworben
 haben, verlieren sie ihn, wenn sie zum naechsten mal versuchen, ihn zu be-
 nutzen.

GetSkills()
 gibt die AList mit den Skills zurueck.

GetSkill(skillname)
 liefert den entsprechenden Eintrag aus der AList zurueck.

GetFunctionAndDescription(skillname, verb)
 liefert den in AddSkill uebergebenen 4elementigen Array mit Objektname,
 Funktionsname, Aktionsbeschreibung und Level zurueck.

GetSkillDescription(skillname)
 liefert die in AddSkill uebergebene Beschreibung des Skills zurueck.

AddVerbs(skillname, mixed *verbs, mixed *objFunDescr)
 erweitert einen bestehenden Skill um einige Verben, naehere Beschreibung
 siehe AddSkill.

-------------------------------------------------------------------------------
Das Skillmodul im Playerobjekt bietet die folgenden Funktionen:

GiveAbility(verb, skill, int promill)
 gibt einem Spieler die Faehigkeit, das Verb verb aus dem Skill skill zu benut-
 zen. Promill wird bei dem Versuch, das Verb zu benutzen, an das Skillobjekt
 uebergeben und sollte die Wahrscheinlichkeit, das dem Player die Skillaktion
 gelingt, in Promill beschreiben. Wenn der Player die Ability schon hatte, wird
 lediglich promill geupdated.
 Es wird eine -1 zurueckgegeben, falls eine solche Kombination aus Skill und
 Verb (noch) nicht definiert ist, eine -2 falls der Level des Spielers nicht
 ausreicht.

GetAllAbilities()
 gibt die AList mit den Abilities des Spielers zurueck. Schluessel in der AList
 sind die Verben, Eintraege sind Arrays mit den Skills. Die Arrays haben so
 viele Eintraege, wie der Player Skills hat, die das betreffende Wort
 definieren (im Idealfall also EINEN Eintrag, naemlich wenn es keine Ueber-
 scheidungen gibt). Die Eintraege sind wiederum 2elementige Arrays, die
 als 1. Element den Skillnamen, als 2. Element die Promill enthalten.

