Example #1
0
        private static void Laneclearrange()
        {
            if (getSliderItem(MenuConfig.laneclear, "minmana") > Player.ManaPercent)
            {
                return;
            }
            var min =
                ObjectManager.Get <Obj_AI_Minion>()
                .Where(x => x.LSDistance(Player) < Q.Range - 200 && !x.IsDead && x.IsEnemy && x.IsTargetable);


            var objAiMinions = min as IList <Obj_AI_Minion> ?? min.ToList();

            foreach (var minions in objAiMinions)
            {
                minionscircle = new LeagueSharp.Common.Geometry.Polygon.Circle(minions.Position, 250);
            }

            var count = objAiMinions.Where(x => minionscircle.IsInside(x));

            if (count.Count() < getSliderItem(MenuConfig.laneclear, "minhitwq"))
            {
                return;
            }
            if (!Ismelee() && Q.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "useqlr"))
            {
                Q.Cast(minionscircle.Center);
            }
        }
Example #2
0
        private static void Laneclearmelee()
        {
            if (getSliderItem(MenuConfig.laneclear, "minmana") > Player.ManaPercent)
            {
                return;
            }
            if (!Ismelee())
            {
                return;
            }
            var min =
                ObjectManager.Get <Obj_AI_Minion>()
                .Where(x => x.LSDistance(Player) < 300 && !x.IsDead && x.IsEnemy).ToList();

            if (min.FirstOrDefault() == null)
            {
                minionscirclemelee = null;
                return;
            }



            foreach (var minions in min)
            {
                minionscirclemelee = new LeagueSharp.Common.Geometry.Polygon.Circle(minions.Position, 300);
                if (E.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "useelm"))
                {
                    if (minions.Health < EMeleeDamage(minions))
                    {
                        Em.Cast(minions);
                    }
                }
            }

            var count        = min.Where(x => minionscirclemelee.IsInside(x));
            var objAiMinions = count as IList <Obj_AI_Minion> ?? count.ToList();

            if (objAiMinions.Count() >= getSliderItem(MenuConfig.laneclear, "minhitwq"))
            {
                if (W.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "usewlm"))
                {
                    W.Cast();
                }

                if (Q.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "useqlm"))
                {
                    Qm.Cast(objAiMinions.FirstOrDefault());
                }
            }
        }
Example #3
0
 void Drawing_OnEndScene(EventArgs args)
 {
     if (_skillshot != null && Game.Time - drawTime <= 2)
     {
         _skillshot.Draw(Color.Blue, 2);
     }
     if (_skillshotAoe != null && Game.Time - drawTime <= 2)
     {
         _skillshotAoe.Draw(Color.Blue, 2);
     }
     if (Game.Time - drawTime > 2)
     {
         _skillshot    = null;
         _skillshotAoe = null;
     }
     if (Config.SubMenu("AutoCombo").Item("Draw").GetValue <bool>())
     {
         Render.Circle.DrawCircle(Player.Position, Config.SubMenu("AutoCombo").Item("Range").GetValue <Slider>().Value, Color.Red);
     }
 }
Example #4
0
        private Tuple <int, List <AIHeroClient> > GetHits(Vector3 fromCheck)
        {
            var hits      = new List <AIHeroClient>();
            var positions = new List <xSaliceResurrected_Rework.Utilities.Geometry.Position>();

            foreach (var t in HeroManager.Enemies.Where(x => x.Distance(fromCheck) <= 1500))
            {
                var prediction = xSaliceResurrected_Rework.Prediction.CommonPredEx.GetP(fromCheck, R, t, true);

                if (prediction.Hitchance >= HitChance.High)
                {
                    if (Util.IsStunned(t) || !Util.CanMove(t) ||
                        t.Distance(fromCheck) < R.Width * 0.75 ||
                        t.Distance(fromCheck) < R.Width &&
                        (fromCheck.Distance(_currentBallPosition) > 100))
                    {
                        positions.Add(new xSaliceResurrected_Rework.Utilities.Geometry.Position(t, prediction.UnitPosition));
                    }
                }
            }

            if (positions.Any())
            {
                var circle = new LeagueSharp.Common.Geometry.Polygon.Circle(fromCheck, R.Width);

                hits.AddRange(
                    from position in positions
                    where
                    !position.Hero.IsDashing() ||
                    (position.Hero.Distance(fromCheck) >= 100f &&
                     position.Hero.Position.Distance(fromCheck) >
                     position.Hero.GetDashInfo().EndPos.Distance(fromCheck) - 50f)
                    where circle.IsInside(position.UnitPosition)
                    select position.Hero);

                return(new Tuple <int, List <AIHeroClient> >(hits.Count, hits));
            }

            return(new Tuple <int, List <AIHeroClient> >(0, new List <AIHeroClient>()));
        }
