ModifySkill() ============= FUNKTION -------- :: public varargs void ModifySkill(string sname, mixed val, int diff, string gilde) DEFINIERT IN ------------ :: /std/living/skills.c ARGUMENTE --------- :: string sname der zu aendernde Skill mixed val Aenderungswert: int fuer SI_SKILLABILITY, sonst mapping int diff Schwierigkeit (optional: default ist existierendes diff) string gilde Gilde (optional: default ist eigene Gilde) BESCHREIBUNG ------------ :: Mit der Methode kann man die Werte eines Skills/Spells veraendern. Dabei wird ein Skill immer in ein Mapping umgewandelt (Skills/Spells koennen auch einfach nur ihren Skillwert enthalten, diese ist aequivalent zu einem Mapping mit ([SI_SKILLABILITY:]). Ist 'val' ein int, wird dieses als SI_SKILLABILITY gesetzt. Falls der Skill nur ein int war, wird ein 'diff'!=0 als SI_DIFFICULTY gesetzt. Ist 'val' ein Mapping, wird dieses zum Skillmapping addiert. Etwaige SI_SKILLABILITY-Aenderungen laufen danach noch durch LimitAbility. BEISPIELE --------- :: // #1a: Lerne einen Spell/Skill (einer Gilde) caster->ModifySkill("feuerball", MAX_ABILITY, 100, "abenteurer") // #1b: ... oder ... caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100, "abenteurer") // #1c: ... oder fuer einen Abenteurer ... caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100); // #2: Setze eine Skill-Funktion fuer einen Kampfskill des Klerus this_player()->ModifySkill(FIGHT(WT_CLUB), ([SI_SKILLFUNC: "Keulenkampf", SI_DIFFICULTY: 100]), 100, "klerus"); // #3: Speichere im Skill (also Spieler) eine Option fuer diesen Skill // Vorteil: dieser Eintrag wird dem Spell immer uebergeben caster->ModifySkill("blitz", (["klerus_spell_option": 2])); (Code in /doc/beispiele/testobjekte/modifyskillspell_test) // #4: Lerne einen unabhaengigen Spell: ACHTUNG // dieser Spell funktioniert nur solange, wie die Closure existiert, // SI_SKILLABILITY und Spell bleiben jedoch im Spieler gespeichert (!) this_player()->ModifySkill("fnrx", ([SI_CLOSURE: function int (object caster, string skill, mapping sinf) { caster->LearnSkill("fnrx", 1); tell_object(caster, "Peng! Dein Skillwert steigt auf "+ caster->QuerySkillAbility("fnrx")+".\n"); return ERFOLG; }, SI_SKILLABILITY: 8432]), 100, "ANY"); SIEHE AUCH ---------- :: Skills Lernen: LearnSkill, LimitAbility * Nutzung: UseSpell, UseSkill * Abfragen: QuerySkill, QuerySkillAbility * Modifikation: ModifySkillAttribute, QuerySkillAttribute, QuerySkillAttributeModifier, RemoveSkillAttributeModifier * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS * sonstig: spruchermuedung * Properties: P_NEWSKILLS 3. Okt 2011 Gloinson