コード例 #1
0
 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;
 }
コード例 #2
0
        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;
        }
コード例 #3
0
        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);
        }
コード例 #4
0
 public static bool BarrelWillHit(Barrel barrel, Vector3 position)
 {
     return barrel.Object.Distance(position) <= SpellManager.ExplosionRadius;
 }
コード例 #5
0
 public static bool BarrelWillHit(Barrel barrel, Obj_AI_Base target)
 {
     return barrel.Object.Distance(target) <= SpellManager.ExplosionRadius;
 }
コード例 #6
0
 public static List <Barrel> GetChainedBarrels(Barrel barrel)
 {
     return(Barrels.Where(x => !x.Object.IsDead && x.Object.Distance(barrel.Object) <= SpellManager.ChainRadius).ToList());
 }
コード例 #7
0
 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());
 }