예제 #1
0
        // AIHeroClient enemy;

        public static void Orbwalking_AfterAttack(AttackableUnit unit, AttackableUnit target)
        {
            if (!unit.IsMe)
            {
                return;
            }

            if (Program.orbwalker.ActiveMode.ToString() == "LaneClear" &&
                100 * (Program.Player.Mana / Program.Player.MaxMana) > Program.qmenu.Item("Junglemana").GetValue <Slider>().CurrentValue)
            {
                var mob =
                    MinionManager.GetMinions(
                        Program.Player.ServerPosition,
                        Program.E.Range,
                        MinionTypes.All,
                        MinionTeam.Neutral,
                        MinionOrderTypes.MaxHealth).FirstOrDefault();
                var Minions = MinionManager.GetMinions(
                    Program.Player.Position.Extend(Game.CursorPosition, Program.Q.Range),
                    Program.Player.AttackRange,
                    MinionTypes.All);
                var useQ         = Program.qmenu.Item("UseQJ").GetValue <bool>();
                int countMinions = 0;
                foreach (var minions in
                         Minions.Where(
                             minion =>
                             minion.Health < Program.Player.GetAutoAttackDamage(minion) ||
                             minion.Health < Program.Q.GetDamage(minion) + Program.Player.GetAutoAttackDamage(minion) || minion.Health < Program.Q.GetDamage(minion)))
                {
                    countMinions++;
                }

                if (countMinions >= 2 && useQ && Program.Q.IsReady() && Minions != null)
                {
                    Program.Q.Cast(Program.Player.Position.Extend(Game.CursorPosition, Program.Q.Range / 2));
                }

                if (useQ && Program.Q.IsReady() && Orbwalker.InAutoAttackRange(mob) && mob != null)
                {
                    Program.Q.Cast(Game.CursorPosition);
                }
            }


            if (!(target is AIHeroClient))
            {
                return;
            }

            Program.tar = (AIHeroClient)target;

            if (Program.menu.Item("aaqaa").GetValue <KeyBind>().Active)
            {
                if (Program.Q.IsReady())
                {
                    Program.Q.Cast(Game.CursorPosition);
                    Game.SendEmote(Emote.Dance);
                }

                Orbwalker.Orbwalk(TargetSelector.GetTarget(625, TargetSelector.DamageType.Physical), Game.CursorPosition);
            }

            // Condemn.FlashE();

            if (Program.menu.Item("zzrot").GetValue <KeyBind>().Active)
            {
                Misc.zzRotCondemn.RotE();
            }

            if (Program.emenu.Item("UseEaa").GetValue <KeyBind>().Active)
            {
                Program.E.Cast((Obj_AI_Base)target);
            }

            //QLogic
            if ((Program.qmenu.Item("UseQC").GetValue <bool>() && Program.orbwalker.ActiveMode == Orbwalker.OrbwalkingMode.Combo) || (Program.orbwalker.ActiveMode == Orbwalker.OrbwalkingMode.Harass && Program.qmenu.Item("hq").GetValue <bool>()))
            {
                var value   = Program.qmenu.Item("QMode").GetValue <StringList>().DefaultValue;
                var FastQ   = Program.qmenu.Item("FastQ").GetValue <bool>();
                var htarget = TargetSelector.GetTarget(Program.E.Range, TargetSelector.DamageType.Physical);

                if (value == 0)
                {
                    QLogic.Gosu.Run();
                }

                if (value == 1)
                {
                    Program.Q.Cast(QLogic.Lords.SideQ(ObjectManager.Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                }

                if (value == 2)
                {
                    Program.Q.Cast(Game.CursorPosition);
                }

                if (value == 3)
                {
                    if (ObjectManager.Player.Position.Extend(Game.CursorPosition, 700).CountEnemiesInRange(700) <= 1)
                    {
                        Program.Q.Cast(Game.CursorPosition);
                    }
                }

                if (value == 4)
                {
                    Program.Q.Cast(QLogic.Lords.SafeQ(ObjectManager.Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                }

                if (value == 5)
                {
                    Program.Q.Cast(QLogic.Lords.AggresiveQ(ObjectManager.Player.Position.To2D(), target.Position.To2D(), 65).To3D());
                }

                if (value == 6)
                {
                    QLogic.Bursts.Burst();
                }
                if (value == 7)
                {
                    QLogic.Hiki.SafePositionQ(htarget);
                }

                if (value == 8)
                {
                }
            }
        }
예제 #2
0
        private void LogicQ()
        {
            var t = TargetSelector.GetTarget(Q3.Range, TargetSelector.DamageType.Magical);

            if (t.IsValidTarget())
            {
                if (Program.Combo && Player.Mana > RMANA + QMANA + EMANA)
                {
                    CastQ(t);
                }
                else if (Program.Harass && Config.Item("harassQ", true).GetValue <bool>() && Config.Item("Harass" + t.ChampionName).GetValue <bool>() && Player.ManaPercent > Config.Item("QHarassMana", true).GetValue <Slider>().Value&& OktwCommon.CanHarras())
                {
                    CastQ(t);
                }
                else if (OktwCommon.GetKsDamage(t, Q1) > t.Health)
                {
                    CastQ(t);
                }
                else if (Player.Mana > RMANA + QMANA)
                {
                    foreach (var enemy in HeroManager.Enemies.Where(enemy => enemy.IsValidTarget(Q3.Range) && !OktwCommon.CanMove(enemy)))
                    {
                        CastQ(t);
                    }
                }
            }

            if (Player.IsWindingUp)
            {
                return;
            }

            if (!Program.None && !Program.Combo)
            {
                var allMinions = Cache.GetMinions(Player.ServerPosition, Q1.Range);

                if (Config.Item("farmQout", true).GetValue <bool>() && Player.Mana > RMANA + QMANA + EMANA + WMANA)
                {
                    foreach (var minion in allMinions.Where(minion => minion.IsValidTarget(Q1.Range) && (!Orbwalker.InAutoAttackRange(minion) || (!minion.UnderTurret(true) && minion.UnderTurret()))))
                    {
                        var hpPred = SebbyLib.HealthPrediction.GetHealthPrediction(minion, 600);
                        if (hpPred < Q1.GetDamage(minion) && hpPred > minion.Health - hpPred * 2)
                        {
                            Q1.Cast(minion);
                            return;
                        }
                    }
                }
                if (FarmSpells && Config.Item("farmQ", true).GetValue <bool>())
                {
                    var farmPos = Q1.GetCircularFarmLocation(allMinions, Q1.Width);
                    if (farmPos.MinionsHit >= FarmMinions)
                    {
                        Q1.Cast(farmPos.Position);
                    }
                }
            }
        }
예제 #3
0
파일: Orianna.cs 프로젝트: wade1990/PortAIO
        private void LogicFarm()
        {
            if (!Program.Harass)
            {
                return;
            }

            var allMinions = Cache.GetMinions(Player.ServerPosition, Q.Range);

            if (Config.Item("farmQout", true).GetValue <bool>() && Player.Mana > RMANA + QMANA + WMANA + EMANA)
            {
                foreach (var minion in allMinions.Where(minion => minion.IsValidTarget(Q.Range) && !Orbwalker.InAutoAttackRange(minion) && minion.Health <Q.GetDamage(minion) && minion.Health> minion.FlatPhysicalDamageMod))
                {
                    Q.Cast(minion);
                }
            }

            if (!Program.LaneClear || Player.Mana < RMANA + QMANA)
            {
                return;
            }

            var mobs = Cache.GetMinions(Player.ServerPosition, 800, MinionTeam.Neutral);

            if (mobs.Count > 0)
            {
                var mob = mobs[0];
                if (Q.IsReady())
                {
                    Q.Cast(mob.Position);
                }
                if (W.IsReady() && BallPos.Distance(mob.Position) < W.Width)
                {
                    W.Cast();
                }
                else if (E.IsReady())
                {
                    E.CastOnUnit(best);
                }
                return;
            }


            if ((FarmSpells || (Player.UnderTurret(false) && !Player.UnderTurret(true))))
            {
                var Qfarm  = Q.GetCircularFarmLocation(allMinions, 100);
                var QWfarm = Q.GetCircularFarmLocation(allMinions, W.Width);

                if (Qfarm.MinionsHit + QWfarm.MinionsHit == 0)
                {
                    return;
                }
                if (Config.Item("farmQ", true).GetValue <bool>())
                {
                    if (Qfarm.MinionsHit >= FarmMinions && !W.IsReady() && Q.IsReady())
                    {
                        Q.Cast(Qfarm.Position);
                    }
                    else if (QWfarm.MinionsHit > 2 && Q.IsReady())
                    {
                        Q.Cast(QWfarm.Position);
                    }
                }

                foreach (var minion in allMinions)
                {
                    if (W.IsReady() && minion.Distance(BallPos) < W.Range && minion.Health < W.GetDamage(minion) && Config.Item("farmW", true).GetValue <bool>())
                    {
                        W.Cast();
                    }
                    if (!W.IsReady() && E.IsReady() && minion.Distance(BallPos) < E.Width && Config.Item("farmE", true).GetValue <bool>())
                    {
                        E.CastOnUnit(Player);
                    }
                }
            }
        }
예제 #4
0
        private void Cast_Q(bool combo, int mode = 0)
        {
            if (!Q.IsReady())
            {
                return;
            }
            if (combo)
            {
                var target = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

                if (!target.IsValidTarget(Q.Range))
                {
                    return;
                }
                if (target.HasBuff("AkaliMota"))
                {
                    return;
                }

                if (CheckMark(Q.Range) != null)
                {
                    target = CheckMark(Q.Range);
                }

                if (mode == 0)
                {
                    Q.Cast(target);
                }
                else if (mode == 1)
                {
                    if (!target.HasBuff("AkaliMota"))
                    {
                        Q.Cast(target);
                    }
                }
            }
            else
            {
                if (MinionManager.GetMinions(Player.Position, Q.Range).Any(minion => minion.HasBuff("AkaliMota") && Orbwalker.InAutoAttackRange(minion)))
                {
                    return;
                }

                foreach (var minion in MinionManager.GetMinions(Player.Position, Q.Range).Where(minion => HealthPrediction.GetHealthPrediction(minion,
                                                                                                                                               (int)(E.Delay + (minion.Distance(Player.Position) / E.Speed)) * 1000) <
                                                                                                Player.GetSpellDamage(minion, SpellSlot.Q) &&
                                                                                                HealthPrediction.GetHealthPrediction(minion,
                                                                                                                                     (int)(E.Delay + (minion.Distance(Player.Position) / E.Speed)) * 1000) > 0 &&
                                                                                                Orbwalker.InAutoAttackRange(minion)))
                {
                    Q.Cast(minion);
                }

                foreach (var minion in MinionManager.GetMinions(Player.Position, Q.Range).Where(minion => HealthPrediction.GetHealthPrediction(minion,
                                                                                                                                               (int)(Q.Delay + (minion.Distance(Player.Position) / Q.Speed))) <
                                                                                                Player.GetSpellDamage(minion, SpellSlot.Q)))
                {
                    Q.Cast(minion);
                }

                foreach (var minion in MinionManager.GetMinions(Player.ServerPosition, Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth).Where(minion => Player.Distance(minion.Position) <= Q.Range))
                {
                    Q.Cast(minion);
                }
            }
        }
예제 #5
0
파일: Program.cs 프로젝트: wade1990/PortAIO
        private static void DoCombo()
        {
            var target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Magical);

            if (!target.IsValidTarget())
            {
                return;
            }

            if (Menu.Item("UseREGapclose").IsActive() && CanKillWithUltCombo(target) && Q.IsReady() && W.IsReady() &&
                E.IsReady() && R.IsReady() && (Player.Distance(target) < Q.Range + E.Range * 2))
            {
                CastRSmart(target);

                E.Cast(Player.ServerPosition.Extend(target.ServerPosition, E.Range - 1));
                E.Cast(Player.ServerPosition.Extend(target.ServerPosition, E.Range - 1));

                W.Cast();
                Q.Cast(target);
            }
            else
            {
                if (R.IsEnabledAndReady())
                {
                    if (Player.GetSpellDamage(target, SpellSlot.R) > target.Health)
                    {
                        CastRSmart(target);
                    }

                    if (DamageToUnit(target) > target.Health)
                    {
                        CastRSmart(target);
                    }

                    if ((Q.IsReady() || E.IsReady()))
                    {
                        CastRSmart(target);
                    }

                    if (Orbwalker.InAutoAttackRange(target))
                    {
                        CastRSmart(target);
                    }
                }

                // Use W Before Q
                if (W.IsEnabledAndReady() && Menu.Item("UseWWhen").GetValue <StringList>().SelectedIndex == 0 &&
                    (Q.IsReady() || Orbwalker.InAutoAttackRange(target)))
                {
                    W.Cast();
                }

                if (Q.IsEnabledAndReady())
                {
                    Q.Cast(target);
                }

                if (E.IsEnabledAndReady())
                {
                    E.Cast(target);
                }
            }
        }
예제 #6
0
        public void farmQ()
        {
            if (Program.LaneClear)
            {
                var mobs = Cache.GetMinions(Player.ServerPosition, 800, MinionTeam.Neutral);
                if (mobs.Count > 0)
                {
                    var mob = mobs[0];
                    Q.Cast(mob, true);
                    return;
                }
            }

            if (!MainMenu.Item("farmQ", true).GetValue <bool>())
            {
                return;
            }

            var minions = Cache.GetMinions(Player.ServerPosition, Q.Range);

            int orbTarget = 0;

            if (Orbwalker.GetTarget() != null)
            {
                orbTarget = Orbwalker.GetTarget().NetworkId;
            }

            foreach (var minion in minions.Where(minion => orbTarget != minion.NetworkId && !Orbwalker.InAutoAttackRange(minion) && minion.Health < Q.GetDamage(minion)))
            {
                if (Q.Cast(minion) == Spell.CastStates.SuccessfullyCasted)
                {
                    return;
                }
            }

            if (MainMenu.Item("LC", true).GetValue <bool>() && Program.LaneClear && !Orbwalking.CanAttack() && FarmSpells)
            {
                var LCP = MainMenu.Item("LCP", true).GetValue <bool>();

                foreach (var minion in minions.Where(minion => Orbwalker.InAutoAttackRange(minion) && orbTarget != minion.NetworkId))
                {
                    var hpPred    = HealthPrediction.GetHealthPrediction(minion, 300);
                    var dmgMinion = minion.GetAutoAttackDamage(minion);
                    var qDmg      = Q.GetDamage(minion);
                    if (hpPred < qDmg)
                    {
                        if (hpPred > dmgMinion)
                        {
                            if (Q.Cast(minion) == Spell.CastStates.SuccessfullyCasted)
                            {
                                return;
                            }
                        }
                    }
                    else if (LCP)
                    {
                        if (hpPred > dmgMinion + qDmg)
                        {
                            if (Q.Cast(minion) == Spell.CastStates.SuccessfullyCasted)
                            {
                                return;
                            }
                        }
                    }
                }
            }
        }
예제 #7
0
        public void LaneClear()
        {
            if (GetValue <bool>("UseEQL"))
            {
                if (ECasting && ETar != null && ETar.IsValidTarget() && Q1.IsReady())
                {
                    Q1.Cast(ETar);
                }
            }

            var vMinions = MinionManager.GetMinions(Player.Position, 950);

            if (GetValue <StringList>("ELmode").SelectedIndex == 1 && E.IsReady())
            {
                var min =
                    vMinions.Where(
                        minion =>
                        minion.IsValidTarget(E.Range) && IsDashable(minion) && !GetDashingEnd(minion).To3D().UnderTurret(true) &&
                        minion.Health < GetSweepingBladeDamage(minion)).OrderBy(tar => tar.Health).FirstOrDefault();
                if (min != null)
                {
                    if (E.CastOnUnit(min))
                    {
                        vMinions.Remove(min);
                    }
                }
            }

            if (Q1.IsReady() && GetValue <bool>("UseQL") && !ETar.IsValidTarget() && !Player.IsDashing() && !ECast && !ECasting)
            {
                foreach (var minions in vMinions.Where(minions => minions.IsValidTarget(HasWhirlwind() ? Q2.Range : 475) && minions.Health < Player.GetSpellDamage(minions, SpellSlot.Q) && (AttackNow || !Orbwalker.InAutoAttackRange(minions))).OrderBy(tar => tar.Health))
                {
                    if (ETar != null && ETar.NetworkId == minions.NetworkId)
                    {
                        if (ETar.IsValidTarget() && GetSweepingBladeDamage(minions) < minions.Health)
                        {
                            if (!HasWhirlwind())
                            {
                                Q1.Cast(minions);
                            }
                            else
                            {
                                Q2.Cast(minions, false, true);
                            }
                        }
                    }
                    else
                    {
                        if (!HasWhirlwind())
                        {
                            Q1.Cast(minions);
                        }
                        else
                        {
                            Q2.Cast(minions, false, true);
                        }
                    }
                }
            }
        }
예제 #8
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            if (LaneClearActive)
            {
                var vMinions = MinionManager.GetMinions(Player.Position, Orbwalking.GetRealAutoAttackRange(null));
                foreach (var minions in
                         vMinions.Where(
                             minions => minions.HasBuff("QuinnW") && (minions.Health <(Player.GetAutoAttackDamage(minions) + PassiveMarkDamage(minions)) || minions.Health> (Player.GetAutoAttackDamage(minions) + PassiveMarkDamage(minions)) + (20 + Player.Level * 2))))
                {
                    Orbwalker.ForceTarget(minions);
                }
            }

            if (!ComboActive)
            {
                Orbwalker.SetAttack(true);
                Orbwalker.SetMovement(true);
                return;
            }
            var useQ  = GetValue <bool>("UseQ" + (ComboActive ? "C" : "H"));
            var useE  = GetValue <bool>("UseE" + (ComboActive ? "C" : "H"));
            var useR  = GetValue <bool>("UseR");
            var useET = GetValue <bool>("UseET" + (ComboActive ? "C" : "H"));
            var manE  = GetValue <KeyBind>("ManualE").Active;

            if (Player.IsMelee())
            {
                if (IsValorMode())
                {
                    if (useR)
                    {
                        var vTarget = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                        if (vTarget != null)
                        {
                            CalculateValorDamage();
                            if (vTarget.Health >= ValorMinDamage && vTarget.Health <= ValorMaxDamage)
                            {
                                R.Cast();
                            }
                        }
                    }
                    if (Q.IsReady() && useQ)
                    {
                        var t = TargetSelector.GetTarget(275, TargetSelector.DamageType.Physical);
                        if (t != null && (AttackReadiness > 0.2 && AttackReadiness < 0.75))
                        {
                            Q.Cast();
                        }
                    }
                }
                var targetLoc = Game.CursorPos;
                YTarget = (TargetSelector.GetSelectedTarget() != null &&
                           TargetSelector.GetSelectedTarget().Distance(Game.CursorPos) <= GetValue <Slider>("Cirsize").Value)
                ? TargetSelector.GetSelectedTarget()
                : TargetSelector.GetTarget(
                    GetValue <Slider>("Cirsize").Value, TargetSelector.DamageType.Physical, true, null, Game.CursorPos);
                Orbwalker.ForceTarget(YTarget);
                Orbwalker.SetMovement(false);
                if (YTarget.IsValidTarget())
                {
                    Orbwalker.SetAttack(
                        Orbwalker.GetTarget().IsValidTarget() && Orbwalker.GetTarget().NetworkId == YTarget.NetworkId);
                    if (Orbwalking.CanMove(50))
                    {
                        if (!Orbwalker.InAutoAttackRange(YTarget))
                        {
                            var pLoc = Prediction.GetPrediction(YTarget, 0.1f, 175, 600).UnitPosition;
                            MoveTo(pLoc, Orbwalking.GetRealAutoAttackRange(YTarget) / 2);
                        }
                        else
                        {
                            MoveByTarget(YTarget);
                        }
                    }
                    if (E.IsReady() && (useE || manE) && Player.Distance3D(YTarget) > 350)
                    {
                        E.CastOnUnit(YTarget);
                    }
                }
                else
                {
                    MoveTo(targetLoc, 100);
                    Orbwalker.SetAttack(false);
                }
            }
            else
            {
                Orbwalker.SetAttack(true);
                Orbwalker.SetMovement(true);
                var targ =
                    HeroManager.Enemies.Where(enemy => enemy.IsValidTarget() && Orbwalking.InAutoAttackRange(enemy) && enemy.HasBuff("QuinnW")).OrderBy(PhysHealth)
                    .FirstOrDefault();
                Orbwalker.ForceTarget(targ);

                if (E.IsReady() && (useE || manE))
                {
                    var vTarget = Orbwalker.GetTarget() as Obj_AI_Hero ?? TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                    if (vTarget != null && !IsHePantheon(vTarget) &&
                        (Player.Distance3D(vTarget) > Orbwalking.GetRealAutoAttackRange(vTarget) ||
                         (AttackReadiness > 0.2 && AttackReadiness < 0.75)))
                    {
                        if (!useET)
                        {
                            E.CastOnUnit(vTarget);
                        }
                        else if (!vTarget.UnderTurret())
                        {
                            E.CastOnUnit(vTarget);
                        }
                    }
                }
                if (Q.IsReady() && useQ)
                {
                    var t =
                        HeroManager.Enemies.Where(enemy => enemy.IsValidTarget(Q.Range) && (GetValue <StringList>("Blind" + enemy.ChampionName).SelectedIndex == 1 ||
                                                                                            enemy.HealthPercent <= GetValue <Slider>("BlindD").Value || !BlindTargetNear(enemy))).OrderBy(PhysHealth)
                        .FirstOrDefault();
                    if (t != null &&
                        (Player.Distance3D(t) > Orbwalking.GetRealAutoAttackRange(t) ||
                         (AttackReadiness > 0.2 && AttackReadiness < 0.75)))
                    {
                        Q.Collision = false;
                        var chance = Q.GetPrediction(t).Hitchance;
                        if (chance >= HitChance.VeryHigh)
                        {
                            Q.Collision = true;
                            CastSpellAoEShot(Q, t, 100);
                        }
                    }
                }
                Drawing.DrawText(
                    Drawing.WorldToScreen(Player.Position)[0] + 50,
                    Drawing.WorldToScreen(Player.Position)[1] - 20, Color.Yellow, "lol");
            }
        }
예제 #9
0
        private void Combo()
        {
            var target = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);

            if (CheckTarget(target, E.Range))
            {
                if (Menu.Item("ComboW", true).GetValue <bool>() && W.IsReady() && !Me.HasBuff("dravenfurybuff"))
                {
                    if (Menu.Item("ComboWLogic", true).GetValue <bool>())
                    {
                        if (target.DistanceToPlayer() >= 600)
                        {
                            W.Cast();
                        }
                        else
                        {
                            if (target.Health <
                                (AxeCount > 0 ? Q.GetDamage(target) * 5 : Me.GetAutoAttackDamage(target) * 5))
                            {
                                W.Cast();
                            }
                        }
                    }
                    else
                    {
                        W.Cast();
                    }
                }

                if (Menu.Item("ComboE", true).GetValue <bool>() && E.IsReady())
                {
                    if (!Orbwalker.InAutoAttackRange(target) ||
                        target.Health < (AxeCount > 0 ? Q.GetDamage(target) * 3 : Me.GetAutoAttackDamage(target) * 3) ||
                        Me.HealthPercent < 40)
                    {
                        E.CastTo(target);
                    }
                }

                if (Menu.Item("ComboR", true).GetValue <bool>() && R.IsReady())
                {
                    if (Menu.Item("ComboRSolo", true).GetValue <bool>())
                    {
                        if ((target.Health <
                             R.GetDamage(target) +
                             (AxeCount > 0 ? Q.GetDamage(target) * 2 : Me.GetAutoAttackDamage(target) * 2) +
                             (E.IsReady() ? E.GetDamage(target) : 0)) &&
                            target.Health > (AxeCount > 0 ? Q.GetDamage(target) * 3 : Me.GetAutoAttackDamage(target) * 3) &&
                            (Me.CountEnemiesInRange(1000) == 1 ||
                             (Me.CountEnemiesInRange(1000) == 2 && Me.HealthPercent >= 60)))
                        {
                            var rPred = R.GetPrediction(target);

                            if (rPred.Hitchance >= HitChance.VeryHigh)
                            {
                                R.Cast(rPred.CastPosition);
                            }
                        }
                    }

                    if (Menu.Item("ComboRTeam", true).GetValue <bool>())
                    {
                        if (Me.CountAlliesInRange(1000) <= 3 && Me.CountEnemiesInRange(1000) <= 3)
                        {
                            var rPred = R.GetPrediction(target);

                            if (rPred.AoeTargetsHitCount >= 3)
                            {
                                R.Cast(rPred.CastPosition);
                            }
                            else if (rPred.AoeTargetsHitCount >= 2)
                            {
                                R.Cast(rPred.CastPosition);
                            }
                        }
                        else if (Me.CountAlliesInRange(1000) <= 2 && Me.CountEnemiesInRange(1000) <= 4)
                        {
                            var rPred = R.GetPrediction(target);

                            if (rPred.AoeTargetsHitCount >= 3)
                            {
                                R.Cast(rPred.CastPosition);
                            }
                        }
                    }
                }
            }
        }
예제 #10
0
        public override void Game_OnGameUpdate(EventArgs args)
        {
            /*if (champ != null)
             * Drawing.DrawText(
             *      Drawing.WorldToScreen(champ.Position)[0] + 50,
             *      Drawing.WorldToScreen(champ.Position)[1] - 20, Color.Yellow, "" + textl);*/

            EvadeDetectedSkillshots.RemoveAll(skillshot => !skillshot.IsActive());
            Evader();

            if (Player.IsDashing() && ECast)
            {
                ECasting = true;
                ECast    = false;
            }

            if (GetValue <bool>("UseRC"))
            {
                AutoUlt();
            }

            var dashList =
                ObjectManager.Get <Obj_AI_Base>()
                .Where(o => o.IsValidTarget(E.Range) && IsDashable(o) &&
                       (o.Type == GameObjectType.obj_AI_Hero || o.Type == GameObjectType.obj_AI_Minion)).ToList();

            if (GetValue <bool>("UseQC") && (GetValue <KeyBind>("UseQHT").Active || ComboActive) && !GetValue <KeyBind>("Flee").Active)
            {
                if (YTarget.IsValidTarget(HasWhirlwind() ? Q2.Range : Q1.Range))
                {
                    if (HasWhirlwind() || YTarget.HasBuff("YasuoDashWrapper") || Orbwalker.InAutoAttackRange(YTarget))
                    {
                        AutoQ(YTarget);
                    }
                }
                else
                {
                    AutoQ(
                        HasWhirlwind()
                            ? TargetSelector.GetTarget(Q2.Range, TargetSelector.DamageType.Physical)
                            : TargetSelector.GetTarget(Q1.Range, TargetSelector.DamageType.Physical));
                }
            }

            var targetLoc = Game.CursorPos;

            if (GetValue <KeyBind>("Flee").Active)
            {
                CanMove = true;
                MoveTo(targetLoc, 100);
                DashToLoc(targetLoc, dashList, true);
            }

            if (LaneClearActive)
            {
                if (GetValue <StringList>("ELmode").SelectedIndex == 2)
                {
                    DashToLoc(targetLoc, dashList, true);
                }
                LaneClear();
            }

            if (ComboActive)
            {
                if (ECasting && ETar != null && ETar.IsValidTarget() && Q1.IsReady() && !HasWhirlwind())
                {
                    Q1.Cast(ETar);
                }
                YTarget = (TargetSelector.GetSelectedTarget().IsValidTarget() &&
                           TargetSelector.GetSelectedTarget().Distance(Game.CursorPos) <=
                           GetValue <Slider>("Cirsize").Value)
                    ? TargetSelector.GetSelectedTarget()
                    : TargetSelector.GetTarget(
                    GetValue <Slider>("Cirsize").Value, TargetSelector.DamageType.Physical, true, null,
                    Game.CursorPos);
                Orbwalker.ForceTarget(YTarget);
                Orbwalker.SetMovement(false);
                if (YTarget != null && YTarget.IsValidTarget())
                {
                    if (Orbwalker.GetTarget().IsValidTarget())
                    {
                        Orbwalker.SetAttack(Orbwalker.GetTarget().NetworkId == YTarget.NetworkId);
                    }
                    if (Orbwalking.CanMove(50))
                    {
                        if (!Orbwalker.InAutoAttackRange(YTarget))
                        {
                            DashToLoc(Prediction.GetPrediction(YTarget, 0.4f).UnitPosition, dashList, false);
                            var pLoc = Prediction.GetPrediction(YTarget, 0.1f, 175, 600).UnitPosition;
                            MoveTo(pLoc, Orbwalking.GetRealAutoAttackRange(YTarget) / 2);
                        }
                        else if (AttackReadiness > 0.3)
                        {
                            MoveByTarget(YTarget);
                        }
                    }
                }
                else
                {
                    CanMove = true;
                    Orbwalker.SetAttack(false);
                    MoveTo(targetLoc, 100);
                    DashToLoc(targetLoc, dashList, false);
                }
            }
            else
            {
                CanMove = true;
                Orbwalker.SetAttack(true);
                Orbwalker.SetMovement(true);
            }

            if (!Player.IsDashing() && ECasting && E.Instance.CooldownExpires - Game.Time > 0)
            {
                ECasting = false;
                ETar     = null;
            }
        }
예제 #11
0
        public static AttackableUnit GetTarget()
        {
            AttackableUnit result = null;

            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.None)
            {
                return(null);
            }
            /*Killable Minion*/
            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed ||
                Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit)
            {
                foreach (var minion in
                         ObjectManager.Get <Obj_AI_Minion>()
                         .Where(
                             minion =>
                             minion.IsValidTarget() && Orbwalker.InAutoAttackRange(minion) &&
                             minion.Health <
                             2 *
                             (RealAutoAttack(minion)))
                         )
                {
                    var t = (int)(Player.AttackCastDelay * 1000) - 100 + Game.Ping / 2 +
                            1000 * (int)Player.Distance(minion) / (int)Orbwalking.GetMyProjectileSpeed();
                    var predHealth = HealthPrediction.GetHealthPrediction(minion, t, Program.Config.Item("FarmDelay").GetValue <Slider>().Value);

                    if (minion.Team != GameObjectTeam.Neutral && MinionManager.IsMinion(minion, true))
                    {
                        if (predHealth > 0 && predHealth <= RealAutoAttack(minion))
                        {
                            return(minion);
                        }
                    }
                }
            }

            /* turrets / inhibitors / nexus */
            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                /* turrets */
                foreach (var turret in
                         ObjectManager.Get <Obj_AI_Turret>().Where(t => t.IsValidTarget() && Orbwalker.InAutoAttackRange(t)))
                {
                    return(turret);
                }

                /* inhibitor */
                foreach (var turret in
                         ObjectManager.Get <Obj_BarracksDampener>().Where(t => t.IsValidTarget() && Orbwalker.InAutoAttackRange(t)))
                {
                    return(turret);
                }

                /* nexus */
                foreach (var nexus in
                         ObjectManager.Get <Obj_HQ>().Where(t => t.IsValidTarget() && Orbwalker.InAutoAttackRange(t)))
                {
                    return(nexus);
                }
            }

            /*Champions*/
            if (Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.LastHit)
            {
                var target = TargetSelector.GetTarget(-1, TargetSelector.DamageType.Physical);
                if (target.IsValidTarget())
                {
                    return(target);
                }
            }

            /*Jungle minions*/
            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed)
            {
                result =
                    ObjectManager.Get <Obj_AI_Minion>()
                    .Where(
                        mob =>
                        mob.IsValidTarget() && Orbwalker.InAutoAttackRange(mob) && mob.Team == GameObjectTeam.Neutral)
                    .MaxOrDefault(mob => mob.MaxHealth);
                if (result != null)
                {
                    return(result);
                }
            }

            /*Lane Clear minions*/
            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
            {
                if (!ShouldWait())
                {
                    if (_prevMinion.IsValidTarget() && Orbwalker.InAutoAttackRange(_prevMinion))
                    {
                        var predHealth = HealthPrediction.LaneClearHealthPrediction(
                            _prevMinion, (int)((Player.AttackDelay * 1000) * 2f), Program.Config.Item("FarmDelay").GetValue <Slider>().Value);
                        if (predHealth >= 2 * RealAutoAttack(_prevMinion) ||
                            Math.Abs(predHealth - _prevMinion.Health) < float.Epsilon)
                        {
                            return(_prevMinion);
                        }
                    }

                    result = (from minion in
                              ObjectManager.Get <Obj_AI_Minion>()
                              .Where(minion => minion.IsValidTarget() && Orbwalker.InAutoAttackRange(minion))
                              let predHealth =
                                  HealthPrediction.LaneClearHealthPrediction(
                                      minion, (int)((Player.AttackDelay * 1000) * 2f), Program.Config.Item("FarmDelay").GetValue <Slider>().Value)
                                  where
                                  predHealth >= 2 * RealAutoAttack(minion) ||
                                  Math.Abs(predHealth - minion.Health) < float.Epsilon
                                  select minion).MaxOrDefault(m => m.Health);

                    if (result != null)
                    {
                        _prevMinion = (Obj_AI_Minion)result;
                    }
                }
            }
            return(null);
        }
