| 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 |