blob: 859a316f24e18841911e6d4c4c5842e7e38b9849 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001die()
Zesstra953f9972017-02-18 15:37:36 +01002*****
MG Mud User88f12472016-06-24 23:31:02 +02003
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005FUNKTION
6========
MG Mud User88f12472016-06-24 23:31:02 +02007
Zesstra953f9972017-02-18 15:37:36 +01008 public varargs void die(int poisondeath,int extern);
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011DEFINIERT IN
12============
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 /std/living/life.c
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017ARGUMENTE
18=========
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra70ea4242019-06-27 20:51:52 +020020 poisondeath
21 Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein.
22
23 extern
24 Ex- oder interner Aufruf.
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstra953f9972017-02-18 15:37:36 +010026
27BESCHREIBUNG
28============
29
Zesstra70ea4242019-06-27 20:51:52 +020030 Das Lebewesen stirbt, meist automatisch von do_damage() ausgeloest,
31 wenn 0 HP unterschritten werden. In diesem Fall wird der Kampf
32 beendet, Gift, Alkohol, Trink- und Esswerte, Blindheit, Taubheit
33 u.s.w. auf Null gesetzt oder geloescht.
Zesstra953f9972017-02-18 15:37:36 +010034
Zesstra70ea4242019-06-27 20:51:52 +020035 Es wird automatisch eine Leiche (siehe auch P_CORPSE, P_NOCORPSE)
36 nebst Todesmeldungen (siehe auch P_DIE_MSG) erzeugt, und fuer
37 Spieler werden Killstupse vergeben, sofern notwendig.
Zesstra953f9972017-02-18 15:37:36 +010038
Zesstra70ea4242019-06-27 20:51:52 +020039 Ueber den Hook H_HOOK_DIE kann man jedoch auf den Automatismus
Zesstra953f9972017-02-18 15:37:36 +010040 Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das
41 Sterben fuer kurze Zeit verhindern.
42
43
44RUeCKGABEWERT
45=============
46
47 keiner
48
49
50BEMERKUNGEN
51===========
52
Zesstra70ea4242019-06-27 20:51:52 +020053 Diese Funktion sollte nur selten direkt verwendet werden. Meist ist
54 der uebliche Weg ueber Defend() -> do_damage() -> die() die logisch
55 bessere und balancetechnisch guenstigere Loesung.
56
57 Diese Funktion sollte nur ueberschrieben werden, wenn tatsaechlich
58 einfluss auf das Sterben genommen werden soll. Wird nur ein Item
59 hinzugefuegt, ist es sinnvoller second_life() zu verwenden.
60
61 Wird die() ueberschrieben, sollte man nicht nur das Argument extern
62 uebergeben, sondern mit extern_call() verodern (siehe Beispiel),
63 weil das geerbte die() den externen Aufruf nicht mehr erkennen
64 kann.
65
66
67BEISPIEL
68========
69
70 public varargs void die(int poisondeath, int extern)
71 {
72 // Dieser NPC soll nicht an Gift sterben.
73 if(poisondeath) return;
74
75 // Das geerbte die() aufrufen, dabei die Argumente uebergeben und ggf.
76 // extern setzen.
77 ::die(poisondeath, extern||extern_call());
78 }
Zesstra953f9972017-02-18 15:37:36 +010079
80
81SIEHE AUCH
82==========
83
Zesstra70ea4242019-06-27 20:51:52 +020084 Defend(), do_damage(), second_life(), P_POISON, P_DEADS,
85 P_KILL_NAME, P_KILL_MSG, P_MURDER_MSG, P_DIE_MSG, P_ZAP_MSG,
86 P_ENEMY_DEATH_SEQUENCE, P_CORPSE, P_NOCORPSE, extern_call,
87 /std/corpse, /std/hooks
Zesstra953f9972017-02-18 15:37:36 +010088
Zesstra70ea4242019-06-27 20:51:52 +020089Letzte Aenderung: 17.03.2019, Bugfix