EVENT-TYP
ET_ADVANCE - Globaler Erhoehungs-Event
BEDEUTUNG
Mit bzw. bei diesem Event erhoeht ein Spieler:
- Spielerlevel
- Gildenlevel
- Stats (kaufen, ZTs nicht)
Der Event wird in aller Regel nur in den Gilden verwendet, es ist
aber auch moeglich ihn ausserhalb einer Gilde einzusetzen. Wenn der
Spieler jedoch in keiner Gilde Mitglied ist, kann er damit nur sein
Spielerlevel erhoehen, da Gildenlevel und Statkosten von der Gilde
abhaengen.
DEFAULT HANDLER
/global/handler/advance.c
EVENT DEFINES
/sys/events.h
/sys/guilds.h
EVENT DATEN
Das Event-Mapping enthaelt folgende Daten:
Key | Inhalt
---------------+----------------------------------------------------
Eintraege, die automatisch gesetzt werden (NICHT VERAENDERN!)
E_SENDER | (object) Event-Erzeuger. (meist eine Gilde)
E_DESTINATIONS | (array) Objekte, an die der Event gesandt wird.
E_COMMAND | (string oder 0) das eingegebene Kommando
Eintraege, die der Sender gesetzt hat (setzen muss):
E_ACTOR | Das agierende Lebewesen. Also das Lebwesen, das
| etwas erhoehen will. ACHTUNG: Das kann vor dem
| Handler ein anderes Objekt sein, als danach. Z.B.
| bei der Seherwerdung.
E_ADVANCE_WHAT | Das was erhoeht/geaendert werden soll. Moeglich sind
| derzeit als Werte:
| P_LEVEL - Spielerlevel erhoehen (maximal + 1)
| P_GUILD_LEVEL - Gildenlevel aendern
| A_INT - Intelligenz aendern (maximal + 1)
| A_DEX - Geschicklichkeit aendern (maximal+1)
| A_STR - Staerke aendern (maximal + 1)
| A_CON - Ausdauer aendern (maximal + 1)
E_ADVANCE_OLD | Der alte (bisherige) Wert.
E_ADVANCE_NEW | Der neue Wert, auf den geaendert werden soll.
Nach oder waehrend der Abarbeitung EVENTUELL enthalten:
E_HANDLED | (int) Wenn gesetzt, wurde der Event verarbeitet
E_HANDLER | (object) Der ausfuehrende Handler.
E_CANCELLED | (mixed) Wenn gesetzt, wurde der Event abgebrochen.
| Der Inhalt kann beliebig sein.
E_CANCELLED | (int) Fehlercode - meist 1
| ODER
| (string) Meldung (Abbruchgrund) an den Spieler
| ODER
| (*string) Element 0 ist Meldung an den Spieler,
| Element 1 ist fuer die Umgebung.
E_CANCELLER | (object) Das abbrechende Object.
Eine Besonderheit stell hier E_ACTOR dar, wenn ein Spieler durch den
Event Spielerlevel 20 erreicht, also Seher wird. DANN ist E_ACTOR
nach der Verarbeitung durch den Handler ein anderes Objekt als vor-
her! Will man also E_ACTOR vor und nach dem Event verwenden, muss
man etwas aufpassen, dass die Daten noch 'frisch' sind. ;-)
Die Gilden geben eine Standardmeldung aus, wenn man beim Abbruch mit
cancel_event() keinen String oder Array aus Strings angibt. Will
man das verhindern, kann man z.B. einen leeren String angeben,
z.B. cancel_event("");
EVENT-LAUSCHER
Siehe allgemeine Syntaxen in event_listeners(WL).
EVENT-SENDER
Siehe allgemeine Syntaxen in event_senders(WL). Gesendet werden
muessen mindestens:
E_GUILD, E_ACTOR, E_ADVANCE_WHAT, E_ADVANCE_OLD, E_ADVANCE_NEW
Automatisch werden immer gesetzt:
E_SENDER, E_DESTINATION und E_COMMAND
Ziel des Events sollte immer der Senderaum (meist die Gilde) sein.
BESCHREIBUNG
Der Event wird normalerweise in der Gilde erzeugt, wenn ein Spieler
'erhoehe <wasweissich>' eingibt. Vorm eigentlichen Senden wird
geprueft, ob der Spieler nicht vielleicht ein Geist oder garnicht
Mitglied dieser Gilde ist.
Beim Erhoehen des Level wird geprueft, ob der Spieler genau um EIN
Level erhoeht werden soll und der Spieler genuegend XP und FP hat.
Dafuer muss der Spieler NICHT in einer Gilde sein.
Vorm Erhoehen des Levels wird das Level korrigiert, falls es nicht
mindestens 1 ist oder wenn der Spieler ein level >=20 hat und noch
kein Seher ist.
Vorm Erhoehen der Gildenstufe wird geprueft, ob der Spieler noch
ein Level aufsteigen kann, und ob er die Restriktionen erfuellt.
Beim Setzen des Gildenlevels wird nur geprueft, ob es das neue Level
gibt, und der Titel wird entsprechend gesetzt.
Beim Setzen der Stats wird ueberprueft, ob genu um 1 erhoeht werden
soll und ob der Spieler die erforderliche Anzahl XPs besitzt. Weiter-
hin wird ueberprueft, ob die Stat-Entwicklung nicht zu unausgeglichen
ist (wie bisher). Die Statkosten werden von der Gilde des Spielers
erfragt.
Objekte die mit hoeherer Prioritaet lauschen (z.B.: EPRIO_MODIFY
(700) bzw. EPRIO_CANCEL (400)), koennen VOR dem Erhoehen den Event
aendern oder ganz abbrechen.
Objekte die mit kleinerer Prioritaet (z.B.: EPRIO_REACT (-300))
lauschen, koennen NACH dem Erhoehen dem Spieler zum Beispiel
gratulieren etc.
SIEHE AUCH
ET_GUILD_JOIN, ET_GUILD_LEAVE, ET_GUILD_LEARN, events(WL),
event_types(WL), event_prioritaeten(WL), listen_event(S)
|