
P_DISABLE_ATTACK
****************


NAME
====

   P_DISABLE_ATTACK              "disable_attack"


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

   /sys/properties.h


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

   Das Lebewesen kann nicht angreifen. Beim Setzen der Property ist es
   wichtig, SetProp() zu benutzen und die Anzahl der Kampfrunden anzugeben,
   die das Lebewesen paralysiert sein soll.

   Ein negativer Wert ist nicht gueltig. Bei mehr als 30 Kampfrunden wird
   die Paralyse auf 30 Kampfrunden gekappt.

   Fuer jede Paralyse bekommt ein Living eine ebenso lange Schutzzeit nach
   der Paralyse gewaehrt. Versucht man, vor Ablauf der Paralyse
   P_DISABLE_ATTACK hoeher zu setzen (oder setzt man innerhalb der folgenden
   Schutzzeit P_DISABLE_ATTACK auf > 0), wird DISABLE_TOO_EARLY von SetProp
   zurueck gegeben.
   Eine Reduktion von einem P_DISABLE_ATTACK ist moeglich, allerdings
   reduziert dies _nicht_ eine einmal gesetzte Schutzzeit.

   Einen Gegner,der nie paralysiert werden koennen soll, kann man einfach
   per

   Set(P_DISABLE_ATTACK, function int () {return 0;}, F_SET_METHOD);

   erstellen, da bei diesem der Wert von P_DISABLE_ATTACK nicht mehr mit
   einem normalen SetProp()-Aufruf geaendert werden kann.


BEISPIELE
=========

   // Gegner 17 Runden lang paralysieren, ohne Ruecksicht auf fruehere P.
   // (in diesem Moment ist das Living bis time() + 4 * 17 vor laengerer
   //  oder erneuter Paralyse geschuetzt)
   en->SetProp(P_DISABLE_ATTACK, 17);
   // Der Gegner kann jetzt fuer 34 Kampfrunden nicht erneut paralysiert
   // werden.
   // Paralyse reduzieren auf 10 Kampfrunden
   en->SetProp(P_DISABLE_ATTACK, 10);
   // Die Schutzzeit ist immer noch bei 34 Kampfrunden, nicht bei 20.


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

   P_NEXT_DISABLE_ATTACK

19.08.2014, Zesstra
