
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
