From a4d5b9eb6ff102f0b2b84b604d5a74e4e74509c4 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 24 May 2022 10:04:06 -0400 Subject: [PATCH] Core/SAI: Fix SMART_ACTION_WP_PAUSE with 0 delay pausing the path only for 1 world loop update Port From (https://github.com/TrinityCore/TrinityCore/commit/60519e947f634f12aa93a1871d53e012ed9e57d2) --- Source/Game/AI/SmartScripts/SmartAI.cs | 3 ++- Source/Game/AI/SmartScripts/SmartScript.cs | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Source/Game/AI/SmartScripts/SmartAI.cs b/Source/Game/AI/SmartScripts/SmartAI.cs index f25a32218..8f4ed30c4 100644 --- a/Source/Game/AI/SmartScripts/SmartAI.cs +++ b/Source/Game/AI/SmartScripts/SmartAI.cs @@ -991,7 +991,8 @@ namespace Game.AI // handle pause if (HasEscortState(SmartEscortState.Paused) && (_waypointReached || _waypointPauseForced)) { - if (!me.IsInCombat() && !HasEscortState(SmartEscortState.Returning)) + // Resume only if there was a pause timer set + if (_waypointPauseTimer != 0 && !me.IsInCombat() && !HasEscortState(SmartEscortState.Returning)) { if (_waypointPauseTimer <= diff) ResumePath(); diff --git a/Source/Game/AI/SmartScripts/SmartScript.cs b/Source/Game/AI/SmartScripts/SmartScript.cs index 55f2df0e8..ace84da46 100644 --- a/Source/Game/AI/SmartScripts/SmartScript.cs +++ b/Source/Game/AI/SmartScripts/SmartScript.cs @@ -1383,7 +1383,7 @@ namespace Game.AI break; uint delay = e.Action.wpPause.delay; - ((SmartAI)_me.GetAI()).PausePath(delay, e.GetEventType() != SmartEvents.WaypointReached); + ((SmartAI)_me.GetAI()).PausePath(delay, true); break; } case SmartActions.WpStop: @@ -1402,7 +1402,8 @@ namespace Game.AI if (!IsSmart()) break; - ((SmartAI)_me.GetAI()).SetWPPauseTimer(0); + // Set the timer to 1 ms so the path will be resumed on next update loop + ((SmartAI)_me.GetAI()).SetWPPauseTimer(1); break; } case SmartActions.SetOrientation: