This commit is contained in:
Jelle Meeus
2025-07-13 10:51:53 +02:00
parent 25cbe5e187
commit 9847bd9c44

View File

@@ -18,71 +18,80 @@
#ifndef DEF_NAXXRAMAS_H
#define DEF_NAXXRAMAS_H
#include "CreatureAIImpl.h"
#include "SpellScript.h"
#include "naxxramas_40.h"
#define DataHeader "NAX"
#define NaxxramasScriptName "instance_naxxramas"
enum Encounters
enum NaxxramasEncouter
{
BOSS_PATCHWERK = 0,
BOSS_GROBBULUS = 1,
BOSS_GLUTH = 2,
BOSS_NOTH = 3,
BOSS_HEIGAN = 4,
BOSS_LOATHEB = 5,
BOSS_ANUB = 6,
BOSS_FAERLINA = 7,
BOSS_MAEXXNA = 8,
BOSS_THADDIUS = 9,
BOSS_RAZUVIOUS = 10,
BOSS_GOTHIK = 11,
BOSS_HORSEMAN = 12,
BOSS_SAPPHIRON = 13,
BOSS_KELTHUZAD = 14,
MAX_ENCOUNTERS,
BOSS_PATCHWERK = 0,
BOSS_GROBBULUS = 1,
BOSS_GLUTH = 2,
BOSS_NOTH = 3,
BOSS_HEIGAN = 4,
BOSS_LOATHEB = 5,
BOSS_ANUB = 6,
BOSS_FAERLINA = 7,
BOSS_MAEXXNA = 8,
BOSS_THADDIUS = 9,
BOSS_RAZUVIOUS = 10,
BOSS_GOTHIK = 11,
BOSS_HORSEMAN = 12,
BOSS_SAPPHIRON = 13,
BOSS_KELTHUZAD = 14,
MAX_ENCOUNTERS
};
enum NXData
enum NaxxramasData
{
DATA_NOTH_ENTRY_GATE = 100,
DATA_HEIGAN_ERUPTION = 101,
DATA_HEIGAN_ENTER_GATE = 102,
DATA_LOATHEB_GATE = 103,
DATA_ANUB_GATE = 104,
DATA_FAERLINA_WEB = 105,
DATA_MAEXXNA_GATE = 106,
DATA_THADDIUS_BOSS = 107,
DATA_STALAGG_BOSS = 108,
DATA_FEUGEN_BOSS = 109,
DATA_THADDIUS_GATE = 110,
DATA_RAZUVIOUS = 111, //
DATA_GOTHIK_BOSS = 112, //
DATA_GOTHIK_ENTER_GATE = 113,
DATA_GOTHIK_INNER_GATE = 114,
DATA_GOTHIK_EXIT_GATE = 115,
DATA_HORSEMEN_GATE = 116,
DATA_LICH_KING_BOSS = 117,
DATA_KELTHUZAD_FLOOR = 118,
DATA_ABOMINATION_KILLED = 119,
DATA_FRENZY_REMOVED = 120,
DATA_CHARGES_CROSSED = 121,
DATA_SPORE_KILLED = 122,
DATA_HUNDRED_CLUB = 123,
DATA_DANCE_FAIL = 124,
DATA_IMMORTAL_FAIL = 125,
DATA_KELTHUZAD_GATE = 126,
DATA_HAD_THADDIUS_GREET = 127,
DATA_KELTHUZAD_PORTAL_1 = 128,
DATA_KELTHUZAD_PORTAL_2 = 129,
DATA_KELTHUZAD_PORTAL_3 = 130,
DATA_KELTHUZAD_PORTAL_4 = 131
DATA_PATCHWERK_BOSS = 100,
DATA_STALAGG_BOSS = 101,
DATA_FEUGEN_BOSS = 102,
DATA_THADDIUS_BOSS = 103,
DATA_RAZUVIOUS_BOSS = 104,
DATA_GOTHIK_BOSS = 105,
DATA_BARON_RIVENDARE_BOSS = 106,
DATA_SIR_ZELIEK_BOSS = 107,
DATA_LADY_BLAUMEUX_BOSS = 108,
DATA_THANE_KORTHAZZ_BOSS = 109,
DATA_SAPPHIRON_BOSS = 110,
DATA_KELTHUZAD_BOSS = 111,
DATA_LICH_KING_BOSS = 112,
DATA_LOATHEB_PORTAL = 200,
DATA_MAEXXNA_PORTAL = 201,
DATA_THADDIUS_PORTAL = 202,
DATA_HORSEMAN_PORTAL = 203,
DATA_GOTHIK_INNER_GATE = 204,
DATA_SAPPHIRON_GATE = 205,
DATA_KELTHUZAD_GATE = 206,
DATA_KELTHUZAD_FLOOR = 207,
DATA_KELTHUZAD_PORTAL_1 = 208,
DATA_KELTHUZAD_PORTAL_2 = 209,
DATA_KELTHUZAD_PORTAL_3 = 210,
DATA_KELTHUZAD_PORTAL_4 = 211,
DATA_HEIGAN_ERUPTION = 300,
DATA_DANCE_FAIL = 301,
DATA_SPORE_KILLED = 302,
DATA_FRENZY_REMOVED = 303,
DATA_THADDIUS_INTRO = 304,
DATA_CHARGES_CROSSED = 305,
DATA_HUNDRED_CLUB = 306,
DATA_ABOMINATION_KILLED = 307,
};
enum NXGOs
enum NaxxramasPersistentData
{
PERSISTENT_DATA_THADDIUS_INTRO = 0,
PERSISTENT_DATA_KELTHUZAD_DIALOG = 1,
PERSISTENT_DATA_IMMORTAL_FAIL = 2,
PERSISTENT_DATA_COUNT
};
enum NaxxramasGameObject
{
GO_PATCHWERK_GATE = 181123,
GO_GLUTH_GATE = 181120,
@@ -90,7 +99,6 @@ enum NXGOs
GO_NOTH_EXIT_GATE = 181201,
GO_HEIGAN_ENTRY_GATE = 181202,
GO_HEIGAN_EXIT_GATE = 181203,
GO_HEIGAN_EXIT_GATE_OLD = 181496,
GO_LOATHEB_GATE = 181241,
GO_ANUB_GATE = 181126,
GO_ANUB_NEXT_GATE = 181195,
@@ -130,11 +138,28 @@ enum NXGOs
GO_ARAC_EYE_RAMP_BOSS = 181233,
GO_PLAG_EYE_RAMP_BOSS = 181231,
GO_MILI_EYE_RAMP_BOSS = 181230,
GO_CONS_EYE_RAMP_BOSS = 181232,
GO_CONS_EYE_RAMP_BOSS = 181232
};
enum NXNPCs
enum NaxxramasGameObjectsDisplayId
{
GO_DISPLAY_ID_HEIGAN_ERUPTION1 = 1287,
GO_DISPLAY_ID_HEIGAN_ERUPTION2 = 6785
};
enum NaxxramasCreatureId
{
// Patchwerk
NPC_PATCHWERK = 16028,
NPC_PATCHWORK_GOLEM = 16017,
NPC_BILE_RETCHER = 16018,
NPC_MAD_SCIENTIST = 16020,
NPC_LIVING_MONSTROSITY = 16021,
NPC_SURGICAL_ASSIST = 16022,
NPC_SLUDGE_BELCHER = 16029,
NPC_LIVING_POISON = 16027,
// Thaddius
NPC_THADDIUS = 15928,
NPC_STALAGG = 15929,
@@ -143,6 +168,9 @@ enum NXNPCs
// Razuvious
NPC_RAZUVIOUS = 16061,
// Gothik
NPC_GOTHIK = 16060,
// Four horseman
NPC_BARON_RIVENDARE = 30549,
NPC_SIR_ZELIEK = 16063,
@@ -154,30 +182,124 @@ enum NXNPCs
// Kel'Thuzad
NPC_KELTHUZAD = 15990,
NPC_LICH_KING = 16980,
// Frogger
NPC_LIVING_POISON = 16027,
NPC_NAXXRAMAS_TRIGGER = 16082,
NPC_MR_BIGGLESWORTH = 16998,
// Patchwerk
NPC_PATCHWERK = 16028,
NPC_PATCHWORK_GOLEM = 16017,
NPC_BILE_RETCHER = 16018,
NPC_MAD_SCIENTIST = 16020,
NPC_LIVING_MONSTROSITY = 16021,
NPC_SURGICAL_ASSIST = 16022,
NPC_SLUDGE_BELCHER = 16029,
// Gothik
NPC_GOTHIK = 16060
NPC_LICH_KING = 16980
};
enum NXMisc
enum NaxxramasAchievemmentCriteria
{
ACHIEV_CRITERIA_AND_THEY_WOULD_ALL_GO_DOWN_TOGETHER_10_PLAYER = 7600, // And They Would All Go Down Together (10 player)
ACHIEV_CRITERIA_AND_THEY_WOULD_ALL_GO_DOWN_TOGETHER_25_PLAYER = 7601, // And They Would All Go Down Together (25 player)
ACHIEV_CRITERIA_JUST_CANT_GET_ENOUGH_10_PLAYER = 7614, // Just Can't Get Enough (10 player)
ACHIEV_CRITERIA_JUST_CANT_GET_ENOUGH_25_PLAYER = 7615, // Just Can't Get Enough (25 player)
ACHIEV_CRITERIA_MOMMA_SAID_KNOCK_YOU_OUT_10_PLAYER = 7265, // Momma Said Knock You Out (10 player)
ACHIEV_CRITERIA_MOMMA_SAID_KNOCK_YOU_OUT_25_PLAYER = 7549, // Momma Said Knock You Out (25 player)
ACHIEV_CRITERIA_SHOKING_10_PLAYER = 7604, // Shocking! (10 player)
ACHIEV_CRITERIA_SHOKING_25_PLAYER = 7605, // Shocking! (25 player)
ACHIEV_CRITERIA_SPORE_LOSER_10_PLAYER = 7612, // Spore Loser (10 player)
ACHIEV_CRITERIA_SPORE_LOSER_25_PLAYER = 7613, // Spore Loser (25 player)
ACHIEV_CRITERIA_THE_SAFETY_DANCE_10_PLAYER = 7264, // The Safety Dance (10 player)
ACHIEV_CRITERIA_THE_SAFETY_DANCE_25_PLAYER = 7548, // The Safety Dance (25 player)
ACHIEV_CRITERIA_SUBTRACTION_10_PLAYER = 7608, // Subtraction (10 player)
ACHIEV_CRITERIA_SUBTRACTION_25_PLAYER = 7609, // Subtraction (25 player)
ACHIEV_CRITERIA_THE_HUNDRED_CLUB_10_PLAYER = 7567, // The Hundred Club (10 player)
ACHIEV_CRITERIA_THE_HUNDRED_CLUB_25_PLAYER = 7568, // The Hundred Club (25 player)
ACHIEV_CRITERIA_THE_DEDICATED_FEW_ANUB_10_PLAYER = 7146, // The Dedicated Few (25 player) - Anub'Rekhan
ACHIEV_CRITERIA_THE_DEDICATED_FEW_FAERLINA_10_PLAYER = 7147, // The Dedicated Few (25 player) - Grand Widow Faerlina
ACHIEV_CRITERIA_THE_DEDICATED_FEW_MAEXXNA_10_PLAYER = 7148, // The Dedicated Few (25 player) - Maexxna
ACHIEV_CRITERIA_THE_DEDICATED_FEW_PATCHWERK_10_PLAYER = 7149, // The Dedicated Few (25 player) - Patchwerk
ACHIEV_CRITERIA_THE_DEDICATED_FEW_GROBBULUS_10_PLAYER = 7150, // The Dedicated Few (25 player) - Grobbulus
ACHIEV_CRITERIA_THE_DEDICATED_FEW_GLUTH_10_PLAYER = 7151, // The Dedicated Few (25 player) - Gluth
ACHIEV_CRITERIA_THE_DEDICATED_FEW_THADDIUS_10_PLAYER = 7152, // The Dedicated Few (25 player) - Thaddius
ACHIEV_CRITERIA_THE_DEDICATED_FEW_NOTH_10_PLAYER = 7153, // The Dedicated Few (25 player) - Noth the Plaguebringer
ACHIEV_CRITERIA_THE_DEDICATED_FEW_HEIGAN_10_PLAYER = 7154, // The Dedicated Few (25 player) - Heigan the Unclean
ACHIEV_CRITERIA_THE_DEDICATED_FEW_LOATHEB_10_PLAYER = 7155, // The Dedicated Few (25 player) - Loatheb
ACHIEV_CRITERIA_THE_DEDICATED_FEW_RAZUVIOUS_10_PLAYER = 7156, // The Dedicated Few (25 player) - Instructor Razuvious
ACHIEV_CRITERIA_THE_DEDICATED_FEW_GOTHIK_10_PLAYER = 7157, // The Dedicated Few (25 player) - Gothik the Harvester
ACHIEV_CRITERIA_THE_DEDICATED_FEW_SAPPHIRON_10_PLAYER = 7158, // The Dedicated Few (25 player) - Sapphiron
ACHIEV_CRITERIA_THE_DEDICATED_FEW_KELTHUZAD_10_PLAYER = 6802, // The Dedicated Few (25 player) - Kel'Thuzad
ACHIEV_CRITERIA_THE_DEDICATED_FEW_ANUB_25_PLAYER = 7159, // The Dedicated Few (25 player) - Anub'Rekhan
ACHIEV_CRITERIA_THE_DEDICATED_FEW_FAERLINA_25_PLAYER = 7160, // The Dedicated Few (25 player) - Grand Widow Faerlina
ACHIEV_CRITERIA_THE_DEDICATED_FEW_MAEXXNA_25_PLAYER = 7161, // The Dedicated Few (25 player) - Maexxna
ACHIEV_CRITERIA_THE_DEDICATED_FEW_PATCHWERK_25_PLAYER = 7162, // The Dedicated Few (25 player) - Patchwerk
ACHIEV_CRITERIA_THE_DEDICATED_FEW_GROBBULUS_25_PLAYER = 7163, // The Dedicated Few (25 player) - Grobbulus
ACHIEV_CRITERIA_THE_DEDICATED_FEW_GLUTH_25_PLAYER = 7164, // The Dedicated Few (25 player) - Gluth
ACHIEV_CRITERIA_THE_DEDICATED_FEW_THADDIUS_25_PLAYER = 7165, // The Dedicated Few (25 player) - Thaddius
ACHIEV_CRITERIA_THE_DEDICATED_FEW_NOTH_25_PLAYER = 7166, // The Dedicated Few (25 player) - Noth the Plaguebringer
ACHIEV_CRITERIA_THE_DEDICATED_FEW_HEIGAN_25_PLAYER = 7167, // The Dedicated Few (25 player) - Heigan the Unclean
ACHIEV_CRITERIA_THE_DEDICATED_FEW_LOATHEB_25_PLAYER = 7168, // The Dedicated Few (25 player) - Loatheb
ACHIEV_CRITERIA_THE_DEDICATED_FEW_RAZUVIOUS_25_PLAYER = 7169, // The Dedicated Few (25 player) - Instructor Razuvious
ACHIEV_CRITERIA_THE_DEDICATED_FEW_GOTHIK_25_PLAYER = 7170, // The Dedicated Few (25 player) - Gothik the Harvester
ACHIEV_CRITERIA_THE_DEDICATED_FEW_SAPPHIRON_25_PLAYER = 7171, // The Dedicated Few (25 player) - Sapphiron
ACHIEV_CRITERIA_THE_DEDICATED_FEW_KELTHUZAD_25_PLAYER = 7172, // The Dedicated Few (25 player) - Kel'Thuzad
ACHIEV_CRITERIA_THE_UNDYING_KELTHUZAD = 7617, // The Undying - Kel'Thuzad
ACHIEV_CRITERIA_THE_UNDYING_THE_FOUR_HORSEMEN = 13237, // The Undying - The Four Horsemen
ACHIEV_CRITERIA_THE_UNDYING_MAEXXNA = 13238, // The Undying - Maexxna
ACHIEV_CRITERIA_THE_UNDYING_LOATHEB = 13239, // The Undying - Loatheb
ACHIEV_CRITERIA_THE_UNDYING_THADDIUS = 13240, // The Undying - Thaddius
ACHIEV_CRITERIA_THE_IMMORTAL_KELTHUZAD = 7616, // The Immortal - Kel'Thuzad
ACHIEV_CRITERIA_THE_IMMORTAL_THE_FOUR_HORSEMEN = 13233, // The Immortal - The Four Horsemen
ACHIEV_CRITERIA_THE_IMMORTAL_MAEXXNA = 13234, // The Immortal - Maexxna
ACHIEV_CRITERIA_THE_IMMORTAL_LOATHEB = 13235, // The Immortal - Loatheb
ACHIEV_CRITERIA_THE_IMMORTAL_THADDIUS = 13236 // The Immortal - Thaddius
};
enum NaxxramasSay
{
SAY_HORSEMEN_DIALOG1 = 5,
SAY_HORSEMEN_DIALOG2 = 6,
SAY_SAPP_DIALOG1 = 0,
SAY_SAPP_DIALOG2_LICH = 1,
SAY_SAPP_DIALOG3 = 2,
SAY_SAPP_DIALOG4_LICH = 2,
SAY_SAPP_DIALOG5 = 4,
SAY_SAPP_DIALOG6 = 20,
SAY_CAT_DIED = 5, // No!!! A curse upon you, interlopers! The armies of the Lich King will hunt you down. You will not escape your fate...
SAY_FIRST_WING_TAUNT = 16
};
enum NaxxramasEvent
{
EVENT_SUMMON_LIVING_POISON = 1,
EVENT_THADDIUS_SCREAMS = 2,
EVENT_AND_THEY_WOULD_ALL_GO_DOWN_TOGETHER = 3,
EVENT_KELTHUZAD_WING_TAUNT = 4,
EVENT_HORSEMEN_INTRO1 = 5, // Thane Korth'azz: To arms, ye roustabouts! We've got company!
EVENT_HORSEMEN_INTRO2 = 6, // Sir Zeliek: Invaders, cease this foolish venture at once! Turn away while you still can!
EVENT_HORSEMEN_INTRO3 = 7, // Lady Blaumeux: Come, Zeliek, do not drive them out. Not before we've had our fun!
EVENT_HORSEMEN_INTRO4 = 8, // Baron Rivendare: Enough prattling. Let them come. We shall grind their bones to dust.
EVENT_HORSEMEN_INTRO5 = 9, // Lady Blaumeux: I do hope they stay alive long enough for me to... introduce myself.
EVENT_HORSEMEN_INTRO6 = 10, // Sir Zeliek: Perhaps they will come to their senses... and run away as fast as they can.
EVENT_HORSEMEN_INTRO7 = 11, // Thane Korth'azz: I've heard about enough a' yer snivelin'! Shut yer flytrap before I shut it for ye'!
EVENT_HORSEMEN_INTRO8 = 12, // Baron Rivendare: Conserve your anger. Harness your rage. You will all have outlets for your frustrations soon enough.
EVENT_FROSTWYRM_WATERFALL_DOOR = 13,
EVENT_KELTHUZAD_LICH_KING_TALK1 = 14,
EVENT_KELTHUZAD_LICH_KING_TALK2 = 15,
EVENT_KELTHUZAD_LICH_KING_TALK3 = 16,
EVENT_KELTHUZAD_LICH_KING_TALK4 = 17,
EVENT_KELTHUZAD_LICH_KING_TALK5 = 18,
EVENT_KELTHUZAD_LICH_KING_TALK6 = 19
};
enum NaxxramasMisc
{
SPELL_ERUPTION = 29371,
SPELL_FROGGER_EXPLODE = 28433,
SPELL_EXPLODE = 28433,
SPELL_THE_FOUR_HORSEMAN_CREDIT = 59450,
ACTION_SAPPHIRON_BIRTH = 1,
@@ -185,29 +307,19 @@ enum NXMisc
SOUND_SCREAM = 8873
};
enum NXSays
{
SAY_SAPP_DIALOG1 = 0,
SAY_SAPP_DIALOG2_LICH = 1,
SAY_SAPP_DIALOG3 = 2,
SAY_SAPP_DIALOG4_LICH = 2,
SAY_SAPP_DIALOG5 = 4,
SAY_SAPP_DIALOG6 = 20,
SAY_CAT_DIED = 5,
SAY_FIRST_WING_TAUNT = 16
};
static constexpr uint32 NaxxramasMapId = 533;
static constexpr uint8 HeiganEruptSectionCount = 4;
static constexpr uint8 HorsemanCount = 4;
static constexpr uint8 AbominationKillCountReq = 18;
static constexpr uint8 TheDedicatedFew10PlayerReq = 9;
static constexpr uint8 TheDedicatedFew25PlayerReq = 21;
enum NXEvents
{
EVENT_THADDIUS_SCREAMS = 0,
EVENT_KELTHUZAD_WING_TAUNT = 1,
EVENT_FROSTWYRM_WATERFALL_DOOR = 2
};
template <class AI, class T>
template<typename AI, typename T>
inline AI* GetNaxxramasAI(T* obj)
{
return GetInstanceAI<AI>(obj, NaxxramasScriptName);
}
#define RegisterNaxxramasCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetNaxxramasAI)
#endif