ArcAnnihilation.Core.Game_OnUpdate C# (CSharp) Method

Game_OnUpdate() private static method

private static Game_OnUpdate ( EventArgs args ) : void
args System.EventArgs
return void
        private static void Game_OnUpdate(EventArgs args)
        {
            if (Game.IsPaused) return;
            if (!_mainHero.IsValid || _mainHero==null)
                return;
            foreach (var clone in from clone in Objects.Tempest.GetCloneList(_mainHero)
                where Menu.Item("AutoHeal.Enable").GetValue<KeyBind>().Active
                let enemy = ObjectManager.GetEntities<Unit>()
                    .Any(
                        x =>
                            x.Team == _mainHero.GetEnemyTeam() && x.IsAlive && x.IsVisible &&
                            x.Distance2D(_mainHero) < Menu.Item("AutoHeal.Range").GetValue<Slider>().Value)
                where !enemy
                select clone)
            {
                CloneUseHealItems(clone, _mainHero, clone.Distance2D(_mainHero));
            }
            foreach (var clone in Objects.Tempest.GetCloneList(_mainHero))
            {
                foreach (var item in clone.Inventory.Items.Where(x=>x.Cooldown>0))
                {
                    var spell = SpellBaseList.Find(x => x.Name == item.StoredName());
                    if (spell==null)
                    {
                        SpellBaseList.Add(new Spell(item));
                        //Print("Init new item: "+item.StoredName());
                    }
                    else
                    {
                        //spell.SetCooldown(item.Cooldown);
                        spell.Update(item);
                    }
                }
            }

            #region code for spark spam
            if (Menu.Item("spamHotkey").GetValue<KeyBind>().Active)
            {
                SparkSpam(_mainHero);
                return;
            }
            #endregion

            #region Flusher
            if (_globalTarget2 != null)
                FlushEffectForDyingUnits();
            #endregion

            #region code for clone combo2 hotkey
            if (Menu.Item("hotkeyClone").GetValue<KeyBind>().Active)
            {
                // if target is not valid, set target to the hero closest to the mouse
                if (_globalTarget2 == null || !_globalTarget2.IsValid || !_globalTarget2.IsAlive)
                {
                    _globalTarget2 = TargetSelection == TargetSelectedEnum.ClosestToMouse
                        ? ClosestToMouse(_mainHero, 500)
                        : TargetSelection == TargetSelectedEnum.ClosestToHero
                            ? ClosestToHero(_mainHero, 500)
                            : FastestKillable(_mainHero, 500);
                }
                if (_globalTarget2 != null && _globalTarget2.IsValid && _globalTarget2.IsAlive)
                {
                    DoCombo2(_mainHero, _globalTarget2);
                }
            }
            else
            {
                _globalTarget2 = null;
                if (!Menu.Item("hotkey").GetValue<KeyBind>().Active) FlushEffect();
            }
            #endregion

            #region code for auto midas
            var midas = _mainHero.FindItem("item_hand_of_midas");
            if (midas != null && Menu.Item("AutoMidas").GetValue<bool>())
            {
                //Print("Me: "+midas.Cooldown);
                if (midas.CanBeCasted() && Utils.SleepCheck(_mainHero.Handle + "midas") && _mainHero.IsAlive && !_mainHero.IsInvisible())
                {
                    var enemy = ObjectManager.GetEntities<Unit>()
                        .Where(
                            x =>
                                !x.IsMagicImmune() && x.Team != _mainHero.Team &&
                                (x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Lane ||
                                 x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Siege ||
                                 x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Neutral ||
                                 x.ClassID == ClassID.CDOTA_BaseNPC_Invoker_Forged_Spirit) && x.IsSpawned &&
                                !x.IsAncient && x.IsAlive &&
                                x.Distance2D(_mainHero) <= 600).OrderByDescending(x => x.Health)
                        .DefaultIfEmpty(null)
                        .FirstOrDefault();
                    if (enemy != null)
                    {
                        Utils.Sleep(500, _mainHero.Handle + "midas");
                        midas.UseAbility(enemy);
                    }
                }
                foreach (var clone in Objects.Tempest.GetCloneList(_mainHero).Where(x => Utils.SleepCheck(x.Handle + "midas")))
                {
                    midas = clone.FindItem("item_hand_of_midas");
                    /*Print("----------- ");
                    foreach (var item in clone.Inventory.Items)
                    {
                        Print(item.Cost+"item: "+item.Name+": "+item.Cooldown+"/"+item.CooldownLength+". State: "+item.AbilityState);

                    }
                    foreach (var spell in clone.Spellbook.Spells.Where(x=>x.IsAbilityType(AbilityType.Basic)))
                    {
                        Print("item: "+spell.Name+": "+spell.Cooldown+"/"+spell.CooldownLength+". State: "+spell.AbilityState);
                    }*/

                    if (midas == null || !midas.CanBeCasted() || SpellBaseList.Find(x => x.Name == midas.StoredName())!=null) continue;

                    var enemy = ObjectManager.GetEntities<Unit>()
                        .Where(
                            x =>
                                !x.IsMagicImmune() && x.Team != _mainHero.Team &&
                                (x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Lane ||
                                 x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Siege ||
                                 x.ClassID == ClassID.CDOTA_BaseNPC_Creep_Neutral) && x.IsSpawned && !x.IsAncient && x.IsAlive &&
                                x.Distance2D(clone) <= 600).OrderByDescending(x => x.Health)
                        .DefaultIfEmpty(null)
                        .FirstOrDefault();
                    if (enemy == null) continue;
                    Utils.Sleep(500, clone.Handle + "midas");
                    midas.UseAbility(enemy);
                }
            }
            #endregion

            #region code for generic hotkey(?)
            if (!Menu.Item("hotkey").GetValue<KeyBind>().Active)
            {
                _globalTarget = null;
                if (Menu.Item("AutoPush.Enable").GetValue<KeyBind>().Active && _globalTarget2==null)
                    AutoPush(_mainHero);

                return;
            }
            #endregion

            // if globaltarget is not set and target is LockTarget is not set, set target to the unit closest to the mouse
            if (_globalTarget == null || !_globalTarget.IsValid || !Menu.Item("LockTarget").GetValue<bool>())
            {
                _globalTarget = ClosestToMouse(_mainHero, 300);
            }
            if (_globalTarget == null || !_globalTarget.IsValid || !_globalTarget.IsAlive) return;

            DoCombo(_mainHero, _globalTarget);
        }