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); }
public static float CalculateTotal(this IReadOnlyCollection <Effect> effects, EffectRelationship damageRelationship) { return(effects.CalculateTotal(damageRelationship.AmountType, damageRelationship.PercentageType, damageRelationship.BonusAmountType, damageRelationship.BonusPercentageType)); }