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:<Skillwert>]).
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
- Okt 2011 Gloinson