-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhitpoints_uniform_none.h
130 lines (129 loc) · 3.8 KB
/
hitpoints_uniform_none.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
class HitPoints : HitPoints
{
class HitFace
{
armor = 1; // coefficient of the total armor defined below for the whole object
material = -1; // damage material (-1 means "unused")
name = "face_hub"; // selection name from hit points LOD in object
passThrough = 0.1; // coefficient defining how much damage will pass into total damage when this hit point is damaged
radius = 0.08; // size of the hit point sphere, this is how it works: https://community.bistudio.com/wiki/Arma_3_Damage_Description
explosionShielding = 0.1; // multiplier of explosive damage (parameter: explosive > 0 in ammunition type)
minimalHit = 0.01; // minimal damage value that can be applied, damage below this threshold is ignored
};
class HitNeck: HitFace
{
armor = 1;
material = -1;
name = "neck";
passThrough = 0.1;
radius = 0.1;
explosionShielding = 0.5;
minimalHit = 0.01;
};
class HitHead: HitNeck
{
armor = 1;
material = -1;
name = "head";
passThrough = 0.1;
radius = 0.2;
explosionShielding = 0.5;
minimalHit = 0.01;
depends = "HitFace max HitNeck"; // returns the greater of HitFace and HitNeck
};
class HitPelvis
{
armor = 1;
material = -1;
name = "pelvis";
passThrough = 0.1;
radius = 0.2;
explosionShielding = 1;
visual = "injury_body";
minimalHit = 0.01;
};
class HitAbdomen: HitPelvis
{
armor = 1;
material = -1;
name = "spine1";
passThrough = 0.1;
radius = 0.15;
explosionShielding = 1;
visual = "injury_body";
minimalHit = 0.01;
};
class HitDiaphragm: HitAbdomen
{
armor = 1;
material = -1;
name = "spine2";
passThrough = 0.1;
radius = 0.15;
explosionShielding = 6;
visual = "injury_body";
minimalHit = 0.01;
};
class HitChest: HitDiaphragm
{
armor = 1;
material = -1;
name = "spine3";
passThrough = 0.1;
radius = 0.15;
explosionShielding = 6;
visual = "injury_body";
minimalHit = 0.01;
};
class HitBody: HitChest
{
armor = 1000;
material = -1;
name = "body";
passThrough = 0.1;
radius = 0.16;
explosionShielding = 6;
visual = "injury_body";
minimalHit = 0.01;
depends = "HitPelvis max HitAbdomen max HitDiaphragm max HitChest"; // depends work only for hit points defined in inheritance chain
};
class HitArms
{
armor = 1;
material = -1;
name = "arms";
passThrough = 1;
radius = 0.1;
explosionShielding = 1;
visual = "injury_hands";
minimalHit = 0.01;
};
class HitHands: HitArms
{
armor = 1;
material = -1;
name = "hands";
passThrough = 1;
radius = 0.1;
explosionShielding = 1;
visual = "injury_hands";
minimalHit = 0.01;
depends = "HitArms";
};
class HitLegs
{
armor = 1;
material = -1;
name = "legs";
passThrough = 1;
radius = 0.12;
explosionShielding = 1;
visual = "injury_legs";
minimalHit = 0.01;
};
};
armor = 2; // keep constant among various soldiers so that the hit points armor coefficients remains on the same scale
armorStructural = 0.4; // divide all damage taken to total hit point, either directly or through hit point passThrough coefficient, must be adjusted for each model to achieve consistent total damage results
explosionShielding = 0.04; // for consistent explosive damage after adjusting = ( armorStructural / 10 )
minTotalDamageThreshold = 0.001; // minimalHit for total damage
impactDamageMultiplier = 0.5; // multiplier for falling damage