blob: 77c53ae4161437be62d25c407279555d81006f4e [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001die()
2=====
3
4FUNKTION
5--------
Zesstra18626972017-01-31 10:38:27 +01006
Bugfix75289ab2019-03-17 20:11:08 +01007 public varargs void die(int poisondeath,int extern);
Zesstra18626972017-01-31 10:38:27 +01008
9DEFINIERT IN
10------------
Zesstra18626972017-01-31 10:38:27 +010011
Bugfix75289ab2019-03-17 20:11:08 +010012 /std/living/life.c
Zesstra18626972017-01-31 10:38:27 +010013
14ARGUMENTE
15---------
Zesstra18626972017-01-31 10:38:27 +010016
Bugfix75289ab2019-03-17 20:11:08 +010017 poisondeath
18 Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein.
19 extern
Bugfix56197db2019-03-17 20:38:05 +010020 Ex- oder interner Aufruf.
Zesstra18626972017-01-31 10:38:27 +010021
22BESCHREIBUNG
23------------
Zesstra18626972017-01-31 10:38:27 +010024
Bugfix75289ab2019-03-17 20:11:08 +010025 Das Lebewesen stirbt, meist automatisch von do_damage() ausgeloest, wenn
26 0 HP unterschritten werden. In diesem Fall wird der Kampf beendet, Gift,
27 Alkohol, Trink- und Esswerte, Blindheit, Taubheit u.s.w. auf Null
28 gesetzt oder geloescht.
Zesstra18626972017-01-31 10:38:27 +010029
Bugfix75289ab2019-03-17 20:11:08 +010030 Es wird automatisch eine Leiche (siehe auch P_CORPSE, P_NOCORPSE) nebst
31 Todesmeldungen (siehe auch P_DIE_MSG) erzeugt, und fuer Spieler werden
32 Killstupse vergeben, sofern notwendig.
Zesstra18626972017-01-31 10:38:27 +010033
Bugfix56197db2019-03-17 20:38:05 +010034 Ueber den Hook H_HOOK_DIE kann man jedoch auf den Automatismus
Bugfix75289ab2019-03-17 20:11:08 +010035 Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das
36 Sterben fuer kurze Zeit verhindern.
Zesstra18626972017-01-31 10:38:27 +010037
38RUeCKGABEWERT
39-------------
Zesstra18626972017-01-31 10:38:27 +010040
Bugfix75289ab2019-03-17 20:11:08 +010041 keiner
Zesstra18626972017-01-31 10:38:27 +010042
43BEMERKUNGEN
44-----------
Zesstra18626972017-01-31 10:38:27 +010045
Bugfix75289ab2019-03-17 20:11:08 +010046 Diese Funktion sollte nur selten direkt verwendet werden. Meist ist der
47 uebliche Weg ueber Defend() -> do_damage() -> die() die logisch bessere
48 und balancetechnisch guenstigere Loesung.
Zesstra18626972017-01-31 10:38:27 +010049
Bugfix56197db2019-03-17 20:38:05 +010050 Diese Funktion sollte nur ueberschrieben werden, wenn tatsaechlich einfluss
51 auf das Sterben genommen werden soll. Wird nur ein Item hinzugefuegt, ist
52 es sinnvoller :doc:`second_life` zu verwenden.
53
54 Wird die() ueberschrieben, sollte man nicht nur das Argument extern
55 uebergeben, sondern mit extern_call() verodern (siehe Beispiel), weil das
56 geerbte die() den externen Aufruf nicht mehr erkennen kann.
57
58BEISPIEL
59--------
60
61.. code-block:: pike
62
63 public varargs void die(int poisondeath, int extern)
64 {
65 // Dieser NPC soll nicht an Gift sterben.
66 if(poisondeath) return;
67
68 // Das geerbte die() aufrufen, dabei die Argumente uebergeben und ggf.
69 // extern setzen.
70 ::die(poisondeath, extern||extern_call());
71 }
72
Zesstra18626972017-01-31 10:38:27 +010073SIEHE AUCH
74----------
Zesstra18626972017-01-31 10:38:27 +010075
Bugfix56197db2019-03-17 20:38:05 +010076 :doc:`Defend`, :doc:`do_damage`, :doc:`second_life`, :doc:`../props/P_POISON`,
77 :doc:`../props/P_DEADS`,
Bugfix75289ab2019-03-17 20:11:08 +010078 :doc:`../props/P_KILL_NAME`, :doc:`../props/P_KILL_MSG`,
79 :doc:`../props/P_MURDER_MSG`, :doc:`../props/P_DIE_MSG`,
80 :doc:`../props/P_ZAP_MSG`, :doc:`../props/P_ENEMY_DEATH_SEQUENCE`,
Bugfix56197db2019-03-17 20:38:05 +010081 :doc:`../props/P_CORPSE`, :doc:`../props/P_NOCORPSE`,
82 extern_call,
83 /std/corpse, /std/hooks
Zesstra18626972017-01-31 10:38:27 +010084
85
Bugfix56197db2019-03-17 20:38:05 +010086Letzte Aenderung: 17.03.2019, Bugfix