diff options
author | Wyrserth <43747507+Wyrserth@users.noreply.github.com> | 2019-06-05 23:01:38 +0200 |
---|---|---|
committer | ccrs <ccrs@users.noreply.github.com> | 2019-06-05 23:01:38 +0200 |
commit | 41931c069d442c0e15a344023d2bbf8c1b0820d9 (patch) | |
tree | 261b9223e7c44407dfd0e578b90e56819d7f41aa /src | |
parent | fb28cee6eeb97b722ebce54a444de9f13717752c (diff) |
Script/ZulGurub: implement several RP texts (#23358)
Diffstat (limited to 'src')
3 files changed, 50 insertions, 5 deletions
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index e3015b4db35..f3fbc0ab5cb 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -16,7 +16,9 @@ */ #include "zulgurub.h" +#include "DBCStructure.h" #include "InstanceScript.h" +#include "Player.h" #include "ScriptedCreature.h" #include "ScriptMgr.h" @@ -24,8 +26,9 @@ enum Says { SAY_AGGRO = 0, SAY_FLEEING = 1, - SAY_MINION_DESTROY = 2, // Where does it belong? - SAY_PROTECT_ALTAR = 3 // Where does it belong? + SAY_MINION_DESTROY = 2, + SAY_PROTECT_ALTAR = 3, + SAY_ENTRANCE = 4 }; enum Spells @@ -180,7 +183,41 @@ class boss_hakkar : public CreatureScript } }; +class at_zulgurub_entrance : public OnlyOnceAreaTriggerScript +{ +public: + at_zulgurub_entrance() : OnlyOnceAreaTriggerScript("at_zulgurub_entrance") { } + + bool _OnTrigger(Player* player, AreaTriggerEntry const* areaTrigger) override + { + InstanceScript* instance = player->GetInstanceScript(); + if (!instance || instance->GetBossState(DATA_HAKKAR) == DONE) + return true; + + if (Creature* hakkar = instance->GetCreature(DATA_HAKKAR)) + { + switch (areaTrigger->id) + { + case AREA_TRIGGER_1: + hakkar->AI()->Talk(SAY_ENTRANCE); + break; + case AREA_TRIGGER_2: + hakkar->AI()->Talk(SAY_PROTECT_ALTAR); + break; + case AREA_TRIGGER_3: + hakkar->AI()->Talk(SAY_MINION_DESTROY); + break; + default: + break; + } + } + + return true; + } +}; + void AddSC_boss_hakkar() { new boss_hakkar(); + new at_zulgurub_entrance(); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index 714e70ea129..6abdd862fc9 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -36,7 +36,8 @@ ObjectData const creatureData[] = { NPC_JINDO_THE_HEXXER, DATA_JINDO }, { NPC_ARLOKK, DATA_ARLOKK }, { NPC_PRIESTESS_MARLI, DATA_MARLI }, - { NPC_VILEBRANCH_SPEAKER, DATA_VILEBRANCH_SPEAKER } + { NPC_VILEBRANCH_SPEAKER, DATA_VILEBRANCH_SPEAKER }, + { NPC_HAKKAR, DATA_HAKKAR } }; ObjectData const gameobjectData[] = diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 38d958ae4cc..04908985733 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -60,8 +60,8 @@ enum ZGCreatureIds NPC_MANDOKIR = 11382, // Mandokir Event NPC_OHGAN = 14988, // Mandokir Event NPC_VILEBRANCH_SPEAKER = 11391, // Mandokir Event - NPC_CHAINED_SPIRT = 15117 // Mandokir Event - + NPC_CHAINED_SPIRT = 15117, // Mandokir Event + NPC_HAKKAR = 14834 }; enum ZGGameObjectIds @@ -70,6 +70,13 @@ enum ZGGameObjectIds GO_GONG_OF_BETHEKK = 180526 // Arlokk Event }; +enum ZulGurubAreaTriggers +{ + AREA_TRIGGER_1 = 3957, + AREA_TRIGGER_2 = 3958, + AREA_TRIGGER_3 = 3960 +}; + template <class AI, class T> inline AI* GetZulGurubAI(T* obj) { |