public float ComputeElementalDamage(float statModifier, EffectRelationship damageRelationship, IReadOnlyCollection <Effect> effects)
        {
            var totalDamage = effects.CalculateTotal(damageRelationship);

            totalDamage += effects.GetPotencyFor(EffectTypes.AllElementDamageBonusAmount);
            if (totalDamage == 0)
            {
                return(0);
            }

            var percentageBonus = effects.GetPotencyFor(EffectTypes.AllElementDamageBonusPercentage);

            if (percentageBonus != 0)
            {
                var addition = totalDamage * (percentageBonus / 100);
                totalDamage += addition;
            }

            var modifierBonus = totalDamage * statModifier;

            return(totalDamage + modifierBonus);
        }
Пример #2
0
 public static float CalculateTotal(this IReadOnlyCollection <Effect> effects, EffectRelationship damageRelationship)
 {
     return(effects.CalculateTotal(damageRelationship.AmountType, damageRelationship.PercentageType,
                                   damageRelationship.BonusAmountType, damageRelationship.BonusPercentageType));
 }