NotifyDestruct()

FUNKTION:
     public int|string NotifyRemove(object zerstoerer);

ARGUMENTE:
     zerstoerer
          Das Objekt, welches destruct() auf dieses Objekt anwendet.

BESCHREIBUNG:
     Diese Funktion wird vom Master der Mudlib in jedem Objekt gerufen,
     welches zerstoert wird, um Objekten eine letzte Chance zu geben, sich
     aufzuraeumen.
     Wenn ihr diese Funktion selber definiert, achtet bittet darauf, dass sie
     in keinem Fall Fehler ausloesen sollte, d.h. testet entsprechend
     gruendlich.
     Wenn ihr aus /std/ erbt und diese Funktion ueberschreibt,, _muesst_ ihr
     die geerbte NotifyDestruct() aufrufen, da sonst das Lichtsystem nicht
     aktualisiert wird.

     Privilegierte Objekte (z.B. Root-Objekte, spezielle Ausnahmen wie der
     Netztotenraum, Armageddon) koennen die Zerstoerung in letzter Sekunde
     verhindern, indem sie hier einen Wert != 0 zurueckliefern. Wird ein
     string zurueckgeliefert, wird dieser die Fehlermeldung des
     prepare_destruct() im Master sein.
     Bei nicht-privilegierten Objekten (also fast alle) ist an dieser Stelle
     _kein_ Abbruch der Zerstoerung moeglich!

RUeCKGABEWERT:
     Der Rueckgabewert muss ein string oder ein int sein. Allerdings wird der
     Master den Rueckgabewert nur fuer privilegierte Objekte auswerten.

BEMERKUNGEN:
     Wie gesagt, bitte keine Fehler ausloesen (auch wenn der Master
     grundsaetzlich damit klar kommt). Speziell ist ein raise_error() zur
     Verhinderung eines destructs nutzlos.
     Bitte macht in dieser Funkion nur das, was _unbedingt_ notwendig ist.
     Wenn jemand ein destruct() anwendet statt ein remove() zu rufen, hat das
     in der Regel einen Grund (z.B. um buggende remove() zu umgehen). Insb.
     ist ein save_object() in remove() und NotifyDestruct() vollstaendig
     ueberfluessig.

SIEHE AUCH:
    NotifyLeave(), NotifyInsert(), NotifyRemove()

----------------------------------------------------------------------------
Last modified: 25.02.2009, Zesstra
