Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 1 | die() |
| 2 | ===== |
| 3 | |
| 4 | FUNKTION |
| 5 | -------- |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 6 | |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 7 | public varargs void die(int poisondeath,int extern); |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 8 | |
| 9 | DEFINIERT IN |
| 10 | ------------ |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 11 | |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 12 | /std/living/life.c |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 13 | |
| 14 | ARGUMENTE |
| 15 | --------- |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 16 | |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 17 | poisondeath |
| 18 | Dieses Flag sollte bei einem Gifttod (P_POISON) gesetzt sein. |
| 19 | extern |
Bugfix | 56197db | 2019-03-17 20:38:05 +0100 | [diff] [blame^] | 20 | Ex- oder interner Aufruf. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 21 | |
| 22 | BESCHREIBUNG |
| 23 | ------------ |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 24 | |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 25 | 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. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 29 | |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 30 | 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. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 33 | |
Bugfix | 56197db | 2019-03-17 20:38:05 +0100 | [diff] [blame^] | 34 | Ueber den Hook H_HOOK_DIE kann man jedoch auf den Automatismus |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 35 | Einfluss nehmen, z.B. koennte ein temporaerer Todesbann-Zauber das |
| 36 | Sterben fuer kurze Zeit verhindern. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 37 | |
| 38 | RUeCKGABEWERT |
| 39 | ------------- |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 40 | |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 41 | keiner |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 42 | |
| 43 | BEMERKUNGEN |
| 44 | ----------- |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 45 | |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 46 | 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. |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 49 | |
Bugfix | 56197db | 2019-03-17 20:38:05 +0100 | [diff] [blame^] | 50 | 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 | |
| 58 | BEISPIEL |
| 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 | |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 73 | SIEHE AUCH |
| 74 | ---------- |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 75 | |
Bugfix | 56197db | 2019-03-17 20:38:05 +0100 | [diff] [blame^] | 76 | :doc:`Defend`, :doc:`do_damage`, :doc:`second_life`, :doc:`../props/P_POISON`, |
| 77 | :doc:`../props/P_DEADS`, |
Bugfix | 75289ab | 2019-03-17 20:11:08 +0100 | [diff] [blame] | 78 | :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`, |
Bugfix | 56197db | 2019-03-17 20:38:05 +0100 | [diff] [blame^] | 81 | :doc:`../props/P_CORPSE`, :doc:`../props/P_NOCORPSE`, |
| 82 | extern_call, |
| 83 | /std/corpse, /std/hooks |
Zesstra | 1862697 | 2017-01-31 10:38:27 +0100 | [diff] [blame] | 84 | |
| 85 | |
Bugfix | 56197db | 2019-03-17 20:38:05 +0100 | [diff] [blame^] | 86 | Letzte Aenderung: 17.03.2019, Bugfix |