MG Mud User | 88f1247 | 2016-06-24 23:31:02 +0200 | [diff] [blame^] | 1 | Skills sind Fertigkeiten, die ein Spieler erwerben kann. Zu einem Skill koennen |
| 2 | mehrere Verben gehoeren. Ausserdem kann ein Verb unter Umstaenden bei mehreren |
| 3 | Skills definiert sein (zB, falls es eine Magiergilde und eine Psionkier- |
| 4 | gilde gaebe, koennte es skills "magie" und "psi" geben, die beide das |
| 5 | Verb "teleportiere" definieren). |
| 6 | |
| 7 | Welche Skills es gibt, welche Verben dazugehoeren, welche Objekte und |
| 8 | Funktionen diesen zugeordnet sind, regelt ein zentraler "Skillmaster". |
| 9 | Darueberhinaus gibt es in jedem Spielerobjekt ein "Skill"-Modul. |
| 10 | |
| 11 | Der Skillmaster offeriert die folgenden Funktionen: |
| 12 | |
| 13 | InsertSkill(string skillname, string skilldescr, string *verben, |
| 14 | string *objFunDescr) |
| 15 | skillname ist (natuerlich) der Name des Skills (zB Magie). |
| 16 | skilldescr ist ein string, der den Skill naeher beschreibt, zB |
| 17 | "Magie gibt dem Anwender ein breites Spektrum von Moeglichkeiten, |
| 18 | sowohl im Kampf als auch ausserhalb." |
| 19 | verben ist ein Array, der die Verben zu dem Skill enthaelt. |
| 20 | objFunDescr ist ein Array, der dieselbe Groesse haben muss wie Verben. Jedes |
| 21 | Element ist ein 4-elementiger Array. Erstes Element dieses Arrays |
| 22 | ist ein Filename, zweites eine Funktion. Bei der Eingabe des Verbs |
| 23 | wird in dem Objekt die Funktion aufgerufen. Die dabei uebergebenen |
| 24 | Parameter werden spaeter beschrieben. |
| 25 | Drittes Element ist ein String, der die zu diesem Verb und Skill |
| 26 | gehoerende Aktion naeher beschreibt, zB: |
| 27 | "Die Magische Rakete kostet den Gegner zwischen 5 und 10 Hitpoints" |
| 28 | Das 4. Element muss eine Zahl aus [1..19] sein und gibt den Level |
| 29 | an, ab dem ein Player dieses Skillverb erwerben kann. |
| 30 | Die Funktion darf nur von Erzmagiern aufgerufen werden. |
| 31 | Es darf noch keinen Skill dieses Names geben. Falls man einen bestehenden |
| 32 | Skill lediglich erweitern moechte, muss man die Funktion AddVerbs benutzen |
| 33 | (siehe unten). |
| 34 | |
| 35 | RemoveSkill(skillname) |
| 36 | entfernt einen Skill wieder. ACHTUNG: Wenn Player den Skill bereits erworben |
| 37 | haben, verlieren sie ihn, wenn sie zum naechsten mal versuchen, ihn zu be- |
| 38 | nutzen. |
| 39 | |
| 40 | GetSkills() |
| 41 | gibt die AList mit den Skills zurueck. |
| 42 | |
| 43 | GetSkill(skillname) |
| 44 | liefert den entsprechenden Eintrag aus der AList zurueck. |
| 45 | |
| 46 | GetFunctionAndDescription(skillname, verb) |
| 47 | liefert den in AddSkill uebergebenen 4elementigen Array mit Objektname, |
| 48 | Funktionsname, Aktionsbeschreibung und Level zurueck. |
| 49 | |
| 50 | GetSkillDescription(skillname) |
| 51 | liefert die in AddSkill uebergebene Beschreibung des Skills zurueck. |
| 52 | |
| 53 | AddVerbs(skillname, mixed *verbs, mixed *objFunDescr) |
| 54 | erweitert einen bestehenden Skill um einige Verben, naehere Beschreibung |
| 55 | siehe AddSkill. |
| 56 | |
| 57 | ------------------------------------------------------------------------------- |
| 58 | Das Skillmodul im Playerobjekt bietet die folgenden Funktionen: |
| 59 | |
| 60 | GiveAbility(verb, skill, int promill) |
| 61 | gibt einem Spieler die Faehigkeit, das Verb verb aus dem Skill skill zu benut- |
| 62 | zen. Promill wird bei dem Versuch, das Verb zu benutzen, an das Skillobjekt |
| 63 | uebergeben und sollte die Wahrscheinlichkeit, das dem Player die Skillaktion |
| 64 | gelingt, in Promill beschreiben. Wenn der Player die Ability schon hatte, wird |
| 65 | lediglich promill geupdated. |
| 66 | Es wird eine -1 zurueckgegeben, falls eine solche Kombination aus Skill und |
| 67 | Verb (noch) nicht definiert ist, eine -2 falls der Level des Spielers nicht |
| 68 | ausreicht. |
| 69 | |
| 70 | GetAllAbilities() |
| 71 | gibt die AList mit den Abilities des Spielers zurueck. Schluessel in der AList |
| 72 | sind die Verben, Eintraege sind Arrays mit den Skills. Die Arrays haben so |
| 73 | viele Eintraege, wie der Player Skills hat, die das betreffende Wort |
| 74 | definieren (im Idealfall also EINEN Eintrag, naemlich wenn es keine Ueber- |
| 75 | scheidungen gibt). Die Eintraege sind wiederum 2elementige Arrays, die |
| 76 | als 1. Element den Skillnamen, als 2. Element die Promill enthalten. |
| 77 | |