Dokumentation zu: ET_SOUL(WL)

HR Image


EVENT-TYP
        ET_SOUL  -  Verb-Ereignis

BEDEUTUNG
	Wenn ein Lebewesen ein Verb benutzt (also ein dem Ausdruecken
	von Gefuehlen dienendes Kommando), so wird dieses Ereignis
	erzeugt.
	Auf das Ereignis kann dann reagiert werden. In Ausnahmefaellen
	(bitte mit Erzmagier absprechen) kann es auch modifiziert oder
	ganz abgebrochen werden. Letzteres ist die schlechteste Loesung,
	besser ist ein Modifizieren in der Art, dass nur der Erzeuger
	eine entsprechende Meldung erhaelt.

DEFAULT HANDLER
        /global/handler/soul.c

EVENT DEFINES
        /sys/events.h
        /sys/living/soul.h

EVENT DATEN
        Das Event-Mapping enthaelt folgende Daten:

        Key              | Inhalt
        -----------------+--------------------------------------------------
        Eintraege, die nicht veraendert werden duerfen:
        E_SENDER         | (object) Event-Erzeuger. Im Normalfall der SoulD.
        E_DESTINATIONS   | (array) Objekte, an die das Event gesandt wird.
	                 | Im Normalfall das aeusserste Environment.
        E_COMMAND        | (string) Das eingegebene Kommando von this_player()
                         | das das Ereignis ausloeste.
	E_SOUL_VERB      | (string) Das erkannte Soul-Verb in der Normalform.
	                 | Dieses sollte fuer Auswahl bestimmter Verben benutzt
	                 | werden (siehe Bemerkung unten).
	E_SOUL_FLAGS     | (int) Einige Angaben ueber das Ereignis (s.u.)
	E_ACTOR          | Das eigentlich aktive Lebewesen, welches das
	                 | Verb ausfuehren moechte.
	E_SOUL_VICTIM    | (object) Das 'Opfer' des Verbs (bei Interaktion
	                 | direkt mit einem anderen Lebewesen) oder Null
	E_SOUL_SPECTATOR | (object) Bei Fernverben der ferne 'Betrachter'
	                 | eines interaktionslosen Verbs
	E_SOUL_CHANNAME  | Name der Zielebene bei Ebenenverben
	E_SOUL_CHANVICS  | (array) Uids der Leute, die der Zielebene lauschen

        Eintraege, die veraendert werden duerfen:
	E_SOUL_TEXT      | (array of strings) Die einzelnen Elemente duerfen
	                 | eventuell veraendert werden. Hierbei ist jedoch
	                 | grosse Sorgfalt walten zu lassen. Die Elemente
	                 | selbst sind unten beschrieben.

        Nach oder waehrend der Abarbeitung EVENTUELL enthalten:
        E_HANDLED        | (int) Wenn gesetzt, wurde das Event ausgefuehrt.
        E_HANDLER        | (object) Der ausfuehrende Handler. Im Normalfall
	                 | der Defaulthandler.
        E_CANCELLED      | (mixed) Wenn gesetzt, wurde das Event abgebrochen.
                         | Wenn ein String gesetzt wurde, so wird versucht
                         | diesen an den Akteur als Begruendung auszugeben.
        E_CANCELLER      | (object) Das abbrechende Object.

SYNTAX EVENT-LAUSCHER
        Siehe allgemeine Syntaxen in event_listeners(WL).

	Globales Lauschen ist nicht erlaubt.

SYNTAX EVENT-SENDER
        Siehe allgemeine Syntaxen in event_senders(WL).
	Normalerweise darf nur der SoulD bzw das Lebewesen diese Ereignisse
	erzeugen.

SYNTAX EVENT-ABBRECHER
	Meldungen und Aktionen duerfen wie ueblich nur in REACT_CANCEL
	vorgenommen werden. Zur Vereinfachung kann ein einfacher Text auch
	direkt beim Abbrechen angegeben werden (cancel_event("Begruendung\n"))
	welcher an mehr oder weniger passender Stelle dann an den Akteur
	ausgegeben wird.
	Notify_fail()s sind nicht erlaubt. Tells usw nur im REACT_CANCEL.
	Siehe auch Flussdiagramm in events(WL) und cancel_event(S).

