Beispiel #1
0
        protected override void Harass()
        {
            var q = Menu.Item(Menu.Name + ".harass.q").GetValue <bool>() && Q.IsReady();
            var e = Menu.Item(Menu.Name + ".harass.e").GetValue <bool>() && E.IsReady() &&
                    ResourceManager.Check("harass-e");

            if (q)
            {
                var minions = MinionManager.GetMinions(Q.Range, MinionTypes.All, MinionTeam.NotAlly);
                foreach (var minion in from minion in minions
                         let damage = Q.GetDamage(minion)
                                      where
                                      minion.HealthPercent <= 75 &&
                                      HealthPrediction.GetHealthPrediction(minion, (int)(Q.Delay * 1000f)) < damage ||
                                      damage > minion.Health * 1.75f
                                      select minion)
                {
                    Casting.TargetSkill(minion, Q);
                    break;
                }
            }
            if (e)
            {
                if (GetEHits().Item1 > 0)
                {
                    E.Cast();
                }
            }
        }
Beispiel #2
0
        protected override void LaneClear()
        {
            if (!ResourceManager.Check("lane-clear"))
            {
                return;
            }

            var useW = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady();
            var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady();
            var useR = Menu.Item(Menu.Name + ".lane-clear.r").GetValue <bool>() && R.IsReady() &&
                       Menu.Item(Menu.Name + ".miscellaneous.r-max").GetValue <Slider>().Value > GetRBuffCount();

            if (useW)
            {
                Casting.FarmSelfAoe(
                    W, MinionManager.GetMinions(W.Range), 1,
                    Player.AttackRange + Player.BoundingRadius * 1.25f + 20 * W.Level);
            }
            if (ShouldUseSpells())
            {
                if (useE)
                {
                    Casting.Farm(
                        E, MinionManager.GetMinions(E.Range),
                        Menu.Item(Menu.Name + ".lane-clear.e-min").GetValue <Slider>().Value);
                }
                if (useR)
                {
                    Casting.Farm(
                        R, MinionManager.GetMinions(R.Range),
                        Menu.Item(Menu.Name + ".lane-clear.r-min").GetValue <Slider>().Value);
                }
            }
        }
Beispiel #3
0
        protected override void LaneClear()
        {
            var min  = Menu.Item(Menu.Name + ".lane-clear.min").GetValue <Slider>().Value;
            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady() &&
                       (ResourceManager.Check("lane-clear-q") || Q.IsCharging);
            var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady() &&
                       ResourceManager.Check("lane-clear-e");

            if (useQ)
            {
                var minions = MinionManager.GetMinions(Q.ChargedMaxRange);
                if (Q.IsCharging || minions.Count >= min)
                {
                    if (!Q.IsCharging)
                    {
                        Q.StartCharging();
                        _lastLaneClearQStart = Game.Time;
                    }
                    if (Q.IsCharging && IsFullyCharged())
                    {
                        Casting.Farm(
                            Q, minions,
                            (Game.Time - _lastLaneClearQStart > 3 ? 1 : (minions.Count < min ? minions.Count : min)));
                    }
                }
            }

            if (useE)
            {
                Casting.Farm(E, MinionManager.GetMinions(E.Range + E.Width), min);
            }
        }
Beispiel #4
0
        protected override void LaneClear()
        {
            if (!ResourceManager.Check("lane-clear"))
            {
                return;
            }
            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();
            var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady();
            var minE = Menu.Item(Menu.Name + ".lane-clear.e-min").GetValue <Slider>().Value;

            if (useQ)
            {
                var minion =
                    MinionManager.GetMinions(Q.Range)
                    .FirstOrDefault(m => m.Health > Q.GetDamage(m) * 1.5f || m.Health < Q.GetDamage(m));
                if (minion != null)
                {
                    Q.CastOnUnit(minion);
                }
            }

            if (useE)
            {
                Casting.Farm(E, MinionManager.GetMinions(E.Range + E.Width), minE);
            }
        }
Beispiel #5
0
        protected override void JungleClear()
        {
            if (!ResourceManager.Check("jungle-clear"))
            {
                return;
            }
            var useQ = Menu.Item(Menu.Name + ".jungle-clear.q").GetValue <bool>() && Q.IsReady();
            var useE = Menu.Item(Menu.Name + ".jungle-clear.e").GetValue <bool>() && E.IsReady();

            if (useQ)
            {
                var minion =
                    MinionManager.GetMinions(
                        Q.ChargedMaxRange, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth)
                    .FirstOrDefault();
                if (minion != null)
                {
                    Q.CastOnUnit(minion);
                }
            }

            if (useE)
            {
                Casting.Farm(
                    E,
                    MinionManager.GetMinions(
                        E.Range + E.Width, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth), 1);
            }
        }
