Exemple #1
0
        /********************************************************************************
         *                            Secondary combo
         *******************************************************************************/
        public static async Task <bool> GnashingFang()
        {
            if (!GunbreakerSettings.Instance.UseAmmoCombo)
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            if (Cartridge < GunbreakerRoutine.RequiredCartridgeForGnashingFang)
            {
                return(false);
            }

            if (Combat.Enemies.Count(r => r.Distance(Core.Me) <= 5 + r.CombatReach) >= GunbreakerSettings.Instance.PrioritizeFatedCircleOverGnashingFangEnemies)
            {
                return(false);
            }

            if (Spells.NoMercy.IsKnownAndReady(10000))
            {
                return(false);
            }

            return(await Spells.GnashingFang.Cast(Core.Me.CurrentTarget));
        }
Exemple #2
0
        public static async Task <bool> DemonSlaughter()
        {
            if (!GunbreakerSettings.Instance.UseAoe)
            {
                return(false);
            }

            if (!GunbreakerRoutine.CanContinueComboAfter(Spells.DemonSlice))
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            if (Combat.Enemies.Count(r => r.Distance(Core.Me) <= 5 + r.CombatReach) < GunbreakerSettings.Instance.DemonSliceSlaughterEnemies)
            {
                return(false);
            }

            if (Cartridge == GunbreakerRoutine.MaxCartridge)
            {
                return(false);
            }

            return(await Spells.DemonSlaughter.Cast(Core.Me.CurrentTarget));
        }
Exemple #3
0
        /********************************************************************************
         *                            Primary combo
         *******************************************************************************/
        public static async Task <bool> KeenEdge()
        {
            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            return(await Spells.KeenEdge.Cast(Core.Me.CurrentTarget));
        }
Exemple #4
0
        public static async Task <bool> LightningShotToPullOrAggro()
        {
            if (!GunbreakerSettings.Instance.LightningShotToPullAggro)
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            if (!Core.Me.HasAura(Auras.RoyalGuard))
            {
                return(false);
            }

            //need this in autonomous for dungeon profiles
            //if (BotManager.Current.IsAutonomous)
            //    return false;

            //find target already pulled on which I lose aggro
            var lightningShotTarget = Combat.Enemies.FirstOrDefault(r => r.ValidAttackUnit() &&
                                                                    r.NotInvulnerable() &&
                                                                    r.Distance(Core.Me) >= Core.Me.CombatReach + r.CombatReach + GunbreakerSettings.Instance.LightningShotMinDistance &&
                                                                    r.Distance(Core.Me) <= 20 + r.CombatReach &&
                                                                    r.TargetGameObject != Core.Me);

            //if no target found, then check if current target is not pulled yet
            if (lightningShotTarget == null)
            {
                lightningShotTarget = (BattleCharacter)Core.Me.CurrentTarget;

                if (!lightningShotTarget.ValidAttackUnit() ||
                    !lightningShotTarget.NotInvulnerable() ||
                    lightningShotTarget.Distance(Core.Me) < Core.Me.CombatReach + lightningShotTarget.CombatReach + GunbreakerSettings.Instance.LightningShotMinDistance ||
                    lightningShotTarget.Distance(Core.Me) > 20 + lightningShotTarget.CombatReach ||
                    lightningShotTarget.TargetGameObject != null)
                {
                    return(false);
                }
            }

            if (!await Spells.LightningShot.Cast(lightningShotTarget))
            {
                return(false);
            }

            Logger.WriteInfo($@"Lightning Shot On {lightningShotTarget.Name} to pull");
            return(true);
        }
Exemple #5
0
        /********************************************************************************
         *                                    GCD
         *******************************************************************************/
        public static async Task <bool> SonicBreak()
        {
            if (!Core.Me.HasAura(Auras.NoMercy))
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            return(await Spells.SonicBreak.Cast(Core.Me.CurrentTarget));
        }
Exemple #6
0
        public static async Task <bool> WickedTalon()
        {
            if (SecondaryComboStage != 2)
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            return(await Spells.WickedTalon.Cast(Core.Me.CurrentTarget));
        }
Exemple #7
0
        public static async Task <bool> SavageClaw()
        {
            if (SecondaryComboStage != 1)
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            return(await Spells.SavageClaw.Cast(Core.Me.CurrentTarget));
        }
Exemple #8
0
        public static async Task <bool> BrutalShell()
        {
            if (!GunbreakerRoutine.CanContinueComboAfter(Spells.KeenEdge))
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            return(await Spells.BrutalShell.Cast(Core.Me.CurrentTarget));
        }
