Example #1
0
        private static void Combo()
        {
            var target = TargetSelector.GetTarget(SpellManager.E2.Range);

            if (target.IsValidTarget())
            {
                var nearestBarrel = BarrelManager.GetNearestBarrel();
                if (nearestBarrel != null)
                {
                    var chainedBarrels = BarrelManager.GetChainedBarrels(nearestBarrel);
                    if (chainedBarrels.Any(x => BarrelManager.BarrelWillHit(x, target)))
                    {
                        //If any of the chained barrels will hit, cast Q on best barrel.
                        var barrelToQ = BarrelManager.GetBestBarrelToQ(chainedBarrels);
                        if (barrelToQ != null)
                        {
                            if (SpellManager.Q.Ready)
                            {
                                var timeWhenCanE = LastECast + 500;
                                var delay        = timeWhenCanE - Game.TickCount;
                                delay = delay <= 0 ? 0 : delay;
                                var castDelay = MenuManager.Combo["triple"].Enabled ? delay : 0;
                                DelayAction.Queue(castDelay, () => SpellManager.Q.Cast(barrelToQ.Object));
                            }
                            else if (barrelToQ.Object.Distance(Player) <= Player.AttackRange && Orbwalker.Implementation.CanAttack() && MenuManager.Combo["explodeQCooldown"].Enabled)
                            {
                                Orbwalker.Implementation.Attack(barrelToQ.Object);
                            }
                            return;
                        }
                    }
                    else
                    {
                        //No chained barrels will hit, so let's chain them.
                        var bestChainPosition = BarrelManager.GetBestChainPosition(target, nearestBarrel);
                        if (bestChainPosition != Vector3.Zero && target.IsInRange(SpellManager.E.Range) && Player.Distance(bestChainPosition) <= SpellManager.E.Range && SpellManager.E.Ready && nearestBarrel.CanChain)
                        {
                            Render.Line(nearestBarrel.ServerPosition.ToScreenPosition(), bestChainPosition.ToScreenPosition(), 5, true, Color.Red);
                            SpellManager.E.Cast(bestChainPosition);
                        }
                    }
                }
            }
        }
Example #2
0
 private static void DashOnHeroDashed(object sender, Dash.DashArgs dashArgs)
 {
     if (dashArgs.Unit is Obj_AI_Hero)
     {
         var nearestBarrel = BarrelManager.GetNearestBarrel(dashArgs.EndPos.To3D());
         if (nearestBarrel != null)
         {
             var chainedBarrels = BarrelManager.GetChainedBarrels(nearestBarrel);
             if (chainedBarrels.Any(x => BarrelManager.BarrelWillHit(x, dashArgs.EndPos.To3D())))
             {
                 //If any of the chained barrels will hit, cast Q on best barrel.
                 var barrelToQ = BarrelManager.GetBestBarrelToQ(chainedBarrels);
                 if (barrelToQ != null)
                 {
                     if (SpellManager.Q.Ready)
                     {
                         SpellManager.Q.Cast(barrelToQ.Object);
                     }
                     else if (barrelToQ.Object.Distance(Player) <= Player.AttackRange && Orbwalker.Implementation.CanAttack() && MenuManager.Combo["explodeQCooldown"].Enabled)
                     {
                         Orbwalker.Implementation.Attack(barrelToQ.Object);
                     }
                     return;
                 }
             }
             else
             {
                 //No chained barrels will hit, so let's chain them.
                 var bestChainPosition = BarrelManager.GetBestChainPosition(dashArgs.EndPos.To3D(), nearestBarrel);
                 if (bestChainPosition != Vector3.Zero && dashArgs.EndPos.Distance(Player) <= SpellManager.E.Range && Player.Distance(bestChainPosition) <= SpellManager.E.Range && SpellManager.E.Ready && nearestBarrel.CanChain)
                 {
                     Render.Line(nearestBarrel.ServerPosition.ToScreenPosition(), bestChainPosition.ToScreenPosition(), 5, true, Color.Red);
                     SpellManager.E.Cast(bestChainPosition);
                 }
             }
         }
     }
 }
