Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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();
                }
            }
        }
Exemplo n.º 5
0
        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());
        }
Exemplo n.º 6
0
        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();
        }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        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());
        }