예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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));
        }