Beispiel #6
0
        protected override void LaneClear()
        {
            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady() && !Player.Spellbook.IsAutoAttacking &&
                       ResourceManager.Check("lane-clear");

            if (useQ)
            {
                var minion =
                    MinionManager.GetMinions(Q.Range)
                    .Where(
                        m =>
                        Q.GetDamage(m) > m.Health ||
                        HealthPrediction.LaneClearHealthPrediction(
                            m, (int)(Player.AttackDelay * 1000), (int)(Q.Delay * 1000)) >
                        Player.GetAutoAttackDamage(m) * 1.5f)
                    .OrderBy(m => !Orbwalking.InAutoAttackRange(m))
                    .ThenBy(m => m.Health)
                    .FirstOrDefault();
                if (minion != null)
                {
                    Q.Cast(minion);
                    if (Q.GetDamage(minion) > minion.Health)
                    {
                        _lastFarmQKill = minion.NetworkId;
                    }
                }
            }
        }
Beispiel #7
0
        protected override void JungleClear()
        {
            if (!ResourceManager.Check("lane-clear") && !ResourceManager.IgnoreJungle("lane-clear"))
            {
                return;
            }

            var useW = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady();
            var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady();
            var useR = Menu.Item(Menu.Name + ".lane-clear.r").GetValue <bool>() && R.IsReady() &&
                       Menu.Item(Menu.Name + ".miscellaneous.r-max").GetValue <Slider>().Value > GetRBuffCount();

            if (useW)
            {
                Casting.FarmSelfAoe(
                    W,
                    MinionManager.GetMinions(W.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth),
                    1, Player.AttackRange + Player.BoundingRadius * 1.25f + 20 * W.Level);
            }
            if (useE)
            {
                Casting.Farm(
                    E,
                    MinionManager.GetMinions(E.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth),
                    1);
            }
            if (useR)
            {
                Casting.Farm(
                    R,
                    MinionManager.GetMinions(R.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth),
                    1);
            }
        }
Beispiel #8
0
        protected override void JungleClear()
        {
            var useQ = Menu.Item(Menu.Name + ".jungle-clear.q").GetValue <bool>() && Q.IsReady() &&
                       (ResourceManager.Check("jungle-clear-q") || Q.IsCharging);
            var useE = Menu.Item(Menu.Name + ".jungle-clear.e").GetValue <bool>() && E.IsReady() &&
                       ResourceManager.Check("jungle-clear-e");

            if (useQ)
            {
                var minions = MinionManager.GetMinions(
                    Q.ChargedMaxRange, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);
                if (Q.IsCharging || minions.Count >= 1)
                {
                    if (!Q.IsCharging)
                    {
                        Q.StartCharging();
                        _lastLaneClearQStart = Game.Time;
                    }
                    if (Q.IsCharging && IsFullyCharged())
                    {
                        Casting.Farm(Q, minions, 1);
                    }
                }
            }

            if (useE)
            {
                Casting.Farm(
                    E,
                    MinionManager.GetMinions(
                        E.Range + E.Width, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth), 1);
            }
        }
Beispiel #9
0
        protected override void JungleClear()
        {
            var q = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady() &&
                    (ResourceManager.Check("lane-clear") || ResourceManager.IgnoreJungle("lane-clear"));
            var w = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady();

            if (q)
            {
                var minions = MinionManager.GetMinions(
                    Q.Range * 1.2f, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);
                var m = minions.OrderBy(x => x.Distance(Player)).FirstOrDefault();
                if (m == null)
                {
                    return;
                }
                var best = BestQPosition(null, minions, HitChance.High);
                if (!best.Item2.Equals(Vector3.Zero) && best.Item1 >= 1)
                {
                    Q.Cast(best.Item2);
                }
            }
            if (w)
            {
                var minions = MinionManager.GetMinions(
                    W.Range * 1.2f, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);
                if (minions.Any())
                {
                    Cards.Select(
                        (ResourceManager.Check("lane-clear-blue") || ResourceManager.IgnoreJungle("lane-clear-blue"))
                            ? CardColor.Red
                            : CardColor.Blue);
                }
            }
        }
