public WorstOrbwalker(Menu menu)
        {
            _config = menu;

            /* TargetSelector menu */
            var ts = new Menu("Target Selector", "_worstorbwalker_targetselector");

            ts.AddItem(new MenuItem("_worstorbwalker_targetselector_targetingmode_select", "Priority")).SetValue(new StringList(new[] { "Low HP", "Most AD", "Most AP", "Closest", "Near Mouse", "Priority", "Less Attack", "Less Cast" }));
            ts.AddItem(new MenuItem("_worstorbwalker_targetselector_spacer0", ""));
            worstSelector = new WorstSelector(_gRange, WorstSelector.TargetingMode.PRIORITY);
            worstSelector.AddToMenu(ts);
            _config.AddSubMenu(ts);

            /* Drawings menu */
            var drawings = new Menu("Drawings", "_worstorbwalker_drawings");

            drawings.AddItem(new MenuItem("_worstorbwalker_drawings_aacircle", "Attack Range")).SetValue(new Circle(true, Color.Purple));
            drawings.AddItem(new MenuItem("_worstorbwalker_drawings_aaenemycircle", "Enemy Attack Range")).SetValue(new Circle(true, Color.Purple));
            drawings.AddItem(new MenuItem("_worstorbwalker_drawings_selectedtarget", "Selected Target")).SetValue(new Circle(true, Color.White));
            drawings.AddItem(new MenuItem("_worstorbwalker_drawings_lasthitminion", "Last Hit Minion")).SetValue(new Circle(false, Color.FromArgb(255, 205, 92, 92)));
            _config.AddSubMenu(drawings);

            /* Misc menu */
            var misc = new Menu("Miscellaneous", "_worstorbwalker_miscellaneous");

            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_priorizefarm", "Priorize farm over harass").SetValue(true));
            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_holdposradius", "Hold Position Radius")).SetValue(new Slider(80, 150, 0));
            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_humanizerdelay", "Humanizer Delay")).SetValue(new Slider(50, 100, 0));
            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_extrawinduptime", "Extra Windup Time")).SetValue(new Slider(80, 200, 0));
            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_selectedtargetfocus", "Enable selected target focus")).SetValue(true);
            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_harassturret", "Harass under turret")).SetValue(false);
            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_mixedlaneclear", "Mixed lane clear")).SetValue(false);
            misc.AddItem(new MenuItem("_worstorbwalker_miscellaneous_farmdelay", "Farm Delay")).SetValue(new Slider(0, 200, 0));
            _config.AddSubMenu(misc);

            /* Main menu */
            MenuItem[] menuItem = { (new MenuItem("_worstorbwalker_keybinds_lasthit",   "Last hit").SetValue(new KeyBind("X".ToCharArray()[0],   KeyBindType.Press, false))),
                                    (new MenuItem("_worstorbwalker_keybinds_mixed",     "Mixed").SetValue(new KeyBind("C".ToCharArray()[0],      KeyBindType.Press, false))),
                                    (new MenuItem("_worstorbwalker_keybinds_laneclear", "Lane clear").SetValue(new KeyBind("V".ToCharArray()[0], KeyBindType.Press, false))),
                                    (new MenuItem("_worstorbwalker_keybinds_flee",      "Flee").SetValue(new KeyBind("A".ToCharArray()[0],       KeyBindType.Press, false))),
                                    (new MenuItem("_worstorbwalker_keybinds_combo",     "Combo").SetValue(new KeyBind(32,                        KeyBindType.Press, false))) };

            _config.AddItem(new MenuItem("_worstorbwalker_spacer0", ""));
            foreach (var mi in menuItem)
            {
                if (mi != null)
                {
                    _config.AddItem(mi);
                }
            }

            Game.OnGameUpdate += OnGameUpdate;
        }
        private void OnGameUpdate(EventArgs args)
        {
            // Fix for new summoners rift
            if ((Utility.Map.GetMap()._MapType == Utility.Map.MapType.SummonersRift && Game.Time >= 23.135f && !srFix) || (Utility.Map.GetMap()._MapType != Utility.Map.MapType.SummonersRift))
            {
                Drawing.OnDraw += OnDraw;
                Obj_AI_Base.OnProcessSpellCast += OnProcessSpell;
                GameObject.OnCreate            += Obj_SpellMissile_OnCreate;
                Game.OnGameProcessPacket       += OnProcessPacket;
                Player = ObjectManager.Player;
                srFix  = true;
            }

            if (worstSelector.GetTargetingMode() != WorstSelector.IntToTargetingMode(_config.Item("_worstorbwalker_targetselector_targetingmode_select").GetValue <StringList>().SelectedIndex))
            {
                switch (_config.Item("_worstorbwalker_targetselector_targetingmode_select").GetValue <StringList>().SelectedIndex)
                {
                case 0:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.LOW_HP);
                    break;

                case 1:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.MOST_AD);
                    break;

                case 2:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.MOST_AP);
                    break;

                case 3:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.CLOSEST);
                    break;

                case 4:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.NEAR_MOUSE);
                    break;

                case 5:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.PRIORITY);
                    break;

                case 6:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.LESS_ATTACK);
                    break;

                case 7:
                    worstSelector.SetTargetingMode(WorstSelector.TargetingMode.LESS_CAST);
                    break;

                default: worstSelector.SetTargetingMode(WorstSelector.TargetingMode.PRIORITY);
                    break;
                }
            }

            if (ActiveMode == MODE.NONE)
            {
                return;
            }

            //Prevent canceling important channeled spells like Miss Fortunes R.
            if (Player.IsChannelingImportantSpell())
            {
                return;
            }

            gTarget = GetTarget();
            Orbwalk(gTarget, (_orbwalkingPoint.To2D().IsValid()) ? _orbwalkingPoint : Game.CursorPos, _config.Item("_worstorbwalker_miscellaneous_extrawinduptime").GetValue <Slider>().Value, _config.Item("_worstorbwalker_miscellaneous_holdposradius").GetValue <Slider>().Value);
        }