From ae8291c08efb23c06d599143c666b2d632d9c3d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Franti=C5=A1ek=20Boh=C3=A1=C4=8Dek?= Date: Thu, 20 Jan 2022 21:05:47 +0100 Subject: [PATCH] feat(localclient): cancel walk command handling if nostale returns false on walk --- .../CommandHandlers/Walk/WalkCancelReason.cs | 8 ++++++++ .../CommandHandlers/Walk/WalkCommandHandler.cs | 7 ++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCancelReason.cs b/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCancelReason.cs index cc4f7fc1b2f44b6f8d7c1db87aa22a65d1cb6f33..51cb1df437366b7b0806c89170b2013220008ed0 100644 --- a/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCancelReason.cs +++ b/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCancelReason.cs @@ -32,4 +32,12 @@ public enum WalkCancelReason /// The client was not walking for too long. /// NotWalkingTooLong, + + /// + /// The nostale walk function has returned false. + /// + /// + /// The player may be stunned or immobile. + /// + NosTaleReturnedFalse } \ No newline at end of file diff --git a/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs b/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs index dcc6356f9601334183b9cabb934179680cca9e29..0dfceac84401603ce8ecbf5fb18d69363d1564bc 100644 --- a/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs +++ b/Local/NosSmooth.LocalClient/CommandHandlers/Walk/WalkCommandHandler.cs @@ -58,9 +58,14 @@ public class WalkCommandHandler : ICommandHandler // ignored, just for cancellation } - return walkResult; + return Result.FromError(walkResult); } + if (walkResult.Entity == false) + { + await _walkStatus.CancelWalkingAsync(WalkCancelReason.NosTaleReturnedFalse); + return new WalkNotFinishedError(_walkStatus.CurrentX, _walkStatus.CurrentY, WalkCancelReason.NosTaleReturnedFalse); + } try { await Task.Delay(_options.CheckDelay, ct);