public static void HandleCrateResults(JToken json, Smartrune smartRune, Device device, out List <string> dropDescription) { var result = json.ToObject <Reward>(); var crate = result?.Crate; dropDescription = new List <string>(); if (crate?.Rune != null) { var sellRune = false; var runeInfo = CheckRuneInfo(crate.Rune); if (smartRune.Enabled) { sellRune = SmartRuneShouldSell(runeInfo, smartRune); } Functions.DoTap(device, sellRune ? new Rectangle(361, 423, 82, 29) : new Rectangle(532, 421, 60, 29)); CheckYesBtn(device); MainWindow.Instance.LogSession.StrDropRunes = $"{!sellRune}"; dropDescription.Add($"Drop: {runeInfo.Stars}* {runeInfo.Rarity} Rune ({runeInfo.Slot})"); dropDescription.Add($"Status: {(sellRune ? "Sold" : "Kept")}"); return; } var rec = new Rectangle(434, 426, 92, 36); if (crate?.RandomScroll != null) { Debug.WriteLine("Random scroll"); var type = (RandomScroll)crate.RandomScroll.ItemMasterId; var qtd = crate.RandomScroll.ItemQuantity; rec = new Rectangle(440, 396, 77, 37); MainWindow.Instance.LogSession.StrDropScrolls = $"{(int)type}-{qtd}"; dropDescription.Add($"Drop: {type.GetDescription()} x{qtd}"); } else if (crate?.CraftStuff != null) { Debug.WriteLine("Craft Stuff"); var type = (CraftMaterial)crate.CraftStuff.ItemMasterId; var qtd = crate.CraftStuff.ItemQuantity; MainWindow.Instance.LogSession.StrDropCraft = $"{(int)type}-{qtd}"; dropDescription.Add($"Drop: {type.GetDescription()} x{qtd}"); } else if (crate?.UnitInfo != null) { Debug.WriteLine("Unit Info"); var type = SwMonsters.SwMonstersList.First(i => i.Id == crate.UnitInfo.UnitMasterId); var stars = crate.UnitInfo.Class; MainWindow.Instance.LogSession.StrDropMonsters = $"{type.Id}-{stars}"; dropDescription.Add($"Drop: {type.Name} {stars}*"); } else { using (var sr = new StreamWriter(@"D:/extra-drops.txt")) { sr.WriteLine(json.ToString()); } } // TODO: costume point (shapeshifting stone) Debug.WriteLine("Dotap: " + rec); Functions.DoTap(device, rec); }
public Cairos(Device device, Smartrune smartrune, MainWindow mWindow, Routine routine) { _device = device; _smartrune = smartrune; _mWindow = mWindow; _routine = routine; CheckPause(); }
public Worldboss(Device device, Routine routine, Wb config, Smartrune smartune) { _device = device; _routine = routine; _config = config; _smartune = smartune; _alreadyDid = 0; }
private static bool SmartRuneShouldSell(RuneInfo rune, Smartrune config) { if (config.Minstars > rune.Stars) { return(true); } if (rune.Stars == 6) { if (rune.Rarity < config.Minrarity6) { return(true); } } else { if (rune.Rarity < config.Minrarity5) { return(true); } } if (rune.Rarity == RuneRarity.Legend) { return(false); } if (rune.Slot == 2 || rune.Slot == 4 || rune.Slot == 6) { if (rune.MainStat == RuneStat.Spd) { if (config.Min2Spd > rune.Stars) { return(true); } } else { if (config.Min246 > rune.Stars) { return(true); } } if (rune.MainStat == RuneStat.AtkFlat || rune.MainStat == RuneStat.DefFlat || rune.MainStat == RuneStat.HpFlat || rune.MainStat == RuneStat.Resistance) { return(true); } // TODO: FIX THIS PART ON THE CONFIG FILE if (rune.Stars == 6 && rune.Rarity >= RuneRarity.Hero) { return(false); } } var found = false; var properMain = config.Runepattern.Any(i => i.Main == rune.MainStat); foreach (var pat in config.Runepattern) { if (properMain && pat.Main != rune.MainStat) { continue; } var d = 0; var dm = 0; if (pat.Sub1 != RuneStat.None) { dm++; if (rune.Sub1 == pat.Sub1) { d++; } else if (rune.Sub2 == pat.Sub1) { d++; } else if (rune.Sub3 == pat.Sub1) { d++; } else if (rune.Sub4 == pat.Sub1) { d++; } } if (pat.Sub2 != RuneStat.None) { dm++; if (rune.Sub1 == pat.Sub2) { d++; } else if (rune.Sub2 == pat.Sub2) { d++; } else if (rune.Sub3 == pat.Sub2) { d++; } else if (rune.Sub4 == pat.Sub2) { d++; } } if (pat.Sub3 != RuneStat.None) { dm++; if (rune.Sub1 == pat.Sub3) { d++; } else if (rune.Sub2 == pat.Sub3) { d++; } else if (rune.Sub3 == pat.Sub3) { d++; } else if (rune.Sub4 == pat.Sub3) { d++; } } if (dm == d && d != 0) { found = true; break; } } return(!found); }