Umstellen der Kommunikation komplett auf Events. Dabei Vereinheitlichung
von Npcs und Spielern sowie der Bedienung der Verben, Verwaltung der
Adverbien usw.
Moeglichkeiten der Ereignisbeeinflussung:
o Adverbien einfuegen bzw fest vorgeben
o Lautaeusserungen verhindern
- komplett nur Meldung an Spieler
- Meldung an Spieler und andere Anwesende
o Sprachtexte modifizieren
o Reaktionen auf Gespraeche allgemein
Das Ereignis ET_COMM (#include <living/comm.h>):
E_COMM_VERB
E_COMM_FLAGS
C_LEADING_VIC Opferreferenz mit '>' erlaubt
C_VIC_NEEDED Opferreferenz benoetigt
C_VIC_ALLOWED Opferreferenz erlaubt
C_DOTTED_ADV Adjektiv mit ":: " erlaubt
C_ADV_ALLOWED Adjektiv erlaubt
C_SVIC_ALLOWED Spezialopfer zB "." erlaubt
C_REMOTE_VIC Opfer in der Ferne erlaubt
C_ALLOW_ALL 'alle' als Opfer erlaubt
C_ALLOW_INTER Intermudopfer erlaubt
C_NO_OTHER_TXT Keinen Text an andere anhaengen
C_ME_WIZ Aktor ist Magier
C_IS_REMOTE Ereignis ist nicht raumbasiert
C_IS_INTER Intermudopfer
C_ME_GHOST Aktor ist Geist
C_ALL Opfer ist 'alle'
C_FROM_INTER Das Ereignis stammt aus dem Intermud
E_ACTOR
E_COMM_VICTIM
E_COMM_TEXT ({ C_TEXT_ADVERB,
C_TEXT_SELF, C_TEXT_OTHER,
C_PRE_SELF, C_PRE_VICT, C_PRE_OTHER })
Funktionen:
===========
* varargs int Message(string msg, string myverb)
Funktion muss erhalten bleiben, da ggf von Objekten benutzt (pruefen!).
Fuer ein besseres Ignore-System braucht man jedoch mehr Infos als nur
myverb. Und zwar sind der Name des Aktors, der Name der Aktion sowie
ggf der generelle Name zu uebergeben. Letzterer fuer generische Sachen
wie 'ignoriere herzquest' oder so.
Das 2. Argument sollte also in ein Array aus 3 Strings gewandelt werden.
* static int check_deaf(object ob)
Wird das wirklich benutzt? Sollte durch cannothear ersetzt werden!
* public int AddCommHook(object ob, mixed fun, int meth)
* public int RemoveCommHook(object ob)
Sollte wegfallen, wird es benutzt? Dann Ummapper schreiben.
Verben:
=======
sag[e] [adv::] <text> "sage"
sag[e] > <wem> [adv::] <text> "sage"
' [adv::] <text> "sage"
> <wem> [adv::] <text> "sage"
ruf[e] [adv::] <text> "rufe
ruf[e] > <wem> [adv::] <text> "rufe
mruf[e] [adv::] <text> "mrufe
erzaehl[e] <wem> [adv::] <text> (wem [.*]) "erzaehle"
teil[e] <wem> [adv] mit <text> (wem [.*]) "erzaehle"
teil[e] <wem> mit [adv::] <text> (wem [.*]) "erzaehle"
erzaehl[e] ? <kein Event>
teil[e] ? mit <kein Event>
fluester[e] zu <wem> [adv::] <text> "fluestere"
fluester[e] <wem> [adv] zu <text> "fluestere"
fluester[e] > <wem> [adv::] <text> "fluestere"
fluester[e] [adv::] <text> "fluestere"
antworte [wem] [adv::] <text> "antworte"
frag[e] [wen] [adv::] <text> "frage"
gespraech -> wird zu 'sage' oder 'erzaehle' je nach Situation
emote "emote"
: "emote"
gemote "gemote"
; "gemote"
illusion "illusion"
. "illusion"
kobold
ignoriere
oropax
Das '>' muss immer direkt vor dem Namen stehen, also '>fiona'.
|