/// <summary> /// Fired when the game is updated. /// </summary> public void Harass(EntropyEventArgs args) { /// <summary> /// The R Harass Logic. /// </summary> if (SpellClass.R.Ready && MenuClass.Spells["r"]["harass"].As <MenuSliderBool>().Enabled) { var manaCheck = UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.R.Slot, MenuClass.Spells["r"]["harass"]); switch (UtilityClass.Player.Spellbook.GetSpell(SpellSlot.R).ToggleState) { case 1 when GlacialStorm == null: var bestTarget = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.R.Range); if (bestTarget != null) { if (manaCheck && !Invulnerable.Check(bestTarget, DamageType.Magical) && MenuClass.Spells["r"]["whitelist"][bestTarget.CharName.ToLower()].As <MenuBool>().Enabled) { SpellClass.R.Cast(bestTarget); } } break; case 2 when GlacialStorm != null: if (!manaCheck || !GameObjects.EnemyHeroes.Any(t => !Invulnerable.Check(t, DamageType.Magical) && t.IsValidTarget(SpellClass.R.Width, checkRangeFrom: GlacialStorm.Position) && MenuClass.Spells["r"]["whitelist"][t.CharName.ToLower()].As <MenuBool>().Enabled)) { SpellClass.R.Cast(); } break; } } /// <summary> /// The Q Harass Logic. /// </summary> if (SpellClass.Q.Ready && MenuClass.Spells["q"]["harass"].As <MenuSliderBool>().Enabled) { var manaCheck = UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["harass"]); switch (UtilityClass.Player.Spellbook.GetSpell(SpellSlot.Q).ToggleState) { case 1 when FlashFrost == null: var bestTarget = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.Q.Range); if (bestTarget != null) { if (manaCheck && !Invulnerable.Check(bestTarget, DamageType.Magical) && MenuClass.Spells["q"]["whitelist"][bestTarget.CharName.ToLower()].As <MenuBool>().Enabled) { SpellClass.Q.Cast(bestTarget); } } break; case 2 when FlashFrost != null: if (!GameObjects.EnemyHeroes.Any(t => !Invulnerable.Check(t, DamageType.Magical) && t.IsValidTarget(SpellClass.Q.Width, checkRangeFrom: FlashFrost.Position) && MenuClass.Spells["q"]["whitelist"][t.CharName.ToLower()].As <MenuBool>().Enabled)) { SpellClass.Q.Cast(); } break; } } /// <summary> /// The E Harass Logic. /// </summary> if (SpellClass.E.Ready && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["harass"]) && MenuClass.Spells["e"]["harass"].As <MenuSliderBool>().Enabled) { var bestTarget = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.E.Range); if (bestTarget != null && !Invulnerable.Check(bestTarget, DamageType.Magical) && MenuClass.Spells["e"]["whitelist"][bestTarget.CharName.ToLower()].As <MenuBool>().Enabled) { switch (MenuClass.Spells["e"]["modes"]["harass"].As <MenuList>().Value) { case 0 when IsChilled(bestTarget): SpellClass.E.CastOnUnit(bestTarget); break; case 1: SpellClass.E.CastOnUnit(bestTarget); break; } } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { if (GameObjects.Player.IsRecalling()) { return; } /// <summary> /// The R Stacking Manager. /// </summary> if (GameObjects.Player.InFountain() && Bools.HasTear(GameObjects.Player) && GameObjects.Player.Spellbook.GetSpell(SpellSlot.R).ToggleState == 1 && Vars.Menu["miscellaneous"]["tear"].GetValue <MenuBool>().Value) { Vars.R.Cast(Game.CursorPos); } /// <summary> /// The Automatic Q Logic. /// </summary> if (Vars.Q.IsReady() && GameObjects.Player.Spellbook.GetSpell(SpellSlot.Q).ToggleState == 1 && Vars.Menu["spells"]["q"]["logical"].GetValue <MenuBool>().Value) { foreach (var target in GameObjects.EnemyHeroes.Where( t => Bools.IsImmobile(t) && !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range))) { Vars.Q.Cast(Vars.Q.GetPrediction(target).UnitPosition); } } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["logical"].GetValue <MenuBool>().Value) { foreach (var target in GameObjects.EnemyHeroes.Where( t => Bools.IsImmobile(t) && !Invulnerable.Check(t) && t.IsValidTarget(Vars.W.Range))) { Vars.W.Cast( GameObjects.Player.ServerPosition.Extend( target.ServerPosition, GameObjects.Player.Distance(target) + 20f)); } } /// <summary> /// The Q Missile Manager. /// </summary> if (Vars.Q.IsReady() && Anivia.QMissile != null && GameObjects.Player.Spellbook.GetSpell(SpellSlot.Q).ToggleState != 1) { switch (Variables.Orbwalker.ActiveMode) { /// <summary> /// The Clear Q Explosion Logic. /// </summary> case OrbwalkingMode.LaneClear: if (Anivia.QMissile.Position.CountEnemyHeroesInRange(Vars.Q.Width * 2) > 0) { Vars.Q.Cast(); } if (!Vars.Menu["spells"]["q"]["clear"].GetValue <MenuSliderButton>().BValue) { return; } if (Targets.QMinions.Count >= 2) { Vars.Q.Cast(); } break; /// <summary> /// The Combo Q Explosion Logic. /// </summary> default: if (!Vars.Menu["spells"]["q"]["combo"].GetValue <MenuBool>().Value) { return; } if (Anivia.QMissile.Position.CountEnemyHeroesInRange(Vars.Q.Width * 2) > 0) { Vars.Q.Cast(); } break; } } /// <summary> /// The R Missile Manager. /// </summary> if (Vars.R.IsReady() && Anivia.RMissile != null && !GameObjects.Player.InFountain() && GameObjects.Player.Spellbook.GetSpell(SpellSlot.R).ToggleState != 1) { switch (Variables.Orbwalker.ActiveMode) { /// <summary> /// The Clear R Disable Logic. /// </summary> case OrbwalkingMode.LaneClear: if (!Vars.Menu["spells"]["r"]["clear"].GetValue <MenuSliderButton>().BValue) { return; } if (!Targets.RMinions.Any() || GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.R.Slot, Vars.Menu["spells"]["r"]["clear"])) { Vars.R.Cast(); } break; /// <summary> /// The Combo R Disable Logic. /// </summary> case OrbwalkingMode.Combo: if (!Vars.Menu["spells"]["r"]["combo"].GetValue <MenuBool>().Value) { return; } if (Anivia.RMissile.Position.CountEnemyHeroesInRange(Vars.R.Width + 250f) < 1) { Vars.R.Cast(); } break; } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The E Clear Logics. /// </summary> if (Vars.E.IsReady()) { /// <summary> /// The E JungleClear Logic. /// </summary> if (Targets.JungleMinions.Any()) { if (GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "clear")) && Vars.getSliderItem(Vars.EMenu, "clear") != 101) { DelayAction.Add(Vars.getSliderItem(Vars.EMenu, "delay"), () => { foreach (var minion in Targets.Minions.Where(m => m.HasBuffOfType(BuffType.Poison))) { Vars.E.CastOnUnit(minion); } }); } } /// <summary> /// The E LaneClear Logics. /// </summary> else if (Targets.Minions.Any()) { if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "lasthit")) && Vars.getSliderItem(Vars.EMenu, "lasthit") != 101) { DelayAction.Add(Vars.getSliderItem(Vars.EMenu, "delay"), () => { foreach (var minion in Targets.Minions.Where( m => Vars.GetRealHealth(m) < (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.E) + (m.HasBuffOfType(BuffType.Poison) ? (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.E, DamageStage.Empowered) : 0))) { Vars.E.CastOnUnit(minion); } }); } else if (GameObjects.Player.ManaPercent >= ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "clear")) && Vars.getSliderItem(Vars.EMenu, "clear") != 101) { DelayAction.Add(Vars.getSliderItem(Vars.EMenu, "delay"), () => { foreach (var minion in Targets.Minions.Where(m => m.HasBuffOfType(BuffType.Poison))) { Vars.E.CastOnUnit(minion); } }); } } } /// <summary> /// The Q Clear Logic. /// </summary> if (Vars.Q.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "clear")) && Vars.getSliderItem(Vars.QMenu, "clear") != 101) { /// <summary> /// The Q JungleClear Logic. /// </summary> if (Targets.JungleMinions.Any()) { Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition); } /// <summary> /// The Q LaneClear Logic. /// </summary> else if (Vars.Q.GetCircularFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3) { Vars.Q.Cast(Vars.Q.GetCircularFarmLocation(Targets.Minions, Vars.Q.Width).Position); } } /// <summary> /// The W Clear Logic. /// </summary> if (Vars.W.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "clear")) && Vars.getSliderItem(Vars.WMenu, "clear") != 101) { /// <summary> /// The W JungleClear Logic. /// </summary> if (Targets.JungleMinions.Any(m => !m.HasBuffOfType(BuffType.Poison))) { Vars.W.Cast(Targets.JungleMinions.Where(m => !m.HasBuffOfType(BuffType.Poison)).FirstOrDefault().ServerPosition); } /// <summary> /// The W LaneClear Logic. /// </summary> else if (Vars.W.GetCircularFarmLocation(Targets.Minions, Vars.W.Width).MinionsHit >= 3) { Vars.W.Cast(Vars.W.GetCircularFarmLocation(Targets.Minions.Where(m => !m.HasBuffOfType(BuffType.Poison)).ToList(), Vars.W.Width).Position); } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if ((Bools.HasSheenBuff() && Targets.Target.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange())) || !(Variables.Orbwalker.GetTarget() as Obj_AI_Minion).IsValidTarget()) { return; } /// <summary> /// The Clear Q Logics. /// </summary> var objAiBase = Variables.Orbwalker.GetTarget() as Obj_AI_Minion; if (Vars.Q.IsReady() && objAiBase != null) { /// <summary> /// The LaneClear & JungleClear Q Logics. /// </summary> if (Targets.Minions.Contains(objAiBase) && Vars.Menu["spells"]["q"]["laneclear"].GetValue <MenuBool>().Value || Targets.JungleMinions.Contains(objAiBase) && Vars.Menu["spells"]["q"]["jungleclear"].GetValue <MenuBool>().Value) { Vars.Q.Cast(); } } /// <summary> /// The Clear E Logics. /// </summary> if (Vars.E.IsReady()) { /// <summary> /// The JungleClear E Logic. /// </summary> if (Targets.JungleMinions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["jungleclear"]) && Vars.Menu["spells"]["e"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { Vars.E.CastOnUnit(Variables.Orbwalker.GetTarget() as Obj_AI_Minion); } /// <summary> /// The LaneClear E Logics. /// </summary> else { /// <summary> /// The Aggressive LaneClear E Logic. /// </summary> if (GameObjects.EnemyHeroes.Any(t => !Invulnerable.Check(t) && t.IsValidTarget(Vars.W.Range)) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["harass"]) && Vars.Menu["spells"]["e"]["harass"].GetValue <MenuSliderButton>().BValue) { foreach (var minion in Targets.Minions.Where( m => m.CountEnemyHeroesInRange(150f) > 0 && Vars.GetRealHealth(m) < GameObjects.Player.GetAutoAttackDamage(m))) { Vars.E.CastOnUnit(minion); } } else { /// <summary> /// The Normal LaneClear E Logic. /// </summary> if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["laneclear"]) && Vars.Menu["spells"]["e"]["laneclear"].GetValue <MenuSliderButton>().BValue) { if ( Targets.Minions.Count( m => m.Distance(Variables.Orbwalker.GetTarget() as Obj_AI_Minion) < 150f) >= 3) { Vars.E.CastOnUnit(Variables.Orbwalker.GetTarget() as Obj_AI_Minion); } } } } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { if (GameObjects.Player.IsRecalling()) { return; } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && Vars.Menu["spells"]["w"]["logical"].GetValue <MenuSliderButton>().BValue) { /// <summary> /// If the player doesn't have the W Buff. /// </summary> if (!GameObjects.Player.HasBuff("AuraOfDespair")) { switch (Variables.Orbwalker.ActiveMode) { /// <summary> /// The W Combo Enable Logic. /// </summary> case OrbwalkingMode.Combo: if (GameObjects.EnemyHeroes.Any(t => t.IsValidTarget(Vars.W.Range))) { Vars.W.Cast(); } break; /// <summary> /// The W Clear Enable Logic. /// </summary> case OrbwalkingMode.LaneClear: if (GameObjects.Player.ManaPercent >= ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["logical"]) && (Targets.Minions.Count >= 2 || Targets.JungleMinions.Any())) { Vars.W.Cast(); } break; } } /// <summary> /// If the player has the W Buff. /// </summary> else { switch (Variables.Orbwalker.ActiveMode) { /// <summary> /// The W Clear Disable Logic. /// </summary> case OrbwalkingMode.LaneClear: if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["logical"]) || Targets.Minions.Count < 2 && !Targets.JungleMinions.Any()) { Vars.W.Cast(); } break; /// <summary> /// The Default Disable Logic. /// </summary> default: if (!GameObjects.EnemyHeroes.Any(t => t.IsValidTarget(Vars.W.Range))) { Vars.W.Cast(); } break; } } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { /// <summary> /// The R Manager. /// </summary> Orbwalker.DisableAttacking = Vars.R.Instance.Name.Equals("JhinRShot"); Orbwalker.DisableMovement = Vars.R.Instance.Name.Equals("JhinRShot"); if (GameObjects.Player.LSIsRecalling()) { return; } /// <summary> /// The Automatic Q LastHit Logic. /// </summary> if (Vars.Q.IsReady() && GameObjects.Player.HasBuff("JhinPassiveReload") && !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "lasthit")) && Vars.getSliderItem(Vars.QMenu, "lasthit") != 101) { foreach (var minion in Targets.Minions.Where( m => m.LSIsValidTarget(Vars.Q.Range) && Vars.GetRealHealth(m) < (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q))) { Vars.Q.CastOnUnit(minion); } } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && !GameObjects.Player.IsUnderEnemyTurret() && Vars.getCheckBoxItem(Vars.WMenu, "logical")) { foreach (var target in GameObjects.EnemyHeroes.Where( t => !Invulnerable.Check(t) && t.HasBuff("jhinespotteddebuff") && t.LSIsValidTarget(Vars.W.Range - 150f) && !t.LSIsValidTarget(Vars.AARange + 50f) && !Vars.W.GetPrediction(t).CollisionObjects.Any( c => !c.HasBuff("jhinespotteddebuff") && GameObjects.EnemyHeroes.Contains(c)) && Vars.getCheckBoxItem(Vars.WhiteListMenu, t.ChampionName.ToLower()))) { if (Bools.IsImmobile(target)) { Vars.W.Cast(target.ServerPosition); return; } else { if (!target.LSIsFacing(GameObjects.Player) && GameObjects.Player.LSIsFacing(target)) { Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition); return; } if (target.LSIsFacing(GameObjects.Player) && !GameObjects.Player.LSIsFacing(target) && !GameObjects.EnemyHeroes.Any( t => t.LSIsValidTarget(Vars.Q.Range + 50f))) { Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition); } } } } /// <summary> /// The Automatic E Logic. /// </summary> if (Vars.E.IsReady() && Vars.getCheckBoxItem(Vars.EMenu, "logical")) { foreach (var target in GameObjects.EnemyHeroes.Where( t => Bools.IsImmobile(t) && !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.E.Range))) { Vars.E.Cast(GameObjects.Player.ServerPosition.LSExtend( target.ServerPosition, GameObjects.Player.Distance(target) + target.BoundingRadius * 2)); } } }
public static void JungleClear() { var target = GameObjects.GetJungles(Q.Range).Where(x => x.IsValidTarget(Q.Range)).MinBy(x => x.Health / x.MaxHealth); if (target == null) { return; } if (MenuManager.JungleClearMenu["UseW"].GetValue <MenuBool>().Enabled&& W.IsReady()) { if (Misc.IsAllured(target) || !target.IsValidTarget(W.Range)) { return; } if (objPlayer.ManaPercent < ManaManager.GetNeededMana(W.Slot, MenuManager.JungleClearMenu["MinMana"].GetValue <MenuSlider>())) { return; } if (target.Health <= objPlayer.GetAutoAttackDamage(target)) { return; } var targetName = target.SkinName; if (UtilityManager.JungleList.Contains(targetName) && MenuManager.JungleClearWhiteList[targetName].GetValue <MenuBool>().Enabled) { W.CastOnUnit(target); } } if (MenuManager.JungleClearMenu["UseE"].GetValue <MenuBool>().Enabled&& E.IsReady()) { if (Misc.IsAllured(target) && !Misc.IsFullyAllured(target)) { return; } if (!target.IsValidTarget(E.Range)) { return; } if (objPlayer.ManaPercent < ManaManager.GetNeededMana(E.Slot, MenuManager.JungleClearMenu["MinMana"].GetValue <MenuSlider>())) { return; } if (Misc.IsEmpowered()) { E.CastOnUnit(target); } else { E.CastOnUnit(target); } } if (MenuManager.JungleClearMenu["UseQ"].GetValue <MenuBool>().Enabled&& Q.IsReady()) { if (!target.IsValidTarget(Q.Range)) { return; } if (Misc.IsAllured(target) && !Misc.IsFullyAllured(target)) { return; } if (objPlayer.ManaPercent < ManaManager.GetNeededMana(Q.Slot, MenuManager.JungleClearMenu["MinMana"].GetValue <MenuSlider>())) { return; } if (Misc.IsSpikeSkillShot()) { Q.Cast(target); } else { Q.CastOnUnit(target); } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The Clear W Logic. /// </summary> if (Vars.W.IsReady() && Vars.E.IsReady()) { /// <summary> /// The LaneClear W Logic. /// </summary> if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["laneclear"]) && Vars.Menu["spells"]["w"]["laneclear"].GetValue <MenuSliderButton>().BValue && Vars.W.GetCircularFarmLocation(Targets.Minions, Vars.W.Width).MinionsHit >= 3 && Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).MinionsHit >= 4) { Vars.W.Cast( (Vector3)Vars.W.GetCircularFarmLocation(Targets.Minions, Vars.W.Width).Position, GameObjects.Player.ServerPosition); } /// <summary> /// The JungleClear W Logic. /// </summary> else if (Targets.JungleMinions.Any(m => m.IsValidTarget(Vars.W.Range)) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["jungleclear"]) && Vars.Menu["spells"]["w"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { Vars.W.Cast(Targets.JungleMinions[0].ServerPosition, GameObjects.Player.ServerPosition); } } /// <summary> /// The Clear E Logic. /// </summary> if (Vars.E.IsReady()) { /// <summary> /// The LaneClear E Logic. /// </summary> if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["laneclear"]) && Vars.Menu["spells"]["e"]["laneclear"].GetValue <MenuSliderButton>().BValue && Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).MinionsHit >= 4) { Vars.E.Cast(Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).Position); } /// <summary> /// The JungleClear E Logic. /// </summary> else if (Targets.JungleMinions.Any(m => m.IsValidTarget(Vars.E.Range)) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["jungleclear"]) && Vars.Menu["spells"]["e"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { Vars.E.Cast(Targets.JungleMinions[0].ServerPosition); } } /// <summary> /// The Clear Q Logic. /// </summary> if (Vars.Q.IsReady()) { /// <summary> /// The LaneClear Q Logic. /// </summary> if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["laneclear"]) && Vars.Menu["spells"]["q"]["laneclear"].GetValue <MenuSliderButton>().BValue) { if (Taliyah.TerrainObject != null && Vars.Menu["spells"]["q"]["laneclearfull"].GetValue <MenuBool>().Value) { return; } if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3) { Vars.Q.Cast(Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).Position); } else if (Vars.Q.GetCircularFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3) { Vars.Q.Cast(Vars.Q.GetCircularFarmLocation(Targets.Minions, Vars.Q.Width).Position); } } /// <summary> /// The JungleClear Q Logic. /// </summary> else if (Targets.JungleMinions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["jungleclear"]) && Vars.Menu["spells"]["q"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { if (Taliyah.TerrainObject != null && Vars.Menu["spells"]["q"]["jungleclearfull"].GetValue <MenuBool>().Value) { return; } Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition); } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { if (GameObjects.Player.LSIsRecalling()) { return; } /// <summary> /// The Semi-Automatic R Management. /// </summary> if (Vars.R.IsReady() && Vars.getCheckBoxItem(Vars.RMenu, "bool")) { if (!GameObjects.Player.HasBuff("AbsoluteZero") && GameObjects.Player.CountEnemyHeroesInRange(Vars.R.Range) > 0 && Vars.getKeyBindItem(Vars.RMenu, "key")) { Vars.R.Cast(); } if (GameObjects.Player.HasBuff("AbsoluteZero") && !Vars.getKeyBindItem(Vars.RMenu, "key")) { Orbwalker.MoveTo(Game.CursorPos); Vars.R.Cast(); } } /// <summary> /// The JungleClear Q Logic. /// </summary> if (Vars.Q.IsReady() && Vars.getCheckBoxItem(Vars.QMenu, "jungleclear")) { if (Targets.JungleMinions.Any()) { foreach (var minion in Targets.JungleMinions.Where( m => m.LSIsValidTarget(Vars.Q.Range) && Vars.GetRealHealth(m) < (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q))) { Vars.Q.CastOnUnit(minion); } } } /// <summary> /// The Automatic Q Logic. /// </summary> if (Vars.Q.IsReady() && Targets.Minions.Any() && Vars.getCheckBoxItem(Vars.QMenu, "logical")) { if (GameObjects.Player.MaxHealth > GameObjects.Player.Health + (30 + 45 * GameObjects.Player.Spellbook.GetSpell(SpellSlot.Q).Level) + GameObjects.Player.TotalMagicalDamage * 0.75) { foreach (var minion in Targets.Minions.Where(m => m.LSIsValidTarget(Vars.Q.Range))) { Vars.Q.CastOnUnit(minion); } } } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && Vars.getSliderItem(Vars.WMenu, "logical") != 101) { if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "logical")) && !GameObjects.Player.Buffs.Any(b => b.Name.Equals("visionary"))) { return; } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { /// <summary> /// The Ally W Combo Logic. /// </summary> if (GameObjects.AllyHeroes.Any(a => !a.IsMe && a.LSIsValidTarget(Vars.W.Range, false) && Vars.getCheckBoxItem(Vars.WhiteListMenu, a.ChampionName.ToLower()))) { Vars.W.CastOnUnit(GameObjects.AllyHeroes.Where(a => !a.IsMe && a.LSIsValidTarget(Vars.W.Range, false) && Vars.getCheckBoxItem(Vars.WhiteListMenu, a.ChampionName.ToLower())).OrderBy(o => o.TotalAttackDamage).First()); } /// <summary> /// The Normal W Combo Logic. /// </summary> else { if (Targets.Target.LSIsValidTarget()) { Vars.W.CastOnUnit(GameObjects.Player); } } } if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { /// <summary> /// Use if There are Enemy Minions in range. /// </summary> if (Targets.Minions.Any() || Targets.JungleMinions.Any()) { Vars.W.CastOnUnit(GameObjects.Player); } } /// <summary> /// The W Pushing Logic. /// </summary> if (Targets.Minions.Any() && GameObjects.AllyMinions.Any()) { /// <summary> /// Use if there are Super or Siege minions in W Range. /// </summary> foreach (var minion in GameObjects.AllyMinions.Where(m => m.LSIsValidTarget(Vars.W.Range, false))) { if (minion.GetMinionType() == MinionTypes.Super || minion.GetMinionType() == MinionTypes.Siege) { Vars.W.CastOnUnit(minion); } } } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { /// <summary> /// The Q Extended Harass Logic. /// </summary> if (Vars.Q.IsReady()) { /// <summary> /// The Q Minion Harass Logic. /// </summary> if (GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.Q2Menu, "exlaneclear"))) { foreach (var minion in from minion in Targets.Minions.Where( m => m.LSIsValidTarget(Vars.Q.Range) && Vars.getCheckBoxItem(Vars.Q2Menu, "exlaneclearkill") ? m.Health < (float)GameObjects.Player.LSGetSpellDamage(m, SpellSlot.Q) : true) let polygon = new Geometry.Sector( (Vector2)minion.ServerPosition, (Vector2)minion.ServerPosition.LSExtend(GameObjects.Player.ServerPosition, -(Vars.Q2.Range - Vars.Q.Range)), 40f * (float)Math.PI / 180f, (Vars.Q2.Range - Vars.Q.Range) - 50f) let target = GameObjects.EnemyHeroes.FirstOrDefault( t => !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.Q2.Range - 50f) && ((Vars.PassiveTarget.LSIsValidTarget() && t.NetworkId == Vars.PassiveTarget.NetworkId) || !Targets.Minions.Any(m => !polygon.IsOutside((Vector2)m.ServerPosition))) && Vars.getCheckBoxItem(Vars.WhiteListMenu, t.ChampionName.ToLower())) where target != null where !polygon.IsOutside((Vector2)target.ServerPosition) && !polygon.IsOutside( (Vector2)Movement.GetPrediction( target, GameObjects.Player.Distance(target) / Vars.Q.Speed + Vars.Q.Delay).UnitPosition) select minion) { Vars.Q.CastOnUnit(minion); } } } /// <summary> /// The W Clear Logics. /// </summary> if (Vars.W.IsReady()) { /// <summary> /// The W JungleClear Logics. /// </summary> if (Targets.JungleMinions.Contains(Orbwalker.LastTarget as Obj_AI_Minion) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "jungleclear"))) { Vars.W.Cast(); } /// <summary> /// The W LaneClear Logics. /// </summary> else if (Targets.Minions.Contains(Orbwalker.LastTarget as Obj_AI_Minion) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "laneclear"))) { Vars.W.Cast(); } } /// <summary> /// The E Clear Logics. /// </summary> if (Vars.E.IsReady()) { /// <summary> /// The E JungleClear Logics. /// </summary> if (Targets.JungleMinions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "jungleclear"))) { Vars.E.Cast(Targets.JungleMinions[0]); } /// <summary> /// The E LaneClear Logics. /// </summary> else if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "laneclear")) && Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).MinionsHit >= 4) { Vars.E.Cast(Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).Position); } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { /// <summary> /// The Q Extended Harass Logic. /// </summary> if (Vars.Q.IsReady()) { /// <summary> /// The Q Minion Harass Logic. /// </summary> if (GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["extended"]["exlaneclear"]) && Vars.Menu["spells"]["q"]["extended"]["exlaneclear"].GetValue <MenuSliderButton>().BValue) { var passiveMultiplier = GameObjects.Player.Level < 4 ? 0.25 : GameObjects.Player.Level < 7 ? 0.3 : GameObjects.Player.Level < 9 ? 0.35 : GameObjects.Player.Level < 11 ? 0.4 : GameObjects.Player.Level < 13 ? 0.45 : 0.5; foreach (var minion in from minion in Targets.Minions.Where( m => m.IsValidTarget(Vars.Q.Range) && (!Vars.Menu["spells"]["q"]["extended"]["exlaneclearkill"].GetValue <MenuBool>().Value || Vars.GetRealHealth(m) < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q) + (MissFortune.PassiveTarget == null || m.NetworkId != MissFortune.PassiveTarget?.NetworkId ? GameObjects.Player.TotalAttackDamage * passiveMultiplier : 0))) let polygon = new Geometry.Sector( (Vector2)minion.ServerPosition, (Vector2) minion.ServerPosition.Extend( GameObjects.Player.ServerPosition, -(Vars.Q2.Range - Vars.Q.Range)), 40f * (float)Math.PI / 180f, Vars.Q2.Range - Vars.Q.Range - 50f) let target = GameObjects.EnemyHeroes.FirstOrDefault( t => !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q2.Range) && (t.NetworkId == MissFortune.PassiveTarget?.NetworkId || Targets.Minions.All(m => polygon.IsOutside((Vector2)m.ServerPosition))) && Vars.Menu["spells"]["q"]["whitelist"][t.ChampionName.ToLower()].GetValue <MenuBool>() .Value) where target != null where !polygon.IsOutside((Vector2)target.ServerPosition) && !polygon.IsOutside((Vector2)Vars.Q.GetPrediction(target).UnitPosition) select minion) { Vars.Q.CastOnUnit(minion); } } } /// <summary> /// The W Clear Logics. /// </summary> if (Vars.W.IsReady()) { /// <summary> /// The W JungleClear Logics. /// </summary> if (Targets.JungleMinions.Contains(Variables.Orbwalker.GetTarget() as Obj_AI_Minion) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["jungleclear"]) && Vars.Menu["spells"]["w"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { Vars.W.Cast(); } /// <summary> /// The W LaneClear Logics. /// </summary> else if (Targets.Minions.Contains(Variables.Orbwalker.GetTarget() as Obj_AI_Minion) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["laneclear"]) && Vars.Menu["spells"]["w"]["laneclear"].GetValue <MenuSliderButton>().BValue) { Vars.W.Cast(); } } /// <summary> /// The E Clear Logics. /// </summary> if (Vars.E.IsReady()) { /// <summary> /// The E JungleClear Logics. /// </summary> if (Targets.JungleMinions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["jungleclear"]) && Vars.Menu["spells"]["e"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { Vars.E.Cast(Targets.JungleMinions[0]); } /// <summary> /// The E LaneClear Logics. /// </summary> else if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["laneclear"]) && Vars.Menu["spells"]["e"]["laneclear"].GetValue <MenuSliderButton>().BValue && Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).MinionsHit >= 4) { Vars.E.Cast(Vars.E.GetCircularFarmLocation(Targets.Minions, Vars.E.Width).Position); } } }
/// <summary> /// Called on do-cast. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The args.</param> public static void Clear(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The Clear W Logic. /// </summary> if (Vars.W.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Menus.getSliderItem(Vars.WMenu, "clear")) && Menus.getSliderItem(Vars.WMenu, "clear") != 101) { /// <summary> /// The LaneClear W Logic. /// </summary> if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3) { Vars.W.Cast(); } /// <summary> /// The JungleClear W Logic. /// </summary> else if (Targets.JungleMinions.Any()) { Vars.W.Cast(); } return; } /// <summary> /// The Clear Q Logics. /// </summary> if (Vars.Q.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Menus.getSliderItem(Vars.QMenu, "clear")) && Menus.getSliderItem(Vars.QMenu, "clear") != 101) { /// <summary> /// The JungleClear Q Logic. /// </summary> if (Targets.JungleMinions.Any()) { Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition); } /// <summary> /// The LaneClear Q Logics. /// </summary> else { /// <summary> /// The Aggressive LaneClear Q Logic. /// </summary> if (GameObjects.EnemyHeroes.Any( t => !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.Q.Range))) { if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3 && !new Geometry.Rectangle( GameObjects.Player.ServerPosition, GameObjects.Player.ServerPosition.LSExtend( Targets.Minions[0].ServerPosition, Vars.Q.Range), Vars.Q.Width).IsOutside((Vector2)Vars.Q.GetPrediction( GameObjects.EnemyHeroes.FirstOrDefault( t => !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.Q.Range))).UnitPosition)) { Vars.Q.Cast(Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).Position); } } /// <summary> /// The LaneClear Q Logic. /// </summary> else if (!GameObjects.EnemyHeroes.Any( t => !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.Q.Range + 100f))) { if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3) { Vars.Q.Cast(Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).Position); } } } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Harass(EventArgs args) { /// <summary> /// The E Harass Logic. /// </summary> if (Vars.E.IsReady() && Vars.Menu["spells"]["e"]["harass"].GetValue <MenuSliderButton>().BValue && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["harass"])) { if ( GameObjects.EnemyHeroes.Any( t => t.IsValidTarget(Vars.E.Range) && (t.HasBuffOfType(BuffType.Poison) || !Vars.Menu["spells"]["e"]["harasspoison"].GetValue <MenuBool>().Value) && !Invulnerable.Check(t, DamageType.Magical))) { foreach (var target in GameObjects.EnemyHeroes.Where( t => t.IsValidTarget(Vars.E.Range) && (t.HasBuffOfType(BuffType.Poison) || !Vars.Menu["spells"]["e"]["harasspoison"].GetValue <MenuBool>().Value) && !Invulnerable.Check(t, DamageType.Magical))) { DelayAction.Add( Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value, () => { Vars.E.CastOnUnit(target); }); } } else { DelayAction.Add( Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value, () => { foreach (var minion in Targets.Minions.Where( m => Vars.GetRealHealth(m) < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E) + (m.HasBuffOfType(BuffType.Poison) ? (float) GameObjects.Player.GetSpellDamage( m, SpellSlot.E, DamageStage.Empowered) : 0))) { Vars.E.CastOnUnit(minion); } }); } } if (!Targets.Target.IsValidTarget() || Invulnerable.Check(Targets.Target, DamageType.Magical, false)) { return; } /// <summary> /// The Q Harass Logic. /// </summary> if (Vars.Q.IsReady() && Targets.Target.IsValidTarget(Vars.Q.Range) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["harass"]) && Vars.Menu["spells"]["q"]["harass"].GetValue <MenuSliderButton>().BValue) { Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).CastPosition); return; } /// <summary> /// The W Harass Logic. /// </summary> DelayAction.Add( 1000, () => { if (Vars.W.IsReady() && Targets.Target.IsValidTarget(Vars.W.Range) && !Targets.Target.IsValidTarget(500f) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["harass"]) && Vars.Menu["spells"]["w"]["harass"].GetValue <MenuSliderButton>().BValue) { Vars.W.Cast(Vars.W.GetPrediction(Targets.Target).CastPosition); } }); }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { if (GameObjects.Player.IsRecalling()) { return; } /// <summary> /// The Q LastHit Logic. /// </summary> if (Vars.Q.IsReady() && Variables.Orbwalker.ActiveMode != OrbwalkingMode.Combo && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["farmhelper"]) && Vars.Menu["spells"]["q"]["farmhelper"].GetValue <MenuSliderButton>().BValue) { foreach (var minion in Targets.Minions.Where( m => !m.IsValidTarget(GameObjects.Player.GetRealAutoAttackRange()) && Vars.GetRealHealth(m) > GameObjects.Player.GetAutoAttackDamage(m) && Vars.GetRealHealth(m) < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q)) .OrderBy(o => o.MaxHealth)) { if (!Vars.Q.GetPrediction(minion).CollisionObjects.Any()) { Vars.Q.Cast(Vars.Q.GetPrediction(minion).UnitPosition); } } } /// <summary> /// The Tear Stacking Logic. /// </summary> if (Vars.Q.IsReady() && !Targets.Minions.Any() && Bools.HasTear(GameObjects.Player) && Variables.Orbwalker.ActiveMode == OrbwalkingMode.None && GameObjects.Player.CountEnemyHeroesInRange(1500) == 0 && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["miscellaneous"]["tear"]) && Vars.Menu["miscellaneous"]["tear"].GetValue <MenuSliderButton>().BValue) { Vars.Q.Cast(Game.CursorPos); } /// <summary> /// The Semi-Automatic R Logic. /// </summary> if (Vars.R.IsReady() && Vars.Menu["spells"]["r"]["bool"].GetValue <MenuBool>().Value && Vars.Menu["spells"]["r"]["key"].GetValue <MenuKeyBind>().Active) { var target = GameObjects.EnemyHeroes.Where( t => !Invulnerable.Check(t, DamageType.Magical, false) && t.IsValidTarget(2000f) && Vars.Menu["spells"]["r"]["whitelist"][t.ChampionName.ToLower()].GetValue <MenuBool>().Value) .OrderBy(o => o.Health) .FirstOrDefault(); if (target != null) { Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition); } } if (GameObjects.Player.TotalAttackDamage < GameObjects.Player.TotalMagicalDamage) { return; } /// <summary> /// Initializes the orbwalkingmodes. /// </summary> switch (Variables.Orbwalker.ActiveMode) { case OrbwalkingMode.Combo: if (!GameObjects.EnemyHeroes.Contains(Variables.Orbwalker.GetTarget())) { return; } break; case OrbwalkingMode.LaneClear: if (!(Variables.Orbwalker.GetTarget() is Obj_HQ) && !(Variables.Orbwalker.GetTarget() is Obj_AI_Turret) && !(Variables.Orbwalker.GetTarget() is Obj_BarracksDampener)) { return; } break; default: if (!GameObjects.Jungle.Contains(Variables.Orbwalker.GetTarget()) && !GameObjects.EnemyHeroes.Contains(Variables.Orbwalker.GetTarget()) && !(Variables.Orbwalker.GetTarget() is Obj_HQ) && !(Variables.Orbwalker.GetTarget() is Obj_AI_Turret) && !(Variables.Orbwalker.GetTarget() is Obj_BarracksDampener)) { return; } break; } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["logical"]) && Vars.Menu["spells"]["w"]["logical"].GetValue <MenuSliderButton>().BValue) { foreach (var target in GameObjects.AllyHeroes.Where( t => !t.IsMe && t.Spellbook.IsAutoAttacking && t.IsValidTarget(Vars.W.Range, false))) { Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition); } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The LaneClear W Logic. /// </summary> if (Vars.W.IsReady() && !GameObjects.Player.HasBuff("TwitchFullAutomatic")) { /// <summary> /// The W LaneClear Logic. /// </summary> if (GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["laneclear"]) && Vars.Menu["spells"]["w"]["laneclear"].GetValue <MenuSliderButton>().BValue && Vars.W.GetCircularFarmLocation( Targets.Minions.Where(m => m.GetBuffCount("twitchdeadlyvenom") <= 4).ToList(), Vars.W.Width).MinionsHit >= 3) { Vars.W.Cast( Vars.W.GetCircularFarmLocation( Targets.Minions.Where(m => m.GetBuffCount("twitchdeadlyvenom") <= 4).ToList(), Vars.W.Width).Position); } /// <summary> /// The W JungleClear Logic. /// </summary> else if (GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["jungleclear"]) && Vars.Menu["spells"]["w"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { var objAiMinion = Targets.JungleMinions.FirstOrDefault(m => m.GetBuffCount("twitchdeadlyvenom") <= 4); if (objAiMinion != null) { Vars.W.Cast(objAiMinion.ServerPosition); } } } /// <summary> /// The LaneClear E Logic. /// </summary> if (Vars.E.IsReady() && Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["laneclear"]) && Vars.Menu["spells"]["e"]["laneclear"].GetValue <MenuSliderButton>().BValue) { if ( Targets.Minions.Count( m => m.IsValidTarget(Vars.E.Range) && m.Health < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E) + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E, DamageStage.Buff)) >= 3) { Vars.E.Cast(); } } }
/// <summary> /// Fired when the game is updated. /// </summary> public void Jungleclear() { var jungleTarget = ObjectManager.Get <Obj_AI_Minion>().FirstOrDefault(m => Extensions.GetGenericJungleMinionsTargets().Contains(m)); if (jungleTarget.GetRealHealth() < UtilityClass.Player.GetAutoAttackDamage(jungleTarget) * 3) { return; } /// <summary> /// The Jungleclear W Logic. /// </summary> if (SpellClass.W.Ready && jungleTarget.IsValidTarget(SpellClass.W.Range) && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.W.Slot, MenuClass.Spells["w"]["jungleclear"]) && MenuClass.Spells["w"]["jungleclear"].As <MenuSliderBool>().Enabled) { if (!IsHoldingForceOfWillObject()) { var obj = ForceOfWillObject(); if (obj != null && obj.Distance(UtilityClass.Player) < SpellClass.W.Range) { SpellClass.W.CastOnUnit(obj); } } else { SpellClass.W.Cast(jungleTarget?.ServerPosition ?? Game.CursorPos); } } if (jungleTarget == null || UtilityClass.Player.SpellBook.GetSpell(SpellSlot.W).State == SpellState.Ready) { return; } /// <summary> /// The Jungleclear Q Logic. /// </summary> if (SpellClass.Q.Ready && jungleTarget.IsValidTarget(SpellClass.Q.Range) && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["jungleclear"]) && MenuClass.Spells["q"]["jungleclear"].As <MenuSliderBool>().Enabled) { SpellClass.Q.Cast(jungleTarget.ServerPosition); } /// <summary> /// The Jungleclear E Logics. /// </summary> if (SpellClass.E.Ready && IsPerfectSphereTarget(jungleTarget) && jungleTarget.IsValidTarget(SpellClass.E.Range) && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["jungleclear"]) && MenuClass.Spells["e"]["jungleclear"].As <MenuSliderBool>().Enabled) { SpellClass.E.Cast(jungleTarget); } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The LaneClear Q Logic. /// </summary> if (Vars.Q.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "laneclear")) && Vars.getSliderItem(Vars.QMenu, "laneclear") != 101) { foreach (var minion in Targets.Minions.Where(m => m.IsValidTarget(Vars.Q.Range))) { if (minion.HasBuff("RyzeE") && Vars.GetRealHealth(minion) > (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.E) && Vars.GetRealHealth(minion) < (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.Q) * (1 + (minion.HasBuff("RyzeE") ? new double[] { 40, 55, 70, 85, 100 }[GameObjects.Player.Spellbook.GetSpell(SpellSlot.E).Level - 1] / 100 : 0))) { Vars.Q.Cast(minion); } } } /// <summary> /// The LaneClear E Logic. /// </summary> if (Vars.E.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "laneclear")) && Vars.getSliderItem(Vars.EMenu, "laneclear") != 101) { foreach (var minion in Targets.Minions.Where(m => m.IsValidTarget(Vars.E.Range))) { if (minion.HasBuff("RyzeE") || (Vars.GetRealHealth(minion) < (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.E) && Vars.GetRealHealth(minion) > (float)GameObjects.Player.GetAutoAttackDamage(minion))) { Vars.E.CastOnUnit(minion); return; } Vars.E.CastOnUnit(Targets.Minions.First(m => m.IsValidTarget(Vars.E.Range))); } } foreach (var minion in Targets.JungleMinions) { /// <summary> /// The JungleClear E Logic. /// </summary> if (Targets.JungleMinions.Any(m => !m.HasBuff("RyzeE"))) { if (Vars.E.IsReady() && minion.IsValidTarget(Vars.E.Range) && !GameObjects.JungleSmall.Contains(minion) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "jungleclear")) && Vars.getSliderItem(Vars.EMenu, "jungleclear") != 101) { Vars.E.CastOnUnit(minion); } } else { /// <summary> /// The JungleClear Q Logic. /// </summary> if (Vars.Q.IsReady() && minion.IsValidTarget(Vars.Q.Range) && Vars.GetRealHealth(minion) > (float)GameObjects.Player.GetSpellDamage(minion, SpellSlot.E) && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "jungleclear")) && Vars.getSliderItem(Vars.QMenu, "jungleclear") != 101) { Vars.Q.Cast(minion.ServerPosition); } } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The Clear Q Logics. /// </summary> if (Vars.Q.IsReady()) { /// <summary> /// The JungleClear Q Logic. /// </summary> if (Targets.JungleMinions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["jungleclear"]) && Vars.Menu["spells"]["q"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition); } /// <summary> /// The LaneClear Q Logics. /// </summary> else if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["laneclear"]) && Vars.Menu["spells"]["q"]["laneclear"].GetValue <MenuSliderButton>().BValue) { /// <summary> /// The Aggressive LaneClear Q Logic. /// </summary> if (GameObjects.EnemyHeroes.Any(t => !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range))) { if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3 && !new Geometry.Rectangle( GameObjects.Player.ServerPosition, GameObjects.Player.ServerPosition.Extend( Targets.Minions[0].ServerPosition, Vars.Q.Range), Vars.Q.Width).IsOutside( (Vector2) Vars.Q.GetPrediction( GameObjects.EnemyHeroes.FirstOrDefault( t => !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range))) .UnitPosition)) { Vars.Q.Cast(Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).Position); } } /// <summary> /// The LaneClear Q Logic. /// </summary> else if ( !GameObjects.EnemyHeroes.Any( t => !Invulnerable.Check(t) && t.IsValidTarget(Vars.Q.Range + 100f))) { if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).MinionsHit >= 3) { Vars.Q.Cast(Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width).Position); } } } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Harass(EventArgs args) { if (!Targets.Target.LSIsValidTarget() || Invulnerable.Check(Targets.Target, DamageType.Magical)) { return; } /// <summary> /// The Harass E Logic. /// </summary> if (!Targets.Target.HasBuff("RyzeE")) { if (Vars.E.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "harass")) && Vars.getSliderItem(Vars.EMenu, "harass") != 101) { if (Targets.Target.LSIsValidTarget(Vars.E.Range)) { Vars.E.CastOnUnit(Targets.Target); } else { foreach (var minion in Targets.Minions.Where( m => !m.HasBuff("RyzeE") && m.LSIsValidTarget(Vars.E.Range) && (m.Distance(Targets.Target) < 200 || Targets.Minions.Any( m2 => m2.HasBuff("RyzeE") && m2.Distance(m) < 200 && m2.Distance(Targets.Target) < 200)))) { Vars.E.CastOnUnit(minion); } } } } /// <summary> /// The Harass Q Logic. /// </summary> else { if (Vars.Q.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "harass")) && Vars.getSliderItem(Vars.QMenu, "harass") != 101) { if (Targets.Target.LSIsValidTarget(Vars.Q.Range) && !Vars.Q.GetPrediction(Targets.Target).CollisionObjects.Any()) { Vars.Q.Cast(Vars.Q.GetPrediction(Targets.Target).UnitPosition); } else { foreach (var minion in Targets.Minions.Where( m => m.HasBuff("RyzeE") && m.LSIsValidTarget(Vars.Q.Range) && (m.Distance(Targets.Target) < 200 || Targets.Minions.Any( m2 => m2.HasBuff("RyzeE") && m2.Distance(m) < 200 && m2.Distance(Targets.Target) < 200)))) { Vars.Q.Cast(minion.ServerPosition); } } } } }
/// <summary> /// Fired when the game is updated. /// </summary> public void Jungleclear() { if (BallPosition == null) { return; } /// <summary> /// The Jungleclear W Logic. /// </summary> if (SpellClass.W.Ready && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.W.Slot, MenuClass.Spells["w"]["jungleclear"]) && MenuClass.Spells["w"]["jungleclear"].As <MenuSliderBool>().Enabled) { if (Extensions.GetGenericJungleMinionsTargets().Any(m => m.IsValidTarget(SpellClass.W.Width, false, true, (Vector3)BallPosition))) { SpellClass.W.Cast(); } } var jungleTarget = ObjectManager.Get <Obj_AI_Minion>().FirstOrDefault(m => Extensions.GetGenericJungleMinionsTargets().Contains(m)); if (jungleTarget == null || jungleTarget.GetRealHealth() < UtilityClass.Player.GetAutoAttackDamage(jungleTarget) * 3) { return; } /// <summary> /// The Jungleclear E Logic. /// </summary> if (SpellClass.E.Ready && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["jungleclear"]) && MenuClass.Spells["e"]["jungleclear"].As <MenuSliderBool>().Enabled) { var polygon = new Geometry.Rectangle( (Vector2)UtilityClass.Player.ServerPosition, (Vector2)UtilityClass.Player.ServerPosition.Extend((Vector3)BallPosition, UtilityClass.Player.Distance((Vector3)BallPosition)), SpellClass.E.Width); if (!polygon.IsOutside((Vector2)jungleTarget.ServerPosition)) { SpellClass.E.CastOnUnit(UtilityClass.Player); } } /// <summary> /// The Jungleclear Q Logic. /// </summary> if (SpellClass.Q.Ready && jungleTarget.IsValidTarget(SpellClass.Q.Range) && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["jungleclear"]) && MenuClass.Spells["q"]["jungleclear"].As <MenuSliderBool>().Enabled) { SpellClass.Q.GetPredictionInput(jungleTarget).From = (Vector3)BallPosition; SpellClass.Q.Cast(SpellClass.Q.GetPrediction(jungleTarget).CastPosition); } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { if (GameObjects.Player.IsRecalling()) { return; } /// <summary> /// The Q Switching Logics. /// </summary> if (Vars.Q.IsReady()) { /// <summary> /// PowPow.Range -> FishBones Logics. /// </summary> if (!GameObjects.Player.HasBuff("JinxQ")) { switch (Variables.Orbwalker.ActiveMode) { /// <summary> /// The Q Combo Enable Logics, /// The Q Harass Enable Logics. /// </summary> case OrbwalkingMode.Combo: case OrbwalkingMode.Hybrid: /// <summary> /// Enable if: /// If you are in combo mode, the combo option is enabled. (Option check). /// </summary> if (Variables.Orbwalker.ActiveMode == OrbwalkingMode.Combo) { if (!Vars.Menu["spells"]["q"]["combo"].GetValue <MenuBool>().Value) { //Console.WriteLine("ExorAIO: Jinx - Combo - Option Block."); return; } } /// <summary> /// Enable if: /// If you are in mixed mode, the mixed option is enabled.. (Option check). /// and respects the ManaManager check. (Mana check). /// </summary> else if (Variables.Orbwalker.ActiveMode == OrbwalkingMode.Hybrid) { if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["harass"]) || !Vars.Menu["spells"]["q"]["harass"].GetValue <MenuSliderButton>().BValue) { //Console.WriteLine("ExorAIO: Jinx - Hybrid - ManaManager or Option Block."); return; } } /// <summary> /// Enable if: /// No hero in PowPow Range but 1 or more heroes in FishBones range. (Range Logic). /// </summary> if (!GameObjects.EnemyHeroes.Any(t => t.IsValidTarget(Vars.PowPow.Range)) && GameObjects.EnemyHeroes.Any( t2 => t2.IsValidTarget( Variables.Orbwalker.ActiveMode == OrbwalkingMode.Hybrid ? Vars.Q.Range : Vars.W.Range))) { //Console.WriteLine("ExorAIO: Jinx - Combo/Hybrid - Enabled for Range Check."); Vars.Q.Cast(); return; } break; /// <summary> /// The Q Clear Enable Logics. /// </summary> case OrbwalkingMode.LaneClear: /// <summary> /// Start if: /// It respects the ManaManager Check, (Mana check), /// The Clear Option is enabled. (Option check). /// </summary> if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["clear"]) || !Vars.Menu["spells"]["q"]["clear"].GetValue <MenuSliderButton>().BValue) { //Console.WriteLine("ExorAIO: Jinx - Clear - ManaManager or Option Block."); return; } /// <summary> /// The LaneClear Logics. /// </summary> if ( Targets.Minions.Any( m => Vars.GetRealHealth(m) < GameObjects.Player.GetAutoAttackDamage(m) * 1.1)) { /// <summary> /// Disable if: /// The player has Runaan's Hurricane and there are more than 1 hittable Minions.. /// And there more than 2 killable minions in Q explosion range (Lane AoE Logic). /// </summary> if (Items.HasItem(3085) && Targets.Minions.Count > 1 || Targets.Minions.Where( m => Vars.GetRealHealth(m) < GameObjects.Player.GetAutoAttackDamage(m) * 1.1) .Count( m2 => m2.Distance( Targets.Minions.First( m => Vars.GetRealHealth(m) < GameObjects.Player.GetAutoAttackDamage(m) * 1.1)) < 250f) >= 3) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - LaneClear - Enabled for AoE Check."); return; } } /// <summary> /// The JungleClear Logics. /// </summary> else if (Targets.JungleMinions.Any()) { /// <summary> /// Enable if: /// No monster in PowPow Range and at least 1 monster in Fishbones Range.. (Jungle Range Logic). /// </summary> if (!Targets.JungleMinions.Any(m => m.IsValidTarget(Vars.PowPow.Range))) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - JungleClear - Enabled for Range Check."); return; } /// <summary> /// Enable if: /// More or equal than 1 monster in explosion range from the target monster. (Lane AoE Logic). /// </summary> if (Targets.JungleMinions.Count(m2 => m2.Distance(Targets.JungleMinions[0]) < 250f) >= 2) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - JungleClear - Enabled for AoE Check."); return; } } break; /// <summary> /// The Q LastHit Disable Logic. /// </summary> case OrbwalkingMode.LastHit: /// <summary> /// Start if: /// It respects the ManaManager Check, (Mana check). /// The LastHit Option is enabled. (Option check). /// </summary> if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["lasthit"]) || !Vars.Menu["spells"]["q"]["lasthit"].GetValue <MenuSliderButton>().BValue) { //Console.WriteLine("ExorAIO: Jinx - LastHit - ManaManager or Option Block."); return; } /// <summary> /// Enable if: /// Any killable minion in FishBones Range and no killable minions in PowPow Range. (LastHit Range Logic). /// </summary> if ( Targets.Minions.Any( m => !m.IsValidTarget(Vars.PowPow.Range) && m.Health < GameObjects.Player.GetAutoAttackDamage(m) * 1.1)) { if ( !Targets.Minions.Any( m => m.IsValidTarget(Vars.PowPow.Range) && m.Health < GameObjects.Player.GetAutoAttackDamage(m))) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - LastHit - Enabled."); return; } } break; } } /// <summary> /// FishBones -> PowPow.Range Logics. /// </summary> else { switch (Variables.Orbwalker.ActiveMode) { /// <summary> /// The Q Combo Enable Logics, /// The Q Harass Enable Logics. /// </summary> case OrbwalkingMode.Combo: case OrbwalkingMode.Hybrid: /// <summary> /// Disable if: /// If you are in combo mode, the combo option is disabled. (Option check). /// </summary> if (Variables.Orbwalker.ActiveMode == OrbwalkingMode.Combo) { if (!Vars.Menu["spells"]["q"]["combo"].GetValue <MenuBool>().Value) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - Combo - Option Disable."); return; } } /// <summary> /// Disable if: /// If you are in mixed mode, the mixed option is disabled.. (Option check). /// or it doesn't respect the ManaManager check. (Mana check). /// </summary> else if (Variables.Orbwalker.ActiveMode == OrbwalkingMode.Hybrid) { if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["harass"]) || !Vars.Menu["spells"]["q"]["harass"].GetValue <MenuSliderButton>().BValue) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - Mixed - ManaManager or Option Disable."); return; } } /// <summary> /// Disable if: /// The target is not a hero. (Target check), /// </summary> if (Variables.Orbwalker.GetTarget() is Obj_AI_Hero && (Variables.Orbwalker.GetTarget() as Obj_AI_Hero).IsValidTarget()) { /// <summary> /// Disable if: /// No enemies in explosion range from the target. (AOE Logic), /// Any hero in PowPow Range. (Range Logic). /// </summary> if (GameObjects.EnemyHeroes.Any(t => t.IsValidTarget(Vars.PowPow.Range)) && (Variables.Orbwalker.GetTarget() as Obj_AI_Hero).CountEnemyHeroesInRange(200f) < 2) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - Combo/Hybrid - Disabled."); return; } } break; /// <summary> /// The Q Clear Disable Logics. /// </summary> case OrbwalkingMode.LaneClear: /// <summary> /// Disable if: /// Doesn't respect the ManaManager Check, (Mana check). /// The Clear Option is disabled. (Option check). /// </summary> if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["clear"])) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - Clear - ManaManager or Option Disable."); return; } if (!Vars.Menu["spells"]["q"]["clear"].GetValue <MenuSliderButton>().BValue) { return; } /// <summary> /// Disable if: /// The player has no Runaan's Hurricane or there is only 1 hittable Minion.. /// And there are no killable minions in Q explosion range or the number of killable minions is less than 3 (Lane AoE Logic). /// </summary> if ((!Items.HasItem(3085) || Targets.Minions.Count < 2) && (!Targets.Minions.Any( m => Vars.GetRealHealth(m) < GameObjects.Player.GetAutoAttackDamage(m) * 1.1) || Targets.Minions.Count( m2 => m2.Distance( Targets.Minions.First( m => Vars.GetRealHealth(m) < GameObjects.Player.GetAutoAttackDamage(m) * 1.1)) < 250f) < 3)) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - LaneClear - Disabled."); return; } /// <summary> /// Disable if: /// There is at least 1 monster in PowPow Range.. (Jungle Range Logic). /// .. And less than 1 monster in explosion range from the monster target (Jungle AoE Logic). /// </summary> if (Targets.JungleMinions.Any(m => m.IsValidTarget(Vars.PowPow.Range)) && Targets.JungleMinions.Count(m2 => m2.Distance(Targets.JungleMinions[0]) < 250f) < 2) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - JungleClear - Disabled."); return; } break; /// <summary> /// The Q LastHit Disable Logic. /// </summary> case OrbwalkingMode.LastHit: /// <summary> /// Disable if: /// Doesn't respect the ManaManager Check, (Mana check). /// The LastHit Option is disabled. (Option check). /// </summary> if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["q"]["lasthit"])) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - LastHit - ManaManager or Option Disable."); return; } if (!Vars.Menu["spells"]["q"]["lasthit"].GetValue <MenuSliderButton>().BValue) { return; } /// <summary> /// Disable if: /// No killable minion in FishBones Range. (LastHit Range Logic). /// </summary> if ( !Targets.Minions.Any( m => !m.IsValidTarget(Vars.PowPow.Range) && m.Health < GameObjects.Player.GetAutoAttackDamage(m) * 1.1)) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - LastHit - Range Killable Disable."); return; } if ( Targets.Minions.Any( m => m.IsValidTarget(Vars.PowPow.Range) && m.Health < GameObjects.Player.GetAutoAttackDamage(m))) { Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - LastHit - Normally Killable Disable."); return; } break; /// <summary> /// The General Q Disable Logic. /// </summary> default: Vars.Q.Cast(); //Console.WriteLine("ExorAIO: Jinx - General - Disabled."); break; } } } /// <summary> /// The Automatic E Logic. /// </summary> if (Vars.E.IsReady() && Vars.Menu["spells"]["e"]["logical"].GetValue <MenuBool>().Value) { foreach (var target in GameObjects.EnemyHeroes.Where( t => Bools.IsImmobile(t) && t.IsValidTarget(Vars.E.Range) && !Invulnerable.Check(t, DamageType.Magical, false))) { Vars.E.Cast(target.ServerPosition); } } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && !GameObjects.Player.IsUnderEnemyTurret() && GameObjects.Player.CountEnemyHeroesInRange(Vars.Q.Range) < 3 && Vars.Menu["spells"]["w"]["logical"].GetValue <MenuBool>().Value) { foreach (var target in GameObjects.EnemyHeroes.Where( t => Bools.IsImmobile(t) && !Invulnerable.Check(t) && t.IsValidTarget(Vars.W.Range))) { if (!Vars.W.GetPrediction(target).CollisionObjects.Any()) { Vars.W.Cast(target.ServerPosition); } } } /// <summary> /// The Semi-Automatic R Logic. /// </summary> if (Vars.R.IsReady() && Vars.Menu["spells"]["r"]["bool"].GetValue <MenuBool>().Value && Vars.Menu["spells"]["r"]["key"].GetValue <MenuKeyBind>().Active) { var target = GameObjects.EnemyHeroes.Where( t => !Invulnerable.Check(t) && t.IsValidTarget(Vars.R.Range) && Vars.Menu["spells"]["r"]["whitelist"][t.ChampionName.ToLower()].GetValue <MenuBool>().Value) .OrderBy(o => o.Health) .FirstOrDefault(); if (target != null) { Vars.R.Cast(Vars.R.GetPrediction(target).UnitPosition); } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The Clear R Logic. /// </summary> if (Vars.R.IsReady() && Vars.E.IsReady() && GameObjects.Player.ManaPercent > 20 && Vars.getCheckBoxItem(Vars.RMenu, "clear")) { /// <summary> /// The LaneClear R Logic. /// </summary> if (Targets.Minions.Any()) { if (Targets.Minions.Count() >= 3) { Vars.R.Cast(); } } /// <summary> /// The JungleClear R Logic. /// </summary> else if (Targets.JungleMinions.Any()) { Vars.R.Cast(); } } /// <summary> /// The Clear Q Logic. /// </summary> if (Vars.Q.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "clear")) && Vars.getSliderItem(Vars.QMenu, "clear") != 101) { /// <summary> /// The LaneClear Q Logic. /// </summary> if (Targets.Minions.Any()) { Vars.Q.Cast(Targets.Minions[0].ServerPosition); } /// <summary> /// The JungleClear Q Logic. /// </summary> if (Targets.JungleMinions.Any()) { Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition); } } /// <summary> /// The Clear W Logic. /// </summary> if (Vars.W.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.getSliderItem(Vars.WMenu, "clear")) && Vars.getSliderItem(Vars.WMenu, "clear") != 101) { /// <summary> /// The LaneClear W Logic. /// </summary> if (Targets.Minions.Any()) { Vars.W.CastOnUnit(Targets.Minions[0]); } /// <summary> /// The JungleClear W Logic. /// </summary> if (Targets.JungleMinions.Any()) { Vars.W.CastOnUnit(Targets.JungleMinions[0]); } } /// <summary> /// The Clear E Logic. /// </summary> if (Vars.E.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "clear")) && Vars.getSliderItem(Vars.EMenu, "clear") != 101) { /// <summary> /// The LaneClear E Logic. /// </summary> if (Targets.Minions.Any()) { Vars.E.CastOnUnit(Targets.Minions[0]); } /// <summary> /// The JungleClear E Logic. /// </summary> else if (Targets.JungleMinions.Any()) { Vars.E.CastOnUnit(Targets.JungleMinions[0]); } } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { if (GameObjects.Player.LSIsRecalling()) { return; } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && Vars.getCheckBoxItem(Vars.WMenu, "logical")) { foreach (var target in GameObjects.EnemyHeroes.Where( t => Bools.IsImmobile(t) && !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.W.Range))) { if (!Vars.W.GetPrediction(target).CollisionObjects.Any()) { Vars.W.Cast(Vars.W.GetPrediction(target).UnitPosition); } } } /// <summary> /// The Automatic E Logic. /// </summary> if (Vars.E.IsReady() && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.None) && GameObjects.Player.CountEnemyHeroesInRange(1000f) == 0 && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.E.Slot, Vars.getSliderItem(Vars.EMenu, "vision")) && Vars.getSliderItem(Vars.EMenu, "vision") != 101) { if (GameObjects.EnemyHeroes.Any( x => !x.IsDead && !x.IsVisible)) { if (GameObjects.Player.Spellbook.GetSpell(SpellSlot.E).Ammo >= (Vars.getCheckBoxItem(Vars.EMenu, "logical") ? 2 : 1)) { Vars.E.Cast(Vars.Locations .Where(d => GameObjects.Player.Distance(d) > 1500f) .OrderBy(d2 => GameObjects.Player.Distance(d2)) .FirstOrDefault()); } } } /// <summary> /// The E -> R Combo Logics. /// </summary> if (Vars.R.IsReady() && Vars.getCheckBoxItem(Vars.RMenu, "bool") && Vars.getKeyBindItem(Vars.RMenu, "key") && !Invulnerable.Check(Targets.Target, DamageType.Magical, false) && Vars.getCheckBoxItem(Vars.WhiteListMenu, Targets.Target.ChampionName.ToLower())) { if (!Vars.R.GetPrediction(Targets.Target).CollisionObjects.Any()) { if (Vars.E.IsReady() && Vars.getCheckBoxItem(Vars.EMenu, "logical")) { Vars.E.Cast(Vars.E.GetPrediction(Targets.Target).UnitPosition); } Vars.R.Cast(Vars.R.GetPrediction(Targets.Target).UnitPosition); } } }
/// <summary> /// Fired when the game is updated. /// </summary> public void Harass(EntropyEventArgs args) { /// <summary> /// The Q Harass Logic. /// </summary> var bestTargetQ = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.Q2.Range + 60f); if (SpellClass.Q.Ready && bestTargetQ != null && MenuClass.Spells["q"]["harass"].As <MenuSliderBool>().Enabled) { var manaPercent = UtilityClass.Player.MPPercent(); var minEnemies = MenuClass.Spells["q"]["customization"]["minenemies"]; var bestTargetDistanceToPlayer = UtilityClass.Player.Distance(bestTargetQ); var harassManaManager = MenuClass.Spells["q"]["harass"].As <MenuSliderBool>().Value; var enemiesInSplashRange = bestTargetQ.EnemyHeroesCount(SplashRange); if (!IsUsingFishBones()) { if (manaPercent <= harassManaManager) { return; } if (minEnemies != null && enemiesInSplashRange >= minEnemies.As <MenuSlider>().Value) { SpellClass.Q.Cast(); } if (bestTargetDistanceToPlayer > SpellClass.Q.Range + bestTargetQ.BoundingRadius) { SpellClass.Q.Cast(); } } else { if (manaPercent <= harassManaManager) { SpellClass.Q.Cast(); return; } if (minEnemies != null && enemiesInSplashRange < minEnemies.As <MenuSlider>().Value&& bestTargetDistanceToPlayer <= SpellClass.Q.Range + bestTargetQ.BoundingRadius) { SpellClass.Q.Cast(); } } } /// <summary> /// The W Harass Logic. /// </summary> if (SpellClass.W.Ready && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.W.Slot, MenuClass.Spells["w"]["harass"]) && MenuClass.Spells["w"]["harass"].As <MenuSliderBool>().Enabled) { var bestTarget = Extensions.GetBestEnemyHeroTargetInRange(SpellClass.W.Range); if (bestTarget != null && !Invulnerable.Check(bestTarget) && MenuClass.Spells["w"]["whitelist"][bestTarget.CharName.ToLower()].As <MenuBool>().Enabled) { SpellClass.W.Cast(bestTarget); } } }
/// <summary> /// Fired when the game is updated. /// </summary> public void Laneclear() { /// <summary> /// The Laneclear W Logic. /// </summary> if (SpellClass.W.Ready && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.W.Slot, MenuClass.Spells["w"]["laneclear"]) && MenuClass.Spells["w"]["laneclear"].As <MenuSliderBool>().Enabled) { /* * var farmLocation = SpellClass.W.GetCircularFarmLocation(Extensions.GetEnemyLaneMinionsTargets(), SpellClass.W.Width); * if (farmLocation.MinionsHit >= MenuClass.Spells["w"]["customization"]["laneclear"].As<MenuSlider>().Value) * { * SpellClass.W.Cast(farmLocation.Position); * } */ } /// <summary> /// The Laneclear E Logic. /// </summary> if (SpellClass.E.Ready && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["laneclear"]) && MenuClass.Spells["e"]["laneclear"].As <MenuSliderBool>().Enabled) { /* * var farmLocation = SpellClass.W.GetCircularFarmLocation(Extensions.GetEnemyLaneMinionsTargets(), SpellClass.W.Width); * if (farmLocation.MinionsHit >= MenuClass.Spells["w"]["customization"]["laneclear"].As<MenuSlider>().Value) * { * SpellClass.E.Cast(farmLocation.Position); * } */ } /// <summary> /// The Laneclear Q Logic. /// </summary> if (SpellClass.Q.Ready && UtilityClass.Player.ManaPercent() > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["laneclear"]) && MenuClass.Spells["q"]["laneclear"].As <MenuSliderBool>().Enabled) { /* * var farmLocation = SpellClass.Q.GetCircularFarmLocation(Extensions.GetEnemyLaneMinionsTargets(), SpellClass.Q.Width*2); * switch (MenuClass.Spells["q"]["customization"]["qmodes"]["laneclear"].As<MenuList>().Value) * { * case 0: * if (!this.IsNearWorkedGround()) * { * SpellClass.Q.Cast(farmLocation.Position); * } * break; * case 1: * SpellClass.Q.Cast(farmLocation.Position); * break; * } */ } }
/// <summary> /// Called when the game updates itself. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Automatic(EventArgs args) { /// <summary> /// The Soulbound declaration. /// </summary> if (Kalista.SoulBound == null) { Kalista.SoulBound = GameObjects.AllyHeroes.Find( a => a.Buffs.Any(b => b.Caster.IsMe && b.Name.Contains("kalistacoopstrikeally"))); } else { /// <summary> /// The Automatic R Logic. /// </summary> if (Vars.R.IsReady() && Health.GetPrediction(Kalista.SoulBound, (int)(250 + Game.Ping / 2f)) <= Kalista.SoulBound.MaxHealth / 4 && Kalista.SoulBound.CountEnemyHeroesInRange(800f) > 0 && Kalista.SoulBound.IsValidTarget(Vars.R.Range, false) && Vars.Menu["spells"]["r"]["lifesaver"].GetValue <MenuBool>().Value) { Vars.R.Cast(); } } /// <summary> /// The Automatic W Logic. /// </summary> if (Vars.W.IsReady() && !GameObjects.Player.IsRecalling() && !GameObjects.Player.IsUnderEnemyTurret() && Variables.Orbwalker.ActiveMode == OrbwalkingMode.None && GameObjects.Player.CountEnemyHeroesInRange(1500f) == 0 && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["logical"]) && Vars.Menu["spells"]["w"]["logical"].GetValue <MenuSliderButton>().BValue) { foreach (var loc in Kalista.Locations.Where( l => GameObjects.Player.Distance(l) < Vars.W.Range && !ObjectManager.Get <Obj_AI_Minion>() .Any(m => m.Distance(l) < 1000f && m.BaseSkinName.Equals("kalistaspawn")))) { Vars.W.Cast(loc); } } /// <summary> /// The Automatic E Logics. /// </summary> if (Vars.E.IsReady()) { /// <summary> /// The E Before death Logic. /// </summary> if (Health.GetPrediction(GameObjects.Player, (int)(1000 + Game.Ping / 2f)) <= 0 && Vars.Menu["spells"]["e"]["ondeath"].GetValue <MenuBool>().Value) { Vars.E.Cast(); } var validMinions = Targets.Minions.Where( m => Kalista.IsPerfectRendTarget(m) && Vars.GetRealHealth(m) < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E) + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E, DamageStage.Buff)); var validTargets = GameObjects.EnemyHeroes.Where(Kalista.IsPerfectRendTarget); var objAiMinions = validMinions as IList <Obj_AI_Minion> ?? validMinions.ToList(); var objAiHeroes = validTargets as IList <AIHeroClient> ?? validTargets.ToList(); /// <summary> /// The E Minion Harass Logic. /// </summary> if (objAiMinions.Any() && objAiHeroes.Any() && Vars.Menu["spells"]["e"]["harass"].GetValue <MenuSliderButton>().BValue) { if (objAiMinions.Count == 1) { /// <summary> /// Check for Mana Manager if not in combo mode and the killable minion is only one, else do not use it. /// </summary> if (Variables.Orbwalker.ActiveMode != OrbwalkingMode.Combo) { if (GameObjects.Player.ManaPercent < ManaManager.GetNeededMana(Vars.E.Slot, Vars.Menu["spells"]["e"]["harass"])) { return; } } /// <summary> /// Check for E Whitelist if the harassable target is only one and there is only one killable minion, else do not use the whitelist. /// </summary> else if (objAiHeroes.Count == 1) { var hero = objAiHeroes.FirstOrDefault(); if (hero != null && !Vars.Menu["spells"]["e"]["whitelist"][hero.ChampionName.ToLower()] .GetValue <MenuBool>().Value) { return; } } Vars.E.Cast(); } } /// <summary> /// The E JungleClear Logic. /// </summary> if (Vars.Menu["spells"]["e"]["junglesteal"].GetValue <MenuBool>().Value) { if ( Targets.JungleMinions.Any( m => Kalista.IsPerfectRendTarget(m) && m.Health < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E) + (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.E, DamageStage.Buff))) { Vars.E.Cast(); } } } }
/// <summary> /// Fired when the game is updated. /// </summary> public void JungleClear(EntropyEventArgs args) { var jungleTarget = Extensions.GetGenericJungleMinionsTargets() .MinBy(m => Hud.CursorPositionUnclipped.DistanceToPlayer()); if (jungleTarget == null || jungleTarget.HP < UtilityClass.Player.GetAutoAttackDamage(jungleTarget) * 3) { return; } /// <summary> /// The Jungleclear Rylai Q Logic. /// </summary> if (SpellClass.Q.Ready && jungleTarget.IsValidTarget(SpellClass.Q.Range) && UtilityClass.Player.HasItem(ItemID.RylaisCrystalScepter) && (IsNearWorkedGround() || UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Q["jungleclear"])) && MenuClass.Q["jungleclear"].Enabled) { switch (MenuClass.Q["modes"]["jungleclear"].Value) { case 0: if (!IsNearWorkedGround()) { SpellClass.Q.Cast(jungleTarget); } break; case 1: SpellClass.Q.Cast(jungleTarget); break; } } var targetPosAfterW = new Vector3(); /// <summary> /// The Jungleclear W Logic. /// </summary> if (SpellClass.W.Ready && jungleTarget.IsValidTarget(SpellClass.W.Range) && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.W.Slot, MenuClass.W["jungleclear"]) && MenuClass.W["jungleclear"].Enabled) { var bestBoulderHitPos = GetBestBouldersHitPosition(jungleTarget); var bestBoulderHitPosHitBoulders = GetBestBouldersHitPositionHitBoulders(jungleTarget); var jungleTargetPredPos = SpellClass.W.GetPrediction(jungleTarget).CastPosition; if (SpellClass.E.Ready) { if (UtilityClass.Player.Distance(GetUnitPositionAfterPull(jungleTarget)) >= 200f) { targetPosAfterW = GetUnitPositionAfterPull(jungleTarget); } else { targetPosAfterW = GetUnitPositionAfterPush(jungleTarget); } //SpellClass.W.Cast(jungleTargetPredPos, targetPosAfterW); SpellClass.W.Cast(targetPosAfterW, jungleTargetPredPos); } else if (bestBoulderHitPos != Vector3.Zero && bestBoulderHitPosHitBoulders > 0) { //SpellClass.W.Cast(jungleTargetPredPos, bestBoulderHitPos); SpellClass.W.Cast(bestBoulderHitPos, jungleTargetPredPos); } } /// <summary> /// The Jungleclear E Logic. /// </summary> if (SpellClass.E.Ready && jungleTarget.IsValidTarget(SpellClass.E.Range) && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.E["jungleclear"]) && MenuClass.E["jungleclear"].Enabled) { SpellClass.E.Cast(SpellClass.W.Ready ? targetPosAfterW : jungleTarget.Position); } /// <summary> /// The Jungleclear Q Logic. /// </summary> if (SpellClass.Q.Ready && jungleTarget.IsValidTarget(SpellClass.Q.Range) && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Q["jungleclear"]) && MenuClass.Q["jungleclear"].Enabled) { switch (MenuClass.Q["modes"]["jungleclear"].Value) { case 0: if (!IsNearWorkedGround()) { SpellClass.Q.Cast(jungleTarget); } break; case 1: SpellClass.Q.Cast(jungleTarget); break; } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The Clear W Logic. /// </summary> if (Vars.W.IsReady() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.W.Slot, Vars.Menu["spells"]["w"]["laneclear"]) && Vars.Menu["spells"]["w"]["laneclear"].GetValue <MenuSliderButton>().BValue) { if ( GameObjects.EnemyHeroes.Any( t => !Invulnerable.Check(t, DamageType.True, false) && t.IsValidTarget(Vars.W.Range - 150f))) { return; } if (Vars.W.GetLineFarmLocation(Targets.Minions, Vars.W.Width).MinionsHit >= 4) { Vars.W.Cast(Vars.W.GetLineFarmLocation(Targets.Minions, Vars.W.Width).Position); } } /// <summary> /// The Clear Q Logic. /// </summary> if (Vars.Q.IsReady()) { /// <summary> /// The LaneClear Q Logic. /// </summary> if (Targets.Minions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["laneclear"]) && Vars.Menu["spells"]["q"]["laneclear"].GetValue <MenuSliderButton>().BValue) { foreach (var minion in Targets.Minions.Where( m => m.IsValidTarget(Vars.Q.Range) && Targets.Minions.Count(m2 => m2.Distance(m) < 350f) >= 3 && Vars.GetRealHealth(m) < (float)GameObjects.Player.GetSpellDamage(m, SpellSlot.Q))) { Vars.Q.CastOnUnit(minion); } } /// <summary> /// The JungleClear Q Logic. /// </summary> else if (Targets.JungleMinions.Any() && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.Menu["spells"]["q"]["jungleclear"]) && Vars.Menu["spells"]["q"]["jungleclear"].GetValue <MenuSliderButton>().BValue) { Vars.Q.CastOnUnit(Targets.JungleMinions[0]); } } }
/// <summary> /// Fired when the game is updated. /// </summary> /// <param name="args">The <see cref="EventArgs" /> instance containing the event data.</param> public static void Clear(EventArgs args) { if (Bools.HasSheenBuff()) { return; } /// <summary> /// The R Clear Logic. /// </summary> if (Vars.R.IsReady() && GameObjects.Player.Spellbook.GetSpell(SpellSlot.R).ToggleState == 1 && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.R.Slot, Vars.getSliderItem(Vars.RMenu, "clear")) && Vars.getSliderItem(Vars.RMenu, "clear") != 101) { /// <summary> /// The R LaneClear Logic. /// </summary> if (Vars.R.GetCircularFarmLocation(Targets.Minions).MinionsHit >= 3) { Vars.R.Cast(Vars.R.GetCircularFarmLocation(Targets.Minions).Position); } /// <summary> /// The R JungleClear Logic. /// </summary> else if (Targets.JungleMinions.Any()) { Vars.R.Cast(Targets.JungleMinions[0].ServerPosition); } return; } /// <summary> /// The Q Clear Logic. /// </summary> if (Vars.Q.IsReady() && GameObjects.Player.Spellbook.GetSpell(SpellSlot.Q).ToggleState == 1 && GameObjects.Player.ManaPercent > ManaManager.GetNeededMana(Vars.Q.Slot, Vars.getSliderItem(Vars.QMenu, "clear")) && Vars.getSliderItem(Vars.QMenu, "clear") != 101) { /// <summary> /// The Q JungleClear Logic. /// </summary> if (Targets.JungleMinions.Any()) { Vars.Q.Cast(Targets.JungleMinions[0].ServerPosition); } /// <summary> /// The LaneClear Q Logics. /// </summary> else { /// <summary> /// The Aggressive LaneClear Q Logic. /// </summary> if (GameObjects.EnemyHeroes.Any( t => t.LSIsValidTarget(Vars.Q.Range) && !Invulnerable.Check(t, DamageType.Magical, false))) { if (Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width * 2 - 10f).MinionsHit >= 3 && !new Geometry.Rectangle( GameObjects.Player.ServerPosition, GameObjects.Player.ServerPosition.LSExtend( Targets.Minions[0].ServerPosition, Vars.Q.Range), Vars.Q.Width * 2 - 10f).IsOutside((Vector2)Vars.Q.GetPrediction( GameObjects.EnemyHeroes.FirstOrDefault( t => !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.Q.Range))).CastPosition)) { Vars.Q.Cast(Vars.Q.GetLineFarmLocation(Targets.Minions, Vars.Q.Width * 2 - 10f).Position); } } /// <summary> /// The LaneClear Q Logic. /// </summary> else if (!GameObjects.EnemyHeroes.Any( t => !Invulnerable.Check(t) && t.LSIsValidTarget(Vars.Q.Range + 100))) { if (Vars.Q.GetCircularFarmLocation(Targets.Minions, Vars.Q.Width * 2 - 10f).MinionsHit >= 3) { Vars.Q.Cast(Vars.Q.GetCircularFarmLocation(Targets.Minions, Vars.Q.Width * 2 - 10f).Position); } } } } }
/// <summary> /// Fired when the game is updated. /// </summary> public void JungleClear(EntropyEventArgs args) { var jungleTarget = ObjectManager.Get <AIMinionClient>() .Where(m => Extensions.GetGenericJungleMinionsTargets().Contains(m)) .MinBy(m => m.DistanceToPlayer()); if (jungleTarget == null) { return; } /// <summary> /// The W Jungleclear Logic. /// </summary> if (SpellClass.W.Ready && !IsAllured(jungleTarget) && jungleTarget.IsValidTarget(SpellClass.W.Range) && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.W.Slot, MenuClass.Spells["w"]["jungleclear"]) && MenuClass.Spells["w"]["jungleclear"].As <MenuSliderBool>().Enabled) { var targetName = jungleTarget.CharName; if (UtilityClass.JungleList.Contains(targetName) && MenuClass.Spells["w"]["whitelist"][targetName].As <MenuBool>().Enabled) { SpellClass.W.CastOnUnit(jungleTarget); return; } } if (IsFullyAllured(jungleTarget)) { /// <summary> /// The E Jungleclear Logic. /// </summary> if (SpellClass.E.Ready && IsWhiplashEmpowered() && jungleTarget.IsValidTarget(SpellClass.E.Range) && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["jungleclear"]) && MenuClass.Spells["e"]["jungleclear"].As <MenuSliderBool>().Enabled) { SpellClass.E.CastOnUnit(jungleTarget); } } if (IsAllured(jungleTarget) && !IsFullyAllured(jungleTarget)) { return; } /// <summary> /// The Q Jungleclear Logic. /// </summary> if (SpellClass.Q.Ready && jungleTarget.IsValidTarget(SpellClass.Q.Range) && (UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.Q.Slot, MenuClass.Spells["q"]["jungleclear"]) || !IsHateSpikeSkillshot()) && MenuClass.Spells["q"]["jungleclear"].As <MenuSliderBool>().Enabled) { if (IsHateSpikeSkillshot()) { SpellClass.Q.Cast(jungleTarget); } else { SpellClass.Q.CastOnUnit(jungleTarget); } } /// <summary> /// The E Jungleclear Logic. /// </summary> if (SpellClass.E.Ready && jungleTarget.IsValidTarget(SpellClass.E.Range) && UtilityClass.Player.MPPercent() > ManaManager.GetNeededMana(SpellClass.E.Slot, MenuClass.Spells["e"]["jungleclear"]) && MenuClass.Spells["e"]["jungleclear"].As <MenuSliderBool>().Enabled) { SpellClass.E.CastOnUnit(jungleTarget); } }