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