示例#1
0
文件: Riven.cs 项目: mirinsharp/SAC
        public bool CheckR2(Obj_AI_Hero t)
        {
            if (ObjectManager.Player.HasBuff("RivenFengShuiEngine") && !ConfigMenu.Item("CDISABLER").GetValue <KeyBind>().Active&& Spells[R].IsReady() && t.Distance(ObjectManager.Player.ServerPosition) < 900 && Orbwalker.ActiveMode == SCommon.Orbwalking.Orbwalker.Mode.Combo)
            {
                switch (ConfigMenu.Item("CR2MODE").GetValue <StringList>().SelectedIndex)
                {
                case 1: if (t.Health - CalculateDamageR2(t) > 0 || t.Distance(ObjectManager.Player.ServerPosition) > 650f)
                    {
                        return(false);
                    }
                    break;

                case 2: if (t.Distance(ObjectManager.Player.ServerPosition) < 600)
                    {
                        return(false);
                    }
                    break;

                case 3: if ((t.HealthPercent > 25 && t.Health - CalculateDamageR2(t) - CalculateComboDamage(t) - CalculateAADamage(t, 2) > 0) || t.Distance(ObjectManager.Player.ServerPosition) > 650f)
                    {
                        return(false);
                    }
                    break;
                }
                return(true);
            }
            return(false);
        }
示例#2
0
        public void Combo()
        {
            //R
            if (ConfigMenu.Item("CUSER").GetValue <bool>())
            {
                UltMethods[ConfigMenu.Item("CUSERMETHOD").GetValue <StringList>().SelectedIndex]();
            }
            if (Spells[Q].IsReady() && ConfigMenu.Item("CUSEQ").GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(Spells[Q].Range / 2f, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Helpers.BallMgr.Post(Helpers.BallMgr.Command.Attack, t);
                }
            }

            if (Spells[W].IsReady() && ConfigMenu.Item("CUSEW").GetValue <bool>())
            {
                if (CountEnemiesInRangePredicted(Spells[W].Range, 50, 0.25f) > 0)
                {
                    Helpers.BallMgr.Post(Helpers.BallMgr.Command.Dissonance, null);
                }
            }

            if (Spells[E].IsReady() && !Spells[W].IsReady() && ConfigMenu.Item("CUSEE").GetValue <bool>())
            {
                if (Helpers.BallMgr.CheckHeroCollision(ObjectManager.Player.ServerPosition))
                {
                    Helpers.BallMgr.Post(Helpers.BallMgr.Command.Protect, ObjectManager.Player);
                }
            }
        }
示例#3
0
文件: Riven.cs 项目: mirinsharp/SAC
        protected override void AntiGapcloser_OnEnemyGapcloser(ActiveGapcloser gapcloser)
        {
            if (!gapcloser.Sender.IsEnemy)
            {
                return;
            }

            if (Spells[W].IsReady() && gapcloser.End.Distance(ObjectManager.Player.ServerPosition) <= Spells[W].Range && ConfigMenu.Item("MANTIGAPW").GetValue <bool>())
            {
                LeagueSharp.Common.Utility.DelayAction.Add(100 + Game.Ping, () => Spells[W].Cast());
            }

            if (ConfigMenu.Item("MANTIGAPQ").GetValue <bool>() && Animation.QStacks == 2)
            {
                if (gapcloser.Sender.Spellbook.GetSpell(gapcloser.Slot).SData.MissileSpeed != 0)
                {
                    LeagueSharp.Common.Utility.DelayAction.Add((int)(gapcloser.End.Distance(gapcloser.Start) / gapcloser.Sender.Spellbook.GetSpell(gapcloser.Slot).SData.MissileSpeed * 1000f) - Game.Ping, () =>
                    {
                        if (Items.GetWardSlot() != null)
                        {
                            Items.UseItem((int)Items.GetWardSlot().Id, ObjectManager.Player.ServerPosition + (gapcloser.End - gapcloser.Start).Normalized() * 40);
                        }
                        Spells[Q].Cast(ObjectManager.Player.ServerPosition);
                    });
                }
            }
        }
示例#4
0
        public void BeforeOrbwalk()
        {
            bool autoQ = ConfigMenu.Item("SAutoCarry.Veigar.Misc.AutoQLastHit").GetValue <KeyBind>().Active;
            bool autoW = ConfigMenu.Item("SAutoCarry.Veigar.Misc.AutoWImmobile").GetValue <bool>();
            bool autoR = ConfigMenu.Item("SAutoCarry.Veigar.AutoR.Enabled").GetValue <bool>();

            foreach (var enemy in HeroManager.Enemies)
            {
                if (enemy.IsValidTarget(Spells[W].Range - 150) && enemy.IsImmobilized() && autoW)
                {
                    Spells[W].Cast(enemy.ServerPosition);
                }

                if (enemy.IsValidTarget(Spells[R].Range) && autoR && !ConfigMenu.Item("SAutoCarry.Veigar.AutoR.DontUlt" + enemy.ChampionName).GetValue <bool>())
                {
                    if (CalculateDamageR(enemy) >= enemy.Health)
                    {
                        Spells[R].CastOnUnit(enemy);
                    }
                }
            }

            if (autoQ && Orbwalker.ActiveMode != SCommon.Orbwalking.Orbwalker.Mode.Combo)
            {
                StackQ();
            }
        }
示例#5
0
文件: Riven.cs 项目: mirinsharp/SAC
        public bool CheckR1(Obj_AI_Hero t)
        {
            if (!ObjectManager.Player.HasBuff("RivenFengShuiEngine") && !ConfigMenu.Item("CDISABLER").GetValue <KeyBind>().Active&& Spells[R].IsReady() && t.Distance(ObjectManager.Player.ServerPosition) < 500 && Orbwalker.ActiveMode == SCommon.Orbwalking.Orbwalker.Mode.Combo)
            {
                if (ObjectManager.Player.GetSpellDamage(t, SpellSlot.Q) * 2 + ObjectManager.Player.GetSpellDamage(t, SpellSlot.W) + CalculateAADamage(t, 2) >= t.Health && ObjectManager.Player.CountEnemiesInRange(1000) == 1)
                {
                    return(false);
                }

                if (ObjectManager.Player.ServerPosition.CountEnemiesInRange(500) > 1)
                {
                    return(true);
                }

                switch (ConfigMenu.Item("CR1MODE").GetValue <StringList>().SelectedIndex)
                {
                case 1: if (!(t.Health - CalculateComboDamage(t) - CalculateDamageR2(t) <= 0))
                    {
                        return(false);
                    }
                    break;

                case 2: if (!(t.Health - CalculateComboDamage(t) < 1000 && t.Health >= 1000))
                    {
                        return(false);
                    }
                    break;
                }
                return(true);
            }
            return(false);
        }
