コード例 #1
0
        public static async Task <bool> FightLogic_ArcaneCrest()
        {
            if (!Spells.ArcaneCrest.IsKnownAndReady())
            {
                return(false);
            }

            if (!FightLogic.ZoneHasFightLogic() || !FightLogic.EnemyHasAnyAoeLogic())
            {
                return(false);
            }

            if (FightLogic.EnemyIsCastingAoe() || FightLogic.EnemyIsCastingBigAoe())
            {
                return(await FightLogic.DoAndBuffer(Spells.ArcaneCrest.CastAura(Core.Me, Auras.CrestOfTimeBorrowed)));
            }

            return(false);
        }
コード例 #2
0
        public static async Task <bool> FightLogic_Feint()
        {
            if (!Spells.Feint.IsKnownAndReady())
            {
                return(false);
            }

            if (!FightLogic.ZoneHasFightLogic())
            {
                return(false);
            }

            if (FightLogic.EnemyIsCastingAoe() ||
                FightLogic.EnemyIsCastingBigAoe() ||
                FightLogic.EnemyIsCastingTankBuster() != null ||
                FightLogic.EnemyIsCastingSharedTankBuster() != null)
            {
                return(await FightLogic.DoAndBuffer(Spells.Feint.CastAura(Core.Me.CurrentTarget, Auras.Feint)));
            }

            return(false);
        }
コード例 #3
0
        public static async Task <bool> CollectiveUnconscious()
        {
            if (!AstrologianSettings.Instance.CollectiveUnconscious)
            {
                return(false);
            }

            if (!Core.Me.InCombat)
            {
                return(false);
            }

            if (!Spells.CollectiveUnconscious.IsKnownAndReady())
            {
                return(false);
            }

            if (AstrologianSettings.Instance.FightLogic_CollectiveUnconscious && FightLogic.EnemyIsCastingAoe() &&
                Group.CastableAlliesWithin15.Count(x => x.WithinSpellRange(Spells.CollectiveUnconscious.Radius)) >
                AoeThreshold)
            {
                return(await FightLogic.DoAndBuffer(
                           Spells.CollectiveUnconscious.HealAura(Core.Me, Auras.CollectiveUnconsciousMitigation)));
            }


            if (Group.CastableAlliesWithin10.Count(r => r.Distance() < 6 &&
                                                   r.IsAlive &&
                                                   r.CurrentHealthPercent <= AstrologianSettings.Instance.CollectiveUnconsciousHealth)
                < AstrologianSettings.Instance.CollectiveUnconsciousAllies)
            {
                return(false);
            }

            return(await Spells.CollectiveUnconscious.HealAura(Core.Me, Auras.WheelOfFortune, false));
        }
コード例 #4
0
        public static async Task <bool> Aoe()
        {
            if (!Globals.InParty)
            {
                return(false);
            }

            if (!FightLogic.ZoneHasFightLogic())
            {
                return(false);
            }

            if (FightLogic.EnemyIsCastingBigAoe())
            {
                return(await BigAoe());
            }

            if (FightLogic.EnemyIsCastingAoe())
            {
                return(await JustAoe());
            }

            return(false);
        }