Example #5
0
        private static int GetWHits(Obj_AI_Base target, List <Obj_AI_Base> targets = null)
        {
            if (targets != null && ComboMode == ComboMode.Mode2xW)
            {
                targets = targets.Where(t => t.LSIsValidTarget((W.Range + W.Width))).ToList();
                var pred = W.GetPrediction(target);
                if (pred.HitChance >= EloBuddy.SDK.Enumerations.HitChance.Medium)
                {
                    var circle = new LeagueSharp.Common.Geometry.Polygon.Circle(pred.UnitPosition, target.BoundingRadius + W.Width);
                    circle.Draw(System.Drawing.Color.Aqua, 5);

                    return(1 + (from t in targets.Where(x => x.NetworkId != target.NetworkId)
                                let pred2 = W.GetPrediction(t)
                                            where pred2.HitChance >= EloBuddy.SDK.Enumerations.HitChance.Medium
                                            select new LeagueSharp.Common.Geometry.Polygon.Circle(pred2.UnitPosition, t.BoundingRadius * 0.9f)).Count(
                               circle2 => circle2.Points.Any(p => circle.IsInside(p))));
                }
            }
            if (W.IsInRange(target))
            {
                return(1);
            }
            return(0);
        }
Example #6
0
        private static int GetWHits(Obj_AI_Base target, List<Obj_AI_Base> targets = null)
        {
            if (targets != null && ComboMode == ComboMode.Mode2xW)
            {
                targets = targets.Where(t => t.LSIsValidTarget((W.Range + W.Width))).ToList();
                var pred = W.GetPrediction(target);
                if (pred.Hitchance >= HitChance.Medium)
                {
                    var circle = new LeagueSharp.Common.Geometry.Polygon.Circle(pred.UnitPosition, target.BoundingRadius + W.Width);
                    circle.Draw(System.Drawing.Color.Aqua, 5);

                    return 1 + (from t in targets.Where(x => x.NetworkId != target.NetworkId)
                                let pred2 = W.GetPrediction(t)
                                where pred2.Hitchance >= HitChance.Medium
                                select new LeagueSharp.Common.Geometry.Polygon.Circle(pred2.UnitPosition, t.BoundingRadius * 0.9f)).Count(
                            circle2 => circle2.Points.Any(p => circle.IsInside(p)));
                }
            }
            if (W.IsInRange(target))
            {
                return 1;
            }
            return 0;
        }
