コード例 #1
0
ファイル: MegaBossFate.cs プロジェクト: Kataera/Oracle-Old
        internal static async Task <bool> HandleMegaBossFate()
        {
            var currentFate = OracleFateManager.GetCurrentFateData();

            if (currentFate == null || currentFate.Status == FateStatus.NOTACTIVE || currentFate.Status == FateStatus.COMPLETE)
            {
                OracleFateManager.ClearCurrentFate("Current FATE is finished.");
                return(true);
            }

            if (currentFate.Status != FateStatus.NOTACTIVE && currentFate.Progress < FateSettings.Instance.MegaBossEngagePercentage &&
                !OracleFateManager.PreviousFateChained())
            {
                if (!FateSettings.Instance.WaitAtMegaBossForProgress)
                {
                    await OracleFateManager.ClearCurrentFate("Current FATE progress reset below minimum level.", false);
                }
                else
                {
                    Logger.SendLog("Current FATE progress is too low, waiting for it to reach " + FateSettings.Instance.MegaBossEngagePercentage + "%.");
                }

                return(true);
            }

            if (currentFate.Status != FateStatus.NOTACTIVE && OracleCombatManager.AnyViableFateTargets())
            {
                OracleCombatManager.SelectFateTarget();
            }

            return(true);
        }
コード例 #2
0
        internal static async Task <bool> Main()
        {
            if (CommonBehaviors.IsLoading)
            {
                return(false);
            }

            if (IsFateSet())
            {
                if (OracleFateManager.GetCurrentFateData() == null)
                {
                    return(true);
                }

                if (!IsFatePoiSet() && Poi.Current.Type != PoiType.Death && !GameObjectManager.Attackers.Any())
                {
                    Poi.Current = new Poi(OracleFateManager.GetCurrentFateData(), PoiType.Fate);
                }

                return(true);
            }

            if (OracleClassManager.ZoneChangeNeeded())
            {
                return(false);
            }

            if (OracleFateManager.PreviousFateChained() && ModeSettings.Instance.OracleOperationMode != OracleOperationMode.SpecificFates)
            {
                await SelectChainFate();
            }
            else if (ModeSettings.Instance.OracleOperationMode == OracleOperationMode.SpecificFates)
            {
                await SelectSpecificFate();
            }
            else
            {
                await SelectClosestFate();
            }

            if (OracleFateManager.GetCurrentFateData() != null && MovementSettings.Instance.DelayFateMovement && !OracleFateManager.DoNotWaitBeforeMovingFlag)
            {
                await WaitBeforeMoving();
            }

            OracleFateManager.DoNotWaitBeforeMovingFlag = false;
            return(IsFateSet() && IsFatePoiSet());
        }