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: