Пример #1
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                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);

            if (ActionResourceManager.BlackMage.AstralStacks > 0 && ActionResourceManager.BlackMage.UmbralStacks == 0)
            {
                if (Core.Me.CurrentManaPercent < 70 && Spells.Transpose.Cooldown == TimeSpan.Zero)
                {
                    return(await Spells.Transpose.Cast(Core.Me));
                }
            }

            return(false);
        }
Пример #2
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            Group.UpdateAllies(Utilities.Routines.Scholar.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 (Core.Me.IsMounted)
            {
                return(false);
            }

            if (await Buff.SummonPet())
            {
                return(true);
            }
            return(await Buff.Aetherflow());
        }
Пример #3
0
        public static async Task <bool> Execute()
        {
            Group.UpdateAllies();

            if (PartyManager.IsInParty)
            {
                // If we're in a party and we die, but our group is still in combat, we don't want to reset the counter
                if (!Utilities.Combat.Enemies.Any())
                {
                    Utilities.Routines.Dragoon.MirageDives = 0;
                }
            }
            else
            {
                Utilities.Routines.Dragoon.MirageDives = 0;
            }

            Utilities.Routines.Dragoon.MirageDives = 0;

            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            await Casting.CheckForSuccessfulCast();

            Globals.InParty       = PartyManager.IsInParty;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);

            return(false);
        }
Пример #4
0
        public static async Task <bool> Execute()
        {
            if (Core.Me.IsMounted)
            {
                return(true);
            }

            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            Group.UpdateAllies();
            if (await GambitLogic.Gambit())
            {
                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);

            return(await Logic.Paladin.Heal.Clemency());
        }
Пример #5
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            Group.UpdateAllies();

            if (Core.Me.IsCasting)
            {
                return(true);
            }

            await Casting.CheckForSuccessfulCast();

            Globals.InParty       = PartyManager.IsInParty;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);

            if (Core.Me.IsMounted)
            {
                return(false);
            }

            return(await Buff.Oath());
        }
Пример #6
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            await Casting.CheckForSuccessfulCast();

            Globals.InParty       = PartyManager.IsInParty;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);

            if (await Buff.FistsOf())
            {
                return(true);
            }
            if (await Buff.Meditate())
            {
                return(true);
            }

            if (MonkSettings.Instance.UsePositionalToasts && Utilities.Routines.Monk.UseToast == 9)
            {
                Logger.Write($@"[Magitek] Initiated Toast for MNK");
                Thread T = new Thread(() => PositionalToast.PositionalLogic());
                Utilities.Routines.Monk.UseToast = 0;
                PositionalToast.SendToast("Toast Overlay Initiated", 5);
                T.Start();
            }

            return(false);
        }
Пример #7
0
        public static async Task <bool> Execute()
        {
            Group.UpdateAllies();

            if (await Chocobo.HandleChocobo())
            {
                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);
            if (await GambitLogic.Gambit())
            {
                return(true);
            }
            if (await Logic.RedMage.Heal.Verraise())
            {
                return(true);
            }
            return(await Logic.RedMage.Heal.Vercure());
        }
Пример #8
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                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);
            if (await GambitLogic.Gambit())
            {
                return(true);
            }

            if (Globals.InParty && WarriorSettings.Instance.OpenWithThreatCombo)
            {
                if (!Globals.PartyInCombat)
                {
                    Utilities.Routines.Warrior.NeedThreatCombo = true;
                }
            }

            return(false);
        }
Пример #9
0
        public static async Task <bool> SummonChocobo()
        {
            if (UltSettings.SummonChocobo &&
                BotManager.Current.IsAutonomous &&
                !PartyManager.IsInParty &&
                !MovementManager.IsMoving &&
                !Chocobo.Summoned &&
                Chocobo.CanSummon)
            {
                Chocobo.Summon();
                await Coroutine.Wait(1000, () => Chocobo.Summoned);

                if (!Chocobo.Summoned)
                {
                    return(await SummonChocobo());
                }
                if (Chocobo.Summoned)
                {
                    if (UltSettings.ChocoboFreeStance &&
                        Chocobo.Stance != CompanionStance.Free)
                    {
                        Chocobo.FreeStance();
                        await Coroutine.Wait(1000, () => Chocobo.Stance == CompanionStance.Free);

                        return(true);
                    }

                    if (UltSettings.ChocoboDefenderStance &&
                        Chocobo.Stance != CompanionStance.Defender)
                    {
                        Chocobo.DefenderStance();
                        await Coroutine.Wait(1000, () => Chocobo.Stance == CompanionStance.Defender);

                        return(true);
                    }

                    if (UltSettings.ChocoboAttackerStance &&
                        Chocobo.Stance != CompanionStance.Attacker)
                    {
                        Chocobo.AttackerStance();
                        await Coroutine.Wait(1000, () => Chocobo.Stance == CompanionStance.Attacker);

                        return(true);
                    }

                    if (UltSettings.ChocoboHealerStance &&
                        Chocobo.Stance != CompanionStance.Healer)
                    {
                        Chocobo.HealerStance();
                        await Coroutine.Wait(1000, () => Chocobo.Stance == CompanionStance.Healer);

                        return(true);
                    }
                }
                return(true);
            }
            return(false);
        }
Пример #10
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            Group.UpdateAllies();
            Globals.InParty       = PartyManager.IsInParty;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);

            return(await GambitLogic.Gambit());
        }
Пример #11
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            await Casting.CheckForSuccessfulCast();

            Globals.InParty       = PartyManager.IsInParty;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);

            return(await Buff.Defiance());
        }
        protected Composite SummonChocobo()
        {
            return(new PrioritySelector(
                       new Decorator(r => WindowSettings.SummonChocobo && !Chocobo.Summoned && Chocobo.CanSummon,
                                     new Action(r =>
            {
                if (MovementManager.IsMoving)
                {
                    Navigator.PlayerMover.MoveStop();
                }

                Chocobo.Summon();
                return RunStatus.Failure;
            }))
                       ));
        }
Пример #13
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());
        }
Пример #14
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            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);

            //Openers.OpenerCheck();

            if (Core.Me.HasTarget && Core.Me.CurrentTarget.CanAttack)
            {
                return(false);
            }

            if (Core.Me.OnPvpMap())
            {
                return(false);
            }

            if (await Buff.DancePartner())
            {
                return(true);
            }

            return(await PhysicalDps.Peloton(DancerSettings.Instance));


            return(false);
        }
Пример #15
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());
        }
Пример #16
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            if (Core.Me.IsCasting)
            {
                return(true);
            }

            await Casting.CheckForSuccessfulCast();

            SpellQueueLogic.SpellQueue.Clear();
            Globals.InParty       = PartyManager.IsInParty || Globals.InGcInstance;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);

            return(await Pets.Summon());
        }
Пример #17
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            Group.UpdateAllies();

            if (Core.Me.IsCasting)
            {
                return(true);
            }

            await Casting.CheckForSuccessfulCast();

            Globals.InParty       = PartyManager.IsInParty;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);
            Utilities.Routines.DarkKnight.PullUnleash = 0;
            return(await Buff.Grit());
        }
Пример #18
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            Group.UpdateAllies();

            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);

            return(await PhysicalDps.Peloton(MachinistSettings.Instance));
        }
Пример #19
0
        public static async Task <bool> Execute()
        {
            if (await Chocobo.HandleChocobo())
            {
                return(true);
            }

            await Casting.CheckForSuccessfulCast();

            Globals.InParty       = PartyManager.IsInParty;
            Globals.PartyInCombat = Globals.InParty && Utilities.Combat.Enemies.Any(r => r.TaggerType == 2);

            if (!SpellQueueLogic.SpellQueue.Any())
            {
                SpellQueueLogic.InSpellQueue = false;
            }

            if (SpellQueueLogic.SpellQueue.Any())
            {
                if (await SpellQueueLogic.SpellQueueMethod())
                {
                    return(true);
                }
            }

            if (!NinjaSettings.Instance.UseHutonOutsideOfCombat)
            {
                return(false);
            }

            if (NinjaSettings.Instance.UseHutonOutsideOfCombat)
            {
                if (!DutyManager.InInstance)
                {
                    return(false);
                }
            }

            return(Ninjutsu.Huton());
        }
Пример #20
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());
        }
Пример #21
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());
        }
Пример #22
0
        public static bool IsChocobo(this GameObject tar)
        {
            var gameObject = tar as Character;

            return(gameObject != null && Chocobo.Contains(gameObject.CurrentJob));
        }
