/// <summary> /// Sets the resetter slots. /// </summary> public static void Initialize() { if (GameObjects.Player.Spellbook.Spells.Any(s => AutoAttack.IsAutoAttackReset(s.Name.ToLower()))) { Vars.HasAnyReset = true; } }
/// <summary> /// OnProcessSpellCast event. /// </summary> /// <param name="sender"> /// The sender /// </param> /// <param name="args"> /// The event data /// </param> private void OnObjAiBaseProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender.IsValid && sender.IsMe) { var spellName = args.SData.Name; var target = args.Target as AttackableUnit; if (target != null && target.IsValid && AutoAttack.IsAutoAttack(spellName)) { this.LastAutoAttackTick = Variables.TickCount - (Game.Ping / 2); this.MissileLaunched = false; this.LastMovementOrderTick = 0; this.TotalAutoAttacks++; if (!target.Compare(this.LastTarget)) { this.InvokeAction( new OrbwalkingActionArgs { Target = target, Type = OrbwalkingType.TargetSwitch }); this.LastTarget = target; } this.InvokeAction( new OrbwalkingActionArgs { Target = target, Sender = sender, Type = OrbwalkingType.OnAttack }); } if (AutoAttack.IsAutoAttackReset(spellName)) { this.ResetSwingTimer(); } } }
private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!sender.IsMe || !Enabled) { return; } var spellName = args.SData.Name; var target = args.Target as AttackableUnit; if (target != null && target.IsValid && AutoAttack.IsAutoAttack(spellName)) { LastAutoAttackTick = Variables.TickCount - Game.Ping / 2; MissileLaunched = false; if (!target.Compare(LastTarget)) { InvokeAction(new OrbwalkerActionArgs { Target = target, Type = OrbwalkingType.TargetSwitch }); LastTarget = target; } InvokeAction( new OrbwalkerActionArgs { Target = target, Sender = sender, Type = OrbwalkingType.OnAttack }); } if (AutoAttack.IsAutoAttackReset(spellName)) { DelayAction.Add(250, ResetAutoAttackTimer); } }
/// <summary> /// OnProcessSpellCast event. /// </summary> /// <param name="sender"> /// The sender /// </param> /// <param name="args"> /// The event data /// </param> private static void OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!Enabled) { return; } if (sender.IsMe) { var spellName = args.SData.Name; var target = args.Target as AttackableUnit; if (target != null && target.IsValid && AutoAttack.IsAutoAttack(spellName)) { LastAutoAttackTick = Variables.TickCount - (Game.Ping / 2); MissileLaunched = false; if (!target.Compare(LastTarget)) { InvokeAction(new OrbwalkerActionArgs { Target = target, Type = OrbwalkerType.TargetSwitch }); LastTarget = target; } var time = Variables.TickCount + (sender.AttackCastDelay * 1000) + 40; if (!AfterAttackTime.ContainsKey(time)) { AfterAttackTime.Add( time, new OrbwalkerActionArgs { Target = target, Type = OrbwalkerType.AfterAttack }); } InvokeAction( new OrbwalkerActionArgs { Target = target, Sender = sender, Type = OrbwalkerType.OnAttack }); } if (AutoAttack.IsAutoAttackReset(spellName)) { ResetAutoAttackTimer(); } } }
/// <summary> /// Delayed OnDoCast event. /// </summary> /// <param name="sender"> /// The sender /// </param> /// <param name="args"> /// The event data /// </param> private void OnObjAiBaseDoCastDelayed(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (AutoAttack.IsAutoAttackReset(args.SData.Name)) { this.ResetSwingTimer(); } else if (AutoAttack.IsAutoAttack(args.SData.Name)) { this.MissileLaunched = true; this.InvokeAction( new OrbwalkingActionArgs { Target = args.Target as AttackableUnit, Sender = sender, Type = OrbwalkingType.AfterAttack }); } }
/// <summary> /// Called on do-cast. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The args.</param> public static void Resetters(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!Vars.getCheckBoxItem(Vars.TypesMenu, "resetters")) { return; } if (!Vars.getKeyBindItem(Vars.KeysMenu, "combo") && !Vars.getKeyBindItem(Vars.KeysMenu, "laneclear")) { return; } /// <summary> /// If the player has no AA-Resets, triggers after normal AA, else after AA-Reset. /// </summary> if (sender.IsMe) { if ((!Vars.HasAnyReset && AutoAttack.IsAutoAttack(args.SData.Name)) || ObjectManager.Player.Buffs.Any(b => AutoAttack.IsAutoAttackReset(b.Name))) { /// <summary> /// The Tiamat Melee Only logic. /// </summary> if (Items.CanUseItem(3077)) { Items.UseItem(3077); } /// <summary> /// The Ravenous Hydra Melee Only logic. /// </summary> if (Items.CanUseItem(3074)) { Items.UseItem(3074); } /// <summary> /// The Titanic Hydra Melee Only logic. /// </summary> if (Items.CanUseItem(3748)) { Items.UseItem(3748); } } } }
/// <summary> /// Called on do-cast. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The args.</param> public static void Resetters(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!Vars.TypesMenu["resetters"].Cast <CheckBox>().CurrentValue) { return; } if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear) || Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.JungleClear)) { return; } /// <summary> /// If the player has no AA-Resets, triggers after normal AA, else after AA-Reset. /// </summary> if (sender.IsMe) { if ((!Vars.HasAnyReset && AutoAttack.IsAutoAttack(args.SData.Name)) || ObjectManager.Player.Buffs.Any(b => AutoAttack.IsAutoAttackReset(b.Name))) { /// <summary> /// The Tiamat Melee Only logic. /// </summary> if (Items.CanUseItem(3077)) { Items.UseItem(3077); } /// <summary> /// The Ravenous Hydra Melee Only logic. /// </summary> if (Items.CanUseItem(3074)) { Items.UseItem(3074); } /// <summary> /// The Titanic Hydra Melee Only logic. /// </summary> if (Items.CanUseItem(3748)) { Items.UseItem(3748); } } } }
/// <summary> /// Called on do-cast. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The args.</param> public static void Resetters(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (!Vars.Menu["resetters"].GetValue <MenuBool>().Value) { return; } if (!Vars.Menu["keys"]["combo"].GetValue <MenuKeyBind>().Active && !Vars.Menu["keys"]["laneclear"].GetValue <MenuKeyBind>().Active) { return; } /// <summary> /// If the player has no AA-Resets, triggers after normal AA, else after AA-Reset. /// </summary> if (sender.IsMe) { if (!Vars.HasAnyReset && AutoAttack.IsAutoAttack(args.SData.Name) || ObjectManager.Player.Buffs.Any(b => AutoAttack.IsAutoAttackReset(b.Name))) { /// <summary> /// The Tiamat Melee Only logic. /// </summary> if (Items.CanUseItem(3077)) { Items.UseItem(3077); } /// <summary> /// The Ravenous Hydra Melee Only logic. /// </summary> if (Items.CanUseItem(3074)) { Items.UseItem(3074); } /// <summary> /// The Titanic Hydra Melee Only logic. /// </summary> if (Items.CanUseItem(3748)) { Items.UseItem(3748); } } } }
/// <summary> /// Sets the menu. /// </summary> public static void Initialize() { /// <summary> /// Sets the spells menu. /// </summary> Vars.SpellsMenu = new Menu("spells", "Spells"); { /// <summary> /// Sets the menu for the Q. /// </summary> Vars.QMenu = new Menu("q", "Use Q to:"); { Vars.QMenu.Add(new MenuBool("combo", "Combo", true)); Vars.QMenu.Add(new MenuBool("killsteal", "KillSteal", true)); Vars.QMenu.Add(new MenuBool("logical", "Logical", true)); Vars.QMenu.Add(new MenuSliderButton("harass", "Harass / if Mana >= x%", 50, 0, 99, true)); Vars.QMenu.Add(new MenuSliderButton("laneclear", "LaneClear / if Mana >= x%", 50, 0, 99, true)); Vars.QMenu.Add(new MenuSliderButton("jungleclear", "JungleClear / if Mana >= x%", 50, 0, 99, true)); } Vars.SpellsMenu.Add(Vars.QMenu); /// <summary> /// Sets the menu for the W. /// </summary> Vars.WMenu = new Menu("w", "Use W to:"); { Vars.WMenu.Add(new MenuBool("combo", "Combo", true)); Vars.WMenu.Add(new MenuSliderButton("laneclear", "LaneClear / if Mana >= x%", 50, 0, 99, true)); Vars.WMenu.Add(new MenuSliderButton("jungleclear", "JungleClear / if Mana >= x%", 50, 0, 99, true)); Vars.WMenu.Add(new MenuSliderButton("buildings", "Buildings / if Mana >= x%", 50, 0, 99, true)); } Vars.SpellsMenu.Add(Vars.WMenu); /// <summary> /// Sets the menu for the E. /// </summary> Vars.EMenu = new Menu("e", "Use E to:"); { Vars.EMenu.Add(new MenuSeparator("separator", "Evade#/EzEvade: Can shield skillshots.")); Vars.EMenu.Add(new MenuSeparator("separator2", "ExorSivir: Can shield everything else.")); Vars.EMenu.Add(new MenuBool("logical", "Logical", true)); Vars.EMenu.Add(new MenuSlider("delay", "E Delay (ms)", 0, 0, 250)); { /// <summary> /// Sets the menu for the E Whitelist. /// </summary> Vars.WhiteListMenu = new Menu("whitelist", "Shield: Whitelist Menu", true); { Vars.WhiteListMenu.Add(new MenuBool("minions", "Shield: Dragon's Attacks", true)); foreach (var enemy in GameObjects.EnemyHeroes) { if (enemy.ChampionName.Equals("Alistar")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.pulverize", $"Shield: {enemy.ChampionName}'s Pulverize (Q)", true)); } if (enemy.ChampionName.Equals("Braum")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.passive", $"Shield: {enemy.ChampionName}'s Passive", true)); } if (enemy.ChampionName.Equals("Jax")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.jaxcounterstrike", $"Shield: {enemy.ChampionName}'s JaxCounterStrike (E)", true)); } if (enemy.ChampionName.Equals("KogMaw")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.kogmawicathiansurprise", $"Shield: {enemy.ChampionName}'s KogMawIcathianSurprise (Passive)", true)); } if (enemy.ChampionName.Equals("Nautilus")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.nautilusravagestrikeattack", $"Shield: {enemy.ChampionName}'s NautilusRavageStrikeAttack (Passive)", true)); } if (enemy.ChampionName.Equals("Udyr")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.udyrbearattack", $"Shield: {enemy.ChampionName}'s UdyrBearAttack (E)", true)); } string[] excludedSpellsList = { "KatarinaE", "nautiluspiercinggaze" }; string[] assassinList = { "Akali", "Leblanc", "Talon" }; foreach (var spell in SpellDatabase.Get() .Where( s => !excludedSpellsList.Contains(s.SpellName) && s.ChampionName.Equals(enemy.ChampionName))) { if (spell.CastType != null) { if (enemy.IsMelee && spell.CastType.Contains(CastType.Activate) && spell.SpellType.HasFlag(SpellType.Activated) && AutoAttack.IsAutoAttackReset(spell.SpellName) || spell.CastType.Contains(CastType.EnemyChampions) && (spell.SpellType.HasFlag(SpellType.Targeted) || spell.SpellType.HasFlag(SpellType.TargetedMissile))) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.{spell.SpellName.ToLower()}", $"Shield: {enemy.ChampionName}'s {spell.SpellName} ({spell.Slot})" + (assassinList.Contains(enemy.ChampionName) ? "[May not work]" : ""), true)); } } } } } Vars.EMenu.Add(Vars.WhiteListMenu); } } Vars.SpellsMenu.Add(Vars.EMenu); } Vars.Menu.Add(Vars.SpellsMenu); /// <summary> /// Sets the drawings menu. /// </summary> Vars.DrawingsMenu = new Menu("drawings", "Drawings"); { Vars.DrawingsMenu.Add(new MenuBool("q", "Q Range")); } Vars.Menu.Add(Vars.DrawingsMenu); }
/// <summary> /// Called while processing Spellcasting operations. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs" /> instance containing the event data.</param> public static void AutoShield(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender == null || !sender.IsEnemy) { return; } switch (sender.Type) { case GameObjectType.AIHeroClient: if (Invulnerable.Check(GameObjects.Player, DamageType.Magical, false)) { return; } /// <summary> /// Block Gangplank's Barrels. /// </summary> var hero = sender as AIHeroClient; if (hero != null && hero.ChampionName.Equals("Gangplank")) { if (!(args.Target is Obj_AI_Minion)) { return; } if (AutoAttack.IsAutoAttack(args.SData.Name) || args.SData.Name.Equals("GangplankQProceed")) { if (Math.Abs(((Obj_AI_Minion)args.Target).Health - 1) <= 0 && ((Obj_AI_Minion)args.Target).DistanceToPlayer() < 450 && ((Obj_AI_Minion)args.Target).BaseSkinName.Equals("gangplankbarrel")) { Vars.W.Cast(); } } } if (hero != null) { /// <summary> /// Check for Special On-Hit CC AutoAttacks & Melee AutoAttack Resets. /// </summary> if (AutoAttack.IsAutoAttack(args.SData.Name)) { if (!args.Target.IsMe) { return; } switch (args.SData.Name) { case "UdyrBearAttack": case "BraumBasicAttackPassiveOverride": /// <summary> /// Whitelist Block. /// </summary> if ( Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{args.SData.Name.ToLower()}"] == null || !Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{args.SData.Name.ToLower()}"] .GetValue <MenuBool>().Value) { return; } if (GameObjects.Player.HasBuff("udyrbearstuncheck") && hero.ChampionName.Equals("Udyr")) { return; } Vars.W.Cast(); break; default: if (!hero.Buffs.Any(b => AutoAttack.IsAutoAttackReset(b.Name)) || Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{hero.Buffs.First(b => AutoAttack.IsAutoAttackReset(b.Name)).Name.ToLower()}" ] == null || !Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{hero.Buffs.First(b => AutoAttack.IsAutoAttackReset(b.Name)).Name.ToLower()}" ].GetValue <MenuBool>().Value) { return; } Vars.W.Cast(); break; } } /// <summary> /// Shield all the Targetted Spells. /// </summary> else if (SpellDatabase.GetByName(args.SData.Name) != null) { /// <summary> /// Whitelist Block. /// </summary> if ( Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{args.SData.Name.ToLower()}"] == null || !Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{args.SData.Name.ToLower()}"].GetValue <MenuBool>() .Value) { return; } switch (SpellDatabase.GetByName(args.SData.Name).SpellType) { /// <summary> /// Check for Targetted Spells. /// </summary> case SpellType.Targeted: case SpellType.TargetedMissile: if (!args.Target.IsMe || !SpellDatabase.GetByName(args.SData.Name) .CastType.Contains(CastType.EnemyChampions)) { return; } switch (hero.ChampionName) { case "Caitlyn": DelayAction.Add(1050, () => { Vars.W.Cast(); }); break; case "Nocturne": DelayAction.Add(350, () => { Vars.W.Cast(); }); break; case "Zed": DelayAction.Add(200, () => { Vars.W.Cast(); }); break; default: DelayAction.Add( Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value, () => { Vars.W.Cast(); }); break; } break; /// <summary> /// Check for AoE Spells. /// </summary> case SpellType.SkillshotCircle: switch (hero.ChampionName) { case "Alistar": if (hero.DistanceToPlayer() < 355 + GameObjects.Player.BoundingRadius) { Vars.W.Cast(); } break; } break; } } } break; case GameObjectType.obj_AI_Minion: if (args.Target == null || !args.Target.IsMe) { return; } /// <summary> /// Block Dragon/Baron/RiftHerald's AutoAttacks. /// </summary> if (Vars.Menu["spells"]["e"]["whitelist"]["minions"].GetValue <MenuBool>().Value) { if (sender.BaseSkinName.Equals("SRU_Baron") || sender.BaseSkinName.Contains("SRU_Dragon") || sender.BaseSkinName.Equals("SRU_RiftHerald")) { Vars.W.Cast(); } } break; } }
/// <summary> /// Sets the menu. /// </summary> public static void Initialize() { /// <summary> /// Sets the spells menu. /// </summary> Vars.SpellsMenu = new Menu("spells", "Spells"); { /// <summary> /// Sets the menu for the Q. /// </summary> Vars.QMenu = new Menu("q", "Use Q to:"); { Vars.QMenu.Add(new MenuBool("combo", "Combo", true)); Vars.QMenu.Add(new MenuBool("killsteal", "KillSteal", true)); Vars.QMenu.Add(new MenuSliderButton("harass", "Harass / if Mana >= x%", 50, 0, 99, true)); Vars.QMenu.Add(new MenuSliderButton("laneclear", "LaneClear / if Mana >= x%", 50, 0, 99, true)); Vars.QMenu.Add(new MenuSliderButton("jungleclear", "JungleClear / if Mana >= x%", 50, 0, 99, true)); } Vars.SpellsMenu.Add(Vars.QMenu); /// <summary> /// Sets the menu for the W. /// </summary> Vars.WMenu = new Menu("w", "Use W to:"); { Vars.WMenu.Add( new MenuSeparator( "separator", "It has to be used in conjunction with Evade, else it will not shield Skillshots")); Vars.WMenu.Add( new MenuSeparator( "separator2", "It is meant to shield what Evade doesn't support, like targetted spells.")); Vars.WMenu.Add(new MenuBool("logical", "Logical", true)); Vars.WMenu.Add(new MenuSlider("delay", "E Delay (ms)", 0, 0, 250)); { /// <summary> /// Sets the menu for the W Whitelist. /// </summary> Vars.WhiteListMenu = new Menu("whitelist", "Shield: Whitelist Menu", true); { Vars.WhiteListMenu.Add(new MenuBool("minions", "Shield: Dragon/Baron Attacks", true)); foreach (var enemy in GameObjects.EnemyHeroes) { if (enemy.ChampionName.Equals("Alistar")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.pulverize", $"Shield: {enemy.ChampionName}'s Q", true)); } if (enemy.ChampionName.Equals("Braum")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.braumbasicattackpassiveoverride", $"Shield: {enemy.ChampionName}'s Passive", true)); } if (enemy.ChampionName.Equals("Jax")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.jaxcounterstrike", $"Shield: {enemy.ChampionName}'s E", true)); } if (enemy.ChampionName.Equals("KogMaw")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.kogmawicathiansurprise", $"Shield: {enemy.ChampionName}'s Passive", true)); } if (enemy.ChampionName.Equals("Udyr")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.udyrbearattack", $"Shield: {enemy.ChampionName}'s E", true)); } foreach (var spell in SpellDatabase.Get() .Where( s => !s.SpellName.Equals("KatarinaE") && !s.SpellName.Equals("TalonCutthroat") && s.ChampionName.Equals(enemy.ChampionName))) { if (enemy.IsMelee && spell.CastType.Contains(CastType.Activate) && spell.SpellType.HasFlag(SpellType.Activated) && AutoAttack.IsAutoAttackReset(spell.SpellName) || (spell.SpellType.HasFlag(SpellType.Targeted) || spell.SpellType.HasFlag(SpellType.TargetedMissile)) && spell.CastType.Contains(CastType.EnemyChampions)) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.{spell.SpellName.ToLower()}", $"Shield: {enemy.ChampionName}'s {spell.Slot}", true)); } } } } Vars.WMenu.Add(Vars.WhiteListMenu); } } Vars.SpellsMenu.Add(Vars.WMenu); /// <summary> /// Sets the menu for the E. /// </summary> Vars.EMenu = new Menu("e", "Use E to:"); { Vars.EMenu.Add(new MenuBool("combo", "Combo", true)); Vars.EMenu.Add(new MenuBool("gapcloser", "Anti-Gapcloser", true)); Vars.EMenu.Add(new MenuBool("interrupter", "Interrupt Enemy Channels", true)); } Vars.SpellsMenu.Add(Vars.EMenu); /// <summary> /// Sets the menu for the R. /// </summary> Vars.RMenu = new Menu("r", "Use R to:"); { Vars.RMenu.Add( new MenuSeparator( "separator", "The Semi-Automatic R will automatically ult the lowest on health, whitelisted and non-invulnerable enemy in range.")); Vars.RMenu.Add(new MenuBool("bool", "Semi-Automatic R", true)); Vars.RMenu.Add(new MenuKeyBind("key", "Key:", Keys.T, KeyBindType.Press)); { /// <summary> /// Sets the whitelist menu for the R. /// </summary> Vars.WhiteList2Menu = new Menu("whitelist", "Ultimate: Whitelist Menu"); { foreach (var target in GameObjects.EnemyHeroes) { Vars.WhiteList2Menu.Add( new MenuBool( target.ChampionName.ToLower(), $"Use against: {target.ChampionName}", true)); } } Vars.RMenu.Add(Vars.WhiteList2Menu); } } Vars.SpellsMenu.Add(Vars.RMenu); } Vars.Menu.Add(Vars.SpellsMenu); /// <summary> /// Sets the drawings menu. /// </summary> Vars.DrawingsMenu = new Menu("drawings", "Drawings"); { Vars.DrawingsMenu.Add(new MenuBool("q", "Q Range")); Vars.DrawingsMenu.Add(new MenuBool("e", "E Range")); Vars.DrawingsMenu.Add(new MenuBool("r", "R Range")); } Vars.Menu.Add(Vars.DrawingsMenu); }
/// <summary> /// Sets the menu. /// </summary> public static void Initialize() { /// <summary> /// Sets the menu for the Q. /// </summary> Vars.QMenu = Vars.Menu.AddSubMenu("Use Q to:", "q"); { Vars.QMenu.Add("combo", new CheckBox("Combo", true)); Vars.QMenu.Add("killsteal", new CheckBox("KillSteal", true)); Vars.QMenu.Add("logical", new CheckBox("Logical", true)); Vars.QMenu.AddLabel("Set the sliders to 101 below to disable them."); Vars.QMenu.Add("harass", new Slider("Harass / if Mana >= x%", 50, 0, 101)); Vars.QMenu.Add("clear", new Slider("Clear / if Mana >= x%", 50, 0, 101)); } /// <summary> /// Sets the menu for the W. /// </summary> Vars.WMenu = Vars.Menu.AddSubMenu("Use W to:", "w"); { Vars.WMenu.Add("combo", new CheckBox("Combo", true)); Vars.QMenu.AddLabel("Set the sliders to 101 below to disable them."); Vars.WMenu.Add("clear", new Slider("Clear / if Mana >= x%", 50, 0, 101)); Vars.WMenu.Add("buildings", new Slider("Buildings / if Mana >= x%", 50, 0, 101)); } /// <summary> /// Sets the menu for the E. /// </summary> Vars.EMenu = Vars.Menu.AddSubMenu("Use E to:", "e"); { Vars.EMenu.AddLabel("It has to be used in conjunction with Evade, else it will not shield Skillshots"); Vars.EMenu.AddLabel("It it meant to shield what Evade doesn't support, like targetted spells, AoE, etc."); Vars.EMenu.Add("logical", new CheckBox("Logical", true)); Vars.EMenu.Add("delay", new Slider("E Delay (ms)", 0, 0, 250)); } /// <summary> /// Sets the menu for the E Whitelist. /// </summary> Vars.WhiteListMenu = Vars.Menu.AddSubMenu("Shield: Whitelist Menu"); { Vars.WhiteListMenu.Add("minions", new CheckBox("Shield: Dragon/Baron Attacks")); foreach (var enemy in GameObjects.EnemyHeroes) { if (enemy.ChampionName.Equals("Alistar")) { Vars.WhiteListMenu.Add($"{enemy.ChampionName.ToLower()}.pulverize", new CheckBox($"Shield: {enemy.ChampionName}'s Q")); } if (enemy.ChampionName.Equals("Braum")) { Vars.WhiteListMenu.Add($"{enemy.ChampionName.ToLower()}.braumbasicattackpassiveoverride", new CheckBox($"Shield: {enemy.ChampionName}'s Passive")); } if (enemy.ChampionName.Equals("Jax")) { Vars.WhiteListMenu.Add($"{enemy.ChampionName.ToLower()}.jaxcounterstrike", new CheckBox($"Shield: {enemy.ChampionName}'s E", true)); } if (enemy.ChampionName.Equals("KogMaw")) { Vars.WhiteListMenu.Add($"{enemy.ChampionName.ToLower()}.kogmawicathiansurprise", new CheckBox($"Shield: {enemy.ChampionName}'s Passive", true)); } if (enemy.ChampionName.Equals("Udyr")) { Vars.WhiteListMenu.Add($"{enemy.ChampionName.ToLower()}.udyrbearattack", new CheckBox($"Shield: {enemy.ChampionName}'s E")); } foreach (var spell in SpellDatabase.Get().Where( s => !s.SpellName.Equals("KatarinaE") && !s.SpellName.Equals("TalonCutthroat") && s.ChampionName.Equals(enemy.ChampionName))) { if ((enemy.IsMelee && spell.CastType.Contains(CastType.Activate) && spell.SpellType.HasFlag(SpellType.Activated) && AutoAttack.IsAutoAttackReset(spell.SpellName)) || ((spell.SpellType.HasFlag(SpellType.Targeted) || spell.SpellType.HasFlag(SpellType.TargetedMissile)) && spell.CastType.Contains(CastType.EnemyChampions))) { Vars.WhiteListMenu.Add($"{enemy.ChampionName.ToLower()}.{spell.SpellName.ToLower()}", new CheckBox($"Shield: {enemy.ChampionName}'s {spell.Slot}")); } } } } /// <summary> /// Sets the drawings menu. /// </summary> Vars.DrawingsMenu = Vars.Menu.AddSubMenu("Drawings"); { Vars.DrawingsMenu.Add("q", new CheckBox("Q Range")); } }
/// <summary> /// Called while processing Spelaneclearlearast operations. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs" /> instance containing the event data.</param> public static void AutoShield(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (Invulnerable.Check(GameObjects.Player, DamageType.True, false)) { return; } if (sender.IsMe || sender == null || !sender.IsValid) { return; } /// <summary> /// Special check for Kalista's E. /// </summary> if (args.SData.Name.Equals("KalistaExpungeWrapper")) { if (!ObjectManager.Player.HasBuff("KalistaExpungeMarker")) { return; } } else { if (args.Target == null) { return; } if (args.SData.Name.Equals("HextechGunblade") || args.SData.Name.Equals("BilgewaterCutlass") || args.SData.Name.Equals("ItemSwordOfFeastAndFamine")) { return; } /// <summary> /// Block Gangplank's Barrels. /// </summary> if ((sender as AIHeroClient).ChampionName.Equals("Gangplank")) { if (AutoAttack.IsAutoAttack(args.SData.Name) || args.SData.Name.Equals("GangplankQProceed")) { if ((args.Target as Obj_AI_Minion).Health == 1 && (args.Target as Obj_AI_Minion).CharData.BaseSkinName.Equals("gangplankbarrel")) { if (GameObjects.Player.Distance(args.Target) < 450) { Vars.E.Cast(); } } } else if (args.SData.Name.Equals("GangplankEBarrelFuseMissile")) { if (GameObjects.Player.Distance(args.End) < 450) { Vars.E.Cast(); } } } if (!args.Target.IsMe) { return; } /// <summary> /// Block Dragon's AutoAttacks. /// </summary> if (sender is Obj_AI_Minion) { if (!sender.CharData.BaseSkinName.Equals("SRU_Baron") && !sender.CharData.BaseSkinName.Contains("SRU_Dragon") && !sender.CharData.BaseSkinName.Equals("SRU_RiftHerald")) { return; } } if (!sender.IsEnemy || !(sender as AIHeroClient).LSIsValidTarget()) { return; } /// <summary> /// Special check for the AutoAttacks. /// </summary> if (AutoAttack.IsAutoAttack(args.SData.Name)) { if (!sender.IsMelee) { if (!args.SData.Name.Contains("Card")) { return; } } else { if (sender.Buffs.Any(b => AutoAttack.IsAutoAttackReset(args.SData.Name))) { Vars.E.Cast(); } } } /// <summary> /// Special check for the Located AoE skillshots. /// </summary> if (args.SData.TargettingType.Equals(SpellDataTargetType.LocationAoe)) { if (args.SData.Name.Equals("GangplankE") || args.SData.Name.Equals("TrundleCircle") || args.SData.Name.Equals("TormentedSoil") || args.SData.Name.Equals("MissFortuneScattershot")) { return; } } /// <summary> /// Special check for the on target-position AoE spells. /// </summary> if (args.SData.TargettingType.Equals(SpellDataTargetType.SelfAoe)) { if (!args.SData.Name.Equals("MockingShout")) { return; } } } if (args.Target.IsMe && sender.CharData.BaseSkinName.Equals("Zed") && args.SData.TargettingType.Equals(SpellDataTargetType.Self)) { /// <summary> /// If the sender is Zed and the processed arg is a Targetted spell (His Ultimate), delay the shieldcasting by 200ms. /// </summary> DelayAction.Add(200, () => { Vars.E.Cast(); } ); } else { DelayAction.Add( Menus.getSliderItem(Vars.EMenu, "delay"), () => { Vars.E.Cast(); } ); } }
/// <summary> /// Called while processing Spellcasting operations. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs" /> instance containing the event data.</param> public static void AutoShield(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender == null || !sender.IsEnemy) { return; } switch (sender.Type) { case GameObjectType.obj_AI_Hero: if (Invulnerable.Check(GameObjects.Player, DamageType.Magical, false)) { return; } var hero = sender as Obj_AI_Hero; if (hero != null) { /// <summary> /// Block Gangplank's Barrels. /// </summary> if (hero.ChampionName.Equals("Gangplank")) { if (!(args.Target is Obj_AI_Minion)) { return; } if (AutoAttack.IsAutoAttack(args.SData.Name) || args.SData.Name.Equals("GangplankQProceed")) { var target = (Obj_AI_Minion)args.Target; if ((int)target.Health == 1 && target.DistanceToPlayer() < 450 && target.CharData.BaseSkinName.Equals("gangplankbarrel")) { Vars.E.Cast(); return; } } } var braumMenu = Vars.Menu["spells"]["e"]["whitelist"]["braum.passive"]; var spellMenu = Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{args.SData.Name.ToLower()}"]; var resetMenu = hero.Buffs.Any(b => AutoAttack.IsAutoAttackReset(b.Name)) ? Vars.Menu["spells"]["e"]["whitelist"][ $"{hero.ChampionName.ToLower()}.{hero.Buffs.First(b => AutoAttack.IsAutoAttackReset(b.Name)).Name.ToLower()}" ] : null; if (args.Target != null && args.Target.IsMe) { /// <summary> /// Check for Special On-Hit CC AutoAttacks. /// </summary> if (AutoAttack.IsAutoAttack(args.SData.Name)) { switch (args.SData.Name) { case "UdyrBearAttack": case "GoldCardPreAttack": case "RedCardPreAttack": case "BlueCardPreAttack": case "NautilusRavageStrikeAttack": if (spellMenu != null && spellMenu.GetValue <MenuBool>().Value && (!hero.ChampionName.Equals("Udyr") || !GameObjects.Player.HasBuff("udyrbearstuncheck"))) { Vars.E.Cast(); } break; } /// <summary> /// Check for Melee AutoAttack Resets. /// </summary> if (resetMenu != null && resetMenu.GetValue <MenuBool>().Value && hero.Buffs.Any(b => AutoAttack.IsAutoAttackReset(b.Name))) { Vars.E.Cast(); return; } /// <summary> /// Check for Braum Passive. /// </summary> if (braumMenu != null && braumMenu.GetValue <MenuBool>().Value && GameObjects.Player.GetBuffCount("BraumMark") == 3) { Vars.E.Cast(); return; } } } /// <summary> /// Shield all the Targetted Spells. /// </summary> if (spellMenu != null && spellMenu.GetValue <MenuBool>().Value && SpellDatabase.GetByName(args.SData.Name) != null) { switch (SpellDatabase.GetByName(args.SData.Name).SpellType) { /// <summary> /// Check for Targetted Spells. /// </summary> case SpellType.Targeted: case SpellType.TargetedMissile: if (args.Target != null && args.Target.IsMe) { var delay = Vars.Menu["spells"]["e"]["delay"].GetValue <MenuSlider>().Value; switch (hero.ChampionName) { case "Caitlyn": delay = 1050; break; case "Nocturne": delay = 350; break; case "Zed": delay = 200; break; case "Nautilus": delay = (int)GameObjects.Player.Distance(hero); break; } DelayAction.Add(delay, () => { Vars.E.Cast(); }); } break; /// <summary> /// Check for AoE Spells. /// </summary> case SpellType.SkillshotCircle: switch (hero.ChampionName) { case "Alistar": if (hero.DistanceToPlayer() < 355 + GameObjects.Player.BoundingRadius) { Vars.E.Cast(); } break; } break; } } } break; case GameObjectType.obj_AI_Minion: /// <summary> /// Block Dragon/Baron/RiftHerald's AutoAttacks. /// </summary> if (args.Target != null && args.Target.IsMe && sender.CharData.BaseSkinName.Contains("SRU_Dragon") && Vars.Menu["spells"]["e"]["whitelist"]["minions"].GetValue <MenuBool>().Value) { Vars.E.Cast(); } break; } }
/// <summary> /// Sets the menu. /// </summary> public static void Initialize() { /// <summary> /// Sets the spells menu. /// </summary> Vars.SpellsMenu = new Menu("spells", "Spells"); { /// <summary> /// Sets the menu for the Q. /// </summary> Vars.QMenu = new Menu("q", "Use Q to:"); { Vars.QMenu.Add(new MenuBool("combo", "Combo", true)); Vars.QMenu.Add(new MenuBool("killsteal", "KillSteal", true)); Vars.QMenu.Add(new MenuBool("logical", "Logical", true)); Vars.QMenu.Add(new MenuSliderButton("harass", "Harass / if Mana >= x%", 50, 0, 99, true)); Vars.QMenu.Add(new MenuSliderButton("clear", "Clear / if Mana >= x%", 50, 0, 99, true)); } Vars.SpellsMenu.Add(Vars.QMenu); /// <summary> /// Sets the menu for the W. /// </summary> Vars.WMenu = new Menu("w", "Use W to:"); { Vars.WMenu.Add(new MenuBool("combo", "Combo", true)); Vars.WMenu.Add(new MenuSliderButton("clear", "Clear / if Mana >= x%", 50, 0, 99, true)); Vars.WMenu.Add(new MenuSliderButton("buildings", "Buildings / if Mana >= x%", 50, 0, 99, true)); } Vars.SpellsMenu.Add(Vars.WMenu); /// <summary> /// Sets the menu for the E. /// </summary> Vars.EMenu = new Menu("e", "Use E to:"); { Vars.EMenu.Add( new MenuSeparator( "separator", "It has to be used in conjunction with Evade, else it will not shield Skillshots")); Vars.EMenu.Add( new MenuSeparator( "separator2", "It is meant to shield what Evade doesn't support, like targetted spells.")); Vars.EMenu.Add(new MenuBool("logical", "Logical", true)); Vars.EMenu.Add(new MenuSlider("delay", "E Delay (ms)", 0, 0, 250)); { /// <summary> /// Sets the menu for the E Whitelist. /// </summary> Vars.WhiteListMenu = new Menu("whitelist", "Shield: Whitelist Menu", true); { Vars.WhiteListMenu.Add(new MenuBool("minions", "Shield: Dragon's Attacks", true)); foreach (var enemy in GameObjects.EnemyHeroes) { if (enemy.ChampionName.Equals("Alistar")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.pulverize", $"Shield: {enemy.ChampionName}'s Q", true)); } if (enemy.ChampionName.Equals("Braum")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.braumbasicattackpassiveoverride", $"Shield: {enemy.ChampionName}'s Passive", true)); } if (enemy.ChampionName.Equals("Jax")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.jaxcounterstrike", $"Shield: {enemy.ChampionName}'s E", true)); } if (enemy.ChampionName.Equals("KogMaw")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.kogmawicathiansurprise", $"Shield: {enemy.ChampionName}'s Passive", true)); } if (enemy.ChampionName.Equals("Udyr")) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.udyrbearattack", $"Shield: {enemy.ChampionName}'s E", true)); } foreach (var spell in SpellDatabase.Get() .Where( s => !s.SpellName.Equals("KatarinaE") && !s.SpellName.Equals("TalonCutthroat") && s.ChampionName.Equals(enemy.ChampionName))) { if (enemy.IsMelee && spell.CastType != null && spell.CastType.Contains(CastType.Activate) && spell.SpellType.HasFlag(SpellType.Activated) && AutoAttack.IsAutoAttackReset(spell.SpellName) || spell.CastType != null && spell.CastType.Contains(CastType.EnemyChampions) && (spell.SpellType.HasFlag(SpellType.Targeted) || spell.SpellType.HasFlag(SpellType.TargetedMissile))) { Vars.WhiteListMenu.Add( new MenuBool( $"{enemy.ChampionName.ToLower()}.{spell.SpellName.ToLower()}", $"Shield: {enemy.ChampionName}'s {(enemy.ChampionName.Equals("TwistedFate") ? spell.MissileSpellName : spell.Slot.ToString())}", true)); } } } } Vars.EMenu.Add(Vars.WhiteListMenu); } } Vars.SpellsMenu.Add(Vars.EMenu); } Vars.Menu.Add(Vars.SpellsMenu); /// <summary> /// Sets the drawings menu. /// </summary> Vars.DrawingsMenu = new Menu("drawings", "Drawings"); { Vars.DrawingsMenu.Add(new MenuBool("q", "Q Range")); } Vars.Menu.Add(Vars.DrawingsMenu); }
/// <summary> /// Called while processing Spellcasting operations. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs" /> instance containing the event data.</param> public static void AutoShield(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender.IsMe || Invulnerable.Check(GameObjects.Player, DamageType.True, false)) { return; } /// <summary> /// Block Traps. /// </summary> if (ObjectManager.Get <Obj_AI_Minion>().Any( m => m.Distance(GameObjects.Player) < 175 && m.CharData.BaseSkinName.Equals("caitlyntrap"))) { Vars.E.Cast(); return; } if (args.Target == null || !sender.LSIsValidTarget()) { return; } /// <summary> /// Block Dragon's AutoAttacks. /// </summary> if (args.Target.IsMe && sender is Obj_AI_Minion) { if (sender.CharData.BaseSkinName.Equals("SRU_Baron") || sender.CharData.BaseSkinName.Contains("SRU_Dragon") || sender.CharData.BaseSkinName.Equals("SRU_RiftHerald")) { Vars.E.Cast(); } } else if (sender.IsEnemy && sender is AIHeroClient) { /// <summary> /// Block Gangplank's Barrels. /// </summary> if ((sender as AIHeroClient).ChampionName.Equals("Gangplank")) { if (AutoAttack.IsAutoAttack(args.SData.Name) || args.SData.Name.Equals("GangplankQProceed")) { if ((args.Target as Obj_AI_Minion).Health == 1 && (args.Target as Obj_AI_Minion).CharData.BaseSkinName.Equals("gangplankbarrel")) { if (GameObjects.Player.Distance(args.Target) < 450) { Vars.E.Cast(); } } } else if (args.SData.Name.Equals("GangplankEBarrelFuseMissile")) { if (GameObjects.Player.Distance(args.End) < 450) { Vars.E.Cast(); } } } if (!args.Target.IsMe) { return; } if (args.SData.Name.Equals("KatarinaE") || args.SData.Name.Equals("SummonerDot") || args.SData.Name.Equals("TalonCutthroat") || args.SData.Name.Equals("HextechGunblade") || args.SData.Name.Equals("BilgewaterCutlass") || args.SData.Name.Equals("ItemSwordOfFeastAndFamine")) { return; } switch (args.SData.TargettingType) { /// <summary> /// Special check for the AutoAttacks. /// </summary> case SpellDataTargetType.Unit: case SpellDataTargetType.Self: case SpellDataTargetType.LocationAoe: if (args.SData.Name.Equals("GangplankE") || args.SData.Name.Equals("TrundleCircle") || args.SData.Name.Equals("TormentedSoil") || args.SData.Name.Equals("SwainDecrepify") || args.SData.Name.Equals("MissFortuneScattershot") || args.SData.Name.Equals("OrianaDissonanceCommand")) { break; } if (AutoAttack.IsAutoAttack(args.SData.Name)) { if (!sender.IsMelee) { if (args.SData.Name.Contains("Card")) { Vars.E.Cast(); } } else { if (args.SData.Name.Equals("PowerFistAttack") || sender.Buffs.Any(b => AutoAttack.IsAutoAttackReset(args.SData.Name))) { Vars.E.Cast(); } } } else { DelayAction.Add( sender.CharData.BaseSkinName.Equals("Zed") ? 200 : sender.CharData.BaseSkinName.Equals("Caitlyn") ? 1000 : sender.CharData.BaseSkinName.Equals("Nocturne") && args.SData.Name.Equals("NocturneUnspeakableHorror") ? 500 : Vars.getSliderItem(Vars.EMenu, "delay"), () => { Vars.E.Cast(); } ); } break; default: break; } } }
/// <summary> /// Called while processing Spellcasting operations. /// </summary> /// <param name="sender">The sender.</param> /// <param name="args">The <see cref="GameObjectProcessSpellCastEventArgs" /> instance containing the event data.</param> public static void AutoShield(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args) { if (sender == null || !sender.IsEnemy) { return; } switch (sender.Type) { case GameObjectType.AIHeroClient: if (Invulnerable.Check(GameObjects.Player, DamageType.True, false)) { return; } /// <summary> /// Block Gangplank's Barrels 1st Part. /// </summary> if ((sender as AIHeroClient).ChampionName.Equals("Gangplank")) { if (args.Target == null || !(args.Target is Obj_AI_Minion)) { return; } if (AutoAttack.IsAutoAttack(args.SData.Name) || args.SData.Name.Equals("GangplankQProceed")) { if ((args.Target as Obj_AI_Minion).Health == 1 && (args.Target as Obj_AI_Minion).DistanceToPlayer() < 450 && (args.Target as Obj_AI_Minion).CharData.BaseSkinName.Equals("gangplankbarrel")) { Vars.E.Cast(); } } } /// <summary> /// Block Gangplank's Barrels 2nd Part. /// </summary> else if (GameObjects.Player.Distance(args.End) < 450 && args.SData.Name.Equals("GangplankEBarrelFuseMissile")) { Vars.E.Cast(); } /// <summary> /// Check for Special On-Hit CC AutoAttacks & Melee AutoAttack Resets. /// </summary> if (AutoAttack.IsAutoAttack(args.SData.Name)) { if (!args.Target.IsMe) { return; } switch (args.SData.Name) { case "UdyrBearAttack": case "BraumBasicAttackPassiveOverride": /// <summary> /// Whitelist Block. /// </summary> if (Vars.WhiteListMenu[$"{(sender as AIHeroClient).ChampionName.ToLower()}.{args.SData.Name.ToLower()}"] == null || !Vars.getCheckBoxItem(Vars.WhiteListMenu, $"{(sender as AIHeroClient).ChampionName.ToLower()}.{args.SData.Name.ToLower()}")) { return; } if (GameObjects.Player.HasBuff("udyrbearstuncheck") && (sender as AIHeroClient).ChampionName.Equals("Udyr")) { return; } Vars.E.Cast(); break; default: if (!(sender as AIHeroClient).Buffs.Any(b => AutoAttack.IsAutoAttackReset(b.Name)) || Vars.WhiteListMenu[$"{(sender as AIHeroClient).ChampionName.ToLower()}.{(sender as AIHeroClient).Buffs.First(b => AutoAttack.IsAutoAttackReset(b.Name)).Name.ToLower()}"] == null || !Vars.getCheckBoxItem(Vars.WhiteListMenu, $"{(sender as AIHeroClient).ChampionName.ToLower()}.{(sender as AIHeroClient).Buffs.First(b => AutoAttack.IsAutoAttackReset(b.Name)).Name.ToLower()}")) { return; } Vars.E.Cast(); break; } } /// <summary> /// Shield all the Targetted Spells. /// </summary> else if (SpellDatabase.GetByName(args.SData.Name) != null) { /// <summary> /// Whitelist Block. /// </summary> if (Vars.WhiteListMenu[$"{(sender as AIHeroClient).ChampionName.ToLower()}.{args.SData.Name.ToLower()}"] == null || !Vars.getCheckBoxItem(Vars.WhiteListMenu, $"{(sender as AIHeroClient).ChampionName.ToLower()}.{args.SData.Name.ToLower()}")) { return; } switch (SpellDatabase.GetByName(args.SData.Name).SpellType) { /// <summary> /// Check for Targetted Spells. /// </summary> case SpellType.Targeted: case SpellType.TargetedMissile: if (!args.Target.IsMe || !SpellDatabase.GetByName(args.SData.Name).CastType.Contains(CastType.EnemyChampions)) { return; } switch ((sender as AIHeroClient).ChampionName) { case "Caitlyn": DelayAction.Add(1050, () => { Vars.E.Cast(); }); break; case "Nocturne": DelayAction.Add(350, () => { Vars.E.Cast(); }); break; case "Zed": DelayAction.Add(200, () => { Vars.E.Cast(); }); break; default: DelayAction.Add(Vars.getSliderItem(Vars.EMenu, "delay"), () => { Vars.E.Cast(); }); break; } break; /// <summary> /// Check for AoE Spells. /// </summary> case SpellType.SkillshotCircle: switch ((sender as AIHeroClient).ChampionName) { case "Alistar": if ((sender as AIHeroClient).DistanceToPlayer() < 355 + GameObjects.Player.BoundingRadius) { Vars.E.Cast(); } break; default: break; } break; default: break; } break; } break; case GameObjectType.obj_AI_Minion: if (args.Target == null || !args.Target.IsMe) { return; } /// <summary> /// Block Dragon/Baron/RiftHerald's AutoAttacks. /// </summary> if (Vars.getCheckBoxItem(Vars.WhiteListMenu, "minions")) { if (sender.CharData.BaseSkinName.Equals("SRU_Baron") || sender.CharData.BaseSkinName.Contains("SRU_Dragon") || sender.CharData.BaseSkinName.Equals("SRU_RiftHerald")) { Vars.E.Cast(); } } break; default: break; } }