public bool HasSameItems(ItemConfiguration configuration) { if (Items.Count != configuration.Items.Count) return false; for (int i = 0; i < Items.Count; i++) { if (!object.ReferenceEquals(Items[i], configuration.Items[i])) return false; } return true; }
ItemConfiguration GetItemConfiguration(int level, List<Item> currentConfiguration) { ItemConfiguration configuration = new ItemConfiguration(currentConfiguration); int baseHealth = 445 + 87 * level; double baseArmour = 16.2 + 3.7 * level; double baseMagicResistance = 30 + 1.25 * level; int runeHealth = 0; double runeArmour = 9 * 1.41; double runeMagicResistance = 9 * 0.15 * level; int masteryHealth = 6 * level + 30; int masteryArmour = 2 + 2 + 1; int masteryMagicResistance = 2 + 2 + 1; int health = baseHealth + runeHealth + masteryHealth + configuration.Health; double armour = baseArmour + runeArmour + masteryArmour + configuration.Armour; double magicResistance = baseMagicResistance + runeMagicResistance + masteryMagicResistance + configuration.MagicResistance; double runeFlatArmourPenetration = 9 * 1.28; double runeFlatMagicPenetration = 9 * 0.87; int masteryFlatArmourPenetration = 2 + 2 + 1; double masteryPercentageArmourPenetration = 0.08; int masteryFlatMagicPenetration = 0; double masteryPercentageMagicPenetration = 0.08; double lastWhisperPercentageArmourPenetration = 0.35; double voidStaffPercentageMagicPenetration = 0.35; double flatArmourPenetration = runeFlatArmourPenetration + masteryFlatArmourPenetration; List<double> armourPercentagePenetrations = new List<double>(); armourPercentagePenetrations.Add(masteryPercentageArmourPenetration); if (level >= 15) armourPercentagePenetrations.Add(lastWhisperPercentageArmourPenetration); double flatMagicPenetration = runeFlatMagicPenetration + masteryFlatMagicPenetration; List<double> magicPercentagePenetration = new List<double>(); magicPercentagePenetration.Add(masteryPercentageMagicPenetration); if (level >= 15) magicPercentagePenetration.Add(voidStaffPercentageMagicPenetration); configuration.EffectiveHealthAgainstPhysicalDamage = GetEffectiveHealth(health, armour, flatArmourPenetration, armourPercentagePenetrations); configuration.EffectiveHealthAgainstMagicDamage = GetEffectiveHealth(health, magicResistance, flatMagicPenetration, magicPercentagePenetration); return configuration; }