Пример #23
0
        protected override Composite CreateBehavior()
        {
            return(new PrioritySelector(
                       new Decorator(ret => Talk.DialogOpen, new Action(ret => Talk.Next())),
                       new Decorator(ret => SelectYesno.IsOpen, new Action(ret => SelectYesno.ClickYes())),
                       CommonBehaviors.HandleLoading,
                       new Decorator(ret => QuestLogManager.InCutscene, new ActionAlwaysSucceed()),
                       new Decorator(ret => DutyManager.InInstance && Core.Player.IsVisible,
                                     new PrioritySelector(
                                         //r=> GuardianNPC,
                                         //new Decorator(ret => !initialized,new Action(ret => init())),
                                         //
                                         //new Decorator(r => NeedToMove && ((r as BattleCharacter) == null || !(r as BattleCharacter).IsValid || (r as BattleCharacter).Location.Distance2D(Core.Player.Location) <= 5), new Action(r => NeedToMove = false)),
                                         //new Decorator(r => NeedToMove, CommonBehaviors.MoveAndStop(r => (r as BattleCharacter).Location, 5f, true, "Moving back into guardian npc range")),
                                         //new Decorator(r => (r as BattleCharacter) != null && ((r as BattleCharacter).Location.DistanceSqr(Core.Player.Location) > LeashSquared), new ActionAlwaysFail()),

                                         new ActionRunCoroutine(r => DoControlLogic()),
                                         new Decorator(r => CombatTargeting.Instance.FirstUnit == null, new HookExecutor("HotspotPoi")),
                                         new HookExecutor("SetCombatPoi"),
                                         new ActionAlwaysSucceed()
                                         )
                                     ),
                       new Decorator(r => Chocobo.Summoned, new ActionRunCoroutine(r => Chocobo.DismissChocobo())),
                       CommonBehaviors.MoveAndStop(r => XYZ, InteractDistance, true),
                       CreateUseObject(),
                       new ActionAlwaysSucceed()
                       ));
        }
Пример #24
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());
        }
Пример #25
0
        public override async Task <bool> Heal()
        {
            Group.UpdateAllies();
            await Chocobo.HandleChocobo();

            switch (RotationManager.CurrentRotation)
            {
            case ClassJobType.Gladiator:
            case ClassJobType.Paladin:
                return(await Rotations.Paladin.Heal());

            case ClassJobType.Pugilist:
            case ClassJobType.Monk:
                return(await Rotations.Monk.Heal());

            case ClassJobType.Marauder:
            case ClassJobType.Warrior:
                return(await Rotations.Warrior.Heal());

            case ClassJobType.Lancer:
            case ClassJobType.Dragoon:
                return(await Rotations.Dragoon.Heal());

            case ClassJobType.Archer:
            case ClassJobType.Bard:
                return(await Rotations.Bard.Heal());

            case ClassJobType.Conjurer:
            case ClassJobType.WhiteMage:
                Group.UpdateAllies(Routines.WhiteMage.GroupExtension);
                Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault();
                return(await Rotations.WhiteMage.Heal());

            case ClassJobType.Thaumaturge:
            case ClassJobType.BlackMage:
                return(await Rotations.BlackMage.Heal());

            case ClassJobType.Arcanist:
            case ClassJobType.Summoner:
                return(await Rotations.Summoner.Heal());

            case ClassJobType.Scholar:
                Group.UpdateAllies(Routines.Scholar.GroupExtension);
                Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault();
                return(await Rotations.Scholar.Heal());

            case ClassJobType.Rogue:
            case ClassJobType.Ninja:
                return(await Rotations.Ninja.Heal());

            case ClassJobType.Machinist:
                return(await Rotations.Machinist.Heal());

            case ClassJobType.DarkKnight:
                return(await Rotations.DarkKnight.Heal());

            case ClassJobType.Astrologian:
                Group.UpdateAllies(Routines.Astrologian.GroupExtension);
                Globals.HealTarget = Group.CastableAlliesWithin30.OrderBy(x => x.CurrentHealthPercent).FirstOrDefault();
                return(await Rotations.Astrologian.Heal());

            case ClassJobType.Samurai:
                return(await Rotations.Samurai.Heal());

            case ClassJobType.BlueMage:
                return(await Rotations.BlueMage.Heal());

            case ClassJobType.RedMage:
                return(await Rotations.RedMage.Heal());

            case ClassJobType.Gunbreaker:
                return(await Rotations.Gunbreaker.Heal());

            case ClassJobType.Dancer:
                return(await Rotations.Dancer.Heal());

            default:
                return(false);
            }
        }
