Calculates damage based on two PlayerStats arguments.

PHOTO EMBED

Sun Sep 24 2023 03:38:00 GMT+0000 (Coordinated Universal Time)

Saved by @BenjiSt #c#

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