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