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

1225 {
1226 super.EEHitBy(damageResult, damageType, source, component, dmgZone, ammo, modelPos, speedCoef);
1227
1228 if (m_AdminLog)
1229 {
1230 m_AdminLog.PlayerHitBy(damageResult, damageType, this, source, component, dmgZone, ammo);
1231 }
1232
1233 if (damageResult != null && damageResult.GetDamage(dmgZone, "Shock") > 0)
1234 {
1235 m_LastShockHitTime = g_Game.GetTime();
1236
1237 if (!IsUnconscious())
1238 {
1239 if (g_Game.ConfigIsExisting("cfgAmmo " + ammo + " unconRefillModifier"))
1240 {
1241 m_UnconRefillModifier = g_Game.ConfigGetInt("cfgAmmo " + ammo + " unconRefillModifier");
1242 }
1243 else
1244 {
1246 }
1247 }
1248 }
1249
1251 if (damageType == DamageType.EXPLOSION && ammo == "FlashGrenade_Ammo")
1252 {
1254 }
1255
1256 //new bleeding computation
1257 //---------------------------------------
1258 if (damageResult != null && GetBleedingManagerServer())
1259 {
1260 float dmg = damageResult.GetDamage(dmgZone, "Blood");
1261 GetBleedingManagerServer().ProcessHit(dmg, source, component, dmgZone, ammo, modelPos);
1262 }
1263 //---------------------------------------
1264
1265 #ifdef DIAG_DEVELOPER
1266 if (DiagMenu.GetBool(DiagMenuIDs.MELEE_DEBUG))
1267 Print("EEHitBy() | " + GetDisplayName() + " hit by " + source.GetDisplayName() + " to " + dmgZone);
1268
1269 PluginRemotePlayerDebugServer plugin_remote_server = PluginRemotePlayerDebugServer.Cast(GetPlugin(PluginRemotePlayerDebugServer));
1270 if (plugin_remote_server)
1271 {
1272 plugin_remote_server.OnDamageEvent(this, damageResult);
1273 }
1274 #endif
1275
1276 if (g_Game.IsDebugMonitor())
1277 m_DebugMonitorValues.SetLastDamage(source.GetDisplayName());
1278
1279 if (m_ActionManager)
1280 m_ActionManager.Interrupt();
1281
1282 int transferShockToDamageCoef = g_Game.ConfigGetInt(string.Format("%1 %2 DamageApplied transferShockToDamage", CFG_AMMO, ammo));
1283 if (transferShockToDamageCoef == 1)
1284 {
1285 //Print("PlayerBase | EEHitBy | nonlethal hit");
1286 AddHealth("", "Health", -ConvertNonlethalDamage(damageResult.GetDamage(dmgZone, "Shock"), damageType));
1287 if (dmgZone != "Head")
1288 AddHealth(dmgZone, "Health", -damageResult.GetDamage(dmgZone, "Shock")); //Also deal damage to zone health, no dmg reduction
1289 }
1290
1291 if (g_Game.IsServer())
1292 {
1293 if (GetHealth("RightLeg", "Health") <= 1 || GetHealth("LeftLeg", "Health") <= 1 || GetHealth("RightFoot", "Health") <= 1 || GetHealth("LeftFoot", "Health") <= 1)
1294 {
1295 if (GetModifiersManager().IsModifierActive(eModifiers.MDF_BROKEN_LEGS))//effectively resets the modifier
1296 {
1297 GetModifiersManager().DeactivateModifier(eModifiers.MDF_BROKEN_LEGS);
1298 }
1299 GetModifiersManager().ActivateModifier(eModifiers.MDF_BROKEN_LEGS);
1300 }
1301
1302 if (ammo == "Bullet_CupidsBolt" && IsAlive())
1303 {
1304 DamageSystem.ResetAllZones(this);
1305 m_ModifiersManager.ResetAll();
1306 m_ModifiersManager.ActivateModifier(eModifiers.MDF_IMMUNITYBOOST);
1307
1308 // bleeding sources
1310 m_BleedingManagerServer.RemoveAllSources();
1311
1312 // Stats
1313 if (GetPlayerStats())
1314 {
1315 int bloodType = GetStatBloodType().Get();
1316 float energyValue = GetStatEnergy().Get();
1317 float waterValue = GetStatWater().Get();
1318 float heatBuffer = GetStatHeatBuffer().Get();
1319 float heatComfort = GetStatHeatComfort().Get();
1320
1321 GetPlayerStats().ResetAllStats();
1322
1323 GetStatBloodType().Set(bloodType);
1324 GetStatWater().Set(waterValue);
1325 GetStatEnergy().Set(energyValue);
1326 GetStatHeatBuffer().Set(heatBuffer);
1327 GetStatHeatComfort().Set(heatComfort);
1328 }
1329
1330 // Agents
1331 if (m_AgentPool)
1332 m_AgentPool.RemoveAllAgents();
1333
1334 if (m_StaminaHandler)
1335 m_StaminaHandler.SetStamina(GameConstants.STAMINA_MAX);
1336
1337 // uncon
1338 if (IsUnconscious())
1339 DayZPlayerSyncJunctures.SendPlayerUnconsciousness(this, false);
1340 }
1341 }
1342
1343 m_ShockHandler.CheckValue(true);
1344
1345 //analytics
1346 g_Game.GetAnalyticsServer().OnEntityHit(source, this);
1347 }
DamageType
exposed from C++ (do not change)
Определения DamageSystem.c:11
DayZGame g_Game
Определения DayZGame.c:3942
DiagMenuIDs
Определения EDiagMenuIDs.c:2
EStaminaModifiers
Определения EStaminaModifiers.c:2
class BoxCollidingParams component
ComponentInfo for BoxCollidingResult.
static string GetDisplayName(int liquid_type)
Определения Liquid.c:382
PluginBase GetPlugin(typename plugin_type)
Определения PluginManager.c:325
override bool IsUnconscious()
Определения PlayerBase.c:3655
ref PlayerAgentPool m_AgentPool
Определения PlayerBase.c:91
float m_LastShockHitTime
Определения PlayerBase.c:167
BleedingSourcesManagerServer GetBleedingManagerServer()
Определения PlayerBase.c:2773
PlayerStat< float > GetStatEnergy()
Определения PlayerBase.c:7861
ModifiersManager GetModifiersManager()
Определения PlayerBase.c:7838
ref DebugMonitorValues m_DebugMonitorValues
Определения PlayerBase.c:103
ref BleedingSourcesManagerServer m_BleedingManagerServer
Определения PlayerBase.c:85
PlayerStat< float > GetStatHeatComfort()
Определения PlayerBase.c:7870
float m_UnconRefillModifier
Определения PlayerBase.c:201
ref ModifiersManager m_ModifiersManager
Определения PlayerBase.c:88
PlayerStat< float > GetStatWater()
Определения PlayerBase.c:7843
PlayerStat< int > GetStatBloodType()
Определения PlayerBase.c:7924
StaminaHandler GetStaminaHandler()
Определения PlayerBase.c:1984
float ConvertNonlethalDamage(float damage, DamageType damageType)
Определения PlayerBase.c:1369
PluginAdminLog m_AdminLog
Определения PlayerBase.c:319
PlayerStats GetPlayerStats()
Определения PlayerBase.c:1974
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:7933
void DepleteStaminaEx(EStaminaModifiers modifier, float dT=-1, float coef=1.0)
Определения StaminaHandler.c:1110
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:223
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(), 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.