Search in sources :

Example 1 with DamageDropoff

use of me.deecaad.weaponmechanics.weapon.damage.DamageDropoff in project MechanicsMain by WeaponMechanics.

the class WeaponDamageEntityEvent method getFinalDamage.

public double getFinalDamage() {
    if (Double.isNaN(finalDamage)) {
        Configuration config = WeaponMechanics.getConfigurations();
        // Calculate the final damage and save its value
        // Final damage value is reset if set point, damage
        // critical or backstab methods are used
        double damage = this.baseDamage;
        if (point != null) {
            damage += config.getDouble(weaponTitle + ".Damage." + point.getReadable() + ".Bonus_Damage");
        }
        // Damage changes based on how far the projectile travelled
        DamageDropoff dropoff = config.getObject(weaponTitle + ".Damage.Dropoff", DamageDropoff.class);
        if (dropoff != null) {
            damage += dropoff.getDamage(distanceTravelled);
        }
        // Critical Hit chance
        if (isCritical) {
            damage += config.getDouble(weaponTitle + ".Damage.Critical_Hit.Bonus_Damage");
        }
        // Backstab damage
        if (isBackstab) {
            damage += config.getDouble(weaponTitle + ".Damage.Backstab.Bonus_Damage");
        }
        if (damage < 0) {
            damage = 0;
        }
        return finalDamage = DamageUtil.calculateFinalDamage(getShooter(), victim, damage, point, isBackstab);
    }
    return finalDamage;
}
Also used : DamageDropoff(me.deecaad.weaponmechanics.weapon.damage.DamageDropoff) Configuration(me.deecaad.core.file.Configuration)

Aggregations

Configuration (me.deecaad.core.file.Configuration)1 DamageDropoff (me.deecaad.weaponmechanics.weapon.damage.DamageDropoff)1