Example #1
0
        private static void OnGameLoad(EventArgs args)
        {
            Q = new Spell(SpellSlot.Q, Udyr.AttackRange);
            W = new Spell(SpellSlot.W, Udyr.AttackRange);
            E = new Spell(SpellSlot.E, Udyr.AttackRange);
            R = new Spell(SpellSlot.R, Udyr.AttackRange);

            Config = new Menu("LCS Series: Udyr", "LCS Series: Udyr", true);
            {
                Orbwalker = new Orbwalking.Orbwalker(Config.SubMenu(":: Orbwalker Settings"));

                var comboMenu = new Menu(":: Combo Settings", ":: Combo Settings");
                {
                    comboMenu.AddItem(new MenuItem("q.combo", "Use (Q)").SetValue(true));
                    comboMenu.AddItem(new MenuItem("w.combo", "Use (W)").SetValue(true));
                    comboMenu.AddItem(new MenuItem("e.combo", "Use (E)").SetValue(true));
                    comboMenu.AddItem(new MenuItem("r.combo", "Use (R)").SetValue(true));
                    comboMenu.AddItem(new MenuItem("e.stun", "Force (E)").SetValue(true)).SetTooltip("uses e for stun enemies");
                    comboMenu.AddItem(new MenuItem("combo.type", "Combo Type").SetValue(new StringList(new[] { "Phoenix -> Bear", "Bear -> Phoenix" })));
                    Config.AddSubMenu(comboMenu);
                }
                var jungleMenu = new Menu(":: Jungle Settings", ":: Jungle Settings");
                {
                    jungleMenu.AddItem(new MenuItem("q.jungle", "Use (Q)").SetValue(true));
                    jungleMenu.AddItem(new MenuItem("w.jungle", "Use (W)").SetValue(true));
                    jungleMenu.AddItem(new MenuItem("e.jungle", "Use (E)").SetValue(true));
                    jungleMenu.AddItem(new MenuItem("r.jungle", "Use (R)").SetValue(true));
                    jungleMenu.AddItem(new MenuItem("jungle.mana", "Min. Mana").SetValue(new Slider(50, 1, 99))).SetTooltip("manage your mana.");
                    Config.AddSubMenu(jungleMenu);
                }
                var clearMenu = new Menu(":: Clear Settings", ":: Clear Settings");
                {
                    clearMenu.AddItem(new MenuItem("q.clear", "Use (Q)").SetValue(true));
                    clearMenu.AddItem(new MenuItem("w.clear", "Use (W)").SetValue(true));
                    clearMenu.AddItem(new MenuItem("e.clear", "Use (E)").SetValue(false));
                    clearMenu.AddItem(new MenuItem("r.clear", "Use (R)").SetValue(true));
                    clearMenu.AddItem(new MenuItem("clear.mana", "Min. Mana").SetValue(new Slider(50, 1, 99))).SetTooltip("manage your mana.");
                    Config.AddSubMenu(clearMenu);
                }

                var miscMenu = new Menu(":: Misc Settings", ":: Misc Settings");
                {
                    CustomizableAntiGapcloser.AddToMenu(miscMenu.SubMenu("Customizable Antigapcloser"));
                    miscMenu.AddItem(new MenuItem("e.interrupter", "Use (E) for Interrupt").SetValue(true));
                    miscMenu.SubMenu("Customizable Antigapcloser").AddItem(new MenuItem("xxx", "                     General Settings").SetFontStyle(FontStyle.Bold));
                    miscMenu.SubMenu("Customizable Antigapcloser").AddItem(new MenuItem("e.antigapcloser", "Use (E) for Anti-Gapcloser").SetValue(true));
                    Config.AddSubMenu(miscMenu);
                }
                Config.AddToMainMenu();
            }

            Game.OnUpdate        += OnUpdate;
            Obj_AI_Base.OnDoCast += OnDoCast;
            CustomizableAntiGapcloser.OnEnemyCustomGapcloser += OnEnemyCustomGapcloser;
            Interrupter2.OnInterruptableTarget += Interrupter2OnOnInterruptableTarget;
        }
