private double ApplyAffinityBonuses(double baseDamage, BattleCharacter defender, SkillEffectAffinities effectAffinities) { var nonZeroAffinities = effectAffinities.GetNonZeroAffinities(); if (nonZeroAffinities.Count == 0) { return baseDamage; } var modifiedDamage = 0d; foreach (var kv in nonZeroAffinities) { var resistanceEffect = 1d - defender.GetAffinityResistance(kv.Key); modifiedDamage += baseDamage * resistanceEffect * kv.Value; } return modifiedDamage; }