P_MURDER_MSG
************


NAME
====

   P_MURDER_MSG                       "murder_msg"


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

   /sys/properties.h


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

   In dieser Property kann man einen String oder eine Closure ablegen
   dessen Wert bzw. deren Resultat beim Tod des NPCs auf dem
   Moerder-Kanal erscheint.
   Normalerweise ist die Property nicht gesetzt, woraufhin zufaellig
   eine Meldung generiert wird.

   Ob der Tod eines NPCs auf dem Moerder-Kanal erscheint, haengt davon ab,
   wie oft und welche Art von NPCs in der letzten Zeit getoetet wurden. Zum
   Beispiel ist es eher selten, dass ein schwacher NPC auf dem Kanal
   erscheint, wenn kuerzlich viele starke NPCs getoetet wurden. Allerdings
   kann man auf diese Regelung mittels der Property P_FORCE_MURDER_MSG
   Einfluss nehmen.

   Wird in einen String der Platzhalter %s eingefuegt, so erscheint an der
   Stelle spaeter der Name des Moerders.


BEISPIELE
=========

   // Zum Beispiel koennte man ja bei einer Ratte, die getoetet wird,
   // folgendes auf dem Moerder-Kanal ausgeben lassen:
   SetProp(P_MURDER_MSG,
     "Ratten aller MUDs, vereinigt euch gegen %s!");


   // Um auch mal eine Closure zu zeigen: die Ratte koennte auch ihre
   // Meldung erst bei ihrem Tod erstellen lassen:
   private string moerder_meldung() {
     return ({"Achweh!", "Au!", "Weia!"})[random(3)];
   }

   SetProp(P_MURDER_MSG, #'moerder_meldung);


BEMERKUNGEN
===========

   - P_NOCORPSE:
     Ist in dem NPC die Property P_NOCORPSE gesetzt, so wird die
     Moerdermeldung nicht auf dem Kanal gesendet, da diese Ausgabe ueber
     /std/corpse laeuft.
     Will man dennoch eine Meldung, so sollte man /std/corpse im die()
     selbst clonen, daran Identify(this_object()) rufen und das geclonte
     Objekt wieder entsorgen.

   - Closures:
     Closures bieten sich an, wenn ein zentrales Objekt fuer mehrere NPCs
     bestimmte Moerdermeldungen generieren soll. Dann muss nur noch bei
     den NPCs die Closure, die auf die erstellende Methode zeigt gesetzt
     werden.


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

   Tod:               die(L)
   Verwandt:          P_FORCE_MURDER_MSG
   Todesmeldungen:    P_KILL_NAME, P_KILL_MSG, P_DIE_MSG
                      P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
   Sonstiges:         P_CORPSE, P_NOCORPSE, /std/corpse.c

30. Mai 2006, Gloinson
