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

◆ EvaluateDamageHit()

void DayZPlayer::EvaluateDamageHit ( int pCurrentCommandID)
inlineprotected

Must be ran at the start of CommandHandler before Jump is triggered.

Reset damage hit to prevent animation from playing unnecessarily when it is already cancelled out

ignore hit impacts in prone (for now)

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

1311 {
1314
1315 if (!m_SyncedHitDataArray || m_SyncedHitDataArray.Count() == 0)
1316 {
1317 return;
1318 }
1319
1320 //evaluate all hit data
1321 SyncHitInfo data;
1322 SyncHitInfo greatest_hit;
1323 for (int i = 0; i < m_SyncedHitDataArray.Count(); i++)
1324 {
1325 data = m_SyncedHitDataArray[i];
1326 m_DamageHitDir = data.m_HitDir;
1327
1328 //client-side effects
1329 #ifndef SERVER
1330 if (IsAlive() && !IsUnconscious() && data.m_HasSource && GetGame().GetMission().GetHud() && GetGame().GetPlayer() == this) //only for controlled players
1331 {
1332 m_DamageHealth = data.m_HealthDamage;
1333 if (m_DamageHealth > 0.0)
1334 {
1335 float rel = m_DamageHealth / (GetMaxHealth("","Health") * PlayerConstants.HEAVY_HIT_THRESHOLD);
1337 }
1338 }
1339 #endif
1340
1341 if (!greatest_hit)
1342 {
1343 greatest_hit = data;
1344 }
1345 //else if (data.m_HealthDamage > greatest_hit.m_HealthDamage || (data.m_Fullbody && !greatest_hit.m_Fullbody)) //TODO - revisit cumulative calculation for animation evaluation purposes (stagger on shotgun to the chest)
1346 else if (data.m_Fullbody) //temporary solution; last fullbody hit is used for animation purposes, some light hit otherwise
1347 {
1348 greatest_hit = data;
1349 }
1350 }
1351
1352 m_SyncedHitDataArray.Clear();
1353 m_DamageHealth = 0.0;
1354
1356 if (m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE || m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE || IsUnconscious())
1357 {
1358 return;
1359 }
1360
1361 //general effects
1362 m_DamageHitFullbody = greatest_hit.m_Fullbody;
1363 m_DamageHitAnimType = greatest_hit.m_AnimType;
1364 m_DamageHitDir = greatest_hit.m_HitDir;
1365 }
PlayerBase GetPlayer()
Определения ModifierBase.c:51
proto native Mission GetMission()
int m_DamageHitAnimType
Определения DayZPlayerImplement.c:1297
float m_DamageHitDir
Определения DayZPlayerImplement.c:1298
ref array< ref SyncHitInfo > m_SyncedHitDataArray
Определения DayZPlayerImplement.c:172
ref HumanMovementState m_MovementState
time step for gradual update of dead screen visibilibty up to full visbility [s]
Определения DayZPlayerImplement.c:116
bool m_DamageHitFullbody
Определения DayZPlayerImplement.c:1296
float m_DamageHealth
Определения DayZPlayerImplement.c:1299
void SpawnHitDirEffect(DayZPlayer player, float hit_direction, float intensity_max)
Hud GetHud()
Определения gameplay.c:721
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602
proto native CGame GetGame()

Перекрестные ссылки GetGame(), Mission::GetHud(), CGame::GetMission(), GetPlayer(), PlayerConstants::HEAVY_HIT_THRESHOLD, m_DamageHealth, m_DamageHitAnimType, m_DamageHitDir, m_DamageHitFullbody, m_MovementState, m_SyncedHitDataArray и Hud::SpawnHitDirEffect().