コード例 #1
0
ファイル: Warrior.cs プロジェクト: EighthMonth/MagitekRoutine
        public static async Task <bool> Combat()
        {
            if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack())
            {
                return(false);
            }

            if (await CustomOpenerLogic.Opener())
            {
                return(true);
            }

            if (BotManager.Current.IsAutonomous)
            {
                Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 4);
            }

            if (await Tank.Interrupt(WarriorSettings.Instance))
            {
                return(true);
            }
            if (await Buff.Defiance())
            {
                return(true);
            }

            if (Weaving.GetCurrentWeavingCounter() < 2 && Spells.HeavySwing.Cooldown.TotalMilliseconds > 800 + BaseSettings.Instance.UserLatencyOffset)
            {
                //if (await Defensive.ExecuteTankBusters()) return true;
                if (await Defensive.Defensives())
                {
                    return(true);
                }
                if (await Buff.Beserk())
                {
                    return(true);
                }
                if (await Buff.InnerRelease())
                {
                    return(true);
                }
                if (await Buff.Infuriate())
                {
                    return(true);
                }
                if (await Buff.Equilibrium())
                {
                    return(true);
                }
                if (await SingleTarget.Onslaught())
                {
                    return(true);
                }
                if (await SingleTarget.Upheaval())
                {
                    return(true);
                }
            }

            if (WarriorSettings.Instance.UseDefiance)
            {
                if (await Tank.Provoke(WarriorSettings.Instance))
                {
                    return(true);
                }
                if (await SingleTarget.TomahawkOnLostAggro())
                {
                    return(true);
                }
            }

            if (await Aoe.SteelCyclone())
            {
                return(true);
            }
            if (await Aoe.Decimate())
            {
                return(true);
            }
            if (await Aoe.InnerReleaseDecimateSpam())
            {
                return(true);
            }
            if (await Aoe.Overpower())
            {
                return(true);
            }
            if (await SingleTarget.InnerBeast())
            {
                return(true);
            }
            if (await SingleTarget.FellCleave())
            {
                return(true);
            }
            if (await SingleTarget.InnerReleaseFellCleaveSpam())
            {
                return(true);
            }

            // Main Rotation Part

            if (await SingleTarget.StormsEye())
            {
                return(true);
            }
            if (await SingleTarget.StormsPath())
            {
                return(true);
            }
            if (await SingleTarget.Maim())
            {
                return(true);
            }
            if (await SingleTarget.HeavySwing())
            {
                return(true);
            }
            return(await SingleTarget.Tomahawk());
        }
コード例 #2
0
ファイル: Combat.cs プロジェクト: boglobsters/MagitekRoutine
        public static async Task <bool> Execute()
        {
            if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack())
            {
                return(false);
            }

            if (await CustomOpenerLogic.Opener())
            {
                return(true);
            }

            if (BotManager.Current.IsAutonomous)
            {
                Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 4);
            }

            if (await SingleTarget.LowBlow())
            {
                return(true);
            }
            if (await SingleTarget.Interject())
            {
                return(true);
            }
            if (await Buff.Defiance())
            {
                return(true);
            }

            if (Utilities.Routines.Warrior.OnGcd)
            {
                if (await Defensive.ExecuteTankBusters())
                {
                    return(true);
                }
                if (await Defensive.Defensives())
                {
                    return(true);
                }
                if (await Buff.Beserk())
                {
                    return(true);
                }
                if (await Buff.InnerRelease())
                {
                    return(true);
                }
                if (await Buff.Infuriate())
                {
                    return(true);
                }
                if (await Buff.Equilibrium())
                {
                    return(true);
                }
                if (await SingleTarget.Onslaught())
                {
                    return(true);
                }
                if (await SingleTarget.Upheaval())
                {
                    return(true);
                }
            }

            if (WarriorSettings.Instance.UseDefiance)
            {
                if (await Tank.Provoke(WarriorSettings.Instance))
                {
                    return(true);
                }
                if (await SingleTarget.TomahawkOnLostAggro())
                {
                    return(true);
                }
            }

            if (await Aoe.SteelCyclone())
            {
                return(true);
            }
            if (await Aoe.Decimate())
            {
                return(true);
            }
            if (await Aoe.InnerReleaseDecimateSpam())
            {
                return(true);
            }
            if (await Aoe.Overpower())
            {
                return(true);
            }
            if (await SingleTarget.InnerBeast())
            {
                return(true);
            }
            if (await SingleTarget.FellCleave())
            {
                return(true);
            }
            if (await SingleTarget.InnerReleaseFellCleaveSpam())
            {
                return(true);
            }

            // Main Rotation Part

            if (await SingleTarget.StormsEye())
            {
                return(true);
            }
            if (await SingleTarget.StormsPath())
            {
                return(true);
            }
            if (await SingleTarget.Maim())
            {
                return(true);
            }
            if (await SingleTarget.HeavySwing())
            {
                return(true);
            }
            return(await SingleTarget.Tomahawk());
        }
