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()); }
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()); }
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()); }
//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); } }