aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2014_12_13_00_world.sql6
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp4
-rw-r--r--src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp27
-rw-r--r--src/server/scripts/Northrend/Naxxramas/naxxramas.h17
4 files changed, 47 insertions, 7 deletions
diff --git a/sql/updates/world/2014_12_13_00_world.sql b/sql/updates/world/2014_12_13_00_world.sql
new file mode 100644
index 00000000000..3be9f73a293
--- /dev/null
+++ b/sql/updates/world/2014_12_13_00_world.sql
@@ -0,0 +1,6 @@
+-- Ungroup some improperly grouped texts and set their text range
+UPDATE `creature_text` SET `TextRange` = 3 WHERE `entry` = 15990 AND `groupid` = 5;
+UPDATE `creature_text` SET `groupid` = 16, `TextRange` = 3, `id` = 0 WHERE `entry` = 15990 AND `groupid` = 6 AND `id` = 0;
+UPDATE `creature_text` SET `groupid` = 17, `TextRange` = 3, `id` = 0 WHERE `entry` = 15990 AND `groupid` = 6 AND `id` = 1;
+UPDATE `creature_text` SET `groupid` = 18, `TextRange` = 3, `id` = 0 WHERE `entry` = 15990 AND `groupid` = 6 AND `id` = 2;
+UPDATE `creature_text` SET `groupid` = 19, `TextRange` = 3, `id` = 0 WHERE `entry` = 15990 AND `groupid` = 6 AND `id` = 3;
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
index 87466b6bf41..917fca5b0ba 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_kelthuzad.cpp
@@ -38,9 +38,7 @@ enum Yells
SAY_SAPP_DIALOG3 = 2, //not used
SAY_SAPP_DIALOG4_LICH = 3, //not used
SAY_SAPP_DIALOG5 = 4, //not used
- SAY_CAT_DIED = 5, //when cat dies, not used
- //when each of the 4 wing bosses dies
- SAY_TAUNT = 6,
+
SAY_AGGRO = 7,
SAY_SLAY = 8,
SAY_DEATH = 9,
diff --git a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
index f2b472eaac5..7a0930dc2f3 100644
--- a/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/instance_naxxramas.cpp
@@ -115,6 +115,7 @@ class instance_naxxramas : public InstanceMapScript
minHorsemenDiedTime = 0;
maxHorsemenDiedTime = 0;
AbominationCount = 0;
+ CurrentWingTaunt = SAY_KELTHUZAD_FIRST_WING_TAUNT;
playerDied = 0;
}
@@ -242,6 +243,15 @@ class instance_naxxramas : public InstanceMapScript
playerDied = 1;
SaveToDB();
}
+
+ if (Creature* creature = unit->ToCreature())
+ if (creature->GetEntry() == NPC_BIGGLESWORTH)
+ {
+ // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
+ instance->LoadGrid(3749.67f, -5114.06f);
+ if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
+ kelthuzad->AI()->Talk(SAY_KELTHUZAD_CAT_DIED);
+ }
}
void SetData(uint32 id, uint32 value) override
@@ -339,17 +349,26 @@ class instance_naxxramas : public InstanceMapScript
switch (id)
{
+ case BOSS_MAEXXNA:
+ case BOSS_LOATHEB:
+ case BOSS_THADDIUS:
+ if (state == DONE)
+ events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
+ break;
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);
}
+ events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6000);
+ }
break;
default:
break;
@@ -405,6 +424,13 @@ class instance_naxxramas : public InstanceMapScript
if (Creature* rivendare = instance->GetCreature(BaronGUID))
rivendare->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
break;
+ case EVENT_KELTHUZAD_WING_TAUNT:
+ // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
+ instance->LoadGrid(3749.67f, -5114.06f);
+ if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
+ kelthuzad->AI()->Talk(CurrentWingTaunt);
+ ++CurrentWingTaunt;
+ break;
default:
break;
}
@@ -513,6 +539,7 @@ class instance_naxxramas : public InstanceMapScript
ObjectGuid KelthuzadTriggerGUID;
ObjectGuid PortalsGUID[4];
uint8 AbominationCount;
+ uint8 CurrentWingTaunt;
/* The Immortal / The Undying */
uint32 playerDied;
diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
index ac339a60fda..a1c8a1c79d4 100644
--- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h
+++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h
@@ -89,7 +89,8 @@ enum CreaturesIds
NPC_CRYPT_GUARD = 16573,
NPC_NAXXRAMAS_FOLLOWER = 16505,
NPC_FOLLOWER_WORSHIPPER = 16506,
- NPC_DK_UNDERSTUDY = 16803
+ NPC_DK_UNDERSTUDY = 16803,
+ NPC_BIGGLESWORTH = 16998
};
enum GameObjectsIds
@@ -152,13 +153,21 @@ enum InstanceEvents
EVENT_DIALOGUE_GOTHIK_BLAUMEUX2,
EVENT_DIALOGUE_GOTHIK_ZELIEK2,
EVENT_DIALOGUE_GOTHIK_KORTHAZZ2,
- EVENT_DIALOGUE_GOTHIK_RIVENDARE2
+ EVENT_DIALOGUE_GOTHIK_RIVENDARE2,
+
+ // Dialogue that happens after each wing.
+ EVENT_KELTHUZAD_WING_TAUNT
};
enum InstanceTexts
{
- SAY_DIALOGUE_GOTHIK_HORSEMAN = 5,
- SAY_DIALOGUE_GOTHIK_HORSEMAN2 = 6
+ // The Four Horsemen
+ SAY_DIALOGUE_GOTHIK_HORSEMAN = 5,
+ SAY_DIALOGUE_GOTHIK_HORSEMAN2 = 6,
+
+ // Kel'Thuzad
+ SAY_KELTHUZAD_CAT_DIED = 5,
+ SAY_KELTHUZAD_FIRST_WING_TAUNT = 16
};
/*