P_ENEMY_DEATH_SEQUENCE
**********************


NAME
====

   P_ENEMY_DEATH_SEQUENCE        "enemy_death_sequence"


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

   /sys/living/combat.h


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

   Ueber diese Property kann Einfluss auf die Todessequenz eines getoeten
   Spielers genommen werden. Sie muss im toetenden Objekt, d.h. dem
   Objekt welches die()/do_damage()/Defend() im Spieler gerufen hat,
   gesetzt sein.

   Es gibt folgende gueltige Werte:
   - string: Pfad zu einer eigenen Todessequenz im gueltigen Format
   - mixed*  Eine Todessequenz im Format des Todesraumes:
             ({<int gesamtlaenge>,
               ([<int index1>: <string umgebrochene Meldung1>,
                 <int index2>: <string umgebrochene Meldung2>,
                 ...])
             })
   - mapping In die Standard-Lars-Todessequenz einzufuegende Zeilen:
             ([<int zeitindex>: <string umgebrochener Text>])


BEISPIELE
=========

   // Pfad zu einer eigenen DSQ
   SetProp(P_ENEMY_DEATH_SEQUENCE,  ".../passende_dsq.txt");

   // eigene DSQ im Todesraumformat:
   SetProp(P_ENEMY_DEATH_SEQUENCE,
           ({ 2, ([1: "DU LERNST AUS DEINEM FEHLER.\n"])}));

   // Einfuegen einer Meldung (des NPCs) in die Standard-Todessequenz
   SetProp(P_ENEMY_DEATH_SEQUENCE,
           ([5: "Du hoerst "+name(WEN)+" hoehnisch kichern.\n"]));


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

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

10. Nov 2011 Gloinson
