
DoDecay()
*********


FUNKTION
========

   public  int    DoDecay(int silent)


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

   /std/unit.c


ARGUMENTE
=========

   silent (int)
     Falls != 0, erfolgt beim Zerfall keine Meldung, d.h. doDecayMessaage()
     wird nicht gerufen.


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

   Die Funktion gibt die nach dem Zerfall noch uebrig gebliebene Menge
   zurueck (int).


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

   Diese Funktion wird in Clones von Unitobjekten aus der Blueprint gerufen,
   wenn ein Zerfallsintervall abgelaufen ist (natuerlich nur, wenn in der BP
   der Zerfall konfiguriert ist).
   Die Funktion prueft normalerweise via P_UNIT_DECAY_FLAGS, ob der Zerfall
   stattfinden soll, bestimmt aus P_UNIT_DECAY_QUOTA die zu zerfallende
   Menge, ruft DoDecayMessage() und reduziert P_AMOUNT.



   Sie kann auch von Hand gerufen werden, um einen Zerfall auszuloesen, auch
   wenn mir gerade nicht einfaellt, in welchen Situationen das sinnvoll
   waere (vielleicht als Spruchmisserfolg. *g*)


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

   Wenn man einen anderen Zerfallsmechanismus haben, will muss man diese
   Funktion wohl ueberschreiben. In fast allen Faellen sollte dies jedoch
   unnoetig sein. Hat jemand das Verlangen, diese Funktion zu
   ueberschreiben, ist vielleicht vorher eine Diskussion mit dem Mudlib-EM
   angebracht.


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

   unit
   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_QUOTA,
   P_UNIT_DECAY_MIN
   DoDecayMessage()
   /std/unit.c

14.10.2007, Zesstra
