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

◆ EEHitBy()

override void ManBase::EEHitBy ( TotalDamageResult damageResult,
int damageType,
EntityAI source,
int component,
string dmgZone,
string ammo,
vector modelPos,
float speedCoef )
inlineprotected

DamageType.EXPLOSION & FlashGrenade

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

1256 {
1257 super.EEHitBy(damageResult, damageType, source, component, dmgZone, ammo, modelPos, speedCoef);
1258
1259 if (m_AdminLog)
1260 {
1261 m_AdminLog.PlayerHitBy(damageResult, damageType, this, source, component, dmgZone, ammo);
1262 }
1263
1264 if (damageResult != null && damageResult.GetDamage(dmgZone, "Shock") > 0)
1265 {
1266 m_LastShockHitTime = g_Game.GetTime();
1267
1268 if (!IsUnconscious())
1269 {
1270 if (g_Game.ConfigIsExisting("cfgAmmo " + ammo + " unconRefillModifier"))
1271 {
1272 m_UnconRefillModifier = g_Game.ConfigGetInt("cfgAmmo " + ammo + " unconRefillModifier");
1273 }
1274 else
1275 {
1277 }
1278 }
1279 }
1280
1282 if (damageType == DamageType.EXPLOSION && ammo == "FlashGrenade_Ammo")
1283 {
1285 }
1286
1287 //new bleeding computation
1288 //---------------------------------------
1289 if (damageResult != null && GetBleedingManagerServer())
1290 {
1291 float dmg = damageResult.GetDamage(dmgZone, "Blood");
1292 GetBleedingManagerServer().ProcessHit(dmg, source, component, dmgZone, ammo, modelPos);
1293 }
1294 //---------------------------------------
1295
1296 #ifdef DIAG_DEVELOPER
1297 if (DiagMenu.GetBool(DiagMenuIDs.MELEE_DEBUG))
1298 Print("EEHitBy() | " + GetDisplayName() + " hit by " + source.GetDisplayName() + " to " + dmgZone);
1299
1300 PluginRemotePlayerDebugServer plugin_remote_server = PluginRemotePlayerDebugServer.Cast(GetPlugin(PluginRemotePlayerDebugServer));
1301 if (plugin_remote_server)
1302 {
1303 plugin_remote_server.OnDamageEvent(this, damageResult);
1304 }
1305 #endif
1306
1307 if (g_Game.IsDebugMonitor())
1308 m_DebugMonitorValues.SetLastDamage(source.GetDisplayName());
1309
1310 if (m_ActionManager)
1311 m_ActionManager.Interrupt();
1312
1313 int transferShockToDamageCoef = g_Game.ConfigGetInt(string.Format("%1 %2 DamageApplied transferShockToDamage", CFG_AMMO, ammo));
1314 if (transferShockToDamageCoef == 1)
1315 {
1316 //Print("PlayerBase | EEHitBy | nonlethal hit");
1317 AddHealth("", "Health", -ConvertNonlethalDamage(damageResult.GetDamage(dmgZone, "Shock"), damageType));
1318 if (dmgZone != "Head")
1319 AddHealth(dmgZone, "Health", -damageResult.GetDamage(dmgZone, "Shock")); //Also deal damage to zone health, no dmg reduction
1320 }
1321
1322 if (g_Game.IsServer())
1323 {
1324 if (GetHealth("RightLeg", "Health") <= 1 || GetHealth("LeftLeg", "Health") <= 1 || GetHealth("RightFoot", "Health") <= 1 || GetHealth("LeftFoot", "Health") <= 1)
1325 {
1326 if (GetModifiersManager().IsModifierActive(eModifiers.MDF_BROKEN_LEGS))//effectively resets the modifier
1327 {
1328 GetModifiersManager().DeactivateModifier(eModifiers.MDF_BROKEN_LEGS);
1329 }
1330 GetModifiersManager().ActivateModifier(eModifiers.MDF_BROKEN_LEGS);
1331 }
1332
1333 if (ammo == "Bullet_CupidsBolt" && IsAlive())
1334 {
1335 DamageSystem.ResetAllZones(this);
1336 m_ModifiersManager.ResetAll();
1337 m_ModifiersManager.ActivateModifier(eModifiers.MDF_IMMUNITYBOOST);
1338
1339 // bleeding sources
1341 m_BleedingManagerServer.RemoveAllSources();
1342
1343 // Stats
1344 if (GetPlayerStats())
1345 {
1346 int bloodType = GetStatBloodType().Get();
1347 float energyValue = GetStatEnergy().Get();
1348 float waterValue = GetStatWater().Get();
1349 float heatBuffer = GetStatHeatBuffer().Get();
1350 float heatComfort = GetStatHeatComfort().Get();
1351 float thermalBias = GetThermalBiasHandler().Get();
1352
1353 GetPlayerStats().ResetAllStats();
1354
1355 GetStatBloodType().Set(bloodType);
1356 GetStatWater().Set(waterValue);
1357 GetStatEnergy().Set(energyValue);
1358 GetStatHeatBuffer().Set(heatBuffer);
1359 GetStatHeatComfort().Set(heatComfort);
1360 GetThermalBiasHandler().Set(thermalBias);
1361 }
1362
1363 // Agents
1364 if (m_AgentPool)
1365 m_AgentPool.RemoveAllAgents();
1366
1367 if (m_StaminaHandler)
1368 m_StaminaHandler.SetStamina(GameConstants.STAMINA_MAX);
1369
1370 // uncon
1371 if (IsUnconscious())
1372 DayZPlayerSyncJunctures.SendPlayerUnconsciousness(this, false);
1373 }
1374 }
1375
1376 m_ShockHandler.CheckValue(true);
1377
1378 //analytics
1379 g_Game.GetAnalyticsServer().OnEntityHit(source, this);
1380 }
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
DayZGame g_Game
Определения DayZGame.c:4074
DiagMenuIDs
Определения EDiagMenuIDs.c:2
EStaminaModifiers
Определения EStaminaModifiers.c:2
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
static string GetDisplayName(int liquid_type)
Определения Liquid.c:383
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:326
override bool IsUnconscious()
Определения PlayerBase.c:3925
ref PlayerAgentPool m_AgentPool
Определения PlayerBase.c:91
float m_LastShockHitTime
Определения PlayerBase.c:166
BleedingSourcesManagerServer GetBleedingManagerServer()
Определения PlayerBase.c:2973
PlayerStat< float > GetStatEnergy()
Определения PlayerBase.c:8215
ThermalBiasHandler GetThermalBiasHandler()
Определения PlayerBase.c:8158
ModifiersManager GetModifiersManager()
Определения PlayerBase.c:8192
ref DebugMonitorValues m_DebugMonitorValues
Определения PlayerBase.c:103
ref BleedingSourcesManagerServer m_BleedingManagerServer
Определения PlayerBase.c:85
PlayerStat< float > GetStatHeatComfort()
Определения PlayerBase.c:8224
float m_UnconRefillModifier
Определения PlayerBase.c:200
ref ModifiersManager m_ModifiersManager
Определения PlayerBase.c:88
PlayerStat< float > GetStatWater()
Определения PlayerBase.c:8197
PlayerStat< int > GetStatBloodType()
Определения PlayerBase.c:8278
StaminaHandler GetStaminaHandler()
Определения PlayerBase.c:2042
float ConvertNonlethalDamage(float damage, DamageType damageType)
Определения PlayerBase.c:1402
PluginAdminLog m_AdminLog
Определения PlayerBase.c:322
PlayerStats GetPlayerStats()
Определения PlayerBase.c:2032
ref StaminaHandler m_StaminaHandler
Определения PlayerBase.c:97
ActionManagerBase m_ActionManager
Определения PlayerBase.c:90
ref ShockHandler m_ShockHandler
Определения PlayerBase.c:99
PlayerStat< float > GetStatHeatBuffer()
Определения PlayerBase.c:8287
void DepleteStaminaEx(EStaminaModifiers modifier, float dT=-1, float coef=1.0)
Определения StaminaHandler.c:1144
void Set(float value)
Определения ThermalBiasHandler.c:50
float Get()
Определения ThermalBiasHandler.c:31
proto native float GetDamage(string zoneName, string healthType)
eModifiers
Определения eModifiers.c:2
proto void Print(void var)
Prints content of variable to console/log.
const string CFG_AMMO
Определения 3_Game/DayZ/constants.c:231
proto native bool IsModifierActive()
is modifier active

Перекрестные ссылки CFG_AMMO, component, ConvertNonlethalDamage(), g_Game, GetBleedingManagerServer(), DiagMenu::GetBool(), TotalDamageResult::GetDamage(), GetDisplayName(), GetModifiersManager(), GetPlayerStats(), GetPlugin(), GetStaminaHandler(), GetStatBloodType(), GetStatEnergy(), GetStatHeatBuffer(), GetStatHeatComfort(), GetStatWater(), GetThermalBiasHandler(), IsModifierActive(), IsUnconscious(), m_ActionManager, m_AdminLog, m_AgentPool, m_BleedingManagerServer, m_DebugMonitorValues, m_LastShockHitTime, m_ModifiersManager, m_ShockHandler, m_StaminaHandler, m_UnconRefillModifier, Print(), DayZPlayerSyncJunctures::SendPlayerUnconsciousness() и GameConstants::STAMINA_MAX.