From 9fadfa6499ba2ac274e8e41032c760c9175a6239 Mon Sep 17 00:00:00 2001 From: IntelligentQuantum Date: Sat, 29 Jan 2022 02:23:27 +0330 Subject: [PATCH] feat(Core/SmartScripts): SMART_ACTION_PLAY_CINEMATIC (#10231) * cherry-pick commit (https://github.com/TrinityCore/TrinityCore/commit/63aa5d1e3559f580551544b71fb7dd63d6b54b60) --- src/server/game/AI/SmartScripts/SmartScript.cpp | 17 +++++++++++++++++ .../game/AI/SmartScripts/SmartScriptMgr.cpp | 1 + .../game/AI/SmartScripts/SmartScriptMgr.h | 9 +++++++-- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index b351317d4..e1be4ad52 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3372,6 +3372,23 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u delete targets; break; } + case SMART_ACTION_PLAY_CINEMATIC: + { + ObjectList* targets = GetTargets(e, unit); + if (!targets) + { + break; + } + + for (auto const& target : *targets) + { + if (!IsPlayer(target)) + continue; + + target->ToPlayer()->SendCinematicStart(e.action.cinematic.entry); + } + break; + } default: LOG_ERROR("sql.sql", "SmartScript::ProcessAction: Entry {} SourceType {}, Event {}, Unhandled Action type {}", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType()); break; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 7134aaa85..7bd0a9187 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1448,6 +1448,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_ACTION_DO_ACTION: case SMART_ACTION_SET_CORPSE_DELAY: case SMART_ACTION_ATTACK_STOP: + case SMART_ACTION_PLAY_CINEMATIC: break; default: LOG_ERROR("sql.sql", "SmartAIMgr: Not handled action_type({}), event_type({}), Entry {} SourceType {} Event {}, skipped.", e.GetActionType(), e.GetEventType(), e.entryOrGuid, e.GetScriptType(), e.event_id); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index cdc1745ef..66a77adaf 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -618,12 +618,12 @@ enum SMART_ACTION SMART_ACTION_DESPAWN_SPAWNGROUP = 132, // TODO: NOT SUPPORTED YET SMART_ACTION_RESPAWN_BY_SPAWNID = 133, // TODO: NOT SUPPORTED YET // SMART_ACTION_INVOKER_CAST = 134, // TODO: solve name conflicts - - SMART_ACTION_TC_END = 135, // placeholder + SMART_ACTION_PLAY_CINEMATIC = 135, // entry, cinematic SMART_ACTION_SET_MOVEMENT_SPEED = 136, // movementType, speedInteger, speedFraction SMART_ACTION_SET_HEALTH_PCT = 142, // percent + SMART_ACTION_TC_END = 199, // placeholder // AC-only SmartActions: SMART_ACTION_AC_START = 200, // placeholder @@ -1316,6 +1316,11 @@ struct SmartAction { uint32 percent; } setHealthPct; + + struct + { + uint32 entry; + } cinematic; //! Note for any new future actions //! All parameters must have type uint32