Пример #1
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (ObjectManager.Player.IsDead)
            {
                xAttackLeft = 0;
                return;
            }

            if (Game.Time > xPassiveUsedTime + 3 && xAttackLeft == 1)
            {
                xAttackLeft = 0;
            }

            if (Config.Item("Passive" + Id).GetValue <bool>() && xAttackLeft > 0)
            {
                return;
            }

            Obj_AI_Hero t;

            if (Q.IsReady() && GetValue <KeyBind>("UseQTH").Active&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t != null)
                {
                    Q.CastOnUnit(t);
                }
            }


            if (Q.IsReady() && GetValue <KeyBind>("UseQExtendedTH").Active&& ToggleActive)
            {
                if (ObjectManager.Player.HasBuff("Recall"))
                {
                    return;
                }

                t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);
                if (t.IsValidTarget() && QMinion(t).IsValidTarget())
                {
                    if (ObjectManager.Player.Distance(t) > Q.Range)
                    {
                        Q.CastOnUnit(QMinion(t));
                    }
                }
            }


            if ((!ComboActive && !HarassActive))
            {
                return;
            }

            var useQExtended = GetValue <StringList>("UseQExtendedC").SelectedIndex;

            if (useQExtended != 0)
            {
                switch (useQExtended)
                {
                case 1:
                {
                    t = TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Physical);
                    var tx = QMinion(t);
                    if (tx.IsValidTarget())
                    {
                        if (!Orbwalking.InAutoAttackRange(t))
                        {
                            Q.CastOnUnit(tx);
                        }
                    }
                    break;
                }

                case 2:
                {
                    var enemy = HeroManager.Enemies.Find(e => e.IsValidTarget(Q2.Range) && !e.IsZombie);
                    if (enemy != null)
                    {
                        var tx = QMinion(enemy);
                        if (tx.IsValidTarget())
                        {
                            Q.CastOnUnit(tx);
                        }
                    }
                    break;
                }
                }
            }

            // Auto turn off Ghostblade Item if Ultimate active
            if (ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Level > 0)
            {
                Config.Item("GHOSTBLADE")
                .SetValue(ObjectManager.Player.Spellbook.GetSpell(SpellSlot.R).Name == "LucianR");
            }

            //if (useQExtended && Q.IsReady())
            //{
            //    var t = TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Physical);
            //    if (t.IsValidTarget() && QMinion.IsValidTarget())
            //    {
            //        if (!Orbwalking.InAutoAttackRange(t))
            //            Q.CastOnUnit(QMinion);
            //    }
            //}

            t = TargetSelector.GetTarget(W.Range, TargetSelector.DamageType.Physical);
            if (!t.IsValidTarget())
            {
                return;
            }

            var useQ = GetValue <bool>("UseQC");

            if (useQ && Q.IsReady())
            {
                if (t.IsValidTarget(Q.Range))
                {
                    Q.CastOnUnit(t);
                    Orbwalking.ResetAutoAttackTimer();
                }
            }

            var useW = GetValue <bool>("UseWC");

            if (useW && W.IsReady())
            {
                if (t.IsValidTarget(W.Range))
                {
                    W.Cast(t);
                    Orbwalking.ResetAutoAttackTimer();
                }
            }

            var useE = GetValue <StringList>("UseEC").SelectedIndex;

            if (useE != 0 && E.IsReady())
            {
                if (t.Distance(ObjectManager.Player.Position) > Orbwalking.GetRealAutoAttackRange(null) && t.IsValidTarget(Orbwalking.GetRealAutoAttackRange(null) + E.Range - 50) && E.IsPositionSafe(t.Position.To2D()))
                {
                    E.Cast(t.Position);
                    Orbwalking.ResetAutoAttackTimer();
                }
                else if (Q.IsPositionSafe(Game.CursorPos.To2D()))
                {
                    E.Cast(Game.CursorPos);
                    Orbwalking.ResetAutoAttackTimer();
                }
                Orbwalker.ForceTarget(t);

                //if (t.IsValidTarget(Q.Range))
                //{
                //    E.Cast(Game.CursorPos);
                //}
            }
        }