예제 #12
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Physical);

            if (target.IsValidTarget(Q.Range))
            {
                if (ComboOption.GetBool("ComboAttack") && target.DistanceToPlayer() > Me.AttackRange + Me.BoundingRadius)
                {
                    var minion =
                        MinionManager.GetMinions(Me.Position, Me.AttackRange + Me.BoundingRadius, MinionTypes.All,
                                                 MinionTeam.NotAlly)
                        .Where(Orbwalker.InAutoAttackRange)
                        .OrderBy(x => x.DistanceToPlayer())
                        .FirstOrDefault();

                    if (minion != null && !minion.IsDead)
                    {
                        Orbwalker.Orbwalk(minion, Game.CursorPosition);
                    }
                }

                if (ComboOption.UseQ && Q.IsReady() && target.IsValidTarget(Q.Range) &&
                    !Orbwalker.InAutoAttackRange(target))
                {
                    if (ComboOption.GetBool("ComboMana"))
                    {
                        if (Me.Mana > Q.ManaCost + E.ManaCost)
                        {
                            var qPred = Q.GetPrediction(target);

                            if (qPred.Hitchance >= HitChance.VeryHigh)
                            {
                                Q.Cast(qPred.CastPosition, true);
                            }
                        }
                    }
                    else
                    {
                        var qPred = Q.GetPrediction(target);

                        if (qPred.Hitchance >= HitChance.VeryHigh)
                        {
                            Q.Cast(qPred.CastPosition, true);
                        }
                    }
                }

                if (ComboOption.UseW && W.IsReady() && Utils.TickCount - LastCastTickW > 2000)
                {
                    if (NavMesh.IsGrass(target.ServerPosition) && !target.IsVisible)
                    {
                        if (ComboOption.GetBool("ComboMana"))
                        {
                            if (Me.Mana > Q.ManaCost + E.ManaCost * 2 + W.ManaCost + R.ManaCost)
                            {
                                W.Cast(target.ServerPosition, true);
                            }
                        }
                        else
                        {
                            W.Cast(target.ServerPosition, true);
                        }
                    }
                }

                if (ComboOption.UseE && E.IsReady() && target.IsValidTarget(E.Range) &&
                    target.HasBuff("kalistaexpungemarker") && Utils.TickCount - lastETime >= 500)
                {
                    if (target.Health < GetRealEDamage(target))
                    {
                        E.Cast(true);
                    }

                    if (ComboOption.GetBool("ComboEUse") &&
                        target.DistanceToPlayer() > Orbwalker.GetRealAutoAttackRange(Me) + 100)
                    {
                        var EKillMinion = MinionManager.GetMinions(Me.Position, E.Range, MinionTypes.All,
                                                                   MinionTeam.NotAlly)
                                          .FirstOrDefault(x => x.HasBuff("kalistaexpungemarker") &&
                                                          x.DistanceToPlayer() <= E.Range && x.Health < GetRealEDamage(x));

                        if (EKillMinion != null && EKillMinion.DistanceToPlayer() <= E.Range &&
                            target.IsValidTarget(E.Range))
                        {
                            E.Cast(true);
                        }
                    }
                }
            }
        }
