BadGuy.Program.Game_OnUpdate C# (CSharp) Method

Game_OnUpdate() private method

private Game_OnUpdate ( EventArgs args ) : void
args System.EventArgs
return void
        private static void Game_OnUpdate(EventArgs args)
        {
            if (Utils.SleepCheck("Hero.Cd") && Menu.Item("Hero.Enable").GetValue<bool>())
            {
                if (_fountain2 == null || !_fountain2.IsValid)
                {
                    _fountain2 = ObjectManager.GetEntities<Unit>()
                        .FirstOrDefault(x => x.Team != MyHero.Team && x.ClassID == ClassID.CDOTA_Unit_Fountain);
                }
                var angle = (float)Math.Max(
                        Math.Abs(MyHero.RotationRad -
                                 Utils.DegreeToRadian(MyHero.FindAngleBetween(_fountain2.Position))) - 0.20, 0);
                // ReSharper disable once CompareOfFloatsByEqualityOperator
                if (angle > 0)
                {
                    if (Menu.Item("Hero.Type").GetValue<StringList>().SelectedIndex == 0)
                    {
                        MyHero.Attack(_fountain2.Position);
                    }
                    else
                    {
                        MyHero.Move(_fountain2.Position);
                    }

                }
                Utils.Sleep(Menu.Item("Hero.Cd").GetValue<Slider>().Value, "Hero.Cd");
            }

            if (Utils.SleepCheck("Courier.Cd") && Menu.Item("Courier.Blocking.Enable").GetValue<bool>())
            {
                var couriers = ObjectManager.GetEntities<Courier>().Where(x => x.IsAlive && x.Team == MyHero.Team);
                if (_fountain == null || !_fountain.IsValid)
                {
                    _fountain = ObjectManager.GetEntities<Unit>()
                        .FirstOrDefault(x => x.Team == MyHero.Team && x.ClassID == ClassID.CDOTA_Unit_Fountain);
                }
                if (_fountain2 == null || !_fountain2.IsValid)
                {
                    _fountain2 = ObjectManager.GetEntities<Unit>()
                        .FirstOrDefault(x => x.Team != MyHero.Team && x.ClassID == ClassID.CDOTA_Unit_Fountain);
                }
                var index = Menu.Item("Courier.Order").GetValue<StringList>().SelectedIndex;
                var needFountain = index == (int) Orders.BlockOnBace
                    ? _fountain
                    : _fountain2;
                if ((index == 0 || index==1) && needFountain!=null)
                    foreach (var courier in from courier in couriers.Where(
                        courier =>
                            courier.Distance2D(needFountain) >
                            Menu.Item("Courier.MaxRange").GetValue<Slider>().Value) let angle = (float) Math.Max(
                                Math.Abs(courier.RotationRad -
                                         Utils.DegreeToRadian(courier.FindAngleBetween(needFountain.Position))) - 0.20, 0) where angle != 0 select courier)
                    {
                        courier.Move(needFountain.Position);
                        Utils.Sleep(Menu.Item("Courier.Cd").GetValue<Slider>().Value, "Courier.Cd");
                    }
                else if (index >= 2)
                {
                    foreach (var courier in couriers)
                    {
                        if (index == (int) Orders.Stashing)
                        {
                            //Game.PrintMessage("Any items: " + courier.Inventory.Items.Any(x => Equals(x.Owner, MyHero)),MessageType.ChatMessage);
                            //if (courier.Inventory.Items.Any(x => Equals(x.Owner, MyHero)))
                            courier.Spellbook.SpellE.UseAbility();
                        }
                        else
                        {
                            /*foreach (var item in courier.Inventory.Items)
                            {
                                Game.PrintMessage("Item: " + item.Name+" .Owner: "+item.,MessageType.ChatMessage);
                            }*/
                            //Game.PrintMessage("Any items: " + courier.Inventory.Items.Any(x => Equals(x.Owner, MyHero)), MessageType.ChatMessage);
                            if (courier.Inventory.Items.Any(/*x => Equals(x.Owner, MyHero)*/))
                                courier.Spellbook.SpellF.UseAbility();
                        }
                        Utils.Sleep(Menu.Item("Courier.Cd").GetValue<Slider>().Value, "Courier.Cd");
                    }
                }
            }
            if (Utils.SleepCheck("laugh.Cd") && Menu.Item("laugh.Enable").GetValue<bool>())
            {
                Game.ExecuteCommand("say \"/laugh \"");
                Utils.Sleep(Menu.Item("laugh.Cd").GetValue<Slider>().Value*1000, "laugh.Cd");
                if (Menu.Item("laugh.Message").GetValue<bool>())
                {
                    Game.PrintMessage("Laugh!", MessageType.ChatMessage,MyHero.Player);
                }
            }
            if (!Menu.Item("Drawing.Fully.Enable").GetValue<bool>()) return;
            //Print(Menu.Item("Drawing.Enable").GetValue<KeyBind>().Active.ToString());
            if (!Utils.SleepCheck("Drawing.Cd") || !Menu.Item("Drawing.Enable").GetValue<KeyBind>().Active) return;
            if (_forward)
            {
                SetCursorPos((int) _stageX, (int) _stageY);
                //mouse_event((int) MouseEvent.MouseeventfLeftdown, 0, 0, 0, 0);
                _stageY += Menu.Item("Drawing.Speed").GetValue<Slider>().Value;
            }
            else
            {
                SetCursorPos((int) _drawingEndPos.X, (int) _stageY);
            }
            if (_stageY > _drawingEndPos.Y)
                _stageY = _drawingStartPos.Y;
            _forward = !_forward;
            Utils.Sleep(Menu.Item("Drawing.Cd").GetValue<Slider>().Value, "Drawing.Cd");
        }