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 "CreatureAI.h"
21#include "GameObject.h"
22#include "InstanceScript.h"
23#include "Map.h"
24#include "naxxramas.h"
25#include "TemporarySummon.h"
26
28{
29 /* Arachnid Quarter */
30 { BOSS_ANUBREKHAN, new CircleBoundary(Position(3273.376709f, -3475.876709f), Position(3195.668213f, -3475.930176f)) },
31 { BOSS_FAERLINA, new RectangleBoundary(3315.0f, 3402.0f, -3727.0f, -3590.0f) },
32 { BOSS_FAERLINA, new CircleBoundary(Position(3372.68f, -3648.2f), Position(3316.0f, -3704.26f)) },
33 { BOSS_MAEXXNA, new CircleBoundary(Position(3502.2587f, -3892.1697f), Position(3418.7422f, -3840.271f)) },
34
35 /* Plague Quarter */
36 { BOSS_NOTH, new RectangleBoundary(2618.0f, 2754.0f, -3557.43f, -3450.0f) },
37 { BOSS_HEIGAN, new CircleBoundary(Position(2772.57f, -3685.28f), 56.0f) },
38 { BOSS_LOATHEB, new CircleBoundary(Position(2909.0f, -3997.41f), 57.0f) },
39
40 /* Military Quarter */
41 { BOSS_RAZUVIOUS, new ZRangeBoundary(260.0f, 287.0f) }, // will not chase onto the upper floor
42 { BOSS_GOTHIK, new RectangleBoundary(2627.0f, 2764.0f, -3440.0f, -3275.0f) },
43 { BOSS_HORSEMEN, new ParallelogramBoundary(Position(2646.0f, -2959.0f), Position(2529.0f, -3075.0f), Position(2506.0f, -2854.0f)) },
44
45 /* Construct Quarter */
46 { BOSS_PATCHWERK, new CircleBoundary(Position(3204.0f, -3241.4f), 240.0f) },
47 { BOSS_PATCHWERK, new CircleBoundary(Position(3130.8576f, -3210.36f), Position(3085.37f, -3219.85f), true) }, // entrance slime circle blocker
48 { BOSS_GROBBULUS, new CircleBoundary(Position(3204.0f, -3241.4f), 240.0f) },
49 { BOSS_GROBBULUS, new RectangleBoundary(3295.0f, 3340.0f, -3254.2f, -3230.18f, true) }, // entrance door blocker
50 { BOSS_GLUTH, new CircleBoundary(Position(3293.0f, -3142.0f), 80.0) },
51 { BOSS_GLUTH, new ParallelogramBoundary(Position(3401.0f, -3149.0f), Position(3261.0f, -3028.0f), Position(3320.0f, -3267.0f)) },
52 { BOSS_GLUTH, new ZRangeBoundary(285.0f, 310.0f) },
53 { BOSS_THADDIUS, new ParallelogramBoundary(Position(3478.3f, -3070.0f), Position(3370.0f, -2961.5f), Position(3580.0f, -2961.5f)) },
54
55 /* Frostwyrm Lair */
56 { BOSS_SAPPHIRON, new CircleBoundary(Position(3517.627f, -5255.5f), 110.0) },
57 { BOSS_KELTHUZAD, new CircleBoundary(Position(3716.0f, -5107.0f), 85.0) }
58};
59
61{
95 { 0, 0, DOOR_TYPE_ROOM }
96};
97
107
109{
110 public:
112
114 {
128
129 void OnCreatureCreate(Creature* creature) override
130 {
131 switch (creature->GetEntry())
132 {
133 case NPC_ANUBREKHAN:
134 AnubRekhanGUID = creature->GetGUID();
135 break;
136 case NPC_FAERLINA:
137 FaerlinaGUID = creature->GetGUID();
138 break;
139 case NPC_RAZUVIOUS:
140 RazuviousGUID = creature->GetGUID();
141 break;
142 case NPC_GOTHIK:
143 GothikGUID = creature->GetGUID();
144 break;
145 case NPC_THANE:
146 ThaneGUID = creature->GetGUID();
147 break;
148 case NPC_LADY:
149 LadyGUID = creature->GetGUID();
150 break;
151 case NPC_BARON:
152 BaronGUID = creature->GetGUID();
153 break;
154 case NPC_SIR:
155 SirGUID = creature->GetGUID();
156 break;
157 case NPC_GLUTH:
158 GluthGUID = creature->GetGUID();
159 break;
160 case NPC_HEIGAN:
161 HeiganGUID = creature->GetGUID();
162 break;
163 case NPC_THADDIUS:
164 ThaddiusGUID = creature->GetGUID();
165 break;
166 case NPC_FEUGEN:
167 FeugenGUID = creature->GetGUID();
168 break;
169 case NPC_STALAGG:
170 StalaggGUID = creature->GetGUID();
171 break;
172 case NPC_SAPPHIRON:
173 SapphironGUID = creature->GetGUID();
174 break;
175 case NPC_KEL_THUZAD:
176 KelthuzadGUID = creature->GetGUID();
177 break;
178 case NPC_LICH_KING:
179 LichKingGUID = creature->GetGUID();
180 break;
181 default:
182 break;
183 }
184 }
185
187 {
188 switch (go->GetEntry())
189 {
190 case GO_GOTHIK_GATE:
191 GothikGateGUID = go->GetGUID();
192 break;
196 break;
198 PortalsGUID[0] = go->GetGUID();
199 break;
201 PortalsGUID[1] = go->GetGUID();
202 break;
204 PortalsGUID[2] = go->GetGUID();
205 break;
207 PortalsGUID[3] = go->GetGUID();
208 break;
211 break;
214 break;
218 break;
222 break;
226 break;
230 break;
234 break;
235 case GO_BIRTH:
237 {
238 hadSapphironBirth = true;
239 go->Delete();
240 }
241 break;
242 default:
243 break;
244 }
245
247 }
248
249 void OnUnitDeath(Unit* unit) override
250 {
251 if (!playerDied && unit->IsPlayer() && IsEncounterInProgress())
252 {
253 playerDied = true;
254 SaveToDB();
255 }
256
257 if (Creature* creature = unit->ToCreature())
258 if (creature->GetEntry() == NPC_BIGGLESWORTH)
259 {
260 // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
261 instance->LoadGrid(3749.67f, -5114.06f);
262 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
263 kelthuzad->AI()->Talk(SAY_KELTHUZAD_CAT_DIED);
264 }
265 }
266
267 void SetData(uint32 id, uint32 value) override
268 {
269 switch (id)
270 {
271 case DATA_GOTHIK_GATE:
273 gate->SetGoState(GOState(value));
274 break;
276 hadSapphironBirth = (value == 1u);
277 break;
278 default:
279 break;
280 }
281 }
282
283 uint32 GetData(uint32 id) const override
284 {
285 switch (id)
286 {
288 return hadSapphironBirth ? 1u : 0u;
289 default:
290 break;
291 }
292
293 return 0;
294 }
295
296 ObjectGuid GetGuidData(uint32 id) const override
297 {
298 switch (id)
299 {
300 case DATA_ANUBREKHAN:
301 return AnubRekhanGUID;
302 case DATA_FAERLINA:
303 return FaerlinaGUID;
304 case DATA_RAZUVIOUS:
305 return RazuviousGUID;
306 case DATA_GOTHIK:
307 return GothikGUID;
308 case DATA_THANE:
309 return ThaneGUID;
310 case DATA_LADY:
311 return LadyGUID;
312 case DATA_BARON:
313 return BaronGUID;
314 case DATA_SIR:
315 return SirGUID;
316 case DATA_HEIGAN:
317 return HeiganGUID;
318 case DATA_GLUTH:
319 return GluthGUID;
320 case DATA_FEUGEN:
321 return FeugenGUID;
322 case DATA_STALAGG:
323 return StalaggGUID;
324 case DATA_THADDIUS:
325 return ThaddiusGUID;
326 case DATA_SAPPHIRON:
327 return SapphironGUID;
328 case DATA_KELTHUZAD:
329 return KelthuzadGUID;
331 return PortalsGUID[0];
333 return PortalsGUID[1];
335 return PortalsGUID[2];
337 return PortalsGUID[3];
340 case DATA_LICH_KING:
341 return LichKingGUID;
342 }
343
344 return ObjectGuid::Empty;
345 }
346
347 bool SetBossState(uint32 id, EncounterState state) override
348 {
349 if (!InstanceScript::SetBossState(id, state))
350 return false;
351
352 switch (id)
353 {
354 case BOSS_MAEXXNA:
355 if (state == DONE)
356 {
358 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
359
361 }
362 break;
363 case BOSS_LOATHEB:
364 if (state == DONE)
365 {
367 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
368
370 }
371 break;
372 case BOSS_THADDIUS:
373 if (state == DONE)
374 {
376 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
377
379 }
380 break;
381 case BOSS_GOTHIK:
382 if (state == DONE)
384 break;
385 case BOSS_HORSEMEN:
386 if (state == DONE)
387 {
388 if (GameObject* horsemenChest = instance->GetGameObject(HorsemenChestGUID))
389 {
390 horsemenChest->SetRespawnTime(horsemenChest->GetRespawnDelay());
391 horsemenChest->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
392 }
393
395 teleporter->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
396
398 }
399 break;
400 case BOSS_SAPPHIRON:
401 if (state == DONE)
404 break;
405 case BOSS_KELTHUZAD:
406 if (state == DONE)
408 throne->RemoveFlag(GO_FLAG_NOT_SELECTABLE);
409 break;
410 default:
411 break;
412 }
413
414 return true;
415 }
416
417 void Update(uint32 diff) override
418 {
419 events.Update(diff);
420
421 while (uint32 eventId = events.ExecuteEvent())
422 {
423 switch (eventId)
424 {
426 if (Creature* korthazz = instance->GetCreature(ThaneGUID))
427 korthazz->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
429 break;
431 if (Creature* zeliek = instance->GetCreature(SirGUID))
432 zeliek->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
434 break;
436 if (Creature* blaumeux = instance->GetCreature(LadyGUID))
437 blaumeux->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
439 break;
441 if (Creature* rivendare = instance->GetCreature(BaronGUID))
442 rivendare->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN);
444 break;
446 if (Creature* blaumeux = instance->GetCreature(LadyGUID))
447 blaumeux->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
449 break;
451 if (Creature* zeliek = instance->GetCreature(SirGUID))
452 zeliek->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
454 break;
456 if (Creature* korthazz = instance->GetCreature(ThaneGUID))
457 korthazz->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
459 break;
461 if (Creature* rivendare = instance->GetCreature(BaronGUID))
462 rivendare->AI()->Talk(SAY_DIALOGUE_GOTHIK_HORSEMAN2);
463 break;
465 // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
466 instance->LoadGrid(3749.67f, -5114.06f);
467 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
468 kelthuzad->AI()->Talk(CurrentWingTaunt);
470 break;
472 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
473 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD);
475 break;
477 if (Creature* lichKing = instance->GetCreature(LichKingGUID))
478 lichKing->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_LICH_KING);
480 break;
482 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
483 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD2);
485 break;
487 if (Creature* lichKing = instance->GetCreature(LichKingGUID))
488 lichKing->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_LICH_KING2);
490 break;
492 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
493 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD3);
495 break;
497 if (Creature* kelthuzad = instance->GetCreature(KelthuzadGUID))
498 kelthuzad->AI()->Talk(SAY_DIALOGUE_SAPPHIRON_KELTHUZAD4);
500 break;
501 default:
502 break;
503 }
504 }
505 }
506
507 // This Function is called in CheckAchievementCriteriaMeet and CheckAchievementCriteriaMeet is called before SetBossState(bossId, DONE),
508 // 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
509 // called this function then all bosses are done. The one boss that check is the boss that calls this function, so it is dead.
511 {
512 uint32 numBossAlive = 0;
513 for (uint32 i = 0; i < EncounterCount; ++i)
514 if (GetBossState(i) != DONE)
515 numBossAlive++;
516
517 if (numBossAlive > 1)
518 return false;
519 return true;
520 }
521
522 bool CheckAchievementCriteriaMeet(uint32 criteria_id, Player const* /*source*/, Unit const* /*target = nullptr*/, uint32 /*miscvalue1 = 0*/) override
523 {
524 switch (criteria_id)
525 {
526 // And They Would All Go Down Together (kill 4HM within 15sec of each other)
527 case 7600: // 25-man
528 case 7601: // 10-man
529 if (criteria_id + instance->GetSpawnMode() == 7601)
530 return false;
531 if (Creature* baron = instance->GetCreature(BaronGUID)) // it doesn't matter which one we use, really
532 return (baron->AI()->GetData(DATA_HORSEMEN_CHECK_ACHIEVEMENT_CREDIT) == 1u);
533 return false;
534 // Difficulty checks are done on DB.
535 // Criteria for achievement 2186: The Immortal (25-man)
536 case 13233: // The Four Horsemen
537 case 13234: // Maexxna
538 case 13235: // Thaddius
539 case 13236: // Loatheb
540 case 7616: // Kel'Thuzad
541 // Criteria for achievement 2187: The Undying (10-man)
542 case 13237: // The Four Horsemen
543 case 13238: // Maexxna
544 case 13239: // Loatheb
545 case 13240: // Thaddius
546 case 7617: // Kel'Thuzad
548 return true;
549 return false;
550 }
551
552 return false;
553 }
554
555 void WriteSaveDataMore(std::ostringstream& data) override
556 {
557 data << uint32(playerDied ? 1 : 0);
558 }
559
560 void ReadSaveDataMore(std::istringstream& data) override
561 {
562 uint32 tmpState;
563 data >> tmpState;
564 playerDied = tmpState != 0;
565 }
566
567 protected:
568 /* The Arachnid Quarter */
569 // Anub'rekhan
571 // Grand Widow Faerlina
573
574 /* The Plague Quarter */
575 // Heigan the Unclean
577
578 /* The Military Quarter */
579 // Instructor Razuvious
581 // Gothik the Harvester
584 // The Four Horsemen
590
591 /* The Construct Quarter */
592 // Gluth
594 // Thaddius
598
599 /* Frostwyrm Lair */
600 // Sapphiron
602 // Kel'Thuzad
610
611 /* The Immortal / The Undying */
613
615 };
616
618 {
620 }
621};
622
uint8_t uint8
Definition Define.h:135
uint32_t uint32
Definition Define.h:133
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition Duration.h:27
EncounterState
@ DONE
@ DOOR_TYPE_ROOM
@ DOOR_TYPE_PASSAGE
@ GO_FLAG_NOT_SELECTABLE
GOState
#define DataHeader
uint32 const EncounterCount
void Update(uint32 time)
Definition EventMap.h:67
EventId ExecuteEvent()
Definition EventMap.cpp:73
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:36
void RemoveFlag(GameObjectFlags flags)
Definition GameObject.h:172
void Delete()
void SetBossNumber(uint32 number)
virtual bool SetBossState(uint32 id, EncounterState state)
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
InstanceMap * instance
EncounterState GetBossState(uint32 id) const
virtual void OnGameObjectCreate(GameObject *go) override
virtual bool IsEncounterInProgress() const
void LoadDoorData(DoorData const *data)
GameObject * GetGameObject(uint32 type)
void LoadBossBoundaries(BossBoundaryData const &data)
void SetHeaders(std::string const &dataHeaders)
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
void LoadGrid(float x, float y)
Definition Map.cpp:578
uint8 GetSpawnMode() const
Definition Map.h:388
GameObject * GetGameObject(ObjectGuid const &guid)
Definition Map.cpp:4430
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:4397
static ObjectGuid const Empty
Definition ObjectGuid.h:140
static Creature * ToCreature(Object *o)
Definition Object.h:186
bool IsPlayer() const
Definition Object.h:179
uint32 GetEntry() const
Definition Object.h:81
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:78
Definition Unit.h:769
InstanceScript * GetInstanceScript(InstanceMap *map) const override
ObjectData const objectData[]
DoorData const doorData[]
BossBoundaryData const boundaries
void AddSC_instance_naxxramas()
@ 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
void ReadSaveDataMore(std::istringstream &data) override
void WriteSaveDataMore(std::ostringstream &data) override
bool SetBossState(uint32 id, EncounterState state) override
@ DATA_LICH_KING