예제 #13
0
        private void KillSteal()
        {
            if (R.Instance.Name == "JhinRShot")
            {
                return;
            }

            if (Menu.Item("KillStealQ", true).GetValue <bool>() && Q.IsReady())
            {
                foreach (
                    var target in
                    HeroManager.Enemies.Where(
                        x => x.IsValidTarget(Q.Range) && x.Health < Me.GetSpellDamage(x, SpellSlot.Q)))
                {
                    if (CheckTarget(target, Q.Range))
                    {
                        Q.CastOnUnit(target, true);
                    }
                }
            }

            if (Menu.Item("KillStealW", true).GetValue <bool>() && W.IsReady())
            {
                foreach (
                    var target in
                    HeroManager.Enemies.Where(
                        x => x.IsValidTarget(W.Range) && x.Health < Me.GetSpellDamage(x, SpellSlot.W)))
                {
                    if (CheckTarget(target, W.Range))
                    {
                        if (target.Health < Me.GetSpellDamage(target, SpellSlot.Q) && Q.IsReady() &&
                            target.IsValidTarget(Q.Range))
                        {
                            return;
                        }

                        if (Menu.Item("KillStealWInAttackRange", true).GetValue <bool>() && Orbwalker.InAutoAttackRange(target))
                        {
                            W.CastTo(target);
                            return;
                        }

                        if (Orbwalker.InAutoAttackRange(target) && target.Health <= Me.GetAutoAttackDamage(target, true))
                        {
                            return;
                        }

                        W.CastTo(target);
                        return;
                    }
                }
            }
        }
