ModifySkillAttributeOld()¶
FUNKTION¶
varargs int ModifySkillAttributeOld(object caster, string atrname,
int value, int duration, mixed fun)
DEFINIERT IN¶
/std/living/skill_attributes.c
ARGUMENTE¶
<caster> IGNORIERT
frueher Objekt, das die Modifikation vornimmt, heute ist
dieses Argument ohne Bedeutung und wird ignoriert.
<atrname> STRING
Name des zu veraendernden Attributes
(Definiert in /sys/living/skill_attributes.h)
<value> INT
Neuer Wert des Attributs (Standard: 100)
<duration> INT
Dauer in Sekunden
<fun> NICHT MEHR UNTERSTUETZT - ModifySkillAttribute() nutzen!!
BESCHREIBUNG¶
Diese Funktion existiert nur aus Kompatibilitaetsgruenden. Bitte in neuen
Objekten NICHT mehr verwenden und in alten nach Moeglichkeit ausbauen!
Aendert ein Skill-Attribut eines Living.
Fuer <value> ist folgendes zu beachten:
Frueher handelte es sich um einen multiplikativen Faktor. 100 hatte die
Bedeutung von 1 und veraenderte nichts. Heute sind die Modifikatoren
additiv. Diese Funktion macht eine einfache Umrechnung, indem sie vom hier
uebergeben Wert 100 abzieht. (In der Annahme, dass frueher meist eh nur
ein Modifikator zur gleichen Zeit aktiv war.)
Gibt man hier also hier eine 100 an, wird ein Modifikator von 0 einge-
tragen, der nichts aendert, bei 200 wird ein Modifikator von 100 einge-
tragen, bei 50 einer von -50, welcher das Skillattribute folglich
reduziert.
Es sind momentan max. 5 gleichzeitige Skillattribute-Modifikatoren pro SA
zulaessig.
RUECKGABEWERT¶
0 wenn der Wert ungueltig ist oder aus sonstigem Grunde nicht gesetzt
werden konnte (fuer bessere Diagnostik -> ModifySkillAttribute()).
>0 wenn alles okay war
BEMERKUNGEN¶
Frueher musste ein setzendes Objekt ein groesseres P_LEVEL haben als das
Objekt, welches einen vorherigen Modifikator gesetzt hat, um diesen zu
ueberschreiben. Dies ist inzwischen ohne Bedeutung.
BEISPIELE¶
Ein NPC:
void
create() {
.
.
.
AddSpell(1, 1,
"Der fuerchterliche NPC haut Dir auf den Kopf.\n",
"Der fuerchterliche NPC haut @WEN auf den Kopf.\n",
DT_MAGIC, "schwaechen");
.
.
}
schwaechen(object enemy, int damage, mixed *dam_type) {
int ergebnis;
ergebnis = enemy->ModifySkillAttributeOld(this_object(), SA_QUALITY, 50, 5);
if (ergebnis > 0)
tell_object(enenmy, "Du fuehlst Dich ganz schwach.\n");
}
Der NPC schwaecht seinen Gegner erheblich! Alles wird fuer 5 Sekunden um
50, d.h. 0.5 Skillattribute reduziert (50 - 100 => -50 als Modifikator).
SIEHE AUCH¶
P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS,
ModifySkillAttribute, QuerySkillAttribute(),
RemoveSkillAttributeModifer(), QuerySkillAttributeModifier()
07.08.2008 Zesstra