| SetSpellFatigue |
| |
| FUNKTION: |
| public varargs int SetSpellFatigue(int duration, string key) |
| |
| DEFINIERT IN: |
| /std/living/skills.c |
| /std/player/skills.c |
| /sys/living/skills.h |
| |
| ARGUMENTE: |
| int duration: Wie lang soll die Spruchermuedung andauern? |
| string key : Eindeutiger Name des Spruches, einer Gruppe von Spruechen |
| oder 0 fuer die globale Spruchermuedung. |
| |
| BESCHREIBUNG: |
| Diese Funktion dient zum Verwalten von individuellen Spruchermuedungen |
| (Spellfatigue, Spruchsperren). |
| Hiermit lassen sich unabhaengige Ermuedungen/Sperren fuer einzelne |
| Sprueche oder Gruppen von Spruechen gestalten. |
| |
| <duration> ist die Zeit (in Sekunden), welche die Spruchermuedung |
| anhalten soll (nicht die Endzeit). |
| |
| Wird <key> nicht angegeben oder ist 0, wird die globale Spruchsperre |
| gesetzt (identisch zu der Property P_NEXT_SPELL_TIME), anderenfalls die |
| unter <key> gespeicherte Spruchermuedung. |
| Setzt man einen Eintrag ohne Angabe von <key> bedeutet dies damit auch, |
| dass der Wert von P_NEXT_SPELL_TIME geaendert wird. |
| |
| RUeCKGABEWERT: |
| -1 Der Eintrag <key> ist noch nicht abgelaufen, es wurde _keine_ |
| neue Spruchermuedung/-Sperre gespeichert. |
| |
| >0 Eintrag wurde gespeichert, Rueckgabewert ist die Zeit, zu der die |
| Sperre ablaeuft. |
| |
| BEISPIELE: |
| Ein Spell gehoert zu einer Gruppe von Spells mit dem Namen 'extrasuess'. |
| Er darf nur ausgefuehrt werden, wenn seit 5s kein anderer Spruch aus der |
| Gruppe ausgefuehrt wurde. |
| if (CalculateSpellSuccess(...) > x) { |
| // Spellfatigue setzen (und Erfolg pruefen!) |
| if (ob->SetSpellFatigue(5, "extrasuess") > -1) { |
| tell_object(ob, "Du fuetterst " + enemy->Name(WEN) + " mit einem " |
| "Stueck suesser Schokotorte.\n"); |
| ... |
| } |
| else { |
| // Sauerei! Zu ermuedet fuer diesen Spruch. Fehlermdeldung ... |
| } |
| } |
| Dieses setzt natuerlich voraus, dass alle anderen Sprueche der Gruppe |
| "extrasuess" den gleichen <key> pruefen und setzen. |
| (Will man vor CalculateSpellSuccess() wissen, ob der Spruch ueberhaupt |
| gewirkt werden duerfte, sollte man hierzu dann CheckSpellFatigue() |
| verwenden.) |
| |
| BEMERKUNGEN: |
| Die genauen Zeitdauern koennen von Spielern beeinflusst werden, sie |
| unterliegen der jeweiligen Einstellung von 'spruchermuedung', d.h. koennen |
| auf volle 2s aufgerundet werden. (Dies ist nicht der Fall bei NPC.) |
| Auch wenn diese Funktion zum Verwalten von beliebigen Zeitsperren genutzt |
| werden koennen, beschraenkt euch bitte auf Spruchermuedungen und benutzt |
| ansonsten check_and_update_timed_key(). Falls ihr diesbzgl. weitere/andere |
| Wuensche habt, sprecht den/die Mudlib-EM an. |
| |
| SIEHE AUCH: |
| CheckSpellFatigue(L), DeleteSpellFatigue(L) |
| P_NEXT_SPELL_TIME |
| spruchermuedung |
| |
| ---------------------------------------------------------------------------- |
| 27.03.2010, Zesstra |
| |