blob: f4008cb32beedbea4e0d2a4ce4cb2a3d96a75625 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
MG Mud User88f12472016-06-24 23:31:02 +02002P_TMP_DIE_HOOK
Zesstra953f9972017-02-18 15:37:36 +01003**************
MG Mud User88f12472016-06-24 23:31:02 +02004
Zesstra953f9972017-02-18 15:37:36 +01005********************* VERALTETE PROPERTY
6****************************** * Diese Property ist veraltet. Bitte
7nicht mehr in neuem Code nutzen. * **********************************
8************************************* P_TMP_DIE_HOOK
MG Mud User88f12472016-06-24 23:31:02 +02009
MG Mud User88f12472016-06-24 23:31:02 +020010
Zesstra953f9972017-02-18 15:37:36 +010011NAME
12====
MG Mud User88f12472016-06-24 23:31:02 +020013
Zesstra953f9972017-02-18 15:37:36 +010014 P_TMP_DIE_HOOK "die_hook"
MG Mud User88f12472016-06-24 23:31:02 +020015
MG Mud User88f12472016-06-24 23:31:02 +020016
Zesstra953f9972017-02-18 15:37:36 +010017DEFINIERT IN
18============
MG Mud User88f12472016-06-24 23:31:02 +020019
Zesstra953f9972017-02-18 15:37:36 +010020 /sys/new_skills.h
MG Mud User88f12472016-06-24 23:31:02 +020021
MG Mud User88f12472016-06-24 23:31:02 +020022
Zesstra953f9972017-02-18 15:37:36 +010023BESCHREIBUNG
24============
MG Mud User88f12472016-06-24 23:31:02 +020025
Zesstra953f9972017-02-18 15:37:36 +010026 Mittels dieser Property kann der Tod eines Livings abgewendet werden.
MG Mud User88f12472016-06-24 23:31:02 +020027
Zesstra953f9972017-02-18 15:37:36 +010028 Es wird an dem Living die Property als mindestens 3-elementiges Array
29 ({zeitpunkt, objekt, methode, ...})
30 gesetzt und die Methode 'methode' wird dann waehrend des die() des
31 Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'.
32 Bei Geistern wird der Hook nicht gerufen.
MG Mud User88f12472016-06-24 23:31:02 +020033
Zesstra953f9972017-02-18 15:37:36 +010034 Der Methode wird ein int uebergeben, ob das Living Opfer von Gift
35 (P_POISON) war.
MG Mud User88f12472016-06-24 23:31:02 +020036
Zesstra953f9972017-02-18 15:37:36 +010037 Gibt die Funktion einen Wert != 0 zurueck, wird die() sofort abgebrochen
38 und das Living stirbt nicht.
39
40
41BEMERKUNGEN
42===========
43
44 - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen.
45 - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die
46 Property auf 0 gesetzt
47 - vor dem Setzen immer auf die Existenz eines gueltigen Hooks
48 pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern
49 im Code anderer und ist andererseits unfair gegenueber ihnen
50
51
52BEISPIELE
53=========
54
55 *** ein besonderer Giftschutz .. wirkt beim Tod ***
56 // pruefen, ob nicht ein anderer Modifier existiert
57 if(!pointerp(tmp=TP->QueryProp(P_TMP_DIE_HOOK)) ||
58 sizeof(tmp)<3 || tmp[0]<=time()) {
59 TP->SetProp(P_TMP_DIE_HOOK,
60 ({time()+120+random(10), this_object(), "prevent_die"}));
61
62 // die gerufene Methode
63 int prevent_die(int poison) {
64 int ret;
65
66 if(poison) {
67 tell_object(previous_object(),
68 "Ein Zauber reinigt im Moment des Todes dein Blut!\n");
69 tell_object(environment(previous_object()),
70 previous_object()->Name(WER,1)+" wird von Lichtern umhuellt.\n",
71 ({previous_object()}));
72
73 ret=1;
MG Mud User88f12472016-06-24 23:31:02 +020074 }
75
Zesstra953f9972017-02-18 15:37:36 +010076 // wir helfen nur einmal ... und ein Tod vernichtet die Hilfe auch
77 previous_object()->SetProp(P_TMP_DIE_HOOK, 0);
78
79 return ret;
80 }
81
82
83SIEHE AUCH
84==========
85
86 Tod: die(L)
87 Sonstiges: P_POISON, P_KILLS, P_GHOST
88 Hooks: P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK, P_TMP_DEFEND_HOOK
89 neue Hooks: std/hooks
MG Mud User88f12472016-06-24 23:31:02 +020090
9108.12.2008, Zesstra