diff --git a/data/sql/updates/pending_db_world/rev_1669548094443440800.sql b/data/sql/updates/pending_db_world/rev_1669548094443440800.sql new file mode 100644 index 000000000..b0b389f40 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1669548094443440800.sql @@ -0,0 +1,17 @@ +-- +SET @OGUID := 260580; +DELETE FROM `gameobject` WHERE `id` IN (183442,183496,183491,183492,183493,183443,183494,183495); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES +(@OGUID,183442,532,1,1,-10890.9,-1744.06,90.4765,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+1,183443,532,1,1,-10890.9,-1744.06,90.4765,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+2,183491,532,1,1,-10890.9,-1744.06,90.4765,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+3,183492,532,1,1,-10880.2,-1760.6,90.47,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+4,183492,532,1,1,-10898.7,-1752.38,90.47,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+5,183492,532,1,1,-10907.4,-1759.4,90.47,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+6,183493,532,1,1,-10888.7,-1756.65,90.47,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+7,183494,532,1,1,-10905.8,-1749.38,110.477,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+8,183495,532,1,1,-10895.9,-1748.06,90.4765,-1.67552,0,0,0,0,-3600,100,1), +(@OGUID+9,183496,532,1,1,-10906.7,-1750.01,90.4765,-1.69297,0,0,0,0,-3600,100,1), +(@OGUID+10,183496,532,1,1,-10883,-1751.81,90.4765,-1.72788,0,0,0,0,-3600,100,1), +(@OGUID+11,183496,532,1,1,-10877.7,-1763.18,90.4771,-1.69297,0,0,0,0,-3600,100,1), +(@OGUID+12,183496,532,1,1,-10909.5,-1761.79,90.4773,-1.65806,0,0,0,0,-3600,100,1); diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index 193c08c23..0f29956ee 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -132,6 +132,17 @@ public: else if (data == IN_PROGRESS) OzDeathCount = 0; break; + case DATA_SPAWN_OPERA_DECORATIONS: + { + for (ObjectGuid const& guid : _operaDecorations[data - 1]) + { + DoRespawnGameObject(guid, DAY); + } + + break; + } + default: + break; } } @@ -225,20 +236,25 @@ public: case GO_DUST_COVERED_CHEST: DustCoveredChest = go->GetGUID(); break; - } - - switch (OperaEvent) - { - /// @todo Set Object visibilities for Opera based on performance - case EVENT_OZ: + case GO_OZ_BACKDROP: + case GO_OZ_HAY: + _operaDecorations[EVENT_OZ - 1].push_back(go->GetGUID()); break; - - case EVENT_HOOD: + case GO_HOOD_BACKDROP: + case GO_HOOD_TREE: + case GO_HOOD_HOUSE: + _operaDecorations[EVENT_HOOD - 1].push_back(go->GetGUID()); break; - - case EVENT_RAJ: + case GO_RAJ_BACKDROP: + case GO_RAJ_MOON: + case GO_RAJ_BALCONY: + _operaDecorations[EVENT_RAJ - 1].push_back(go->GetGUID()); + break; + default: break; } + + InstanceScript::OnGameObjectCreate(go); } uint32 GetData(uint32 type) const override @@ -320,6 +336,7 @@ public: ObjectGuid ImageGUID; ObjectGuid DustCoveredChest; ObjectGuid m_uiRelayGUID; + GuidVector _operaDecorations[EVENT_RAJ]; }; }; diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp index fdbafe959..7884189fb 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.cpp @@ -269,6 +269,8 @@ public: } RaidWiped = false; + + instance->SetData(DATA_SPAWN_OPERA_DECORATIONS, m_uiEventId); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h index eda7d1c16..cc0a72878 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h +++ b/src/server/scripts/EasternKingdoms/Karazhan/karazhan.h @@ -27,39 +27,39 @@ uint32 const EncounterCount = 12; enum KZDataTypes { - DATA_ATTUMEN = 0, - DATA_MOROES = 1, - DATA_MAIDEN = 2, - DATA_OPTIONAL_BOSS = 3, - DATA_OPERA_PERFORMANCE = 4, - DATA_CURATOR = 5, - DATA_ARAN = 6, - DATA_TERESTIAN = 7, - DATA_NETHERSPITE = 8, - DATA_CHESS = 9, - DATA_MALCHEZZAR = 10, - DATA_NIGHTBANE = 11, - DATA_SERVANT_QUARTERS = 12, - DATA_SELECTED_RARE = 13, + DATA_ATTUMEN = 0, + DATA_MOROES = 1, + DATA_MAIDEN = 2, + DATA_OPTIONAL_BOSS = 3, + DATA_OPERA_PERFORMANCE = 4, + DATA_CURATOR = 5, + DATA_ARAN = 6, + DATA_TERESTIAN = 7, + DATA_NETHERSPITE = 8, + DATA_CHESS = 9, + DATA_MALCHEZZAR = 10, + DATA_NIGHTBANE = 11, + DATA_SERVANT_QUARTERS = 12, + DATA_SELECTED_RARE = 13, + DATA_OPERA_OZ_DEATHCOUNT = 14, + DATA_KILREK = 15, - DATA_OPERA_OZ_DEATHCOUNT = 14, + MAX_ENCOUNTERS = 16, - DATA_KILREK = 15, - MAX_ENCOUNTERS = 16, - DATA_GO_CURTAINS = 18, - DATA_GO_STAGEDOORLEFT = 19, - DATA_GO_STAGEDOORRIGHT = 20, - DATA_GO_LIBRARY_DOOR = 21, - DATA_GO_MASSIVE_DOOR = 22, - DATA_GO_NETHER_DOOR = 23, - DATA_GO_GAME_DOOR = 24, - DATA_GO_GAME_EXIT_DOOR = 25, - - DATA_IMAGE_OF_MEDIVH = 26, - DATA_MASTERS_TERRACE_DOOR_1 = 27, - DATA_MASTERS_TERRACE_DOOR_2 = 28, - DATA_GO_SIDE_ENTRANCE_DOOR = 29, - DATA_PRINCE = 30 + DATA_GO_CURTAINS = 18, + DATA_GO_STAGEDOORLEFT = 19, + DATA_GO_STAGEDOORRIGHT = 20, + DATA_GO_LIBRARY_DOOR = 21, + DATA_GO_MASSIVE_DOOR = 22, + DATA_GO_NETHER_DOOR = 23, + DATA_GO_GAME_DOOR = 24, + DATA_GO_GAME_EXIT_DOOR = 25, + DATA_IMAGE_OF_MEDIVH = 26, + DATA_MASTERS_TERRACE_DOOR_1 = 27, + DATA_MASTERS_TERRACE_DOOR_2 = 28, + DATA_GO_SIDE_ENTRANCE_DOOR = 29, + DATA_PRINCE = 30, + DATA_SPAWN_OPERA_DECORATIONS = 31 }; enum KZOperaEvents @@ -95,18 +95,28 @@ enum KZMiscCreatures enum KZGameObjectIds { - GO_STAGE_CURTAIN = 183932, - GO_STAGE_DOOR_LEFT = 184278, - GO_STAGE_DOOR_RIGHT = 184279, - GO_PRIVATE_LIBRARY_DOOR = 184517, - GO_MASSIVE_DOOR = 185521, - GO_GAMESMAN_HALL_DOOR = 184276, - GO_GAMESMAN_HALL_EXIT_DOOR = 184277, - GO_NETHERSPACE_DOOR = 185134, - GO_MASTERS_TERRACE_DOOR = 184274, - GO_MASTERS_TERRACE_DOOR2 = 184280, - GO_SIDE_ENTRANCE_DOOR = 184275, - GO_DUST_COVERED_CHEST = 185119 + GO_STAGE_CURTAIN = 183932, + GO_STAGE_DOOR_LEFT = 184278, + GO_STAGE_DOOR_RIGHT = 184279, + GO_PRIVATE_LIBRARY_DOOR = 184517, + GO_MASSIVE_DOOR = 185521, + GO_GAMESMAN_HALL_DOOR = 184276, + GO_GAMESMAN_HALL_EXIT_DOOR = 184277, + GO_NETHERSPACE_DOOR = 185134, + GO_MASTERS_TERRACE_DOOR = 184274, + GO_MASTERS_TERRACE_DOOR2 = 184280, + GO_SIDE_ENTRANCE_DOOR = 184275, + GO_DUST_COVERED_CHEST = 185119, + + // Opera event stage decoration + GO_OZ_BACKDROP = 183442, + GO_OZ_HAY = 183496, + GO_HOOD_BACKDROP = 183491, + GO_HOOD_TREE = 183492, + GO_HOOD_HOUSE = 183493, + GO_RAJ_BACKDROP = 183443, + GO_RAJ_MOON = 183494, + GO_RAJ_BALCONY = 183495 }; enum KZMisc