public static async Task <bool> PitchPerfect() { if (!BardSettings.Instance.UsePitchPerfect) { return(false); } if (!Spells.PitchPerfect.IsReady()) { return(false); } if (ActionResourceManager.Bard.ActiveSong != BardSong.WanderersMinuet) { return(false); } if (ActionResourceManager.Bard.Repertoire == 0) { return(false); } if (BardRoutine.NextTickUnderCurrentSong() < 550) { return(await Spells.PitchPerfect.Cast(Core.Me.CurrentTarget)); } if (ActionResourceManager.Bard.Repertoire < BardSettings.Instance.UsePitchPerfectAtRepertoire) { return(false); } return(await Spells.PitchPerfect.Cast(Core.Me.CurrentTarget)); }
public static async Task <bool> EmpyrealArrow() { if (!BardSettings.Instance.UseEmpyrealArrow) { return(false); } if (!Spells.EmpyrealArrow.IsKnown()) { return(false); } switch (ActionResourceManager.Bard.ActiveSong) { case BardSong.None: return(false); case BardSong.MagesBallad: if (Spells.Bloodletter.Cooldown == TimeSpan.Zero) { return(false); } break; case BardSong.WanderersMinuet: if (ActionResourceManager.Bard.Repertoire == 3) { return(false); } if (ActionResourceManager.Bard.Repertoire == 0 && BardRoutine.CurrentSongDuration() <= 1000 && BardRoutine.NextTickUnderCurrentSong() <= 0) { return(false); } break; case BardSong.ArmysPaeon: if (BardSettings.Instance.CurrentSongPlaylist == SongStrategyEnum.WM_MB_AP) { if (BardRoutine.CurrentSongDuration() <= BardSettings.Instance.DontUseEmpyrealArrowWhenSongEndsInXSeconds) { return(false); } } break; default: break; } return(await Spells.EmpyrealArrow.Cast(Core.Me.CurrentTarget)); }
public static async Task <bool> LastPossiblePitchPerfectDuringWM() { if (!BardSettings.Instance.UsePitchPerfect) { return(false); } if (!Spells.PitchPerfect.IsReady()) { return(false); } if (!BardSong.WanderersMinuet.Equals(ActionResourceManager.Bard.ActiveSong)) { return(false); } if (BardRoutine.NextTickUnderCurrentSong() > 500) { return(false); } return(await Spells.PitchPerfect.Cast(Core.Me.CurrentTarget)); }