public static BestModsResult FindBestMods(Eidolon pEidolon, DPSCase pCase, Weapon pSniper, Health pHealthType, Mod pRiven1, Mod pRiven2, Mod pArcanes, bool pAllowHeavyCaliber) { //List<Mod> allMods = new List<Mod>(MainMods.TestMods); List <Mod> allMods = new List <Mod>(MainMods.AllMods(pSniper.WeaponClass, pAllowHeavyCaliber, pSniper.AugmentNames)); allMods.Remove(allMods.Where((x) => x.Name == "Riven").Single()); for (int i = allMods.Count - 1; i >= 0; i--) { var mod = allMods[i]; if (mod.IsAugment) { if (!pSniper.AugmentNames.Contains(mod.Name)) { allMods.RemoveAt(i); } } } if (pRiven1 == null && pRiven2 == null) { return(FindBestMods(pEidolon, pCase, pSniper, pHealthType, allMods, pArcanes)); } BestModsResult result1 = null; BestModsResult result2 = null; if (pRiven1 != null) { allMods.Add(pRiven1); result1 = FindBestMods(pEidolon, pCase, pSniper, pHealthType, allMods, pArcanes); allMods.Remove(pRiven1); } if (pRiven2 != null) { allMods.Add(pRiven2); result2 = FindBestMods(pEidolon, pCase, pSniper, pHealthType, allMods, pArcanes); allMods.Remove(pRiven2); } if (result1 == null) { return(result2); } if (result2 == null) { return(result1); } return (result1.DPSResult.ToLimbBreak_TimeSeconds < result2.DPSResult.ToLimbBreak_TimeSeconds ? result1 : result2); }
private static BestModsResult FindBestMods(Eidolon pEidolon, DPSCase pCase, Weapon pSniper, Health pHealthType, IReadOnlyCollection <Mod> pMods, Mod pArcanes) { var perms = Permutations(pMods.ToList(), 8, 8); int permCount = perms.Count; BestModsResult bestResult = null; for (int i = 0; i < perms.Count; i++) { var perm = perms[i]; perm.Add(pArcanes); var elems = ElementCombinations.PossibleCombinations(perm); foreach (var elem in elems) { var thisResult = MainCalculation(pEidolon, pCase, pSniper, elem, pHealthType, 0, perm.ToArray()); if (bestResult == null || thisResult.ToLimbBreak_TimeSeconds < bestResult.DPSResult.ToLimbBreak_TimeSeconds) { bestResult = new BestModsResult(perm, elem, thisResult); } } } bestResult.Mods.Remove(pArcanes); return(bestResult); }