aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNyeriah <sarah.trysan@live.com>2014-12-12 15:21:15 -0200
committerNyeriah <sarah.trysan@live.com>2014-12-12 15:21:15 -0200
commit6c7472a6d33696d0695075b1229233145de0e81f (patch)
tree23e84ae21fd8fdbfcc3c00c5238c9114fe5b23e2 /src
parent3fc612b277b3030fac7f62cedb47a85678f77cea (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.cpp76
-rw-r--r--src/server/scripts/Northrend/Naxxramas/naxxramas.h19
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)