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