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); }
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; } } }