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