using Godot; using Zennysoft.Ma.Adapter.Entity; namespace Zennysoft.Ma.Adapter { public static class DamageCalculator { public static int CalculateDamage(AttackData damage, double defense, ElementalResistanceSet elementalResistanceSet) { var calculatedDamage = damage.BaseDamage; if (!damage.IgnoreDefense) calculatedDamage = CalculateDefenseResistance(calculatedDamage, defense); if (!damage.IgnoreElementalResistance) calculatedDamage = CalculateElementalResistance(calculatedDamage, elementalResistanceSet.ElementalResistance[damage.ElementType]); return Mathf.Max(1, calculatedDamage); } private static int CalculateDefenseResistance(int incomingDamage, double defense) { var result = incomingDamage - (int)(incomingDamage * (defense / 100)); return result; } private static int CalculateElementalResistance( int incomingDamage, double elementalResistance) { var result = incomingDamage - (int)(incomingDamage * (elementalResistance / 100)); return result; } } }