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

