DayZ 1.27
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 строка 1247

1248 {
1251
1252 if (!m_SyncedHitDataArray || m_SyncedHitDataArray.Count() == 0)
1253 {
1254 return;
1255 }
1256
1257 //evaluate all hit data
1258 SyncHitInfo data;
1259 SyncHitInfo greatest_hit;
1260 for (int i = 0; i < m_SyncedHitDataArray.Count(); i++)
1261 {
1262 data = m_SyncedHitDataArray[i];
1263 m_DamageHitDir = data.m_HitDir;
1264
1265 //client-side effects
1266 #ifndef SERVER
1267 if (IsAlive() && !IsUnconscious() && data.m_HasSource && GetGame().GetMission().GetHud() && GetGame().GetPlayer() == this) //only for controlled players
1268 {
1269 m_DamageHealth = data.m_HealthDamage;
1270 if (m_DamageHealth > 0.0)
1271 {
1272 float rel = m_DamageHealth / (GetMaxHealth("","Health") * PlayerConstants.HEAVY_HIT_THRESHOLD);
1274 }
1275 }
1276 #endif
1277
1278 if (!greatest_hit)
1279 {
1280 greatest_hit = data;
1281 }
1282 //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)
1283 else if (data.m_Fullbody) //temporary solution; last fullbody hit is used for animation purposes, some light hit otherwise
1284 {
1285 greatest_hit = data;
1286 }
1287 }
1288
1289 m_SyncedHitDataArray.Clear();
1290 m_DamageHealth = 0.0;
1291
1293 if (m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_PRONE || m_MovementState.m_iStanceIdx == DayZPlayerConstants.STANCEIDX_RAISEDPRONE || IsUnconscious())
1294 {
1295 return;
1296 }
1297
1298 //general effects
1299 m_DamageHitFullbody = greatest_hit.m_Fullbody;
1300 m_DamageHitAnimType = greatest_hit.m_AnimType;
1301 m_DamageHitDir = greatest_hit.m_HitDir;
1302 }
PlayerBase GetPlayer()
Определения ModifierBase.c:51
proto native Mission GetMission()
int m_DamageHitAnimType
Определения DayZPlayerImplement.c:1234
float m_DamageHitDir
Определения DayZPlayerImplement.c:1235
ref array< ref SyncHitInfo > m_SyncedHitDataArray
Определения DayZPlayerImplement.c:170
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:1233
float m_DamageHealth
Определения DayZPlayerImplement.c:1236
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().