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