aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOvahlord <dreadkiller@gmx.de>2020-06-14 22:51:42 +0200
committerShauren <shauren.trinity@gmail.com>2022-01-06 21:39:37 +0100
commit38be5e361e072edec6cfec584db9182ea3ad4450 (patch)
tree14840fc9efee78af363fcedb6a527d8ba100d89d
parentd1b928cca5182f380810056c0e90fbeaf73ff8c4 (diff)
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)
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp7
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp1
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h1
3 files changed, 9 insertions, 0 deletions
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, //