-------- PROVISORIUM -------
EVENT-TYPEN
ET_WIELD - der 'Zueck'-Event fuer Waffen.
ET_UNWIELD - der 'Wegsteck'-Event fuer Waffen.
BEDEUTUNG
Wenn ein Lebewesen eine Waffe zueckt oder wegsteckt, werden
diese Events ausgeloest. Auf diese Ereignisse kann dann
reagiert werden.
ET_WIELD wird auch gesendet, wenn ein Schild gezueckt wird;
es zaehlt diesbezueglich als Waffe.
Aufgrund der Aehnlichkeit von ET_WIELD und ET_UNWIELD steht
diese Manpage fuer beide Events.
DEFAULT HANDLER
/global/handler/weapon.c
EVENT DEFINES
/sys/events.h
/sys/combat.h
EVENT DATEN
Das Event-Mapping enthaelt folgende Daten:
Key | Inhalt
--------------- +----------------------------------------------------
Eintraege, die automatisch gesetzt werden (NICHT VERAENDERN!)
E_SENDER | (object) Event-Erzeuger. (Meist das Lebewesen)
E_DESTINATIONS | (array) Objekte, an die der Event gesandt wird. (Im
| Normalfall der Start- und Zielraum)
E_COMMAND | (string) Das eingegebene Kommando. (Der Ausgang)
| Kann auch 0 sein! (siehe Manpage zu query_command()
E_USE_NFAIL | (int) 0 oder 1. Ist es 1 soll zum Setzen der
| Cancel-Message notify_fail() benutzt werden, an-
| sonsten tell_object()
Daten, die veraendert werden duerfen:
E_WIELD_WEAPON | (object) Die Waffe (oder Schild), die gezueckt
| werden soll. (nur ET_WIELD!)
E_UNWIELD_WEAPON| (object) Die Waffe (oder Schild), die weggesteckt
| werden soll. (nur ET_UNWIELD!)
E_ACTOR | Das agierende Lebewesen.
E_WIELD_FLAGS | Flags ueber die Handhabung des Ereignisses
| (sowohl fuer ET_WIELD als auch ET_UNIELD) s. u.
Nach oder waehrend der Abarbeitung EVENTUELL enthalten:
E_HANDLED | (int) Wenn gesetzt, wurde der Event ausgefuehrt.
E_HANDLER | (object) Der ausfuehrende Handler.
E_CANCELLED | (mixed) Wenn gesetzt, wurde der Event abgebrochen.
| Der Inhalt sollte immer 1 sein.
E_CANCELLER | (object) Das abbrechende Object.
EVENT-LAUSCHER
Siehe allgemeine Syntaxen in event_listeners(WL).
EVENT-SENDER
Siehe allgemeine Syntaxen in event_senders(WL). Gesendet werden
muessen mindestens:
E_WIELD_WEAPON bzw. E_UNWIELD_WEAPON, E_ACTOR
Automatisch werden immer gesetzt:
E_SENDER, E_DESTINATION und E_COMMAND.
Ziel des Events sollte immer die Umgebung des Agierenden sein,
bzw. dessen aeusserstes Environment, falls sich ein Raum in einem
anderen Raum befindet. (all_environment(raum)[<1])
BESCHREIBUNG
Der ET_WEAR oder ET_UNWEAR Event wird erzeugt, wenn die Waffe
NICHT mit E_SILENT gezueckt oder weggesteckt wurde
Der Event geht mit Prioritaet EPRIO_DEF_HANDLE (0) an den Default-
Handler (siehe oben).
ACHTUNG! Abbruchmeldungen MUESSEN als Argument (string oder closure)
im cancel_event() angegeben werden!
Der Event kann mit 2 Moeglichen Flags gesendet werden, die im
Datenfeld E_WIELD_FLAGS uebergeben werden:
WIELD_SILENT | Es soll keine Meldung an Spieler/Umstehende
| erfolgen.
WIELD_NOFORCE | Es sollen keine Waffen/Schilde zurueckgesteckt
| werden (nur bei ET_WIELD) - z.B. bei
| "zuecke alles"
BEISPIELE:
1) Ein Raum, in dem Waffen weder gezueckt noch weggesteckt werden
koennen. (z.B. weil man an einem Seil haengt und sich festhalten
muss/soll)
#include <combat.h>
#include <events.h>
// Deklarartion
void keine_waffen(mapping data, string type);
void create()
{
...
// Anmelden zum Lauschen
listen_event(ET_UNWIELD, EPRIO_CANCEL, #'keine_waffen);
listen_event(ET_WIELD, EPRIO_CANCEL, #'keine_waffen);
}
void keine_waffen(mapping data, string type)
{
if (environment(data[E_ACTOR]) != ME) return;
cancel_event(break_string(
"Du haeltst Dich gerade am Seil fest, dazu brauchst Du "
"all Deine Haende."));
// Der String wird nicht automatisch umgebrochen!
}
2) /doc/beispiele/events/schild.c
SIEHE AUCH
events(WL), event_types(WL), event_prioritaeten(WL),
listen_event(S)
|