Beispiel #10
0
        private void OnOrbwalkingAfterAttack(AttackableUnit unit, AttackableUnit target)
        {
            try
            {
                if (unit.IsMe && W.IsReady())
                {
                    var useW        = false;
                    var wMin        = 0;
                    var laneclear   = false;
                    var jungleClear = false;
                    switch (Orbwalker.ActiveMode)
                    {
                    case Orbwalking.OrbwalkingMode.Combo:
                        useW = Menu.Item(Menu.Name + ".combo.w").GetValue <bool>();
                        break;

                    case Orbwalking.OrbwalkingMode.Mixed:
                        useW = Menu.Item(Menu.Name + ".harass.w").GetValue <bool>();
                        break;

                    case Orbwalking.OrbwalkingMode.LaneClear:
                        useW = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>();
                        wMin = target.Team != GameObjectTeam.Neutral
                                ? Menu.Item(Menu.Name + ".lane-clear.w-min").GetValue <Slider>().Value
                                : 1;
                        laneclear   = true;
                        jungleClear = target.Team == GameObjectTeam.Neutral;
                        break;
                    }
                    if (useW &&
                        (!laneclear ||
                         (jungleClear
                             ? (ResourceManager.Check("lane-clear-w") || ResourceManager.IgnoreJungle("lane-clear-w"))
                             : ResourceManager.Check("lane-clear-w"))))
                    {
                        var range   = W.Range + Player.BoundingRadius * 2f;
                        var targets = laneclear
                            ? MinionManager.GetMinions(range + 450, MinionTypes.All, MinionTeam.NotAlly)
                            : GameObjects.EnemyHeroes.Where(e => e.IsValidTarget(range + 450))
                                      .Cast <Obj_AI_Base>()
                                      .ToList();
                        if (targets.Count >= wMin && targets.Any(Orbwalking.InAutoAttackRange) &&
                            (wMin == 0 ||
                             targets.Any(
                                 t =>
                                 Orbwalking.InAutoAttackRange(t) &&
                                 targets.Any(t2 => t2.NetworkId != t.NetworkId && t2.Distance(t) <= 450))))
                        {
                            W.Cast();
                            Orbwalking.ResetAutoAttackTimer();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
Beispiel #11
0
        protected override void LaneClear()
        {
            if (!ResourceManager.Check("lane-clear"))
            {
                return;
            }

            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();
            var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady();

            if (!useQ && !useE)
            {
                return;
            }

            var minE    = ItemData.Runaans_Hurricane_Ranged_Only.GetItem().IsOwned(Player) ? 3 : 2;
            var minQ    = Menu.Item(Menu.Name + ".lane-clear.q-min").GetValue <Slider>().Value;
            var minions = MinionManager.GetMinions(Q.Range);

            if (minions.Count == 0)
            {
                return;
            }
            if (useQ && minions.Count >= minQ && !Player.IsWindingUp && !Player.IsDashing())
            {
                foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x)))
                {
                    var killcount = 0;
                    foreach (var colminion in
                             QGetCollisions(Player, Player.ServerPosition.Extend(minion.ServerPosition, Q.Range)))
                    {
                        if (colminion.Health <= Q.GetDamage(colminion))
                        {
                            killcount++;
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (killcount >= minQ)
                    {
                        Q.Cast(minion.ServerPosition);
                        break;
                    }
                }
            }
            if (useE)
            {
                var killable = minions.Where(m => E.IsInRange(m) && Rend.IsKillable(m, false)).ToList();
                if (killable.Count >= minE)
                {
                    CastE();
                }
            }
        }
Beispiel #12
0
        protected override void JungleClear()
        {
            if (!ResourceManager.Check("lane-clear") && !ResourceManager.IgnoreJungle("lane-clear"))
            {
                return;
            }

            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();
            var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady();

            if (!useQ && !useE)
            {
                return;
            }

            var minions = MinionManager.GetMinions(
                Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth);

            if (minions.Count == 0)
            {
                return;
            }
            if (useQ && minions.Count >= 1 && !Player.IsWindingUp && !Player.IsDashing())
            {
                foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x)))
                {
                    var killcount = 0;
                    foreach (var colminion in
                             QGetCollisions(Player, Player.ServerPosition.Extend(minion.ServerPosition, Q.Range)))
                    {
                        if (colminion.Health <= Q.GetDamage(colminion))
                        {
                            killcount++;
                        }
                        else
                        {
                            break;
                        }
                    }

                    if (killcount >= 1)
                    {
                        Q.Cast(minion.ServerPosition);
                        break;
                    }
                }
            }
            if (useE)
            {
                var killable = minions.Where(m => E.IsInRange(m) && Rend.IsKillable(m, false)).ToList();
                if (killable.Count >= 1)
                {
                    CastE();
                }
            }
        }
Beispiel #13
0
 /// <summary>
 /// Post update.
 /// </summary>
 public void PostUpdate()
 {
     if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear ||
         Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit)
     {
         if (Cards.Has(CardColor.Red))
         {
             var range   = Player.AttackRange + Player.BoundingRadius * 1.5f;
             var minions = MinionManager.GetMinions(range, MinionTypes.All, MinionTeam.NotAlly);
             var pred    = MinionManager.GetBestCircularFarmLocation(
                 minions.Select(m => m.Position.To2D()).ToList(), 500, range);
             var target = minions.OrderBy(m => m.Distance(pred.Position)).FirstOrDefault();
             if (target != null)
             {
                 Orbwalker.ForceTarget(target);
             }
         }
     }
     if (!Cards.ShouldWait && Cards.Status != SelectStatus.Selecting && Cards.Status != SelectStatus.Selected)
     {
         Orbwalker.ForceTarget(null);
     }
     if (Cards.Status != SelectStatus.Selected)
     {
         if (Menu.Item(Menu.Name + ".manual.blue").GetValue <KeyBind>().Active)
         {
             Cards.Select(CardColor.Blue);
         }
         if (Menu.Item(Menu.Name + ".manual.red").GetValue <KeyBind>().Active)
         {
             Cards.Select(CardColor.Red);
         }
         if (Menu.Item(Menu.Name + ".manual.gold").GetValue <KeyBind>().Active)
         {
             Cards.Select(CardColor.Gold);
         }
     }
     if (HeroListManager.Enabled("q-immobile") && Q.IsReady())
     {
         var target =
             GameObjects.EnemyHeroes.FirstOrDefault(
                 t =>
                 t.IsValidTarget(Q.Range) && HeroListManager.Check("q-immobile", t) &&
                 BestTargetOnlyManager.Check("q-immobile", W, t) && IsImmobile(t));
         if (target != null)
         {
             var best = BestQPosition(
                 target, GameObjects.EnemyHeroes.Select(e => e as Obj_AI_Base).ToList(), HitChance.High);
             if (!best.Item2.Equals(Vector3.Zero) && best.Item1 >= 1)
             {
                 Q.Cast(best.Item2);
             }
         }
     }
 }
