DayZ 1.29
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 строка 1335

1336 {
1339
1340 if (!m_SyncedHitDataArray || m_SyncedHitDataArray.Count() == 0)
1341 {
1342 return;
1343 }
1344
1345 //evaluate all hit data
1346 SyncHitInfo data;
1347 SyncHitInfo greatest_hit;
1348 int nSyncedHitDataArray = m_SyncedHitDataArray.Count();
1349 for (int i = 0; i < nSyncedHitDataArray; ++i)
1350 {
1351 data = m_SyncedHitDataArray[i];
1352 m_DamageHitDir = data.m_HitDir;
1353
1354 //client-side effects
1355 #ifndef SERVER
1356 if (IsAlive() && !IsUnconscious() && data.m_HasSource && g_Game.GetMission().GetHud() && g_Game.GetPlayer() == this) //only for controlled players
1357 {
1358 m_DamageHealth = data.m_HealthDamage;
1359 if (m_DamageHealth > 0.0)
1360 {
1361 float rel = m_DamageHealth / (GetMaxHealth("","Health") * PlayerConstants.HEAVY_HIT_THRESHOLD);
1362 g_Game.GetMission().GetHud().SpawnHitDirEffect(this,m_DamageHitDir,rel);
1363 }
1364 }
1365 #endif
1366
1367 if (!greatest_hit)
1368 {
1369 greatest_hit = data;
1370 }
1371 //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)
1372 else if (data.m_Fullbody) //temporary solution; last fullbody hit is used for animation purposes, some light hit otherwise
1373 {
1374 greatest_hit = data;
1375 }
1376 }
1377
1378 m_SyncedHitDataArray.Clear();
1379 m_DamageHealth = 0.0;
1380
1382 if (m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE || m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE || IsUnconscious())
1383 {
1384 return;
1385 }
1386
1387 //general effects
1388 m_DamageHitFullbody = greatest_hit.m_Fullbody;
1389 m_DamageHitAnimType = greatest_hit.m_AnimType;
1390 m_DamageHitDir = greatest_hit.m_HitDir;
1391 }
DayZGame g_Game
Определения DayZGame.c:3942
int m_DamageHitAnimType
Определения DayZPlayerImplement.c:1322
float m_DamageHitDir
Определения DayZPlayerImplement.c:1323
ref array< ref SyncHitInfo > m_SyncedHitDataArray
Определения DayZPlayerImplement.c:148
ref HumanMovementState m_MovementState
time step for gradual update of dead screen visibilibty up to full visbility [s]
Определения DayZPlayerImplement.c:92
bool m_DamageHitFullbody
Определения DayZPlayerImplement.c:1321
float m_DamageHealth
Определения DayZPlayerImplement.c:1324
DayZPlayerConstants
defined in C++
Определения dayzplayer.c:602

Перекрестные ссылки g_Game, PlayerConstants::HEAVY_HIT_THRESHOLD, m_DamageHealth, m_DamageHitAnimType, m_DamageHitDir, m_DamageHitFullbody, m_MovementState и m_SyncedHitDataArray.