Core/SAI: Implement waiting for actions on action list to finish before continuing the action list

This is enabled by setting event_flags to SMART_EVENT_FLAG_ACTIONLIST_WAITS on the action that is waited for

Supported actions:
* SMART_ACTION_TALK
* SMART_ACTION_SIMPLE_TALK
* SMART_ACTION_CAST
* SMART_ACTION_SELF_CAST
* SMART_ACTION_INVOKER_CAST
* SMART_ACTION_MOVE_OFFSET
* SMART_ACTION_WP_START
* SMART_ACTION_MOVE_TO_POS
* SMART_ACTION_CROSS_CAST
* SMART_ACTION_ACTIVATE_TAXI
* SMART_ACTION_JUMP_TO_POS
* SMART_ACTION_START_CLOSEST_WAYPOINT
This commit is contained in:
Shauren
2024-04-14 14:28:40 +02:00
parent ec5111af6a
commit 5dfac0ef14
6 changed files with 187 additions and 21 deletions
@@ -20,6 +20,7 @@
#include "Define.h"
#include "SmartScriptMgr.h"
#include <memory>
class AreaTrigger;
class Creature;
@@ -32,6 +33,11 @@ class WorldObject;
struct AreaTriggerEntry;
struct SceneTemplate;
namespace Scripting::v2
{
class ActionBase;
}
class TC_GAME_API SmartScript
{
public:
@@ -111,6 +117,7 @@ class TC_GAME_API SmartScript
SmartAIEventList mInstallEvents;
SmartAIEventList mTimedActionList;
ObjectGuid mTimedActionListInvoker;
std::shared_ptr<Scripting::v2::ActionBase> mTimedActionWaitEvent;
bool isProcessingTimedActionList;
Creature* me;
ObjectGuid meOrigGUID;