public void ApplyDamage(DamageInfo dmg) { if (shouldOnlyTakeDamageFromPlayer) { if (dmg.damageSource == null) { return; } if (PlayerCharacterNew.Instance == null) { return; } if (dmg.damageSource != PlayerCharacterNew.Instance.gameObject) { return; } } if (gettingDamageArea) { if (gettingDamageArea.isEnabled) { if (dmg.damageSource == null) { return; } if (!gettingDamageArea.IsGameObjectIn(dmg.damageSource)) { return; } } } if (multiDmgCtrl.IsDamageAppliedBefore(dmg)) { return; } multiDmgCtrl.AddDamage(dmg); damagesRecieved.Add(dmg); recievedDamageTime = Time.time; firstDamage = damagesRecieved[0]; isDamageRecievedInThisRun = true; if (!charInfo.IsInvulnerable) { DamageInfo damage = dmg; ChangeHealth(-damage.damageAmount * damage.GetDamageCoefBySoldierBodyPart() * charInfo.ReceivedDamageCoef); if (charInfo.CurrentHealth <= 0) { KillSoldier(dmg); return; } } }