From 38be5e361e072edec6cfec584db9182ea3ad4450 Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Sun, 14 Jun 2020 22:51:42 +0200 Subject: Core/SAI: implement SMART_ACTION_ATTACK_STOP Unlike SMART_ACTION_AUTO_ATTACK, this action is actually stopping the entire attack procedure, rather than just hack-disabling auto-attacks. Keep in mind that this action requires a passive react state to prevent a immediate AttackStart ai reaction (cherry picked from commit 152ea6011694518017a47dc23fdbb7175bfa5481) --- src/server/game/AI/SmartScripts/SmartScript.cpp | 7 +++++++ src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 1 + src/server/game/AI/SmartScripts/SmartScriptMgr.h | 1 + 3 files changed, 9 insertions(+) (limited to 'src') diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 35b46a25bfb..80397529bbf 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -1209,6 +1209,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } break; } + case SMART_ACTION_ATTACK_STOP: + { + for (WorldObject* target : targets) + if (Unit* unitTarget = target->ToUnit()) + unitTarget->AttackStop(); + break; + } case SMART_ACTION_MOVE_OFFSET: { for (WorldObject* target : targets) diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 69df1c8bcc0..9383b67adb0 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1778,6 +1778,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_ACTION_ALLOW_COMBAT_MOVEMENT: case SMART_ACTION_CALL_FOR_HELP: case SMART_ACTION_SET_DATA: + case SMART_ACTION_ATTACK_STOP: case SMART_ACTION_SET_VISIBILITY: case SMART_ACTION_WP_PAUSE: case SMART_ACTION_SET_DISABLE_GRAVITY: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index de2fe4ea4e7..2fbeb3436a6 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -512,6 +512,7 @@ enum SMART_ACTION SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL = 43, // Creature_template entry(param1) OR ModelId (param2) (or 0 for both to dismount) SMART_ACTION_SET_INGAME_PHASE_ID = 44, // PhaseId, apply SMART_ACTION_SET_DATA = 45, // Field, Data (only creature @todo) + SMART_ACTION_ATTACK_STOP = 46, // SMART_ACTION_SET_VISIBILITY = 47, // on/off SMART_ACTION_SET_ACTIVE = 48, // on/off SMART_ACTION_ATTACK_START = 49, // -- cgit v1.2.3