public void ApplyDamage(DamageItem damage)
        {
            if (Health <= 0)
            {
                return;
            }

            TryDamageProtection(damage.Type, ref damage.Value);
            TryDamageHealth(damage.Value);

            if (Health > 0)
            {
                LivesValueChanged?.Invoke();
                PerformOnDamage();
            }
            else
            {
                OnDie?.Invoke();
                PerformOnDie();
            }
        }
 public void Heal(float value)
 {
     Health = Mathf.Min(Health + value, MaxHealth);
     LivesValueChanged?.Invoke();
 }