Example #1
0
        public static async Task <bool> AstroDyne()
        {
            if (!AstrologianSettings.Instance.Play || !AstrologianSettings.Instance.AstroDyne)
            {
                return(false);
            }

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

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

            if (Combat.CombatTotalTimeLeft <= AstrologianSettings.Instance.DontPlayWhenCombatTimeIsLessThan)
            {
                return(false);
            }

            if (DivinationSeals.All(seal => seal == 0))
            {
                return(false);
            }

            //1 = MP Regen

            if (DivinationSeals.Count(seal => seal != 0) == 1 && (Core.Me.CurrentManaPercent > AstrologianSettings.Instance.LucidDreamingManaPercent || Spells.LucidDreaming.IsReady() || Core.Me.HasAura(Auras.LucidDreaming)))
            {
                return(false);
            }

            //2 = MP Regen + Haste
            var hasteThreshold = PartyManager.NumMembers == 4 ? 2 : 3;

            if (DivinationSeals.Count(seal => seal != 0) == 2 && (Spells.EssentialDignity.Charges > 0 || Group.CastableAlliesWithin30.Count(r => r.CurrentManaPercent <= 60) <= hasteThreshold || Spells.Lightspeed.IsReady()))
            {
                return(false);
            }

            if (Core.Me.HasAura(Auras.Lightspeed))
            {
                return(false);
            }

            //3 = MP Regen + Haste + Dmg (or shortcut from above logic)
            return(await Spells.Astrodyne.Cast(Core.Me));
        }
Example #2
0
        public static async Task <bool> SleeveDraw()
        {
            if (Core.Me.ClassLevel < Spells.SleeveDraw.LevelAcquired)
            {
                return(false);
            }

            if (Spells.SleeveDraw.Cooldown != TimeSpan.Zero)
            {
                return(false);
            }

            if (DivinationSeals.All(c => c == 0))
            {
                return(false);
            }

            var cardDrawn = Arcana != AstrologianCard.None;

            if (cardDrawn)
            {
                return(false);
            }

            if (!AstrologianSettings.Instance.Play)
            {
                return(false);
            }

            if (DivinationSeals.Count(c => c == 0) == 1)
            {
                return(await Spells.SleeveDraw.Cast(Core.Me));
            }

            return(false);
        }