コード例 #1
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());
        }
コード例 #2
0
ファイル: SetWaitPoi.cs プロジェクト: Kataera/Oracle-Old
        internal static async Task <bool> Main()
        {
            if (CommonBehaviors.IsLoading)
            {
                return(false);
            }

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

            OracleFateManager.DoNotWaitBeforeMovingFlag = false;
            switch (WaitSettings.Instance.FateWaitMode)
            {
            case FateWaitMode.ReturnToAetheryte:
                await ReturnToAetheryte.Main();

                break;

            case FateWaitMode.MoveToWaitLocation:
                await MoveToWaitLocation.Main();

                break;

            case FateWaitMode.GrindMobs:
                await GrindMobs.Main();

                break;

            case FateWaitMode.WaitInPlace:
                await WaitInPlace.Main();

                break;

            default:
                Logger.SendDebugLog("Cannot determine idle strategy, defaulting to 'Return to Aetheryte'.");
                await ReturnToAetheryte.Main();

                break;
            }

            return(false);
        }
コード例 #3
0
        internal static async Task <bool> HandleMultiLevelling()
        {
            if (!Core.Player.InCombat && OracleClassManager.NoClassesEnabled())
            {
                Logger.SendErrorLog("You haven't enabled any classes for levelling. Ensure at least one class is enabled and then restart Oracle.");
                OracleBot.StopOracle("No classes enabled.");
            }
            else if (!Core.Player.InCombat && OracleClassManager.FinishedLevelling())
            {
                Logger.SendLog("We've reached level " + ClassSettings.Instance.MaxLevel + " with all enabled classes! Stopping Oracle.");
                await OracleTeleportManager.TeleportToClosestCity();

                OracleBot.StopOracle("We are done!");
            }
            else if (OracleClassManager.ClassChangeNeeded())
            {
                if (GameObjectManager.Attackers.Any())
                {
                    return(true);
                }

                Logger.SendLog("Class change is needed.");
                var changeClassResult = await OracleClassManager.ChangeClassJob(OracleClassManager.GetLowestLevelClassJob());

                if (changeClassResult == ChangeClassResult.NoGearset || changeClassResult == ChangeClassResult.NonCombatClass)
                {
                    OracleBot.StopOracle("Problem swapping classes.");
                }
            }
            else if (OracleClassManager.ZoneChangeNeeded())
            {
                if (Core.Player.InCombat || GameObjectManager.Attackers.Any())
                {
                    return(true);
                }

                Logger.SendLog("Zone change is needed.");
                await ZoneChange.HandleZoneChange();
            }

            return(true);
        }
コード例 #4
0
        internal static async Task <bool> HandleLevelling()
        {
            if (!Core.Player.InCombat && OracleClassManager.FinishedLevelling())
            {
                Logger.SendLog("We've reached level " + ClassSettings.Instance.MaxLevel + " on our current class! Stopping Oracle.");
                await OracleTeleportManager.TeleportToClosestCity();

                OracleBot.StopOracle("We are done!");
            }
            else if (OracleClassManager.ZoneChangeNeeded())
            {
                if (Core.Player.InCombat)
                {
                    return(true);
                }

                Logger.SendLog("Zone change is needed.");
                await ZoneChange.HandleZoneChange();
            }

            return(true);
        }