blob: f2c5861c644df0a0a6936dfd0b71b89dae75f561 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
Zesstra953f9972017-02-18 15:37:36 +01002SetSpellFatigue()
3*****************
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 public varargs int SetSpellFatigue(int duration, string key)
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/living/skills.c
16 /std/player/skills.c
17 /sys/living/skills.h
MG Mud User88f12472016-06-24 23:31:02 +020018
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020ARGUMENTE
21=========
MG Mud User88f12472016-06-24 23:31:02 +020022
Zesstra953f9972017-02-18 15:37:36 +010023 int duration: Wie lang soll die Spruchermuedung andauern?
24 string key : Eindeutiger Name des Spruches, einer Gruppe von Spruechen
25 oder 0 fuer die globale Spruchermuedung.
MG Mud User88f12472016-06-24 23:31:02 +020026
MG Mud User88f12472016-06-24 23:31:02 +020027
Zesstra953f9972017-02-18 15:37:36 +010028BESCHREIBUNG
29============
30
31 Diese Funktion dient zum Verwalten von individuellen Spruchermuedungen
32 (Spellfatigue, Spruchsperren).
33 Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne
34 Sprueche oder Gruppen von Spruechen gestalten.
35
36 <duration> ist die Zeit (in Sekunden), welche die Spruchermuedung
37 anhalten soll (nicht die Endzeit).
38
39 Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre
40 gesetzt (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls die
41 unter <key> gespeicherte Spruchermuedung.
42 Setzt man einen Eintrag ohne Angabe von <key> bedeutet dies damit auch,
43 dass der Wert von P_NEXT_SPELL_TIME geaendert wird.
44
45
46RUeCKGABEWERT
47=============
48
49 -1 Der Eintrag <key> ist noch nicht abgelaufen, es wurde _keine_
50 neue Spruchermuedung/-Sperre gespeichert.
51
52 >0 Eintrag wurde gespeichert, Rueckgabewert ist die Zeit, zu der die
53 Sperre ablaeuft.
54
55
56BEISPIELE
57=========
58
59 Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'.
60 Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der
61 Gruppe ausgefuehrt wurde.
62 if (CalculateSpellSuccess(...) > x) {
63 // Spellfatigue setzen (und Erfolg pruefen!)
64 if (ob->SetSpellFatigue(5, "extrasuess") > -1) {
65 tell_object(ob, "Du fuetterst " + enemy->Name(WEN) + " mit einem "
66 "Stueck suesser Schokotorte.\n");
67 ...
68 }
69 else {
70 // Sauerei! Zu ermuedet fuer diesen Spruch. Fehlermdeldung ...
71 }
72 }
73 Dieses setzt natuerlich voraus, dass alle anderen Sprueche der Gruppe
74 "extrasuess" den gleichen <key> pruefen und setzen.
75 (Will man vor CalculateSpellSuccess() wissen, ob der Spruch ueberhaupt
76 gewirkt werden duerfte, sollte man hierzu dann CheckSpellFatigue()
77 verwenden.)
78
79
80BEMERKUNGEN
81===========
82
83 Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie
84 unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen
85 auf volle 2s aufgerundet werden. (Dies ist nicht der Fall bei NPC.)
86 Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt
87 werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt
88 ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere
89 Wuensche habt, sprecht den/die Mudlib-EM an.
90
91
92SIEHE AUCH
93==========
94
95 CheckSpellFatigue(L), DeleteSpellFatigue(L)
96 P_NEXT_SPELL_TIME
97 spruchermuedung
98
MG Mud User88f12472016-06-24 23:31:02 +02009927.03.2010, Zesstra