
remove()
********


FUNKTION
========

   varargs int remove(int silent);


DEFINIERT IN
============

   /std/thing/moving.c /std/living/moving.c /std/room/moving.c
   /std/unit.c


ARGUMENTE
=========

   * silent: Falls ungleich 0, so werden beim Zerstoeren keine
     Meldungen ausgegeben.


BESCHREIBUNG
============

   Die meisten Objekte zerstoeren sich durch den Aufruf von remove()
   selbst.

   Unitobjekte reduzieren P_AMOUNT um U_REQ Einheiten. Will man ein
   Unit- Objekt vollstaendig zerstoeren, ist vor dem Aufruf von
   remove() U_REQ auf P_AMOUNT zu setzen. Wird durch remove() P_AMOUNT
   0, wird das Objekt natuerlich zerstoert.

   Durch Ueberladen dieser Funktion kann man diesen Vorgang noch durch
   die Ausgabe von Meldungen kommentieren, oder irgendwelche Daten
   abspeichern, oder das Zerstoeren ganz verhindern (auf diesem Weg...
   Mit destruct() kann das Objekt immer noch direkt zerstoert werden!)

   ACHTUNG: Wenn ein Objekt durch remove() nicht zerstoert wird,
   koennte das einen Grund haben. Bitte nicht einfach destruct()
   verwenden, das ist nur fuer Notfaelle wie ein buggendes remove().


RUeCKGABEWERT
=============

   1, wenn sich das Objekt erfolgreich selbst zerstoert hat, sonst 0.


BEMERKUNGEN
===========

   Nach einem erfolgreichen ::remove() gelten die selben
   Einschraenkungen wie nach einem destruct()!


SIEHE AUCH
==========

   *../efun/destruct*, U_REQ, P_AMOUNT

Letzte Aenderung: 24.07.2018, Bugfix
