P_UNIT_DECAY_QUOTA
******************


P_UNIT_DECAY_QUOTA (int)
========================


NAME
====

   P_UNIT_DECAY_QUOTA                                 "unit_decay_quota"


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

   /sys/unit.h


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

   Diese Prop bestimmt, welcher Anteil der einzelnen Unitobjekte pro Zerfall
   zerstoert wird. Dieser Anteil wird als ganze Zahl zwischen 0 und 10000
   ausgedrueckt. 1 entspricht einem Zerfall von 0.01%, 10000 entspricht
   100%.
   Momentan sind keine Werte < 0 zulaessig, die einem Zuwachs entsprechend
   wurden.

   Falls das Flag ABSOLUTE_DECAY (s. P_UNIT_DECAY_FLAGS) gesetzt ist, steht
   die Zahl in dieser Prop fuer die absolute Anzahl an zu zerstoerenden
   Einheiten.

   Die Prop kann in der Blueprint und in den einzelnen Clones gesetzt
   werden.
   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
   liefert ein QueryProp(P_UNIT_DECAY_QUOTA) den in der Blueprint
   eingestellten Wert zurueck und die Unit zerfaellt zu diesem Anteil.
   D.h. man sollte diese Prop in der Blueprint setzen und in einzelnen
   Clones nur soweit diese abweichende Zerfallsraten haben sollen.


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

   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus er
     Blueprint zum Zerfall benutzt.
   * Will man den Zerfall fuer ein bestimmtes Unitobjekt abschalten, sollte
     man P_UNIT_DECAY_FLAGS benutzen.


BEISPIEL
========

   // pro Zerfallsintervall sollen 12% zerfallen.
   SetProp(P_UNIT_DECAY_QUOTA, 1200);


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

   unit
   P_UNIT_DECAY_INTERVAL, P_UNIT_DECAY_FLAGS, P_UNIT_DECAY_MIN
   DoDecay, DoDecayMessage
   /std/unit.c

14.03.2008, Zesstra