Exemple #9
0
        /********************************************************************************
         *                                    oGCD
         *******************************************************************************/
        public static async Task <bool> BlastingZone()
        {
            if (GunbreakerSettings.Instance.SaveBlastingZone)
            {
                if (Spells.NoMercy.Cooldown.TotalMilliseconds <= GunbreakerSettings.Instance.SaveBlastingZoneMseconds)
                {
                    return(false);
                }
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            return(await GunbreakerRoutine.BlastingZone.Cast(Core.Me.CurrentTarget));
        }
Exemple #10
0
        /********************************************************************************
         *                              Third combo oGCD
         *******************************************************************************/

        public static async Task <bool> BurstStrike()
        {
            if (!GunbreakerSettings.Instance.UseBurstStrike)
            {
                return(false);
            }

            if (Cartridge < GunbreakerRoutine.RequiredCartridgeForBurstStrike)
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            if (Combat.Enemies.Count(r => r.Distance(Core.Me) <= 5 + r.CombatReach) >= GunbreakerSettings.Instance.PrioritizeFatedCircleOverBurstStrikeEnemies)
            {
                return(false);
            }

            if (Core.Me.HasAura(Auras.NoMercy) && Cartridge > 0)
            {
                if (Cartridge < GunbreakerRoutine.MaxCartridge && (Spells.DoubleDown.IsKnownAndReady(10000) || Spells.GnashingFang.IsKnownAndReady(10000)))
                {
                    return(false);
                }

                return(await Spells.BurstStrike.Cast(Core.Me.CurrentTarget));
            }

            if (Cartridge == GunbreakerRoutine.MaxCartridge && ActionManager.LastSpell.Id != Spells.BrutalShell.Id)
            {
                return(false);
            }

            if (Cartridge < GunbreakerRoutine.MaxCartridge)
            {
                return(false);
            }

            return(await Spells.BurstStrike.Cast(Core.Me.CurrentTarget));
        }
Exemple #11
0
        public static async Task <bool> SolidBarrel()
        {
            if (!GunbreakerRoutine.CanContinueComboAfter(Spells.BrutalShell))
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            if (Cartridge == GunbreakerRoutine.MaxCartridge)
            {
                return(false);
            }

            return(await Spells.SolidBarrel.Cast(Core.Me.CurrentTarget));
        }
Exemple #12
0
        /*************************************************************************************
        *                                    oGCD
        * ***********************************************************************************/
        public static async Task <bool> BowShock()
        {
            if (!GunbreakerSettings.Instance.UseBowShock)
            {
                return(false);
            }

            if (!Core.Me.HasAura(Auras.NoMercy))
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            if (Combat.Enemies.Count(r => r.Distance(Core.Me) <= 5 + r.CombatReach) < 1)
            {
                return(false);
            }

            return(await Spells.BowShock.Cast(Core.Me.CurrentTarget));
        }
Exemple #13
0
        /*************************************************************************************
        *                                    GCD
        * ***********************************************************************************/
        public static async Task <bool> FatedCircle()
        {
            if (!GunbreakerSettings.Instance.UseAoe)
            {
                return(false);
            }

            if (!GunbreakerSettings.Instance.UseFatedCircle)
            {
                return(false);
            }

            if (Cartridge < GunbreakerRoutine.RequiredCartridgeForFatedCircle)
            {
                return(false);
            }

            if (GunbreakerRoutine.IsAurasForComboActive())
            {
                return(false);
            }

            if (Combat.Enemies.Count(r => r.Distance(Core.Me) <= 5 + r.CombatReach) < 2)
            {
                return(false);
            }

            if (Core.Me.HasAura(Auras.NoMercy) && Cartridge > 0)
            {
                if (Spells.DoubleDown.IsKnownAndReady())
                {
                    return(false);
                }

                if (Combat.Enemies.Count(r => r.Distance(Core.Me) <= 5 + r.CombatReach) < GunbreakerSettings.Instance.PrioritizeFatedCircleOverGnashingFangEnemies)
                {
                    if (Spells.GnashingFang.IsKnownAndReady())
                    {
                        return(false);
                    }
                }
            }

            //Delay if nomercy ready soon
            if (Spells.NoMercy.IsKnownAndReady(16000) && Cartridge < GunbreakerRoutine.MaxCartridge - 1)
            {
                return(false);
            }
            if (Spells.NoMercy.IsKnownAndReady(8000) && Cartridge < GunbreakerRoutine.MaxCartridge)
            {
                return(false);
            }

            //Delay if GnashingFang ready soon and there are less than GunbreakerSettings.Instance.PrioritizeFatedCircleOverGnashingFangEnemies
            if (Combat.Enemies.Count(r => r.Distance(Core.Me) <= 5 + r.CombatReach) < GunbreakerSettings.Instance.PrioritizeFatedCircleOverGnashingFangEnemies)
            {
                if (Spells.GnashingFang.IsKnownAndReady(8000) && Cartridge <= GunbreakerRoutine.RequiredCartridgeForGnashingFang)
                {
                    return(false);
                }
            }

            //Delay if DoubleDown ready soon
            if (Spells.DoubleDown.IsKnownAndReady(4000) && Cartridge <= GunbreakerRoutine.RequiredCartridgeForDoubleDown)
            {
                return(false);
            }

            return(await Spells.FatedCircle.Cast(Core.Me.CurrentTarget));
        }