public AutoPushing() { if (ObjectManager.LocalHero.Team == Team.Radiant) { BotLane = new Lane("Bot", _radiantBotLanes); MidLane = new Lane("Mid", _radiantMidLanes); TopLane = new Lane("Top", _radiantTopLanes); } else { _radiantBotLanes.Reverse(); _radiantMidLanes.Reverse(); _radiantTopLanes.Reverse(); BotLane = new Lane("Bot", _radiantBotLanes); MidLane = new Lane("Mid", _radiantMidLanes); TopLane = new Lane("Top", _radiantTopLanes); } _sleeper = new Sleeper(); }
public override void Execute() { if (Core.TempestHero != null && Core.TempestHero.IsAlive) { if (Core.TempestHero.Orbwalker.GetTarget() == null) { ClosestLane = GetClosestLane(); var lastPoint = ClosestLane.Points[ClosestLane.Points.Count - 1]; ClosestLane.ClosestPosition = ClosestLane.Points.Where( x => x.Distance2D(lastPoint) < Core.TempestHero.Hero.Position.Distance2D(lastPoint) - 300) .OrderBy(CheckForDist) .FirstOrDefault(); if (ClosestLane.ClosestPosition != null && !ClosestLane.ClosestPosition.IsZero) { if (MenuManager.UseTravels) { var travels = Core.TempestHero.Hero.GetItemById(AbilityId.item_travel_boots) ?? Core.TempestHero.Hero.GetItemById(AbilityId.item_travel_boots_2); if (travels != null && travels.CanBeCasted() && !_sleeper.Sleeping) { var temp = ClosestLane.Points.ToList(); temp.Reverse(); var enemyCreeps = CreepManager.GetCreepManager() .GetCreeps.Where(x => x.Team != ObjectManager.LocalHero.Team); Creep creepForTravels = null; foreach (var v in temp) { creepForTravels = CreepManager.GetCreepManager() .GetCreeps.FirstOrDefault( y => y.IsValid && y.HealthPercent() > 0.75 && v.IsInRange(y.Position, 1500) && y.Team == ObjectManager.LocalHero.Team && enemyCreeps.Any(z => z.IsInRange(y, 1500))); if (creepForTravels != null) { break; } } if (creepForTravels != null && creepForTravels.Distance2D(Core.TempestHero.Hero) > 1500) { travels.UseAbility(creepForTravels); _sleeper.Sleep(500); } } } if (_sleeper.Sleeping) { return; } _sleeper.Sleep(250); Core.TempestHero.Hero.Move(ClosestLane.ClosestPosition); ClosestPosition = ClosestLane.ClosestPosition; } } else if (!_sleeper.Sleeping) { if (Core.TempestHero.Spark.CanBeCasted()) { Core.TempestHero.Spark.UseAbility(Core.TempestHero.Orbwalker.GetTarget().Position); _sleeper.Sleep(500); } var mjol = Core.TempestHero.Hero.GetItemById(ItemId.item_mjollnir); if (mjol != null && mjol.CanBeCasted()) { var allyCreep = CreepManager.GetCreepManager() .GetCreeps .FirstOrDefault( x => x.Team == ObjectManager.LocalHero.Team && x.IsInRange(Core.TempestHero.Hero, 500) && x.HealthPercent() <= 0.92 && x.IsMelee); if (allyCreep != null) { mjol.UseAbility(allyCreep); _sleeper.Sleep(500); } } if (Core.TempestHero.Orbwalker.GetTarget() is Tower) { var field = Core.TempestHero.MagneticField; if (field.CanBeCasted()) { var pos = (Core.TempestHero.Orbwalker.GetTarget().NetworkPosition - Core.TempestHero.Hero.NetworkPosition).Normalized(); pos *= (280 + 150); pos = Core.TempestHero.Orbwalker.GetTarget().NetworkPosition - pos; field.UseAbility(pos); _sleeper.Sleep(1000); } } } if (MenuManager.AutoPushingTargetting) { var enemyHero = Heroes.GetByTeam(ObjectManager.LocalHero.GetEnemyTeam()) .FirstOrDefault(x => Core.TempestHero.Hero.IsValidOrbwalkingTarget(x)); if (enemyHero != null) { //OrderManager.ChangeOrder(OrderManager.Orders.SparkSpamTempest); Core.Target = enemyHero; MenuManager.TempestCombo.SetValue(new KeyBind(MenuManager.TempestCombo.GetValue <KeyBind>().Key, KeyBindType.Toggle, true)); Core.Target = enemyHero; } } } }
public override void Execute() { if (Core.TempestHero != null && Core.TempestHero.Hero.IsAlive) { if (_sleeper.Sleeping) { return; } if (Core.TempestHero.Orbwalker.GetTarget() == null || Core.TempestHero.Orbwalker.GetTarget().Position.IsZero) { ClosestLane = GetClosestLane(Core.TempestHero.Hero); var lastPoint = ClosestLane.Points[ClosestLane.Points.Count - 1]; ClosestLane.ClosestPosition = ClosestLane.Points.Where( x => x.Distance2D(lastPoint) < Core.TempestHero.Hero.Position.Distance2D(lastPoint) - 300) .OrderBy(pos => CheckForDist(pos, Core.TempestHero.Hero)) .FirstOrDefault(); if (ClosestLane.ClosestPosition != null && !ClosestLane.ClosestPosition.IsZero) { if (MenuManager.UseTravels) { var travels = Core.TempestHero.Hero.GetItemById(AbilityId.item_travel_boots) ?? Core.TempestHero.Hero.GetItemById(AbilityId.item_travel_boots_2); if (travels != null && travels.CanBeCasted() && !_sleeper.Sleeping) { var temp = ClosestLane.Points.ToList(); temp.Reverse(); var enemyCreeps = EntityManager <Creep> .Entities.Where(x => x.IsValid && x.IsVisible && x.IsAlive && x.Team != ObjectManager.LocalHero.Team); Creep creepForTravels = null; foreach (var point in temp) { creepForTravels = EntityManager <Creep> .Entities.FirstOrDefault( allyCreep => allyCreep.IsValid && allyCreep.IsAlive && allyCreep.Team == ObjectManager.LocalHero.Team && allyCreep.HealthPercent() > 0.75 && point.IsInRange(allyCreep.Position, 1500) && enemyCreeps.Any(z => z.IsInRange(allyCreep, 1500))); if (creepForTravels != null) { break; } } if (creepForTravels != null && creepForTravels.Distance2D(Core.TempestHero.Hero) > 1500) { travels.UseAbility(creepForTravels); _sleeper.Sleep(500); } } } Core.TempestHero.Hero.Move(ClosestLane.ClosestPosition); try { foreach (var illusion in IllusionManager.GetIllusions) { illusion.Hero.Move(ClosestLane.ClosestPosition); } foreach (var necro in NecronomiconManager.GetNecronomicons) { necro.Necr.Move(ClosestLane.ClosestPosition); } } catch (Exception e) { Printer.Both("kek " + e.Message); } ClosestPosition = ClosestLane.ClosestPosition; } } else if (!_sleeper.Sleeping) { if (Core.TempestHero.Spark.CanBeCasted()) { var target = Core.TempestHero.Orbwalker.GetTarget(); if (target != null) { Printer.Log($"[AutoPushing][Spark][{target.Name}]->{target.Position.PrintVector()}", true); Core.TempestHero.Spark.UseAbility(target.Position); _sleeper.Sleep(500); } } var itemForPushing = Core.TempestHero.Hero.GetItemById(ItemId.item_mjollnir); if (itemForPushing != null && itemForPushing.CanBeCasted()) { var allyCreep = EntityManager <Creep> .Entities .FirstOrDefault( x => x.IsAlive && x.Team == ObjectManager.LocalHero.Team && x.IsInRange(Core.TempestHero.Hero, 500) && x.HealthPercent() <= 0.92 && x.IsMelee); if (allyCreep != null) { itemForPushing.UseAbility(allyCreep); _sleeper.Sleep(500); } } itemForPushing = Core.TempestHero.Hero.GetItemById(ItemId.item_manta); if (itemForPushing != null && itemForPushing.CanBeCasted()) { itemForPushing.UseAbility(); _sleeper.Sleep(500); } itemForPushing = Core.TempestHero.Hero.GetItemById(ItemId.item_necronomicon) ?? Core.TempestHero.Hero.GetItemById(ItemId.item_necronomicon_2) ?? Core.TempestHero.Hero.GetItemById(ItemId.item_necronomicon_3); if (itemForPushing != null && itemForPushing.CanBeCasted()) { itemForPushing.UseAbility(); _sleeper.Sleep(500); } if (Core.TempestHero.Orbwalker.GetTarget() is Tower) { var field = Core.TempestHero.MagneticField; if (field.CanBeCasted()) { var pos = (Core.TempestHero.Orbwalker.GetTarget().NetworkPosition - Core.TempestHero.Hero.NetworkPosition).Normalized(); pos *= (280 + 150); pos = Core.TempestHero.Orbwalker.GetTarget().NetworkPosition - pos; field.UseAbility(pos); _sleeper.Sleep(1000); } } } if (MenuManager.AutoPushingTargetting) { var enemyHero = Heroes.GetByTeam(ObjectManager.LocalHero.GetEnemyTeam()) .FirstOrDefault(x => Core.TempestHero.Hero.IsValidOrbwalkingTarget(x)); if (enemyHero != null) { //OrderManager.ChangeOrder(OrderManager.Orders.SparkSpamTempest); Core.Target = enemyHero; MenuManager.TempestCombo.SetValue(new KeyBind(MenuManager.TempestCombo.GetValue <KeyBind>().Key, KeyBindType.Toggle, true)); Core.Target = enemyHero; } } _sleeper.Sleep(250); } else { if (_sleeper.Sleeping) { return; } _sleeper.Sleep(400); foreach (var illusion in IllusionManager.GetIllusions.Where(x => x.Orbwalker.GetTarget() == null)) { ClosestLane = GetClosestLane(illusion.Hero); var pushPos = ClosestLane.Points.LastOrDefault(); illusion.Hero.Move(pushPos); } foreach (var necro in NecronomiconManager.GetNecronomicons.Where(x => x.Orbwalker.GetTarget() == null)) { ClosestLane = GetClosestLane(necro.Necr); var pushPos = ClosestLane.Points.LastOrDefault(); necro.Necr.Move(pushPos); } } }