From e49c704b39090462ca277ec9247134aaa1127f3c Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 15 May 2026 15:23:30 +0200 Subject: [PATCH] fix(B.6): speculative auto-walk uses WalkRunThreshold=15 to match ACE MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User report: 'No we only walk, not running from the correct threshold. regression?' Cause: InstallSpeculativeTurnToTarget passed walkRunThreshold=9999, which made BeginServerAutoWalk evaluate the initial-distance run/walk decision as walk-mode (no distance > 9999). ACE's MovementType=6 arrives ~100 ms later with the real wire threshold (15.0) and overwrites, but the body had already started walking by then; for far targets near the 15 m boundary, the speculative walking shortened the distance enough that ACE's overwrite re-evaluated to walk also. Fix: pass 15.0 in the speculative install — matches ACE's default MoveToParameters.SetDefaults() for non-combat Use/PickUp. Effect: a >15 m target now correctly enters run-mode at the speculative install, and the ACE overwrite preserves that decision. The body runs all the way, stopping at the target as before. --- src/AcDream.App/Rendering/GameWindow.cs | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index 5c562da..2efad8c 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -9323,11 +9323,16 @@ public sealed class GameWindow : IDisposable minDistance: 0f, distanceToObject: useRadius, moveTowards: true, - // High walkRunThreshold → walk mode by default. If the - // body is far enough to actually need to run, ACE's - // subsequent MovementType=6 will overwrite with the - // wire's real threshold. - walkRunThreshold: 9999f); + // 15 m matches ACE's MoveToParameters.SetDefaults + // WalkRunThreshold for non-combat Use/PickUp paths. + // Using 9999 here forced walk-mode for the brief window + // between this speculative install and ACE's MovementType=6 + // overwrite — far targets briefly walked before switching + // to run, which the user observed as "we only walk, not + // running from the correct threshold". 15.0 lines up with + // what ACE will send anyway, so the initial decision and + // the overwrite agree. + walkRunThreshold: 15.0f); } ///