public static async Task <bool> Execute() { if (BotManager.Current.IsAutonomous) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach); } if (!SpellQueueLogic.SpellQueue.Any()) { SpellQueueLogic.InSpellQueue = false; } if (SpellQueueLogic.SpellQueue.Any()) { if (await SpellQueueLogic.SpellQueueMethod()) { return(true); } } if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (await PhysicalDps.Interrupt(NinjaSettings.Instance)) { return(true); } if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (Utilities.Routines.Ninja.OnGcd) { if (await PhysicalDps.SecondWind(NinjaSettings.Instance)) { return(true); } if (await PhysicalDps.Bloodbath(NinjaSettings.Instance)) { return(true); } if (await PhysicalDps.Feint(NinjaSettings.Instance)) { return(true); } if (Core.Me.HasAura(Auras.Suiton)) { if (await PhysicalDps.TrueNorth(NinjaSettings.Instance)) { return(true); } } if (await Buff.ShadeShift()) { return(true); } if (await Buff.Bunshin()) { return(true); } if (await SingleTarget.Assassinate()) { return(true); } if (await SingleTarget.Mug()) { return(true); } if (await Buff.Kassatsu()) { return(true); } if (await SingleTarget.TrickAttack()) { return(true); } if (await SingleTarget.DreamWithinADream()) { return(true); } if (await Aoe.HellfrogMedium()) { return(true); } if (await SingleTarget.Bhavacakra()) { return(true); } if (await Ninjutsu.TenChiJin()) { return(true); } } if (Ninjutsu.Huton()) { return(true); } if (Ninjutsu.GokaMekkyaku()) { return(true); } if (Ninjutsu.Doton()) { return(true); } if (Ninjutsu.Katon()) { return(true); } if (Ninjutsu.Suiton()) { return(true); } if (Ninjutsu.HyoshoRanryu()) { return(true); } if (Ninjutsu.Raiton()) { return(true); } if (Ninjutsu.FumaShuriken()) { return(true); } if (await Aoe.HakkeMujinsatsu()) { return(true); } if (await Aoe.DeathBlossom()) { return(true); } if (await SingleTarget.ShadowFang()) { return(true); } if (await SingleTarget.ArmorCrush()) { return(true); } if (await SingleTarget.AeolianEdge()) { return(true); } if (await SingleTarget.GustSlash()) { return(true); } return(await SingleTarget.SpinningEdge()); }
public static async Task <bool> Combat() { if (BotManager.Current.IsAutonomous) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach); } Utilities.Routines.Monk.RefreshVars(); if (!SpellQueueLogic.SpellQueue.Any()) { SpellQueueLogic.InSpellQueue = false; } if (SpellQueueLogic.SpellQueue.Any()) { if (await SpellQueueLogic.SpellQueueMethod()) { return(true); } } if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (await Buff.FistsOf()) { return(true); } if (await Buff.Meditate()) { return(true); } //var count = Utilities.Combat.Enemies.Count; //if (2 >= count && count < 5) //{ // //TODO: Add 2-4 target DPS rotation //} //else if (count >= 5) //{ // //TODO: Add 5+ target DPS rotation //} if (!Core.Me.HasAura(Auras.Anatman) || MonkSettings.Instance.UseManualPB && Core.Me.HasAura(Auras.PerfectBalance)) { if (Weaving.GetCurrentWeavingCounter() < 2 && Spells.Bootshine.Cooldown.TotalMilliseconds > 750 + BaseSettings.Instance.UserLatencyOffset) { if (await PhysicalDps.Interrupt(MonkSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(MonkSettings.Instance)) { return(true); } if (await PhysicalDps.Bloodbath(MonkSettings.Instance)) { return(true); } if (await PhysicalDps.Feint(MonkSettings.Instance)) { return(true); } if (await Buff.RiddleOfFire()) { return(true); } if (await Buff.Brotherhood()) { return(true); } if (await SingleTarget.TornadoKick()) { return(true); } if (await Aoe.Enlightenment()) { return(true); } if (await SingleTarget.TheForbiddenChakra()) { return(true); } if (await SingleTarget.ShoulderTackle()) { return(true); } if (await Buff.PerfectBalance()) { return(true); } if (await Buff.TrueNorthRiddleOfEarth()) { return(true); } //if (await Buff.RiddleOfFire()) return true; //if (await Buff.Brotherhood()) return true; if (await SingleTarget.ElixirField()) { return(true); } } if (await Aoe.Rockbreaker()) { return(true); } if (await Aoe.FourPointStrike()) { return(true); } if (await Aoe.ArmOfDestroyer()) { return(true); } if (await SingleTarget.PerfectBalanceRoT()) { return(true); } //if (await Aoe.Rockbreaker()) return true; //if (await Aoe.FourPointStrike()) return true; //if (await Aoe.ArmOfDestroyer()) return true; if (await SingleTarget.Demolish()) { return(true); } if (await SingleTarget.SnapPunch()) { return(true); } if (await SingleTarget.TwinSnakes()) { return(true); } if (await SingleTarget.TrueStrike()) { return(true); } if (await SingleTarget.Bootshine()) { return(true); } if (await SingleTarget.DragonKick()) { return(true); } return(await Buff.FormShiftIC()); } return(false); }
public static async Task <bool> Combat() { if (Core.Me.IsCasting) { return(true); } if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); Utilities.Routines.Reaper.RefreshVars(); if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { if (await Utility.Soulsow()) { return(true); } return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (BotManager.Current.IsAutonomous) { if (Core.Me.HasTarget) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach); } } if (await Buff.FightLogic_ArcaneCrest()) { return(true); } if (await Buff.FightLogic_Feint()) { return(true); } if (Core.Me.HasAura(Auras.Enshrouded)) //Enshroud Mode { if (ReaperRoutine.GlobalCooldown.CanWeave(1)) { if (await Enshroud.AoE.LemuresScythe()) { return(true); } if (await Enshroud.SingleTarget.LemuresSlice()) { return(true); } } if (await Enshroud.AoE.Communio()) { return(true); } if (await Enshroud.AoE.GrimReaping()) { return(true); } if (await Enshroud.SingleTarget.VoidReaping()) { return(true); } if (await Enshroud.SingleTarget.CrossReaping()) { return(true); } if (await Enshroud.SingleTarget.LemuresSliceOfFWeave()) { return(true); } } else { if (ReaperRoutine.GlobalCooldown.CanWeave()) { if (await PhysicalDps.Interrupt(ReaperSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(ReaperSettings.Instance)) { return(true); } if (await PhysicalDps.Bloodbath(ReaperSettings.Instance)) { return(true); } if (await Cooldown.ArcaneCircle()) { return(true); } if (await Cooldown.Enshroud()) { return(true); } if (await Cooldown.Gluttony()) { return(true); } if (await AoE.GrimSwathe()) { return(true); } if (await SingleTarget.BloodStalk()) { return(true); } if (await Utility.TrueNorth()) { return(true); } } if (await Utility.Soulsow()) { return(true); } if (await AoE.WhorlofDeath()) { return(true); } if (await SingleTarget.ShadowOfDeath()) { return(true); } if (await AoE.HarvestMoon()) { return(true); } if (await AoE.PlentifulHarvest()) { return(true); } if (await AoE.Guillotine()) { return(true); } if (await SingleTarget.GibbetAndGallows()) { return(true); } if (await AoE.SoulScythe()) { return(true); } if (await SingleTarget.SoulSlice()) { return(true); } if (await AoE.NightmareScythe()) { return(true); } if (await SingleTarget.InfernalSlice()) { return(true); } if (await SingleTarget.WaxingSlice()) { return(true); } if (await AoE.WhorlofDeathIdle()) { return(true); } if (await AoE.SpinningScythe()) { return(true); } if (await SingleTarget.ShadowOfDeathIdle()) { return(true); } if (await SingleTarget.Slice()) { return(true); } if (await SingleTarget.HarvestMoon()) { return(true); } return(await SingleTarget.EnhancedHarpe()); } return(false); }
public static async Task <bool> Combat() { if (BotManager.Current.IsAutonomous) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach); } if (Core.Me.CurrentTarget == null) { return(false); } if (!Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } #region Positional Overlay if (BaseSettings.Instance.UsePositionalOverlay) { if (Core.Me.HasAura(Auras.SharperFangandClaw)) { if (!Core.Me.CurrentTarget.IsFlanking) { ViewModels.BaseSettings.Instance.PositionalStatus = "OutOfPosition"; ViewModels.BaseSettings.Instance.PositionalText = "Move To Flank"; } else { ViewModels.BaseSettings.Instance.PositionalStatus = "InPosition"; ViewModels.BaseSettings.Instance.PositionalText = "You're In Position"; } } if (Core.Me.HasAura(Auras.EnhancedWheelingThrust)) { if (!Core.Me.CurrentTarget.IsBehind) { ViewModels.BaseSettings.Instance.PositionalStatus = "OutOfPosition"; ViewModels.BaseSettings.Instance.PositionalText = "Move Behind"; } else { ViewModels.BaseSettings.Instance.PositionalStatus = "InPosition"; ViewModels.BaseSettings.Instance.PositionalText = "You're In Position"; } } if (ActionManager.LastSpell == Spells.Disembowel) { if (!Core.Me.CurrentTarget.IsBehind) { ViewModels.BaseSettings.Instance.PositionalStatus = "OutOfPosition"; ViewModels.BaseSettings.Instance.PositionalText = "Move Behind"; } else { ViewModels.BaseSettings.Instance.PositionalStatus = "InPosition"; ViewModels.BaseSettings.Instance.PositionalText = "You're In Position"; } } } #endregion #region Off GCD debugging if (Utilities.Routines.Dragoon.Jumps.Contains(Casting.LastSpell)) { // Check to see if we're OFF GCD if (Spells.TrueThrust.Cooldown == TimeSpan.Zero) { // Start the stopwatch if it isn't running if (!JumpGcdTimer.IsRunning) { JumpGcdTimer.Restart(); } } } else { // We didn't use a Jump last, check to see if the stopwatch is running if (JumpGcdTimer.IsRunning) { // We'll give a 50ms buffer for the time it takes to tick if (JumpGcdTimer.ElapsedMilliseconds > 50) { Logger.WriteInfo($@"We wasted {JumpGcdTimer.ElapsedMilliseconds} ms off GCD"); } // Stop the stopwatch JumpGcdTimer.Stop(); } } #endregion if (await PhysicalDps.Interrupt(DragoonSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(DragoonSettings.Instance)) { return(true); } if (await PhysicalDps.Bloodbath(DragoonSettings.Instance)) { return(true); } Utilities.Routines.Dragoon.EnemiesInView = Utilities.Combat.Enemies.Count(r => r.Distance(Core.Me) <= 10 + r.CombatReach && r.InView()); if (Utilities.Routines.Dragoon.OnGcd && !_usedJumpDuringGcd) { if (await Jumps.MirageDive()) { _usedJumpDuringGcd = true; return(true); } if (await Jumps.Execute()) { _usedJumpDuringGcd = true; return(true); } if (await SingleTarget.Geirskogul()) { return(true); } if (await Buff.LanceCharge()) { return(true); } if (await Aoe.Nastrond()) { return(true); } if (await Buff.BloodOfTheDragon()) { return(true); } if (await Buff.DragonSight()) { return(true); } if (await Buff.BattleLitany()) { return(true); } return(await Buff.TrueNorth()); } if (await OffGlobalCooldownRotation()) { _usedJumpDuringGcd = false; return(true); } return(false); }
public static async Task <bool> Combat() { if (BotManager.Current.IsAutonomous) { if (Core.Me.HasTarget) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach); } } if (!Core.Me.HasTarget && !Core.Me.InCombat) { return(false); } if (!Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } #region Off GCD debugging if (DragoonRoutine.JumpsList.Contains(Casting.LastSpell)) { // Check to see if we're OFF GCD if (Spells.TrueThrust.Cooldown == TimeSpan.Zero) { // Start the stopwatch if it isn't running if (!JumpGcdTimer.IsRunning) { JumpGcdTimer.Restart(); } } } else { // We didn't use a Jump last, check to see if the stopwatch is running if (JumpGcdTimer.IsRunning) { // We'll give a 50ms buffer for the time it takes to tick if (JumpGcdTimer.ElapsedMilliseconds > 50) { Logger.WriteInfo($@"We wasted {JumpGcdTimer.ElapsedMilliseconds} ms off GCD"); } // Stop the stopwatch JumpGcdTimer.Stop(); } } #endregion //Utility if (await PhysicalDps.Interrupt(DragoonSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(DragoonSettings.Instance)) { return(true); } if (await PhysicalDps.Bloodbath(DragoonSettings.Instance)) { return(true); } if (DragoonRoutine.GlobalCooldown.CanWeave() && !DragoonRoutine.SingleWeaveJumpsList.Contains(Casting.LastSpell)) { //Buffs if (await Buff.ForceDragonSight()) { return(true); } if (await Buff.LanceCharge()) { return(true); } if (await Buff.DragonSight()) { return(true); } if (await Buff.BattleLitany()) { return(true); } if (await Buff.LifeSurge()) { return(true); } if (await Utility.TrueNorth()) { return(true); } //oGCD - Jump if (await Aoe.WyrmwindThrust()) { return(true); } if (await Jumps.MirageDive()) { return(true); //DoubleWeave } if (await Aoe.Geirskogul()) { return(true); } if (await Aoe.Nastrond()) { return(true); } if (DragoonRoutine.GlobalCooldown.CanWeave(1)) { if (await Jumps.HighJump()) { return(true); //SingleWeave } if (await Jumps.DragonfireDive()) { return(true); //SingleWeave } if (await Jumps.SpineshatterDive()) { return(true); //SingleWeave } if (await Jumps.Stardiver()) { return(true); //SingleWeave } } } if (await Aoe.DraconianFury()) { return(true); } if (await Aoe.CoerthanTorment()) { return(true); } if (await Aoe.SonicThrust()) { return(true); } if (await Aoe.DoomSpike()) { return(true); } if (await SingleTarget.RaidenThrust()) { return(true); } // Combo 2 if (await SingleTarget.FangAndClaw()) { return(true); } if (await SingleTarget.HeavensThrust()) { return(true); } if (await SingleTarget.VorpalThrust()) { return(true); } // Combo 1 + DOT if (await SingleTarget.WheelingThrust()) { return(true); } if (await SingleTarget.ChaoticSpring()) { return(true); } if (await SingleTarget.Disembowel()) { return(true); } return(await SingleTarget.TrueThrust()); }