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()); }
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); }
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); }
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); }