public static float DamageCalculation(PlayerStats attackerStats, PlayerStats receiverStats)
{
// Damage calculation
float physicalDamage = attackerStats.physicalDamage;
float magicDamage = attackerStats.magicDamage;
// Resistance Calculation
float enemyArmor = (receiverStats.armor - attackerStats.armorPenetrationFlat) * (1 - attackerStats.armorPenetrationPercentage);
enemyArmor = (enemyArmor > 0) ? enemyArmor : 0;
float physicalDamageReduction = Mathf.Exp(-(enemyArmor / 50));
float enemyMagicResistance = (receiverStats.magicResistance - attackerStats.magicPenetrationFlat) * (1 - attackerStats.magicPenetrationPercentage);
enemyMagicResistance = (enemyMagicResistance > 0) ? enemyMagicResistance : 0;
float magicDamageReduction = Mathf.Exp(-(enemyMagicResistance / 50));
return physicalDamage * physicalDamageReduction + magicDamage * magicDamageReduction;
}