public static async Task <bool> Divination() { if (Combat.CombatTotalTimeLeft <= AstrologianSettings.Instance.DontPlayWhenCombatTimeIsLessThan) { return(false); } if (!AstrologianSettings.Instance.Play || !AstrologianSettings.Instance.Divination) { return(false); } if (DivinationSeals.Any(c => c == 0)) { return(false); } // Added check to see if more than configured allies are around var divinationTargets = Group.CastableAlliesWithin15.Count(r => r.IsAlive); if (divinationTargets >= AstrologianSettings.Instance.DivinationAllies) { return(await Spells.Divination.CastAura(Core.Me, Auras.Divination)); } return(false); }
public static async Task <bool> PlayCards() { if (!AstrologianSettings.Instance.UseDraw) { return(false); } var cardDrawn = Arcana != AstrologianCard.None; if (!cardDrawn) { if (ActionManager.CanCast(Spells.Draw, Core.Me) && AstrologianSettings.Instance.UseDraw) { if (await Spells.Draw.Cast(Core.Me)) { await Coroutine.Wait(750, () => Arcana != AstrologianCard.None); } } } if (Combat.CombatTotalTimeLeft <= AstrologianSettings.Instance.DontPlayWhenCombatTimeIsLessThan) { return(false); } if (AstrologianSettings.Instance.UseReDraw) { if (DivinationSeals.Any(c => c == 0)) { if (Spells.Redraw.Charges > 1) { switch (Arcana) { //Solar Seal case AstrologianCard.Balance: case AstrologianCard.Bole: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } break; //Lunar Seal case AstrologianCard.Arrow: case AstrologianCard.Ewer: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } break; //Celestial Seal case AstrologianCard.Spear: case AstrologianCard.Spire: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } break; } } } } if (Combat.CombatTotalTimeLeft <= AstrologianSettings.Instance.DontPlayWhenCombatTimeIsLessThan) { return(false); } if (DivinationSeals.All(c => c != 0) && AstrologianSettings.Instance.Divination) { await Spells.Divination.Cast(Core.Me); } if (!AstrologianSettings.Instance.Play) { return(false); } if (Globals.InParty) { switch (Arcana) { case AstrologianCard.Balance: case AstrologianCard.Arrow: case AstrologianCard.Spear: case AstrologianCard.LordofCrowns: return(await MeleeDpsOrTank(false)); case AstrologianCard.Bole: case AstrologianCard.Ewer: case AstrologianCard.Spire: case AstrologianCard.LadyofCrowns: return(await RangedDpsOrHealer(false)); } } return(await Spells.Play.Cast(Core.Me)); }
public static async Task <bool> PlayCards() { if (!AstrologianSettings.Instance.UseDraw) { return(false); } var cardDrawn = Arcana != AstrologianCard.None; if (!cardDrawn) { if (ActionManager.CanCast(Spells.Draw, Core.Me) && AstrologianSettings.Instance.UseDraw) { if (await Spells.Draw.Cast(Core.Me)) { await Coroutine.Wait(750, () => Arcana != AstrologianCard.None); } } } if (Combat.CombatTotalTimeLeft <= AstrologianSettings.Instance.DontPlayWhenCombatTimeIsLessThan) { return(false); } if (AstrologianSettings.Instance.UseReDraw) { if (DivinationSeals.Any(c => c == 0)) { // See if this fixes the thing if (Spells.Redraw.Charges >= 1) { switch (Arcana) { //Solar Seal case AstrologianCard.Balance: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Bole: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; //Lunar Seal case AstrologianCard.Arrow: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Ewer: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; //Celestial Seal case AstrologianCard.Spear: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Spire: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; } } //Redundant case for if 0 redraw but seal matches switch (Arcana) { //Solar Seal case AstrologianCard.Balance: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await MeleeDpsOrTank(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Bole: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await RangedDpsOrHealer(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; //Lunar Seal case AstrologianCard.Arrow: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await MeleeDpsOrTank(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Ewer: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await RangedDpsOrHealer(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; //Celestial Seal case AstrologianCard.Spear: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await MeleeDpsOrTank(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Spire: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await RangedDpsOrHealer(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; } // Minor Arcana switch (Arcana) { //Solar Seal case AstrologianCard.Balance: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(true)); } break; case AstrologianCard.Bole: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(true)); } break; //Lunar Seal case AstrologianCard.Arrow: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(true)); } break; case AstrologianCard.Ewer: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(true)); } break; //Celestial Seal case AstrologianCard.Spear: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(true)); } break; case AstrologianCard.Spire: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(true)); } break; } } // Minor Arcana if seals are full switch (Arcana) { //Solar Seal case AstrologianCard.Balance: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(true)); } break; case AstrologianCard.Bole: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(true)); } break; //Lunar Seal case AstrologianCard.Arrow: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(true)); } break; case AstrologianCard.Ewer: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(true)); } break; //Celestial Seal case AstrologianCard.Spear: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(true)); } break; case AstrologianCard.Spire: if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(true)); } break; } return(false); } // Regular case if no redraw is enabled if (Globals.InParty) { switch (Arcana) { //Solar Seal case AstrologianCard.Balance: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await MeleeDpsOrTank(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Bole: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await RangedDpsOrHealer(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; //Lunar Seal case AstrologianCard.Arrow: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await MeleeDpsOrTank(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Ewer: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await RangedDpsOrHealer(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; //Celestial Seal case AstrologianCard.Spear: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await MeleeDpsOrTank(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await MeleeDpsOrTank(false)); } break; case AstrologianCard.Spire: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await RangedDpsOrHealer(true)); } if (Core.Me.InCombat && AstrologianSettings.Instance.Play) { return(await RangedDpsOrHealer(false)); } break; } } if (Combat.CombatTotalTimeLeft <= AstrologianSettings.Instance.DontPlayWhenCombatTimeIsLessThan) { return(false); } if (!AstrologianSettings.Instance.Play) { return(false); } return(await Spells.Play.Cast(Core.Me)); }
public static async Task <bool> PlayCards() { if (!AstrologianSettings.Instance.UseDraw) { return(false); } var cardDrawn = Arcana != AstrologianCard.None; if (!cardDrawn) { if (await Spells.Draw.Cast(Core.Me)) { await Coroutine.Wait(750, () => Core.Me.HasAnyCardAura()); } } if (DivinationSeals.Any(c => c == 0)) { if (Spells.Redraw.Charges > 1) { switch (Arcana) { //Solar Seal case AstrologianCard.Balance: case AstrologianCard.Bole: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } break; //Lunar Seal case AstrologianCard.Arrow: case AstrologianCard.Ewer: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } break; //Celestial Seal case AstrologianCard.Spear: case AstrologianCard.Spire: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { return(await Spells.Redraw.Cast(Core.Me)); } break; } } } if (DivinationSeals.All(c => c != 0)) { await Spells.Divination.Cast(Core.Me); } if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal || c == AstrologianSeal.Lunar_Seal || c == AstrologianSeal.Celestial_Seal)) { switch (Arcana) { //Solar Seal case AstrologianCard.Balance: case AstrologianCard.Bole: if (DivinationSeals.Any(c => c == AstrologianSeal.Solar_Seal)) { await Spells.MinorArcana.Cast(Core.Me); } break; //Lunar Seal case AstrologianCard.Arrow: case AstrologianCard.Ewer: if (DivinationSeals.Any(c => c == AstrologianSeal.Lunar_Seal)) { await Spells.MinorArcana.Cast(Core.Me); } break; //Celestial Seal case AstrologianCard.Spear: case AstrologianCard.Spire: if (DivinationSeals.Any(c => c == AstrologianSeal.Celestial_Seal)) { await Spells.MinorArcana.Cast(Core.Me); } break; } } if (PartyManager.IsInParty) { switch (Arcana) { case AstrologianCard.Balance: case AstrologianCard.Arrow: case AstrologianCard.Spear: case AstrologianCard.LordofCrowns: return(await MeleeDpsOrTank()); case AstrologianCard.Bole: case AstrologianCard.Ewer: case AstrologianCard.Spire: case AstrologianCard.LadyofCrowns: return(await RangedDpsOrHealer()); } } return(await Spells.Play.Cast(Core.Me)); }