TrinityCore
Loading...
Searching...
No Matches
instance_naxxramas.cpp
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#include "ScriptMgr.h"
19#include "AreaBoundary.h"
20#include "Creature.h"
21#include "CreatureAI.h"
22#include "EventMap.h"
23#include "GameObject.h"
24#include "InstanceScript.h"
25#include "Map.h"
26#include "naxxramas.h"
27
29{
30 /* Arachnid Quarter */
31 { BOSS_ANUBREKHAN, new CircleBoundary(Position(3273.376709f, -3475.876709f), Position(3195.668213f, -3475.930176f)) },
32 { BOSS_FAERLINA, new RectangleBoundary(3315.0f, 3402.0f, -3727.0f, -3590.0f) },
33 { BOSS_FAERLINA, new CircleBoundary(Position(3372.68f, -3648.2f), Position(3316.0f, -3704.26f)) },
34 { BOSS_MAEXXNA, new CircleBoundary(Position(3502.2587f, -3892.1697f), Position(3418.7422f, -3840.271f)) },
35
36 /* Plague Quarter */
37 { BOSS_NOTH, new RectangleBoundary(2618.0f, 2754.0f, -3557.43f, -3450.0f) },
38 { BOSS_HEIGAN, new CircleBoundary(Position(2772.57f, -3685.28f), 56.0f) },
39 { BOSS_LOATHEB, new CircleBoundary(Position(2909.0f, -3997.41f), 57.0f) },
40
41 /* Military Quarter */
42 { BOSS_RAZUVIOUS, new ZRangeBoundary(260.0f, 287.0f) }, // will not chase onto the upper floor
43 { BOSS_GOTHIK, new RectangleBoundary(2627.0f, 2764.0f, -3440.0f, -3275.0f) },
44 { BOSS_HORSEMEN, new ParallelogramBoundary(Position(2646.0f, -2959.0f), Position(2529.0f, -3075.0f), Position(2506.0f, -2854.0f)) },
45
46 /* Construct Quarter */
47 { BOSS_PATCHWERK, new CircleBoundary(Position(3204.0f, -3241.4f), 240.0f) },
48 { BOSS_PATCHWERK, new CircleBoundary(Position(3130.8576f, -3210.36f), Position(3085.37f, -3219.85f), true) }, // entrance slime circle blocker
49 { BOSS_GROBBULUS, new CircleBoundary(Position(3204.0f, -3241.4f), 240.0f) },
50 { BOSS_GROBBULUS, new RectangleBoundary(3295.0f, 3340.0f, -3254.2f, -3230.18f, true) }, // entrance door blocker
51 { BOSS_GLUTH, new CircleBoundary(Position(3293.0f, -3142.0f), 80.0f) },
52 { BOSS_GLUTH, new ParallelogramBoundary(Position(3401.0f, -3149.0f), Position(3261.0f, -3028.0f), Position(3320.0f, -3267.0f)) },
53 { BOSS_GLUTH, new ZRangeBoundary(285.0f, 310.0f) },
54 { BOSS_THADDIUS, new ParallelogramBoundary(Position(3478.3f, -3070.0f), Position(3370.0f, -2961.5f), Position(3580.0f, -2961.5f)) },
55
56 /* Frostwyrm Lair */
57 { BOSS_SAPPHIRON, new CircleBoundary(Position(3517.627f, -5255.5f), 110.0f) },
58 { BOSS_KELTHUZAD, new CircleBoundary(Position(3716.0f, -5107.0f), 85.0f) }
59};
60
61static constexpr DoorData doorData[] =
62{
96};
97
106
108{
109 { BOSS_ANUBREKHAN, {{ 1107 }} },
110 { BOSS_FAERLINA, {{ 1110 }} },
111 { BOSS_MAEXXNA, {{ 1116 }} },
112 { BOSS_NOTH, {{ 1117 }} },
113 { BOSS_HEIGAN, {{ 1112 }} },
114 { BOSS_LOATHEB, {{ 1115 }} },
115 { BOSS_PATCHWERK, {{ 1118 }} },
116 { BOSS_GROBBULUS, {{ 1111 }} },
117 { BOSS_GLUTH, {{ 1108 }} },
118 { BOSS_THADDIUS, {{ 1120 }} },
119 { BOSS_RAZUVIOUS, {{ 1113 }} },
120 { BOSS_GOTHIK, {{ 1109 }} },
121 { BOSS_HORSEMEN, {{ 1121 }} },
122 { BOSS_SAPPHIRON, {{ 1119 }} },
123 { BOSS_KELTHUZAD, {{ 1114 }} }
124};
125
127{
128 public:
130
132 {
145
146 void OnCreatureCreate(Creature* creature) override
147 {
148 switch (creature->GetEntry())
149 {
150 case NPC_ANUBREKHAN:
151 AnubRekhanGUID = creature->GetGUID();
152 break;
153 case NPC_FAERLINA:
154 FaerlinaGUID = creature->GetGUID();
155 break;
156 case NPC_RAZUVIOUS:
157 RazuviousGUID = creature->GetGUID();
158 break;
159 case NPC_GOTHIK:
160 GothikGUID = creature->GetGUID();
161 break;
162 case NPC_THANE:
163 ThaneGUID = creature->GetGUID();
164 break;
165 case NPC_LADY:
166 LadyGUID = creature->GetGUID();
167 break;
168 case NPC_BARON:
169 BaronGUID = creature->GetGUID();
170 break;
171 case NPC_SIR:
172 SirGUID = creature->GetGUID();
173 break;
174 case NPC_GLUTH:
175 GluthGUID = creature->GetGUID();
176 break;
177 case NPC_HEIGAN:
178 HeiganGUID = creature->GetGUID();
179 break;
180 case NPC_THADDIUS:
181 ThaddiusGUID = creature->GetGUID();
182 break;
183 case NPC_FEUGEN:
184 FeugenGUID = creature->GetGUID();
185 break;
186 case NPC_STALAGG:
187 StalaggGUID = creature->GetGUID();
188 break;
189 case NPC_SAPPHIRON:
190 SapphironGUID = creature->GetGUID();
191 break;
192 case NPC_KEL_THUZAD:
193 KelthuzadGUID = creature->GetGUID();
194 break;
195 case NPC_LICH_KING:
196 LichKingGUID = creature->GetGUID();
197 break;
198 default:
199 break;
200 }
201 }
202
204 {
205 switch (go->GetEntry())
206 {
207 case GO_GOTHIK_GATE:
208 GothikGateGUID = go->GetGUID();
209 break;
213 break;
215 PortalsGUID[0] = go->GetGUID();
216 break;
218 PortalsGUID[1] = go->GetGUID();
219 break;
221 PortalsGUID[2] = go->GetGUID();
222 break;
224 PortalsGUID[3] = go->GetGUID();
225 break;
228 break;
231 break;
235 break;
239 break;
243 break;
247 break;
251 break;
252 case GO_BIRTH:
254 {
255 hadSapphironBirth = true;
256 go->Delete();
257 }
258 break;
259 default:
260 break;
261 }
262
264 }
265
266 void OnUnitDeath(Unit* unit) override
267 {
268 if (Creature* creature = unit->ToCreature())
269 if (creature->GetEntry() == NPC_BIGGLESWORTH)
270 {
271 // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
272 instance->LoadGrid(3749.67f, -5114.06f);
273 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
274 kelthuzad->AI()->Talk(SAY_KELTHUZAD_CAT_DIED);
275 }
276 }
277
278 void SetData(uint32 id, uint32 value) override
279 {
280 switch (id)
281 {
282 case DATA_GOTHIK_GATE:
284 gate->SetGoState(GOState(value));
285 break;
287 hadSapphironBirth = (value == 1u);
288 break;
289 default:
290 break;
291 }
292 }
293
294 uint32 GetData(uint32 id) const override
295 {
296 switch (id)
297 {
299 return hadSapphironBirth ? 1u : 0u;
300 default:
301 break;
302 }
303
304 return 0;
305 }
306
307 ObjectGuid GetGuidData(uint32 id) const override
308 {
309 switch (id)
310 {
311 case DATA_ANUBREKHAN:
312 return AnubRekhanGUID;
313 case DATA_FAERLINA:
314 return FaerlinaGUID;
315 case DATA_RAZUVIOUS:
316 return RazuviousGUID;
317 case DATA_GOTHIK:
318 return GothikGUID;
319 case DATA_THANE:
320 return ThaneGUID;
321 case DATA_LADY:
322 return LadyGUID;
323 case DATA_BARON:
324 return BaronGUID;
325 case DATA_SIR:
326 return SirGUID;
327 case DATA_HEIGAN:
328 return HeiganGUID;
329 case DATA_GLUTH:
330 return GluthGUID;
331 case DATA_FEUGEN:
332 return FeugenGUID;
333 case DATA_STALAGG:
334 return StalaggGUID;
335 case DATA_THADDIUS:
336 return ThaddiusGUID;
337 case DATA_SAPPHIRON:
338 return SapphironGUID;
339 case DATA_KELTHUZAD:
340 return KelthuzadGUID;
342 return PortalsGUID[0];
344 return PortalsGUID[1];
346 return PortalsGUID[2];
348 return PortalsGUID[3];
351 case DATA_LICH_KING:
352 return LichKingGUID;
353 }
354
355 return ObjectGuid::Empty;
356 }
357
358 bool SetBossState(uint32 id, EncounterState state) override
359 {
360 if (!InstanceScript::SetBossState(id, state))
361 return false;
362
363 switch (id)
364 {
365 case BOSS_MAEXXNA:
366 if (state == DONE)
367 {
369 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
370
372 }
373 break;
374 case BOSS_LOATHEB:
375 if (state == DONE)
376 {
378 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
379
381 }
382 break;
383 case BOSS_THADDIUS:
384 if (state == DONE)
385 {
387 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
388
390 }
391 break;
392 case BOSS_GOTHIK:
393 if (state == DONE)
395 break;
396 case BOSS_HORSEMEN:
397 if (state == DONE)
398 {
399 if (GameObject* horsemenChest = instance->GetGameObject(HorsemenChestGUID))
400 {
401 horsemenChest->SetRespawnTime(horsemenChest->GetRespawnDelay());
402 horsemenChest->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
403 }
404
406 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
407
409 }
410 break;
411 case BOSS_SAPPHIRON:
412 if (state == DONE)
415 break;
416 case BOSS_KELTHUZAD:
417 if (state == DONE)
419 throne->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
420 break;
421 default:
422 break;
423 }
424
425 return true;
426 }
427
428 void Update(uint32 diff) override
429 {
430 events.Update(diff);
431
432 while (uint32 eventId = events.ExecuteEvent())
433 {
434 switch (eventId)
435 {
437 if (Creature* korthazz = instance->GetCreature(ThaneGUID))
438 korthazz->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
440 break;
442 if (Creature* zeliek = instance->GetCreature(SirGUID))
443 zeliek->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
445 break;
447 if (Creature* blaumeux = instance->GetCreature(LadyGUID))
448 blaumeux->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
450 break;
452 if (Creature* rivendare = instance->GetCreature(BaronGUID))
453 rivendare->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
455 break;
457 if (Creature* blaumeux = instance->GetCreature(LadyGUID))
458 blaumeux->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
460 break;
462 if (Creature* zeliek = instance->GetCreature(SirGUID))
463 zeliek->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
465 break;
467 if (Creature* korthazz = instance->GetCreature(ThaneGUID))
468 korthazz->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
470 break;
472 if (Creature* rivendare = instance->GetCreature(BaronGUID))
473 rivendare->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
474 break;
476 // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
477 instance->LoadGrid(3749.67f, -5114.06f);
478 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
479 kelthuzad->AI()->Talk(CurrentWingTaunt);
481 break;
483 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
484 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD);
486 break;
488 if (Creature* lichKing = instance->GetCreature(LichKingGUID))
489 lichKing->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_LICH_KING);
491 break;
493 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
494 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD2);
496 break;
498 if (Creature* lichKing = instance->GetCreature(LichKingGUID))
499 lichKing->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_LICH_KING2);
501 break;
503 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
504 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD3);
506 break;
508 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
509 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD4);
511 break;
512 default:
513 break;
514 }
515 }
516 }
517
518 // This Function is called in CheckAchievementCriteriaMeet and CheckAchievementCriteriaMeet is called before SetBossState(bossId, DONE),
519 // so to check if all bosses are done the checker must exclude 1 boss, the last done, if there is at most 1 encouter in progress when is
520 // called this function then all bosses are done. The one boss that check is the boss that calls this function, so it is dead.
522 {
523 uint32 numBossAlive = 0;
524 for (uint32 i = 0; i < EncounterCount; ++i)
525 if (GetBossState(i) != DONE)
526 numBossAlive++;
527
528 if (numBossAlive > 1)
529 return false;
530 return true;
531 }
532
533 bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target = nullptr*/, uint32 /*miscvalue1 = 0*/) override
534 {
535 switch (criteria_id)
536 {
537 // And They Would All Go Down Together (kill 4HM within 15sec of each other)
538 case 7600: // 25-man
539 case 7601: // 10-man
540 if (Creature* baron = instance->GetCreature(BaronGUID)) // it doesn't matter which one we use, really
541 return (baron->AI()->GetData(DATA_HORSEMEN_CHECK_ACHIEVEMENT_CREDIT) == 1u);
542 return false;
543 // Difficulty checks are done on DB.
544 // Criteria for achievement 2186: The Immortal (25-man)
545 case 13233: // The Four Horsemen
546 case 13234: // Maexxna
547 case 13235: // Thaddius
548 case 13236: // Loatheb
549 case 7616: // Kel'Thuzad
550 // Criteria for achievement 2187: The Undying (10-man)
551 case 13237: // The Four Horsemen
552 case 13238: // Maexxna
553 case 13239: // Loatheb
554 case 13240: // Thaddius
555 case 7617: // Kel'Thuzad
556 return false;
557 }
558
559 return false;
560 }
561
562 protected:
563 /* The Arachnid Quarter */
564 // Anub'rekhan
566 // Grand Widow Faerlina
568
569 /* The Plague Quarter */
570 // Heigan the Unclean
572
573 /* The Military Quarter */
574 // Instructor Razuvious
576 // Gothik the Harvester
579 // The Four Horsemen
585
586 /* The Construct Quarter */
587 // Gluth
589 // Thaddius
593
594 /* Frostwyrm Lair */
595 // Sapphiron
597 // Kel'Thuzad
605
607 };
608
610 {
612 }
613};
614
uint8_t uint8
Definition Define.h:156
uint32_t uint32
Definition Define.h:154
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition Duration.h:28
EncounterState
@ DONE
@ GO_FLAG_NOT_SELECTABLE
GOState
#define DataHeader
uint32 const EncounterCount
ObjectGuid const & GetGUID() const
Definition BaseEntity.h:163
uint32 ExecuteEvent()
Definition EventMap.cpp:77
void Update(uint32 time)
Definition EventMap.h:61
void ScheduleEvent(uint32 eventId, Milliseconds time, uint32 group=0, uint8 phase=0)
Definition EventMap.cpp:40
void RemoveFlag(GameObjectFlags flags)
Definition GameObject.h:278
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
void LoadObjectData(std::span< ObjectData const > creatureData, std::span< ObjectData const > gameObjectData)
InstanceMap * instance
void SetHeaders(std::string_view dataHeaders)
void LoadDungeonEncounterData(std::span< DungeonEncounterData const > encounters)
EncounterState GetBossState(uint32 id) const
virtual void OnGameObjectCreate(GameObject *go) override
void LoadDoorData(std::span< DoorData const > data)
GameObject * GetGameObject(uint32 type)
void LoadBossBoundaries(BossBoundaryData const &data)
void LoadGrid(float x, float y)
Definition Map.cpp:372
GameObject * GetGameObject(ObjectGuid const &guid)
Definition Map.cpp:3552
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:3542
static ObjectGuid const Empty
Definition ObjectGuid.h:314
uint32 GetEntry() const
Definition Object.h:89
Creature * ToCreature()
Definition Object.h:121
Definition Unit.h:635
InstanceScript * GetInstanceScript(InstanceMap *map) const override
static constexpr ObjectData objectData[]
static constexpr DoorData doorData[]
BossBoundaryData const boundaries
void AddSC_instance_naxxramas()
static constexpr DungeonEncounterData encounters[]
@ NPC_BIGGLESWORTH
Definition naxxramas.h:108
@ NPC_ANUBREKHAN
Definition naxxramas.h:88
@ NPC_FEUGEN
Definition naxxramas.h:99
@ NPC_THADDIUS
Definition naxxramas.h:98
@ NPC_GOTHIK
Definition naxxramas.h:91
@ NPC_LADY
Definition naxxramas.h:93
@ NPC_KEL_THUZAD
Definition naxxramas.h:103
@ NPC_FAERLINA
Definition naxxramas.h:89
@ NPC_SAPPHIRON
Definition naxxramas.h:102
@ NPC_STALAGG
Definition naxxramas.h:100
@ NPC_HEIGAN
Definition naxxramas.h:97
@ NPC_RAZUVIOUS
Definition naxxramas.h:90
@ NPC_THANE
Definition naxxramas.h:92
@ NPC_SIR
Definition naxxramas.h:95
@ NPC_GLUTH
Definition naxxramas.h:96
@ BOSS_RAZUVIOUS
Definition naxxramas.h:40
@ BOSS_HEIGAN
Definition naxxramas.h:34
@ BOSS_GROBBULUS
Definition naxxramas.h:37
@ BOSS_LOATHEB
Definition naxxramas.h:35
@ BOSS_GLUTH
Definition naxxramas.h:38
@ BOSS_GOTHIK
Definition naxxramas.h:41
@ BOSS_SAPPHIRON
Definition naxxramas.h:43
@ BOSS_MAEXXNA
Definition naxxramas.h:32
@ BOSS_THADDIUS
Definition naxxramas.h:39
@ BOSS_KELTHUZAD
Definition naxxramas.h:44
@ BOSS_ANUBREKHAN
Definition naxxramas.h:30
@ BOSS_NOTH
Definition naxxramas.h:33
@ BOSS_PATCHWERK
Definition naxxramas.h:36
@ BOSS_HORSEMEN
Definition naxxramas.h:42
@ BOSS_FAERLINA
Definition naxxramas.h:31
@ GO_PASSAGE_SAPPHIRON
Definition naxxramas.h:140
@ GO_ARAC_EYE_RAMP
Definition naxxramas.h:150
@ GO_NAXX_PORTAL_CONSTRUCT
Definition naxxramas.h:166
@ GO_KELTHUZAD_TRIGGER
Definition naxxramas.h:123
@ GO_ROOM_HORSEMEN
Definition naxxramas.h:139
@ GO_MILI_EYE_RAMP
Definition naxxramas.h:152
@ GO_PASSAGE_ANUBREKHAN
Definition naxxramas.h:126
@ GO_GOTHIK_GATE
Definition naxxramas.h:118
@ GO_ROOM_LOATHEB
Definition naxxramas.h:133
@ GO_CONS_EYE_RAMP
Definition naxxramas.h:153
@ GO_KELTHUZAD_THRONE
Definition naxxramas.h:124
@ GO_NAXX_PORTAL_ARACHNID
Definition naxxramas.h:165
@ GO_ROOM_HEIGAN
Definition naxxramas.h:131
@ GO_PASSAGE_GLUTH
Definition naxxramas.h:135
@ GO_KELTHUZAD_PORTAL03
Definition naxxramas.h:121
@ GO_HORSEMEN_CHEST_HERO
Definition naxxramas.h:116
@ GO_HORSEMEN_CHEST
Definition naxxramas.h:117
@ GO_CONS_EYE_RAMP_BOSS
Definition naxxramas.h:159
@ GO_PLAG_EYE_RAMP_BOSS
Definition naxxramas.h:157
@ GO_BIRTH
Definition naxxramas.h:162
@ GO_PASSAGE_NOTH
Definition naxxramas.h:130
@ GO_ROOM_GROBBULUS
Definition naxxramas.h:134
@ GO_PASSAGE_HEIGAN
Definition naxxramas.h:132
@ GO_MILI_EYE_RAMP_BOSS
Definition naxxramas.h:158
@ GO_NAXX_PORTAL_PLAGUE
Definition naxxramas.h:167
@ GO_ROOM_ANUBREKHAN
Definition naxxramas.h:125
@ GO_ROOM_KELTHUZAD
Definition naxxramas.h:141
@ GO_ROOM_GOTHIK
Definition naxxramas.h:137
@ GO_NAXX_PORTAL_MILITARY
Definition naxxramas.h:168
@ GO_KELTHUZAD_PORTAL01
Definition naxxramas.h:119
@ GO_PASSAGE_FAERLINA
Definition naxxramas.h:127
@ GO_ROOM_THADDIUS
Definition naxxramas.h:136
@ GO_PLAG_EYE_RAMP
Definition naxxramas.h:151
@ GO_ROOM_NOTH
Definition naxxramas.h:129
@ GO_PASSAGE_GOTHIK
Definition naxxramas.h:138
@ GO_ROOM_MAEXXNA
Definition naxxramas.h:128
@ GO_KELTHUZAD_PORTAL04
Definition naxxramas.h:122
@ GO_KELTHUZAD_PORTAL02
Definition naxxramas.h:120
@ GO_ARAC_EYE_RAMP_BOSS
Definition naxxramas.h:156
@ DATA_NAXX_PORTAL_CONSTRUCT
Definition naxxramas.h:55
@ DATA_NAXX_PORTAL_MILITARY
Definition naxxramas.h:57
@ DATA_HAD_SAPPHIRON_BIRTH
Definition naxxramas.h:50
@ DATA_GOTHIK_GATE
Definition naxxramas.h:49
@ DATA_HORSEMEN_CHECK_ACHIEVEMENT_CREDIT
Definition naxxramas.h:52
@ DATA_NAXX_PORTAL_ARACHNID
Definition naxxramas.h:54
@ DATA_NAXX_PORTAL_PLAGUE
Definition naxxramas.h:56
@ DATA_KELTHUZAD_THRONE
Definition naxxramas.h:58
#define NaxxramasScriptName
Definition naxxramas.h:23
@ DATA_GOTHIK
Definition naxxramas.h:66
@ DATA_SAPPHIRON
Definition naxxramas.h:76
@ DATA_THANE
Definition naxxramas.h:67
@ DATA_HEIGAN
Definition naxxramas.h:73
@ DATA_SIR
Definition naxxramas.h:70
@ DATA_KELTHUZAD
Definition naxxramas.h:77
@ DATA_KELTHUZAD_PORTAL02
Definition naxxramas.h:79
@ DATA_FAERLINA
Definition naxxramas.h:64
@ DATA_KELTHUZAD_PORTAL01
Definition naxxramas.h:78
@ DATA_THADDIUS
Definition naxxramas.h:72
@ DATA_LADY
Definition naxxramas.h:68
@ DATA_FEUGEN
Definition naxxramas.h:74
@ DATA_KELTHUZAD_PORTAL04
Definition naxxramas.h:81
@ DATA_RAZUVIOUS
Definition naxxramas.h:65
@ DATA_KELTHUZAD_TRIGGER
Definition naxxramas.h:82
@ DATA_STALAGG
Definition naxxramas.h:75
@ DATA_ANUBREKHAN
Definition naxxramas.h:63
@ DATA_KELTHUZAD_PORTAL03
Definition naxxramas.h:80
@ DATA_GLUTH
Definition naxxramas.h:71
@ SAY_KELTHUZAD_CAT_DIED
Definition naxxramas.h:207
@ SAY_DIALOGUE_SAPPHIRON_KELTHUZAD2
Definition naxxramas.h:203
@ SAY_DIALOGUE_GOTHIK_HORSEMAN2
Definition naxxramas.h:199
@ SAY_DIALOGUE_SAPPHIRON_LICH_KING2
Definition naxxramas.h:212
@ SAY_DIALOGUE_SAPPHIRON_KELTHUZAD4
Definition naxxramas.h:205
@ SAY_DIALOGUE_SAPPHIRON_KELTHUZAD3
Definition naxxramas.h:204
@ SAY_KELTHUZAD_FIRST_WING_TAUNT
Definition naxxramas.h:208
@ SAY_DIALOGUE_GOTHIK_HORSEMAN
Definition naxxramas.h:198
@ SAY_DIALOGUE_SAPPHIRON_KELTHUZAD
Definition naxxramas.h:202
@ SAY_DIALOGUE_SAPPHIRON_LICH_KING
Definition naxxramas.h:211
@ EVENT_DIALOGUE_SAPPHIRON_KELTHUZAD4
Definition naxxramas.h:192
@ EVENT_DIALOGUE_GOTHIK_BLAUMEUX2
Definition naxxramas.h:178
@ EVENT_DIALOGUE_GOTHIK_ZELIEK
Definition naxxramas.h:175
@ EVENT_DIALOGUE_SAPPHIRON_LICHKING
Definition naxxramas.h:188
@ EVENT_DIALOGUE_GOTHIK_KORTHAZZ
Definition naxxramas.h:174
@ EVENT_DIALOGUE_GOTHIK_KORTHAZZ2
Definition naxxramas.h:180
@ EVENT_DIALOGUE_SAPPHIRON_KELTHUZAD2
Definition naxxramas.h:189
@ EVENT_DIALOGUE_SAPPHIRON_LICHKING2
Definition naxxramas.h:190
@ EVENT_KELTHUZAD_WING_TAUNT
Definition naxxramas.h:184
@ EVENT_DIALOGUE_GOTHIK_RIVENDARE
Definition naxxramas.h:177
@ EVENT_DIALOGUE_GOTHIK_ZELIEK2
Definition naxxramas.h:179
@ EVENT_DIALOGUE_GOTHIK_BLAUMEUX
Definition naxxramas.h:176
@ EVENT_DIALOGUE_GOTHIK_RIVENDARE2
Definition naxxramas.h:181
@ EVENT_DIALOGUE_SAPPHIRON_KELTHUZAD3
Definition naxxramas.h:191
@ EVENT_DIALOGUE_SAPPHIRON_KELTHUZAD
Definition naxxramas.h:187
@ NPC_BARON
Definition stratholme.h:74
@ DATA_BARON
Definition stratholme.h:55
bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const *, Unit const *, uint32) override
bool SetBossState(uint32 id, EncounterState state) override
@ DATA_LICH_KING