コード例 #3
0
        public static async Task <bool> Execute()
        {
            if (await Defensive.TankBusters())
            {
                return(true);
            }

            if (BotManager.Current.IsAutonomous)
            {
                Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 4);
            }

            if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack())
            {
                return(false);
            }

            if (await CustomOpenerLogic.Opener())
            {
                return(true);
            }

            if (await Buff.Oath())
            {
                return(true);
            }


            if (Utilities.Routines.Paladin.OnGcd)
            {
                if (await Buff.Cover())
                {
                    return(true);
                }
                if (await Tank.Provoke(PaladinSettings.Instance))
                {
                    return(true);
                }
                if (await Defensive.Defensives())
                {
                    return(true);
                }
                if (await Buff.Intervention())
                {
                    return(true);
                }
                if (await Buff.DivineVeil())
                {
                    return(true);
                }
                if (await SingleTarget.Requiescat())
                {
                    return(true);
                }
                if (await Buff.FightOrFlight())
                {
                    return(true);
                }
                if (await SingleTarget.Interject())
                {
                    return(true);
                }
                if (!Utilities.Routines.Paladin.OGCDHold)
                {
                    if (await SingleTarget.SpiritsWithin())
                    {
                        return(true);
                    }
                    if (await Aoe.CircleofScorn())
                    {
                        return(true);
                    }
                    if (await SingleTarget.Intervene())
                    {
                        return(true);
                    }
                }
                if (await Buff.Sheltron())
                {
                    return(true);
                }
            }

            if (await SingleTarget.ShieldBash())
            {
                return(true);
            }
            if (await SingleTarget.ShieldLobLostAggro())
            {
                return(true);
            }
            if (await Aoe.Confiteor())
            {
                return(true);
            }
            if (await Aoe.HolyCircle())
            {
                return(true);
            }
            if (await Aoe.TotalEclipse())
            {
                return(true);
            }
            if (await SingleTarget.HolySpirit())
            {
                return(true);
            }
            if (await SingleTarget.Atonement())
            {
                return(true);
            }


            if (ActionManager.LastSpell == Spells.RiotBlade && Core.Me.ClassLevel > 25 && Core.Me.ClassLevel < 60)
            {
                return(await Spells.RageofHalone.Cast(Core.Me.CurrentTarget));
            }

            #region Last Spell RiotBlade
            if (ActionManager.LastSpell == Spells.RiotBlade)
            {
                if (Core.Me.ClassLevel >= 54 && !Core.Me.CurrentTarget.HasAura(Auras.GoringBlade, true, (PaladinSettings.Instance.RefreshGoringBlade) * 1000) && Core.Me.CurrentTarget.HealthCheck(PaladinSettings.Instance.HealthSetting, PaladinSettings.Instance.HealthSettingPercent))
                {
                    if (await Spells.GoringBlade.Cast(Core.Me.CurrentTarget))
                    {
                        return(true);
                    }
                }

                if (Core.Me.ClassLevel > 59)
                {
                    return(await Spells.RoyalAuthority.Cast(Core.Me.CurrentTarget));
                }

                return(await Spells.FastBlade.Cast(Core.Me.CurrentTarget));
            }
            #endregion

            #region Last Spell FastBlade
            if (ActionManager.LastSpell == Spells.FastBlade)
            {
                // Low level just fast blade
                if (Core.Me.ClassLevel < 4)
                {
                    return(await Spells.FastBlade.Cast(Core.Me.CurrentTarget));
                }

                //// if we have RA and RA in shield oath is enabled riot blade
                //if (ActionManager.HasSpell(Spells.RoyalAuthority.Id))
                //{
                //    if (PaladinSettings.Instance.RoyalAuthorityComboInShieldOath)
                //    {
                //        return await Spells.RiotBlade.Cast(Core.Me.CurrentTarget);
                //    }
                //}

                //if (!Core.Me.CurrentTarget.HasAura(Auras.GoringBlade, true, PaladinSettings.Instance.RefreshGoringBlade * 1000))
                //{
                //    return await Spells.RiotBlade.Cast(Core.Me.CurrentTarget);
                //}

                if (Core.Me.ClassLevel >= 4)
                {
                    return(await Spells.RiotBlade.Cast(Core.Me.CurrentTarget));
                }

                return(false);
            }
            #endregion

            if (await Spells.FastBlade.Cast(Core.Me.CurrentTarget))
            {
                return(true);
            }

            if (PaladinSettings.Instance.ShieldLobToPull && !Core.Me.InCombat)
            {
                return(await Spells.ShieldLob.Cast(Core.Me.CurrentTarget));
            }
            if (PaladinSettings.Instance.HolySpiritWhenOutOfMeleeRange && Core.Me.ClassLevel >= 64 && await Spells.HolySpirit.Cast(Core.Me.CurrentTarget))
            {
                return(true);
            }
            return(await SingleTarget.ShieldLob());
        }
