diff --git a/Directory.Build.targets b/Directory.Build.targets index 6b83635a7..c66516018 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 331926743..f9e0d6908 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;