~ruther/NosSmooth

b5df8afc8ef560e1ffe5ba54574162c5bae4712a — Rutherther 3 years ago b0278d9
feat(combat): reset walk in range operation if the target moved
1 files changed, 18 insertions(+), 1 deletions(-)

M Extensions/NosSmooth.Extensions.Combat/Operations/WalkInRangeOperation.cs
M Extensions/NosSmooth.Extensions.Combat/Operations/WalkInRangeOperation.cs => Extensions/NosSmooth.Extensions.Combat/Operations/WalkInRangeOperation.cs +18 -1
@@ 62,7 62,24 @@ public record WalkInRangeOperation
            }

            var closePosition = GetClosePosition(currentPosition.Value, position.Value, distance);
            var walkResult = await WalkManager.GoToAsync(closePosition.X, closePosition.Y, ct);
            var goToCancellationTokenSource = CancellationTokenSource.CreateLinkedTokenSource(ct);
            var walkResultTask = WalkManager.GoToAsync(closePosition.X, closePosition.Y, goToCancellationTokenSource.Token);

            while (!walkResultTask.IsCompleted)
            {
                await Task.Delay(5, ct);
                if (Entity.Position != position)
                {
                    goToCancellationTokenSource.Cancel();
                }
            }

            if (Entity.Position != position)
            {
                continue;
            }

            var walkResult = await walkResultTask;
            if (!walkResult.IsSuccess && walkResult.Error is NotFoundError)
            {
                distance--;

Do not follow this link