public static List<Barrel> GetChainedBarrels(Barrel barrel) { var barrels = new List<Barrel> {barrel}; var currentBarrelId = barrel.NetworkId; while(true) { var barrelToAdd = Barrels.FirstOrDefault(x => !x.Object.IsDead && x.Object.Distance(barrel.Object) <= SpellManager.ChainRadius && x.NetworkId != currentBarrelId && !barrels.Contains(x)); if (barrelToAdd != null) { barrels.Add(barrelToAdd); currentBarrelId = barrelToAdd.NetworkId; } else break; } return barrels; }
public static Vector3 GetBestChainPosition(Obj_AI_Base target, Barrel barrel, bool usePred = true) { var input = SpellManager.E.GetPredictionInput(target); input.Delay *= 2.35f; var pred = Prediction.Instance.GetPrediction(input); if (MenuManager.Combo["castEMax"].Enabled && barrel.Object.Distance(pred.CastPosition) <= SpellManager.ChainRadius + SpellManager.ExplosionRadius) { var bestCastPos = barrel.ServerPosition.Extend(usePred ? pred.CastPosition : target.ServerPosition, SpellManager.ChainRadius - 5); return bestCastPos; } if (barrel.Object.Distance(pred.CastPosition) <= SpellManager.ChainRadius) { return usePred ? pred.CastPosition : target.ServerPosition; } if (barrel.Object.Distance(pred.CastPosition) <= SpellManager.ChainRadius + SpellManager.ExplosionRadius) { var bestCastPos = barrel.ServerPosition.Extend(usePred ? pred.CastPosition : target.ServerPosition, SpellManager.ChainRadius - 5); return bestCastPos; } return Vector3.Zero; }
public static Vector3 GetBestChainPosition(Obj_AI_Base target, Barrel barrel, bool usePred = true) { if (barrel.Object.Distance(target) <= SpellManager.ChainRadius) { if (usePred) { var pred = SpellManager.E.GetPrediction(target); if (pred.HitChance >= HitChance.High) { return(pred.UnitPosition); } } return(target.ServerPosition); } if (barrel.Object.Distance(target) <= SpellManager.ChainRadius + SpellManager.ExplosionRadius) { var pred = SpellManager.E.GetPrediction(target); var bestCastPos = barrel.ServerPosition.Extend(usePred && pred.HitChance >= HitChance.High ? pred.UnitPosition : target.ServerPosition, SpellManager.ChainRadius - 5); return(bestCastPos); } return(Vector3.Zero); }
public static bool BarrelWillHit(Barrel barrel, Vector3 position) { return barrel.Object.Distance(position) <= SpellManager.ExplosionRadius; }
public static bool BarrelWillHit(Barrel barrel, Obj_AI_Base target) { return barrel.Object.Distance(target) <= SpellManager.ExplosionRadius; }
public static List <Barrel> GetChainedBarrels(Barrel barrel) { return(Barrels.Where(x => !x.Object.IsDead && x.Object.Distance(barrel.Object) <= SpellManager.ChainRadius).ToList()); }
public static List <Obj_AI_Hero> GetEnemiesInChainRadius(Barrel barrel) { //Returns enemies within the barrel's chain radius, but outside of its explosion radius. return(GameObjects.EnemyHeroes.Where(x => x.IsValidTarget() && barrel.Object.Distance(x) <= SpellManager.ChainRadius + SpellManager.ExplosionRadius && barrel.Object.Distance(x) >= SpellManager.ExplosionRadius).ToList()); }