Example #2
0
        public override void CreateConfigMenu()
        {
            combo = new Menu("Combo", "Combo");
            combo.AddItem(new MenuItem("CUSEQ", "Use Q").SetValue(true));
            combo.AddItem(new MenuItem("CUSEW", "Use W").SetValue(true));
            //
            ult = new Menu("R Settings (BETA)", "rsetting");
            ult.AddItem(new MenuItem("CUSER", "Use R").SetValue(true));
            ult.AddItem(new MenuItem("CUSERHIT", "If Can Hit Enemies Count >=").SetValue(new Slider(3, 2, 5)));
            ult.AddItem(new MenuItem("CUSERHP", "If Target HP Percent <=").SetValue(new Slider(30, 1, 100)));
            ult.AddItem(new MenuItem("CUSEHPHIT", "Use Both ^ (x enemies with less than y% hp)").SetValue(true));
            ult.AddItem(new MenuItem("CUSERRANGE", "Don't Use R If Enemy Count >= 2 In Range: ").SetValue(new Slider(600, 1, 2500)));
            ult.AddItem(new MenuItem("CRHITCHANCE", "Hit Chance").SetValue <StringList>(new StringList(ShineCommon.Utility.HitchanceNameArray, 2)));
            //
            combo.AddSubMenu(ult);

            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("HMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            laneclear = new Menu("LaneClear", "LaneClear");
            laneclear.AddItem(new MenuItem("LUSEQ", "Use Q").SetValue(true));
            laneclear.AddItem(new MenuItem("LMANA", "Min. Mana Percent").SetValue(new Slider(50, 0, 100)));

            misc = new Menu("Misc", "Misc");
            misc.AddItem(new MenuItem("MLASTQ", "Last Hit Q").SetValue(true));
            misc.AddItem(new MenuItem("MAUTOQ", "Auto Harass Q").SetValue(true));
            misc.AddItem(new MenuItem("MUSER", "Use R If Killable").SetValue(false));
            CustomizableAntiGapcloser.AddToMenu(misc.SubMenu("Customizable Antigapcloser"));
            misc.SubMenu("Customizable Antigapcloser").AddItem(new MenuItem("CUSTOMANTIGAPE", "Use E for Anti-Gapcloser").SetValue(true));
            misc.SubMenu("Customizable Antigapcloser").AddItem(new MenuItem("CUSTOMANTIGAPEMETHOD", "Use E for Anti-Gapcloser").SetValue(new StringList(new[] { "Side", "Far from enemy" })));
            CustomizableAntiGapcloser.OnEnemyCustomGapcloser += OnEnemyCustomGapcloser;

            m_evader = new Evader(out evade, EvadeMethods.Blink);

            Config.AddSubMenu(combo);
            Config.AddSubMenu(harass);
            Config.AddSubMenu(laneclear);
            Config.AddSubMenu(evade);
            Config.AddSubMenu(misc);
            Config.AddToMainMenu();

            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Combo]     += Combo;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.Mixed]     += Harass;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.LaneClear] += LaneClear;
            base.OrbwalkingFunctions[(int)Orbwalking.OrbwalkingMode.LastHit]   += LastHit;
            base.BeforeOrbWalking += BeforeOrbwalk;
        }
