DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ HandleFallDamage() [1/2]

void HandleFallDamage ( FallDamageData pData)
private

См. определение в файле DayZPlayerImplementFallDamage.c строка 99

100 {
101 m_FallDamageData = pData;
102
103 // Main player damage
106 m_FallDamageData.m_HealthCoef = Math.Clamp(m_FallDamageData.m_HealthCoef, 0, 1);
107
109 m_FallDamageData.m_ShockCoef = Math.Clamp(m_FallDamageData.m_ShockCoef, 0, 1);
110
112 m_FallDamageData.m_BrokenLegsCoef = Randomize(DAMAGE_TYPE_LEGS, m_FallDamageData.m_BrokenLegsCoef);
113 m_FallDamageData.m_BrokenLegsCoef = Math.Clamp(m_FallDamageData.m_BrokenLegsCoef, 0, 1);
114
115 // Bleeding zones
116 m_FallDamageData.m_BleedingHandsCoef = CurveExp(0, BLEEDINGHANDS_HEIGHT_LOW, pData.m_Height, 1.8);
117 m_FallDamageData.m_BleedingHandsCoef = Math.Clamp(m_FallDamageData.m_BleedingHandsCoef, 0, 1);
118
119 m_FallDamageData.m_BleedingFeetCoef = CurveExp(0, BLEEDINGFEET_HEIGHT_LOW, pData.m_Height, 1.8);
120 m_FallDamageData.m_BleedingFeetCoef = Math.Clamp(m_FallDamageData.m_BleedingFeetCoef, 0, 1);
121
122 m_FallDamageData.m_BleedingLegsCoef = CurveExp(0, BLEEDINGLEGS_HEIGHT_LOW, pData.m_Height, 2.0);
123 m_FallDamageData.m_BleedingLegsCoef = Math.Clamp(m_FallDamageData.m_BleedingLegsCoef, 0, 1);
124
125 // Attached gear damage
127 m_FallDamageData.m_GlovesHealthCoef = Randomize(DAMAGE_TYPE_ATTACHMENTS, m_FallDamageData.m_GlovesHealthCoef);
128 m_FallDamageData.m_GlovesHealthCoef = Math.Clamp(m_FallDamageData.m_GlovesHealthCoef, 0, 1);
129
131 m_FallDamageData.m_ShoesHealthCoef = Randomize(DAMAGE_TYPE_ATTACHMENTS, m_FallDamageData.m_ShoesHealthCoef);
132 m_FallDamageData.m_ShoesHealthCoef = Math.Clamp(m_FallDamageData.m_ShoesHealthCoef, 0, 1);
133
135 m_FallDamageData.m_PantsHealthCoef = Randomize(DAMAGE_TYPE_ATTACHMENTS, m_FallDamageData.m_PantsHealthCoef);
136 m_FallDamageData.m_PantsHealthCoef = Math.Clamp(m_FallDamageData.m_PantsHealthCoef, 0, 1);
137
138 // Bleeding chance
140 m_FallDamageData.m_BleedingChanceCoef = Math.Clamp(m_FallDamageData.m_BleedingChanceCoef, 0, 0.7);
141
142 m_FallDamageData.m_BleedingChanceLegsCoef = 0.15;
143
144 if (g_Game.IsServer())
145 {
146 PlayerBase playerBase = PlayerBase.Cast(m_Player);
147 if (playerBase)
148 {
150 DamageAttachedGear(playerBase);
151 playerBase.DamageAllLegs(BROKENLEGS_HEALTH_DAMAGE_MAX * m_FallDamageData.m_BrokenLegsCoef);
152 playerBase.ForceUpdateInjuredState();
153 }
154
155 m_Player.ProcessDirectDamage(DamageType.CUSTOM, m_Player, "", FALL_DAMAGE_AMMO_HEALTH, vector.Zero, m_FallDamageData.m_HealthCoef);
156 m_Player.ProcessDirectDamage(DamageType.CUSTOM, m_Player, "", FALL_DAMAGE_AMMO_SHOCK, vector.Zero, m_FallDamageData.m_ShockCoef);
157 }
158 }
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
DayZGame g_Game
Определения DayZGame.c:4074
class FallDamageData FALL_DAMAGE_AMMO_HEALTH
void DamageAttachedGear(notnull PlayerBase pPlayer)
const float BLEEDINGFEET_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:42
const float BLEEDING_CHANCE_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:52
const float BLEEDINGLEGS_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:43
const float SHOES_HEALTH_HEIGHT_HIGH
Определения DayZPlayerImplementFallDamage.c:37
ref FallDamageData m_FallDamageData
Определения DayZPlayerImplementFallDamage.c:66
const float HEALTH_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:26
const float PANTS_HEALTH_HEIGHT_HIGH
Определения DayZPlayerImplementFallDamage.c:39
const float GLOVES_HEALTH_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:34
static const string FALL_DAMAGE_AMMO_SHOCK
Определения DayZPlayerImplementFallDamage.c:21
const float BROKENLEGS_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:31
const float SHOCK_HEIGHT_HIGH
Определения DayZPlayerImplementFallDamage.c:30
const float BLEEDINGHANDS_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:41
void AttachBleedingToZonesByHeight(notnull PlayerBase pPlayer)
const int DAMAGE_TYPE_LEGS
Определения DayZPlayerImplementFallDamage.c:62
const float GLOVES_HEALTH_HEIGHT_HIGH
Определения DayZPlayerImplementFallDamage.c:35
const int DAMAGE_TYPE_GLOBAL
Определения DayZPlayerImplementFallDamage.c:61
const float SHOES_HEALTH_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:36
const float PANTS_HEALTH_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:38
static const float BROKENLEGS_HEALTH_DAMAGE_MAX
Определения DayZPlayerImplementFallDamage.c:55
const int DAMAGE_TYPE_ATTACHMENTS
Определения DayZPlayerImplementFallDamage.c:63
const float SHOCK_HEIGHT_LOW
Определения DayZPlayerImplementFallDamage.c:29
const float BROKENLEGS_HEIGHT_HIGH
Определения DayZPlayerImplementFallDamage.c:32
float CurveExp(float low, float high, float value, float power)
Определения DayZPlayerImplementFallDamage.c:92
float Randomize(int pType, float pValue)
const float BLEEDING_CHANCE_HEIGHT_HIGH
Определения DayZPlayerImplementFallDamage.c:53
const float HEALTH_HEIGHT_HIGH
Определения DayZPlayerImplementFallDamage.c:27
DayZPlayer m_Player
Определения Hand_Events.c:42
Определения EnMath.c:7
Определения PlayerBaseClient.c:2
static const vector Zero
Определения EnConvert.c:123
Определения EnConvert.c:119
static proto float Clamp(float value, float min, float max)
Clamps 'value' to 'min' if it is lower than 'min', or to 'max' if it is higher than 'max'.

