private void HandleHealthEffects(GameStatEffect[] gameStatEffects)
    {
        int totalDamage  = 0;
        int totalHealing = 0;

        foreach (GameStatEffect gameStatEffect in gameStatEffects)
        {
            switch (gameStatEffect.GetGameStatEffectId())
            {
            case (int)GameStatEffects.DAMAGE:
                totalDamage += Mathf.RoundToInt(gameStatEffect.GetValue());
                break;

            case (int)GameStatEffects.DAMAGE_PERCENT_MAX:
                totalDamage += Mathf.RoundToInt(gameStatEffect.GetValue() * health.MaximumHealth);
                break;

            case (int)GameStatEffects.DAMAGE_PERCENT_REMAINING:
                totalDamage += Mathf.RoundToInt(gameStatEffect.GetValue() * health.CurrentHealth);
                break;
            }
        }
        totalDamage = armor ? (int)((totalDamage * (1 - armor.CurrentArmor / 100)) - armor.FreeArmor) : totalDamage;
        if (totalDamage > 0)
        {
            health.RemoveHealth(totalDamage);
            textEmitter.EmitText("-" + totalDamage.ToString(), transform, Color.red);
        }
        else
        {
            totalHealing -= totalDamage;
        }
        if (totalHealing > 0)
        {
            health.AddHealth(totalHealing);
            textEmitter.EmitText("+" + totalHealing.ToString(), transform, Color.cyan);
        }
    }