コード例 #5
0
        public static async Task <bool> Aoe()
        {
            if (!Globals.InParty)
            {
                return(false);
            }

            if (!FightLogic.ZoneHasFightLogic())
            {
                return(false);
            }

            if (!FightLogic.EnemyIsCastingBigAoe() && !FightLogic.EnemyIsCastingAoe())
            {
                return(false);
            }

            var useAoEBuffs = Heal.UseAoEHealingBuff(Group.CastableAlliesWithin15);

            if (SageSettings.Instance.FightLogic_Kerachole &&
                Spells.Kerachole.IsKnownAndReady() &&
                Addersgall >= 1 &&
                useAoEBuffs)
            {
                var targets   = Group.CastableAlliesWithin15.Where(r => !r.HasAura(Auras.Kerachole) && !r.HasAura(Auras.Taurochole));
                var tankCheck = !SageSettings.Instance.FightLogic_RespectOnlyTank ||
                                !SageSettings.Instance.KeracholeOnlyWithTank ||
                                targets.Any(r => r.IsTank(SageSettings.Instance.KeracholeOnlyWithMainTank));

                if (targets.Count() >= Heal.AoeNeedHealing &&
                    tankCheck)
                {
                    if (BaseSettings.Instance.DebugFightLogic)
                    {
                        Logger.WriteInfo($"[AOE Response] Cast Kerachole");
                    }
                    return(await FightLogic.DoAndBuffer(Spells.Kerachole.CastAura(Core.Me, Auras.Kerachole)));
                }
            }

            if (SageSettings.Instance.FightLogic_Panhaima &&
                Spells.Panhaima.IsKnownAndReady() &&
                useAoEBuffs)
            {
                var targets   = Group.CastableAlliesWithin15.Where(r => !r.HasAura(Auras.Panhaimatinon));
                var tankCheck = !SageSettings.Instance.FightLogic_RespectOnlyTank ||
                                !SageSettings.Instance.PanhaimaOnlyWithTank ||
                                targets.Any(r => r.IsTank(SageSettings.Instance.PanhaimaOnlyWithMainTank));

                if (targets.Count() >= Heal.AoeNeedHealing &&
                    tankCheck)
                {
                    if (BaseSettings.Instance.DebugFightLogic)
                    {
                        Logger.WriteInfo($"[AOE Response] Cast Panhaima");
                    }
                    return(await FightLogic.DoAndBuffer(Spells.Panhaima.CastAura(Core.Me, Auras.Panhaimatinon)));
                }
            }

            if (SageSettings.Instance.FightLogic_Holos &&
                Spells.Holos.IsKnownAndReady() &&
                useAoEBuffs)
            {
                var targets   = Group.CastableAlliesWithin15.Where(r => !r.HasAura(Auras.Holos));
                var tankCheck = !SageSettings.Instance.FightLogic_RespectOnlyTank ||
                                !SageSettings.Instance.HolosTankOnly ||
                                targets.Any(r => r.IsTank(SageSettings.Instance.HolosMainTankOnly));

                if (targets.Count() >= Heal.AoeNeedHealing &&
                    tankCheck)
                {
                    if (BaseSettings.Instance.DebugFightLogic)
                    {
                        Logger.WriteInfo($"[AOE Response] Cast Holos");
                    }
                    return(await FightLogic.DoAndBuffer(Spells.Holos.CastAura(Core.Me, Auras.Holos)));
                }
            }

            if (SageSettings.Instance.FightLogic_EukrasianPrognosis &&
                Core.Me.ClassLevel >= Spells.Eukrasia.LevelAcquired &&
                Heal.IsEukrasiaReady())
            {
                var targets = Group.CastableAlliesWithin15.Where(r => !r.HasAura(Auras.EukrasianDiagnosis) &&
                                                                 !r.HasAura(Auras.EukrasianPrognosis) &&
                                                                 !r.HasAura(Auras.Galvanize));
                var tankCheck = !SageSettings.Instance.FightLogic_RespectOnlyTank ||
                                targets.Any(r => r.IsTank());

                if (targets.Count() >= Heal.AoeNeedHealing &&
                    tankCheck)
                {
                    if (BaseSettings.Instance.DebugFightLogic)
                    {
                        Logger.WriteInfo($"[AOE Response] Cast Eukrasian Prognosis");
                    }
                    if (await Heal.UseEukrasia(Spells.EukrasianPrognosis.Id))
                    {
                        return(await FightLogic.DoAndBuffer(Spells.EukrasianPrognosis.HealAura(Core.Me, Auras.EukrasianPrognosis)));
                    }
                }
            }

            return(false);
        }