P_UNIT_DECAY_FLAGS
******************


NAME
====

   P_UNIT_DECAY_FLAGS                                 "unit_decay_flags"


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

   /sys/unit.h


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

   Mit dieser Prop kann das Zerfallsverhalten gesteuert werden, entweder
   fuer alle Clones durch Setzen in der Blueprint oder fuer einzelne Clones.

   In dieser Prop koennen momentan 4 Flags gesetzt werden:
   - NO_DECAY:
        Zerfall ist abgeschaltet.
   - NO_DECAY_UNTIL_MOVE:
        Der Zerfall ist solange ausgesetzt, bis dieses Objekt in ein anderes
        Env bewegt wird. Setzt also ein NPC beim AddItem() diese Prop,
        zerfaellt seine Unit nicht, bis sie bewegt wurde (Leiche, Spieler
        etc.). Hierbei zaehlt das move() nicht, wenn das Objekt noch kein
        Env hatte, es zaehlen nur Moves von einem Env in ein anderes Env.
        Dieses Flag sollte nur in Clones gesetzt werden.
   - INACCURATE_DECAY
        Sollen z.b. 45.34 Einheiten zerfallen, wird der Rest von 0.34
        normalerweise als Wahrscheinlichkeit aufgefasst, dass eine
        zusaetzliche Einheit zerfaellt. Dieses Flag sorgt dafuer, dass
        dieser Rest weggeworfen wird und einfach 45 Einheiten zerfallen.
        Gleichzeitig wird bei diesem Flag aber _immer min_ 1 Einheit
        zerstoert!
   - ABSOLUTE_DECAY
        P_UNIT_DECAY_QUOTA wird nicht als prozentualer Anteil aufgefasst,
        sondern als absolute Zahl, d.h. es zerfallen immer einfach
        P_UNIT_DECAY_QUOTA Einheiten.

   Diese Flags koennen z.B. genutzt werden, den Zerfall fuer einzelne
   Objekte temporaer oder dauerhaft abzuschalten, auch wenn alle anderen
   Clones weiterzerfallen.

   Diese Prop kann in der Blueprint gesetzt werden. In diesem Fall wird
   allerdings NO_DECAY_UNTIL_MOVE ignoriert, weil die BP ja nie bewegt
   wuerde. NO_DECAY in der BP schaltet den Zerfallsprozess (temporaer) fuer
   alle Clones aus. Ist nie ein Zerfall gewuenscht, sollte in der Blueprint
   aber besser P_UNIT_DECAY_INTERVAL auf 0 gesetzt werden!

   Ist die Prop in einem einzelnen Clone nicht explizit gesetzt,
   liefert ein klon->QueryProp(P_UNIT_DECAY_FLAGS) den in der Blueprint
   eingestellten Wert zurueck.


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

   * Setzt man diese Prop in einem Clone auf 0, wird der Wert aus der
     Blueprint zurueckgeben. Hierbei wird allerdings ein NO_DECAY_UNTIL_MOVE
     ausgefiltert, da dies den Zerfall fuer alle Objekte dauerhaft stoppen
     wuerde, weil BPs nicht bewegt werden.
   * Die Flags koennen "verodert" werden:
     SetProp(P_UNIT_DECAY_FLAGS, NO_DECAY_UNTIL_MOVE | ABSOLUTE_DECAY);


BEISPIEL
========

   // Dieser NPC hat tolle Pfeile, die sollen aber nicht zerfallen, solange
   // sie im Inventar des NPCs sind:
   AddItem("/d/tolleregion/tollermagier/obj/pfeile", REFRESH_NONE,
       ([ P_AMOUNT: 50+random(50),
          P_UNIT_DECAY_FLAGS: NO_DECAY_UNTIL_MOVE ]) );


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

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

14.10.2007, Zesstra
