Beispiel #1
0
        public static void Harass()
        {
            var target = TargetSelector2.GetTarget(720, DamageType.Magical);
            {
                if (Program.Q.IsReady() && target.IsValidTarget(Program.Q.Range) &&
                    Program.HarassMenu["useQ"].Cast <CheckBox>().CurrentValue)
                {
                    Program.Q.Cast(target);
                }

                if (Program.W.IsReady() && target.IsValidTarget(Program.W.Range) && ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Name != "leblancslidereturn" &&
                    Program.HarassMenu["useW"].Cast <CheckBox>().CurrentValue)
                {
                    {
                        var w = Program.W.GetPrediction(target);
                        if (w.HitChance >= EloBuddy.SDK.Enumerations.HitChance.Low)
                        {
                            var predW = Prediction.Position.PredictCircularMissile(target, Program.E.Range, 500, 250, 1450);
                            Program.W.Cast(target);
                        }
                    }
                }

                if (Program.E.IsReady() && target.IsValidTarget(Program.E.Range) && !Program.R.IsReady() &&
                    Program.HarassMenu["useE"].Cast <CheckBox>().CurrentValue)
                {
                    var e = Program.E.GetPrediction(target);
                    if (e.HitChance >= EloBuddy.SDK.Enumerations.HitChance.High)
                    {
                        var predE = Prediction.Position.PredictLinearMissile(target, Program.E.Range, 55, 250, 1600, 0);
                        Program.E.Cast(predE.CastPosition);
                    }
                }
            }
        }
Beispiel #2
0
        public override void Execute()
        {
            var target = TargetSelector2.GetTarget(Q.Range, DamageType.Physical);

            if (target != null && target.IsValidTarget(Q.Range))
            {
                PassiveManager.CastAutoAttack(target);

                if (Settings.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range) && !target.IsZombie && Player.Instance.ManaPercent > Settings.Mana)
                {
                    SpellManager.CastQ();
                }

                if (Settings.UseTiamatHydra)
                {
                    ItemManager.UseHydra(target);
                }

                if (Settings.UseE && E.IsReady() && target.IsValidTarget(E.Range) && !target.IsZombie && Player.Instance.ManaPercent > Settings.Mana)
                {
                    E.Cast();
                }

                if (Settings.UseR && R.IsReady() && target.IsValidTarget(R.Range) && !target.IsZombie && Player.Instance.ManaPercent > Settings.Mana)
                {
                    SpellManager.CastR();
                }
            }
        }
Beispiel #3
0
        public static void Combo()
        {
            var target    = TargetSelector2.GetTarget(1320, DamageType.Magical);
            var jumpPoint = Program.myHero.Position.Extend(target, 600).To3D();
            {
                if (Program.W.IsReady() && !target.IsValidTarget(Program.W.Range) &&
                    target.IsValidTarget(Program.W.Range + Program.Q.Range) &&
                    ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Name != "leblancslidereturn" &&
                    Program.Q.IsReady() && Program.R.IsReady() &&
                    target.Health < QDamage(target) + Q2Damage(target) + RQDamage(target))
                {
                    Program.W.Cast(jumpPoint);
                }
                if (Program.W.IsReady() && !target.IsValidTarget(Program.W.Range) &&
                    target.IsValidTarget(Program.W.Range + Program.Q.Range) &&
                    ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Name != "leblancslidereturn" &&
                    Program.Q.IsReady() &&
                    target.Health < QDamage(target))
                {
                    Program.W.Cast(jumpPoint);
                }


                if (Program.Q.IsReady() && target.IsValidTarget(Program.Q.Range))
                {
                    Program.Q.Cast(target);
                }


                if (Program.R.IsReady() && target.IsValidTarget(Program.Q.Range) && ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Name == "LeblancChaosOrbM")
                {
                    Program.R.Cast(target);
                }


                if (Program.W.IsReady() && target.IsValidTarget(Program.W.Range) && ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Name != "leblancslidereturn" &&
                    !Program.R.IsReady())
                {
                    Program.W.Cast(target);
                }

                else if (Program.R.IsReady() && Program.LastCast[Program.Spells["W"]] + 150 < Environment.TickCount && ObjectManager.Player.Spellbook.GetSpell(SpellSlot.W).Name != "leblancslidereturn")
                {
                    Program.W.Cast(target);
                }


                if (Program.E.IsReady() && target.IsValidTarget(Program.E.Range) && Program.LastCast[Program.Spells["E"]] + 150 < Environment.TickCount)
                {
                    var e = Program.E.GetPrediction(target);
                    if (e.HitChance >= EloBuddy.SDK.Enumerations.HitChance.High)
                    {
                        var predE = Prediction.Position.PredictLinearMissile(target, Program.E.Range, 55, 250, 1600, 0);
                        Program.E.Cast(predE.CastPosition);
                    }
                }
            }
        }
