blob: 50fbeb12a735fc64d57898b0839daef536c45662 [file] [log] [blame]
Zesstra18626972017-01-31 10:38:27 +01001P_EFFECTIVE_AC
2==============
3
4NAME
5----
6::
7
8 P_EFFECTIVE_AC "effective_ac"
9
10DEFINIERT IN
11------------
12::
13
14 <combat.h>
15
16BESCHREIBUNG
17------------
18::
19
20 Diese Property kommt sowohl in Ruestungen als auch in Waffen, die
21 schuetzen sollen, zum Einsatz.
22
23 In Ruestungen kann hier der Effektivwert der Ruestungsklasse vermerkt
24 werden, wenn diese noch durch eine DefendFunc() modifiziert wird
25 (soweit sich ein solcher Effektivwert angeben laesst).
26
27 In einigen Gilden koennen Waffen auch als Ruestung eingesetzt werden
28 (z.B. beim Parieren eines Angriffs). In dieser Property kann man die
29 Ruestungsklasse eintragen, die die Waffe bei solchen Aktionen aufweisen
30 soll. Dabei ist man an die ueblichen Beschraenkungen der
31 Ruestungsklasse gebunden! (s. /sys/combat.h)
32
33BERMERKUNGEN
34------------
35::
36
37 Das Kaempferspellbook verwendet fuer Paraden etc. P_EFFECTIVE_AC anstatt
38 P_AC, wenn verfuegbar.
39
40BEISPIELE
41---------
42::
43
44 * DefendFuncs:
45 Der doppelte Mittelwert der DefendFunc wird zur Basis-AC dazuaddiert,
46 da sich der 'Schutzwert = random(Basis-AC) + absolut(DefendFunc-Wert)'
47 berechnet.
48
49 // #1 Eine Ruestung mit P_AC von 35 und randomisierter DefendFunc
50 SetProp(P_AC, 35);
51 SetProp(P_DEFEND_FUNC, this_object());
52
53 int DefendFunc(...) {
54 return random(20); // Mittelwert: 10
55 }
56 -> SetProp(P_EFFECTIVE_AC, 55); // 35 + 2*10 = 55
57
58 // #2 Eine Ruestung mit P_AC von 35 und teilrandomisierter DefendFunc
59 SetProp(P_AC, 35);
60 SetProp(P_DEFEND_FUNC, this_object());
61
62 int DefendFunc(...) {
63 return 20 + random(10); // Mittelwert: 20 + 5
64 }
65 -> SetProp(P_EFFECTIVE_AC, 85); // 35 + 2*(20+5) = 85
66
67 * Sonderfunktion im Kontext der Kaempfergilde:
68 Auch wenn der eigentliche AC-Wert durch keine DefendFunc oAe
69 modifiziert wird, sind abweichende Werte in P_EFFECTIVE_AC zB in der
70 Kaempfergilde fuer Paraden oder aehnliches sinnvoll. Maximalwert ist
71 dafuer der doppelte Wert des Basis-AC-Wertes.
72
73 // #3 Ein schon sehr gutes Schild, welches bei der Schildparade aber
74 // noch besser schuetzen soll.
75 SetProp(P_ARMOUR_TYPE, AT_SHIELD);
76 SetProp(P_AC, 38);
77 SetProp(P_EFFECTIVE_AC, 55);
78
79 // #4 Ein sehr labbriges Schild schuetzt zwar gegen normale Schlaege,
80 // ist zum Parieren aber irgendwie ungeeignet weil unkontrollierbar.
81 SetProp(P_ARMOUR_TYPE, AT_SHIELD);
82 SetProp(P_AC, 38);
83 SetProp(P_EFFECTIVE_AC, 20);
84
85 * Waffen:
86 P_EFFECTIVE_AC wird im Kaempferspellbook als Bonus dazugezaehlt! Daher
87 sollten gute Parierwaffen auch einen niedrigeren P_WC-Wert haben.
88 Reine Parierwaffen duerfen den maximalen AC-Wert von Schilden als
89 Maximum gesetzt haben - die Balance klaert ggf, ob das auch auf den
90 Gildenparierwert anwendbar ist.
91
92 // #5 Eine maessige Hellebarde/Axtwaffe mit Parierhaken.
93 SetProp(P_WEAPON_TYPE, WT_AXE);
94 SetProp(P_WC, 100);
95 SetProp(P_EFFECTIVE_AC, 25);
96
97SIEHE AUCH
98----------
99::
100
101 Waffen: P_WC, P_TOTAL_WC, P_EFFECTIVE_WC, HitFunc()
102 Ruestungen: P_AC, P_TOTAL_AC, DefendFunc()
103 Files: /std/weapon.c, /std/weapon/combat.c
104 Balance: waffen, ruestungen, properties, kaempferboni
105
1066. Nov 2011 Gloinson
107