Example #3
0
        public Config()
        {
            Menu = new Menu("Yasuo - The Last memebender", "YLM", true);

            //Sub Menus
            var orbwalkMenu        = new Menu("Orbwalker", "ylm.orbwalk");
            var targetSelectorMenu = new Menu("Targetselector settings", "ylm.targetselector");
            var gapcloseMenu       = new Menu("Gapclose settings", "ylm.gapclose");                 //done
            var windwallMenu       = new Menu("Windwall", "ylm.windwall");                          //No gun make this, use ezvade lol
            var windwallSpells     = new Menu("Spells", "ylm.windwall.spells");
            var towerDiveMenu      = new Menu("Tower dive settings", "ylm.towerdive");              //done
            var spellMenu          = new Menu("Spell Settings", "ylm.spell");                       //done
            var spellEMenu         = new Menu("E - Sweeping Blade settings", "ylm.spellSetting.E"); //done
            var spellRMenu         = new Menu("R - Last Breath settings", "ylm.spellSetting.R");    //done
            var comboMenu          = new Menu("Combo", "ylm.combo");                                //done - Items - Summoners
            var killstealMenu      = new Menu("Killsteal", "ylm.killsteal");
            var harassMenu         = new Menu("Harass", "ylm.mixed");                               //done
            var lasthitMenu        = new Menu("Lasthit", "ylm.lasthit");                            //done
            var laneclearMenu      = new Menu("Laneclear", "ylm.laneclear");                        //done
            var jungleclearMenu    = new Menu("Jungleclear", "ylm.jungleclear");                    //done
            var drawMenu           = new Menu("Drawings", "ylm.drawings");
            var antiMenu           = new Menu("Interrupt & Antigapclose", "ylm.anti");              //done

            //var predictionMenu     = new Menu("Prediction Settings"        , "ylm.prediction");

            //Target Selector
            TargetSelector.AddToMenu(targetSelectorMenu);

            //Orbwalker
            Orbwalker = new Orbwalking.Orbwalker(orbwalkMenu);
            //keybindings
            Orbwalker.RegisterCustomMode("ylm.orbwalker.escape", "Escape", 'Y');
            Menu.AddSubMenu(orbwalkMenu);

            #region GapClose


            gapcloseMenu.AddItem(new MenuItem("ylm.gapclose.on", "Use Gapclose").SetValue(true));
            gapcloseMenu.AddItem(new MenuItem("ylm.gapclose.hpcheck", "Check health before gapclosing").SetValue(true));
            gapcloseMenu.AddItem(new MenuItem("ylm.gapclose.hpcheck2", "Only gapclose if my health > %").SetValue(new Slider(15, 0, 100)));
            gapcloseMenu.AddItem(new MenuItem("ylm.gapclose.stackQ", "Stack Q while gapclosing").SetValue(false));
            gapcloseMenu.AddItem(new MenuItem("ylm.gapclose.seperator", ""));
            gapcloseMenu.AddItem(new MenuItem("ylm.gapclose.limit", "Set gapclose range").SetValue(new Slider(3200, 650, 3200)));
            gapcloseMenu.AddItem(new MenuItem("ylm.gapclose.draw", "Draw gapclose target").SetValue(true));
            Menu.AddSubMenu(gapcloseMenu);

            #endregion

            #region Tower Dive

            towerDiveMenu.AddItem(new MenuItem("ylm.towerdive.enabled", "Tower Dive").SetValue(false));
            towerDiveMenu.AddItem(new MenuItem("ylm.towerdive.minAllies", "Min number of allies to dive").SetValue(new Slider(3, 0, 5)));
            Menu.AddSubMenu(towerDiveMenu);

            #endregion

            #region Spell Settings

            spellEMenu.AddItem(
                new MenuItem("ylm.spelle.range", "Check distance of target and E endpos").SetValue(true));
            spellEMenu.AddItem(
                new MenuItem("ylm.spelle.rangeslider", "Maximum distance").SetValue(new Slider(200, 150, 400)));
            spellEMenu.AddItem(new MenuItem("ylm.spelle.seperator", ""));
            spellEMenu.AddItem(new MenuItem("ylm.spelle.info", "> This option will check if the distance"));
            spellEMenu.AddItem(new MenuItem("ylm.spelle.info2", "> between your target and the endposition of your E cast"));
            spellEMenu.AddItem(new MenuItem("ylm.spelle.info3", "> is greater then the distance set in the slider."));
            spellEMenu.AddItem(new MenuItem("ylm.spelle.info4", "> If yes the cast will get blocked!"));
            spellEMenu.AddItem(new MenuItem("ylm.spelle.info5", "> This prevents dashing too far away from your target!"));
            spellMenu.AddSubMenu(spellEMenu);

            spellRMenu.AddItem(new MenuItem("ylm.spellr.auto", "Use Auto Ultimate").SetValue(false));
            spellRMenu.AddItem(
                new MenuItem("ylm.spellr.targetnumber", "Number of Targets for Auto R").SetValue(new Slider(3, 1, 5))).SetTooltip("Auto R ignores settings below and only checks for X targets");

            /*spellRMenu.AddItem(
             *  new MenuItem("ylm.spellr.infoautor", "> Auto R ignores settings below and only checks for X targets"));*/
            spellRMenu.AddItem(new MenuItem("ylm.spellr.seperator", ""));
            spellRMenu.AddItem(new MenuItem("ylm.spellr.delay", "Delay the ultimate for more CC").SetValue(true));
            spellRMenu.AddItem(new MenuItem("ylm.spellr.useqult", "Use Q while ulting").SetValue(true));
            spellRMenu.AddItem(new MenuItem("ylm.spellr.towercheck", "Use Ultimate under towers").SetValue(true));
            spellRMenu.AddItem(new MenuItem("ylm.spellr.seperator2", ""));
            foreach (var enemy in HeroManager.Enemies)
            {
                spellRMenu.AddItem(
                    new MenuItem(string.Format("ylm.spellr.rtarget.{0}", enemy.ChampionName.ToLower()),
                                 enemy.ChampionName).SetValue(
                        new StringList(
                            new[] { "Don't Use", "Use if killable", "Always use", "Use advanced checks for target" }, 2)));
            }
            spellRMenu.AddItem(new MenuItem("ylm.spellr.seperator3", ""));
            spellRMenu.AddItem(new MenuItem("ylm.spellr.infoadvanced", ">> Advanced settings"));
            spellRMenu.AddItem(new MenuItem("ylm.spellr.targethealth", "Check for target health").SetValue(true));
            spellRMenu.AddItem(
                new MenuItem("ylm.spellr.targethealthslider", "Only ult if target health below < %").SetValue(
                    new Slider(40, 0, 100)));
            spellRMenu.AddItem(new MenuItem("ylm.spellr.playerhealth", "Check for our health").SetValue(true));
            spellRMenu.AddItem(
                new MenuItem("ylm.spellr.playerhealthslider", "Only ult if player health bigger > %").SetValue(
                    new Slider(40, 0, 100)));

            spellMenu.AddSubMenu(spellRMenu);


            spellMenu.AddItem(new MenuItem("ylm.spell.seperator", ""));
            spellMenu.AddItem(new MenuItem("ylm.spell.autolevelon", "Auto Level Enable/Disable").SetValue(true));
            spellMenu.AddItem(
                new MenuItem("ylm.spell.autolevelskills", "Auto Level Skills").SetValue(
                    new StringList(
                        new[]
                        { "No Autolevel", "QEWQ - R>Q>E>W", "EQWQ - R>Q>E>W", "EQEWE - R>Q>E>W", "QEWE - R>E>Q>W" })));

            Menu.AddSubMenu(spellMenu);
            #endregion

            #region Combo

            comboMenu.AddItem(new MenuItem("ylm.combo.mode", "Choose Combo mode").SetValue(new StringList(new[] { "Prefer Q3-E", "Prefer E-Q3" })));
            comboMenu.AddItem(new MenuItem("ylm.combo.items", "Use items in Combo").SetValue(true));
            comboMenu.AddItem(new MenuItem("ylm.combo.seperator", ""));
            comboMenu.AddItem(new MenuItem("ylm.combo.useq", "Use Q").SetValue(true));
            comboMenu.AddItem(new MenuItem("ylm.combo.useq3", "Use Q3").SetValue(true));
            comboMenu.AddItem(new MenuItem("ylm.combo.usee", "Use E").SetValue(true));
            comboMenu.AddItem(new MenuItem("ylm.combo.user", "Use R").SetValue(true));
            comboMenu.AddItem(new MenuItem("ylm.combo.useignite", "Use Ignite").SetValue(true));
            Menu.AddSubMenu(comboMenu);

            #endregion

            #region Harass

            harassMenu.AddItem(new MenuItem("ylm.mixed.mode", "Choose Harass mode").SetValue(new StringList(new[] { "Normal Harass", "Safe Harass" })));
            //harassMenu.AddItem(new MenuItem("ylm.mixed.lasthitnotarget", "Enable smart lasthit if no target").SetValue(true));
            //harassMenu.AddItem(new MenuItem("ylm.mixed.lasthittarget", "Enable smart lasthit if target").SetValue(true));
            harassMenu.AddItem(new MenuItem("ylm.mixed.lasthit", "Last hit").SetValue(true)).SetTooltip("Will use spellsettings from the lasthitmenu");
            harassMenu.AddItem(new MenuItem("ylm.mixed.seperator", ""));
            harassMenu.AddItem(new MenuItem("ylm.mixed.infoabilities", "Harass abilities"));
            harassMenu.AddItem(new MenuItem("ylm.mixed.useq", "Use Q").SetValue(true));
            harassMenu.AddItem(new MenuItem("ylm.mixed.useq3", "Use Q3").SetValue(true));
            harassMenu.AddItem(new MenuItem("ylm.mixed.usee", "Use E").SetValue(false));
            Menu.AddSubMenu(harassMenu);

            #endregion

            #region Killsteal

            killstealMenu.AddItem(new MenuItem("ylm.killsteal.usesmartks", "Use Smart Killsteal").SetValue(true));
            killstealMenu.AddItem(new MenuItem("ylm.killsteal.seperator", ""));
            killstealMenu.AddItem(new MenuItem("ylm.killsteal.useq", "Use Q").SetValue(true));
            killstealMenu.AddItem(new MenuItem("ylm.killsteal.useq3", "Use Q3").SetValue(true));
            killstealMenu.AddItem(new MenuItem("ylm.killsteal.usee", "Use E").SetValue(true));
            killstealMenu.AddItem(new MenuItem("ylm.killsteal.user", "Use R").SetValue(true));
            Menu.AddSubMenu(killstealMenu);

            #endregion

            #region Lasthit

            lasthitMenu.AddItem(new MenuItem("ylm.lasthit.enabled", "Use skills to lasthit").SetValue(false));
            lasthitMenu.AddItem(new MenuItem("ylm.lasthit.useq", "Use Q").SetValue(true));
            lasthitMenu.AddItem(new MenuItem("ylm.lasthit.useq3", "Use Q3").SetValue(true));
            lasthitMenu.AddItem(new MenuItem("ylm.lasthit.usee", "Use E").SetValue(true));
            Menu.AddSubMenu(lasthitMenu);

            #endregion

            #region Laneclear
            laneclearMenu.AddItem(
                new MenuItem("ylm.laneclear.changeWithScroll", "Toggle LaneClear skills with scrolling wheel").SetValue(false));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.enabled", "Use skills to laneclear").SetValue(true));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.modee", "Choose Laneclear mode for E").SetValue(new StringList(new[] { "Only lasthit with E", "Always use E" })));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.modeq3", "Choose Laneclear mode for Q3").SetValue(new StringList(new[] { "Cast to best position", "Cast to X or more amount of units" })));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.modeq3amount", "Min units to hit with Q3").SetValue(new Slider(3, 1, 8)));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.items", "Use items for Laneclear").SetValue(true));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.seperator", ""));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.useq", "Use Q").SetValue(true));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.useq3", "Use Q3").SetValue(true));
            laneclearMenu.AddItem(new MenuItem("ylm.laneclear.usee", "Use E").SetValue(true));
            Menu.AddSubMenu(laneclearMenu);

            #endregion

            #region Jungleclear

            jungleclearMenu.AddItem(new MenuItem("ylm.jungleclear.enabled", "Use skills to jungle clear").SetValue(true));
            jungleclearMenu.AddItem(new MenuItem("ylm.jungleclear.items", "Use items for Jungleclear").SetValue(true));
            jungleclearMenu.AddItem(new MenuItem("ylm.jungleclear.seperator", ""));
            jungleclearMenu.AddItem(new MenuItem("ylm.jungleclear.useq", "Use Q").SetValue(true));
            jungleclearMenu.AddItem(new MenuItem("ylm.jungleclear.useq3", "Use Q3").SetValue(true));
            jungleclearMenu.AddItem(new MenuItem("ylm.jungleclear.usee", "Use E").SetValue(true));
            Menu.AddSubMenu(jungleclearMenu);

            #endregion

            #region Drawings

            drawMenu.AddItem(new MenuItem("ylm.drawings.drawdamage", "Draw damage on Healthbar").SetValue(new Circle(true, Color.GreenYellow)));
            drawMenu.AddItem(
                new MenuItem("ylm.drawings.drawspellsready", "Draw spells only if not on cooldown").SetValue(true));
            drawMenu.AddItem(new MenuItem("ylm.drawings.drawq", "Draw Q").SetValue(new Circle(true, Color.DarkOrange)));
            drawMenu.AddItem(new MenuItem("ylm.drawings.draww", "Draw W").SetValue(new Circle(true, Color.DarkOrange)));
            drawMenu.AddItem(new MenuItem("ylm.drawings.drawe", "Draw E").SetValue(new Circle(true, Color.DarkOrange)));
            drawMenu.AddItem(new MenuItem("ylm.drawings.drawr", "Draw R").SetValue(new Circle(true, Color.DarkOrange)));
            Menu.AddSubMenu(drawMenu);

            #endregion

            #region Interrupt & Anti Gapclose

            var interrupt = new Menu("Anti-Gapcloser", "ylm.anti.interrupt");
            interrupt.AddItem(new MenuItem("ylm.anti.interrupt.useq3", "Use Q3").SetValue(true));
            interrupt.AddItem(new MenuItem("ylm.anti.interrupt.seperator", ""));
            foreach (var hero in ObjectManager.Get <AIHeroClient>().Where(h => h.IsEnemy))
            {
                interrupt.AddItem(new MenuItem(string.Format("ylm.anti.interrupt.{0}", hero.ChampionName), hero.ChampionName).SetValue(true));
            }

            var antiGapclose = new Menu("Anti-Gapcloser", "ylm.anti.gapclose");
            antiGapclose.AddItem(new MenuItem("ylm.anti.gapclose.useq3", "Use Q3").SetValue(true));
            antiGapclose.AddItem(new MenuItem("ylm.anti.gapclose.seperator", ""));
            CustomizableAntiGapcloser.AddToMenu(antiGapclose);

            antiMenu.AddSubMenu(interrupt);
            antiMenu.AddSubMenu(antiGapclose);
            Menu.AddSubMenu(antiMenu);

            #endregion

            //Windwall - ezVade op
            windwallMenu.AddItem(new MenuItem("ylm.windwall.enabled", "Block targeted skills").SetValue(true));
            foreach (var hero in ObjectManager.Get <AIHeroClient>().Where(h => h.IsEnemy))
            {
                var hero1 = hero;
                foreach (var spell in Wrapper.Spells.Database.Spells.Where(s => s.ChampionName == hero1.ChampionName))
                {
                    windwallSpells.AddItem(new MenuItem(string.Format("ylm.windwall.spells.{0}", spell.SpellName),
                                                        string.Format("{0} - {1}", hero1.ChampionName, spell.Slot)).SetValue(true));
                    Console.WriteLine("Added {0} - {1} - {2}", hero1.ChampionName, spell.Slot, spell.SpellName);
                }
            }
            windwallMenu.AddSubMenu(windwallSpells);

            windwallMenu.AddItem(new MenuItem("ylm.windwall.info", "Use EzVade :^ )"));

            Menu.AddSubMenu(windwallMenu);


            Menu.AddToMainMenu();
        }
