public static async Task <bool> Execute() { if (WorldManager.InSanctuary) { return(false); } if (Core.Me.IsMounted) { return(false); } if (Duty.State() == Duty.States.Ended) { return(false); } if (await Chocobo.HandleChocobo()) { return(true); } Group.UpdateAllies(Utilities.Routines.Astrologian.GroupExtension); if (Core.Me.IsCasting) { return(true); } Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault(); await Casting.CheckForSuccessfulCast(); Globals.InParty = PartyManager.IsInParty || Globals.InGcInstance; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2); if (Globals.OnPvpMap) { return(false); } if (ActionResourceManager.Astrologian.Arcana == ActionResourceManager.Astrologian.AstrologianCard.None) { await Spells.Draw.Cast(Core.Me); } return(await Buff.Sect()); }
public static async Task <bool> Execute() { if (await Chocobo.HandleChocobo()) { return(true); } if (Core.Me.IsMounted) { return(true); } Group.UpdateAllies(Utilities.Routines.Scholar.GroupExtension); Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault(); if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); Casting.DoHealthChecks = false; Globals.InParty = PartyManager.IsInParty || Globals.InGcInstance; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2) || Core.Me.InCombat; Globals.OnPvpMap = Core.Me.OnPvpMap(); if (Duty.State() == Duty.States.Ended) { return(false); } if (await CustomOpenerLogic.Opener()) { return(true); } if (await GambitLogic.Gambit()) { return(true); } return(await Logic.Summoner.Heal.Physick()); }
public static async Task <bool> Execute() { if (await Chocobo.HandleChocobo()) { return(true); } Group.UpdateAllies(Utilities.Routines.WhiteMage.GroupExtension); if (Core.Me.IsCasting) { return(true); } Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault(); await Casting.CheckForSuccessfulCast(); if (Core.Me.OnPvpMap()) { return(await Heal.PvpRotation()); } Globals.InParty = PartyManager.IsInParty || Globals.InGcInstance; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2); if (Core.Me.IsMounted) { return(false); } if (Duty.State() == Duty.States.Ended) { return(false); } return(false); }
public void Pulse() { #region Job switching because events aren't reliable apparently if (CurrentJob != Core.Me.CurrentJob) { // Set our current job CurrentJob = Core.Me.CurrentJob; Logger.WriteInfo("Job Changed"); // Run the shit we need to Application.Current.Dispatcher.Invoke(delegate { GambitsViewModel.Instance.ApplyGambits(); OpenersViewModel.Instance.ApplyOpeners(); TogglesManager.LoadTogglesForCurrentJob(); }); RotationManager.Reset(); DispelManager.Reset(); InterruptsAndStunsManager.Reset(); TankBusterManager.ResetHealers(); TankBusterManager.ResetTanks(); } #endregion #region Zone switching because events aren't reliable apparently if (WorldManager.ZoneId != CurrentZone) { // Set the current zone CurrentZone = WorldManager.ZoneId; // Run the shit we need to GambitsViewModel.Instance.ApplyGambits(); OpenersViewModel.Instance.ApplyOpeners(); } #endregion Tracking.Update(); Combat.AdjustCombatTime(); Combat.AdjustDutyTime(); Debug.Instance.InCombatTime = (long)Combat.CombatTime.Elapsed.TotalSeconds; Debug.Instance.OutOfCombatTime = (int)Combat.OutOfCombatTime.Elapsed.TotalSeconds; Debug.Instance.InCombatMovingTime = (int)Combat.MovingInCombatTime.Elapsed.TotalSeconds; Debug.Instance.NotMovingInCombatTime = (int)Combat.NotMovingInCombatTime.Elapsed.TotalSeconds; Debug.Instance.DutyTime = (long)Combat.DutyTime.Elapsed.TotalSeconds; Debug.Instance.DutyState = Duty.State(); Debug.Instance.CastingGambit = Casting.CastingGambit; if (BaseSettings.Instance.DebugHealingLists) { Debug.Instance.CastableWithin10 = new ObservableCollection<GameObject>(Group.CastableAlliesWithin10); Debug.Instance.CastableWithin15 = new ObservableCollection<GameObject>(Group.CastableAlliesWithin15); Debug.Instance.CastableWithin30 = new ObservableCollection<GameObject>(Group.CastableAlliesWithin30); } if (Core.Me.InCombat) { Debug.Instance.InCombatTimeLeft = Combat.CombatTotalTimeLeft; Debug.Instance.Enmity = new AsyncObservableCollection<Enmity>(EnmityManager.EnmityList); } // Reset Zoom Limit based on ZoomHack Setting ZoomHack.Toggle(); if (Core.Me.HasTarget) { if (BaseSettings.Instance.DebugEnemyInfo) { Debug.Instance.IsBoss = XivDataHelper.BossDictionary.ContainsKey(Core.Me.CurrentTarget.NpcId) ? "True" : "False"; Debug.Instance.TargetCombatTimeLeft = Core.Me.CurrentTarget.CombatTimeLeft(); } } }
public static async Task <bool> Execute() { Group.UpdateAllies(Utilities.Routines.WhiteMage.GroupExtension); Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault(); if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); Casting.DoHealthChecks = false; Globals.InParty = PartyManager.IsInParty || Globals.InGcInstance; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2) || Core.Me.InCombat; Globals.OnPvpMap = Core.Me.OnPvpMap(); if (Core.Me.OnPvpMap()) { await PvpRotation(); return(true); } if (Duty.State() == Duty.States.Ended) { return(false); } if (await GambitLogic.Gambit()) { return(true); } if (await Chocobo.HandleChocobo()) { return(true); } if (Globals.PartyInCombat && Globals.InParty) { if (await TankBusters.Execute()) { return(true); } } if (await Logic.WhiteMage.Heal.Raise()) { return(true); } // Scalebound Extreme Rathalos if (Core.Me.HasAura(1495)) { if (await Dispel.Execute()) { return(true); } return(false); } if (Casting.LastSpell == Spells.PlenaryIndulgence) { if (await Logic.WhiteMage.Heal.Cure3()) { return(true); } if (await Logic.WhiteMage.Heal.Medica2()) { return(true); } return(await Spells.Medica.Cast(Core.Me)); } if (await Logic.WhiteMage.Heal.Benediction()) { return(true); } if (await Dispel.Execute()) { return(true); } if (await Buff.Temperance()) { return(true); } if (await Buff.ThinAir(false)) { return(true); } if (await Buff.DivineBenison()) { return(true); } if (await Logic.WhiteMage.Heal.PlenaryIndulgence()) { return(true); } if (await Buff.LucidDreaming()) { return(true); } if (await Buff.AssizeForMana()) { return(true); } if (await Buff.PresenceOfMind()) { return(true); } if (await Logic.WhiteMage.Heal.Tetragrammaton()) { return(true); } if (await Logic.WhiteMage.Heal.AfflatusSolace()) { return(true); } if (await Logic.WhiteMage.Heal.Cure3()) { return(true); } if (Globals.InParty) { if (await Logic.WhiteMage.Heal.AssizeHeal()) { return(true); } if (await Logic.WhiteMage.Heal.Benediction()) { return(true); } if (await Logic.WhiteMage.Heal.Tetragrammaton()) { return(true); } if (await Logic.WhiteMage.Heal.AfflatusRapture()) { return(true); } if (await Logic.WhiteMage.Heal.Medica()) { return(true); } if (await Logic.WhiteMage.Heal.Medica2()) { return(true); } if (await Logic.WhiteMage.Heal.Cure3()) { return(true); } if (await Logic.WhiteMage.Heal.Asylum()) { return(true); } } if (await Logic.WhiteMage.Heal.Cure2()) { return(true); } if (await Logic.WhiteMage.Heal.Cure()) { return(true); } if (await SingleTarget.FluidAura()) { return(true); } return(await Logic.WhiteMage.Heal.Regen()); }
public void Pulse() { #region Job switching because events aren't reliable apparently if (CurrentJob != Core.Me.CurrentJob) { // Set our current job CurrentJob = Core.Me.CurrentJob; Logger.WriteInfo("Job Changed"); // Run the shit we need to Application.Current.Dispatcher.Invoke(delegate { GambitsViewModel.Instance.ApplyGambits(); OpenersViewModel.Instance.ApplyOpeners(); TogglesManager.LoadTogglesForCurrentJob(); }); HookBehaviors(); DispelManager.Reset(); InterruptsAndStunsManager.Reset(); CombatMessageManager.RegisterMessageStrategiesForClass(Core.Me.CurrentJob); //TankBusterManager.ResetHealers(); //TankBusterManager.ResetTanks(); } #endregion #region Zone switching because events aren't reliable apparently if (WorldManager.ZoneId != CurrentZone) { // Set the current zone CurrentZone = WorldManager.ZoneId; // Run the shit we need to GambitsViewModel.Instance.ApplyGambits(); OpenersViewModel.Instance.ApplyOpeners(); } #endregion Tracking.Update(); Combat.AdjustCombatTime(); Combat.AdjustDutyTime(); Debug.Instance.InCombatTime = (long)Combat.CombatTime.Elapsed.TotalSeconds; Debug.Instance.OutOfCombatTime = (int)Combat.OutOfCombatTime.Elapsed.TotalSeconds; Debug.Instance.InCombatMovingTime = (int)Combat.MovingInCombatTime.Elapsed.TotalSeconds; Debug.Instance.NotMovingInCombatTime = (int)Combat.NotMovingInCombatTime.Elapsed.TotalSeconds; Debug.Instance.DutyTime = (long)Combat.DutyTime.Elapsed.TotalSeconds; Debug.Instance.DutyState = Duty.State(); Debug.Instance.CastingGambit = Casting.CastingGambit; if (BaseSettings.Instance.DebugHealingLists) { Debug.Instance.CastableWithin10 = new ObservableCollection <GameObject>(Group.CastableAlliesWithin10); Debug.Instance.CastableWithin15 = new ObservableCollection <GameObject>(Group.CastableAlliesWithin15); Debug.Instance.CastableWithin30 = new ObservableCollection <GameObject>(Group.CastableAlliesWithin30); } if (Core.Me.InCombat) { Debug.Instance.InCombatTimeLeft = Combat.CombatTotalTimeLeft; //Debug.Instance.Enmity = new AsyncObservableCollection<Enmity>(EnmityManager.EnmityList); } if (Core.Me.HasTarget) { if (BaseSettings.Instance.DebugEnemyInfo) { Debug.Instance.IsBoss = XivDataHelper.BossDictionary.ContainsKey(Core.Me.CurrentTarget.NpcId) ? "True" : "False"; Debug.Instance.TargetCombatTimeLeft = Core.Me.CurrentTarget.CombatTimeLeft(); } } if (DateTime.Now < _pulseLimiter) { return; } _pulseLimiter = DateTime.Now.AddSeconds(1); if (DateTime.Now > _saveFormTime) { Dispelling.Instance.Save(); InterruptsAndStuns.Instance.Save(); BaseSettings.Instance.Save(); //TankBusters.Instance.Save(); TogglesViewModel.Instance.SaveToggles(); #region Save Settings For All Routines Task.Run(SaveJobSettings); #endregion _saveFormTime = DateTime.Now.AddSeconds(60); } CombatMessageManager.UpdateDisplayedMessage(); }
public static async Task <bool> Execute() { if (await Chocobo.HandleChocobo()) { return(true); } Group.UpdateAllies(Utilities.Routines.Astrologian.GroupExtension); Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault(); if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); Casting.DoHealthChecks = false; Globals.InParty = PartyManager.IsInParty || Globals.InGcInstance; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2) || Core.Me.InCombat; Globals.OnPvpMap = Core.Me.OnPvpMap(); if (Duty.State() == Duty.States.Ended) { return(false); } if (await GambitLogic.Gambit()) { return(true); } if (Globals.OnPvpMap) { if (await Pvp.EssentialDignity()) { return(true); //Heal } if (await Pvp.Purify()) { return(true); //Dispel/Heal } if (await Pvp.Muse()) { return(true); //Self-Buff } if (await Pvp.Lightspeed()) { return(true); //CombatBuff } if (await Pvp.Synastry()) { return(true); //Heal } if (await Pvp.Deorbit()) { return(true); //Heal } if (await Pvp.EmpyreanRain()) { return(true); //Heal } if (await Pvp.Recuperate()) { return(true); //Self-Heal } if (await Pvp.Benefic2()) { return(true); //Heal } if (await Pvp.Benefic()) { return(true); //Heal } if (await Pvp.Concentrate()) { return(true); //CombatBuff/Heal } if (await Pvp.Safeguard()) { return(true); //CombatBuff/Shield } if (await Card.Play()) { return(true); } return(await Card.Draw()); } if (Globals.PartyInCombat && Globals.InParty) { if (await TankBusters.Execute()) { return(true); } } if (await Logic.Astrologian.Heal.Ascend()) { return(true); } // Scalebound Extreme Rathalos if (Core.Me.HasAura(1495)) { if (await Dispel.Execute()) { return(true); } return(false); } if (await Logic.Astrologian.Heal.EssentialDignity()) { return(true); } if (await Dispel.Execute()) { return(true); } if (await Buff.LucidDreaming()) { return(true); } if (await Buff.Lightspeed()) { return(true); } if (await Buff.Synastry()) { return(true); } if (await Buff.CelestialOpposition()) { return(true); } if (DutyManager.InInstance || Core.Me.InCombat) { if (Globals.InParty) { if (await Logic.Astrologian.Heal.EssentialDignity()) { return(true); } if (await Logic.Astrologian.Heal.AspectedHelios()) { return(true); } if (await Logic.Astrologian.Heal.CollectiveUnconscious()) { return(true); } if (await Logic.Astrologian.Heal.Helios()) { return(true); } if (await Logic.Astrologian.Heal.LadyOfCrowns()) { return(true); } if (await Logic.Astrologian.Heal.Benefic2()) { return(true); } } if (await Logic.Astrologian.Heal.Benefic()) { return(true); } if (await Logic.Astrologian.Heal.AspectedBenefic()) { return(true); } if (await Logic.Astrologian.Heal.EarthlyStar()) { return(true); } } if (await Logic.Astrologian.Heal.LadyOfCrowns()) { return(true); } if (await Logic.Astrologian.Heal.Benefic()) { return(true); } if (await Card.Play()) { return(true); } return(await Card.Draw()); }
public static async Task <bool> Execute() { if (await Chocobo.HandleChocobo()) { return(true); } if (Core.Me.IsMounted) { return(true); } Group.UpdateAllies(Utilities.Routines.Scholar.GroupExtension); Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault(); if (await Casting.TrackSpellCast()) { return(true); } await Casting.CheckForSuccessfulCast(); Casting.DoHealthChecks = false; Globals.InParty = PartyManager.IsInParty || Globals.InGcInstance; Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2) || Core.Me.InCombat; Globals.OnPvpMap = Core.Me.OnPvpMap(); if (Duty.State() == Duty.States.Ended) { return(false); } if (await GambitLogic.Gambit()) { return(true); } if (CustomOpenerLogic.InOpener) { return(false); } if (await Logic.Scholar.Heal.Resurrection()) { return(true); } // Scalebound Extreme Rathalos if (Core.Me.HasAura(1495)) { return(await Dispel.Execute()); } #region Pre-Healing Stuff if (Globals.PartyInCombat && Globals.InParty) { if (await TankBusters.Execute()) { return(true); } } if (await Buff.Aetherflow()) { return(true); } if (await Buff.LucidDreaming()) { return(true); } if (await Dispel.Execute()) { return(true); } if (Globals.InParty) { if (await Buff.DeploymentTactics()) { return(true); } if (await Buff.Aetherpact()) { return(true); } if (await Buff.BreakAetherpact()) { return(true); } } if (await Buff.ChainStrategem()) { return(true); } #endregion if (await Logic.Scholar.Heal.Excogitation()) { return(true); } if (await Logic.Scholar.Heal.Lustrate()) { return(true); } if (Core.Me.Pet != null && Core.Me.InCombat) { if (await Logic.Scholar.Heal.FeyBlessing()) { return(true); } if (await Logic.Scholar.Heal.WhisperingDawn()) { return(true); } if (await Logic.Scholar.Heal.FeyIllumination()) { return(true); } if (await Logic.Scholar.Heal.SummonSeraph()) { return(true); } if (await Logic.Scholar.Heal.Consolation()) { return(true); } } if (Globals.InParty) { if (await Logic.Scholar.Heal.Indomitability()) { return(true); } if (await Logic.Scholar.Heal.Succor()) { return(true); } if (await Logic.Scholar.Heal.SacredSoil()) { return(true); } } if (await Logic.Scholar.Heal.EmergencyTacticsAdlo()) { return(true); } if (await Logic.Scholar.Heal.Adloquium()) { return(true); } if (await Logic.Scholar.Heal.Physick()) { return(true); } if (await Buff.SummonPet()) { return(true); } if (Utilities.Combat.Enemies.Count > ScholarSettings.Instance.StopDamageWhenMoreThanEnemies) { return(true); } if (PartyManager.IsInParty) { if (!ScholarSettings.Instance.DoDamage) { return(true); } if (Core.Me.CurrentManaPercent < ScholarSettings.Instance.MinimumManaPercent) { return(true); } } return(await Aoe.ArtOfWar()); }