using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Plugin.Services; using Questionable.Functions; namespace Questionable.Controller.Steps.Movement; internal sealed class WaitForNearDataIdExecutor(GameFunctions gameFunctions, IObjectTable objectTable) : TaskExecutor() { protected override bool Start() { return true; } public override ETaskResult Update() { IGameObject gameObject = gameFunctions.FindObjectByDataId(base.Task.DataId); IGameObject gameObject2 = objectTable[0]; if (gameObject == null || gameObject2 == null || (gameObject.Position - gameObject2.Position).Length() > base.Task.StopDistance) { throw new TaskException("Object not found or too far away, no position so we can't move"); } return ETaskResult.TaskComplete; } public override bool ShouldInterruptOnDamage() { return false; } }