P_KILL_MSG

NAME:
	P_KILL_MSG			"kill_msg"

DEFINIERT IN:
	/sys/properties.h

BESCHREIBUNG:
     Wenn ein Spieler getoetet wird, so erscheint dazu eine kurze Information
     auf dem Todeskanal. Um dem toetenden Objekt zusaetzlich die Moeglichkeit
     zu geben, noch etwas mehr auf diesem Kanal auszugeben, kann man in
     dieser Property einen String uebergeben.
     Noetige Zeilenumbrueche werden hierbei automatisch generiert.

     Es ist auch moeglich anzugeben, ob Emotes verwendet werden und ob das
     toetende Objekt ein Plural-Objekt ist. Hierzu uebergibt man ein Array
     der Gestalt:

	({Killmessage,Emotes}) bzw. ({Killmessage,Emotes,PLURAL})

     Der Eintrag <Killmessage> stellt hierbei die Meldung selbst dar, PLURAL
     gibt an, dass es sich um ein Plural-Objekt handelt und <Emotes> kann
     folgende Werte annehmen:

	MSG_SAY    - Meldung wird normal ausgegeben.
	MSG_EMOTE  - Meldung erscheint als Emote.
	MSG_GEMOTE - Meldung erscheint als Genitiv-Emote.
	MSG_EMPTY  - Meldung erscheint ohne zuvorige Angabe des
	               toetenden Objektes.

     Moechte man die Meldung noch etwas "persoenlicher" ;-) gestalten, so
     kann man den Platzhalter %s verwenden. An dessen Stelle wird dann der
     Name des Verblichenen eingesetzt.

BEISPIEL:
     Ein nettes Beispiel ist das folgende: Wenn ein Spieler sich als
     Drachentoeter bewehrt hat, so kann er traditionell in seinem Blut baden.
     Hin und wieder ist jedoch auch der Drache erfolgreich, dem man eine
     lustige Zusatzmeldung fuer den Todeskanal uebergeben kann:

     void create() {
       ::create();
       ...
       SetProp(P_KILL_MSG,"Jetzt bade ich mal in DEINEM Blut, %s!");
       ...
     }


     Falls der 'Killer' ein Plural-Objekt oder -NPC war, koennte eine Meldung
     auch folgendermassen aussehen:

     SetProp(P_KILL_MSG,({"haun sich jetzt die Hucke voll.",
			  MSG_EMOTE,
			  PLURAL}));

     wobei P_KILL_NAME hier natuerlich auf "Eine Menge Orks" oder
     dergleichen gesetzt sein sollte. Auf dem Kanal waere dann dies zu
     lesen:

	[Tod:Lars] Eine Menge Orks haben gerade Orktoeter umgebracht.
	[Tod:Eine Menge Orks haun sich jetzt die Hucke voll.]


     Weiteres Beispiel.
     Man habe einen NPC, dessen Killname als Plural aufzufassen ist, der aber
     keinen zusaetlichen Text auf -Tod bringen soll.

     SetProp(P_NAME, "Eine Horde Gummibaeren");
     SetProp(P_KILL_NAME, "Viele kleine Gummibaeren");
     SetProp(P_KILL_MSG, ({0, 0, 1}));

SIEHE AUCH:
     Tod:		die(L)
     Todesmeldungen:	P_KILL_NAME, P_DIE_MSG, P_MURDER_MSG
			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
     Sonstiges:		P_CORPSE, P_NOCORPSE, /room/death/death_room.c

----------------------------------------------------------------------------
Last modified: Wed Aug 21 14:36:04 2002 by Bambi