示例#6
0
文件: Riven.cs 项目: mirinsharp/SAC
        public void LaneClear()
        {
            var minion = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, 400, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth).FirstOrDefault();

            if (minion != null)
            {
                if (ConfigMenu.Item("LUSEQ").GetValue <bool>() && Spells[Q].IsReady())
                {
                    Animation.SetAttack(true);
                    if (!IsDoingFastQ && !SCommon.Orbwalking.Utility.InAARange(minion))
                    {
                        Spells[Q].Cast(minion.ServerPosition);
                    }
                    IsDoingFastQ = true;
                }

                if (ConfigMenu.Item("LUSEW").GetValue <bool>() && Spells[W].IsReady() && (ObjectManager.Get <Obj_AI_Minion>().Count(p => MinionManager.IsMinion(p) && p.IsValidTarget(Spells[W].Range)) >= ConfigMenu.Item("LMINW").GetValue <Slider>().Value || minion.IsJungleMinion()))
                {
                    if (ConfigMenu.Item("LUSETIAMAT").GetValue <bool>())
                    {
                        CastCrescent();
                    }
                    Spells[W].Cast();
                }
            }
        }
示例#7
0
        public void Harass()
        {
            if (ObjectManager.Player.ManaPercent < ConfigMenu.Item("HMANA").GetValue <Slider>().Value)
            {
                return;
            }

            if (Spells[Q].IsReady() && ConfigMenu.Item("HUSEQ").GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(Spells[Q].Range / 2f, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Helpers.BallMgr.Post(Helpers.BallMgr.Command.Attack, t);
                }
            }

            if (Spells[W].IsReady() && ConfigMenu.Item("HUSEW").GetValue <bool>())
            {
                if (CountEnemiesInRangePredicted(Spells[W].Range, 50, 0.25f) > 0)
                {
                    Helpers.BallMgr.Post(Helpers.BallMgr.Command.Dissonance, null);
                }
            }

            if (Spells[E].IsReady() && !Spells[W].IsReady() && ConfigMenu.Item("HUSEE").GetValue <bool>())
            {
                if (Helpers.BallMgr.CheckHeroCollision(ObjectManager.Player.ServerPosition))
                {
                    Helpers.BallMgr.Post(Helpers.BallMgr.Command.Protect, ObjectManager.Player);
                }
            }
        }
示例#8
0
        public void LaneClear()
        {
            if (ObjectManager.Player.ManaPercent < ConfigMenu.Item("LMANA").GetValue <Slider>().Value || Utils.TickCount - m_lastLaneClearTick < 250 || !ConfigMenu.Item("TOGGLESPELL").GetValue <KeyBind>().Active)
            {
                return;
            }

            m_lastLaneClearTick = Utils.TickCount;

            if (Spells[Q].IsReady() && ConfigMenu.Item("LUSEQ").GetValue <bool>())
            {
                var farm = MinionManager.GetBestCircularFarmLocation(MinionManager.GetMinions(Spells[Q].Range / 2f, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.None).Select(p => p.ServerPosition.To2D()).ToList(), Spells[Q].Width, Spells[Q].Range);
                if (farm.MinionsHit > 0 && Helpers.BallMgr.IsBallReady)
                {
                    Spells[Q].Cast(farm.Position, true);
                }
            }

            if (Spells[W].IsReady() && ConfigMenu.Item("LUSEW").GetValue <bool>())
            {
                if (ObjectManager.Get <Obj_AI_Minion>().Count(p => (p.IsEnemy || p.IsJungleMinion()) && p.ServerPosition.Distance(Helpers.BallMgr.Position) <= Spells[W].Range) >= ConfigMenu.Item("LMINW").GetValue <Slider>().Value)
                {
                    Spells[W].Cast(ObjectManager.Player.ServerPosition, true);
                }
            }

            if (Spells[E].IsReady() && ConfigMenu.Item("LUSEE").GetValue <bool>())
            {
                if (MinionManager.GetMinions(ObjectManager.Player.AttackRange, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth).Any(p => p.GetJunglePriority() == 1))
                {
                    Spells[E].CastOnUnit(ObjectManager.Player);
                }
            }
        }
示例#9
0
文件: Riven.cs 项目: mirinsharp/SAC
        public void Combo()
        {
            var t = Target.Get(600, true);

            if (t != null)
            {
                ComboInstance.MethodsOnUpdate[ConfigMenu.Item(String.Format("CMETHOD{0}", t.ChampionName)).GetValue <StringList>().SelectedIndex](t);
            }
        }
示例#10
0
 protected override void AntiGapcloser_OnEnemyGapcloser(ActiveGapcloser gapcloser)
 {
     if (ConfigMenu.Item("SAutoCarry.Veigar.Misc.AntiGapcloseE").GetValue <bool>())
     {
         if (gapcloser.End.Distance(ObjectManager.Player.ServerPosition) < 350)
         {
             Spells[E].Cast(ObjectManager.Player.ServerPosition);
         }
     }
 }
示例#11
0
文件: Riven.cs 项目: mirinsharp/SAC
 private void Animation_OnAnimationCastable(string animname)
 {
     if (Orbwalker.ActiveMode == SCommon.Orbwalking.Orbwalker.Mode.Combo || Orbwalker.ActiveMode == SCommon.Orbwalking.Orbwalker.Mode.Mixed || ConfigMenu.Item("CSHYKEY").GetValue <KeyBind>().Active || ConfigMenu.Item("CFLASHKEY").GetValue <KeyBind>().Active)
     {
         var t = Target.Get(1000);
         if (t != null)
         {
             ComboInstance.MethodsOnAnimation[ConfigMenu.Item(String.Format("CMETHOD{0}", t.ChampionName)).GetValue <StringList>().SelectedIndex](t, animname);
         }
     }
 }