Example #7
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (!MenuLocal.Item("Draw.Enable").GetValue <bool>())
            {
                return;
            }

            if (MenuLocal.Item(GetPcModeStringValue + "DrawBuffs").GetValue <bool>())
            {
                var passiveBuffs =
                    (from b in ObjectManager.Player.Buffs
                     join b1 in CommonBuffManager.BuffDatabase on b.Name equals b1.BuffName
                     select new { b, b1 }).Distinct();

                var i = 0;
                foreach (var buffName in passiveBuffs)
                {
                    if (buffName.b.EndTime >= Game.Time)
                    {
                        CommonGeometry.DrawBox(
                            new Vector2(ObjectManager.Player.HPBarPosition.X + 10,
                                        (i * 8) + ObjectManager.Player.HPBarPosition.Y + 32), 130, 6,
                            Color.FromArgb(100, 255, 200, 37), 1, Color.Black);

                        var buffTime = buffName.b.EndTime - buffName.b.StartTime;
                        CommonGeometry.DrawBox(
                            new Vector2(ObjectManager.Player.HPBarPosition.X + 11,
                                        (i * 8) + ObjectManager.Player.HPBarPosition.Y + 33),
                            (130 / buffTime) * (buffName.b.EndTime - Game.Time), 4, buffName.b1.Color, 1, buffName.b1.Color);

                        TimeSpan timeSpan = TimeSpan.FromSeconds(buffName.b.EndTime - Game.Time);
                        var      timer    = $"{timeSpan.Minutes:D2}:{timeSpan.Seconds:D2}";
                        CommonGeometry.DrawText(CommonGeometry.TextPassive, timer,
                                                ObjectManager.Player.HPBarPosition.X + 142,
                                                (i * 8) + ObjectManager.Player.HPBarPosition.Y + 29,
                                                SharpDX.Color.Wheat);
                        CommonGeometry.TextPassive.DrawTextLeft(buffName.b1.Caption,
                                                                (int)ObjectManager.Player.HPBarPosition.X + 8,
                                                                (int)((i * 8) + ObjectManager.Player.HPBarPosition.Y + 35), SharpDX.Color.Wheat);
                    }
                    i += 1;
                }
            }

            DrawSpells();
            DrawMinionLastHit();
            //KillableEnemy();
            DrawBuffs();

            //Render.Circle.DrawCircle(ObjectManager.Player.Position, W.Range, System.Drawing.Color.Red);

            return;

            var t = TargetSelector.GetTarget(W.Range * 3, TargetSelector.DamageType.Magical);

            if (t == null)
            {
                return;
            }

            if (t.IsValidTarget(W.Range))
            {
                return;
            }


            List <Vector2> xList = new List <Vector2>();

            var nLocation = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()) * W.Range;


            //if (CommonGeometry.IsWallBetween(nEvadePoint.To3D(), location.To3D()))
            //{
            //    Chat.Print("Wall");
            //}
            //else
            //{
            //    Chat.Print("Not Wall");
            //}



            Vector2 wCastPosition = nLocation;

            //Render.Circle.DrawCircle(wCastPosition.To3D(), 105f, System.Drawing.Color.Red);


            if (!wCastPosition.IsWall())
            {
                xList.Add(wCastPosition);
            }

            if (wCastPosition.IsWall())
            {
                for (int j = 20; j < 80; j += 20)
                {
                    Vector2 wcPositive = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(j * (float)Math.PI / 180) * W.Range;
                    if (!wcPositive.IsWall())
                    {
                        xList.Add(wcPositive);
                    }

                    Vector2 wcNegative = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(-j * (float)Math.PI / 180) * W.Range;
                    if (!wcNegative.IsWall())
                    {
                        xList.Add(wcNegative);
                    }
                }

                float xDiff = ObjectManager.Player.Position.X - t.Position.X;
                float yDiff = ObjectManager.Player.Position.Y - t.Position.Y;
                int   angle = (int)(Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI);
            }

            //foreach (var aa in xList)
            //{
            //    Render.Circle.DrawCircle(aa.To3D2(), 105f, System.Drawing.Color.White);
            //}
            var nJumpPoint = xList.OrderBy(al => al.Distance(t.Position)).First();

            var color = System.Drawing.Color.DarkRed;
            var width = 4;

            var startpos = ObjectManager.Player.Position;
            var endpos   = nJumpPoint.To3D();

            if (startpos.Distance(endpos) > 100)
            {
                var endpos1 = nJumpPoint.To3D() + (startpos - endpos).To2D().Normalized().Rotated(25 * (float)Math.PI / 180).To3D() * 75;
                var endpos2 = nJumpPoint.To3D() + (startpos - endpos).To2D().Normalized().Rotated(-25 * (float)Math.PI / 180).To3D() * 75;

                var x1 = new LeagueSharp.Common.Geometry.Polygon.Line(startpos, endpos);
                x1.Draw(color, width - 2);
                var y1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos1);
                y1.Draw(color, width - 2);
                var z1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos2);
                z1.Draw(color, width - 2);

                Geometry.Polygon.Circle x2 = new LeagueSharp.Common.Geometry.Polygon.Circle(endpos, W.Width / 2);

                if (CommonGeometry.IsWallBetween(ObjectManager.Player.Position, endpos))
                {
                    x2.Draw(Color.Red, width - 2);
                }
                else
                {
                    x2.Draw(Color.Wheat, width - 2);
                }
            }

            if (!t.IsValidTarget(W.Range + Q.Range - 60))
            {
                return;
            }

            if (t.IsValidTarget(W.Range))
            {
                return;
            }

            var canJump = false;

            if (Modes.ModeCombo.ComboMode == ComboMode.Mode2xQ)
            {
                if ((t.Health < ModeCombo.GetComboDamage(t) - W.GetDamage(t) && Q.IsReady() && R.IsReady()) || (t.Health < Q.GetDamage(t) && Q.IsReady()))
                {
                    canJump = true;
                }
            }

            var nPoint = nJumpPoint.Extend(ObjectManager.Player.Position.To2D(), +ObjectManager.Player.BoundingRadius * 3);

            Render.Circle.DrawCircle(nPoint.To3D(), 50f, Color.GreenYellow);

            if (CommonGeometry.IsWallBetween(nPoint.To3D(), nJumpPoint.To3D()))
            {
                canJump = false;
            }

            if (canJump && W.IsReady() && !W.StillJumped())
            {
                if (Modes.ModeConfig.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
                {
                    W.Cast(nJumpPoint);
                }
                return;
            }
        }
