blob: 5575b28d1f8b6f8bee354b95a4897b3a476ea4d1 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001ModifySkill()
Zesstra953f9972017-02-18 15:37:36 +01002*************
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 public varargs void ModifySkill(string sname, mixed val,
9 int diff, string gilde)
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/living/skills.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra953f9972017-02-18 15:37:36 +010021 string sname der zu aendernde Skill
22 mixed val Aenderungswert: int fuer SI_SKILLABILITY, sonst mapping
23 int diff Schwierigkeit (optional: default ist existierendes diff)
24 string gilde Gilde (optional: default ist eigene Gilde)
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstra953f9972017-02-18 15:37:36 +010026
27BESCHREIBUNG
28============
29
30 Mit der Methode kann man die Werte eines Skills/Spells veraendern. Dabei
31 wird ein Skill immer in ein Mapping umgewandelt (Skills/Spells koennen
32 auch einfach nur ihren Skillwert enthalten, diese ist aequivalent zu
33 einem Mapping mit ([SI_SKILLABILITY:<Skillwert>]).
34
35 Ist 'val' ein int, wird dieses als SI_SKILLABILITY gesetzt. Falls der
36 Skill nur ein int war, wird ein 'diff'!=0 als SI_DIFFICULTY gesetzt.
37
38 Ist 'val' ein Mapping, wird dieses zum Skillmapping addiert.
39
40
41
42 Etwaige SI_SKILLABILITY-Aenderungen laufen danach noch durch LimitAbility.
43
44
45BEISPIELE
46=========
47
48 // #1a: Lerne einen Spell/Skill (einer Gilde)
49 caster->ModifySkill("feuerball", MAX_ABILITY, 100, "abenteurer")
50 // #1b: ... oder ...
51 caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100,
52 "abenteurer")
53 // #1c: ... oder fuer einen Abenteurer ...
54 caster->ModifySkill("feuerball", ([SI_SKILLABILITY: MAX_ABILITY]), 100);
55
56
57
58 // #2: Setze eine Skill-Funktion fuer einen Kampfskill des Klerus
59 this_player()->ModifySkill(FIGHT(WT_CLUB),
60 ([SI_SKILLFUNC: "Keulenkampf",
61 SI_DIFFICULTY: 100]),
62 100, "klerus");
63
64 // #3: Speichere im Skill (also Spieler) eine Option fuer diesen Skill
65 // Vorteil: dieser Eintrag wird dem Spell immer uebergeben
66 caster->ModifySkill("blitz", (["klerus_spell_option": 2]));
67
68 (Code in /doc/beispiele/testobjekte/modifyskillspell_test)
69 // #4: Lerne einen unabhaengigen Spell: ACHTUNG
70 // dieser Spell funktioniert nur solange, wie die Closure existiert,
71 // SI_SKILLABILITY und Spell bleiben jedoch im Spieler gespeichert (!)
72 this_player()->ModifySkill("fnrx",
73 ([SI_CLOSURE:
74 function int (object caster, string skill, mapping sinf) {
75 caster->LearnSkill("fnrx", 1);
76 tell_object(caster, "Peng! Dein Skillwert steigt auf "+
77 caster->QuerySkillAbility("fnrx")+".\n");
78 return ERFOLG;
79 },
80 SI_SKILLABILITY: 8432]),
81 100,
82 "ANY");
83
84
85SIEHE AUCH
86==========
87
88 Skills Lernen: LearnSkill, LimitAbility
89 * Nutzung: UseSpell, UseSkill
90 * Abfragen: QuerySkill, QuerySkillAbility
91 * Modifikation: ModifySkillAttribute, QuerySkillAttribute,
92 QuerySkillAttributeModifier, RemoveSkillAttributeModifier
93 * Properties: P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS
94 * sonstig: spruchermuedung
95 * Properties: P_NEWSKILLS
96
973. Okt 2011 Gloinson