示例#12
0
文件: Riven.cs 项目: mirinsharp/SAC
        public void Flee()
        {
            if (Spells[Q].IsReady() && Animation.QStacks != 2)
            {
                Spells[Q].Cast(Game.CursorPos);
            }

            if (ConfigMenu.Item("MFLEEWJ").GetValue <bool>())
            {
                if (Spells[Q].IsReady())
                {
                    var curSpot = WallJump.GetSpot(ObjectManager.Player.ServerPosition);
                    if (curSpot.Start != Vector3.Zero && Animation.QStacks == 2)
                    {
                        if (Spells[E].IsReady())
                        {
                            Spells[E].Cast(curSpot.End);
                        }
                        else
                        if (Items.GetWardSlot() != null)
                        {
                            Items.UseItem((int)Items.GetWardSlot().Id, curSpot.End);
                        }
                        Spells[Q].Cast(curSpot.End);
                        return;
                    }
                    var spot = WallJump.GetNearest(Game.CursorPos);
                    if (spot.Start != Vector3.Zero)
                    {
                        ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, spot.Start);
                        return;
                    }
                    else
                    {
                        Spells[E].Cast(Game.CursorPos);
                    }
                }
            }
            else
            {
                if (Spells[Q].IsReady() && Animation.QStacks == 2)
                {
                    Spells[Q].Cast(Game.CursorPos);
                }

                if (Spells[E].IsReady())
                {
                    Spells[E].Cast(Game.CursorPos);
                }
            }

            ObjectManager.Player.IssueOrder(GameObjectOrder.MoveTo, Game.CursorPos);
        }
示例#13
0
文件: Azir.cs 项目: wade1990/PortAIO
 protected override void AntiGapcloser_OnEnemyGapcloser(ActiveGapcloser gapcloser)
 {
     if (AntiGapCloserEnabled)
     {
         if (ConfigMenu.Item("SAutoCarry.Azir.Misc.AntiGapCloser." + gapcloser.Sender.Spellbook.GetSpell(gapcloser.Slot).Name).GetValue <bool>())
         {
             if (gapcloser.End.Distance(ObjectManager.Player.ServerPosition) < 200)
             {
                 Spells[R].Cast(gapcloser.End.Extend(gapcloser.Start, 100));
             }
         }
     }
 }
示例#14
0
 public void BeforeDraw()
 {
     if (ConfigMenu.Item("DDRAWCOMBOMODE").GetValue <bool>())
     {
         foreach (var enemy in HeroManager.Enemies)
         {
             if (!enemy.IsDead && enemy.IsVisible)
             {
                 var text_pos = Drawing.WorldToScreen(enemy.Position);
                 Drawing.DrawText((int)text_pos.X - 20, (int)text_pos.Y + 35, System.Drawing.Color.Aqua, ConfigMenu.Item(String.Format("CMETHOD{0}", enemy.ChampionName)).GetValue <StringList>().SelectedValue);
             }
         }
     }
 }
示例#15
0
文件: Riven.cs 项目: mirinsharp/SAC
        private void Game_OnWndProc(WndEventArgs args)
        {
            if (args.Msg == (uint)WindowsMessages.WM_LBUTTONDBLCLK)
            {
                var clickedTarget = HeroManager.Enemies
                                    .FindAll(hero => hero.IsValidTarget() && hero.Distance(Game.CursorPos, true) < 40000) // 200 * 200
                                    .OrderBy(h => h.Distance(Game.CursorPos, true)).FirstOrDefault();

                if (clickedTarget != null)
                {
                    var typeVal = ConfigMenu.Item(String.Format("CMETHOD{0}", clickedTarget.ChampionName)).GetValue <StringList>();
                    typeVal.SelectedIndex = (typeVal.SelectedIndex + 1) % 3;
                    ConfigMenu.Item(String.Format("CMETHOD{0}", clickedTarget.ChampionName)).SetValue(typeVal);
                }
            }
        }
示例#16
0
文件: Riven.cs 项目: mirinsharp/SAC
 public void LastHit()
 {
     if (ConfigMenu.Item("LASTUSETIAMAT").GetValue <bool>() && IsCrestcentReady)
     {
         var minion = MinionManager.GetMinions(ObjectManager.Player.ServerPosition, 400, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth).FirstOrDefault();
         if (minion != null)
         {
             float  dist = minion.Distance(ObjectManager.Player.ServerPosition);
             double dmg  = (ObjectManager.Player.BaseAttackDamage + ObjectManager.Player.FlatPhysicalDamageMod) * (1 - dist * 0.001);
             if (minion.Health <= dmg)
             {
                 CastCrescent();
             }
         }
     }
 }
示例#17
0
        public override double CalculateDamageQ(AIHeroClient target)
        {
            double dmg = 0.0;

            if (ConfigMenu.Item("CUSEQ").GetValue <bool>() && Spells[Q].IsReady())
            {
                dmg = ObjectManager.Player.GetSpellDamage(target, SpellSlot.Q);
                int collCount = Spells[R].GetCollision(Helpers.BallMgr.Position.To2D(), new List <Vector2>()
                {
                    target.ServerPosition.To2D()
                }).Count();
                int percent = 10 - (collCount > 6 ? 6 : collCount);
                dmg = dmg * percent * 0.1;
            }
            return(dmg);
        }
示例#18
0
        public void BeforeDraw()
        {
            if (ConfigMenu.Item("DDRAWKILL").GetValue <bool>())
            {
                foreach (var enemy in HeroManager.Enemies)
                {
                    if (!enemy.IsDead && enemy.Health < CalculateComboDamage(enemy))
                    {
                        var killable_pos = Drawing.WorldToScreen(enemy.Position);
                        Drawing.DrawText((int)killable_pos.X - 20, (int)killable_pos.Y + 35, System.Drawing.Color.Red, "Killable");
                    }
                }
            }

            if (ConfigMenu.Item("DDRAWBALL").GetValue <bool>() && Helpers.BallMgr.Position != Vector3.Zero)
            {
                Render.Circle.DrawCircle(Helpers.BallMgr.Position, 130f, System.Drawing.Color.Red, 1);
            }
        }
