From 472ede8d76892557a3b4abac06f8cd749523d942 Mon Sep 17 00:00:00 2001 From: wetbrownsauce Date: Sun, 1 Jun 2025 00:10:13 -0600 Subject: [PATCH 1/2] fix(CORE/SAI): START_CLOSEST_WAYPOINT Fix - SMART_ACTION_START_CLOSEST_WAYPOINT was not functioning due to code errors. - The proposed changes implement the intended functionality. --- src/server/game/AI/SmartScripts/SmartScript.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 2ba8132c46c9de..3ce52780646a30 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2508,7 +2508,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u std::back_inserter(waypoints), [](uint32 wp) { return wp != 0; }); float distanceToClosest = std::numeric_limits::max(); - WayPoint* closestWp = nullptr; + uint32 closestWp; for (WorldObject* target : targets) { @@ -2522,12 +2522,12 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!path || path->empty()) continue; - auto itrWp = path->find(0); + auto itrWp = path->find(1); if (itrWp != path->end()) { - if (WayPoint* wp = itrWp->second) + if (WayPoint* wpData = itrWp->second) { - float distToThisPath = creature->GetDistance(wp->x, wp->y, wp->z); + float distToThisPath = creature->GetDistance(wpData->x, wpData->y, wpData->z); if (distToThisPath < distanceToClosest) { distanceToClosest = distToThisPath; @@ -2538,7 +2538,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } if (closestWp) - CAST_AI(SmartAI, creature->AI())->StartPath(false, closestWp->id, true); + CAST_AI(SmartAI, creature->AI())->StartPath(false, closestWp, true); } } } From a25631a83eb991260a69ee6a309b9ce199b2d7a4 Mon Sep 17 00:00:00 2001 From: wetbrownsauce Date: Sun, 1 Jun 2025 02:24:11 -0600 Subject: [PATCH 2/2] Update: fixed uninitialized variable --- src/server/game/AI/SmartScripts/SmartScript.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 3ce52780646a30..8f39733b6080f4 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2508,7 +2508,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u std::back_inserter(waypoints), [](uint32 wp) { return wp != 0; }); float distanceToClosest = std::numeric_limits::max(); - uint32 closestWp; + uint32 closestWp = 0; for (WorldObject* target : targets) {