예제 #14
0
        public void farmQ()
        {
            if (Program.LaneClear)
            {
                var mobs = Cache.GetMinions(Player.ServerPosition, 800, MinionTeam.Neutral);
                if (mobs.Count > 0)
                {
                    var mob = mobs[0];
                    Q.Cast(mob.Position);
                }
            }

            if (!Orbwalking.CanMove(50) || (Orbwalker.ShouldWait() && Orbwalking.CanAttack()))
            {
                return;
            }

            var minions   = Cache.GetMinions(Player.ServerPosition, Q.Range);
            int orbTarget = 0;

            if (Orbwalker.GetTarget() != null)
            {
                orbTarget = Orbwalker.GetTarget().NetworkId;
            }

            if (MainMenu.Item("FQ", true).GetValue <bool>())
            {
                foreach (var minion in minions.Where(minion => minion.IsValidTarget() && orbTarget != minion.NetworkId && !Orbwalker.InAutoAttackRange(minion)))
                {
                    int delay  = (int)((minion.Distance(Player) / Q.Speed + Q.Delay) * 1000);
                    var hpPred = HealthPrediction.GetHealthPrediction(minion, delay);
                    if (hpPred > 0 && hpPred < Q.GetDamage(minion))
                    {
                        if (Q.Cast(minion) == Spell.CastStates.SuccessfullyCasted)
                        {
                            return;
                        }
                    }
                }
            }

            if (MainMenu.Item("farmQ", true).GetValue <bool>() && !Orbwalking.CanAttack() && FarmSpells)
            {
                var LCP = MainMenu.Item("LCP", true).GetValue <bool>();
                var PT  = Game.Time - GetPassiveTime() > -1.5 || !E.IsReady();

                foreach (var minion in minions.Where(minion => Orbwalker.InAutoAttackRange(minion)))
                {
                    int delay  = (int)((minion.Distance(Player) / Q.Speed + Q.Delay) * 1000);
                    var hpPred = HealthPrediction.GetHealthPrediction(minion, delay);
                    if (hpPred < 20)
                    {
                        continue;
                    }

                    var qDmg = Q.GetDamage(minion);
                    if (hpPred < qDmg && orbTarget != minion.NetworkId)
                    {
                        if (Q.Cast(minion) == Spell.CastStates.SuccessfullyCasted)
                        {
                            return;
                        }
                    }
                    else if (PT || LCP)
                    {
                        if (minion.HealthPercent > 80)
                        {
                            if (Q.Cast(minion) == Spell.CastStates.SuccessfullyCasted)
                            {
                                return;
                            }
                        }
                    }
                }
            }
        }
