public double OverallWeight() { double cumulativeLevel = 0; foreach (var upgrade in skillUpgrade.MetricUpgradeList()) { var localLevel = upgrade.Level; if (temporaryUpgradeMap.ContainsKey(upgrade)) { localLevel += temporaryUpgradeMap[upgrade]; } cumulativeLevel += Math.Abs(localLevel); } return(SkillUpgrade.OverallWeight(cumulativeLevel)); }