Beispiel #1
0
        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);
        }
Beispiel #2
0
 public Cairos(Device device, Smartrune smartrune, MainWindow mWindow, Routine routine)
 {
     _device    = device;
     _smartrune = smartrune;
     _mWindow   = mWindow;
     _routine   = routine;
     CheckPause();
 }
Beispiel #3
0
 public Worldboss(Device device, Routine routine, Wb config, Smartrune smartune)
 {
     _device     = device;
     _routine    = routine;
     _config     = config;
     _smartune   = smartune;
     _alreadyDid = 0;
 }
Beispiel #4
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);
        }