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