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); } }