blob: b8ee872319db3ee37be193430cee39939de6fd87 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002die()
Zesstra953f9972017-02-18 15:37:36 +01003*****
MG Mud User88f12472016-06-24 23:31:02 +02004
MG Mud User88f12472016-06-24 23:31:02 +02005
Zesstra953f9972017-02-18 15:37:36 +01006FUNKTION
7========
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 public varargs void die(int poisondeath,int extern);
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
MG Mud User88f12472016-06-24 23:31:02 +020014
Zesstra953f9972017-02-18 15:37:36 +010015 /std/living/life.c
MG Mud User88f12472016-06-24 23:31:02 +020016
MG Mud User88f12472016-06-24 23:31:02 +020017
Zesstra953f9972017-02-18 15:37:36 +010018ARGUMENTE
19=========
MG Mud User88f12472016-06-24 23:31:02 +020020
Zesstra70ea4242019-06-27 20:51:52 +020021 poisondeath
22 Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein.
23
24 extern
25 Ex- oder interner Aufruf.
MG Mud User88f12472016-06-24 23:31:02 +020026
Zesstra953f9972017-02-18 15:37:36 +010027
28BESCHREIBUNG
29============
30
Zesstra70ea4242019-06-27 20:51:52 +020031 Das Lebewesen stirbt, meist automatisch von do_damage() ausgeloest,
32 wenn 0 HP unterschritten werden. In diesem Fall wird der Kampf
33 beendet, Gift, Alkohol, Trink- und Esswerte, Blindheit, Taubheit
34 u.s.w. auf Null gesetzt oder geloescht.
Zesstra953f9972017-02-18 15:37:36 +010035
Zesstra70ea4242019-06-27 20:51:52 +020036 Es wird automatisch eine Leiche (siehe auch P_CORPSE, P_NOCORPSE)
37 nebst Todesmeldungen (siehe auch P_DIE_MSG) erzeugt, und fuer
38 Spieler werden Killstupse vergeben, sofern notwendig.
Zesstra953f9972017-02-18 15:37:36 +010039
Zesstra70ea4242019-06-27 20:51:52 +020040 Ueber den Hook H_HOOK_DIE kann man jedoch auf den Automatismus
Zesstra953f9972017-02-18 15:37:36 +010041 Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das
42 Sterben fuer kurze Zeit verhindern.
43
44
45RUeCKGABEWERT
46=============
47
48 keiner
49
50
51BEMERKUNGEN
52===========
53
Zesstra70ea4242019-06-27 20:51:52 +020054 Diese Funktion sollte nur selten direkt verwendet werden. Meist ist
55 der uebliche Weg ueber Defend() -> do_damage() -> die() die logisch
56 bessere und balancetechnisch guenstigere Loesung.
57
58 Diese Funktion sollte nur ueberschrieben werden, wenn tatsaechlich
59 einfluss auf das Sterben genommen werden soll. Wird nur ein Item
60 hinzugefuegt, ist es sinnvoller second_life() zu verwenden.
61
62 Wird die() ueberschrieben, sollte man nicht nur das Argument extern
63 uebergeben, sondern mit extern_call() verodern (siehe Beispiel),
64 weil das geerbte die() den externen Aufruf nicht mehr erkennen
65 kann.
66
67
68BEISPIEL
69========
70
71 public varargs void die(int poisondeath, int extern)
72 {
73 // Dieser NPC soll nicht an Gift sterben.
74 if(poisondeath) return;
75
76 // Das geerbte die() aufrufen, dabei die Argumente uebergeben und ggf.
77 // extern setzen.
78 ::die(poisondeath, extern||extern_call());
79 }
Zesstra953f9972017-02-18 15:37:36 +010080
81
82SIEHE AUCH
83==========
84
Zesstra70ea4242019-06-27 20:51:52 +020085 Defend(), do_damage(), second_life(), P_POISON, P_DEADS,
86 P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG, P_DIE_MSG, P_ZAP_MSG,
87 P_ENEMY_DEATH_SEQUENCE, P_CORPSE, P_NOCORPSE, extern_call,
88 /std/corpse, /std/hooks
Zesstra953f9972017-02-18 15:37:36 +010089
Zesstra70ea4242019-06-27 20:51:52 +020090Letzte Aenderung: 17.03.2019, Bugfix