BESCHREIBUNG
	Wird von einem Spieler oder Npc ein Verb ausgefuehrt (also ein
	gefuehlsausdrueckendes Kommando), so wird je nach Verb ein Ereignis
	erzeugt. Dieses enthaelt in E_SOUL_TEXT die auszugebenden Texte,
	welche modifiziert werden duerfen.
	Soll jedoch das 'Opfer' veraendert werden, so sollte dieses aufgrund
	der starken Abhaengigkeit der Texte vom Opfer nicht ueber
	E_SOUL_VICTIM geschehen. Vielmehr muss ein neuen Ereignis erzeugt
	und das alte dementsprechend modifiziert werden. Eine solche
	Vorgehensweise ist jedoch mit einem Erzmagier abzusprechen.

	Die auszugebenden Texte in E_SOUL_TEXT sind:
	   S_TEXT_ADVERB     |   Das verwendete Adverb
	   S_TEXT_SELF       |   Meldung an Akteur/Aktrice
	   S_TEXT_VICTIM     |   Meldung an Opfer
	   S_TEXT_OTHER      |   Meldung an andere

	Hier sind noch die Schluesselworte fuer die Namen usw enthalten,
	die erst bei der Ausgabe des Ereignisses ersetzt werden. Welche
	dies im Einzelnen sein koennen, ist im SoulD beschrieben.

	Weiterhin kann man ueber E_SOUL_FLAGS einiges ueber das Verb
	erfahren. Im Einzelnen:

	   * Eigenschaften des Verbs:
	     NEED_VIC    |   Verb erfordert Interaktion
	     NO_VIC      |   Verb hat nie Interaktion
	     NOREMOTE    |   Verb darf nicht in die Ferne benutzt werden
	     NOCHAN      |   Verb darf nicht auf den Ebenen benutzt werden
	     ALLOW_ALL   |   Verb erlaubt 'alle' als Opfer
	     V_VISUAL    |   Verb wird durch Sehen wahrgenommen (Opfer)
	     V_AUDIAL    |   Verb wird durch Hoeren wahrgenommen (Opfer)
	     O_VISUAL    |   dito fuer Zuschauer
	     O_AUDIAL    |   dito fuer Zuschauer

	   * Konkrete Eigenschaften fuer diese Anwendung des Verbs
	     ALL         |   Verb wurde auf alle angewandt
	     REMOTE      |   Verb wurde als Fernverb benutzt
	     CHANNEL     |   Verb wurde als Ebenenverb benutzt
	     ME_GHOST    |   Akteur ist Geist
	     ME_WIZ      |   Akteur ist Magier
	     ME_NPC      |   Akteur ist Npc
	     (FOUND_VERB)|   Verb wurde erkannt (intern)
	     (FIND_VERB) |   Auf Vorhandensein des Verbs testen (intern)

BEISPIEL
	Moechte man erreichen, dass alle Verben eines Spielern
	immer und aussschliesslich mit dem Adverb 'traurig' verwendet
	werden koennen:

        void create() {
            ...
            listen_event(ET_SOUL, EPRIO_MODIFY, #'receive_soul_verb
            ...
        }

        void receive_soul_verb(mapping data, string type, int prio) {
	  if (data[E_ACTOR] != environment()) return;
	  data[E_SOUL_TEXT][S_TEXT_ADVERB] = "traurig";
        }

HINWEIS
	Eine Liste der aktuell moeglichen Verb-Bezeichner, also des
        moeglichen Inhalts von E_SOUL_VERB kann man jederzeit abfragen
        durch "/std/player/soulhelp"->QueryActions().

SIEHE AUCH
        events(WL), event_types(WL), event_prioritaeten(WL), send_event(S),
        listen_event(S), verben, sould


Start » Magierhandbuch » Docu » Konzepte » ET_SOUL Letzte Generierung: 25.04.2021, 01:58
Email an: mud@wl.mud.de
Valid HTML 4.01!