| P_TMP_DIE_HOOK |
| ************** |
| |
| ********************* VERALTETE PROPERTY |
| ****************************** * Diese Property ist veraltet. Bitte |
| nicht mehr in neuem Code nutzen. * ********************************** |
| ************************************* P_TMP_DIE_HOOK |
| |
| |
| NAME |
| ==== |
| |
| P_TMP_DIE_HOOK "die_hook" |
| |
| |
| DEFINIERT IN |
| ============ |
| |
| /sys/new_skills.h |
| |
| |
| BESCHREIBUNG |
| ============ |
| |
| Mittels dieser Property kann der Tod eines Livings abgewendet werden. |
| |
| Es wird an dem Living die Property als mindestens 3-elementiges Array |
| ({zeitpunkt, objekt, methode, ...}) |
| gesetzt und die Methode 'methode' wird dann waehrend des die() des |
| Lebewesens in 'objekt' aufgerufen, solange time()<'zeitpunkt'. |
| Bei Geistern wird der Hook nicht gerufen. |
| |
| Der Methode wird ein int uebergeben, ob das Living Opfer von Gift |
| (P_POISON) war. |
| |
| Gibt die Funktion einen Wert != 0 zurueck, wird die() sofort abgebrochen |
| und das Living stirbt nicht. |
| |
| |
| BEMERKUNGEN |
| =========== |
| |
| - Bitte das neuere Hooksystem (s. Manpage std/hooks) benutzen. |
| - falls die Zeit abgelaufen oder das Objekt zerstoert ist, wird die |
| Property auf 0 gesetzt |
| - vor dem Setzen immer auf die Existenz eines gueltigen Hooks |
| pruefen, einfaches Ueberschreiben fuehrt einerseits zu Fehlern |
| im Code anderer und ist andererseits unfair gegenueber ihnen |
| |
| |
| BEISPIELE |
| ========= |
| |
| *** ein besonderer Giftschutz .. wirkt beim Tod *** |
| // pruefen, ob nicht ein anderer Modifier existiert |
| if(!pointerp(tmp=TP->QueryProp(P_TMP_DIE_HOOK)) || |
| sizeof(tmp)<3 || tmp[0]<=time()) { |
| TP->SetProp(P_TMP_DIE_HOOK, |
| ({time()+120+random(10), this_object(), "prevent_die"})); |
| |
| // die gerufene Methode |
| int prevent_die(int poison) { |
| int ret; |
| |
| if(poison) { |
| tell_object(previous_object(), |
| "Ein Zauber reinigt im Moment des Todes dein Blut!\n"); |
| tell_object(environment(previous_object()), |
| previous_object()->Name(WER,1)+" wird von Lichtern umhuellt.\n", |
| ({previous_object()})); |
| |
| ret=1; |
| } |
| |
| // wir helfen nur einmal ... und ein Tod vernichtet die Hilfe auch |
| previous_object()->SetProp(P_TMP_DIE_HOOK, 0); |
| |
| return ret; |
| } |
| |
| |
| SIEHE AUCH |
| ========== |
| |
| Tod: die(L) |
| Sonstiges: P_POISON, P_KILLS, P_GHOST |
| Hooks: P_TMP_MOVE_HOOK, P_TMP_ATTACK_HOOK, P_TMP_DEFEND_HOOK |
| neue Hooks: std/hooks |
| |
| 08.12.2008, Zesstra |