aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/DataStores/DBCEnums.h9
-rw-r--r--src/server/game/Entities/Player/SceneMgr.cpp6
-rw-r--r--src/server/game/Entities/Player/SceneMgr.h11
3 files changed, 16 insertions, 10 deletions
diff --git a/src/server/game/DataStores/DBCEnums.h b/src/server/game/DataStores/DBCEnums.h
index 29bedcfc0a0..3d74d87afff 100644
--- a/src/server/game/DataStores/DBCEnums.h
+++ b/src/server/game/DataStores/DBCEnums.h
@@ -958,13 +958,4 @@ enum CurrencyTypes
CURRENCY_TYPE_ARTIFACT_KNOWLEDGE = 1171,
};
-enum SceneFlags
-{
- SCENEFLAG_UNK1 = 0x01,
- SCENEFLAG_UNK2 = 0x02,
- SCENEFLAG_NOT_CANCELABLE = 0x04,
- SCENEFLAG_UNK8 = 0x08,
- SCENEFLAG_UNK16 = 0x10, // 16, most common value
-};
-
#endif
diff --git a/src/server/game/Entities/Player/SceneMgr.cpp b/src/server/game/Entities/Player/SceneMgr.cpp
index d92f531cdea..8ecdcf0348e 100644
--- a/src/server/game/Entities/Player/SceneMgr.cpp
+++ b/src/server/game/Entities/Player/SceneMgr.cpp
@@ -121,6 +121,9 @@ void SceneMgr::OnSceneCancel(uint32 sceneInstanceID)
RemoveAurasDueToSceneId(sceneTemplate->SceneId);
sScriptMgr->OnSceneCancel(GetPlayer(), sceneInstanceID, sceneTemplate);
+
+ if (sceneTemplate->PlaybackFlags & SCENEFLAG_CANCEL_AT_END)
+ CancelScene(sceneInstanceID, false);
}
void SceneMgr::OnSceneComplete(uint32 sceneInstanceID)
@@ -140,6 +143,9 @@ void SceneMgr::OnSceneComplete(uint32 sceneInstanceID)
RemoveAurasDueToSceneId(sceneTemplate->SceneId);
sScriptMgr->OnSceneComplete(GetPlayer(), sceneInstanceID, sceneTemplate);
+
+ if (sceneTemplate->PlaybackFlags & SCENEFLAG_CANCEL_AT_END)
+ CancelScene(sceneInstanceID, false);
}
bool SceneMgr::HasScene(uint32 sceneInstanceID, uint32 sceneScriptPackageId /*= 0*/) const
diff --git a/src/server/game/Entities/Player/SceneMgr.h b/src/server/game/Entities/Player/SceneMgr.h
index a87ea603bdd..0a7c13322cd 100644
--- a/src/server/game/Entities/Player/SceneMgr.h
+++ b/src/server/game/Entities/Player/SceneMgr.h
@@ -19,7 +19,16 @@
#define SceneMgr_h__
#include "Common.h"
-#include "DBCEnums.h"
+
+enum SceneFlags
+{
+ SCENEFLAG_UNK1 = 0x01,
+ SCENEFLAG_CANCEL_AT_END = 0x02,
+ SCENEFLAG_NOT_CANCELABLE = 0x04,
+ SCENEFLAG_UNK8 = 0x08,
+ SCENEFLAG_UNK16 = 0x10, // 16, most common value
+ SCENEFLAG_UNK32 = 0x20,
+};
class Player;
struct Position;