private async Task <bool> Interacting() { _interactAttempts++; if (ZetaDia.IsLoadingWorld) { Logger.Debug("[UsePortal] Waiting for the world to load"); await Coroutine.Sleep(250); return(false); } var actor = ActorFinder.FindObject(_actorId); if (actor == null) { Logger.Debug("[UsePortal] Nothing to interact, failing. "); State = States.Failed; return(false); } if (await Interact(actor)) { State = States.Checking; } return(false); }
private async Task <bool> Checking() { var actor = ActorFinder.FindObject(_actorId); //if (actor != null && actor.Distance > actor.CollisionSphere.Radius + 2) //{ // await NavigationCoroutine.MoveTo(actor.Position, (int)actor.CollisionSphere.Radius + 1); // return false; //} if (_sourceWorldDynamicId != AdvDia.CurrentWorldDynamicId) { Logger.Debug("[UsePortal] World has changed, assuming done."); State = States.Completed; return(false); } if (actor == null) { Logger.Debug("[UsePortal] Nothing to interact, failing. "); State = States.Failed; return(false); } if (_interactAttempts > 5) { await NavigationCoroutine.MoveTo(actor.Position, (int)actor.Distance - 1); _interactAttempts = 0; } State = States.Interacting; return(false); }
private DiaObject GetActor() { var trinActor = ActorFinder.FindActor(_actorId, _markerHash); var actor = trinActor != null ? ZetaDia.Actors.GetActorByACDId(trinActor.AcdId) : ActorFinder.FindObject(_actorId); return actor; }
private bool Checking() { var actor = ActorFinder.FindObject(_actorId); if (actor == null) { Logger.Debug("[Interaction] Nothing to interact, failing. "); State = States.Failed; return(false); } if (!actor.IsInteractableQuestObject()) { Logger.Debug("[Interaction] The object is not valid or not interactable, failing."); State = States.Failed; return(false); } if (actor is DiaGizmo) { var gizmoActor = (DiaGizmo)actor; if (gizmoActor.IsDestructibleObject) { } } if (actor is DiaGizmo && (actor as DiaGizmo).IsPortal) { _isPortal = true; } if (actor.ActorSnoId == 364715) { _isNephalemStone = true; } if (actor.ActorSnoId == 363744) { _isOrek = true; } if (_isNephalemStone && UIElements.RiftDialog.IsVisible) { State = States.Completed; return(false); } if (_isOrek && AdvDia.RiftQuest.State == QuestState.Completed) { State = States.Completed; return(false); } State = States.Interacting; return(false); }
private async Task <bool> Checking() { _actor = ActorFinder.FindObject(_actorId); _attackSkill = SkillHelper.DefaultWeaponPower; _attackRange = SkillHelper.DefaultWeaponDistance; if (_actor == null) { Logger.Info("[AttackCoroutine] Actor not found with id: {0}", _actorId); State = States.Completed; return(false); } if (_actor.Distance > _attackRange) { State = States.Moving; return(false); } State = States.Attacking; return(false); }
private async Task <bool> Interacting() { if (ZetaDia.Me.IsFullyValid() && (ZetaDia.Me.CommonData.AnimationState == AnimationState.Casting || ZetaDia.Me.CommonData.AnimationState == AnimationState.Channeling)) { Logger.Debug("[Interaction] Waiting for the cast to end"); await Coroutine.Sleep(500); return(false); } var actor = ActorFinder.FindObject(_actorId); if (actor == null) { Logger.Debug("[Interaction] Nothing to interact, failing. "); State = States.Failed; return(false); } // Assume done if (!actor.IsInteractableQuestObject()) { State = States.Completed; return(false); } if (_currentInteractAttempt > _interactAttempts) { State = States.Completed; return(true); } if (_timeoutCheckEnabled) { if (_interactionStartedAt == default(DateTime)) { _interactionStartedAt = DateTime.UtcNow; } else { if (DateTime.UtcNow - _interactionStartedAt > _timeOut) { Logger.Debug("[Interaction] Interaction timed out after {0} seconds", (DateTime.UtcNow - _interactionStartedAt).TotalSeconds); State = States.TimedOut; return(false); } } } if (await Interact(actor)) { if (_currentInteractAttempt < _interactAttempts) { _currentInteractAttempt++; return(false); } if (!_isPortal && !_isNephalemStone && !_isOrek && actor.IsInteractableQuestObject()) { return(false); } if (_isNephalemStone && !UIElements.RiftDialog.IsVisible) { return(false); } if (_isOrek && AdvDia.RiftQuest.State != QuestState.Completed) { return(false); } State = States.Completed; } return(false); }