コード例 #1
0
ファイル: Dps.cs プロジェクト: Fryheit/ATB_Builds
        private static async Task <bool> DpsTask()
        {
            if (Me.IsDead || Me.IsMounted)
            {
                return(false);
            }

            if (Me.InCombat || Target != null && TargetConverted && ConvertedTarget().TaggerType != 0)
            {
                return(await BrainBehavior.CombatLogic.ExecuteCoroutine());
            }

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

            if (RoutineManager.Current.RestBehavior != null)
            {
                await RoutineManager.Current.RestBehavior.ExecuteCoroutine();
            }

            if (RoutineManager.Current.PreCombatBuffBehavior != null)
            {
                await RoutineManager.Current.PreCombatBuffBehavior.ExecuteCoroutine();
            }

            if (RoutineManager.Current.HealBehavior != null)
            {
                await RoutineManager.Current.HealBehavior.ExecuteCoroutine();
            }

            if (PartyManager.IsInParty && MainSettingsModel.Instance.UseSmartPull)
            {
                if (Me.CurrentTarget != null)
                {
                    if (Target != null && TargetConverted && ConvertedTarget().Tapped&& ConvertedTarget().TaggerType == 2)
                    {
                        if (RoutineManager.Current.PullBuffBehavior != null && TargetingManager.IsValidEnemy(Core.Player.CurrentTarget))
                        {
                            await RoutineManager.Current.PullBuffBehavior.ExecuteCoroutine();
                        }

                        if (RoutineManager.Current.PullBehavior != null && MainSettingsModel.Instance.UsePull && TargetingManager.IsValidEnemy(Core.Player.CurrentTarget) && Core.Player.CurrentTarget.Location.Distance3D(Core.Player.Location) <= RoutineManager.Current.PullRange + Core.Player.CurrentTarget.CombatReach)
                        {
                            return(await RoutineManager.Current.PullBehavior.ExecuteCoroutine());
                        }
                    }
                }

                var tankCheck = PartyManager.VisibleMembers;
                if (tankCheck.Any(x => PartyDescriptors.IsTank(x.Class)))
                {
                    return(false);
                }
            }

            if (RoutineManager.Current.PullBuffBehavior != null && TargetingManager.IsValidEnemy(Core.Player.CurrentTarget))
            {
                await RoutineManager.Current.PullBuffBehavior.ExecuteCoroutine();
            }

            if (Me.CurrentTarget == null)
            {
                return(false);
            }

            if (RoutineManager.Current.PullBehavior != null && MainSettingsModel.Instance.UsePull && TargetingManager.IsValidEnemy(Core.Player.CurrentTarget) && Core.Player.CurrentTarget.Location.Distance3D(Core.Player.Location) <= RoutineManager.Current.PullRange + Core.Player.CurrentTarget.CombatReach)
            {
                return(await RoutineManager.Current.PullBehavior.ExecuteCoroutine());
            }

            return(false);
        }
コード例 #2
0
 static Healer()
 {
     HealerComposite = new Decorator(r => PartyDescriptors.IsHealer(Me.CurrentJob), new ActionRunCoroutine(ctx => HealerTask()));
 }
コード例 #3
0
ファイル: Dps.cs プロジェクト: Fryheit/ATB_Builds
 static Dps()
 {
     DpsComposite = new Decorator(r => PartyDescriptors.IsDps(Me.CurrentJob), new ActionRunCoroutine(ctx => DpsTask()));
 }
コード例 #4
0
 static Tank()
 {
     TankComposite = new Decorator(r => PartyDescriptors.IsTank(Me.CurrentJob), new ActionRunCoroutine(ctx => TankTask()));
 }