Пример #26
0
        public override async Task <bool> Combat()
        {
            Group.UpdateAllies();
            await Chocobo.HandleChocobo();

            switch (RotationManager.CurrentRotation)
            {
            case ClassJobType.Gladiator:
            case ClassJobType.Paladin:
                return(await Rotations.Paladin.Combat());

            case ClassJobType.Pugilist:
            case ClassJobType.Monk:
                return(await Rotations.Monk.Combat());

            case ClassJobType.Marauder:
            case ClassJobType.Warrior:
                return(await Rotations.Warrior.Combat());

            case ClassJobType.Lancer:
            case ClassJobType.Dragoon:
                return(await Rotations.Dragoon.Combat());

            case ClassJobType.Archer:
            case ClassJobType.Bard:
                return(await Rotations.Bard.Combat());

            case ClassJobType.Conjurer:
            case ClassJobType.WhiteMage:
                return(await Rotations.WhiteMage.Combat());

            case ClassJobType.Thaumaturge:
            case ClassJobType.BlackMage:
                return(await Rotations.BlackMage.Combat());

            case ClassJobType.Arcanist:
            case ClassJobType.Summoner:
                return(await Rotations.Summoner.Combat());

            case ClassJobType.Scholar:
                return(await Rotations.Scholar.Combat());

            case ClassJobType.Rogue:
            case ClassJobType.Ninja:
                return(await Rotations.Ninja.Combat());

            case ClassJobType.Machinist:
                return(await Rotations.Machinist.Combat());

            case ClassJobType.DarkKnight:
                return(await Rotations.DarkKnight.Combat());

            case ClassJobType.Astrologian:
                return(await Rotations.Astrologian.Combat());

            case ClassJobType.Samurai:
                return(await Rotations.Samurai.Combat());

            case ClassJobType.BlueMage:
                return(await Rotations.BlueMage.Combat());

            case ClassJobType.RedMage:
                return(await Rotations.RedMage.Combat());

            case ClassJobType.Gunbreaker:
                return(await Rotations.Gunbreaker.Combat());

            case ClassJobType.Dancer:
                return(await Rotations.Dancer.Combat());

            default:
                return(false);
            }
        }
Пример #27
0
        public override async Task <bool> Rest()
        {
            if (!BaseSettings.Instance.ActiveCombatRoutine)
            {
                return(false);
            }

            await Chocobo.HandleChocobo();

            switch (RotationManager.CurrentRotation)
            {
            case ClassJobType.Gladiator:
            case ClassJobType.Paladin:
                return(await Rotations.Paladin.Rest());

            case ClassJobType.Pugilist:
            case ClassJobType.Monk:
                return(await Rotations.Monk.Rest());

            case ClassJobType.Marauder:
            case ClassJobType.Warrior:
                return(await Rotations.Warrior.Rest());

            case ClassJobType.Lancer:
            case ClassJobType.Dragoon:
                return(await Rotations.Dragoon.Rest());

            case ClassJobType.Archer:
            case ClassJobType.Bard:
                return(await Rotations.Bard.Rest());

            case ClassJobType.Conjurer:
            case ClassJobType.WhiteMage:
                return(await Rotations.WhiteMage.Rest());

            case ClassJobType.Thaumaturge:
            case ClassJobType.BlackMage:
                return(await Rotations.BlackMage.Rest());

            case ClassJobType.Arcanist:
            case ClassJobType.Summoner:
                return(await Rotations.Summoner.Rest());

            case ClassJobType.Scholar:
                return(await Rotations.Scholar.Rest());

            case ClassJobType.Rogue:
            case ClassJobType.Ninja:
                return(await Rotations.Ninja.Rest());

            case ClassJobType.Machinist:
                return(await Rotations.Machinist.Rest());

            case ClassJobType.DarkKnight:
                return(await Rotations.DarkKnight.Rest());

            case ClassJobType.Astrologian:
                return(await Rotations.Astrologian.Rest());

            case ClassJobType.Samurai:
                return(await Rotations.Samurai.Rest());

            case ClassJobType.BlueMage:
                return(await Rotations.BlueMage.Rest());

            case ClassJobType.RedMage:
                return(await Rotations.RedMage.Rest());

            case ClassJobType.Gunbreaker:
                return(await Rotations.Gunbreaker.Rest());

            case ClassJobType.Dancer:
                return(await Rotations.Dancer.Rest());

            case ClassJobType.Reaper:
                return(await Rotations.Reaper.Rest());

            case ClassJobType.Sage:
                return(await Rotations.Sage.Rest());

            default:
                return(false);
            }
        }