예제 #15
0
        private void LogicQ()
        {
            var t = TargetSelector.GetTarget(Q.Range, TargetSelector.DamageType.Magical);

            if (t.IsValidTarget() && MainMenu.Item("Qon" + t.ChampionName).GetValue <bool>())
            {
                if (Program.Combo && Player.Mana > RMANA + QMANA + WMANA)
                {
                    Program.CastSpell(Q, t);
                }
                else if (Program.Harass && OktwCommon.CanHarras() && MainMenu.Item("harassQ", true).GetValue <bool>() &&
                         MainMenu.Item("Harass" + t.ChampionName).GetValue <bool>() && Player.ManaPercent > MainMenu.Item("QHarassMana", true).GetValue <Slider>().Value)
                {
                    Program.CastSpell(Q, t);
                }
                else if (OktwCommon.GetKsDamage(t, Q) > t.Health)
                {
                    Program.CastSpell(Q, t);
                }

                foreach (var enemy in HeroManager.Enemies.Where(enemy => enemy.IsValidTarget(Q.Range) && !OktwCommon.CanMove(enemy)))
                {
                    Program.CastSpell(Q, t);
                }
            }
            if (!OktwCommon.CanHarras())
            {
                return;
            }

            if (!Program.None && !Program.Combo && Player.Mana > RMANA + QMANA * 2)
            {
                var allMinions = Cache.GetMinions(Player.ServerPosition, Q.Range);

                if (MainMenu.Item("farmQout", true).GetValue <bool>())
                {
                    foreach (var minion in allMinions.Where(minion => minion.IsValidTarget(Q.Range) && (!Orbwalker.InAutoAttackRange(minion) || (!minion.UnderTurret(true) && minion.UnderTurret()))))
                    {
                        var hpPred = HealthPrediction.GetHealthPrediction(minion, 1100);
                        if (hpPred < GetQDamage(minion) * 0.9 && hpPred > minion.Health - hpPred * 2)
                        {
                            Q.Cast(minion);
                            return;
                        }
                    }
                }

                if (MainMenu.Item("farmQ", true).GetValue <bool>() && FarmSpells)
                {
                    foreach (var minion in allMinions.Where(minion => minion.IsValidTarget(Q.Range) && Orbwalker.InAutoAttackRange(minion)))
                    {
                        var hpPred = HealthPrediction.GetHealthPrediction(minion, 1100);
                        if (hpPred < GetQDamage(minion) * 0.9 && hpPred > minion.Health - hpPred * 2)
                        {
                            Q.Cast(minion);
                            return;
                        }
                    }
                    var farmPos = Q.GetCircularFarmLocation(allMinions, Q.Width);
                    if (farmPos.MinionsHit >= MainMenu.Item("QLCminions", true).GetValue <Slider>().Value)
                    {
                        Q.Cast(farmPos.Position);
                    }
                }
            }
        }
