aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/SceneMgr.cpp8
-rw-r--r--src/server/game/Entities/Player/SceneMgr.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp8
-rw-r--r--src/server/scripts/Commands/cs_list.cpp2
4 files changed, 8 insertions, 12 deletions
diff --git a/src/server/game/Entities/Player/SceneMgr.cpp b/src/server/game/Entities/Player/SceneMgr.cpp
index 7239d3428dc..9d54de73217 100644
--- a/src/server/game/Entities/Player/SceneMgr.cpp
+++ b/src/server/game/Entities/Player/SceneMgr.cpp
@@ -163,7 +163,7 @@ bool SceneMgr::HasScene(uint32 sceneInstanceID, uint32 sceneScriptPackageId /*=
void SceneMgr::AddInstanceIdToSceneMap(uint32 sceneInstanceID, SceneTemplate const* sceneTemplate)
{
- _scenesByInstance[sceneInstanceID] = sceneTemplate;
+ _scenesByInstance[sceneInstanceID] = std::make_unique<SceneTemplate>(*sceneTemplate);
}
void SceneMgr::CancelSceneBySceneId(uint32 sceneId)
@@ -182,7 +182,7 @@ void SceneMgr::CancelSceneByPackageId(uint32 sceneScriptPackageId)
{
std::vector<uint32> instancesIds;
- for (auto itr : _scenesByInstance)
+ for (auto const& itr : _scenesByInstance)
if (itr.second->ScenePackageId == sceneScriptPackageId)
instancesIds.push_back(itr.first);
@@ -213,7 +213,7 @@ SceneTemplate const* SceneMgr::GetSceneTemplateFromInstanceId(uint32 sceneInstan
auto itr = _scenesByInstance.find(sceneInstanceID);
if (itr != _scenesByInstance.end())
- return itr->second;
+ return itr->second.get();
return nullptr;
}
@@ -222,7 +222,7 @@ uint32 SceneMgr::GetActiveSceneCount(uint32 sceneScriptPackageId /*= 0*/)
{
uint32 activeSceneCount = 0;
- for (auto itr : _scenesByInstance)
+ for (auto const& itr : _scenesByInstance)
if (!sceneScriptPackageId || itr.second->ScenePackageId == sceneScriptPackageId)
++activeSceneCount;
diff --git a/src/server/game/Entities/Player/SceneMgr.h b/src/server/game/Entities/Player/SceneMgr.h
index 00c5bc1feb7..790eb887233 100644
--- a/src/server/game/Entities/Player/SceneMgr.h
+++ b/src/server/game/Entities/Player/SceneMgr.h
@@ -35,7 +35,7 @@ class Player;
struct Position;
struct SceneTemplate;
-typedef std::map<uint32, SceneTemplate const*> SceneTemplateByInstance;
+using SceneTemplateByInstance = std::map<uint32, std::unique_ptr<SceneTemplate>>;
class TC_GAME_API SceneMgr
{
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 786af2bf428..c3a135b69e5 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -5816,14 +5816,10 @@ void AuraEffect::HandlePlayScene(AuraApplication const* aurApp, uint8 mode, bool
if (!player)
return;
- SceneTemplate const* sceneTemplate = sObjectMgr->GetSceneTemplate(GetMiscValue());
- if (!sceneTemplate)
- return;
-
if (apply)
- player->GetSceneMgr().PlaySceneByTemplate(sceneTemplate);
+ player->GetSceneMgr().PlayScene(GetMiscValue());
else
- player->GetSceneMgr().CancelSceneByPackageId(sceneTemplate->ScenePackageId);
+ player->GetSceneMgr().CancelSceneBySceneId(GetMiscValue());
}
void AuraEffect::HandleCreateAreaTrigger(AuraApplication const* aurApp, uint8 mode, bool apply) const
diff --git a/src/server/scripts/Commands/cs_list.cpp b/src/server/scripts/Commands/cs_list.cpp
index 1141d0d84b8..375041d106a 100644
--- a/src/server/scripts/Commands/cs_list.cpp
+++ b/src/server/scripts/Commands/cs_list.cpp
@@ -760,7 +760,7 @@ public:
handler->PSendSysMessage(LANG_DEBUG_SCENE_OBJECT_LIST, target->GetSceneMgr().GetActiveSceneCount());
- for (auto instanceByPackage : instanceByPackageMap)
+ for (auto const& instanceByPackage : instanceByPackageMap)
handler->PSendSysMessage(LANG_DEBUG_SCENE_OBJECT_DETAIL, instanceByPackage.second->ScenePackageId, instanceByPackage.first);
return true;