Example #8
0
        private static void Laneclearrange()
        {
            if (getSliderItem(MenuConfig.laneclear, "minmana") > Player.ManaPercent) return;
            var min =
                ObjectManager.Get<Obj_AI_Minion>()
                    .Where(x => x.LSDistance(Player) < Q.Range - 200 && !x.IsDead && x.IsEnemy && x.IsTargetable);

            var objAiMinions = min as IList<Obj_AI_Minion> ?? min.ToList();
            foreach (var minions in objAiMinions)
            {
                minionscircle = new LeagueSharp.Common.Geometry.Polygon.Circle(minions.Position, 250);
            }

            var count = objAiMinions.Where(x => minionscircle.IsInside(x));

            if (count.Count() < getSliderItem(MenuConfig.laneclear, "minhitwq")) return;
            if (!Ismelee() && Q.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "useqlr"))
                Q.Cast(minionscircle.Center);
        }
Example #9
0
        private static void Laneclearmelee()
        {
            if (getSliderItem(MenuConfig.laneclear, "minmana") > Player.ManaPercent) return;
            if (!Ismelee()) return;
            var min =
                ObjectManager.Get<Obj_AI_Minion>()
                    .Where(x => x.LSDistance(Player) < 300 && !x.IsDead && x.IsEnemy).ToList();

            if (min.FirstOrDefault() == null)
            {
                minionscirclemelee = null;
                return;
            }

            foreach (var minions in min)
            {
                minionscirclemelee = new LeagueSharp.Common.Geometry.Polygon.Circle(minions.Position, 300);
                if (E.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "useelm"))
                {
                    if (minions.Health < EMeleeDamage(minions))
                    {
                        Em.Cast(minions);
                    }
                }
            }

            var count = min.Where(x => minionscirclemelee.IsInside(x));
            var objAiMinions = count as IList<Obj_AI_Minion> ?? count.ToList();
            if (objAiMinions.Count() >= getSliderItem(MenuConfig.laneclear, "minhitwq"))
            {
                if (W.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "usewlm"))
                    W.Cast();

                if (Q.IsReady() && getCheckBoxItem(MenuConfig.laneclear, "useqlm"))
                    Qm.Cast(objAiMinions.FirstOrDefault());
            }
        }
