diff options
author | Nyeriah <sarah.trysan@live.com> | 2014-12-12 15:21:15 -0200 |
---|---|---|
committer | Nyeriah <sarah.trysan@live.com> | 2014-12-12 15:21:15 -0200 |
commit | 6c7472a6d33696d0695075b1229233145de0e81f (patch) | |
tree | 23e84ae21fd8fdbfcc3c00c5238c9114fe5b23e2 /src | |
parent | 3fc612b277b3030fac7f62cedb47a85678f77cea (diff) |
Scripts/Naxxramas: Implement the Four Horsemen's dialogue that happens after Gothik's death
(cherry picked from commit f7a5a19f00d5a5df8df67b051a5606292d6eea6e
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp | 76 | ||||
-rw-r--r-- | src/server/scripts/Northrend/Naxxramas/naxxramas.h | 19 |
2 files changed, 89 insertions, 6 deletions
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp index b66bc07f2c8..f2b472eaac5 100644 --- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp +++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp @@ -337,18 +337,80 @@ class instance_naxxramas : public InstanceMapScript if (!InstanceScript::SetBossState(id, state)) return false; - if (id == BOSS_HORSEMEN && state == DONE) + switch (id) { - if (GameObject* horsemenChest = instance->GetGameObject(HorsemenChestGUID)) - { - horsemenChest->SetRespawnTime(horsemenChest->GetRespawnDelay()); - horsemenChest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); - } + case BOSS_GOTHIK: + if (state == DONE) + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_KORTHAZZ, 10000); + break; + case BOSS_HORSEMEN: + if (state == DONE) + if (GameObject* horsemenChest = instance->GetGameObject(HorsemenChestGUID)) + { + horsemenChest->SetRespawnTime(horsemenChest->GetRespawnDelay()); + horsemenChest->RemoveFlag(GAMEOBJECT_FLAGS, GO_FLAG_NOT_SELECTABLE); + } + break; + default: + break; } return true; } + void Update(uint32 diff) override + { + events.Update(diff); + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_DIALOGUE_GOTHIK_KORTHAZZ: + if (Creature* korthazz = instance->GetCreature(ThaneGUID)) + korthazz->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN); + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_ZELIEK, 5000); + break; + case EVENT_DIALOGUE_GOTHIK_ZELIEK: + if (Creature* zeliek = instance->GetCreature(SirGUID)) + zeliek->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN); + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_BLAUMEUX, 6000); + break; + case EVENT_DIALOGUE_GOTHIK_BLAUMEUX: + if (Creature* blaumeux = instance->GetCreature(LadyGUID)) + blaumeux->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN); + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_RIVENDARE, 6000); + break; + case EVENT_DIALOGUE_GOTHIK_RIVENDARE: + if (Creature* rivendare = instance->GetCreature(BaronGUID)) + rivendare->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN); + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_BLAUMEUX2, 6000); + break; + case EVENT_DIALOGUE_GOTHIK_BLAUMEUX2: + if (Creature* blaumeux = instance->GetCreature(LadyGUID)) + blaumeux->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2); + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_ZELIEK2, 6000); + break; + case EVENT_DIALOGUE_GOTHIK_ZELIEK2: + if (Creature* zeliek = instance->GetCreature(SirGUID)) + zeliek->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2); + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_KORTHAZZ2, 6000); + break; + case EVENT_DIALOGUE_GOTHIK_KORTHAZZ2: + if (Creature* korthazz = instance->GetCreature(ThaneGUID)) + korthazz->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2); + events.ScheduleEvent(EVENT_DIALOGUE_GOTHIK_RIVENDARE2, 6000); + break; + case EVENT_DIALOGUE_GOTHIK_RIVENDARE2: + if (Creature* rivendare = instance->GetCreature(BaronGUID)) + rivendare->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2); + break; + default: + break; + } + } + } + void HeiganErupt(uint32 section) { for (uint32 i = 0; i < 4; ++i) @@ -454,6 +516,8 @@ class instance_naxxramas : public InstanceMapScript /* The Immortal / The Undying */ uint32 playerDied; + + EventMap events; }; InstanceScript* GetInstanceScript(InstanceMap* map) const override diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h index 8325271a403..ac339a60fda 100644 --- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h +++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h @@ -142,6 +142,25 @@ enum SpellIds SPELL_SLIME = 28801 }; +enum InstanceEvents +{ + // Dialogue that happens after Gothik's death. + EVENT_DIALOGUE_GOTHIK_KORTHAZZ = 1, + EVENT_DIALOGUE_GOTHIK_ZELIEK, + EVENT_DIALOGUE_GOTHIK_BLAUMEUX, + EVENT_DIALOGUE_GOTHIK_RIVENDARE, + EVENT_DIALOGUE_GOTHIK_BLAUMEUX2, + EVENT_DIALOGUE_GOTHIK_ZELIEK2, + EVENT_DIALOGUE_GOTHIK_KORTHAZZ2, + EVENT_DIALOGUE_GOTHIK_RIVENDARE2 +}; + +enum InstanceTexts +{ + SAY_DIALOGUE_GOTHIK_HORSEMAN = 5, + SAY_DIALOGUE_GOTHIK_HORSEMAN2 = 6 +}; + /* template<class AI> CreatureAI* GetNaxxramasAI(Creature* creature) |