protected override void LaneClear() { if (!ResourceManager.Check("lane-clear")) { return; } var useQ = Menu.Item(Menu.Name + ".lane-clear.q").GetValue <bool>() && Q.IsReady(); var useE = Menu.Item(Menu.Name + ".lane-clear.e").GetValue <bool>() && E.IsReady(); if (!useQ && !useE) { return; } var minE = ItemData.Runaans_Hurricane_Ranged_Only.GetItem().IsOwned(Player) ? 3 : 2; var minQ = Menu.Item(Menu.Name + ".lane-clear.q-min").GetValue <Slider>().Value; var minions = MinionManager.GetMinions(Q.Range); if (minions.Count == 0) { return; } if (useQ && minions.Count >= minQ && !Player.IsWindingUp && !Player.IsDashing()) { foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x))) { var killcount = 0; foreach (var colminion in QGetCollisions(Player, Player.ServerPosition.Extend(minion.ServerPosition, Q.Range))) { if (colminion.Health <= Q.GetDamage(colminion)) { killcount++; } else { break; } } if (killcount >= minQ) { Q.Cast(minion.ServerPosition); break; } } } if (useE) { var killable = minions.Where(m => E.IsInRange(m) && Rend.IsKillable(m, false)).ToList(); if (killable.Count >= minE) { CastE(); } } }
protected override void JungleClear() { if (!ResourceManager.Check("jungle-clear")) { return; } var useQ = Menu.Item(Menu.Name + ".jungle-clear.q").GetValue <bool>() && Q.IsReady(); var useE = Menu.Item(Menu.Name + ".jungle-clear.e").GetValue <bool>() && E.IsReady(); if (!useQ && !useE) { return; } var minions = MinionManager.GetMinions( Q.Range, MinionTypes.All, MinionTeam.Neutral, MinionOrderTypes.MaxHealth); if (minions.Count == 0) { return; } if (useQ && minions.Count >= 1 && !Player.IsWindingUp && !Player.IsDashing()) { foreach (var minion in minions.Where(x => x.Health <= Q.GetDamage(x))) { var killcount = 0; foreach (var colminion in QGetCollisions(Player, Player.ServerPosition.Extend(minion.ServerPosition, Q.Range))) { if (colminion.Health <= Q.GetDamage(colminion)) { killcount++; } else { break; } } if (killcount >= 1) { Q.Cast(minion.ServerPosition); break; } } } if (useE) { var killable = minions.Where(m => E.IsInRange(m) && Rend.IsKillable(m, false)).ToList(); if (killable.Count >= 1) { CastE(); } } }
private void OnOrbwalkingNonKillableMinion(AttackableUnit unit) { try { if (Menu.Item(Menu.Name + ".lasthit.e-unkillable").GetValue <bool>() && E.IsReady() && ResourceManager.Check("lasthit")) { var target = unit as Obj_AI_Base; if (target != null && Rend.IsKillable(target, true)) { CastE(); } } } catch (Exception ex) { Global.Logger.AddItem(new LogItem(ex)); } }
protected override void Harass() { if (Menu.Item(Menu.Name + ".harass.q").GetValue <bool>() && Q.IsReady() && ResourceManager.Check("harass-q") && !Player.IsWindingUp && !Player.IsDashing()) { var target = TargetSelector.GetTarget(Q); if (target != null) { var prediction = Q.GetPrediction(target); if (prediction.Hitchance >= Q.GetHitChance("harass")) { Q.Cast(prediction.CastPosition); } else if (prediction.Hitchance == HitChance.Collision) { QCollisionCheck(target); } } } if (Menu.Item(Menu.Name + ".harass.e").GetValue <bool>() && E.IsReady() && ResourceManager.Check("harass-e")) { var target = TargetSelector.GetTarget(E, false); if (target != null && Rend.HasBuff(target)) { if (Rend.IsKillable(target, false)) { CastE(); } if (target.Distance(Player) > Orbwalking.GetRealAutoAttackRange(target)) { if ( GameObjects.EnemyMinions.Any( m => m.IsValidTarget(E.Range * 0.95f) && Rend.IsKillable(m, m.HealthPercent < 10))) { CastE(); } else { var dashObjects = GameObjects.EnemyMinions.Where( m => m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(m))).ToList(); var minion = dashObjects.FirstOrDefault( m => m.Health > Player.GetAutoAttackDamage(m) * 1.1f && m.Health < Player.GetAutoAttackDamage(m) + Rend.GetDamage(m, 1)); if (minion != null) { Orbwalker.ForceTarget(minion); if (Orbwalking.CanAttack()) { ObjectManager.Player.IssueOrder(GameObjectOrder.AttackUnit, minion); } } } } else if (E.IsInRange(target)) { if (Rend.IsKillable(target, false)) { CastE(); } else { var buff = Rend.GetBuff(target); if (buff != null && buff.Count >= Menu.Item(Menu.Name + ".harass.e-min").GetValue <Slider>().Value) { if (target.Distance(Player) > E.Range * 0.8 && !target.IsFacing(Player) || buff.EndTime - Game.Time < 0.3) { CastE(); } } } } } } }
protected override void OnPreUpdate() { if (E.IsReady()) { if (Menu.Item(Menu.Name + ".miscellaneous.e-death").GetValue <bool>()) { if (IncomingDamageManager.GetDamage(Player) > Player.Health && GameObjects.EnemyHeroes.Any(e => e.IsValidTarget(E.Range) && Rend.HasBuff(e))) { CastE(); } } var eBig = Menu.Item(Menu.Name + ".lasthit.e-big").GetValue <bool>(); var eJungle = Menu.Item(Menu.Name + ".lasthit.e-jungle").GetValue <bool>(); if (eBig || eJungle) { if (eJungle && Player.Level >= 3 || eBig) { var creeps = GameObjects.Jungle.Where(e => e.IsValidTarget(E.Range) && Rend.IsKillable(e, false)) .ToList(); if (eJungle && creeps.Any() || eBig && creeps.Any( m => m.CharData.BaseSkinName.StartsWith("SRU_Dragon") || m.CharData.BaseSkinName.StartsWith("SRU_Baron"))) { CastE(); return; } } } var eSiege = (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit) && Menu.Item(Menu.Name + ".lasthit.e-siege").GetValue <bool>(); var eTurret = (Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LaneClear || Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.LastHit) && Menu.Item(Menu.Name + ".lasthit.e-turret").GetValue <bool>(); var eReset = Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.None && Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Flee && Orbwalker.ActiveMode != Orbwalking.OrbwalkingMode.Combo && Menu.Item(Menu.Name + ".miscellaneous.e-reset").GetValue <bool>(); IEnumerable <Obj_AI_Minion> minions = new HashSet <Obj_AI_Minion>(); if (eSiege || eTurret || eReset) { minions = GameObjects.EnemyMinions.Where( e => e.IsValidTarget(E.Range) && Rend.IsKillable(e, e.HealthPercent < 25)); } if (ResourceManager.Check("lasthit")) { if (eSiege) { if ( minions.Any( m => m.CharData.BaseSkinName.Contains("MinionSiege") || m.CharData.BaseSkinName.Contains("Super"))) { CastE(); return; } } if (eTurret) { if (minions.Any(m => Utils.UnderAllyTurret(m.Position))) { CastE(); return; } } } if (eReset && minions.Any() && ResourceManager.Check("misc") && GameObjects.EnemyHeroes.Any(e => Rend.HasBuff(e) && e.IsValidTarget(E.Range))) { CastE(); return; } } if (ShouldSave()) { R.Cast(); } }
protected override void AddToMenu() { var ultimateMenu = Menu.AddSubMenu(new Menu("Ultimate", Menu.Name + ".ultimate")); var blitzMenu = ultimateMenu.AddSubMenu(new Menu("Blitzcrank", ultimateMenu.Name + ".blitzcrank")); HeroListManager.AddToMenu( blitzMenu.AddSubMenu(new Menu("Blacklist", blitzMenu.Name + ".blacklist")), new HeroListManagerArgs("blitzcrank") { IsWhitelist = false, Allies = false, Enemies = true, DefaultValue = false, EnabledButton = false }); blitzMenu.AddItem(new MenuItem(blitzMenu.Name + ".r", "Enabled").SetValue(true)); var tahmMenu = ultimateMenu.AddSubMenu(new Menu("Tahm Kench", ultimateMenu.Name + ".tahm-kench")); HeroListManager.AddToMenu( tahmMenu.AddSubMenu(new Menu("Blacklist", tahmMenu.Name + ".blacklist")), new HeroListManagerArgs("tahm-kench") { IsWhitelist = false, Allies = false, Enemies = true, DefaultValue = false, EnabledButton = false }); tahmMenu.AddItem(new MenuItem(tahmMenu.Name + ".r", "Enabled").SetValue(true)); ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".save", "Save Mode").SetValue( new StringList(new[] { "None", "Auto", "Min. Health %" }, 1))).ValueChanged += delegate(object sender, OnValueChangeEventArgs args) { Utils.UpdateVisibleTag(ultimateMenu, 1, args.GetNewValue <StringList>().SelectedIndex == 2); }; ultimateMenu.AddItem( new MenuItem(ultimateMenu.Name + ".save-health", "Min. Health %").SetValue(new Slider(10, 1, 50))) .SetTag(1); Utils.UpdateVisibleTag( ultimateMenu, 1, Menu.Item(Menu.Name + ".ultimate.save").GetValue <StringList>().SelectedIndex == 2); var comboMenu = Menu.AddSubMenu(new Menu("Combo", Menu.Name + ".combo")); HitchanceManager.AddToMenu( comboMenu.AddSubMenu(new Menu("Hitchance", comboMenu.Name + ".hitchance")), "combo", new Dictionary <string, HitChance> { { "Q", HitChance.VeryHigh } }); ResourceManager.AddToMenu( comboMenu, new ResourceManagerArgs( "combo-q", ResourceType.Mana, ResourceValueType.Percent, ResourceCheckType.Minimum) { Prefix = "Q", DefaultValue = 10 }); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".q", "Use Q").SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e", "Use E").SetValue(true)); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".e-min", "E Fleeing Min.").SetValue(new Slider(8, 1, 20))); comboMenu.AddItem(new MenuItem(comboMenu.Name + ".minions", "Attack Minions").SetValue(false)); var harassMenu = Menu.AddSubMenu(new Menu("Harass", Menu.Name + ".harass")); HitchanceManager.AddToMenu( harassMenu.AddSubMenu(new Menu("Hitchance", harassMenu.Name + ".hitchance")), "harass", new Dictionary <string, HitChance> { { "Q", HitChance.High } }); ResourceManager.AddToMenu( harassMenu, new ResourceManagerArgs( "harass-q", ResourceType.Mana, ResourceValueType.Percent, ResourceCheckType.Minimum) { Prefix = "Q", DefaultValue = 30 }); ResourceManager.AddToMenu( harassMenu, new ResourceManagerArgs( "harass-e", ResourceType.Mana, ResourceValueType.Percent, ResourceCheckType.Minimum) { Prefix = "E", DefaultValue = 30 }); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".q", "Use Q").SetValue(true)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e", "Use E").SetValue(true)); harassMenu.AddItem(new MenuItem(harassMenu.Name + ".e-min", "E Min.").SetValue(new Slider(4, 1, 20))); var laneClearMenu = Menu.AddSubMenu(new Menu("Lane Clear", Menu.Name + ".lane-clear")); ResourceManager.AddToMenu( laneClearMenu, new ResourceManagerArgs( "lane-clear", ResourceType.Mana, ResourceValueType.Percent, ResourceCheckType.Minimum) { Advanced = true, LevelRanges = new SortedList <int, int> { { 1, 6 }, { 6, 12 }, { 12, 18 } }, DefaultValues = new List <int> { 50, 30, 30 } }); laneClearMenu.AddItem(new MenuItem(laneClearMenu.Name + ".q", "Use Q").SetValue(true)); laneClearMenu.AddItem( new MenuItem(laneClearMenu.Name + ".q-min", "Q Min. Hits").SetValue(new Slider(3, 1, 5))); laneClearMenu.AddItem(new MenuItem(laneClearMenu.Name + ".e", "Use E").SetValue(true)); var jungleClearMenu = Menu.AddSubMenu(new Menu("Jungle Clear", Menu.Name + ".jungle-clear")); ResourceManager.AddToMenu( jungleClearMenu, new ResourceManagerArgs( "jungle-clear", ResourceType.Mana, ResourceValueType.Percent, ResourceCheckType.Minimum) { Advanced = true, LevelRanges = new SortedList <int, int> { { 1, 6 }, { 6, 12 }, { 12, 18 } }, DefaultValues = new List <int> { 30, 10, 10 } }); jungleClearMenu.AddItem(new MenuItem(jungleClearMenu.Name + ".q", "Use Q").SetValue(true)); jungleClearMenu.AddItem(new MenuItem(jungleClearMenu.Name + ".e", "Use E").SetValue(true)); var lasthitMenu = Menu.AddSubMenu(new Menu("Last Hit", Menu.Name + ".lasthit")); ResourceManager.AddToMenu( lasthitMenu, new ResourceManagerArgs( "lasthit", ResourceType.Mana, ResourceValueType.Percent, ResourceCheckType.Minimum) { Advanced = true, LevelRanges = new SortedList <int, int> { { 1, 6 }, { 6, 12 }, { 12, 18 } }, DefaultValues = new List <int> { 50, 30, 30 } }); lasthitMenu.AddItem(new MenuItem(lasthitMenu.Name + ".e-siege", "E Siege Minion").SetValue(true)); lasthitMenu.AddItem(new MenuItem(lasthitMenu.Name + ".e-unkillable", "E Unkillable").SetValue(true)); lasthitMenu.AddItem(new MenuItem(lasthitMenu.Name + ".e-turret", "E Under Turret").SetValue(true)); lasthitMenu.AddItem(new MenuItem(lasthitMenu.Name + ".separator", string.Empty)); lasthitMenu.AddItem(new MenuItem(lasthitMenu.Name + ".e-jungle", "E Jungle").SetValue(true)); lasthitMenu.AddItem(new MenuItem(lasthitMenu.Name + ".e-big", "E Dragon/Baron").SetValue(true)); var killstealMenu = Menu.AddSubMenu(new Menu("Killsteal", Menu.Name + ".killsteal")); killstealMenu.AddItem(new MenuItem(killstealMenu.Name + ".e", "Use E").SetValue(true)); var miscMenu = Menu.AddSubMenu(new Menu("Misc", Menu.Name + ".miscellaneous")); ResourceManager.AddToMenu( miscMenu, new ResourceManagerArgs("misc", ResourceType.Mana, ResourceValueType.Percent, ResourceCheckType.Minimum) { Prefix = "E", DefaultValue = 30 }); miscMenu.AddItem(new MenuItem(miscMenu.Name + ".e-reset", "E Harass Reset").SetValue(true)); miscMenu.AddItem(new MenuItem(miscMenu.Name + ".e-death", "E Before Death").SetValue(true)); miscMenu.AddItem( new MenuItem(miscMenu.Name + ".w-baron", "Hotkey W Baron").SetValue(new KeyBind('J', KeyBindType.Press))); miscMenu.AddItem( new MenuItem(miscMenu.Name + ".w-dragon", "Hotkey W Dragon").SetValue( new KeyBind('K', KeyBindType.Press))); IndicatorManager.AddToMenu(DrawingManager.Menu, true); IndicatorManager.Add(Q, true, false); IndicatorManager.Add(W, true, false); IndicatorManager.Add("E", Rend.GetDamage); IndicatorManager.Finale(); _ePercent = DrawingManager.Add("E Percent Damage", new Circle(false, Color.DodgerBlue)); var lowHealthWeight = TargetSelector.Weights.GetItem("low-health"); if (lowHealthWeight != null) { lowHealthWeight.ValueFunction = hero => hero.Health - Rend.GetDamage(hero); lowHealthWeight.Tooltip = "Low Health (Health - Rend Damage) = Higher Weight"; } TargetSelector.Weights.Register( new TargetSelector.Weights.Item( "w-stack", "W Stack", 10, false, hero => hero.HasBuff("kalistacoopstrikemarkally") ? 1 : 0, "Has W Debuff = Higher Weight")); }
protected override void Combo() { var useQ = Menu.Item(Menu.Name + ".combo.q").GetValue <bool>() && Q.IsReady() && ResourceManager.Check("combo-q"); var useE = Menu.Item(Menu.Name + ".combo.e").GetValue <bool>() && E.IsReady(); if (useQ && !Player.Spellbook.IsAutoAttacking && !Player.IsDashing()) { var target = TargetSelector.GetTarget(Q); if (target != null) { var prediction = Q.GetPrediction(target); if (prediction.Hitchance >= Q.GetHitChance("combo")) { Q.Cast(prediction.CastPosition); } else if (prediction.Hitchance == HitChance.Collision) { QCollisionCheck(target); } } } var dashObjects = new List <Obj_AI_Base>(); if (useE) { var target = TargetSelector.GetTarget(E, false); if (target != null && Rend.HasBuff(target)) { if (Rend.IsKillable(target, false)) { CastE(); } if (target.Distance(Player) > Orbwalking.GetRealAutoAttackRange(target)) { if ( GameObjects.EnemyMinions.Any( m => m.IsValidTarget(E.Range * 0.95f) && Rend.IsKillable(m, m.HealthPercent < 10))) { CastE(); } else { dashObjects = GameObjects.EnemyMinions.Where( m => m.IsValidTarget(Orbwalking.GetRealAutoAttackRange(m))) .Select(e => e as Obj_AI_Base) .ToList(); var minion = dashObjects.FirstOrDefault( m => m.Health > Player.GetAutoAttackDamage(m) * 1.1f && m.Health < Player.GetAutoAttackDamage(m) + Rend.GetDamage(m, 1)); if (minion != null) { Orbwalker.ForceTarget(minion); if (Orbwalking.CanAttack()) { EloBuddy.Player.IssueOrder(GameObjectOrder.AttackUnit, minion); } } } } else if (E.IsInRange(target)) { if (Rend.IsKillable(target, false)) { CastE(); } else { var buff = Rend.GetBuff(target); if (buff != null && buff.Count >= Menu.Item(Menu.Name + ".harass.e-min").GetValue <Slider>().Value) { if (target.Distance(Player) > E.Range * 0.8 && !target.IsFacing(Player) || buff.EndTime - Game.Time < 0.3) { CastE(); } } } } } } if (Menu.Item(Menu.Name + ".combo.minions").GetValue <bool>() && !Player.Spellbook.IsAutoAttacking && !Player.IsDashing() && !GameObjects.EnemyHeroes.Any( e => e.IsValidTarget() && e.Distance(Player) < Orbwalking.GetRealAutoAttackRange(e) * 1.1f)) { if (dashObjects.Count <= 0) { dashObjects = GetDashObjects().ToList(); } var minion = dashObjects.FirstOrDefault(); if (minion != null) { Orbwalker.ForceTarget(minion); if (Orbwalking.CanAttack()) { EloBuddy.Player.IssueOrder(GameObjectOrder.AttackUnit, minion); } } } else { Orbwalker.ForceTarget(null); } }