diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/DataStores/DBCEnums.h | 9 | ||||
-rw-r--r-- | src/server/game/Entities/Player/SceneMgr.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Entities/Player/SceneMgr.h | 11 |
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; |