From 47d9f090a24a43cf4fb3cb60f9bc9f5f4397c4bf Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Fri, 30 Aug 2024 13:59:33 +0200 Subject: [PATCH] Handle zone transitiions in new movement logic --- Directory.Build.targets | 2 +- Questionable/Controller/Steps/Shared/MoveTo.cs | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/Directory.Build.targets b/Directory.Build.targets index 6b83635..c665160 100644 --- a/Directory.Build.targets +++ b/Directory.Build.targets @@ -1,5 +1,5 @@ - 2.18 + 2.19 diff --git a/Questionable/Controller/Steps/Shared/MoveTo.cs b/Questionable/Controller/Steps/Shared/MoveTo.cs index 3319267..f9e0d69 100644 --- a/Questionable/Controller/Steps/Shared/MoveTo.cs +++ b/Questionable/Controller/Steps/Shared/MoveTo.cs @@ -169,6 +169,8 @@ internal static class MoveTo private readonly Action _startAction; private readonly Vector3 _destination; private readonly MoveParams _moveParams; + private readonly bool _isUnderwaterInitially; + private bool _canRestart; public MoveInternal(MoveParams moveParams, MovementController movementController, @@ -213,6 +215,7 @@ internal static class MoveTo } _moveParams = moveParams; + _canRestart = moveParams.RestartNavigation; } public bool Start() @@ -231,13 +234,20 @@ internal static class MoveTo if (movementStartedAt == DateTime.MaxValue || movementStartedAt.AddSeconds(2) >= DateTime.Now) return ETaskResult.StillRunning; - if (_moveParams.RestartNavigation && + if (_canRestart && Vector3.Distance(_clientState.LocalPlayer!.Position, _destination) > (_moveParams.StopDistance ?? QuestStep.DefaultStopDistance) + 5f) { - _logger.LogInformation("Looks like movement was interrupted, re-attempting to move"); - _startAction(); - return ETaskResult.StillRunning; + _canRestart = false; + if (_clientState.TerritoryType == _moveParams.TerritoryId) + { + _logger.LogInformation("Looks like movement was interrupted, re-attempting to move"); + _startAction(); + return ETaskResult.StillRunning; + } + else + _logger.LogInformation( + "Looks like movement was interrupted, do nothing since we're in a different territory now"); } return ETaskResult.TaskComplete;