From dfe28a75a6e928eb5522d3ab649fbf069a05e500 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 18:56:25 +0200 Subject: [PATCH] fix(Scripts/ZulGurub): Added more missing areatrigger whispers (#12326) --- .../rev_1657353730911093900.sql | 10 +++ .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 70 ++++++++++++++++++- 2 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1657353730911093900.sql diff --git a/data/sql/updates/pending_db_world/rev_1657353730911093900.sql b/data/sql/updates/pending_db_world/rev_1657353730911093900.sql new file mode 100644 index 000000000..27631c536 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657353730911093900.sql @@ -0,0 +1,10 @@ +-- +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (3961,3962); +INSERT INTO `areatrigger_scripts` VALUES +(3961,'at_zulgurub_bloodfire_pit_speech'), +(3962,'at_zulgurub_edge_of_madness_speech'); + +DELETE FROM `creature_text` WHERE `CreatureID`=14834 AND `groupid` IN (5,6); +INSERT INTO `creature_text` VALUES +(14834,5,0,'Pledge your allegiance to Hakkar and the pain you suffer shall be minimal.',15,0,100,0,0,0,10593,0,'Hakkar Bloodfire Pit Whisper'), +(14834,6,0,'The world will suffer immeasurable cruelties under my reign.',15,0,100,0,0,0,10590,0,'Hakkar Edge Of Madness Whisper'); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 93c6eebbb..0d2d5624d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -35,6 +35,8 @@ enum Says SAY_MINION_DESTROY = 2, SAY_PROTECT_ALTAR = 3, SAY_PROTECT_GURUBASHI_EMPIRE = 4, + SAY_PLEDGE_ALLEGIANCE = 5, + SAY_WORLD_WILL_SUFFER = 6, SAY_EVADE = 7 }; @@ -226,8 +228,8 @@ public: hakkar->AI()->Talk(SAY_PROTECT_GURUBASHI_EMPIRE); } } - return false; } + return false; } }; @@ -241,6 +243,10 @@ public: { if (InstanceScript* instance = player->GetInstanceScript()) { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) { if (hakkar->GetAI()) @@ -248,8 +254,8 @@ public: hakkar->AI()->Talk(SAY_PROTECT_ALTAR); } } - return false; } + return false; } }; @@ -263,6 +269,10 @@ public: { if (InstanceScript* instance = player->GetInstanceScript()) { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) { if (hakkar->GetAI()) @@ -270,8 +280,60 @@ public: hakkar->AI()->Talk(SAY_MINION_DESTROY); } } - return false; } + + return false; + } +}; + +class at_zulgurub_bloodfire_pit_speech : public OnlyOnceAreaTriggerScript +{ +public: + at_zulgurub_bloodfire_pit_speech() : OnlyOnceAreaTriggerScript("at_zulgurub_bloodfire_pit_speech") {} + + bool _OnTrigger(Player* player, const AreaTrigger* /*at*/) override + { + if (InstanceScript* instance = player->GetInstanceScript()) + { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) + { + if (hakkar->GetAI()) + { + hakkar->AI()->Talk(SAY_PLEDGE_ALLEGIANCE, player); + } + } + } + + return false; + } +}; + +class at_zulgurub_edge_of_madness_speech : public OnlyOnceAreaTriggerScript +{ +public: + at_zulgurub_edge_of_madness_speech() : OnlyOnceAreaTriggerScript("at_zulgurub_edge_of_madness_speech") {} + + bool _OnTrigger(Player* player, const AreaTrigger* /*at*/) override + { + if (InstanceScript* instance = player->GetInstanceScript()) + { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) + { + if (hakkar->GetAI()) + { + hakkar->AI()->Talk(SAY_WORLD_WILL_SUFFER, player); + } + } + } + return false; } }; @@ -318,5 +380,7 @@ void AddSC_boss_hakkar() new at_zulgurub_entrance_speech(); new at_zulgurub_bridge_speech(); new at_zulgurub_temple_speech(); + new at_zulgurub_bloodfire_pit_speech(); + new at_zulgurub_edge_of_madness_speech(); RegisterSpellScript(spell_blood_siphon); }