Beispiel #14
0
        protected override void LaneClear()
        {
            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady() &&
                       ResourceManager.Check("lane-clear");

            if (useQ)
            {
                QFarmLogic(
                    MinionManager.GetMinions(Q.Range),
                    Menu.Item(Menu.Name + ".lane-clear.q-min").GetValue <Slider>().Value);
            }
        }
Beispiel #15
0
        protected override void JungleClear()
        {
            var useQ = Menu.Item(Menu.Name + ".jungle-clear.q").GetValue <bool>() && Q.IsReady() &&
                       ResourceManager.Check("jungle-clear");

            if (useQ)
            {
                QFarmLogic(
                    MinionManager.GetMinions(Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth),
                    1);
            }
        }
Beispiel #16
0
        protected override void JungleClear()
        {
            var useQ = Menu.Item(Menu.Name + ".jungle-clear.q").GetValue <bool>() && Q.IsReady() && !Player.Spellbook.IsAutoAttacking &&
                       ResourceManager.Check("jungle-clear");

            if (useQ)
            {
                Casting.Farm(
                    Q,
                    MinionManager.GetMinions(Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth),
                    1);
            }
        }
Beispiel #17
0
        protected override void OnPostUpdate()
        {
            if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit && !Player.Spellbook.IsAutoAttacking &&
                Menu.Item(Menu.Name + ".lasthit.q").GetValue <bool>() && Q.IsReady())
            {
                var m =
                    MinionManager.GetMinions(Q.Range, MinionTypes.All, MinionTeam.NotAlly)
                    .FirstOrDefault(
                        e =>
                        e.HealthPercent <= 75 &&
                        (_lastAaMinion == null || e.NetworkId != _lastAaMinion.NetworkId ||
                         Game.Time > _lastAaMinionEndTime) &&
                        HealthPrediction.GetHealthPrediction(e, (int)(Q.Delay * 1000f)) < Q.GetDamage(e));
                if (m != null)
                {
                    Casting.TargetSkill(m, Q);
                }
            }

            if (Ultimate.IsActive(UltimateModeType.Assisted) && R.IsReady())
            {
                if (Ultimate.ShouldMove(UltimateModeType.Assisted))
                {
                    Orbwalking.MoveTo(Game.CursorPos);
                }
                var target = TargetSelector.GetTarget(R);
                if (target != null && !RLogic(UltimateModeType.Assisted, target))
                {
                    RLogicSingle(UltimateModeType.Assisted);
                }
            }

            if (Ultimate.IsActive(UltimateModeType.Auto) && R.IsReady())
            {
                var target = TargetSelector.GetTarget(R);
                if (target != null && !RLogic(UltimateModeType.Auto, target))
                {
                    RLogicSingle(UltimateModeType.Auto);
                }
            }

            if (Menu.Item(Menu.Name + ".miscellaneous.e-auto").GetValue <bool>() && E.IsReady() &&
                ResourceManager.Check("auto-e") && !Player.IsRecalling() && !Player.InFountain())
            {
                var buff = GetEBuff();
                if (buff == null || buff.EndTime - Game.Time <= Game.Ping / 2000f + 0.5f)
                {
                    E.Cast();
                }
            }
        }
