Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 1 | ModifySkillAttributeOld() |
| 2 | ========================= |
| 3 | |
| 4 | FUNKTION |
| 5 | -------- |
| 6 | :: |
| 7 | |
| 8 | varargs int ModifySkillAttributeOld(object caster, string atrname, |
| 9 | int value, int duration, mixed fun) |
| 10 | |
| 11 | DEFINIERT IN |
| 12 | ------------ |
| 13 | :: |
| 14 | |
| 15 | /std/living/skill_attributes.c |
| 16 | |
| 17 | ARGUMENTE |
| 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 | |
| 37 | BESCHREIBUNG |
| 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 | |
| 62 | RUECKGABEWERT |
| 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 | |
| 70 | BEMERKUNGEN |
| 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 | |
| 78 | BEISPIELE |
| 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 | |
| 109 | SIEHE AUCH |
| 110 | ---------- |
| 111 | :: |
| 112 | |
| 113 | P_SKILL_ATTRIBUTES, P_SKILL_ATTRIBUTE_OFFSETS, |
| 114 | ModifySkillAttribute, QuerySkillAttribute(), |
| 115 | RemoveSkillAttributeModifer(), QuerySkillAttributeModifier() |
| 116 | |
| 117 | |
| 118 | 07.08.2008 Zesstra |
| 119 | |