blob: b0b81abc8ce57bf6c5da69f3eefcff88bf65693f [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2ModifySkillAttributeOld()
3*************************
4
5
6FUNKTION
7========
8
9 varargs int ModifySkillAttributeOld(object caster, string atrname,
10 int value, int duration, mixed fun)
11
12
13DEFINIERT IN
14============
15
16 /std/living/skill_attributes.c
17
18
19ARGUMENTE
20=========
21
22 <caster> IGNORIERT
23 frueher Objekt, das die Modifikation vornimmt, heute ist
24 dieses Argument ohne Bedeutung und wird ignoriert.
25
26 <atrname> STRING
27 Name des zu veraendernden Attributes
28 (Definiert in /sys/living/skill_attributes.h)
29
30 <value> INT
31 Neuer Wert des Attributs (Standard: 100)
32
33 <duration> INT
34 Dauer in Sekunden
35
36 <fun> NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!!
37
38
39BESCHREIBUNG
40============
41
42 Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen
43 Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen!
44
45 Aendert ein Skill-Attribut eines Living.
46
47
48
49 Fuer <value> ist folgendes zu beachten:
50 Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die
51 Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren
52 additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier
53 uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur
54 ein Modifikator zur gleichen Zeit aktiv war.)
55 Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge-
56 tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge-
57 tragen, bei 50 einer von -50, welcher das Skillattribute folglich
58 reduziert.
59
60 Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA
61 zulaessig.
62
63
64RUECKGABEWERT
65=============
66
67 0 wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt
68 werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()).
69 >0 wenn alles okay war
70
71
72BEMERKUNGEN
73===========
74
75 Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das
76 Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu
77 ueberschreiben. Dies ist inzwischen ohne Bedeutung.
78
79
80BEISPIELE
81=========
82
83 Ein NPC:
84
85 void
86 create() {
87 .
88 .
89 .
90 AddSpell(1, 1,
91 "Der fuerchterliche NPC haut Dir auf den Kopf.\n",
92 "Der fuerchterliche NPC haut @WEN auf den Kopf.\n",
93 DT_MAGIC, "schwaechen");
94 .
95 .
96 }
97
98 schwaechen(object enemy, int damage, mixed *dam_type) {
99 int ergebnis;
100 ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5);
101 if (ergebnis > 0)
102 tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n");
103 }
104
105
106
107 Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um
108 50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator).
109
110
111SIEHE AUCH
112==========
113
114 P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS,
115 ModifySkillAttribute, QuerySkillAttribute(),
116 RemoveSkillAttributeModifer(), QuerySkillAttributeModifier()
117
11807.08.2008 Zesstra