Beispiel #18
0
        protected override void LaneClear()
        {
            if (!ResourceManager.Check("lane-clear-q"))
            {
                return;
            }

            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();

            if (useQ)
            {
                Casting.Farm(
                    Q, MinionManager.GetMinions(Q.Range + Q.Width),
                    Menu.Item(Menu.Name + ".lane-clear.q-min").GetValue <Slider>().Value);
            }
        }
Beispiel #19
0
        protected override void LaneClear()
        {
            var q = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();
            var e = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady() &&
                    ResourceManager.Check("lane-clear-e");

            if (q)
            {
                Casting.Farm(Q, MinionManager.GetMinions(Q.Range), 1);
            }
            if (e)
            {
                Casting.FarmSelfAoe(
                    E, MinionManager.GetMinions(E.Range),
                    Menu.Item(Menu.Name + ".lane-clear.e-min").GetValue <Slider>().Value);
            }
        }
Beispiel #20
0
        protected override void JungleClear()
        {
            if (!ResourceManager.Check("lane-clear-q") && !ResourceManager.IgnoreJungle("lane-clear-q"))
            {
                return;
            }

            var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();

            if (useQ)
            {
                Casting.Farm(
                    Q,
                    MinionManager.GetMinions(
                        Q.Range + Q.Width, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth), 1);
            }
        }
Beispiel #21
0
 private void OnOrbwalkingAfterAttack(AttackableUnit unit, AttackableUnit target)
 {
     try
     {
         if (unit.IsMe)
         {
             var useW = false;
             if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear)
             {
                 var minion = target as Obj_AI_Minion;
                 if (minion != null)
                 {
                     if (target.Team == GameObjectTeam.Neutral)
                     {
                         useW = Menu.Item(Menu.Name + ".jungle-clear.w").GetValue <bool>() &&
                                ResourceManager.Check("jungle-clear");
                     }
                     else
                     {
                         useW = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() &&
                                ResourceManager.Check("lane-clear") &&
                                MinionManager.GetMinions(W.Range).Count >=
                                Menu.Item(Menu.Name + ".lane-clear.w-min").GetValue <Slider>().Value;
                     }
                 }
             }
             if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Mixed)
             {
                 useW = target is Obj_AI_Hero && Menu.Item(Menu.Name + ".harass.w").GetValue <bool>();
             }
             if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
             {
                 useW = target is Obj_AI_Hero && Menu.Item(Menu.Name + ".combo.w").GetValue <bool>();
             }
             if (useW)
             {
                 W.Cast();
             }
         }
     }
     catch (Exception ex)
     {
         Global.Logger.AddItem(new LogItem(ex));
     }
 }
