public static void AfterAttack(object sender, OrbwalkerActionArgs args)
        {
            if (args.Type != OrbwalkerType.AfterAttack)
            {
                return;
            }
            //var targets = GameObjects.AllGameObjects.Where(i => !i.IsAlly && !i.IsMe && !i.IsDead);
            //foreach(var target in targets)
            //{
            if (!Program.Q.IsReady())
            {
                return;
            }
            if (args.Target.IsValidTarget(800) &&
                (Orbwalker.ActiveMode == OrbwalkerMode.Combo ||
                 !Program.MainMenu.GetMenuBool("Combo Settings", "OnlyQinCombo") == true))
            {
                var tg = args.Target as AIHeroClient;
                if (tg == null)
                {
                    return;
                }
                var mode           = Program.MainMenu.GetMenuList("Combo Settings", "QMode");
                var tumblePosition = Game.CursorPos;
                switch (mode)
                {
                case "PRADA":
                    tumblePosition = tg.GetTumblePos();
                    break;

                default:
                    tumblePosition = Game.CursorPos;
                    break;
                }

                Tumble.Cast(tumblePosition);
            }

            var ms = ObjectManager.Get <AIMinionClient>().Where(minion => minion.NetworkId != minion.NetworkId && minion.IsEnemy && minion.IsValidTarget(615));

            if (ms != null)
            {
                foreach (var m in ms)
                {
                    if (!m.IsValidTarget(800))
                    {
                        return;
                    }
                    if (m != null && Program.MainMenu.GetMenuBool("Laneclear Settings", "QLastHit") == true &&
                        ObjectManager.Player.ManaPercent >=
                        Program.MainMenu.GetMenuSlider("Laneclear Settings", "QLastHitMana") &&
                        Orbwalker.ActiveMode == OrbwalkerMode.LastHit ||
                        Orbwalker.ActiveMode == OrbwalkerMode.LaneClear)
                    {
                        var dashPosition = Game.CursorPos;
                        var mode         = Program.MainMenu.GetMenuList("Combo Settings", "QMode");
                        switch (mode)
                        {
                        case "PRADA":
                            dashPosition = m.GetTumblePos();
                            break;

                        default:
                            dashPosition = Game.CursorPos;
                            break;
                        }

                        if (m.Team == GameObjectTeam.Neutral)
                        {
                            Program.Q.Cast(dashPosition);
                        }
                        foreach (var minion in ObjectManager.Get <AIMinionClient>().Where(minion =>
                                                                                          m.NetworkId != minion.NetworkId && minion.IsEnemy && minion.IsValidTarget(615)))
                        {
                            if (minion == null)
                            {
                                break;
                            }
                            var time = (int)(ObjectManager.Player.AttackCastDelay * 1000) + Game.Ping / 2 + 1000 *
                                       (int)Math.Max(0,
                                                     ObjectManager.Player.Distance(minion) - ObjectManager.Player.BoundingRadius) /
                                       (int)ObjectManager.Player.BasicAttack.MissileSpeed;
                            var predHealth = HealthPrediction.GetPrediction(minion, time);
                            if (predHealth < ObjectManager.Player.GetAutoAttackDamage(minion) + Program.Q.GetDamage(minion) &&
                                predHealth > 0)
                            {
                                Program.Q.Cast(dashPosition, true);
                            }
                        }
                    }
                }
            }
        }
예제 #2
0
        public static void AfterAttack(AttackableUnit sender, AttackableUnit target)
        {
            if (!Program.Q.IsReady())
            {
                return;
            }
            if (sender.IsMe && target.IsValid <AIHeroClient>() && (Program.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo || !Program.ComboMenu.Item("OnlyQinCombo").GetValue <bool>()))
            {
                var tg = target as AIHeroClient;
                if (tg == null)
                {
                    return;
                }
                var mode           = Program.ComboMenu.Item("QMode").GetValue <StringList>().SelectedValue;
                var tumblePosition = Game.CursorPosCenter;
                switch (mode)
                {
                case "PRADA":
                    tumblePosition = tg.GetTumblePos();
                    break;

                default:
                    tumblePosition = Game.CursorPosCenter;
                    break;
                }

                Tumble.Cast(tumblePosition);
            }

            var m = target as AIMinionClient;

            if (m != null && Program.LaneClearMenu.Item("QLastHit").GetValue <bool>() && ObjectManager.Player.ManaPercent >= Program.LaneClearMenu.Item("QLastHitMana").GetValue <Slider>().Value&& Program.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit || Program.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                var dashPosition = Game.CursorPosCenter;
                var mode         = Program.ComboMenu.Item("QMode").GetValue <StringList>().SelectedValue;
                switch (mode)
                {
                case "PRADA":
                    dashPosition = m.GetTumblePos();
                    break;

                default:
                    dashPosition = Game.CursorPosCenter;
                    break;
                }

                if (m.Team == GameObjectTeam.Neutral)
                {
                    Program.Q.Cast(dashPosition);
                }
                foreach (var minion in ObjectManager.Get <AIMinionClient>().Where(minion => m.NetworkId != minion.NetworkId && minion.IsEnemy && minion.IsValidTarget(615)))
                {
                    if (minion == null)
                    {
                        break;
                    }
                    var time       = (int)(ObjectManager.Player.AttackCastDelay * 1000) + Game.Ping / 2 + 1000 * (int)Math.Max(0, ObjectManager.Player.Distance(minion) - ObjectManager.Player.BoundingRadius) / (int)ObjectManager.Player.BasicAttack.MissileSpeed;
                    var predHealth = HealthPrediction.GetHealthPrediction(minion, time);
                    if (predHealth < ObjectManager.Player.GetAutoAttackDamage(minion) + Program.Q.GetDamage(minion) && predHealth > 0)
                    {
                        Program.Q.Cast(dashPosition, true);
                    }
                }
            }
        }