public void TakeDamage(int amount, DamageType dtype) { int mitigation = 0; switch (dtype) { case DamageType.Physical: mitigation = Random.Range(0, (int)statManager.GetValue(Stats.Armor)); break; case DamageType.Fire: mitigation = Random.Range(0, (int)statManager.DerivedResFire()); break; case DamageType.Electrical: mitigation = Random.Range(0, (int)statManager.DerivedResElec()); break; case DamageType.Cold: mitigation = Random.Range(0, (int)statManager.DerivedResCold()); break; default: break; } mitigation = Mathf.FloorToInt(Mathf.Min(amount * 0.75f, mitigation)); int actualDamage = amount - mitigation; statManager.ChangeValue(Stats.CurrentHP, -(actualDamage)); Color c = Color.white; switch (dtype) { case DamageType.Physical: c = Color.grey; break; case DamageType.Fire: c = Color.red; break; case DamageType.Electrical: c = Color.yellow; break; case DamageType.Cold: c = Color.blue; break; default: break; } if (actualDamage > 0) { SoundsManager.PlayClip(HurtSounds[Random.Range(0, HurtSounds.Length)]); } CombatBubbleSpawner.SpawnBubble( this.transform.position, "-" + actualDamage, CombatBubbleSpawner.BubbleTypes.Round, c ); }