Files
Zenny bc161a58b3 Additional refactoring and fixing of equipment data
Add attack data to enemy attacks (might need to rework a little bit for primary/secondary attacks)
2025-10-23 00:05:44 -07:00

34 lines
1.1 KiB
C#

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