From 400c563e3df637076afaaac382305c45bc2c2231 Mon Sep 17 00:00:00 2001 From: bash Date: Fri, 29 May 2026 20:04:39 +0200 Subject: [PATCH] refactor(Core/Movement): Drop redundant bot filter setters at PathGenerator sites --- src/Ai/Base/Actions/BattleGroundTactics.cpp | 2 -- src/Ai/Base/Actions/GoAction.cpp | 3 --- src/Ai/Base/Actions/MovementActions.cpp | 4 ---- src/Mgr/Travel/TravelMgr.cpp | 21 +++++++-------------- src/Mgr/Travel/TravelNode.cpp | 2 -- 5 files changed, 7 insertions(+), 25 deletions(-) diff --git a/src/Ai/Base/Actions/BattleGroundTactics.cpp b/src/Ai/Base/Actions/BattleGroundTactics.cpp index 96bff29b7..26271446b 100644 --- a/src/Ai/Base/Actions/BattleGroundTactics.cpp +++ b/src/Ai/Base/Actions/BattleGroundTactics.cpp @@ -4292,8 +4292,6 @@ bool ArenaTactics::Execute(Event /*event*/) if (losBlocked) { PathGenerator path(bot); - path.SetExcludeFlags(path.GetExcludeFlags() | NAV_GROUND_STEEP); - path.SetNavTerrainCost(NAV_WATER, 10.0f); path.CalculatePath(target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), false); if (path.GetPathType() != PATHFIND_NOPATH) diff --git a/src/Ai/Base/Actions/GoAction.cpp b/src/Ai/Base/Actions/GoAction.cpp index fd8081067..de9a64f0f 100644 --- a/src/Ai/Base/Actions/GoAction.cpp +++ b/src/Ai/Base/Actions/GoAction.cpp @@ -124,9 +124,6 @@ bool GoAction::Execute(Event event) if (botAI->HasStrategy("debug move", BOT_STATE_NON_COMBAT)) { PathGenerator path(bot); - path.SetExcludeFlags(path.GetExcludeFlags() | NAV_GROUND_STEEP); - path.SetNavTerrainCost(NAV_WATER, 10.0f); - path.CalculatePath(x, y, z, false); Movement::Vector3 end = path.GetEndPosition(); diff --git a/src/Ai/Base/Actions/MovementActions.cpp b/src/Ai/Base/Actions/MovementActions.cpp index d0e6ec9c5..8091e8617 100644 --- a/src/Ai/Base/Actions/MovementActions.cpp +++ b/src/Ai/Base/Actions/MovementActions.cpp @@ -971,8 +971,6 @@ bool MovementAction::ReachCombatTo(Unit* target, float distance) return false; PathGenerator path(bot); - path.SetExcludeFlags(path.GetExcludeFlags() | NAV_GROUND_STEEP); - path.SetNavTerrainCost(NAV_WATER, 10.0f); path.CalculatePath(tx, ty, tz, false); PathType type = path.GetPathType(); int typeOk = PATHFIND_NORMAL | PATHFIND_INCOMPLETE | PATHFIND_SHORTCUT; @@ -1880,8 +1878,6 @@ PathResult MovementAction::GeneratePath(float x, float y, float z, uint32 accept { PathResult result; PathGenerator gen(bot); - gen.SetExcludeFlags(gen.GetExcludeFlags() | NAV_GROUND_STEEP); - gen.SetNavTerrainCost(NAV_WATER, 10.0f); gen.CalculatePath(x, y, z, forceDestination); result.pathType = gen.GetPathType(); result.reachable = !(result.pathType & (~acceptMask)); diff --git a/src/Mgr/Travel/TravelMgr.cpp b/src/Mgr/Travel/TravelMgr.cpp index f075f0311..5867f998f 100644 --- a/src/Mgr/Travel/TravelMgr.cpp +++ b/src/Mgr/Travel/TravelMgr.cpp @@ -719,14 +719,10 @@ std::vector WorldPosition::getPathStepFrom(WorldPosition startPos } PathGenerator path(pathUnit); - // Apply bot-style filter even when source is a temp Creature so - // generation-time paths match what bots can actually walk at - // runtime. Without this, the temp-Creature branch of CreateFilter - // leaves NAV_GROUND_STEEP included → generator produces walk - // segments through 50-60° slopes that runtime bots can't traverse. - path.SetExcludeFlags(path.GetExcludeFlags() | NAV_GROUND_STEEP); - // Bias against water polys so A* prefers shore routes. Matches the - // runtime bot-Player filter setup in CreateFilter. + // Source is a temp Creature, so CreateFilter's bot block doesn't + // fire — apply the same bot rules here so generated paths match + // what bots can actually walk at runtime. + path.SetExcludeFlags(NAV_GROUND_STEEP); path.SetNavTerrainCost(NAV_WATER, 10.0f); auto result = getPathStepFrom(startPos, path); @@ -860,12 +856,9 @@ std::vector WorldPosition::getPathFromPath(std::vectorGetMapId()) { PathGenerator path(bot); - path.SetExcludeFlags(path.GetExcludeFlags() | NAV_GROUND_STEEP); - path.SetNavTerrainCost(NAV_WATER, 10.0f); path.CalculatePath(startNodePosition.GetPositionX(), startNodePosition.GetPositionY(), startNodePosition.GetPositionZ()); PathType type = path.GetPathType(); bool reachable = !(type & ~(PATHFIND_NORMAL | PATHFIND_INCOMPLETE | PATHFIND_FARFROMPOLY));