blob: 3e15aef3efca3c01174cb9e8f2d2e706a28759c0 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001P_ATTACK_BUSY
2=============
3
4NAME
5----
6::
7
8 P_ATTACK_BUSY "attack_busy"
9
10DEFINIERT IN
11------------
12::
13
14 /sys/living/combat.h
15
16BESCHREIBUNG
17------------
18::
19
20 Ueber diese Property kann festgestellt werden, ob ein Spieler noch
21 Spezialwaffen (zB Flammenkugel) einsetzen kann.
22
23
24
25 Ist der Wert bei Abfrage ungleich 0, dann darf der Spieler in dieser
26 Runde keine Aktion mehr durchfuehren. Mit SetProp(P_ATTACK_BUSY, 1)
27 wird eine Aktion verbraucht.
28
29 Intern wird relativ fein gerechnet, ein SetProp(P_ATTACK_BUSY, x)
30 wird in das Abziehen von x*100 Punkten umgerechnet. Der Wert freier
31 Aktionen pro Runde berechnet sich wie folgt:
32
33
34
35 Spieler: 100 + QuerySkillAttribute(SA_SPEED)
36 Seher: Spieler + 200 + QueryProp(P_LEVEL)
37
38 Das Maximum liegt bei 500.
39 Damit betraegt die Anzahl der moeglichen Aktionen pro Runde: Wert/100,
40 also maximal 5 Aktionen pro Runde.
41
42 Zaubersprueche zaehlen im Normalfall auch als eine Aktion.
43
44BEMERKUNGEN
45-----------
46::
47
48 Benutzt man P_ATTACK_BUSY fuer eine sich nicht sofort verbrauchende
49 Sache, kann ein Seher dieses Objekt im Normalfall dreimal pro Runde
50 benutzen. Wenn ungewollt, muss das ueber einen Zeitmarker selbst
51 verhindert werden.
52
53
54
55BEISPIELE
56---------
57::
58
59 (Code eines Objektes ist in
60 /doc/beispiele/testobjekte/attack_busy_sensitive_testobj.c)
61 // einfacher Test auf ATTACK_BUSY und anschliessendes Setzen
62 if (this_player()->QueryProp(P_ATTACK_BUSY)) {
63 write("Du hast dafuer momentan einfach nicht mehr die Puste.\n");
64 return 1;
65 }
66 this_player()->SetProp(P_ATTACK_BUSY, 1);
67
687. Mar 2011 Gloinson
69