die()

FUNKTION:
     public varargs void die(int poisondeath,int extern);

DEFINIERT IN:
     /std/living/life.c

ARGUMENTE:
     int poisondeath
	  Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein.
     int extern
	  Intern.

BESCHREIBUNG:
     Das Lebewesen stirbt, meist automatisch von do_damage() ausgeloest, wenn
     0 HP unterschritten werden. In diesem Fall wird der Kampf beendet, Gift,
     Alkohol, Trink- und Esswerte, Blindheit, Taubheit u.s.w. auf Null
     gesetzt oder geloescht.

     Es wird automatisch eine Leiche (siehe auch P_CORPSE, P_NOCORPSE) nebst
     Todesmeldungen (siehe auch P_DIE_MSG) erzeugt, und fuer Spieler werden
     Killstupse vergeben, sofern notwendig.

     Ueber den Hook P_TMP_DIE_HOOK kann man jedoch auf den Automatismus
     Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das
     Sterben fuer kurze Zeit verhindern.

RUeCKGABEWERT:
     keiner

BEMERKUNGEN:
     Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
     uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
     und balancetechnisch guenstigere Loesung.

SIEHE AUCH:
     Todesursachen:	Defend(L), do_damage(L), P_POISON
     Verwandt:		P_TMP_DIE_HOOK, P_DEADS
     Todesmeldungen:	P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG, P_DIE_MSG
			P_ZAP_MSG, P_ENEMY_DEATH_SEQUENCE
     Sonstiges:		P_CORPSE, P_NOCORPSE, /std/corpse.c

----------------------------------------------------------------------------
Last modified: Mon May 14 16:20:34 2001 by Patryn
