public void TakeDamage(int amount, bool dot = false)
    {
        _health -= (int)Math.Round((amount * damageMultiplier) - defense, MidpointRounding.AwayFromZero);
        OnDamageTaken?.Invoke();
        StartCoroutine(DamageBlink(0.05f));

        if (_health <= 0)
        {
            OnDeath?.Invoke();
            Die();
        }

        if (immunity && !dot)
        {
            immunity.EnablePlayerImmunity();
        }
    }