blob: 4a93f08db52a9bb96dc99b11b0f87024e1a93a77 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001
Zesstra953f9972017-02-18 15:37:36 +01002P_RESISTANCE_STRENGTHS
3**********************
MG Mud User88f12472016-06-24 23:31:02 +02004
5
Zesstra953f9972017-02-18 15:37:36 +01006NAME
7====
MG Mud User88f12472016-06-24 23:31:02 +02008
Zesstra953f9972017-02-18 15:37:36 +01009 P_RESISTANCE_STRENGTHS "resistance_strengths"
MG Mud User88f12472016-06-24 23:31:02 +020010
MG Mud User88f12472016-06-24 23:31:02 +020011
Zesstra953f9972017-02-18 15:37:36 +010012DEFINIERT IN
13============
14
15 /sys/living/combat.h
16
17
18BESCHREIBUNG
19============
20
21 Lebewesen:
22
23 Mapping mit Schadensarten, gegen die das Lebewesen resistent oder
24 anfaellig ist. Durch eine _query_method werden alle existierenden
25 Resistenzen hier zusammengefasst.
26
27 Die Staerke der Resistenz oder Anfaelligkeit wird numerisch aus-
28 gedrueckt:
29 - Resistenzen gehen bis von 0 bis -1.0 (absolute Resistenz)
30 - -0.5 == halbierter Schaden, -0.75 == geviertelter Schaden
31 -> in % des "aufgehaltenen" Schadens interpretierbar
32 - Empfindlichkeiten gehen von 0 bis MAX_INT
33 - 1.0 == verdoppelter Schaden, 3.0 == vervierfachter Schaden
34 -> als Faktor (x+1.0) interpretierbar
35
36 Ruestungen:
37
38 Mapping mit Prozentwerten der Maximalwerte fuer Ruestungen des
39 entsprechenden Typs. Dabei sind positive Werte Resistenzen und
40 negative Empfindlichkeiten. Dabei duerfen die Prozentwerte nur
41 im Bereich von +100 bis -800 (-1000 ?!) liegen.
42
43 Bei Ruestungen ist es damit unnoetig, Resistenzen mittels
44 AddResistanceModifier() im Traeger zu setzen, da dies bereits
45 in /std/armour automatisch gemacht wird. Der Schluessel fuer
46 den Eintrag ist dabei P_ARMOUR_TYPE.
47
48 Die Maximalwerte sind derzeit:
49 AT_CLOAK, AT_RING, AT_AMULET: max 10% Resistenz
50 AT_SHIELD, AT_ARMOUR: max 15% Resistenz
51 alle anderen: max 5% Resistenz
52
53
54BEMERKUNGEN
55===========
56
57 Ruestungen:
58 * die Property muss _nach_ P_ARMOUR_TYPE gesetzt werden (_set-Method)
59
60 Lebewesen:
61 * -1.0 bedeutet bereits absolute Resistenz, bei kleineren Werten werden
62 die anderen Schadensanteile im Kampf u.U. nicht mehr wie gewuenscht
63 bilanziert. Bitte daher drauf verzichten. ;-)
64 * Aenderungen an P_RESISTANCE und P_VULNERABILITY werden direkt in
65 P_RESISTANCE_STRENGTHS gespeichert:
66 -> daher niemals im Nachhinein bei fremden NPCs P_RESISTANCE_STRENGTHS
67 manipulieren, dafuer gibt es AddResistanceModifier
68 * QueryProp(P_RESISTANCE_STRENGTHS) enthaelt die gesamten Resistenzen
69 P_RESISTANCE, P_VULNERABILITY, P_RESISTANCE_MODIFIER (_query-Method)
70
71 Die Werte in P_RESISTANCE_STRENGTHS sollten nur in Ausnahmefaellen oder
72 gut begruendet den Hoechstwert haben. Ein Eiswesen kann zwar sehr
73 resistent gegen Kaelteschaden sein, sollte aber zu gleichem Teil auch
74 anfaellig auf Feuerschaden sein.
75
76 Auf dieser Property liegt eine Querymethode, welche eine Kopie der
77 Daten zurueckliefert.
78
79
80BEISPIELE
81=========
82
83 // ein Eistroll
84 SetProp(P_RESISTANCE_STRENGTHS,([DT_FIRE:0.5,DT_COLD:-0.5,
85 DT_MAGIC:0.1]));
86
87 Feuerangriffe werden mit 1.5 multipliziert, magische mit 1.1 und
88 der Schadenswert von Kaelteangriffen wird halbiert. Zum Beispiel
89 wuerde
90 Defend(100, ({DT_FIRE,DT_MAGIC}), ...)
91 einen Schaden von 130 statt den normalen 100 verursachen.
92
93
94 // eine Eisruestung
95 SetProp(P_RESISTANCE_STRENGTHS, ([DT_COLD:50, DT_FIRE:-100]));
96
97 Dieses Kettenhemd schuetzt nun mit 50% des Maximalwertes gegen
98 Kaelte (also 0.5*15%=7,5% Resistenz) und macht mit dem Maximal-
99 wert anfaellig gegen Feuer (1*15%=15% Empfindlichkeit).
100
101 ! der Code spricht zusaetzlich von
102 Empfindlichkeit=(Empfindlichkeit/4)*5 -> 15/4*5=18.75% !
103
104
105SIEHE AUCH
106==========
107
108 simple Resistenz: P_RESISTANCE, P_VULNERABILITY
109 Modifikatoren: AddResistanceModifier, RemoveResistanceModifier(),
110 P_RESISTANCE_MODIFIER
111 Berechnung: CheckResistance(), UpdateResistanceStrengths()
112 anderes: balance, /std/armour/combat.c, /std/living/combat.c
MG Mud User88f12472016-06-24 23:31:02 +0200113
1146.Feb 2016 Gloinson