FUNKTION:
int Execute(string ability, object living, mixed argument);
DEFINIERT IN:
/secure/skillmaster.c
BESCHREIBUNG:
Fuehrt eine Fertigkeit aus. Es werden verschiedene allgemeine
Ueberpruefungen vorgenommen. (Kosten, Laehmung, Geist, Delay,
P_NOMAGIC, etc.) Fuehrt der Spieler schon maximal viele
Delay-Fertigkeiten aus (P_MAX_SKILLS), wird die Abarbeitung
abgebrochen. Handelt es sich um eine Delay(Poll)-Fertigkeit wird
diese in die Liste der aktiven Polls aufgenommen. Ansonsten wird
die Funktion _cast_<ability>() im Skill/Spell-Objekt aufgerufen.
Abhaengig vom Returnwert (ERFOLG, MISSERFOLG, FEHLER) werden dem
Living Kosten abgezogen, Delay gesetzt und/oder der Lernwert
erhoeht.
Handelt es sich um eine Delay(Poll)-Fertigkeit wird in
register_poll() geprueft, ob _poll_<ability>() im Skill/Spell-Objekt
einen Wert x > 0 zurueckgibt. Wenn ja wird die Fertigkeit in die
Liste der aktiven Polls aufgenommen und in x Sekunden wieder
_poll_<ability>() aufgerufen. Dabei wird der Zaehler jeweils um 1
erhoeht, bis _poll_<ability>() 0 zurueckgibt.
Ist x == 0 wird _cast_<ability>() im Skill/Spell-Objekt aufgerufen
und die weitere Behandlung verlaeuft ganz normal.
Ist x < 0 so wertet der Master dies als Fehler und bricht die weitere
Bearbeitung der Fertigkeit ab. (siehe abilities.doc)
ARGUMENTE:
ability - Name der Fertigkeit.
living - Living, das die Fertigkeit ausfuehrt.
argument - Array aus Strings, die das Living als Argument angegeben
hatte.
RÜCKGABEWERT:
1 - ERFOLG
-1 - FEHLER
-3 - MISSERFOLG (normalerweise 0, hier -3 um Probleme mit return 0;
bei den Checks am Anfang von Execute zu vermeiden.)
SIEHE AUCH:
skillmaster(SEC), abilities.doc(WL)
|