DayZ 1.30
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 строка 1349

1350 {
1353
1354 if (!m_SyncedHitDataArray || m_SyncedHitDataArray.Count() == 0)
1355 {
1356 return;
1357 }
1358
1359 //evaluate all hit data
1360 SyncHitInfo data;
1361 SyncHitInfo greatest_hit;
1362 int nSyncedHitDataArray = m_SyncedHitDataArray.Count();
1363 for (int i = 0; i < nSyncedHitDataArray; ++i)
1364 {
1365 data = m_SyncedHitDataArray[i];
1366 m_DamageHitDir = data.m_HitDir;
1367
1368 //client-side effects
1369 #ifndef SERVER
1370 if (IsAlive() && !IsUnconscious() && data.m_HasSource && g_Game.GetMission().GetHud() && g_Game.GetPlayer() == this) //only for controlled players
1371 {
1372 m_DamageHealth = data.m_HealthDamage;
1373 #ifndef NO_GUI
1374 if (m_DamageHealth > 0.0)
1375 {
1376 float rel = m_DamageHealth / (GetMaxHealth("","Health") * PlayerConstants.HEAVY_HIT_THRESHOLD);
1377 g_Game.GetMission().GetHud().SpawnHitDirEffect(this,m_DamageHitDir,rel);
1378 }
1379 #endif
1380 }
1381 #endif
1382
1383 if (!greatest_hit)
1384 {
1385 greatest_hit = data;
1386 }
1387 //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)
1388 else if (data.m_Fullbody) //temporary solution; last fullbody hit is used for animation purposes, some light hit otherwise
1389 {
1390 greatest_hit = data;
1391 }
1392 }
1393
1394 m_SyncedHitDataArray.Clear();
1395 m_DamageHealth = 0.0;
1396
1398 if (m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE || m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE || IsUnconscious())
1399 {
1400 return;
1401 }
1402
1403 //general effects
1404 m_DamageHitFullbody = greatest_hit.m_Fullbody;
1405 m_DamageHitAnimType = greatest_hit.m_AnimType;
1406 m_DamageHitDir = greatest_hit.m_HitDir;
1407 }
DayZGame g_Game
Определения DayZGame.c:4074
int m_DamageHitAnimType
Определения DayZPlayerImplement.c:1336
float m_DamageHitDir
Определения DayZPlayerImplement.c:1337
ref array< ref SyncHitInfo > m_SyncedHitDataArray
Определения DayZPlayerImplement.c:149
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:1335
float m_DamageHealth
Определения DayZPlayerImplement.c:1338
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.