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
