//TODO BasicAttack method and SpellDamage method private void DealDamage(Characters.Character stats, DamageType type, float physicalDamageAmount, float magicDamageAmount, bool reduced) { if (reduced) { physicalDamageAmount *= 1 - stats.DamageReducePercentage / 100; magicDamageAmount *= 1 - stats.DamageReducePercentage / 100; } switch (type) { case DamageType.Physical: stats.TakeDamage(_myStats, physicalDamageAmount, 0); break; case DamageType.PhysicalLethal: stats.TakeLethalDamage(_myStats, physicalDamageAmount, 0); break; case DamageType.Magic: stats.TakeDamage(_myStats, 0, magicDamageAmount); break; case DamageType.PhysicalMagic: stats.TakeLethalDamage(_myStats, 0, magicDamageAmount); break; case DamageType.Mixed: stats.TakeDamage(_myStats, physicalDamageAmount, magicDamageAmount); break; case DamageType.MixedLethal: stats.TakeLethalDamage(_myStats, physicalDamageAmount, magicDamageAmount); break; default: throw new ArgumentOutOfRangeException(nameof(type), type, null); } }