Beispiel #22
0
        protected override void JungleClear()
        {
            var q = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady();
            var e = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady();

            if (q)
            {
                Casting.Farm(
                    Q,
                    MinionManager.GetMinions(Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth),
                    1);
            }
            if (e)
            {
                Casting.FarmSelfAoe(
                    E,
                    MinionManager.GetMinions(E.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth),
                    1);
            }
        }
Beispiel #23
0
        /// <summary>
        /// Lane Clear
        /// </summary>
        public void LaneClear()
        {
            try
            {
                var q    = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady() && ResourceManager.Check("lane-clear");
                var qMin = Menu.Item(Menu.Name + ".lane-clear.q-min").GetValue <Slider>().Value;
                var w    = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>() && W.IsReady();

                if (q)
                {
                    var minions = MinionManager.GetMinions(Q.Range * 1.2f);
                    var m       = minions.OrderBy(x => x.Distance(Player)).FirstOrDefault();
                    if (m == null)
                    {
                        return;
                    }
                    var best = BestQPosition(null, minions, HitChance.High);
                    if (!best.Item2.Equals(Vector3.Zero) && best.Item1 >= qMin)
                    {
                        Q.Cast(best.Item2);
                    }
                }
                if (w)
                {
                    var minions = MinionManager.GetMinions(W.Range * 1.2f);
                    if (minions.Any())
                    {
                        Cards.Select(!ResourceManager.Check("lane-clear-blue") ? CardColor.Blue : CardColor.Red);
                    }
                    else if (GameObjects.EnemyTurrets.Any(t => t.IsValid && !t.IsDead && t.Health > 1 && t.Distance(Player) < W.Range))
                    {
                        Cards.Select(CardColor.Blue);
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
Beispiel #24
0
        private Obj_AI_Base BestRedMinion()
        {
            var minions =
                MinionManager.GetMinions(float.MaxValue, MinionTypes.All, MinionTeam.NotAlly)
                .Where(Orbwalking.InAutoAttackRange)
                .ToList();
            var possibilities =
                ListExtensions.ProduceEnumeration(minions.Select(p => p.ServerPosition.To2D()).ToList())
                .Where(p => p.Count > 0 && p.Count < 8)
                .ToList();
            var hits   = 0;
            var center = Vector2.Zero;
            var radius = float.MaxValue;

            foreach (var possibility in possibilities)
            {
                var mec = MEC.GetMec(possibility);
                if (mec.Radius < W.Width * 1.5f)
                {
                    if (possibility.Count > hits || possibility.Count == hits && mec.Radius < radius)
                    {
                        hits   = possibility.Count;
                        radius = mec.Radius;
                        center = mec.Center;
                        if (hits == minions.Count)
                        {
                            break;
                        }
                    }
                }
            }

            if (hits > 0 && !center.Equals(Vector2.Zero))
            {
                return(minions.OrderBy(m => m.Position.Distance(center.To3D())).FirstOrDefault());
            }

            return(null);
        }
Beispiel #25
0
        protected override void LaneClear()
        {
            var q    = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>();
            var qMin = Menu.Item(Menu.Name + ".lane-clear.q-min").GetValue <Slider>().Value;
            var w    = Menu.Item(Menu.Name + ".lane-clear.w").GetValue <bool>();

            if (ManaManager.Check("lane-clear") && q && Q.IsReady())
            {
                var minions = MinionManager.GetMinions(
                    Q.Range * 1.2f, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
                var m = minions.OrderBy(x => x.Distance(Player)).FirstOrDefault();
                if (m == null)
                {
                    return;
                }
                if (m.Team != GameObjectTeam.Neutral)
                {
                    minions.RemoveAll(x => x.Team == GameObjectTeam.Neutral);
                }
                else
                {
                    qMin = 1;
                }
                var best = BestQPosition(null, minions, HitChance.High);
                if (!best.Item2.Equals(Vector3.Zero) && best.Item1 >= qMin)
                {
                    Q.Cast(best.Item2);
                }
            }
            if (w && W.IsReady())
            {
                var minions = MinionManager.GetMinions(
                    W.Range * 1.2f, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.MaxHealth);
                if (minions.Any())
                {
                    Cards.Select(!ManaManager.Check("lane-clear-blue") ? CardColor.Blue : CardColor.Red);
                }
            }
        }
Beispiel #26
0
 protected override void OnPreUpdate()
 {
     if ((Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit && ManaManager.Check("lasthit")) &&
         E.IsReady())
     {
         var ePoison = Menu.Item(Menu.Name + ".lasthit.e-poison").GetValue <bool>();
         var eHit    = Menu.Item(Menu.Name + ".lasthit.e").GetValue <bool>();
         if (eHit || ePoison)
         {
             var m =
                 MinionManager.GetMinions(Player.ServerPosition, E.Range, MinionTypes.All, MinionTeam.NotAlly)
                 .FirstOrDefault(
                     e =>
                     e.Health < E.GetDamage(e) - 5 &&
                     (ePoison && GetPoisonBuffEndTime(e) > E.ArrivalTime(e) || eHit));
             if (m != null)
             {
                 Casting.TargetSkill(m, E);
             }
         }
     }
 }
Beispiel #27
0
 protected override void OnPostUpdate()
 {
     if (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear ||
         Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit)
     {
         if (Cards.Has(CardColor.Red))
         {
             var range   = Player.AttackRange + Player.BoundingRadius * 1.5f;
             var minions = MinionManager.GetMinions(range, MinionTypes.All, MinionTeam.NotAlly);
             var pred    = MinionManager.GetBestCircularFarmLocation(
                 minions.Select(m => m.Position.To2D()).ToList(), 500, range);
             var target = minions.OrderBy(m => m.Distance(pred.Position)).FirstOrDefault();
             if (target != null)
             {
                 Orbwalker.ForceTarget(target);
             }
         }
     }
     if (!Cards.ShouldWait && Cards.Status != SelectStatus.Selecting && Cards.Status != SelectStatus.Selected)
     {
         Orbwalker.ForceTarget(null);
     }
     if (Cards.Status != SelectStatus.Selected)
     {
         if (Menu.Item(Menu.Name + ".manual.blue").GetValue <KeyBind>().Active)
         {
             Cards.Select(CardColor.Blue);
         }
         if (Menu.Item(Menu.Name + ".manual.red").GetValue <KeyBind>().Active)
         {
             Cards.Select(CardColor.Red);
         }
         if (Menu.Item(Menu.Name + ".manual.gold").GetValue <KeyBind>().Active)
         {
             Cards.Select(CardColor.Gold);
         }
     }
 }
Beispiel #28
0
        private void QCollisionCheck(Obj_AI_Hero target)
        {
            var minions = MinionManager.GetMinions(Q.Range);

            if (minions.Count < 1 || Player.IsWindingUp || Player.IsDashing())
            {
                return;
            }

            foreach (var minion in minions)
            {
                var difference = Player.Distance(target) - Player.Distance(minion);
                for (var i = 0; i < difference; i += (int)target.BoundingRadius)
                {
                    var point = minion.ServerPosition.To2D().Extend(Player.ServerPosition.To2D(), -i).To3D();
                    var time  = Q.Delay + (ObjectManager.Player.Distance(point) / Q.Speed * 1000f);

                    var prediction = Prediction.GetPrediction(target, time);

                    var collision = Q.GetCollision(point.To2D(), new List <Vector2> {
                        prediction.UnitPosition.To2D()
                    });

                    if (collision.Any(x => x.Health > Q.GetDamage(x)))
                    {
                        return;
                    }

                    if (prediction.UnitPosition.Distance(point) <= Q.Width &&
                        !minions.Any(m => m.Distance(point) <= Q.Width))
                    {
                        Q.Cast(minion);
                    }
                }
            }
        }
Beispiel #29
0
        private static void OnCorePostUpdate(EventArgs args)
        {
            try
            {
                if (_menu == null || !_menu.Item(_menu.Name + ".enabled").GetValue <bool>())
                {
                    return;
                }

                if (Environment.TickCount - _lastTick >= _interval)
                {
                    _lastTick = Environment.TickCount;

                    if (_menu.Item(_menu.Name + ".fountain").GetValue <bool>() && !ObjectManager.Player.InFountain())
                    {
                        return;
                    }

                    if (ObjectManager.Player.ManaPercent >=
                        _menu.Item(_menu.Name + ".min-mana").GetValue <Slider>().Value)
                    {
                        var tearSlot = ObjectManager.Player.GetSpellSlot("TearsDummySpell");
                        if (tearSlot != SpellSlot.Unknown &&
                            Game.Time > ObjectManager.Player.GetSpell(tearSlot).CooldownExpires&&
                            ObjectManager.Player.CountEnemiesInRange(
                                _menu.Item(_menu.Name + ".min-distance").GetValue <Slider>().Value) <= 0)
                        {
                            var spell =
                                _spells.FirstOrDefault(
                                    s => s.IsReady() && _menu.Item(_menu.Name + "." + s.Slot).GetValue <bool>());
                            if (spell != null)
                            {
                                if (spell.IsSkillshot)
                                {
                                    var target =
                                        GameObjects.EnemyHeroes.Where(e => e.IsValidTarget(spell.Range))
                                        .Concat(MinionManager.GetMinions(spell.Range))
                                        .FirstOrDefault();
                                    if (target != null)
                                    {
                                        spell.Cast(target.Position);
                                    }
                                    else
                                    {
                                        var position = ObjectManager.Player.Position.Extend(
                                            Game.CursorPos, Math.Min(1000, spell.Range * 0.8f + Random.Next(1, 26)));
                                        if (position.IsValid())
                                        {
                                            spell.Cast(position);
                                        }
                                    }
                                }
                                else if (spell.Range > 0f)
                                {
                                    if (spell.Speed.Equals(default(float)))
                                    {
                                        spell.Cast();
                                    }
                                    else
                                    {
                                        var target =
                                            GameObjects.EnemyHeroes.Where(e => e.IsValidTarget(spell.Range))
                                            .Concat(MinionManager.GetMinions(spell.Range))
                                            .FirstOrDefault();
                                        if (target != null)
                                        {
                                            spell.Cast(target);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }
Beispiel #30
0
        private void QLogic()
        {
            try
            {
                var target = TargetSelector.GetTarget(Q.Range);
                if (target != null)
                {
                    Q.CastOnUnit(target);
                }
                else if (Menu.Item(Menu.Name + ".miscellaneous.extended-q").GetValue <bool>())
                {
                    target = TargetSelector.GetTarget(Q1);
                    if (target != null)
                    {
                        var heroPositions = (from t in GameObjects.EnemyHeroes
                                             where t.IsValidTarget(Q1.Range)
                                             let prediction = Q.GetPrediction(t)
                                                              select new CPrediction.Position(t, prediction.UnitPosition)).Where(
                            t => t.UnitPosition.Distance(Player.Position) < Q1.Range).ToList();
                        if (heroPositions.Any())
                        {
                            var minions = MinionManager.GetMinions(
                                Q1.Range, MinionTypes.All, MinionTeam.NotAlly, MinionOrderTypes.None);

                            if (minions.Any(m => m.IsMoving) && !heroPositions.Any(h => HasPassiveDebuff(h.Hero)))
                            {
                                return;
                            }

                            var outerMinions   = minions.Where(m => m.Distance(Player) > Q.Range).ToList();
                            var innerPositions = minions.Where(m => m.Distance(Player) < Q.Range).ToList();
                            foreach (var minion in innerPositions)
                            {
                                var lMinion  = minion;
                                var coneBuff = new Geometry.Polygon.Sector(
                                    minion.Position,
                                    Player.Position.Extend(minion.Position, Player.Distance(minion) + Q.Range * 0.5f),
                                    (float)(40 * Math.PI / 180), Q1.Range - Q.Range);
                                var coneNormal = new Geometry.Polygon.Sector(
                                    minion.Position,
                                    Player.Position.Extend(minion.Position, Player.Distance(minion) + Q.Range * 0.5f),
                                    (float)(60 * Math.PI / 180), Q1.Range - Q.Range);
                                foreach (var enemy in
                                         heroPositions.Where(
                                             m => m.UnitPosition.Distance(lMinion.Position) < Q1.Range - Q.Range))
                                {
                                    if (coneBuff.IsInside(enemy.Hero) && HasPassiveDebuff(enemy.Hero))
                                    {
                                        Q.CastOnUnit(minion);
                                        return;
                                    }
                                    if (coneNormal.IsInside(enemy.UnitPosition))
                                    {
                                        var insideCone =
                                            outerMinions.Where(m => coneNormal.IsInside(m.Position)).ToList();
                                        if (!insideCone.Any() ||
                                            enemy.UnitPosition.Distance(minion.Position) <
                                            insideCone.Select(
                                                m => m.Position.Distance(minion.Position) - m.BoundingRadius)
                                            .DefaultIfEmpty(float.MaxValue)
                                            .Min())
                                        {
                                            Q.CastOnUnit(minion);
                                            return;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Global.Logger.AddItem(new LogItem(ex));
            }
        }