From 8b0de23d0e4b15fce8dc8c67f9512f76804d6439 Mon Sep 17 00:00:00 2001 From: Matan Shukry Date: Mon, 26 Apr 2021 22:39:22 +0300 Subject: Core/SAI: Don't clear stored pathid if it changed after processing waypoint events (#26334) --- src/server/game/AI/SmartScripts/SmartAI.cpp | 5 +++-- src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index 1651c794412..09458097d77 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -242,14 +242,15 @@ void SmartAI::EndPath(bool fail) if (fail) return; - GetScript()->ProcessEventsFor(SMART_EVENT_WAYPOINT_ENDED, nullptr, _currentWaypointNode, GetScript()->GetPathId()); + uint32 pathid = GetScript()->GetPathId(); + GetScript()->ProcessEventsFor(SMART_EVENT_WAYPOINT_ENDED, nullptr, _currentWaypointNode, pathid); if (_repeatWaypointPath) { if (IsAIControlled()) StartPath(mRun, GetScript()->GetPathId(), _repeatWaypointPath); } - else + else if (pathid == GetScript()->GetPathId()) // if it's not the same pathid, our script wants to start another path; don't override it GetScript()->SetPathId(0); if (mDespawnState == 1) diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 0d6b1ae3f92..17556730255 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1592,7 +1592,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) { if (!sConversationDataStore->GetConversationTemplate(e.action.conversation.id)) { - TC_LOG_ERROR("sql.sql", "SmartAIMgr: SMART_ACTION_TALK_CONVERSATION Entry " SI64FMTD " SourceType %u Event %u Action %u uses invalid entry %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.conversation.id); + TC_LOG_ERROR("sql.sql", "SmartAIMgr: SMART_ACTION_CREATE_CONVERSATION Entry " SI64FMTD " SourceType %u Event %u Action %u uses invalid entry %u, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), e.action.conversation.id); return false; } -- cgit v1.2.3