Example #10
0
        private static void Drawing_OnDraw(EventArgs args)
        {
            if (!MenuLocal.Item("Draw.Enable").GetValue <bool>())
            {
                return;
            }


            DrawSpells();
            DrawMinionLastHit();
            //KillableEnemy();
            DrawBuffs();

            //Render.Circle.DrawCircle(ObjectManager.Player.Position, W.Range, System.Drawing.Color.Red);

            return;

            var t = TargetSelector.GetTarget(W.Range * 3, TargetSelector.DamageType.Magical);

            if (t == null)
            {
                return;
            }

            if (t.IsValidTarget(W.Range))
            {
                return;
            }


            List <Vector2> xList = new List <Vector2>();

            var nLocation = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()) * W.Range;


            //if (CommonGeometry.IsWallBetween(nEvadePoint.To3D(), location.To3D()))
            //{
            //    Game.PrintChat("Wall");
            //}
            //else
            //{
            //    Game.PrintChat("Not Wall");
            //}



            Vector2 wCastPosition = nLocation;

            //Render.Circle.DrawCircle(wCastPosition.To3D(), 105f, System.Drawing.Color.Red);


            if (!wCastPosition.IsWall())
            {
                xList.Add(wCastPosition);
            }

            if (wCastPosition.IsWall())
            {
                for (int j = 20; j < 80; j += 20)
                {
                    Vector2 wcPositive = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(j * (float)Math.PI / 180) * W.Range;
                    if (!wcPositive.IsWall())
                    {
                        xList.Add(wcPositive);
                    }

                    Vector2 wcNegative = ObjectManager.Player.Position.To2D() + Vector2.Normalize(t.Position.To2D() - ObjectManager.Player.Position.To2D()).Rotated(-j * (float)Math.PI / 180) * W.Range;
                    if (!wcNegative.IsWall())
                    {
                        xList.Add(wcNegative);
                    }
                }

                float xDiff = ObjectManager.Player.Position.X - t.Position.X;
                float yDiff = ObjectManager.Player.Position.Y - t.Position.Y;
                int   angle = (int)(Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI);
            }

            //foreach (var aa in xList)
            //{
            //    Render.Circle.DrawCircle(aa.To3D2(), 105f, System.Drawing.Color.White);
            //}
            var nJumpPoint = xList.OrderBy(al => al.Distance(t.Position)).First();

            var color = System.Drawing.Color.DarkRed;
            var width = 4;

            var startpos = ObjectManager.Player.Position;
            var endpos   = nJumpPoint.To3D();

            if (startpos.Distance(endpos) > 100)
            {
                var endpos1 = nJumpPoint.To3D() + (startpos - endpos).To2D().Normalized().Rotated(25 * (float)Math.PI / 180).To3D() * 75;
                var endpos2 = nJumpPoint.To3D() + (startpos - endpos).To2D().Normalized().Rotated(-25 * (float)Math.PI / 180).To3D() * 75;

                var x1 = new LeagueSharp.Common.Geometry.Polygon.Line(startpos, endpos);
                x1.Draw(color, width - 2);
                var y1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos1);
                y1.Draw(color, width - 2);
                var z1 = new LeagueSharp.Common.Geometry.Polygon.Line(endpos, endpos2);
                z1.Draw(color, width - 2);

                Geometry.Polygon.Circle x2 = new LeagueSharp.Common.Geometry.Polygon.Circle(endpos, W.Width / 2);

                if (CommonGeometry.IsWallBetween(ObjectManager.Player.Position, endpos))
                {
                    x2.Draw(Color.Red, width - 2);
                }
                else
                {
                    x2.Draw(Color.Wheat, width - 2);
                }
            }

            if (!t.IsValidTarget(W.Range + Q.Range - 60))
            {
                return;
            }

            if (t.IsValidTarget(W.Range))
            {
                return;
            }

            var canJump = false;

            if (Modes.ModeCombo.ComboMode == ComboMode.Mode2xQ)
            {
                if ((t.Health < ModeCombo.GetComboDamage(t) - W.GetDamage(t) && Q.IsReady() && R.IsReady()) || (t.Health < Q.GetDamage(t) && Q.IsReady()))
                {
                    canJump = true;
                }
            }

            var nPoint = nJumpPoint.Extend(ObjectManager.Player.Position.To2D(), +ObjectManager.Player.BoundingRadius * 3);

            Render.Circle.DrawCircle(nPoint.To3D(), 50f, Color.GreenYellow);

            if (CommonGeometry.IsWallBetween(nPoint.To3D(), nJumpPoint.To3D()))
            {
                canJump = false;
            }

            if (canJump && W.IsReady() && !W.StillJumped())
            {
                if (Modes.ModeConfig.Orbwalker.ActiveMode == Orbwalking.OrbwalkingMode.Combo)
                {
                    W.Cast(nJumpPoint);
                }
                return;
            }
        }
