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