private static void PanicE(AttackableUnit unit, AttackableUnit target) { if (unit.IsMe && target.GetType() == myHero.GetType()) { _PanicE((Obj_AI_Base)target, new Vector3(0f, 0f, 0f), true); } }
private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { if (R.IsReady() && Settings.Combo.UseR && (target.GetType() == typeof(AIHeroClient))) { if (Player.Instance.CountEnemiesInRangeCached(1000) < Settings.Combo.RIfEnemiesHit) { return; } var polygon = new Geometry.Polygon.Rectangle(Player.Instance.Position, Player.Instance.Position.Extend(args.Target, 850).To3D(), 65); var count = StaticCacheProvider.GetChampions(CachedEntityType.EnemyHero, x => !x.IsDead && x.IsValidTargetCached(950) && new Geometry.Polygon.Circle(x.Position, x.BoundingRadius).Points.Any( k => polygon.IsInside(k))).Count(); if (count >= Settings.Combo.RIfEnemiesHit) { Misc.PrintInfoMessage("Casting R because it can hit <font color=\"#ff1493\">" + count + "</font>. enemies"); R.Cast(); } } }
private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { IsPreAttack = true; if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) { var jungleMinions = StaticCacheProvider.GetMinions(CachedEntityType.Monsters, x => x.IsValidTargetCached(Player.Instance.GetAutoAttackRange())).ToList(); var laneMinions = StaticCacheProvider.GetMinions(CachedEntityType.EnemyMinion, x => x.IsValidTargetCached(Player.Instance.GetAutoAttackRange())).ToList(); if (jungleMinions.Any()) { if (Settings.LaneClear.UseQInJungleClear && Q.IsReady() && (GetAxesCount() == 0) && (Player.Instance.ManaPercent >= Settings.LaneClear.MinManaQ)) { Q.Cast(); } if (Settings.LaneClear.UseWInJungleClear && W.IsReady() && (jungleMinions.Count > 1) && !HasAttackSpeedFuryBuff && (Player.Instance.ManaPercent >= Settings.LaneClear.MinManaW)) { W.Cast(); } return; } if (laneMinions.Any() && Modes.LaneClear.CanILaneClear()) { if (Settings.LaneClear.UseQInLaneClear && Q.IsReady() && (GetAxesCount() == 0) && (Player.Instance.ManaPercent >= Settings.LaneClear.MinManaQ)) { Q.Cast(); } if (Settings.LaneClear.UseWInLaneClear && W.IsReady() && (laneMinions.Count > 3) && !HasAttackSpeedFuryBuff && (Player.Instance.ManaPercent >= Settings.LaneClear.MinManaW)) { W.Cast(); } return; } } if ((target.GetType() != typeof(AIHeroClient)) || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { return; } if (Q.IsReady() && (GetAxesCount() == 0)) { Q.Cast(); } if (!W.IsReady() || !Settings.Combo.UseW || HasAttackSpeedFuryBuff || (Player.Instance.Mana - 40 < 145)) { return; } W.Cast(); }
private static void EWhitelist() { Spell spell = E; AttackableUnit target = Orbwalker.GetTarget(); if (target != null && target.GetType() == typeof(AIHeroClient) && eSelector.GetValue <MenuBool>("eSelect" + ((AIHeroClient)target).CharacterName).Enabled&& spell.CanCast((AIHeroClient)target)) { spell.Cast((AIHeroClient)target); } }
private static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args) { if ((target?.GetType() != typeof(AIHeroClient)) || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { return; } if (Q.IsReady() && (GetAxesCount() != 0) && (GetAxesCount() < Settings.Combo.MaxAxesAmount)) { Q.Cast(); } }
private static void OnPostAttack(AttackableUnit target, EventArgs args) { if (target == null || !target.IsEnemy || target.GetType() != typeof(AIHeroClient)) { return; } switch (Orbwalker.ActiveModesFlags) { case Orbwalker.ActiveModes.Combo: if (_comboMenu["com.itwitch.combo.useW"].Cast <CheckBox>().CurrentValue&& W.IsReady()) { if (_miscMenu["com.itwitch.misc.saveManaE"].Cast <CheckBox>().CurrentValue&& ObjectManager.Player.Mana <= E.ManaCost + W.ManaCost) { return; } if (_miscMenu["com.itwitch.misc.noWTurret"].Cast <CheckBox>().CurrentValue&& ObjectManager.Player.IsUnderTurret()) { return; } var wTarget = TargetSelector.GetTarget(W.Range, DamageType.Physical); if (wTarget != null && wTarget.Health < ObjectManager.Player.GetAutoAttackDamage(wTarget, true) * _miscMenu["com.itwitch.misc.noWAA"].Cast <Slider>().CurrentValue) { return; } if (wTarget.IsValidTarget(W.Range) && !ObjectManager.Player.HasBuff("TwitchHideInShadows")) { var prediction = W.GetPrediction(wTarget); if (prediction.HitChance >= HitChance.High) { W.Cast(prediction.CastPosition); } } } break; } }
private static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args) { if (target == null || target.IsMe || target.GetType() != typeof(AIHeroClient) || !MenuManager.MenuValues["Activator.Enable"]) { return; } if ((MenuManager.MenuValues["Activator.ItemsMenu.OnlyInCombo"] && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) || !MenuManager.MenuValues["Activator.ItemsMenu.OnlyInCombo"]) { Items[ItemsEnum.ElixirofIron]?.UseItem(); Items[ItemsEnum.ElixirofSorcery]?.UseItem(); Items[ItemsEnum.ElixirofWrath]?.UseItem(); foreach (var enumValues in from enumValues in Enum.GetValues(typeof(ItemsEnum)).Cast <ItemsEnum>() where Items[enumValues] != null && Items[enumValues].ItemUsageWhen == ItemUsageWhen.AfterAttack && Items[enumValues].ItemType == ItemType.Offensive where (int)Player.Instance.HealthPercent <= MenuManager.MenuValues["Activator.ItemsMenu." + Items[enumValues].ItemName + ".MyMinHP", true] && (int)target.HealthPercent <= MenuManager.MenuValues[ "Activator.ItemsMenu." + Items[enumValues].ItemName + ".TargetsMinHP", true] && Player.Instance.Position.CountEnemiesInRangeCached(Player.Instance.GetAutoAttackRange() + 250) >= MenuManager.MenuValues[ "Activator.ItemsMenu." + Items[enumValues].ItemName + ".IfEnemiesNear", true] where Items[enumValues].ToItem().IsReady() && Items[enumValues].Range > 0 && Items[enumValues].ToItem().IsInRange(target as AIHeroClient) select enumValues) { Items[enumValues].ToItem().Cast(target as AIHeroClient); } } }
private static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args) { if (Q.IsReady() && Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo) && Settings.Combo.UseQ && (target?.GetType() == typeof(AIHeroClient)) && target.IsValidTargetCached(Player.Instance.GetAutoAttackRange() - 100) && (Player.Instance.Mana >= 130 + (R.IsReady() ? 100 : 0))) { Q.Cast(); } }
private static void Orbwalker_OnPreAttack(AttackableUnit target, Orbwalker.PreAttackArgs args) { if (Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.LaneClear)) { var jungleMinions = EntityManager.MinionsAndMonsters.GetJungleMonsters(Player.Instance.Position, Player.Instance.GetAutoAttackRange()).ToList(); var laneMinions = EntityManager.MinionsAndMonsters.GetLaneMinions(EntityManager.UnitTeam.Enemy, Player.Instance.Position, Player.Instance.GetAutoAttackRange()).ToList(); if (jungleMinions.Any()) { if (Settings.LaneClear.UseQInJungleClear && Q.IsReady() && GetAxesCount() == 0 && Player.Instance.ManaPercent >= Settings.LaneClear.MinManaQ) { Q.Cast(); } if (Settings.LaneClear.UseWInJungleClear && W.IsReady() && jungleMinions.Count > 1 && !HasAttackSpeedFuryBuff && Player.Instance.ManaPercent >= Settings.LaneClear.MinManaW) { W.Cast(); } return; } if (laneMinions.Any() && Modes.LaneClear.CanILaneClear()) { if (Settings.LaneClear.UseQInLaneClear && Q.IsReady() && GetAxesCount() == 0 && Player.Instance.ManaPercent >= Settings.LaneClear.MinManaQ) { Q.Cast(); } if (Settings.LaneClear.UseWInLaneClear && W.IsReady() && laneMinions.Count > 3 && !HasAttackSpeedFuryBuff && Player.Instance.ManaPercent >= Settings.LaneClear.MinManaW) { W.Cast(); } return; } } if (target.GetType() != typeof(AIHeroClient) || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { return; } if (Q.IsReady() && GetAxesCount() == 0) { Q.Cast(); } if (!W.IsReady() || !Settings.Combo.UseW || HasAttackSpeedFuryBuff || !(Player.Instance.Mana - 40 > 145)) { return; } var t = TargetSelector.GetTarget(Player.Instance.GetAutoAttackRange(), DamageType.Physical); if (t != null) { W.Cast(); } }
private static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args) { if (!Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo)) { return; } var hero = R.GetTarget(); if (hero != null && E.IsReady() && R.IsReady() && (Player.Instance.Mana - EMana - RMana > 0) && hero.CountEnemiesInRange(600) < 3 && !hero.HasUndyingBuffA() && (Player.Instance.HealthPercent > 40) && !hero.Position.IsVectorUnderEnemyTower()) { var damage = Damage.GetQDamage(hero, true) + Damage.GetWDamage(hero) + Damage.GetRDamage(hero, true) + Player.Instance.GetAutoAttackDamage(hero) * 2; if (hero.TotalHealthWithShields() > damage && hero.TotalHealthWithShields() > Player.Instance.GetAutoAttackDamage(hero)) { return; } DardochTrickTarget = hero; Core.DelayAction(() => { if (DardochTrickTarget == null) { return; } if (DardochTrickTarget.IsDead) { return; } var t = EntityManager.Heroes.Enemies.FirstOrDefault(x => x.NetworkId == DardochTrickTarget.NetworkId); if (t == null) { return; } var rPred = R.GetPrediction(t); if (rPred.HitChancePercent < 55) { return; } DardochTrick = true; R.Cast(rPred.CastPosition); }, 250 + Game.Ping / 2); } if (target.GetType() != typeof(AIHeroClient) || target.IsMe || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))//no idea why it invokes twice { return; } if (!E.IsReady() || !Settings.Combo.UseE || Settings.Misc.EUsageMode != 1 || DardochTrick || GetAmmoCount > 1) { return; } var heroClient = TargetSelector.GetTarget(Player.Instance.GetAutoAttackRange() + 425, DamageType.Physical); var position = Vector3.Zero; switch (Settings.Misc.EMode) { case 0: if (heroClient != null && Player.Instance.HealthPercent > 50 && heroClient.HealthPercent < 30 && heroClient.CountEnemiesInRange(600) < 2) { if (!Player.Instance.Position.Extend(Game.CursorPos, 420) .To3D() .IsVectorUnderEnemyTower() && (!heroClient.IsMelee || Player.Instance.Position.Extend(Game.CursorPos, 420) .IsInRange(heroClient, heroClient.GetAutoAttackRange() * 1.5f))) { Console.WriteLine("[DEBUG] 1v1 Game.CursorPos"); position = Game.CursorPos.Distance(Player.Instance) > E.Range ? Player.Instance.Position.Extend(Game.CursorPos, 420).To3D() : Game.CursorPos; } } else if (heroClient != null) { var closest = EntityManager.Heroes.Enemies.Where(x => x.IsValidTarget(1300)) .OrderBy(x => x.Distance(Player.Instance)).ToArray()[0]; var list = SafeSpotFinder.GetSafePosition(Player.Instance.Position.To2D(), 420, 1300, heroClient.IsMelee ? heroClient.GetAutoAttackRange() * 2 : heroClient.GetAutoAttackRange()) .Where( x => !x.Key.To3D().IsVectorUnderEnemyTower() && x.Key.IsInRange(Prediction.Position.PredictUnitPosition(closest, 850), Player.Instance.GetAutoAttackRange() - 50)) .Select(source => source.Key) .ToList(); if (list.Any()) { var paths = EntityManager.Heroes.Enemies.Where(x => x.IsValidTarget(1300)) .Select(x => x.Path) .Count(result => result != null && result.Last().Distance(Player.Instance) < 300); var asc = Misc.SortVectorsByDistance(list, heroClient.Position.To2D())[0].To3D(); if (Player.Instance.CountEnemiesInRange(Player.Instance.GetAutoAttackRange()) == 0 && !EntityManager.Heroes.Enemies.Where(x => x.Distance(Player.Instance) < 1000).Any( x => Prediction.Position.PredictUnitPosition(x, 800) .IsInRange(asc, x.IsMelee ? x.GetAutoAttackRange() * 2 : x.GetAutoAttackRange()))) { position = asc; Console.WriteLine("[DEBUG] Paths low sorting Ascending"); } else if (Player.Instance.CountEnemiesInRange(1000) <= 2 && (paths == 0 || paths == 1) && ((closest.Health < Player.Instance.GetAutoAttackDamage(closest, true) * 2) || (Orbwalker.LastTarget is AIHeroClient && Orbwalker.LastTarget.Health < Player.Instance.GetAutoAttackDamage(closest, true) * 2))) { position = asc; } else { position = Misc.SortVectorsByDistanceDescending(list, heroClient.Position.To2D())[0].To3D(); Console.WriteLine("[DEBUG] Paths high sorting Descending"); } } else { Console.WriteLine("[DEBUG] 1v1 not found positions..."); } } if (position != Vector3.Zero && EntityManager.Heroes.Enemies.Any(x => x.IsValidTarget(900))) { E.Cast(position); } break; case 1: var enemies = Player.Instance.CountEnemiesInRange(1300); var pos = Game.CursorPos.Distance(Player.Instance) > E.Range ? Player.Instance.Position.Extend(Game.CursorPos, 420).To3D() : Game.CursorPos; if (pos.IsVectorUnderEnemyTower()) { return; } if (heroClient == null) { return; } if (enemies == 1 && heroClient.HealthPercent + 15 < Player.Instance.HealthPercent) { if (heroClient.IsMelee && !pos.IsInRange(Prediction.Position.PredictUnitPosition(heroClient, 850), heroClient.GetAutoAttackRange() + 150)) { E.Cast(pos); return; } if (!heroClient.IsMelee) { E.Cast(pos); return; } } else if (enemies == 1 && !pos.IsInRange(Prediction.Position.PredictUnitPosition(heroClient, 850), heroClient.GetAutoAttackRange())) { E.Cast(pos); return; } else if (enemies == 2 && Player.Instance.CountAlliesInRange(850) >= 1) { E.Cast(pos); return; } else if (enemies >= 2) { if ( !EntityManager.Heroes.Enemies.Any( x => pos.IsInRange(Prediction.Position.PredictUnitPosition(x, 850), x.IsMelee ? x.GetAutoAttackRange() + 150 : x.GetAutoAttackRange()))) { E.Cast(pos); return; } } E.Cast(pos); break; default: return; } }
private static void Orbwalker_OnPostAttack(AttackableUnit target, EventArgs args) { if (target.GetType() != typeof(AIHeroClient) || target.IsMe || !Orbwalker.ActiveModesFlags.HasFlag(Orbwalker.ActiveModes.Combo))//no idea why it invokes twice { return; } if (!E.IsReady() || !Settings.Combo.UseE || Settings.Misc.EUsageMode != 1 || Settings.Combo.UseEOnlyToDardoch || GetAmmoCount > 1) { return; } var heroClient = TargetSelector.GetTarget(Player.Instance.GetAutoAttackRange() + 425, DamageType.Physical); var position = Vector3.Zero; if (heroClient == null) { return; } var dmg = Player.Instance.GetAutoAttackDamage(heroClient, true) * 2; if (Q.IsReady()) { dmg += Player.Instance.GetSpellDamage(heroClient, SpellSlot.Q); } if (W.IsReady()) { dmg += Player.Instance.GetSpellDamage(heroClient, SpellSlot.W); } if (R.IsReady()) { dmg += Player.Instance.GetSpellDamage(heroClient, SpellSlot.R); } if (!((dmg < heroClient.TotalHealthWithShields()) || (Q.IsReady() && W.IsReady()))) { return; } if (Settings.Misc.EMode == 0) { if (Player.Instance.HealthPercent > heroClient.HealthPercent + 5 && heroClient.CountEnemiesInRange(600) <= 2) { if (!Player.Instance.Position.Extend(Game.CursorPos, 420) .To3D() .IsVectorUnderEnemyTower() && (!heroClient.IsMelee || Player.Instance.Position.Extend(Game.CursorPos, 420) .IsInRange(heroClient, heroClient.GetAutoAttackRange() * 1.5f))) { Misc.PrintDebugMessage("1v1 Game.CursorPos"); position = Game.CursorPos.Distance(Player.Instance) > E.Range ? Player.Instance.Position.Extend(Game.CursorPos, 420).To3D() : Game.CursorPos; } } else { var closest = EntityManager.Heroes.Enemies.Where(x => x.IsValidTarget(1300)) .OrderBy(x => x.Distance(Player.Instance)).ToArray()[0]; var list = SafeSpotFinder.GetSafePosition(Player.Instance.Position.To2D(), 900, 1300, heroClient.IsMelee ? heroClient.GetAutoAttackRange() * 2 : heroClient.GetAutoAttackRange()) .Where( x => !x.Key.To3D().IsVectorUnderEnemyTower() && x.Key.IsInRange(Prediction.Position.PredictUnitPosition(closest, 850), Player.Instance.GetAutoAttackRange() - 50)) .Select(source => source.Key) .ToList(); if (list.Any()) { var paths = EntityManager.Heroes.Enemies.Where(x => x.IsValidTarget(1300)) .Select(x => x.Path) .Count(result => result != null && result.Last().Distance(Player.Instance) < 300); var asc = Misc.SortVectorsByDistance(list, heroClient.Position.To2D())[0].To3D(); if (Player.Instance.CountEnemiesInRange(Player.Instance.GetAutoAttackRange()) == 0 && !EntityManager.Heroes.Enemies.Where(x => x.Distance(Player.Instance) < 1000).Any( x => Prediction.Position.PredictUnitPosition(x, 800) .IsInRange(asc, x.IsMelee ? x.GetAutoAttackRange() * 2 : x.GetAutoAttackRange()))) { position = asc; Misc.PrintDebugMessage("Paths low sorting Ascending"); } else if (Player.Instance.CountEnemiesInRange(1000) <= 2 && (paths == 0 || paths == 1) && ((closest.Health < Player.Instance.GetAutoAttackDamage(closest, true) * 2) || (Orbwalker.LastTarget is AIHeroClient && Orbwalker.LastTarget.Health < Player.Instance.GetAutoAttackDamage(closest, true) * 2))) { position = asc; } else { position = Misc.SortVectorsByDistanceDescending(list, heroClient.Position.To2D())[0].To3D(); Misc.PrintDebugMessage("Paths high sorting Descending"); } } else { Misc.PrintDebugMessage("1v1 not found positions..."); } } if (position != Vector3.Zero && EntityManager.Heroes.Enemies.Any(x => x.IsValidTarget(900))) { E.Cast(position.Distance(Player.Instance) > E.Range ? Player.Instance.Position.Extend(position, E.Range).To3D() : position); } } else if (Settings.Misc.EMode == 1) { var enemies = Player.Instance.CountEnemiesInRange(1300); var pos = Game.CursorPos.Distance(Player.Instance) > E.Range ? Player.Instance.Position.Extend(Game.CursorPos, 420).To3D() : Game.CursorPos; if (!pos.IsVectorUnderEnemyTower()) { if (heroClient.IsMelee && !pos.IsInRange(Prediction.Position.PredictUnitPosition(heroClient, 850), heroClient.GetAutoAttackRange() + 150)) { E.Cast(pos); return; } if (!heroClient.IsMelee) { E.Cast(pos); } } else if (enemies == 2 && Player.Instance.CountAlliesInRange(850) >= 1) { E.Cast(pos); } else if (enemies >= 2) { if ( !EntityManager.Heroes.Enemies.Any( x => pos.IsInRange(Prediction.Position.PredictUnitPosition(x, 400), x.IsMelee ? x.GetAutoAttackRange() + 150 : x.GetAutoAttackRange()))) { E.Cast(pos); } } } }