Example #4
0
        public static void Generate()
        {
            Variables.Menu = new Menu("iLucian", "com.ilucian", true).SetFontStyle(FontStyle.Bold, Color.DeepPink);
            var rootMenu = Variables.Menu;

            var owMenu = new Menu(":: iLucian - Orbwalker", "com.ilucian.orbwalker");
            {
                Variables.Orbwalker = new Orbwalking.Orbwalker(owMenu);
                rootMenu.AddSubMenu(owMenu);
            }

            var comboOptions =
                new Menu(":: iLucian - Combo Options", "com.ilucian.combo").SetFontStyle(FontStyle.Regular, Color.Aqua);
            {
                comboOptions.AddBool("com.ilucian.combo.q", "Use Q", true);
                comboOptions.AddBool("com.ilucian.combo.qExtended", "Use Extended Q", true);
                comboOptions.AddBool("com.ilucian.combo.w", "Use W", true);
                comboOptions.AddBool("com.ilucian.combo.e", "Use E", true);
                comboOptions.AddBool("com.ilucian.combo.startE", "Start Combo With E", true);
                comboOptions.AddKeybind(
                    "com.ilucian.combo.forceR",
                    "Semi Ult Key",
                    new Tuple <uint, KeyBindType>("T".ToCharArray()[0], KeyBindType.Press));
                comboOptions.AddSlider("com.ilucian.combo.eRange", "E Dash Range", 65, 50, 475);
                comboOptions.AddStringList(
                    "com.ilucian.combo.eMode",
                    "E Mode",
                    new[] { "Kite", "Side", "Cursor", "Enemy", "Fast Mode", "VHR Logic - Smart E" },
                    5);
                rootMenu.AddSubMenu(comboOptions);
            }

            var harassOptions = new Menu(":: iLucian - Harass Options", "com.ilucian.harass");
            {
                var autoHarassMenu = new Menu("Auto Harass", "com.ilucian.harass.auto");
                {
                    autoHarassMenu.AddKeybind(
                        "com.ilucian.harass.auto.autoharass",
                        "Enabled",
                        new Tuple <uint, KeyBindType>("Z".ToCharArray()[0], KeyBindType.Toggle))
                    .Permashow(true, "iLucian | Auto Harass", Color.Aqua);
                    autoHarassMenu.AddBool("com.ilucian.harass.auto.q", "Use Q", true);
                    autoHarassMenu.AddBool("com.ilucian.harass.auto.qExtended", "Use Extended Q", true);
                    autoHarassMenu.AddSlider(
                        "com.ilucian.harass.auto.autoharass.mana",
                        "Min Mana % for auto harasss",
                        70,
                        0,
                        100);
                }

                harassOptions.AddBool("com.ilucian.harass.q", "Use Q", true);
                harassOptions.AddBool("com.ilucian.harass.qExtended", "Use Extended Q", true);
                var harassWhitelist = new Menu("Extended Q Whitelist", "com.ilucian.harass.whitelist");
                {
                    foreach (var hero in HeroManager.Enemies)
                    {
                        harassWhitelist.AddBool(
                            "com.ilucian.harass.whitelist." + hero.ChampionName.ToLower(),
                            "Don't Q: " + hero.ChampionName);
                    }
                }

                harassOptions.AddBool("com.ilucian.harass.w", "Use W", true);
                harassOptions.AddSlider("com.ilucian.harass.mana", "Min Mana % for harass", 70, 0, 100);
                harassOptions.AddSubMenu(harassWhitelist);
                harassOptions.AddSubMenu(autoHarassMenu);
                rootMenu.AddSubMenu(harassOptions);
            }

            var laneclearOptions = new Menu(":: iLucian - Laneclear Options", "com.ilucian.laneclear");
            {
                laneclearOptions.AddBool("com.ilucian.laneclear.q", "Use Q", true);
                laneclearOptions.AddSlider("com.ilucian.laneclear.qMinions", "Cast Q on x minions", 3, 1, 10);
                laneclearOptions.AddSlider("com.ilucian.laneclear.mana", "Min Mana % for laneclear", 70, 0, 100);
                rootMenu.AddSubMenu(laneclearOptions);
            }

            var jungleclearOptions = new Menu(":: iLucian - Jungleclear Options", "com.ilucian.jungleclear");
            {
                jungleclearOptions.AddBool("com.ilucian.jungleclear.q", "Use Q", true);
                jungleclearOptions.AddBool("com.ilucian.jungleclear.w", "Use W", true);
                jungleclearOptions.AddBool("com.ilucian.jungleclear.e", "Use E", true);
                jungleclearOptions.AddSlider("com.ilucian.jungleclear.mana", "Min Mana % for jungleclear", 70, 0, 100);
                rootMenu.AddSubMenu(jungleclearOptions);
            }

            var gapcloserMenu = new Menu(":: iLucian - Gapcloser Options", "com.ilucian.antigap");
            {
                CustomizableAntiGapcloser.AddToMenu(gapcloserMenu);
                rootMenu.AddSubMenu(gapcloserMenu);
            }

            var miscOptions = new Menu(":: iLucian - Misc Options", "com.ilucian.misc");

            {
                miscOptions.AddBool("com.ilucian.misc.antiVayne", "Anti Vayne Condemn", true);
                miscOptions.AddBool("com.ilucian.misc.antiMelee", "Anti Melee (E)", true);
                miscOptions.AddBool("com.ilucian.misc.usePrediction", "Use W Pred", true);
                miscOptions.AddBool("com.ilucian.misc.forcePassive", "Force Passive Target", true);
                miscOptions.AddBool("com.ilucian.misc.gapcloser", "Use E For Gapcloser", true);
                miscOptions.AddBool("com.ilucian.misc.eqKs", "EQ - Killsteal", true);
                miscOptions.AddBool("com.ilucian.misc.useChampions", "Use EQ on Champions", true);
                miscOptions.AddBool("com.ilucian.misc.extendChamps", "Use Ext Q on Champions", true);
                miscOptions.AddBool("com.ilucian.misc.drawQ", "Draw Ext Q Range", true);
                var dmgAfterComboItem =
                    new MenuItem("com.ilucian.misc.drawDamage", "Draw Damage After Combo").SetValue(true);
                {
                    LeagueSharp.Common.Utility.HpBarDamageIndicator.DamageToUnit = iLucian.GetComboDamage;
                    LeagueSharp.Common.Utility.HpBarDamageIndicator.Enabled      = dmgAfterComboItem.GetValue <bool>();
                    dmgAfterComboItem.ValueChanged +=
                        delegate(object sender, OnValueChangeEventArgs eventArgs)
                    {
                        LeagueSharp.Common.Utility.HpBarDamageIndicator.Enabled = eventArgs.GetNewValue <bool>();
                    };
                    miscOptions.AddItem(dmgAfterComboItem);
                }

                rootMenu.AddSubMenu(miscOptions);
            }

            rootMenu.AddToMainMenu();
        }