Beispiel #4
0
 public static void ToggleHarass()
 {
     var target = TargetSelector2.GetTarget(720, DamageType.Magical);
     {
         if (Program.Q.IsReady() && Program.HarassMenu["qHarassToggle"].Cast <KeyBind>().CurrentValue&& target.IsValidTarget(Program.Q.Range))
         {
             Program.Q.Cast(target);
         }
     }
 }
        private static void Combo()
        {
            if (Heal != null && SubMenu["Misc"]["heal"].Cast <CheckBox>().CurrentValue&& Heal.IsReady() && HealthPercent <= SubMenu["Misc"]["hp"].Cast <Slider>().CurrentValue &&
                myHero.CountEnemiesInRange2(600) > 0 && Heal.IsReady())
            {
                Heal.Cast();
                Console.WriteLine("heal ");
            }

            var target = TargetSelector2.GetTarget(E.Range, TargetSelector2.DamageType.Physical);

            orbwalker.ForceTarget(target);

            if (!target.IsValidTarget(E.Range))
            {
                return;
            }
            if (SubMenu["Combo"]["E"].Cast <CheckBox>().CurrentValue&& target != null && target.IsValidTarget(E.Range) && E.IsReady() &&
                SubMenu["Misc"][target.ChampionName + "E"].Cast <CheckBox>().CurrentValue)
            {
                Condemn();
                Console.WriteLine(" E");
            }
            if (SubMenu["Combo"]["R"].Cast <CheckBox>().CurrentValue&& myHero.CountEnemiesInRange2(600f) >= (SubMenu["Combo"]["R2"].Cast <Slider>().CurrentValue) && R.IsReady())
            {
                R.Cast();
                Console.WriteLine("R");
            }
            var mousePos = myHero.Position.Extend2(Game.CursorPos, Q.Range);

            if ((SubMenu["Combo"]["Qult"].Cast <CheckBox>().CurrentValue&& Q.IsReady() && myHero.HasBuff("vayneinquisition") && myHero.CountEnemiesInRange2(1500) > 0 && myHero.CountEnemiesInRange2(670) != 1))
            {
                myHero.Spellbook.CastSpell(SpellSlot.Q, mousePos, true);
                Console.WriteLine(" RQ");
            }
            if (SubMenu["Combo"]["useItems"].Cast <CheckBox>().CurrentValue)
            {
                if (Item.HasItem((int)ItemId.Blade_of_the_Ruined_King, myHero) && Item.CanUseItem((int)ItemId.Blade_of_the_Ruined_King) &&
                    HealthPercent <= SubMenu["Combo"]["myhp"].Cast <Slider>().CurrentValue)
                {
                    Item.UseItem((int)ItemId.Blade_of_the_Ruined_King, target);
                }
                if (Item.HasItem((int)ItemId.Bilgewater_Cutlass, myHero) && Item.CanUseItem((int)ItemId.Bilgewater_Cutlass) &&
                    target.IsValidTarget(myHero.GetAutoAttackRange()))
                {
                    Item.UseItem((int)ItemId.Bilgewater_Cutlass, target);
                }
                if (Item.HasItem((int)ItemId.Youmuus_Ghostblade, myHero) && Item.CanUseItem((int)ItemId.Youmuus_Ghostblade) &&
                    myHero.Distance4(target.Position) <= myHero.GetAutoAttackRange())
                {
                    Item.UseItem((int)ItemId.Youmuus_Ghostblade);
                }
            }
        }