예제 #16
0
        private static void OnUpdate(EventArgs args)
        {
            if (Config.Item("TsAa").GetValue <StringList>().SelectedIndex == 2 || !SebbyLib.Orbwalking.CanAttack() || !Program.Combo)
            {
                return;
            }

            var orbT = Orbwalker.GetTarget() as Obj_AI_Hero;

            if (orbT != null)
            {
                var bestTarget = orbT;

                if (Config.Item("TsAa").GetValue <StringList>().SelectedIndex == 0)
                {
                    foreach (var enemy in HeroManager.Enemies.Where(enemy => orbT.NetworkId != enemy.NetworkId && enemy.IsValidTarget() && Orbwalker.InAutoAttackRange(enemy)))
                    {
                        if (enemy.Health / Player.GetAutoAttackDamage(enemy) < bestTarget.Health / Player.GetAutoAttackDamage(bestTarget))
                        {
                            bestTarget = enemy;
                        }
                    }
                }
                else
                {
                    foreach (var enemy in HeroManager.Enemies.Where(enemy => orbT.NetworkId != enemy.NetworkId && enemy.IsValidTarget() && Orbwalker.InAutoAttackRange(enemy)))
                    {
                        if (enemy.Health / Player.GetAutoAttackDamage(enemy) < 3)
                        {
                            bestTarget = enemy;
                            break;
                        }
                        if (Config.Item("TsAaPriority" + enemy.ChampionName).GetValue <Slider>().Value > Config.Item("TsAaPriority" + bestTarget.ChampionName).GetValue <Slider>().Value)
                        {
                            bestTarget = enemy;
                        }
                    }
                }
                if (bestTarget.NetworkId != orbT.NetworkId)
                {
                    Program.debug("force " + bestTarget.ChampionName);
                    Orbwalker.ForceTarget(bestTarget);
                }
            }
        }
