Exemplo n.º 1
0
 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();
 }
Exemplo n.º 2
0
        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;
                    }
                }
            }
        }
Exemplo n.º 3
0
        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);
                }
            }
        }