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 (!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 GambitLogic.Gambit()) { return(true); } if (await Buff.DancePartner()) { return(true); } if (await Aoe.StarfallDance()) { return(true); } if (await Dances.Tillana()) { return(true); } if (await Dances.StandardStep()) { return(true); } if (await Dances.TechnicalStep()) { return(true); } if (await Dances.DanceStep()) { return(true); } if (Core.Me.HasAura(Auras.StandardStep) || Core.Me.HasAura(Auras.TechnicalStep)) { return(false); } if (DancerRoutine.GlobalCooldown.CanWeave()) { if (await PhysicalDps.Interrupt(DancerSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(DancerSettings.Instance)) { return(true); } if (await Buff.CuringWaltz()) { return(true); } if (await Buff.PreTechnicalDevilment()) { return(true); } if (await Aoe.FanDance3()) { return(true); } if (await Aoe.FanDance2()) { return(true); } if (await SingleTarget.FanDance()) { return(true); } if (await Aoe.FanDance4()) { return(true); } if (await Buff.Flourish()) { return(true); } if (await Buff.Devilment()) { return(true); } if (await Buff.Improvisation()) { return(true); } } if (await Aoe.SaberDance()) { return(true); } if (await Aoe.Bloodshower()) { return(true); } if (await Aoe.RisingWindmill()) { return(true); } if (await SingleTarget.Fountainfall()) { return(true); } if (await SingleTarget.ReverseCascade()) { return(true); } if (await Aoe.Bladeshower()) { return(true); } if (await Aoe.Windmill()) { return(true); } if (await SingleTarget.Fountain()) { return(true); } return(await SingleTarget.Cascade()); }
public static async Task <bool> Combat() { if (BotManager.Current.IsAutonomous) { if (Core.Me.HasTarget) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 23); } } if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (MachinistSettings.Instance.UseFlamethrower && Core.Me.HasAura(Auras.Flamethrower)) { // First check movement otherwise Flamethrower can be executed whereas you are moving if (MovementManager.IsMoving) { return(false); } if (!MachinistSettings.Instance.UseFlamethrower) { return(true); } if (Core.Me.EnemiesInCone(8) >= MachinistSettings.Instance.FlamethrowerEnemyCount) { return(true); } } //oGCDs //Utility if (await Utility.Tactician()) { return(true); } if (await PhysicalDps.ArmsLength(MachinistSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(MachinistSettings.Instance)) { return(true); } if (await Utility.HeadGraze()) { return(true); } if (Weaving.GetCurrentWeavingCounter() < 2) { //Pets if (await Pet.RookQueen()) { return(true); } if (await Pet.RookQueenOverdrive()) { return(true); } //Cooldowns if (await Cooldowns.Wildfire()) { return(true); } if (await Cooldowns.Hypercharge()) { return(true); } if (await Cooldowns.Reassemble()) { return(true); } if (await Cooldowns.BarrelStabilizer()) { return(true); } //oGCDs if (await SingleTarget.GaussRound()) { return(true); } if (await MultiTarget.Ricochet()) { return(true); } } //GCDs - Top Hypercharge Priority if (await MultiTarget.AutoCrossbow()) { return(true); } if (await SingleTarget.HeatBlast()) { return(true); } //Use On CD if (await MultiTarget.BioBlaster()) { return(true); } if (await SingleTarget.Drill()) { return(true); } if (await SingleTarget.HotAirAnchor()) { return(true); } if (await MultiTarget.Flamethrower()) { return(true); } if (await MultiTarget.SpreadShot()) { return(true); } //Default Combo if (Core.Me.ClassLevel > 58) { if (Spells.Drill.Cooldown.TotalMilliseconds > 100) { if (await SingleTarget.HeatedCleanShot()) { return(true); } if (await SingleTarget.HeatedSlugShot()) { return(true); } } } else { if (await SingleTarget.HeatedCleanShot()) { return(true); } if (await SingleTarget.HeatedSlugShot()) { return(true); } } return(await SingleTarget.HeatedSplitShot()); }
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> Execute() { Group.UpdateAllies(); if (BotManager.Current.IsAutonomous) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 3 + Core.Me.CurrentTarget.CombatReach); } if (await GambitLogic.Gambit()) { return(true); } 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.DancePartner()) { return(true); } if (await Dances.StartTechnicalDance()) { return(true); } if (Dances.TechnicalStep()) { return(true); } if (await Dances.StartStandardDance()) { return(true); } if (Dances.StandardStep()) { return(true); } if (Utilities.Routines.Dancer.OnGcd) { //Only cast spells that are instant/off gcd if (await Buff.PreTechnicalDevilment()) { return(true); } if (await Aoe.FanDance3()) { return(true); } if (await Aoe.FanDance2()) { return(true); } if (await SingleTarget.FanDance()) { return(true); } if (await Buff.Flourish()) { return(true); } if (await Buff.Devilment()) { return(true); } if (await Buff.CuringWaltz()) { return(true); } if (await Buff.Improvisation()) { return(true); } if (await PhysicalDps.SecondWind(DancerSettings.Instance)) { return(true); } } if (await Aoe.SaberDance()) { return(true); } if (await Aoe.Bloodshower()) { return(true); } if (await Aoe.RisingWindmill()) { return(true); } if (await SingleTarget.Fountainfall()) { return(true); } if (await SingleTarget.ReverseCascade()) { return(true); } if (await Aoe.Bladeshower()) { return(true); } if (await Aoe.Windmill()) { return(true); } if (await SingleTarget.Fountain()) { return(true); } return(await SingleTarget.Cascade()); }
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 (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, 20 + Core.Me.CurrentTarget.CombatReach); } } if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); BardRoutine.RefreshVars(); if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (BardRoutine.GlobalCooldown.CanWeave()) { // Utility if (await Utility.RepellingShot()) { return(true); } if (await Utility.WardensPaean()) { return(true); } if (await Utility.NaturesMinne()) { return(true); } if (await Utility.Troubadour()) { return(true); } if (await PhysicalDps.ArmsLength(BardSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(BardSettings.Instance)) { return(true); } if (await PhysicalDps.Interrupt(BardSettings.Instance)) { return(true); } // Damage if (await SingleTarget.LastPossiblePitchPerfectDuringWM()) { return(true); } if (await Songs.LetMeSingYouTheSongOfMyPeople()) { return(true); } if (await Cooldowns.RagingStrikes()) { return(true); } if (await Cooldowns.BattleVoice()) { return(true); } if (await Cooldowns.RadiantFinale()) { return(true); } if (await Cooldowns.Barrage()) { return(true); } if (await SingleTarget.PitchPerfect()) { return(true); } if (await Aoe.RainOfDeathDuringMagesBallard()) { return(true); } if (await SingleTarget.BloodletterInMagesBallard()) { return(true); } if (await SingleTarget.EmpyrealArrow()) { return(true); } if (await SingleTarget.Sidewinder()) { return(true); } if (await Aoe.RainOfDeath()) { return(true); } if (await SingleTarget.Bloodletter()) { return(true); } } if (await DamageOverTime.IronJawsOnCurrentTarget()) { return(true); } if (await DamageOverTime.SnapShotIronJawsOnCurrentTarget()) { return(true); } if (await SingleTarget.StraightShotAfterBarrage()) { return(true); } if (await DamageOverTime.WindbiteOnCurrentTarget()) { return(true); } if (await DamageOverTime.VenomousBiteOnCurrentTarget()) { return(true); } if (await Aoe.BlastArrow()) { return(true); } if (await Aoe.ApexArrow()) { return(true); } if (await Aoe.ShadowBite()) { return(true); } if (await DamageOverTime.IronJawsOnOffTarget()) { return(true); } if (await DamageOverTime.WindbiteOnOffTarget()) { return(true); } if (await DamageOverTime.VenomousBiteOnOffTarget()) { return(true); } if (await Aoe.LadonsBite()) { return(true); } if (await SingleTarget.StraightShot()) { return(true); } return(await SingleTarget.HeavyShot()); }
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> Execute() { Group.UpdateAllies(); if (Core.Me.IsCasting) { return(true); } if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); Globals.InParty = PartyManager.IsInParty; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2) || Core.Me.InCombat; Utilities.Routines.Bard.RefreshVars(); if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (BotManager.Current.IsAutonomous) { if (Core.Me.HasTarget) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 20); } } if (Weaving.GetCurrentWeavingCounter() < 2 && Spells.HeavyShot.Cooldown.TotalMilliseconds > 650 + BaseSettings.Instance.UserLatencyOffset) { // Utility if (await Utility.RepellingShot()) { return(true); } if (await Utility.WardensPaean()) { return(true); } if (await Utility.NaturesMinne()) { return(true); } if (await Utility.Troubadour()) { return(true); } if (await PhysicalDps.ArmsLength(BardSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(BardSettings.Instance)) { return(true); } if (await Utility.HeadGraze()) { return(true); } // Damage if (await SingleTarget.LastPossiblePitchPerfectDuringWM()) { return(true); } if (await Songs.LetMeSingYouTheSongOfMyPeople()) { return(true); } if (await Cooldowns.BattleVoice()) { return(true); } if (await Cooldowns.RagingStrikes()) { return(true); } if (await Cooldowns.Barrage()) { return(true); } if (await SingleTarget.PitchPerfect()) { return(true); } if (await Aoe.RainOfDeathDuringMagesBallard()) { return(true); } if (await SingleTarget.BloodletterInMagesBallard()) { return(true); } if (await SingleTarget.EmpyrealArrow()) { return(true); } if (await Aoe.ShadowBite()) { return(true); } if (await SingleTarget.Sidewinder()) { return(true); } if (await Aoe.RainOfDeath()) { return(true); } if (await SingleTarget.Bloodletter()) { return(true); } } if (await SingleTarget.StraightShotAfterBarrage()) { return(true); } if (await DamageOverTime.IronJawsOnCurrentTarget()) { return(true); } if (await DamageOverTime.SnapShotIronJawsOnCurrentTarget()) { return(true); } if (await DamageOverTime.WindbiteOnCurrentTarget()) { return(true); } if (await DamageOverTime.VenomousBiteOnCurrentTarget()) { return(true); } if (await Aoe.ApexArrow()) { return(true); } if (await DamageOverTime.IronJawsOnOffTarget()) { return(true); } if (await DamageOverTime.WindbiteOnOffTarget()) { return(true); } if (await DamageOverTime.VenomousBiteOnOffTarget()) { return(true); } if (await Aoe.QuickNock()) { return(true); } if (await SingleTarget.StraightShot()) { return(true); } return(await SingleTarget.HeavyShot()); }
public static async Task <bool> Combat() { if (BotManager.Current.IsAutonomous) { if (Core.Me.HasTarget) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 20 + Core.Me.CurrentTarget.CombatReach); } } if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (MachinistSettings.Instance.UseFlamethrower && Core.Me.HasAura(Auras.Flamethrower)) { // First check movement otherwise Flamethrower can be executed whereas you are moving if (MovementManager.IsMoving) { return(false); } if (!MachinistSettings.Instance.UseFlamethrower) { return(true); } if (Core.Me.EnemiesInCone(8) >= MachinistSettings.Instance.FlamethrowerEnemyCount) { return(true); } } if (ActionResourceManager.Machinist.OverheatRemaining != TimeSpan.Zero) { if (MachinistRoutine.GlobalCooldown.CanWeave(1)) { //Utility if (await PhysicalDps.ArmsLength(MachinistSettings.Instance)) { return(true); } if (await PhysicalDps.Interrupt(MachinistSettings.Instance)) { return(true); } //Pets if (await Pet.RookQueen()) { return(true); } //Cooldowns if (await Cooldowns.BarrelStabilizer()) { return(true); } //oGCDs if (await SingleTarget.GaussRound()) { return(true); } if (await MultiTarget.Ricochet()) { return(true); } //Cooldowns if (await Cooldowns.Reassemble()) { return(true); } } } else { if (MachinistRoutine.GlobalCooldown.CanWeave()) { //Utility if (await Utility.Tactician()) { return(true); } if (await PhysicalDps.ArmsLength(MachinistSettings.Instance)) { return(true); } if (await PhysicalDps.SecondWind(MachinistSettings.Instance)) { return(true); } if (await PhysicalDps.Interrupt(MachinistSettings.Instance)) { return(true); } //Pets if (await Pet.RookQueen()) { return(true); } if (await Pet.RookQueenOverdrive()) { return(true); } //Cooldowns if (await Cooldowns.Wildfire()) { return(true); } if (await Cooldowns.Hypercharge()) { return(true); } if (await Cooldowns.Reassemble()) { return(true); } if (await Cooldowns.BarrelStabilizer()) { return(true); } //oGCDs if (await SingleTarget.GaussRound()) { return(true); } if (await MultiTarget.Ricochet()) { return(true); } } } //GCDs - Top Hypercharge Priority if (await MultiTarget.AutoCrossbow()) { return(true); } if (await SingleTarget.HeatBlast()) { return(true); } //Use On CD if (await MultiTarget.ChainSaw()) { return(true); } if (await MultiTarget.BioBlaster()) { return(true); } if (await SingleTarget.Drill()) { return(true); } if (await SingleTarget.HotAirAnchor()) { return(true); } if (await MultiTarget.Flamethrower()) { return(true); } if (await MultiTarget.Scattergun()) { return(true); } //Default Combo if (await SingleTarget.HeatedCleanShot()) { return(true); } if (await SingleTarget.HeatedSlugShot()) { return(true); } return(await SingleTarget.HeatedSplitShot()); }
public static async Task <bool> Combat() { Utilities.Routines.Ninja.RefreshVars(); //Logger.Write("Ninki:" + Utilities.Routines.Ninja.ninki); 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 (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await PhysicalDps.Interrupt(NinjaSettings.Instance)) { return(true); } //if (Core.Me.HasAura(Auras.TenChiJin)) //{ // Logger.Error("Capturd TCJ"); // //Let's check which TCJ we will do. 1=Suiton/2-Doton // if (Utilities.Routines.Ninja.AoeEnemies5Yards > 1 && Utilities.Routines.Ninja.TCJState == 0 && !Core.Me.HasAura(Auras.Doton)) // { // Utilities.Routines.Ninja.TCJState = 2; // } // if (Utilities.Routines.Ninja.AoeEnemies5Yards < 2 && Utilities.Routines.Ninja.TCJState == 0) // { // Utilities.Routines.Ninja.TCJState = 1; // } // if (Utilities.Routines.Ninja.TCJState == 1) // { // if (Casting.LastSpell == Spells.Chi) // { // Utilities.Routines.Ninja.TCJState = 0; // return await Spells.Jin.Cast(Core.Me.CurrentTarget); // } // if (Casting.LastSpell == Spells.Ten) // { // return await Spells.Chi.Cast(Core.Me.CurrentTarget); // } // return await Spells.Ten.Cast(Core.Me.CurrentTarget); // } // if (Utilities.Routines.Ninja.TCJState == 2) // { // if (Casting.LastSpell == Spells.Jin) // { // Utilities.Routines.Ninja.TCJState = 0; // return await Spells.Chi.Cast(Core.Me); // } // if (Casting.LastSpell == Spells.Ten) // { // return await Spells.Jin.Cast(Core.Me.CurrentTarget); // } // return await Spells.Ten.Cast(Core.Me.CurrentTarget); // } //} if (Ninjutsu.ForceRaiton()) { return(true); } if (Spells.SpinningEdge.Cooldown.TotalMilliseconds > 650) { //Utility Force Toggle if (await PhysicalDps.ArmsLength(NinjaSettings.Instance)) { return(true); } if (await Utility.SecondWindForce()) { return(true); } if (await Utility.ShadeShift()) { return(true); } if (await Utility.TrueNorth()) { return(true); } if (await Utility.Feint()) { return(true); } if (await Utility.BloodBath()) { return(true); } if (await PhysicalDps.SecondWind(NinjaSettings.Instance)) { return(true); } //if (await PhysicalDps.SecondWind(NinjaSettings.Instance)) return true; if (await SingleTarget.TrickAttack()) { return(true); } if (await Ninjutsu.TenChiJin()) { return(true); } if (await Buff.Meisui()) { return(true); } //if (await Buff.TrueNorth()) return true; //if (await Buff.ShadeShift()) return true; if (await Buff.Bunshin()) { return(true); } if (await SingleTarget.Assassinate()) { return(true); } if (await Aoe.HellfrogMedium()) { return(true); } if (await SingleTarget.Bhavacakra()) { return(true); } if (await SingleTarget.Mug()) { return(true); } if (await Buff.Kassatsu()) { return(true); } if (await SingleTarget.DreamWithinADream()) { return(true); } } if (await SingleTarget.ShadowFang()) { return(true); } //Ninjutsu if (NinjutsuCheck()) { 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.ArmorCrush()) { return(true); } if (await SingleTarget.AeolianEdge()) { return(true); } if (await SingleTarget.GustSlash()) { return(true); } return(await SingleTarget.SpinningEdge()); }
public static async Task <bool> Execute() { if (BotManager.Current.IsAutonomous) { if (Core.Me.HasTarget) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 23); } } if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (MachinistSettings.Instance.UseFlameThrower && Core.Me.HasAura(Auras.Flamethrower)) { // Did someone use this manually? Make sure we don't cancel it... if (!MachinistSettings.Instance.UseFlameThrower) { return(true); } if (MovementManager.IsMoving) { return(false); } // Keep using it for the AOE benefit if we need to if (Core.Me.EnemiesInCone(8) >= MachinistSettings.Instance.FlamethrowerEnemies) { return(true); } } if (await PhysicalDps.SecondWind(MachinistSettings.Instance)) { return(true); } if (await PhysicalDps.Interrupt(MachinistSettings.Instance)) { return(true); } if (Utilities.Routines.Machinist.OnGcd) { if (await Buff.BarrelStabilizer()) { return(true); } if (await Buff.Wildfire()) { return(true); } if (await Buff.Hypercharge()) { return(true); } if (await Turret.AutomationQueen()) { return(true); } if (await Turret.Rook()) { return(true); } if (await Aoe.Flamethrower()) { return(true); } if (await Buff.Reassemble()) { return(true); } if (await SingleTarget.GaussRound()) { return(true); } if (MachinistSettings.Instance.UseAoe) { if (await Aoe.Ricochet()) { return(true); } } if (await Buff.Tactician()) { return(true); } return(true); } if (MachinistSettings.Instance.UseAoe) { if (Core.Me.EnemiesInCone(12) < MachinistSettings.Instance.AoeEnemies) { if (await Aoe.Bioblaster()) { return(true); } if (await SingleTarget.Drill()) { return(true); } } } if (await SingleTarget.AirAnchor()) { return(true); } if (await SingleTarget.HeatBlast()) { return(true); } if (MachinistSettings.Instance.UseAoe) { if (await Aoe.AutoCrossbow()) { return(true); } if (await Aoe.SpreadShot()) { return(true); } } if (await SingleTarget.HotShot()) { return(true); } if (await SingleTarget.CleanShot()) { return(true); } if (await SingleTarget.SlugShot()) { return(true); } return(await SingleTarget.SplitShot()); }
public static async Task <bool> Execute() { Group.UpdateAllies(); if (Core.Me.IsCasting) { return(true); } if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); Globals.InParty = PartyManager.IsInParty; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2); Utilities.Routines.Bard.RefreshVars(); if (!Core.Me.HasTarget || !Core.Me.CurrentTarget.ThoroughCanAttack()) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (BotManager.Current.IsAutonomous) { if (Core.Me.HasTarget) { Movement.NavigateToUnitLos(Core.Me.CurrentTarget, 20); } } if (await PhysicalDps.SecondWind(BardSettings.Instance)) { return(true); } if (await Buff.NaturesMinne()) { return(true); } if (await Dispel.Execute()) { return(true); } if (await Dot.IronJaws()) { return(true); } if (await Buff.BattleVoice()) { return(true); } if (await Buff.RagingStrikes()) { return(true); } if (await SingleTarget.RefulgentBarrage()) { return(true); } if (await SingleTarget.StraightShot()) { return(true); } if (await SingleTarget.EmpyrealArrow()) { return(true); } if (await SingleTarget.PitchPerfect()) { return(true); } if (Utilities.Routines.Bard.OnGcd) { if (await Songs.Sing()) { return(true); } if (await SingleTarget.SidewinderAndShadowbite()) { return(true); } if (await Aoe.RainOfDeath()) { return(true); } if (await SingleTarget.Bloodletter()) { return(true); } if (await SingleTarget.RepellingShot()) { return(true); } if (await SingleTarget.Feint()) { return(true); } } if (await Aoe.ApexArrow()) { return(true); } if (await Aoe.QuickNock()) { return(true); } if (await Dot.Windbite()) { return(true); } if (await Dot.VenomousBite()) { return(true); } if (await Dot.DotMultipleTargets()) { return(true); } return(await SingleTarget.HeavyShot()); }
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()); }