P_ATTACK_BUSY
*************


NAME
====

   P_ATTACK_BUSY                 "attack_busy"


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

   /sys/living/combat.h


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

   Ueber diese Property kann festgestellt werden, ob ein Spieler noch
   Spezialwaffen (zB Flammenkugel) einsetzen kann.



   Ist der Wert bei Abfrage ungleich 0, dann darf der Spieler in dieser
   Runde keine Aktion mehr durchfuehren. Mit SetProp(P_ATTACK_BUSY, 1)
   wird eine Aktion verbraucht.

   Intern wird relativ fein gerechnet, ein SetProp(P_ATTACK_BUSY, x)
   wird in das Abziehen von x*100 Punkten umgerechnet. Der Wert freier
   Aktionen pro Runde berechnet sich wie folgt:



   Spieler: 100 + QuerySkillAttribute(SA_SPEED)
   Seher:   Spieler + 200 + QueryProp(P_LEVEL)

   Das Maximum liegt bei 500.
   Damit betraegt die Anzahl der moeglichen Aktionen pro Runde: Wert/100,
   also maximal 5 Aktionen pro Runde.

   Zaubersprueche zaehlen im Normalfall auch als eine Aktion.


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

   Benutzt man P_ATTACK_BUSY fuer eine sich nicht sofort verbrauchende
   Sache, kann ein Seher dieses Objekt im Normalfall dreimal pro Runde
   benutzen. Wenn ungewollt, muss das ueber einen Zeitmarker selbst
   verhindert werden.


BEISPIELE
=========

   (Code eines Objektes ist in
    /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c)
   // einfacher Test auf ATTACK_BUSY und anschliessendes Setzen
   if (this_player()->QueryProp(P_ATTACK_BUSY)) {
     write("Du hast dafuer momentan einfach nicht mehr die Puste.\n");
     return 1;
   }
   this_player()->SetProp(P_ATTACK_BUSY, 1);

7. Mar 2011 Gloinson
