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
