diff --git a/data/sql/updates/pending_db_world/rev_1654355427387277800.sql b/data/sql/updates/pending_db_world/rev_1654355427387277800.sql new file mode 100644 index 000000000..e583502b1 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1654355427387277800.sql @@ -0,0 +1,9 @@ +-- +DELETE FROM `game_event_gameobject` WHERE `guid`=28704; +INSERT INTO `game_event_gameobject` VALUES +(27,28704), +(28,28704), +(29,28704), +(30,28704); + +UPDATE `gameobject_template` SET `ScriptName`='go_brazier_of_madness' WHERE `entry`=180327; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index 6e99c2fb6..2cab32c31 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -22,6 +22,7 @@ SDComment: Missing reset function after killing a boss for Ohgan, Thekal. SDCategory: Zul'Gurub EndScriptData */ +#include "GameObjectAI.h" #include "InstanceScript.h" #include "ScriptMgr.h" #include "zulgurub.h" @@ -194,7 +195,56 @@ public: } }; +enum EdgeOfMadnessEnum +{ + EVENT_EDGE_OF_MADNESS_GRILEK = 27, + EVENT_EDGE_OF_MADNESS_HAZZARAH = 28, + EVENT_EDGE_OF_MADNESS_RENATAKI = 29, + EVENT_EDGE_OF_MADNESS_WUSHOOLAY = 30 +}; + +std::vector> BrazierOfMadnessContainer = +{ + { EVENT_EDGE_OF_MADNESS_GRILEK, NPC_GRILEK }, + { EVENT_EDGE_OF_MADNESS_HAZZARAH, NPC_HAZZARAH }, + { EVENT_EDGE_OF_MADNESS_RENATAKI, NPC_RENATAKI }, + { EVENT_EDGE_OF_MADNESS_WUSHOOLAY, NPC_WUSHOOLAY } +}; + +Position const edgeOfMagnessSummonPos = { -11901.229f, -1906.366f, 65.358f, 0.942f }; + +struct go_brazier_of_madness : public GameObjectAI +{ + go_brazier_of_madness(GameObject* go) : GameObjectAI(go) { } + + bool GossipHello(Player* /*player*/, bool reportUse) override + { + if (reportUse) + { + return true; + } + + uint32 bossEntry = 0; + for (uint8 i = 0; i < 4; ++i) + { + if (sGameEventMgr->IsActiveEvent(BrazierOfMadnessContainer[i].first)) + { + bossEntry = BrazierOfMadnessContainer[i].second; + break; + } + } + + if (bossEntry) + { + me->SummonCreature(bossEntry, edgeOfMagnessSummonPos, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 2 * HOUR * IN_MILLISECONDS); + } + + return false; + } +}; + void AddSC_instance_zulgurub() { new instance_zulgurub(); + RegisterGameObjectAI(go_brazier_of_madness); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 8736e5d4d..232328acf 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -63,7 +63,11 @@ enum CreatureIds NPC_HAKKAR = 14834, NPC_ZULGURUB_TIGER = 11361, NPC_BRAIN_WASH_TOTEM = 15112, - NPC_GAHZRANKA = 15114 + NPC_GAHZRANKA = 15114, + NPC_GRILEK = 15082, + NPC_HAZZARAH = 15083, + NPC_RENATAKI = 15084, + NPC_WUSHOOLAY = 15085 }; enum GameobjectIds