Example #11
0
        private void Obj_AI_Base_OnProcessSpellCast(Obj_AI_Base sender, GameObjectProcessSpellCastEventArgs args)
        {
            PredictionInput input = null;

            if (sender.IsMe || sender.IsEnemy || !(sender is Obj_AI_Hero))
            {
                return;
            }
            if (!Spells.Contains(args.SData.Name) || Config.SubMenu("AutoCombo_Spells").Item(args.SData.Name).GetValue <bool>() == false)
            {
                return;
            }
            var targetable = false;
            var line       = false;
            var aoe        = false;

            drawTime = Game.Time;

            var result = SpellDatabase.GetByName(args.SData.Name);

            if (result != null)
            {
                switch (result.Type)
                {
                case SkillShotType.SkillshotLine:
                    _skillshot = new Geometry.Polygon.Rectangle(sender.Position, sender.Position.Extend(args.End, result.Range), result.Radius);
                    line       = true;
                    break;

                case SkillShotType.SkillshotMissileLine:
                    _skillshot = new Geometry.Polygon.Rectangle(sender.Position, sender.Position.Extend(args.End, result.Range), result.Radius);
                    line       = true;
                    break;

                case SkillShotType.SkillshotCircle:
                    _skillshotAoe = new Geometry.Polygon.Circle(args.End, result.Radius);
                    aoe           = true;
                    break;

                case SkillShotType.SkillshotRing:
                    _skillshotAoe = new Geometry.Polygon.Circle(args.End, result.Radius);
                    aoe           = true;
                    break;
                }
            }

            foreach (
                var enemy in
                ObjectManager.Get <Obj_AI_Hero>()
                .Where(enemy => enemy.IsEnemy && enemy.Distance(Player) <= Config.SubMenu("AutoCombo").Item("Range").GetValue <Slider>().Value))
            {
                if (!aoe && !line && args.Target.Position == enemy.Position)
                {
                    targetable = true;
                }
                if (!aoe && !line && !targetable)
                {
                    continue;
                }
                //Game.PrintChat(sender.BaseSkinName + " Ultimate Damage is : " + Allydamage.CalculatedDamage);
                //Game.PrintChat("My Ultimate Damage is : " + Mydamage.CalculatedDamage);
                //Game.PrintChat("Total damage is : " + (Allydamage.CalculatedDamage + Mydamage.CalculatedDamage));

                if (Config.Item("Killable").GetValue <bool>())
                {
                    Allydamage = sender.GetDamageSpell(enemy, args.SData.Name);
                    Mydamage   = Player.GetDamageSpell(enemy, SpellSlot.R);

                    if ((Allydamage.CalculatedDamage + Mydamage.CalculatedDamage) < enemy.Health &&
                        Allydamage.CalculatedDamage > enemy.Health)
                    {
                        return;
                    }
                }

                if (line)
                {
                    input = new PredictionInput
                    {
                        Unit      = enemy,
                        Type      = SkillshotType.SkillshotLine,
                        Speed     = result.MissileSpeed,
                        From      = sender.Position,
                        Delay     = result.Delay,
                        Aoe       = false,
                        Radius    = result.Radius,
                        Range     = result.Range,
                        Collision = false
                    };
                }
                else
                {
                    if (aoe)
                    {
                        input = new PredictionInput
                        {
                            Unit      = enemy,
                            Type      = SkillshotType.SkillshotCircle,
                            Speed     = result.MissileSpeed,
                            From      = sender.Position,
                            Delay     = result.Delay,
                            Aoe       = true,
                            Radius    = result.Radius,
                            Range     = result.Range,
                            Collision = false
                        };
                    }
                }
                if (!targetable)
                {
                    var output = Prediction.GetPrediction(input);
                    var unit   = output.CastPosition;
                    if (line)
                    {
                        if (!_skillshot.IsInside(unit) && !_skillshot.IsInside(enemy))
                        {
                            continue;
                        }
                    }
                    else
                    {
                        if (!_skillshotAoe.IsInside(unit) && !_skillshotAoe.IsInside(enemy))
                        {
                            continue;
                        }
                    }
                }

                R.Cast(enemy.Position);
                if (enemy.Distance(Player.Position) <= Config.SubMenu("AutoCombo").Item("Range").GetValue <Slider>().Value)
                {
                    R.Cast(enemy);
                    R.CastOnUnit(enemy);
                }
            }
        }