예제 #17
0
        private static void Combo()
        {
            var target = TargetSelector.GetSelectedTarget() ?? myOrbwalker.GetTarget() as AIHeroClient;

            if (ComboOption.UseE && E.IsReady() && !Q.IsCharging)
            {
                if (target == null || !target.IsValidTarget())
                {
                    target = TargetSelector.GetTarget(E.Range, TargetSelector.DamageType.Physical);
                }

                if (target.IsValidTarget(E.Range) && GetBuffCount(target) >= ComboOption.GetSlider("ComboPassive") || W.Level == 0 || target.Health < E.GetDamage(target) + GetWDmg(target) || !Orbwalker.InAutoAttackRange(target))
                {
                    SpellManager.PredCast(E, target, true);
                    return;
                }
            }

            if (ComboOption.UseQ && Q.IsReady())
            {
                if (target == null || !target.IsValidTarget())
                {
                    target = TargetSelector.GetTarget(1600f, TargetSelector.DamageType.Physical);
                }

                if (target.IsValidTarget(1600f))
                {
                    if (Q.IsCharging)
                    {
                        if (target.IsValidTarget(Q.ChargedMaxRange))
                        {
                            SpellManager.PredCast(Q, target);
                            return;
                        }
                    }
                    else
                    {
                        if (GetBuffCount(target) >= ComboOption.GetSlider("ComboPassive") || W.Level == 0 || target.Health < Q.GetDamage(target) + GetWDmg(target))
                        {
                            if (target.IsValidTarget(Q.Range))
                            {
                                SpellManager.PredCast(Q, target);
                            }
                            else
                            {
                                Q.StartCharging();
                            }
                            return;
                        }
                    }
                }
                else
                {
                    foreach (var t in ObjectManager.Heroes.Enemies.Where(x => !x.IsDead && !x.IsZombie && x.IsValidTarget(1600f)))
                    {
                        if (Q.IsCharging)
                        {
                            if (t.IsValidTarget(Q.ChargedMaxRange))
                            {
                                SpellManager.PredCast(Q, target);
                                return;
                            }
                        }
                        else
                        {
                            if (GetBuffCount(t) >= ComboOption.GetSlider("ComboPassive") || W.Level == 0 || t.Health < Q.GetDamage(t) + GetWDmg(t))
                            {
                                if (t.IsValidTarget(Q.Range))
                                {
                                    SpellManager.PredCast(Q, t);
                                }
                                else
                                {
                                    Q.StartCharging();
                                }
                                return;
                            }
                        }
                    }
                }
            }

            if (ComboOption.UseR && R.IsReady())
            {
                if (target == null || !target.IsValidTarget())
                {
                    target = TargetSelector.GetTarget(R.Range, TargetSelector.DamageType.Physical);
                }

                if (target.IsValidTarget(R.Range) && ComboOption.GetBool("ComboRSolo") && Me.CountEnemiesInRange(1000) <= 2)
                {
                    if (target.Health + target.HPRegenRate * 2 <
                        R.GetDamage(target) + W.GetDamage(target) + (E.IsReady() ? E.GetDamage(target) : 0) +
                        (Q.IsReady() ? Q.GetDamage(target) : 0) + Me.GetAutoAttackDamage(target) * 3)
                    {
                        SpellManager.PredCast(R, target);
                        return;
                    }
                }

                var rPred = R.GetPrediction(target, true);

                if (rPred.AoeTargetsHitCount >= ComboOption.GetSlider("ComboRCount") ||
                    Me.CountEnemiesInRange(R.Range) >= ComboOption.GetSlider("ComboRCount"))
                {
                    SpellManager.PredCast(R, target);
                }
            }
        }