Beispiel #6
0
        public override void Execute()
        {
            var target = TargetSelector2.GetTarget(Q.Range, DamageType.Physical);


            if (target != null && target.IsValidTarget(R.Range))
            {
                PassiveManager.CastAutoAttack(target);

                if (Settings.UseYomuus)
                {
                    ItemManager.UseYomu();
                }

                if (Settings.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range) && !target.IsZombie)
                {
                    SpellManager.CastQ();
                }

                if (Settings.UseCutlassBotrk)
                {
                    ItemManager.UseCastables();
                }

                if (Settings.UseTiamatHydra)
                {
                    ItemManager.UseHydra(target);
                }

                if (Settings.UseE && E.IsReady() && target.IsValidTarget(E.Range) && !target.IsZombie)
                {
                    E.Cast();
                }

                if (Settings.UseR && R.IsReady() && target.IsValidTarget(R.Range) && !target.IsZombie && Config.Modes.Combo.UseRonTarget(target.ChampionName) && Player.Instance.HealthPercent <= Config.Modes.Combo.RSliderValue())
                {
                    SpellManager.CastR();
                }
            }
        }
Beispiel #7
0
        public static void Chainz()
        {
            var target = TargetSelector2.GetTarget(950, DamageType.Magical);

            if (Program.E.IsReady() && target.IsValidTarget(Program.E.Range))
            {
                var e = Program.E.GetPrediction(target);
                if (e.HitChance >= EloBuddy.SDK.Enumerations.HitChance.High)
                {
                    var predE = Prediction.Position.PredictLinearMissile(target, Program.E.Range, 55, 250, 1600, 0);
                    Program.E.Cast(predE.CastPosition);
                }
            }
            if (Program.R.IsReady() && target.IsValidTarget(Program.E.Range) && ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Name == "LeblancSoulShackleM")
            {
                var e = Program.E.GetPrediction(target);
                if (e.HitChance >= EloBuddy.SDK.Enumerations.HitChance.High && Program.LastCast[Program.Spells["ER"]] + 1000 < Environment.TickCount)
                {
                    var predR = Prediction.Position.PredictLinearMissile(target, Program.E.Range, 55, 250, 1600, 0);
                    Program.R.Cast(predR.CastPosition);
                }
            }
        }
        public static void Loading_OnLoadingComplete(EventArgs args)
        {
            if (myHero.Hero != Champion.Vayne)
            {
                return;
            }
            Chat.Print("<font color=\"#F20000\"><b>Doctor Vayne:</b></font> Loaded!");
            Chat.Print("Good Luck!");

            Q = new Spell2(SpellSlot.Q);
            W = new Spell2(SpellSlot.W);
            E = new Spell2(SpellSlot.E, 590f);
            E.SetTargetted(0.25f, 2200f);
            R = new Spell2(SpellSlot.R);

            var slot = myHero.GetSpellSlotFromName("summonerheal");

            if (slot != SpellSlot.Unknown)
            {
                Heal = new Spell.Active(slot, 600);
            }

            menu = MainMenu.AddMenu(AddonName, AddonName + " by " + Author + " v1.0");
            menu.AddLabel(AddonName + " Doctor Vayne " + Author);
            menu.AddLabel("Good Luck!");

            SubMenu["Combo"] = menu.AddSubMenu("连招", "Combo");
            SubMenu["Combo"].AddGroupLabel("Q 设置");
            SubMenu["Combo"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["Combo"].Add("Qult", new CheckBox("大招智能 Q", true));
            var Q1 = SubMenu["Combo"].Add("Qmode", new Slider("Q 模式", 0, 0, 1));
            var Q2 = new[] { "智能", "鼠标位置" };

            Q1.DisplayName = Q2[Q1.CurrentValue];

            Q1.OnValueChange +=
                delegate(ValueBase <int> sender, ValueBase <int> .ValueChangeArgs changeArgs)
            {
                sender.DisplayName = Q2[changeArgs.NewValue];
            };
            SubMenu["Combo"].AddSeparator(10);
            SubMenu["Combo"].Add("E", new CheckBox("使用 E", true));
            SubMenu["Combo"].Add("ELast", new CheckBox("使用 E 击杀敌人", false));
            SubMenu["Combo"].Add("PushDistance", new Slider("E 推距离", 380, 300, 425));
            SubMenu["Combo"].Add("R", new CheckBox("使用 R", true));
            SubMenu["Combo"].Add("R2", new Slider("范围内敌人数量 X 时", 2, 0, 5));
            SubMenu["Combo"].Add("noaastealth", new CheckBox("隐身时不普攻", true));
            SubMenu["Combo"].Add("noaastealth2", new Slider("范围内敌人数量 X 时", 2, 0, 5));
            SubMenu["Combo"].AddSeparator(10);
            SubMenu["Combo"].AddGroupLabel("物品设置");
            SubMenu["Combo"].Add("useItems", new CheckBox("使用物品", true));
            SubMenu["Combo"].Add("myhp", new Slider("玩家生命低于X %时使用破败", 55, 0, 100));

            SubMenu["Harass"] = menu.AddSubMenu("骚扰", "Harass");
            SubMenu["Harass"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["Harass"].Add("E", new CheckBox("使用 E", true));

            SubMenu["LastHit"] = menu.AddSubMenu("尾兵", "LastHit");
            SubMenu["LastHit"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["LastHit"].Add("LastHitMana", new Slider("蓝量大于", 80, 0, 100));

            SubMenu["LaneClear"] = menu.AddSubMenu("清线", "LaneClear");
            SubMenu["LaneClear"].Add("Q", new CheckBox("使用 Q", true));
            SubMenu["LaneClear"].Add("LaneClearMana", new Slider("蓝量大于", 85, 0, 100));

            SubMenu["JungleClear"] = menu.AddSubMenu("清野", "JungleClear");
            SubMenu["JungleClear"].Add("E", new CheckBox("使用 E", true));
            SubMenu["JungleClear"].Add("JungleClearMana", new Slider("蓝量大于", 50, 0, 100));


            SubMenu["Misc"] = menu.AddSubMenu("杂项", "Misc");
            SubMenu["Misc"].AddGroupLabel("防突进/技能打断设置");
            SubMenu["Misc"].Add("UseEInterrupt", new CheckBox("使用E防突进/技能打断", true));
            SubMenu["Misc"].Add("AntiGapQ", new CheckBox("使用Q造成间距", true));
            SubMenu["Misc"].AddSeparator(10);
            foreach (var hero in EntityManager.Heroes.Enemies.Where(x => x.IsEnemy))
            {
                SubMenu["Misc"].Add(hero.ChampionName, new CheckBox("对英雄防突进/技能打断 " + hero.ChampionName, true));
            }
            SubMenu["Misc"].AddSeparator(10);
            foreach (var enemy in EntityManager.Heroes.Enemies.Where(x => x.IsEnemy))
            {
                SubMenu["Misc"].Add(enemy.ChampionName + "E", new CheckBox("对英雄使用E " + enemy.ChampionName, true));
            }
            SubMenu["Misc"].AddSeparator(10);
            SubMenu["Misc"].AddGroupLabel("优先攻击W目标");
            SubMenu["Misc"].Add("focusW", new CheckBox("优先攻击W目标触发3W", true));

            SubMenu["Misc"].Add("waypoint", new CheckBox("显示目标行径", true));

            SubMenu["Misc"].AddSeparator(10);
            SubMenu["Misc"].AddGroupLabel("治疗设置");
            SubMenu["Misc"].Add("heal", new CheckBox("使用治疗", true));
            SubMenu["Misc"].Add("hp", new Slider("生命低于", 25, 0, 100));

            SubMenu["QSS"] = menu.AddSubMenu("自动解控", "QSS");
            SubMenu["QSS"].AddGroupLabel("自动水银/米凯尔");
            SubMenu["QSS"].Add("use", new KeyBind("使用水银/米凯尔", false, KeyBind.BindTypes.PressToggle, 'K'));
            SubMenu["QSS"].Add("delay", new Slider("延迟施放设置", 1000, 0, 2000));

            buffs = new[]
            {
                BuffType.Blind, BuffType.Charm, BuffType.CombatDehancer, BuffType.Fear, BuffType.Flee, BuffType.Knockback,
                BuffType.Knockup, BuffType.Polymorph, BuffType.Silence, BuffType.Sleep, BuffType.Snare, BuffType.Stun,
                BuffType.Suppression, BuffType.Taunt, BuffType.Poison
            };

            for (int i = 0; i < buffs.Length; i++)
            {
                SubMenu["QSS"].Add(buffs[i].ToString(), new CheckBox(buffs[i].ToString(), true));
            }

            orbwalker = new Orbwalking.Orbwalker(menu);
            TargetSelector2.Initialize();
            Spell2.Initialize();
            Prediction2.Initialize();

            _traps = new List <GameObject>();

            Obj_AI_Base.OnProcessSpellCast += Obj_AI_Base_OnProcessSpellCast;
            Game.OnUpdate                      += Game_OnUpdate;
            Obj_AI_Base.OnSpellCast            += Obj_AI_Base_OnSpellCast;
            Obj_AI_Base.OnCreate               += Obj_AI_Base_OnCreate;
            Obj_AI_Base.OnDelete               += Obj_AI_Base_OnDelete;
            Orbwalking.AfterAttack             += Orbwalking_AfterAttack;
            Interrupter2.OnInterruptableTarget += Interrupter2_OnInterruptableTarget;
            AntiGapcloser.OnEnemyGapcloser     += AntiGapcloser_OnEnemyGapcloser;
            Drawing.OnDraw                     += Drawing_OnDraw;
            Player.OnIssueOrder                += Player_OnIssueOrder;
        }
        public static void Game_OnUpdate(EventArgs args)
        {
            switch (orbwalker.ActiveMode)
            {
            case Orbwalking.OrbwalkingMode.Combo:
                Combo();
                break;

            case Orbwalking.OrbwalkingMode.Clear:
                JungleClear2();
                break;
            }

            if (SubMenu["QSS"]["use"].Cast <KeyBind>().CurrentValue)
            {
                for (int i = 0; i < buffs.Length; i++)
                {
                    if (myHero.HasBuffOfType(buffs[i]) && SubMenu["QSS"][buffs[i].ToString()].Cast <CheckBox>().CurrentValue&& myHero.CountEnemiesInRange(800) > 0)
                    {
                        var delay = SubMenu["QSS"]["delay"].Cast <Slider>().CurrentValue;
                        if (Item.CanUseItem(3140))
                        {
                            Core.DelayAction(() => { Item.UseItem(3140); }, delay);
                        }
                        else if (Item.CanUseItem(3139))
                        {
                            Core.DelayAction(() => { Item.UseItem(3139); }, delay);
                        }
                    }
                }
            }


            if (SubMenu["Misc"]["focusW"].Cast <CheckBox>().CurrentValue)
            {
                if (FocusWTarget == null && orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo ||
                    orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Mixed)
                {
                    return;
                }
                if (FocusWTarget.IsValidTarget(myHero.GetAutoAttackRange()) && !FocusWTarget.IsDead && orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo ||
                    orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed)
                {
                    TargetSelector2.GetPriority(FocusWTarget);
                    Console.WriteLine("Focus W");
                }
                else
                {
                    TargetSelector2.GetPriority(
                        TargetSelector2.GetTarget(myHero.AttackRange, TargetSelector2.DamageType.Physical));
                }
            }

            AIHeroClient bestEnemy = null;

            foreach (var target in EntityManager.Heroes.Enemies.Where(target => target.IsValidTarget(E.Range)))
            {
                if (target == null)
                {
                    return;
                }

                if (bestEnemy == null)
                {
                    bestEnemy = target;
                }

                else if (myHero.Distance4(target.Position) < myHero.Distance4(bestEnemy.Position))
                {
                    bestEnemy = target;
                }

                if (SubMenu["Combo"]["castE"].Cast <KeyBind>().CurrentValue&& bestEnemy != null)
                {
                    E.CastOnUnit(bestEnemy);
                }
            }
        }
        private static void Obj_AI_Base_OnSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            if (!sender.IsMe)
            {
                return;
            }

            var enemy = TargetSelector2.GetTarget(E.Range, TargetSelector2.DamageType.Physical);

            if (enemy == null)
            {
                return;
            }

            if (enemy != null)
            {
                var mousePos = myHero.Position.Extend2(Game.CursorPos, Q.Range);
                if (SubMenu["Harass"]["Q"].Cast <CheckBox>().CurrentValue&& orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed &&
                    enemy.IsValidTarget(myHero.GetAutoAttackRange()) && Q.IsReady())
                {
                    myHero.Spellbook.CastSpell(SpellSlot.Q, mousePos, true);
                    orbwalker.ForceTarget(enemy);
                }

                if (SubMenu["Harass"]["E"].Cast <CheckBox>().CurrentValue&& E.IsReady() && !Q.IsReady() &&
                    orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed &&
                    enemy.IsValidTarget(myHero.GetAutoAttackRange()))
                {
                    E.Cast(enemy);
                    orbwalker.ForceTarget(enemy);
                }
            }

            var LastHitE = myHero;

            foreach (var Etarget in EntityManager.Heroes.Enemies.Where(Etarget => Etarget.IsValidTarget(E.Range) && Etarget.Path.Count() < 2))
            {
                if (SubMenu["Combo"]["ELast"].Cast <CheckBox>().CurrentValue&& E.IsReady() && myHero.CountEnemiesInRange2(600) <= 1)
                {
                    var dmgE = myHero.GetSpellDamage2(Etarget, SpellSlot.E);
                    if (dmgE > Etarget.Health || (WTarget(Etarget) == 2 && dmgE + Wdmg(Etarget) > Etarget.Health))
                    {
                        LastHitE = Etarget;
                    }
                }

                if (LastHitE != myHero)
                {
                    E.CastOnUnit(LastHitE);
                }
            }

            if (sender.Spellbook.Owner.IsMe)
            {
                if (args.Slot == SpellSlot.Q)
                {
                    if (Tumble.TumbleOrderPos != Vector3.Zero)
                    {
                        if (Tumble.TumbleOrderPos.IsDangerousPosition())
                        {
                            Tumble.TumbleOrderPos = Vector3.Zero;
                            args.Process          = false;
                        }
                        else
                        {
                            Tumble.TumbleOrderPos = Vector3.Zero;
                        }
                    }
                }
            }
        }
Beispiel #11
0
        private static void Game_OnTick(EventArgs args)
        {
            foreach (var item in ActiveItems)
            {
                if (_Player.InventoryItems.All(a => a.Id != item.Id))
                {
                    continue;
                }
                switch (item.ItemType)
                {
                case ItemType.Offensive:
                {
                    if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                    {
                        continue;
                    }

                    var target = TargetSelector2.GetTarget(1320, DamageType.Magical);

                    var menuItem = OffensiveMenu[item.Name + "Manager"].Cast <CheckBox>() ??
                                   Offensive2Menu[item.Name + "Manager"].Cast <CheckBox>();
                    var menuItemMe = OffensiveMenu[item.Name + "ManagerMinMeHP"].Cast <Slider>() ??
                                     Offensive2Menu[item.Name + "ManagerMinMeHP"].Cast <Slider>();
                    var menuItemEnemy = OffensiveMenu[item.Name + "ManagerMinEnemyHP"].Cast <Slider>() ??
                                        Offensive2Menu[item.Name + "ManagerMinEnemyHP"].Cast <Slider>();

                    if (!target.IsValidTarget() || target.Distance(_Player) > item.Range ||
                        (item.MeleeOnly && !_Player.IsMelee) || !menuItem.CurrentValue ||
                        menuItemMe.CurrentValue <= _Player.HealthPercent ||
                        menuItemEnemy.CurrentValue <= target.HealthPercent)
                    {
                        continue;
                    }

                    switch (item.CastType)
                    {
                    case CastType.Targeted:
                    {
                        var spellSlot = _Player.InventoryItems.FirstOrDefault(a => a.Id == item.Id);
                        if (spellSlot != null && Player.GetSpell(spellSlot.SpellSlot).IsReady)
                        {
                            Player.CastSpell(spellSlot.SpellSlot, target);
                        }
                    }
                    break;

                    case CastType.SelfCast:
                    {
                        var spellSlot = _Player.InventoryItems.FirstOrDefault(a => a.Id == item.Id);
                        if (spellSlot != null && Player.GetSpell(spellSlot.SpellSlot).IsReady)
                        {
                            Player.CastSpell(spellSlot.SpellSlot);
                        }
                    }
                    break;
                    }
                }
                break;

                case ItemType.Healing:
                {
                    var menuItem   = PotionsMenu[item.Name + "Manager"].Cast <CheckBox>();
                    var menuItemMe = PotionsMenu[item.Name + "ManagerMinMeHP"].Cast <Slider>();
                    if (_Player.InFountain() || _Player.HasBuff(item.BuffName) || !menuItem.CurrentValue ||
                        menuItemMe.CurrentValue < _Player.HealthPercent)
                    {
                        continue;
                    }
                    var spellSlot = _Player.InventoryItems.FirstOrDefault(a => a.Id == item.Id);
                    if (spellSlot != null && Player.GetSpell(spellSlot.SpellSlot).IsReady)
                    {
                        Player.CastSpell(spellSlot.SpellSlot);
                    }
                }
                break;

                case ItemType.ManaRestore:
                {
                    var menuItem   = PotionsMenu[item.Name + "Manager"].Cast <CheckBox>();
                    var menuItemMe = PotionsMenu[item.Name + "ManagerMinMeMana"].Cast <Slider>();
                    if (_Player.InFountain() || _Player.HasBuff(item.BuffName) || !menuItem.CurrentValue ||
                        menuItemMe.CurrentValue < _Player.ManaPercent)
                    {
                        continue;
                    }
                    var spellSlot = _Player.InventoryItems.FirstOrDefault(a => a.Id == item.Id);
                    if (spellSlot != null && Player.GetSpell(spellSlot.SpellSlot).IsReady)
                    {
                        Player.CastSpell(spellSlot.SpellSlot);
                    }
                }
                break;

                case ItemType.Cleanse:
                {
                    if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))
                    {
                        return;
                    }

                    foreach (var buffInstance in _Player.Buffs)
                    {
                        if (BuffTypes.ContainsKey(buffInstance.Type) && Cleansers[BuffTypes[buffInstance.Type]].Cast <CheckBox>().CurrentValue)
                        {
                            var spellSlot = _Player.InventoryItems.FirstOrDefault(a => a.Id == item.Id);
                            if (spellSlot != null && Player.GetSpell(spellSlot.SpellSlot).IsReady)
                            {
                                Player.CastSpell(spellSlot.SpellSlot, _Player);
                            }
                        }
                    }
                }
                break;
                }
            }
        }