Example #3
0
        private static void Combo()
        {
            if (Orbwalker.Implementation.IsWindingUp)
            {
                return;
            }
            var target = TargetSelector.GetTarget(SpellManager.E2.Range);

            if (target.IsValidTarget())
            {
                var nearestBarrel = BarrelManager.GetNearestBarrel();
                if (nearestBarrel != null)
                {
                    var chainedBarrels = BarrelManager.GetChainedBarrels(nearestBarrel);
                    if (chainedBarrels.Any(x => BarrelManager.BarrelWillHit(x, target)))
                    {
                        //If any of the chained barrels will hit, cast Q on best barrel.
                        var barrelToQ = BarrelManager.GetBestBarrelToQ(chainedBarrels);
                        if (barrelToQ != null)
                        {
                            if (SpellManager.Q.Ready)
                            {
                                var timeWhenCanE = LastECast + 500;
                                var delay        = timeWhenCanE - Game.TickCount;
                                delay = Ammo < 1 ? 0 : delay <= 0 ? 0 : delay;
                                var castDelay = MenuManager.Combo["triple"].Enabled ? delay : 0;
                                DelayAction.Queue(castDelay, () => SpellManager.Q.Cast(barrelToQ.Object));
                                return;
                            }
                            if (barrelToQ.Object.IsInAutoAttackRange() && Orbwalker.Implementation.CanAttack() && MenuManager.Combo["explodeQCooldown"].Enabled)
                            {
                                Orbwalker.Implementation.ForceTarget(barrelToQ.Object);
                                Orbwalker.Implementation.Attack(barrelToQ.Object);
                            }
                        }
                    }
                    else
                    {
                        //No chained barrels will hit, so let's chain them OR try and triple barrel.
                        if (chainedBarrels.Count >= 2 && MenuManager.Combo["triple"].Enabled)
                        {
                            //There are chained barrels, so let's see if any are in range to be triple comboed.
                            var barrelToComboFrom = chainedBarrels.FirstOrDefault(x => BarrelManager.GetEnemiesInChainRadius(x).Count >= 1);
                            if (barrelToComboFrom == null)
                            {
                                return;
                            }
                            var barrelToQ = BarrelManager.GetBestBarrelToQ(chainedBarrels);
                            if (barrelToQ != null)
                            {
                                if (SpellManager.Q.Ready)
                                {
                                    var timeWhenCanE = LastECast + 500;
                                    var delay        = timeWhenCanE - Game.TickCount;
                                    delay = delay <= 0 ? 0 : delay;
                                    var castDelay = MenuManager.Combo["triple"].Enabled ? delay : 0;
                                    DelayAction.Queue(castDelay, () => SpellManager.Q.Cast(barrelToQ.Object));
                                    return;
                                }
                                //if (barrelToQ.Object.IsInAutoAttackRange() && Orbwalker.Implementation.CanAttack() && MenuManager.Combo["explodeQCooldown"].Enabled)
                                //{
                                //    Orbwalker.Implementation.ForceTarget(barrelToQ.Object);
                                //    Orbwalker.Implementation.Attack(barrelToQ.Object);
                                //}
                            }
                        }
                        else
                        {
                            var bestChainPosition = BarrelManager.GetBestChainPosition(target, nearestBarrel);
                            if (bestChainPosition != Vector3.Zero && target.IsInRange(SpellManager.E.Range) && Player.Distance(bestChainPosition) <= SpellManager.E.Range && SpellManager.E.Ready && nearestBarrel.CanChain)
                            {
                                Render.Line(nearestBarrel.ServerPosition.ToScreenPosition(), bestChainPosition.ToScreenPosition(), 5, true, Color.Red);
                                if (SpellManager.E.Cast(bestChainPosition))
                                {
                                    if (SpellManager.Q.Ready && nearestBarrel.CanQ)
                                    {
                                        SpellManager.Q.Cast(nearestBarrel.Object);
                                    }
                                    else if (nearestBarrel.CanAA && nearestBarrel.Object.IsInAutoAttackRange() && Orbwalker.Implementation.CanAttack() && !Orbwalker.Implementation.IsWindingUp)
                                    {
                                        Orbwalker.Implementation.Attack(nearestBarrel.Object);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }