public override async Task <bool> MainTask() { if (Adventurer.TimeSinceWorldChange < 1000) { Core.Logger.Debug("[Bounties] Sleeping 1 second due to world change"); await Coroutine.Sleep(1000); } if (_currentActBountiesCoroutine == null) { if (_currentAct != Act.Invalid) { if (!BountyHelpers.AreAllActBountiesCompleted(_currentAct)) { _currentActBountiesCoroutine = new ActBountiesCoroutine(_currentAct); } else { if (!TrySelectActCoroutine()) { return(false); } } } else { return(false); } } if (!await _currentActBountiesCoroutine.GetCoroutine()) { return(false); } _completedActs.Add(_currentAct); if (_acts.Any()) { _acts.Remove(_currentAct); if (_acts.Count == 0) { Core.Logger.Log("All Acts Complete"); return(true); } } return(TrySelectActCoroutine()); }
private async Task <bool> GetCoroutine() { if (_isDone) { return(true); } if (PluginEvents.TimeSinceWorldChange < 1000) { Logger.Debug("[RunActBountiesTag] Sleeping 1 second due to world change"); await Coroutine.Sleep(1000); } if (_bounties == null || _bounties.Count == 0) { if (BountyHelpers.AreAllActBountiesCompleted(Act)) { if (await _completeActBountiesCoroutine.GetCoroutine()) { _isDone = true; return(true); } return(true); } _isDone = true; return(true); } _currentBounty = _bounties.FirstOrDefault(); if (_currentBounty != null) { if (_currentBounty.State != BountyCoroutine.States.Completed && _currentBounty.State != BountyCoroutine.States.Failed) { return(await _currentBounty.GetCoroutine()); } ScenesStorage.Reset(); _bounties.Remove(_currentBounty); BountyStatistics.Report(); } return(true); }
public override async Task <bool> StartTask() { PluginEvents.CurrentProfileType = ProfileType.Bounty; _currentAct = Act.Invalid; _currentActBountiesCoroutine = null; _completedActs = new List <Act>(); switch (ActsMode) { case ActSelectionMode.None: var isSelectedActMode = PluginSettings.Current.BountyMode3.HasValue && PluginSettings.Current.BountyMode3.Value; _acts = isSelectedActMode ? GetUserSelectedActs() : GetBalanceMaterialActs(); break; case ActSelectionMode.Balance: _acts = GetBalanceMaterialActs(); break; case ActSelectionMode.All: _acts = GetAllActs(); break; case ActSelectionMode.A1: _acts = GetSpecificAct(Act.A1); break; case ActSelectionMode.A2: _acts = GetSpecificAct(Act.A2); break; case ActSelectionMode.A3: _acts = GetSpecificAct(Act.A3); break; case ActSelectionMode.A4: _acts = GetSpecificAct(Act.A4); break; case ActSelectionMode.A5: _acts = GetSpecificAct(Act.A5); break; default: _acts = new List <Act>(); break; } foreach (var act in _acts.ToList()) { if (BountyHelpers.AreAllActBountiesCompleted(act)) { _acts.Remove(act); } else { _completedActs.Add(act); } } return(TrySelectActCoroutine()); }