Example #1
0
 private static bool ShouldDetonate(Hero _Enemy, Vector3 _Pos)
 {
     foreach (BombStack bombStack in Core.Config._BombStacks)
     {
         BombStack _Stack = bombStack;
         if (!TargetChecker.CheckPos(_Enemy, _Stack))
         {
             return(false);
         }
         if (_Stack.DetonateOnHeroes == 1)
         {
             List <RemoteBomb> list = Core.Config._RemoteBombs.Where <RemoteBomb>((Func <RemoteBomb, bool>)(x =>
             {
                 if (x.IsHit(_Pos))
                 {
                     return((double)x._Unit.Distance2D(_Stack._Unit, false) <= 100.0);
                 }
                 return(false);
             })).OrderBy <RemoteBomb, float>((Func <RemoteBomb, float>)(x => x._Unit.CreateTime)).ToList <RemoteBomb>();
             int kill = DamageManager.NeedToKill(_Enemy, list);
             if (list.Count >= kill)
             {
                 return(true);
             }
         }
         else
         {
             int num = 0;
             Core.Config._RemoteBombs.Where <RemoteBomb>((Func <RemoteBomb, bool>)(x => (double)x._Unit.Distance2D(_Stack._Unit, false) <= 100.0)).OrderBy <RemoteBomb, float>((Func <RemoteBomb, float>)(x => x._Unit.CreateTime));
             foreach (Hero _Enemy1 in EntityManager <Hero> .Entities.Where <Hero>((Func <Hero, bool>)(x =>
             {
                 if (x.Team != Core.Config._Hero.Team && !x.IsIllusion && TargetChecker.ForcePreCheck(x))
                 {
                     return(TargetChecker.CheckPos(x, _Stack));
                 }
                 return(false);
             })))
             {
                 List <RemoteBomb> list = Core.Config._RemoteBombs.Where <RemoteBomb>((Func <RemoteBomb, bool>)(x =>
                 {
                     if (x.IsHit(_Pos))
                     {
                         return((double)x._Unit.Distance2D(_Stack._Unit, false) <= 100.0);
                     }
                     return(false);
                 })).OrderBy <RemoteBomb, float>((Func <RemoteBomb, float>)(x => x._Unit.CreateTime)).ToList <RemoteBomb>();
                 List <RemoteBomb> _Bombs = list;
                 int kill = DamageManager.NeedToKill(_Enemy1, _Bombs);
                 if (list.Count >= kill)
                 {
                     ++num;
                 }
             }
             if (num >= _Stack.DetonateOnHeroes)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Example #2
0
 public static void OnUpdate()
 {
     if (Core.Config._Items.Force == null || !Core.Config._Items.Force.CanBeCasted)
     {
         return;
     }
     foreach (Hero hero in EntityManager <Hero> .Entities.Where <Hero>((Func <Hero, bool>)(x =>
     {
         if (x.Team != Core.Config._Hero.Team && !x.IsIllusion)
         {
             return(TargetChecker.ForcePreCheck(x));
         }
         return(false);
     })))
     {
         Vector3 _Pos = hero.InFront(600f);
         if (hero.IsLinkensProtected())
         {
             if (Core.Config._Items.Hex != null && Core.Config._Items.Hex.IsReady && (double)Core.Config._Items.Hex.CastRange >= (double)Core.Config._Hero.Distance2D((Unit)hero, false))
             {
                 if (ForceLogic.ShouldDetonate(hero, _Pos) || ForceLogic.ShouldDetonateLand(hero, _Pos) || ForceLogic.ShouldDetonateCross(hero, _Pos))
                 {
                     Core.Config._Items.Hex.UseAbility((Unit)hero);
                     break;
                 }
             }
             else if (Core.Config._Items.Eul != null && Core.Config._Items.Eul.IsReady && (double)Core.Config._Items.Eul.CastRange >= (double)Core.Config._Hero.Distance2D((Unit)hero, false))
             {
                 if (ForceLogic.ShouldDetonate(hero, _Pos) || ForceLogic.ShouldDetonateLand(hero, _Pos) || ForceLogic.ShouldDetonateCross(hero, _Pos))
                 {
                     Core.Config._Items.Eul.UseAbility((Unit)hero);
                     break;
                 }
             }
             else if (Core.Config._Items.Salo != null && Core.Config._Items.Salo.IsReady && (double)Core.Config._Items.Salo.CastRange >= (double)Core.Config._Hero.Distance2D((Unit)hero, false))
             {
                 if (ForceLogic.ShouldDetonate(hero, _Pos) || ForceLogic.ShouldDetonateLand(hero, _Pos) || ForceLogic.ShouldDetonateCross(hero, _Pos))
                 {
                     Core.Config._Items.Salo.UseAbility((Unit)hero);
                     break;
                 }
             }
             else if (Core.Config._Items.Salo2 != null && Core.Config._Items.Salo2.IsReady && (double)Core.Config._Items.Salo2.CastRange >= (double)Core.Config._Hero.Distance2D((Unit)hero, false))
             {
                 if (ForceLogic.ShouldDetonate(hero, _Pos) || ForceLogic.ShouldDetonateLand(hero, _Pos) || ForceLogic.ShouldDetonateCross(hero, _Pos))
                 {
                     Core.Config._Items.Salo2.UseAbility((Unit)hero);
                     break;
                 }
             }
             else if (Core.Config._Items.Etherial != null && Core.Config._Items.Etherial.IsReady && (double)Core.Config._Items.Etherial.CastRange >= (double)Core.Config._Hero.Distance2D((Unit)hero, false))
             {
                 if (ForceLogic.ShouldDetonate(hero, _Pos) || ForceLogic.ShouldDetonateLand(hero, _Pos) || ForceLogic.ShouldDetonateCross(hero, _Pos))
                 {
                     Core.Config._Items.Etherial.UseAbility((Unit)hero);
                     break;
                 }
             }
             else
             {
                 Item dagon = DagonManager.GetDagon();
                 if ((Entity)dagon != (Entity)null && (double)dagon.Cooldown == 0.0 && (double)dagon.CastRange >= (double)Core.Config._Hero.Distance2D((Unit)hero, false) && (ForceLogic.ShouldDetonate(hero, _Pos) || ForceLogic.ShouldDetonateLand(hero, _Pos) || ForceLogic.ShouldDetonateCross(hero, _Pos)))
                 {
                     Core.Config._Items.Dagon1.UseAbility((Unit)hero);
                     break;
                 }
             }
         }
         else if (ForceLogic.ShouldDetonate(hero, _Pos) || ForceLogic.ShouldDetonateLand(hero, _Pos) || ForceLogic.ShouldDetonateCross(hero, _Pos))
         {
             Core.Config._Items.Force.UseAbility((Unit)hero);
             break;
         }
     }
 }