blob: aa16980e2795c729fd295f6b2cbe9473258e1731 [file] [log] [blame]
Zesstra953f9972017-02-18 15:37:36 +01001
2P_EFFECTIVE_WC
3**************
4
5
6NAME
7====
8
9 P_EFFECTIVE_WC "effective_wc"
10
11
12DEFINIERT IN
13============
14
15 <combat.h>
16
17
18BESCHREIBUNG
19============
20
21 Diese Property kommt sowohl in Waffen als auch Ruestungen, die Schaden
22 machen sollen, zum Einsatz.
23
24 Falls die Staerke einer Waffe noch durch eine HitFunc() modifiziert
25 wird, sollte hier der Effektivwert der Waffenklasse vermerkt werden,
26 soweit er sich angeben laesst.
27 Diese Property dient vor allem dazu, eine Waffe mit HitFunc() korrekt
28 einzuschaetzen.
29
30 In einigen Gilden koennen Ruestungen auch als Waffen eingesetzt werden
31 (z.B. ein Paar Schuhe zum Treten). In dieser Property kann man die
32 Waffenklasse eintragen, die die Ruestung bei solchen Aktionen aufweisen
33 soll. Dabei ist man an die ueblichen Beschraenkungen der Waffenklasse
34 gebunden! (s. /sys/combat.h)
35 Der Ruestung kann man dann auch einen Schadenstyp mit auf den Weg
36 geben.
37
38
39BEMERKUNGEN
40===========
41
42 Das Kaempferspellbook verwendet bei Ruestungen P_AC, wenn
43 P_EFFECTIVE_WC nicht gesetzt ist.
44
45
46BEISPIELE
47=========
48
49 * HitFuncs:
50 Der doppelte Mittelwert der HitFunc wird zur Basis-WC dazuaddiert,
51 da sich der 'Angriffswert = random(Basis-WC) + absolut(HitFunc-Wert)'
52 berechnet.
53
54 // #1 Waffe mit Basis-WC 120 und randomisierter HitFunc
55 SetProp(P_WC, 120);
56 SetProp(P_HIT_FUNC, this_object());
57
58
59
60 int HitFunc(...) {
61 return random(30); // Mittelwert: 15
62 }
63 -> SetProp(P_EFFECTIVE_WC, 150); // 120 + 2*15 = 150
64
65
66
67 // #2 Waffe mit Basis-WC 120 und teilweise absoluter HitFunc
68 SetProp(P_WC, 120);
69 SetProp(P_HIT_FUNC, this_object());
70
71
72
73 int HitFunc(...) {
74 return 30 + random(10); // Mittelwert: 30 + 5
75 }
76 -> SetProp(P_EFFECTIVE_WC, 190); // 120 + 2*(30+5) = 190
77
78 * Ruestungen (zB Gildennutzung):
79 Der Maximalwert fuer die P_EFFECTIVE_WC bei Kaempfern ist der jeweils
80 doppelte maximale P_AC-Wert. Angabe eines Schadenstyps ist sinnvoll.
81
82 // #3 Ein paar Schuhe, mit maximalem Schlag-/Saeureschaden.
83 SetProp(P_ARMOUR_TYPE, AT_BOOT);
84 SetProp(P_AC, 2);
85 SetProp(P_DAM_TYPE, ({DT_BLUDGEON,DT_ACID}));
86 -> SetProp(P_EFFECTIVE_WC, 12); // hoechstmoeglicher Wert bei
87 // Schuhen, da deren max. P_AC = 6
88 // aequivalent und zukunftssicher:
89 -> SetProp(P_EFFECTIVE_WC, 2 * VALID_ARMOUR_CLASS[AT_BOOT]);
90
91 // #4 Ein Schild mit spitzem Dorn. (Stichschaden beim Schildstoss.)
92 SetProp(P_ARMOUR_TYPE, AT_SHIELD);
93 SetProp(P_AC, 5);
94 SetProp(P_DAM_TYPE, ({DT_PIERCE}));
95 SetProp(P_EFFECTIVE_WC, 55);
96
97 // #5 Ein Gummischild ist schlecht fuer Angriffe. BOING!
98 SetProp(P_ARMOUR_TYPE, AT_SHIELD);
99 SetProp(P_AC, 30);
100 SetProp(P_DAM_TYPE, ({DT_BLUDGEON}));
101 SetProp(P_EFFECTIVE_WC, 10);
102
103
104SIEHE AUCH
105==========
106
107 Waffen: P_WC, P_TOTAL_WC, HitFunc()
108 Ruestungen: P_AC, P_TOTAL_AC, P_EFFECTIVE_AC, DefendFunc()
109 Files: /std/weapon.c, /std/weapon/combat.c
110 Balance: waffen, ruestungen, properties, kaempferboni
111
1126. Nov 2011 Gloinson