P_DEATH_MSG
***********


DEFINIERT IN
============

   /sys/living/combat.h


BESCHREIBUNG
============

   In dieser Property kann man ein Array ablegen, das beim Tod eines
   Spielers ausgewertet und der darin enthaltene String
   anschliessend auf dem Todeskanal gesendet wird.
   Der Array muss folgenden Aufbau haben:

     SetProp( P_DEATH_MSG, ({ Text, Flag }) )



   Text: Der Text kann beliebig eingegeben werde. Allerdings darf
         er nicht mit einem '\n' abgeschlossen werden.



   Flag: Hier kann man drei Arten von Sendemethoden waehlen.
         1. MSG_SAY      Normales Senden
         2. MSG_GEMOTE   Genitiv-Emote
         3. MSG_EMOTE    Emote


BEISPIEL
========

   Der Spieler soll direkt nach seinem Tod eine Meldung auf dem
   Todeskanal senden.



   Nachricht auf dem Todes-Kanal:



   [Tod:Spieler] Ich will keine Beleidsbekundungen!



   void spieler_stirbt()
   {
    this_player()->SetProp( P_DEATH_MSG, ({ "Ich will keine "
                                   "Beleidsbekundungen!", MSG_SAY}) );
    this_player()->die();
   }



   Nachricht auf dem Todes-Kanal:



   [Tod:Spieler liebt es zu sterben.]



   void spieler_stirbt()
   {
    this_player()->SetProp( P_DEATH_MSG, ({ "liebt es zu sterben.",
                                            MSG_EMOTE }) );
    this_player()->die();
   }


SIEHE AUCH
==========

   P_MURDER_MSG, P_FORCE_MURDER_MSG
