diff options
| author | Ovah <dreadkiller@gmx.de> | 2020-12-26 23:31:25 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-03-05 16:46:42 +0100 |
| commit | dde5a3e32645060fbcc4856770dfc6a0c43a3947 (patch) | |
| tree | e61e8f1069a409bce05b0ac5ebb30270da2b74a4 | |
| parent | 6b681ebc8aaaf79c1865c8c01f78c736a72e6e7d (diff) | |
Core/SAI: implement new smart actions to change AI Animkits and to enable/disable hover movement (#25623)
SMART_ACTION_SET_HOVER (parameter1: enable/disable)
* added SMART_ACTION_SET_AI_ANIM_KIT as immediately deprecated
(cherry picked from commit b7ba856b63da4fa1b0f916de357ff85624b8b831)
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 6 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 7 |
3 files changed, 18 insertions, 0 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index bdca0258946..afb2783329e 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2470,6 +2470,11 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } break; } + case SMART_ACTION_SET_HOVER: + for (WorldObject* target : targets) + if (IsUnit(target)) + target->ToUnit()->SetHover(e.action.setHover.enable != 0); + break; case SMART_ACTION_PLAY_SPELL_VISUAL_KIT: { for (WorldObject* const target : targets) diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 3197ca8995b..d5ed7dfa597 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1762,6 +1762,11 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) break; } + case SMART_ACTION_SET_AI_ANIM_KIT: + { + TC_LOG_ERROR("sql.sql", "SmartAIMgr: Deprecated action_type(%u), event_type(%u), Entry " SI64FMTD " SourceType %u Event %u, skipped.", e.GetActionType(), e.GetEventType(), e.entryOrGuid, e.GetScriptType(), e.event_id); + break; + } case SMART_ACTION_CREATE_CONVERSATION: { if (!sConversationDataStore->GetConversationTemplate(e.action.conversation.id)) @@ -1849,6 +1854,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_ACTION_REMOVE_ALL_GAMEOBJECTS: case SMART_ACTION_SPAWN_SPAWNGROUP: case SMART_ACTION_DESPAWN_SPAWNGROUP: + case SMART_ACTION_SET_HOVER: case SMART_ACTION_ADD_TO_STORED_TARGET_LIST: break; case SMART_ACTION_BECOME_PERSONAL_CLONE_FOR_PLAYER: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 1ba17a99dc4..b338b42bb7d 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -609,6 +609,8 @@ enum SMART_ACTION SMART_ACTION_PLAY_SPELL_VISUAL_KIT = 137, // spellVisualKitId, kitType (unknown values, copypaste from packet dumps), duration SMART_ACTION_OVERRIDE_LIGHT = 138, // zoneId, overrideLightID, transitionMilliseconds SMART_ACTION_OVERRIDE_WEATHER = 139, // zoneId, weatherId, intensity + SMART_ACTION_SET_AI_ANIM_KIT = 140, // DEPRECATED, DO REUSE (it was never used in any branch, treat as free action id) + SMART_ACTION_SET_HOVER = 141, // 0/1 SMART_ACTION_CREATE_CONVERSATION = 143, // conversation_template.id SMART_ACTION_SET_IMMUNE_PC = 144, // 0/1 SMART_ACTION_SET_IMMUNE_NPC = 145, // 0/1 @@ -1236,6 +1238,11 @@ struct SmartAction struct { + uint32 enable; + } setHover; + + struct + { uint32 toRespawnPosition; } evade; |