示例#19
0
文件: Jax.cs 项目: mirinsharp/SAC
        public override void CreateConfigMenu()
        {
            Menu combo = new Menu("Combo", "SAutoCarry.Jax.Combo");

            combo.AddItem(new MenuItem("SAutoCarry.Jax.Combo.UseQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Jax.Combo.UseW", "Use W").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Jax.Combo.UseE", "Use E").SetValue(true)).ValueChanged += (s, ar) => { ConfigMenu.Item("SAutoCarry.Jax.Combo.EStun").Show(ar.GetNewValue <bool>()); ConfigMenu.Item("SAutoCarry.Jax.Combo.EBeforeJump").Show(ar.GetNewValue <bool>()); };
            combo.AddItem(new MenuItem("SAutoCarry.Jax.Combo.EStun", "Stun With E After Jump").SetValue(new KeyBind('T', KeyBindType.Toggle)).Show(combo.Item("SAutoCarry.Jax.Combo.UseE").GetValue <bool>()));
            combo.AddItem(new MenuItem("SAutoCarry.Jax.Combo.EBeforeJump", "Use E Before Q").SetValue(new KeyBind('Z', KeyBindType.Toggle)).Show(combo.Item("SAutoCarry.Jax.Combo.UseE").GetValue <bool>()));
            combo.AddItem(new MenuItem("SAutoCarry.Jax.Combo.UseTiamat", "Use Tiamat/Hydra").SetValue(true));


            Menu harass = new Menu("Harass", "SAutoCarry.Jax.Harass");

            harass.AddItem(new MenuItem("SAutoCarry.Jax.Harass.UseQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("SAutoCarry.Jax.Harass.UseW", "Use W").SetValue(true));
            harass.AddItem(new MenuItem("SAutoCarry.Jax.Harass.UseE", "Use E").SetValue(true));


            Menu laneclear = new Menu("LaneClear/JungleClear", "SAutoCarry.Jax.LaneClear");

            laneclear.AddItem(new MenuItem("SAutoCarry.Jax.LaneClear.UseQ", "Use Q").SetValue(false)).SetTag(0);
            laneclear.AddItem(new MenuItem("SAutoCarry.Jax.LaneClear.UseW", "Use W").SetValue(true)).SetTag(0);
            laneclear.AddItem(new MenuItem("SAutoCarry.Jax.LaneClear.UseE", "Use E").SetValue(true)).SetTag(0);
            laneclear.AddItem(new MenuItem("SAutoCarry.Jax.JungleClear.UseQ", "Use Q").SetValue(true)).SetTag(1);
            laneclear.AddItem(new MenuItem("SAutoCarry.Jax.JungleClear.UseW", "Use W").SetValue(true)).SetTag(1);
            laneclear.AddItem(new MenuItem("SAutoCarry.Jax.JungleClear.UseE", "Use E").SetValue(true)).SetTag(1);
            laneclear.AddItem(new MenuItem("SAutoCarry.Jax.LaneClear.Mode", "Show Settings for: ").SetValue(new StringList(new[] { "Lane Clear", "Jungle Clear" }))).SetTag(2).ValueChanged += (s, ar) => LaneClearMenuSwitch(ar.GetNewValue <StringList>().SelectedIndex);

            Menu misc = new Menu("Misc", "SautoCarry.Jax.Misc");

            misc.AddItem(new MenuItem("SAutoCarry.Jax.Misc.WJump", "Ward Jump").SetValue(new KeyBind('G', KeyBindType.Press)));

            ConfigMenu.AddSubMenu(combo);
            ConfigMenu.AddSubMenu(harass);
            ConfigMenu.AddSubMenu(laneclear);
            ConfigMenu.AddSubMenu(misc);

            ConfigMenu.AddToMainMenu();

            LaneClearMenuSwitch(ConfigMenu.Item("SAutoCarry.Jax.LaneClear.Mode").GetValue <StringList>().SelectedIndex);
        }
示例#20
0
文件: Riven.cs 项目: mirinsharp/SAC
        public void BeforeDraw()
        {
            if (ConfigMenu.Item("DDRAWCOMBOMODE").GetValue <bool>())
            {
                foreach (var enemy in HeroManager.Enemies)
                {
                    if (!enemy.IsDead && enemy.IsVisible)
                    {
                        var text_pos = Drawing.WorldToScreen(enemy.Position);
                        Drawing.DrawText((int)text_pos.X - 20, (int)text_pos.Y + 35, System.Drawing.Color.Aqua, ConfigMenu.Item(String.Format("CMETHOD{0}", enemy.ChampionName)).GetValue <StringList>().SelectedValue);
                    }
                }
            }

            if (ConfigMenu.Item("DRAWULTSTATUS").GetValue <bool>())
            {
                var text_pos = Drawing.WorldToScreen(ObjectManager.Player.Position);
                Drawing.DrawText((int)text_pos.X - 20, (int)text_pos.Y + 35, System.Drawing.Color.Aqua, "Disable R Usage: " + (ConfigMenu.Item("CDISABLER").GetValue <KeyBind>().Active ? "On" : "Off"));
            }
        }
示例#21
0
        public void Combo()
        {
            bool waitforE = false;

            if (Spells[E].IsReady() && ConfigMenu.Item("SAutoCarry.Veigar.Combo.UseE").GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(1000, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Spells[E].SPredictionCastRing(t, 80, HitChance.High, ConfigMenu.Item("SAutoCarry.Veigar.Combo.EMode").GetValue <StringList>().SelectedIndex == 0);
                    waitforE = true;
                }
            }

            if (Spells[W].IsReady() && ConfigMenu.Item("SAutoCarry.Veigar.Combo.UseW").GetValue <bool>() && !waitforE)
            {
                var t = TargetSelector.GetTarget(Spells[W].Range, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Spells[W].SPredictionCast(t, HitChance.High);
                }
            }

            if (Spells[R].IsReady() && ConfigMenu.Item("SAutoCarry.Veigar.Combo.UseR").GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(Spells[R].Range, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null && CalculateComboDamage(t, 4) >= t.Health)
                {
                    Spells[R].CastOnUnit(t);
                }
            }

            if (Spells[Q].IsReady() && ConfigMenu.Item("SAutoCarry.Veigar.Combo.UseQ").GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(Spells[Q].Range, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Spells[Q].SPredictionCast(t, HitChance.High);
                }
            }
        }
示例#22
0
        public void LaneClear()
        {
            if (ObjectManager.Player.ManaPercent < ConfigMenu.Item("SAutoCarry.Veigar.LaneClear.Mana").GetValue <Slider>().Value)
            {
                return;
            }

            if (ConfigMenu.Item("SAutoCarry.Veigar.LaneClear.UseQ").GetValue <bool>())
            {
                StackQ();
            }

            if (ConfigMenu.Item("SAutoCarry.Veigar.LaneClear.UseW").GetValue <bool>())
            {
                var farmLocation = MinionManager.GetBestCircularFarmLocation(MinionManager.GetMinions(Spells[W].Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth).Select(q => q.ServerPosition.To2D()).ToList(), Spells[W].Width, Spells[W].Range);
                if (farmLocation.MinionsHit >= ConfigMenu.Item("SAutoCarry.Veigar.LaneClear.MinW").GetValue <Slider>().Value)
                {
                    Spells[W].Cast(farmLocation.Position);
                }
            }
        }
示例#23
0
        public void Harass()
        {
            if (ObjectManager.Player.ManaPercent < ConfigMenu.Item("SAutoCarry.Veigar.Harass.Mana").GetValue <Slider>().Value)
            {
                return;
            }

            bool waitforE = false;

            if (Spells[E].IsReady() && ConfigMenu.Item("SAutoCarry.Veigar.Harass.UseE").GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(1000, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Spells[E].SPredictionCastRing(t, 80, HitChance.High, ConfigMenu.Item("SAutoCarry.Veigar.Harass.EMode").GetValue <StringList>().SelectedIndex == 0);
                    waitforE = true;
                }
            }

            if (Spells[W].IsReady() && ConfigMenu.Item("SAutoCarry.Veigar.Harass.UseW").GetValue <bool>() && !waitforE)
            {
                var t = TargetSelector.GetTarget(Spells[W].Range, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Spells[W].SPredictionCast(t, HitChance.High);
                }
            }

            if (Spells[Q].IsReady() && ConfigMenu.Item("SAutoCarry.Veigar.Harass.UseQ").GetValue <bool>())
            {
                var t = TargetSelector.GetTarget(Spells[Q].Range, LeagueSharp.Common.TargetSelector.DamageType.Magical);
                if (t != null)
                {
                    Spells[Q].SPredictionCast(t, HitChance.High);
                }
            }
        }
示例#24
0
        public override void CreateConfigMenu()
        {
            Menu combo = new Menu("Combo", "SAutoCarry.Jhin.Combo");

            combo.AddItem(new MenuItem("SAutoCarry.Jhin.Combo.UseQ", "UseQ").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Jhin.Combo.UseW", "Use W").SetValue(true)).ValueChanged += (s, ar) => ConfigMenu.Item("SAutoCarry.Jhin.Combo.UseWMarked").Show(ar.GetNewValue <bool>());
            combo.AddItem(new MenuItem("SAutoCarry.Jhin.Combo.UseWMarked", "Use W Only If Target Is Marked").SetValue(true)).Show(combo.Item("SAutoCarry.Jhin.Combo.UseW").GetValue <bool>());
            combo.AddItem(new MenuItem("SAutoCarry.Jhin.Combo.UseEImmobile", "Use E Immobile Targets").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Jhin.Combo.UseEDashing", "Use E Dashing Targets").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Jhin.Combo.UseR", "Use R Shoots If Ult Activated").SetValue(true));

            Menu harass = new Menu("Harass", "SAutoCarry.Jhin.Harass");

            harass.AddItem(new MenuItem("SAutoCarry.Jhin.Harass.UseQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("SAutoCarry.Jhin.Harass.UseW", "Use W").SetValue(true));
            harass.AddItem(new MenuItem("SAutoCarry.Jhin.Harass.Toggle", "Toggle Harass").SetValue(new KeyBind('T', KeyBindType.Toggle)));

            Menu misc = new Menu("Misc", "SAutoCarry.Jhin.Misc");

            misc.AddItem(new MenuItem("SAutoCarry.Jhin.Misc.AdjustW", "Adjust W Range").SetValue(new Slider(1000, 0, 2500))).ValueChanged += (s, ar) => Spells[W].Range = ar.GetNewValue <Slider>().Value;
            misc.AddItem(new MenuItem("SAutoCarry.Jhin.Misc.AdjustR", "Adjust R Range").SetValue(new Slider(1000, 0, 3500))).ValueChanged += (s, ar) => Spells[R].Range = ar.GetNewValue <Slider>().Value;
            misc.AddItem(new MenuItem("SAutoCarry.Jhin.Misc.KillStealRW", "KillSteal").SetValue(false));

            ConfigMenu.AddSubMenu(combo);
            ConfigMenu.AddSubMenu(harass);
            ConfigMenu.AddSubMenu(misc);
            ConfigMenu.AddToMainMenu();
        }
示例#25
0
        public override void CreateConfigMenu()
        {
            Menu combo = new Menu("Combo", "SAutoCarry.Blitzcrank.Combo");

            combo.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Combo.UseQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Combo.UseW", "Use W").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Combo.UseE", "Use E").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Combo.UseR", "Use R").SetValue(true)).ValueChanged += (s, ar) => ConfigMenu.Item("SAutoCarry.Blitzcrank.Combo.UseRHit").Show(ar.GetNewValue <bool>());
            combo.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Combo.UseRHit", "Use R When Enemy Count >= ").SetValue(new Slider(2, 1, 5))).Show(combo.Item("SAutoCarry.Blitzcrank.Combo.UseR").GetValue <bool>());
            //
            Menu nograb = new Menu("Grab Filter", "SAutoCarry.Blitzcrank.Combo.Grabfilter");

            foreach (AIHeroClient enemy in HeroManager.Enemies)
            {
                nograb.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Combo.Grabfilter.DontGrab" + enemy.ChampionName, string.Format("Dont Grab {0}", enemy.ChampionName)).SetValue(false));
            }
            //
            combo.AddSubMenu(nograb);


            Menu harass = new Menu("Harass", "SAutoCarry.Blitzcrank.Harass");

            harass.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Harass.UseQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Harass.UseE", "Use E").SetValue(true));


            Menu laneclear = new Menu("LaneClear/JungleClear", "SAutoCarry.Blitzcrank.LaneClear");

            laneclear.AddItem(new MenuItem("SAutoCarry.Blitzcrank.LaneClear.UseR", "Use R").SetValue(true));
            laneclear.AddItem(new MenuItem("SAutoCarry.Blitzcrank.LaneClear.MinMana", "Min Mana Percent").SetValue(new Slider(50, 100, 0)));

            Menu misc = new Menu("Misc", "SAutoCarry.Blitzcrank.Misc");

            misc.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Misc.InterruptQ", "Interrupt With Q").SetValue(true));
            misc.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Misc.InterruptR", "Interrupt With R").SetValue(true));
            //
            Menu autograb = new Menu("Auto Grab (Q)", "SAutoCarry.Blitzcrank.Misc.AutoGrab");

            foreach (AIHeroClient enemy in HeroManager.Enemies)
            {
                autograb.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Misc.AutoGrab.DontGrab" + enemy.ChampionName, string.Format("Dont Grab {0}", enemy.ChampionName)).SetValue(false));
            }
            autograb.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Misc.AutoGrab.Immobile", "Auto Grab Immobile Target").SetValue(true));
            autograb.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Misc.AutoGrab.Range", "Max. Grab Range").SetValue(new Slider(800, 1, 925)));
            autograb.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Misc.AutoGrab.MinHp", "Min. HP Percent").SetValue(new Slider(40, 1, 100)));
            autograb.AddItem(new MenuItem("SAutoCarry.Blitzcrank.Misc.AutoGrab.Enabled", "Enabled").SetValue(new KeyBind('T', KeyBindType.Toggle)));
            //
            misc.AddSubMenu(autograb);


            ConfigMenu.AddSubMenu(combo);
            ConfigMenu.AddSubMenu(harass);
            ConfigMenu.AddSubMenu(laneclear);
            ConfigMenu.AddSubMenu(misc);

            ConfigMenu.AddToMainMenu();
        }
示例#26
0
 public bool IsBlacklistedComboGrab(AIHeroClient hero)
 {
     return(ConfigMenu.Item("SAutoCarry.Blitzcrank.Combo.Grabfilter.DontGrab" + hero.ChampionName).GetValue <bool>());
 }
示例#27
0
        public override void SetSpells()
        {
            Spells[Q] = new Spell(SpellSlot.Q, 825f * 2f);
            Spells[Q].SetSkillshot(0f, 130f, 1400f, false, SkillshotType.SkillshotLine);

            Spells[W] = new Spell(SpellSlot.W, 220f);

            Spells[E] = new Spell(SpellSlot.E, 1100);

            Spells[R] = new Spell(SpellSlot.R, 330f);

            UltMethods[0] = () =>
            {
                {
                    if (Helpers.BallMgr.Position.CountEnemiesInRange(Spells[R].Range) >= ConfigMenu.Item("CUSERHIT").GetValue <Slider>().Value)
                    {
                        Helpers.BallMgr.Post(Helpers.BallMgr.Command.Shockwave, null);
                        return;
                    }
                }

                if (Spells[Q].IsReady() && Spells[R].IsReady())
                {
                    Vector3 bestQPos       = Vector3.Zero;
                    int     bestEnemyCount = 0;
                    foreach (var enemy in HeroManager.Enemies)
                    {
                        var enemies = enemy.GetEnemiesInRange(Spells[R].Range);
                        if (enemies.Count >= ConfigMenu.Item("CUSERHIT").GetValue <Slider>().Value)
                        {
                            if (enemies.Count > bestEnemyCount)
                            {
                                bestEnemyCount = enemies.Count;
                                //find center of enemies
                                Vector3 pos = Vector3.Zero;
                                enemies.ForEach(p => pos += p.ServerPosition);
                                pos = pos / enemies.Count;
                                if (pos.Distance(ObjectManager.Player.ServerPosition) < Spells[Q].Range / 2f && pos.CountEnemiesInRange(Spells[R].Range) >= bestEnemyCount)
                                {
                                    bestQPos = pos;
                                }
                                else
                                {
                                    bestQPos = enemy.ServerPosition;
                                }
                            }
                        }
                    }

                    if (bestQPos != Vector3.Zero && bestQPos.Distance(ObjectManager.Player.ServerPosition) < Spells[Q].Range / 2f)
                    {
                        if (Helpers.BallMgr.IsBallReady && Spells[Q].IsReady())
                        {
                            Helpers.BallMgr.Post(Helpers.BallMgr.Command.Attack, null, bestQPos.To2D());
                            Helpers.BallMgr.Post(Helpers.BallMgr.Command.Shockwave, null);
                        }
                    }
                }
            };

            UltMethods[1] = () =>
            {
                if (TargetSelector.SelectedTarget != null)
                {
                    if (Spells[Q].IsReady() && Spells[R].IsReady())
                    {
                        if (TargetSelector.SelectedTarget.ServerPosition.Distance(ObjectManager.Player.ServerPosition) < Spells[Q].Range / 2f)
                        {
                            Helpers.BallMgr.Post(Helpers.BallMgr.Command.Attack, TargetSelector.SelectedTarget);
                            Helpers.BallMgr.Post(Helpers.BallMgr.Command.Shockwave, null);
                        }
                    }
                    else if (Spells[R].IsReady())
                    {
                        if (TargetSelector.SelectedTarget.ServerPosition.Distance(Helpers.BallMgr.Position) < Spells[R].Range)
                        {
                            Helpers.BallMgr.Post(Helpers.BallMgr.Command.Shockwave, TargetSelector.SelectedTarget);
                        }
                    }
                }
            };

            UltMethods[2] = () =>
            {
                if (Spells[Q].IsReady() && Spells[R].IsReady())
                {
                    Vector3 bestQPos    = Vector3.Zero;
                    int     bestPrioSum = 0;
                    foreach (var enemy in HeroManager.Enemies)
                    {
                        var enemies  = enemy.GetEnemiesInRange(Spells[R].Range);
                        int prio_sum = 0;
                        foreach (var e in enemies)
                        {
                            prio_sum += e.GetPriority();
                            if (e.HealthPercent < 50)
                            {
                                prio_sum += 1;
                            }
                        }

                        if (prio_sum >= 6)
                        {
                            if (prio_sum > bestPrioSum)
                            {
                                bestPrioSum = prio_sum;
                                //find center of enemies
                                Vector3 pos = Vector3.Zero;
                                enemies.ForEach(p => pos += p.ServerPosition);
                                pos = pos / enemies.Count;

                                var enemies2  = pos.GetEnemiesInRange(Spells[R].Range);
                                int prio_sum2 = 0;
                                foreach (var e in enemies2)
                                {
                                    prio_sum2 += e.GetPriority();
                                    if (e.HealthPercent < 50)
                                    {
                                        prio_sum2 += 1;
                                    }
                                }

                                if (pos.Distance(ObjectManager.Player.ServerPosition) < Spells[Q].Range / 2f && prio_sum2 >= bestPrioSum)
                                {
                                    bestQPos = pos;
                                }
                                else
                                {
                                    bestQPos = enemy.ServerPosition;
                                }
                            }
                        }
                    }

                    if (bestQPos != Vector3.Zero && bestQPos.Distance(ObjectManager.Player.ServerPosition) < Spells[Q].Range / 2f)
                    {
                        if (Helpers.BallMgr.IsBallReady && Spells[Q].IsReady())
                        {
                            Helpers.BallMgr.Post(Helpers.BallMgr.Command.Attack, null, bestQPos.To2D());
                            Helpers.BallMgr.Post(Helpers.BallMgr.Command.Shockwave, null);
                        }
                    }
                }

                {
                    int prio_sum = 0;
                    var enemies  = HeroManager.Enemies.Where(p => p.ServerPosition.Distance(Helpers.BallMgr.Position) <= Spells[R].Range);
                    foreach (var enemy in enemies)
                    {
                        prio_sum += enemy.GetPriority();
                        if (enemy.HealthPercent < 50)
                        {
                            prio_sum += 1;
                        }
                    }

                    if (prio_sum >= 6)
                    {
                        Helpers.BallMgr.Post(Helpers.BallMgr.Command.Shockwave, null);
                        return;
                    }

                    var t = TargetSelector.GetTarget(Spells[R].Range, LeagueSharp.Common.TargetSelector.DamageType.Magical, true, null, Helpers.BallMgr.Position);
                    if (t != null && ObjectManager.Player.CountEnemiesInRange(2000) <= 2)
                    {
                        Helpers.BallMgr.Post(Helpers.BallMgr.Command.Shockwave, t);
                        return;
                    }
                }
            };
        }
示例#28
0
 protected override void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
 {
     if (sender.IsAlly)
     {
         if (InitiatorsList.Contains(args.SData.Name.ToLower()) && sender.ServerPosition.Distance(ObjectManager.Player.ServerPosition) < Spells[E].Range && ConfigMenu.Item("MEINIT").GetValue <bool>())
         {
             Spells[E].CastOnUnit(sender, true);
         }
     }
 }
示例#29
0
        public override void CreateConfigMenu()
        {
            Menu combo = new Menu("Combo", "SAutoCarry.Viktor.Combo");

            combo.AddItem(new MenuItem("SAutoCarry.Viktor.Combo.UseQ", "Use Q").SetValue(true)).ValueChanged += (s, ar) => ConfigMenu.Item("SAutoCarry.Viktor.Combo.UseQOnlyRange").Show(ar.GetNewValue <bool>());
            combo.AddItem(new MenuItem("SAutoCarry.Viktor.Combo.UseQOnlyRange", "Use Q Only When In AA Range (faster Q->AA burst)").SetValue(new KeyBind('G', KeyBindType.Toggle, true))).Show(combo.Item("SAutoCarry.Viktor.Combo.UseQ").GetValue <bool>());
            combo.AddItem(new MenuItem("SAutoCarry.Viktor.Combo.UseE", "Use E").SetValue(true));
            combo.AddItem(new MenuItem("SAutoCarry.Viktor.Combo.UseR", "Use R").SetValue(true)).ValueChanged += (s, ar) => ConfigMenu.Item("SAutoCarry.Viktor.Combo.UseRMin").Show(ar.GetNewValue <bool>());
            combo.AddItem(new MenuItem("SAutoCarry.Viktor.Combo.UseRMin", "Use R Min. Hit").SetValue(new Slider(1, 1, 5))).Show(combo.Item("SAutoCarry.Viktor.Combo.UseR").GetValue <bool>());

            Menu harass = new Menu("Harass", "SAutoCarry.Viktor.Harass");

            harass.AddItem(new MenuItem("SAutoCarry.Viktor.Harass.UseQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("SAutoCarry.Viktor.Harass.UseE", "Use E").SetValue(true));
            harass.AddItem(new MenuItem("SAutoCarry.Viktor.Harass.MinMana", "Min. Mana").SetValue(new Slider(60, 0, 100)));
            harass.AddItem(new MenuItem("SAutoCarry.Viktor.Harass.Toggle", "Toggle Harass").SetValue(new KeyBind('Z', KeyBindType.Toggle)));

            Menu laneclear = new Menu("LaneClear", "SAutoCarry.Viktor.LaneClear");

            laneclear.AddItem(new MenuItem("SAutoCarry.Viktor.LaneClear.UseQ", "Use Q").SetValue(false));
            laneclear.AddItem(new MenuItem("SAutoCarry.Viktor.LaneClear.UseE", "Use E").SetValue(true)).ValueChanged += (s, ar) => ConfigMenu.Item("SAutoCarry.Viktor.LaneClear.UseEMin").Show(ar.GetNewValue <bool>());
            laneclear.AddItem(new MenuItem("SAutoCarry.Viktor.LaneClear.UseEMin", "Use E Min. Minions").SetValue(new Slider(3, 1, 6))).Show(laneclear.Item("SAutoCarry.Viktor.LaneClear.UseE").GetValue <bool>());
            laneclear.AddItem(new MenuItem("SAutoCarry.Viktor.LaneClear.Toggle", "Enable Spellfarm").SetValue(new KeyBind('T', KeyBindType.Toggle, true)));
            laneclear.AddItem(new MenuItem("SAutoCarry.Viktor.LaneClear.MinMana", "Min. Mana %").SetValue(new Slider(40, 0, 100)));

            Menu misc = new Menu("Misc", "SAutoCarry.Viktor.Misc");

            misc.AddItem(new MenuItem("SAutoCarry.Viktor.Misc.AutoFollowR", "Auto Follow R").SetValue(true));
            misc.AddItem(new MenuItem("SAutoCarry.Viktor.Misc.InterruptR", "Interrupt Channeling Spells With R").SetValue(true));
            misc.AddItem(new MenuItem("SAutoCarry.Viktor.Misc.InterruptW", "Interrupt Spells With W").SetValue(true));
            misc.AddItem(new MenuItem("SAutoCarry.Viktor.Misc.AntiGapW", "Anti Gap Closer With W").SetValue(true));
            misc.AddItem(new MenuItem("SAutoCarry.Viktor.Misc.ImmobileW", "Auto W To Immobile Target").SetValue(true));

            //DamageIndicator.Initialize((t) => (float)CalculateComboDamage(t), misc);

            ConfigMenu.AddSubMenu(combo);
            ConfigMenu.AddSubMenu(harass);
            ConfigMenu.AddSubMenu(laneclear);
            ConfigMenu.AddSubMenu(misc);
            ConfigMenu.AddToMainMenu();
        }
示例#30
0
        public override void CreateConfigMenu()
        {
            Menu combo = new Menu("Combo", "Combo");

            combo.AddItem(new MenuItem("CUSEQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("CUSEW", "Use W").SetValue(true));
            combo.AddItem(new MenuItem("CUSEE", "Use E For Damage Enemy").SetValue(true));
            //
            Menu ult = new Menu("R Settings", "rsetting");

            ult.AddItem(new MenuItem("CUSER", "Use R").SetValue(true));
            ult.AddItem(new MenuItem("CUSERMETHOD", "R Method").SetValue <StringList>(new StringList(new string[] { "Only If Will Hit >= X Method", "If Will Hit Toggle Selected", "Smart R" }, 2))).ValueChanged += (s, ar) => ult.Item("CUSERHIT").Show(ar.GetNewValue <StringList>().SelectedIndex == 0);
            ult.AddItem(new MenuItem("CUSERHIT", "Use When Enemy Count >=").SetValue <Slider>(new Slider(3, 1, 5))).Show(ult.Item("CUSERMETHOD").GetValue <StringList>().SelectedIndex == 0);
            //
            combo.AddSubMenu(ult);

            Menu harass = new Menu("Harass", "Harass");

            harass.AddItem(new MenuItem("HUSEQ", "Use Q").SetValue(true));
            harass.AddItem(new MenuItem("HUSEW", "Use W").SetValue(true));
            harass.AddItem(new MenuItem("HUSEE", "Use E For Damage Enemy").SetValue(true));
            harass.AddItem(new MenuItem("HTOGGLE", "Toggle Harass").SetValue(new KeyBind('T', KeyBindType.Toggle)));
            harass.AddItem(new MenuItem("HMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            Menu laneclear = new Menu("Lane/Jungle Clear", "LaneClear");

            laneclear.AddItem(new MenuItem("LUSEQ", "Use Q").SetValue(true));
            laneclear.AddItem(new MenuItem("LUSEW", "Use W").SetValue(true));
            laneclear.AddItem(new MenuItem("LMINW", "Min. Minions To W In Range").SetValue(new Slider(3, 1, 12)));
            laneclear.AddItem(new MenuItem("LUSEE", "Use E While Jungle Clear").SetValue(true));
            laneclear.AddItem(new MenuItem("TOGGLESPELL", "Enabled Spell Farm").SetValue(new KeyBind('G', KeyBindType.Toggle, true)));
            laneclear.AddItem(new MenuItem("LMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            Menu misc = new Menu("Misc", "Misc");

            misc.AddItem(new MenuItem("MANTIGAPEW", "Anti Gap Closer With E->W").SetValue(true));
            misc.AddItem(new MenuItem("MINTIMPORTANT", "Interrupt Important Spells With Q->R").SetValue(true));
            misc.AddItem(new MenuItem("MEINIT", "Cast E On Initiators").SetValue(true));
            misc.AddItem(new MenuItem("MAUTOR", "Enable Auto Ult").SetValue(true)).ValueChanged += (s, ar) => ConfigMenu.Item("MAUTORHIT").Show(ar.GetNewValue <bool>());
            misc.AddItem(new MenuItem("MAUTORHIT", "Auto R When Can Hit").SetValue(new Slider(4, 2, 5))).Show(misc.Item("MAUTOR").GetValue <bool>());
            misc.AddItem(new MenuItem("DDRAWBALL", "Draw Ball Position").SetValue(false));
            misc.AddItem(new MenuItem("DDRAWKILL", "Draw Killable Enemy").SetValue(true));

            DamageIndicator.Initialize((t) => (float)CalculateComboDamage(t), misc);
            m_targetedEvader = new TargetedSpellEvader(TargetedSpell_Evade, misc);

            ConfigMenu.AddSubMenu(combo);
            ConfigMenu.AddSubMenu(harass);
            ConfigMenu.AddSubMenu(laneclear);
            ConfigMenu.AddSubMenu(misc);
            ConfigMenu.AddToMainMenu();
        }