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