From f42f37399fe2f9dba5c9e4fb68456b12a9c2e208 Mon Sep 17 00:00:00 2001 From: bash Date: Mon, 18 May 2026 00:50:32 +0200 Subject: [PATCH] fix(Core/Travel): Loosen chained-probe non-progress threshold --- src/Mgr/Travel/TravelMgr.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/Mgr/Travel/TravelMgr.cpp b/src/Mgr/Travel/TravelMgr.cpp index e7597e111..e05b6af70 100644 --- a/src/Mgr/Travel/TravelMgr.cpp +++ b/src/Mgr/Travel/TravelMgr.cpp @@ -852,14 +852,17 @@ std::vector WorldPosition::getPathFromPath(std::vector::max(); - uint32 noProgress = 0; - constexpr uint32 MAX_NO_PROGRESS = 2; + uint32 iterSinceImprovement = 0; + constexpr uint32 MAX_ITER_NO_IMPROVEMENT = 10; + constexpr float MIN_IMPROVEMENT = 1.0f; // Limit the pathfinding attempts for (uint32 i = 0; i < maxAttempt; i++) @@ -881,15 +884,14 @@ std::vector WorldPosition::getPathFromPath(std::vectordistance(&subPath.back()); - if (distNow + 0.5f >= bestDistToTarget) - { - if (++noProgress >= MAX_NO_PROGRESS) - break; - } - else + if (distNow < bestDistToTarget - MIN_IMPROVEMENT) { bestDistToTarget = distNow; - noProgress = 0; + iterSinceImprovement = 0; + } + else if (++iterSinceImprovement >= MAX_ITER_NO_IMPROVEMENT) + { + break; } currentPos = subPath.back();