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(); } } }
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); } } }
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); } }
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); } }
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); } }
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; } } } }
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); } }
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); } }
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); } } }
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)); } }
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(); } } }
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(); } } }
/// <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); } } } }
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); } }
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); } }
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); } }
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(); } } }
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); } }
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); } }
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); } }
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)); } }
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); } }
/// <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)); } }
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); }
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); } } }
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); } } } }
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); } } }
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); } } } }
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)); } }
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)); } }