morristech
2/12/2019 - 2:37 AM

"Calculating Weapon Damage With Ideal Ranges" for GameDevAlgorithms.com

"Calculating Weapon Damage With Ideal Ranges" for GameDevAlgorithms.com

        int baseDamage = weapon.getDamage();
        int weaponMinDistance = weapon.getWeaponDistance().getMinimum();
        int weaponMaxDistance = weapon.getWeaponDistance().getMaximum();

        // If in the weapon range, full damage
        if (distance >= weaponMinDistance && distance <= weaponMaxDistance) {
            return baseDamage;
        }

        int tilesOutOfRange = distance > weaponMaxDistance ? distance - weaponMaxDistance : weaponMinDistance - distance;
        double multiplier = (1 - (tilesOutOfRange / (double)weapon.getWeaponDistance().getRange()));
        if (multiplier <= 0) {
            return 0;
        }

        return baseDamage * multiplier;