Перекрестные ссылки AttachBleedingToZonesByHeight(), BLEEDING_CHANCE_HEIGHT_HIGH, BLEEDING_CHANCE_HEIGHT_LOW, BLEEDINGFEET_HEIGHT_LOW, BLEEDINGHANDS_HEIGHT_LOW, BLEEDINGLEGS_HEIGHT_LOW, BROKENLEGS_HEALTH_DAMAGE_MAX, BROKENLEGS_HEIGHT_HIGH, BROKENLEGS_HEIGHT_LOW, Math::Clamp(), CurveExp(), DAMAGE_TYPE_ATTACHMENTS, DAMAGE_TYPE_GLOBAL, DAMAGE_TYPE_LEGS, DamageAttachedGear(), FALL_DAMAGE_AMMO_HEALTH, FALL_DAMAGE_AMMO_SHOCK, g_Game, GLOVES_HEALTH_HEIGHT_HIGH, GLOVES_HEALTH_HEIGHT_LOW, HEALTH_HEIGHT_HIGH, HEALTH_HEIGHT_LOW, m_FallDamageData, FallDamageData::m_Height, m_Player, PANTS_HEALTH_HEIGHT_HIGH, PANTS_HEALTH_HEIGHT_LOW, Randomize(), SHOCK_HEIGHT_HIGH, SHOCK_HEIGHT_LOW, SHOES_HEALTH_HEIGHT_HIGH, SHOES_HEALTH_HEIGHT_LOW и vector::Zero.