コード例 #4
0
        //TODO: We should be using Reprisal in here somewhere
        public static async Task <bool> Combat()
        {
            //if (await Defensive.TankBusters()) return true;

            if (BotManager.Current.IsAutonomous)
            {
                if (Core.Me.HasTarget)
                {
                    Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach);
                }
            }

            if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack())
            {
                return(false);
            }

            if (await CustomOpenerLogic.Opener())
            {
                return(true);
            }

            if (!Core.Me.HasAura(Auras.PassageOfArms))
            {
                if (await Buff.Oath())
                {
                    return(true);
                }
                if (await SingleTarget.Interrupt())
                {
                    return(true);
                }

                if (Utilities.Routines.Paladin.OnGcd)
                {
                    if (await Buff.Cover())
                    {
                        return(true);
                    }
                    if (await Tank.Provoke(PaladinSettings.Instance))
                    {
                        return(true);
                    }
                    if (await Defensive.Defensives())
                    {
                        return(true);
                    }
                    if (await Buff.Intervention())
                    {
                        return(true);
                    }
                    if (await Buff.DivineVeil())
                    {
                        return(true);
                    }
                    if (await Buff.Requiescat())
                    {
                        return(true);
                    }
                    if (await Buff.FightOrFlight())
                    {
                        return(true);
                    }
                    if (!Utilities.Routines.Paladin.OGCDHold)
                    {
                        if (await SingleTarget.SpiritsWithin())
                        {
                            return(true);
                        }
                        if (await Aoe.CircleofScorn())
                        {
                            return(true);
                        }
                        if (await SingleTarget.Intervene())
                        {
                            return(true);
                        }
                    }
                    if (await Buff.Sheltron())
                    {
                        return(true);
                    }
                }

                if (await SingleTarget.ShieldLobLostAggro())
                {
                    return(true);
                }
                if (await SingleTarget.Confiteor())
                {
                    return(true);
                }
                if (await Aoe.HolyCircle())
                {
                    return(true);
                }
                if (await Aoe.TotalEclipse())
                {
                    return(true);
                }
                if (await SingleTarget.HolySpirit())
                {
                    return(true);
                }
                if (await SingleTarget.Atonement())
                {
                    return(true);
                }


                //TODO: Paladin rotation gets stuck after RiotBlade at level 59
                if (ActionManager.LastSpell == Spells.RiotBlade && Core.Me.ClassLevel > 25 && Core.Me.ClassLevel < 60)
                {
                    return(await Spells.RageofHalone.Cast(Core.Me.CurrentTarget));
                }

                #region Last Spell RiotBlade
                if (ActionManager.LastSpell == Spells.RiotBlade)
                {
                    if (Core.Me.ClassLevel >= 54 &&
                        !Core.Me.CurrentTarget.HasAura(Auras.BladeOfValor, true, (PaladinSettings.Instance.RefreshGoringBlade) * 1000) &&
                        !Core.Me.CurrentTarget.HasAura(Auras.GoringBlade, true, (PaladinSettings.Instance.RefreshGoringBlade) * 1000) &&
                        Core.Me.CurrentTarget.HealthCheck(PaladinSettings.Instance.HealthSetting, PaladinSettings.Instance.HealthSettingPercent))
                    {
                        if (await Spells.GoringBlade.Cast(Core.Me.CurrentTarget))
                        {
                            return(true);
                        }
                    }

                    if (Core.Me.ClassLevel > 59)
                    {
                        return(await Spells.RoyalAuthority.Cast(Core.Me.CurrentTarget));
                    }

                    return(await Spells.FastBlade.Cast(Core.Me.CurrentTarget));
                }
                #endregion

                #region Last Spell FastBlade
                if (ActionManager.LastSpell == Spells.FastBlade)
                {
                    // Low level just fast blade
                    if (Core.Me.ClassLevel < 4)
                    {
                        return(await Spells.FastBlade.Cast(Core.Me.CurrentTarget));
                    }

                    if (Core.Me.ClassLevel >= 4)
                    {
                        return(await Spells.RiotBlade.Cast(Core.Me.CurrentTarget));
                    }

                    return(false);
                }
                #endregion

                if (await Spells.FastBlade.Cast(Core.Me.CurrentTarget))
                {
                    return(true);
                }

                if (PaladinSettings.Instance.ShieldLobToPull && !Core.Me.InCombat)
                {
                    return(await Spells.ShieldLob.Cast(Core.Me.CurrentTarget));
                }
                if (PaladinSettings.Instance.HolySpiritWhenOutOfMeleeRange && Core.Me.ClassLevel >= 64 && await Spells.HolySpirit.Cast(Core.Me.CurrentTarget))
                {
                    return(true);
                }
                return(await SingleTarget.ShieldLob());
            }
            else
            {
                return(false);
            }
        }