AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
instance_naxxramas::instance_naxxramas_InstanceMapScript Struct Reference
Inheritance diagram for instance_naxxramas::instance_naxxramas_InstanceMapScript:
InstanceScript ZoneScript

Public Member Functions

 instance_naxxramas_InstanceMapScript (Map *pMap)
 
void HeiganEruptSections (uint32 section)
 
bool IsEncounterInProgress () const override
 
void OnCreatureCreate (Creature *creature) override
 
void OnGameObjectCreate (GameObject *pGo) override
 
void OnGameObjectRemove (GameObject *pGo) override
 
bool CheckAchievementCriteriaMeet (uint32 criteria_id, Player const *, Unit const *, uint32) override
 
void SetData (uint32 id, uint32 data) override
 
uint32 GetData (uint32 id) const override
 
bool SetBossState (uint32 bossId, EncounterState state) override
 
void Update (uint32 diff) override
 
ObjectGuid GetGuidData (uint32 id) const override
 
void ReadSaveDataMore (std::istringstream &data) override
 
void WriteSaveDataMore (std::ostringstream &data) override
 
- Public Member Functions inherited from InstanceScript
 InstanceScript (Map *map)
 
 ~InstanceScript () override
 
virtual void Initialize ()
 
virtual void Load (char const *data)
 
virtual void CreatureLooted (Creature *, LootType)
 
virtual std::string GetSaveData ()
 
void SaveToDB ()
 
virtual void Update (uint32)
 
virtual bool IsEncounterInProgress () const
 
void OnCreatureCreate (Creature *creature) override
 
void OnCreatureRemove (Creature *creature) override
 
void OnGameObjectCreate (GameObject *go) override
 
void OnGameObjectRemove (GameObject *go) override
 
ObjectGuid GetObjectGuid (uint32 type) const
 
ObjectGuid GetGuidData (uint32 type) const override
 
CreatureGetCreature (uint32 type)
 
GameObjectGetGameObject (uint32 type)
 
virtual void OnPlayerEnter (Player *)
 
virtual void OnPlayerAreaUpdate (Player *, uint32, uint32)
 
void HandleGameObject (ObjectGuid guid, bool open, GameObject *go=nullptr)
 
void DoUseDoorOrButton (ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
 
void DoRespawnGameObject (ObjectGuid guid, uint32 timeToDespawn=MINUTE)
 
void DoRespawnCreature (ObjectGuid guid, bool force=false)
 
void DoRespawnCreature (uint32 type, bool force=false)
 
void DoUpdateWorldState (uint32 worldstateId, uint32 worldstateValue)
 
void DoSendNotifyToInstance (char const *format,...)
 
void DoUpdateAchievementCriteria (AchievementCriteriaTypes type, uint32 miscValue1=0, uint32 miscValue2=0, Unit *unit=nullptr)
 
void DoStartTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoStopTimedAchievement (AchievementCriteriaTimedTypes type, uint32 entry)
 
void DoRemoveAurasDueToSpellOnPlayers (uint32 spell)
 
void DoCastSpellOnPlayers (uint32 spell)
 
void DoCastSpellOnPlayer (Player *player, uint32 spell, bool includePets, bool includeControlled)
 
bool ServerAllowsTwoSideGroups ()
 
virtual bool SetBossState (uint32 id, EncounterState state)
 
EncounterState GetBossState (uint32 id) const
 
CreatureBoundary const * GetBossBoundary (uint32 id) const
 
BossInfo const * GetBossInfo (uint32 id) const
 
uint32 GetPersistentData (uint32 index) const
 
void StorePersistentData (uint32 index, uint32 data)
 
virtual bool CheckAchievementCriteriaMeet (uint32, Player const *, Unit const *=nullptr, uint32=0)
 
virtual bool CheckRequiredBosses (uint32, Player const *=nullptr) const
 
void SetCompletedEncountersMask (uint32 newMask, bool save)
 
uint32 GetCompletedEncounterMask () const
 
void SendEncounterUnit (uint32 type, Unit *unit=nullptr, uint8 param1=0, uint8 param2=0)
 
virtual void FillInitialWorldStates (WorldPacket &)
 
uint32 GetEncounterCount () const
 
void MarkAreaTriggerDone (uint32 id)
 
void ResetAreaTriggerDone (uint32 id)
 
bool IsAreaTriggerDone (uint32 id) const
 
virtual void DoAction (int32)
 
void DoForAllMinions (uint32 id, std::function< void(Creature *)> exec)
 
- Public Member Functions inherited from ZoneScript
 ZoneScript ()
 
virtual ~ZoneScript ()
 
virtual uint32 GetCreatureEntry (ObjectGuid::LowType, CreatureData const *data)
 
virtual uint32 GetGameObjectEntry (ObjectGuid::LowType, uint32 entry)
 
virtual void OnCreatureCreate (Creature *)
 
virtual void OnCreatureRemove (Creature *)
 
virtual void OnGameObjectCreate (GameObject *)
 
virtual void OnGameObjectRemove (GameObject *)
 
virtual void OnUnitDeath (Unit *)
 
virtual void OnCreatureEvade (Creature *)
 
virtual ObjectGuid GetGuidData (uint32) const
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Public Attributes

std::set< GameObject * > HeiganEruption [4]
 
ObjectGuid _patchwerkGateGUID
 
ObjectGuid _gluthGateGUID
 
ObjectGuid _nothEntryGateGUID
 
ObjectGuid _nothExitGateGUID
 
ObjectGuid _heiganGateGUID
 
ObjectGuid _heiganGateExitGUID
 
ObjectGuid _loathebGateGUID
 
ObjectGuid _anubGateGUID
 
ObjectGuid _anubNextGateGUID
 
ObjectGuid _faerlinaWebGUID
 
ObjectGuid _faerlinaGateGUID
 
ObjectGuid _maexxnaGateGUID
 
ObjectGuid _thaddiusGateGUID
 
ObjectGuid _gothikEnterGateGUID
 
ObjectGuid _gothikInnerGateGUID
 
ObjectGuid _gothikExitGateGUID {}
 
ObjectGuid _horsemanGateGUID
 
ObjectGuid _kelthuzadFloorGUID
 
ObjectGuid _kelthuzadGateGUID
 
ObjectGuid _kelthuzadPortal1GUID
 
ObjectGuid _kelthuzadPortal2GUID
 
ObjectGuid _kelthuzadPortal3GUID
 
ObjectGuid _kelthuzadPortal4GUID
 
ObjectGuid _sapphironGateGUID
 
ObjectGuid _horsemanPortalGUID
 
ObjectGuid _loathebPortalGUID
 
ObjectGuid _maexxnaPortalGUID
 
ObjectGuid _thaddiusPortalGUID
 
ObjectGuid _deathknightEyePortalGUID
 
ObjectGuid _plagueEyePortalGUID
 
ObjectGuid _spiderEyePortalGUID
 
ObjectGuid _abomEyePortalGUID
 
ObjectGuid _deathknightGlowEyePortalGUID
 
ObjectGuid _plagueGlowEyePortalGUID
 
ObjectGuid _spiderGlowEyePortalGUID
 
ObjectGuid _abomGlowEyePortalGUID
 
GuidList PatchwerkRoomTrash
 
ObjectGuid _patchwerkGUID
 
ObjectGuid _thaddiusGUID
 
ObjectGuid _stalaggGUID
 
ObjectGuid _feugenGUID
 
ObjectGuid _zeliekGUID
 
ObjectGuid _rivendareGUID
 
ObjectGuid _blaumeuxGUID
 
ObjectGuid _korthazzGUID
 
ObjectGuid _sapphironGUID
 
ObjectGuid _kelthuzadGUID
 
ObjectGuid _lichkingGUID
 
uint8 _horsemanKilled
 
uint32 _speakTimer
 
uint32 _horsemanTimer
 
uint32 _screamTimer
 
bool _hadThaddiusGreet
 
EventMap events
 
uint8 _currentWingTaunt
 
bool _horsemanLoadDoneState
 
uint8 abominationsKilled
 
bool faerlinaAchievement
 
bool thaddiusAchievement
 
bool loathebAchievement
 
bool sapphironAchievement
 
bool heiganAchievement
 
uint32 immortalAchievement
 
- Public Attributes inherited from InstanceScript
Mapinstance
 
TaskScheduler scheduler
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- Protected Member Functions inherited from InstanceScript
void SetHeaders (std::string const &dataHeaders)
 
void SetBossNumber (uint32 number)
 
void SetPersistentDataCount (uint32 number)
 
void LoadBossBoundaries (BossBoundaryData const &data)
 
void LoadDoorData (DoorData const *data)
 
void LoadMinionData (MinionData const *data)
 
void LoadObjectData (ObjectData const *creatureData, ObjectData const *gameObjectData)
 
void AddObject (Creature *obj, bool add=true)
 
void RemoveObject (Creature *obj)
 
void AddObject (GameObject *obj, bool add=true)
 
void RemoveObject (GameObject *obj)
 
void AddObject (WorldObject *obj, uint32 type, bool add=true)
 
void RemoveObject (WorldObject *obj, uint32 type)
 
void AddDoor (GameObject *door, bool add=true)
 
void RemoveDoor (GameObject *door)
 
void AddMinion (Creature *minion, bool add=true)
 
void RemoveMinion (Creature *minion)
 
void UpdateDoorState (GameObject *door)
 
void UpdateMinionState (Creature *minion, EncounterState state)
 
bool ReadSaveDataHeaders (std::istringstream &data)
 
void ReadSaveDataBossStates (std::istringstream &data)
 
void ReadSavePersistentData (std::istringstream &data)
 
virtual void ReadSaveDataMore (std::istringstream &)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
void WritePersistentData (std::ostringstream &data)
 
virtual void WriteSaveDataMore (std::ostringstream &)
 

Detailed Description

Constructor & Destructor Documentation

◆ instance_naxxramas_InstanceMapScript()

instance_naxxramas::instance_naxxramas_InstanceMapScript::instance_naxxramas_InstanceMapScript ( Map pMap)
inlineexplicit
67 : InstanceScript(pMap)
68 {
71 for (auto& i : HeiganEruption)
72 i.clear();
73
74 // NPCs
75 PatchwerkRoomTrash.clear();
76
77 // Controls
79 _speakTimer = 0;
82 _hadThaddiusGreet = false;
85
86 // Achievements
90 loathebAchievement = true;
92 heiganAchievement = true;
94 }
constexpr auto IN_MILLISECONDS
Definition: Common.h:55
constexpr auto MINUTE
Definition: Common.h:49
#define DataHeader
Definition: blackrock_depths.h:23
@ MAX_ENCOUNTERS
Definition: deadmines.h:30
@ SAY_FIRST_WING_TAUNT
Definition: naxxramas.h:187
Definition: InstanceScript.h:141
void SetBossNumber(uint32 number)
Definition: InstanceScript.h:271
void SetHeaders(std::string const &dataHeaders)
Definition: InstanceScript.cpp:137
uint8 _currentWingTaunt
Definition: instance_naxxramas.cpp:157
GuidList PatchwerkRoomTrash
Definition: instance_naxxramas.cpp:137
uint32 _horsemanTimer
Definition: instance_naxxramas.cpp:153
std::set< GameObject * > HeiganEruption[4]
Definition: instance_naxxramas.cpp:96
bool _hadThaddiusGreet
Definition: instance_naxxramas.cpp:155
bool _horsemanLoadDoneState
Definition: instance_naxxramas.cpp:158
bool sapphironAchievement
Definition: instance_naxxramas.cpp:165
bool loathebAchievement
Definition: instance_naxxramas.cpp:164
uint32 _speakTimer
Definition: instance_naxxramas.cpp:152
bool thaddiusAchievement
Definition: instance_naxxramas.cpp:163
uint32 _screamTimer
Definition: instance_naxxramas.cpp:154
bool faerlinaAchievement
Definition: instance_naxxramas.cpp:162
uint8 _horsemanKilled
Definition: instance_naxxramas.cpp:151
uint32 immortalAchievement
Definition: instance_naxxramas.cpp:167
uint8 abominationsKilled
Definition: instance_naxxramas.cpp:161
bool heiganAchievement
Definition: instance_naxxramas.cpp:166

References _currentWingTaunt, _hadThaddiusGreet, _horsemanKilled, _horsemanLoadDoneState, _horsemanTimer, _screamTimer, _speakTimer, abominationsKilled, DataHeader, faerlinaAchievement, heiganAchievement, HeiganEruption, immortalAchievement, IN_MILLISECONDS, loathebAchievement, MAX_ENCOUNTERS, MINUTE, PatchwerkRoomTrash, sapphironAchievement, SAY_FIRST_WING_TAUNT, InstanceScript::SetBossNumber(), InstanceScript::SetHeaders(), and thaddiusAchievement.

Member Function Documentation

◆ CheckAchievementCriteriaMeet()

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::CheckAchievementCriteriaMeet ( uint32  criteria_id,
Player const *  ,
Unit const *  ,
uint32   
)
inlineoverridevirtual

Reimplemented from InstanceScript.

517 {
518 switch (criteria_id)
519 {
520 case 7600: // And They Would All Go Down Together (10 player)
521 case 7601: // And They Would All Go Down Together (25 player)
522 return (_horsemanTimer < 15 * IN_MILLISECONDS);
523 case 7614: // Just Can't Get Enough (10 player)
524 case 7615: // Just Can't Get Enough (25 player)
525 return abominationsKilled >= 18;
526 case 7265: // Momma Said Knock You Out (10 player)
527 case 7549: // Momma Said Knock You Out (25 player)
528 return faerlinaAchievement;
529 case 7604: // Shocking! (10 player)
530 case 7605: // Shocking! (25 player)
531 return thaddiusAchievement;
532 case 7612: // Spore Loser (10 player)
533 case 7613: // Spore Loser (25 player)
534 return loathebAchievement;
535 case 7264: // The Safety Dance (10 player)
536 case 7548: // The Safety Dance (25 player)
537 return heiganAchievement;
538 case 7608: // Subtraction (10 player)
539 // The Dedicated few (10 player)
540 case 6802:
541 case 7146:
542 case 7147:
543 case 7148:
544 case 7149:
545 case 7150:
546 case 7151:
547 case 7152:
548 case 7153:
549 case 7154:
550 case 7155:
551 case 7156:
552 case 7157:
553 case 7158:
554 return (instance->GetPlayersCountExceptGMs() < 9);
555 case 7609: // Subtraction (25 player)
556 // The Dedicated few (25 player)
557 case 7159:
558 case 7160:
559 case 7161:
560 case 7162:
561 case 7163:
562 case 7164:
563 case 7165:
564 case 7166:
565 case 7167:
566 case 7168:
567 case 7169:
568 case 7170:
569 case 7171:
570 case 7172:
571 return (instance->GetPlayersCountExceptGMs() < 21);
572 case 7567: // The Hundred Club (10 player)
573 case 7568: // The Hundred Club (25 player)
575 // The Undying
576 case 7617:
577 case 13237:
578 case 13238:
579 case 13239:
580 case 13240:
581 // The Immortal
582 case 7616:
583 case 13233:
584 case 13234:
585 case 13235:
586 case 13236:
587 {
588 uint8 count = 0;
589 for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
590 {
591 if (GetBossState(i) == NOT_STARTED)
592 ++count;
593 }
594 return !count && immortalAchievement;
595 }
596
597 default:
598 return false;
599 }
600 }
std::uint8_t uint8
Definition: Define.h:110
@ NOT_STARTED
Definition: InstanceScript.h:57
Map * instance
Definition: InstanceScript.h:147
EncounterState GetBossState(uint32 id) const
Definition: InstanceScript.h:231
uint32 GetPlayersCountExceptGMs() const
Definition: Map.cpp:2740

References _horsemanTimer, abominationsKilled, faerlinaAchievement, InstanceScript::GetBossState(), Map::GetPlayersCountExceptGMs(), heiganAchievement, immortalAchievement, IN_MILLISECONDS, InstanceScript::instance, loathebAchievement, MAX_ENCOUNTERS, NOT_STARTED, sapphironAchievement, and thaddiusAchievement.

◆ GetData()

uint32 instance_naxxramas::instance_naxxramas_InstanceMapScript::GetData ( uint32  id) const
inlineoverridevirtual

Reimplemented from ZoneScript.

639 {
641 return 1;
642
643 return 0;
644 }
@ DATA_HAD_THADDIUS_GREET
Definition: naxxramas.h:75

References _hadThaddiusGreet, and DATA_HAD_THADDIUS_GREET.

◆ GetGuidData()

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::GetGuidData ( uint32  id) const
inlineoverridevirtual

Reimplemented from InstanceScript.

1049 {
1050 switch (id)
1051 {
1052 // GameObjects
1054 return _heiganGateGUID;
1055 case DATA_LOATHEB_GATE:
1056 return _loathebGateGUID;
1057 case DATA_ANUB_GATE:
1058 return _anubGateGUID;
1059 case DATA_FAERLINA_WEB:
1060 return _faerlinaWebGUID;
1061 case DATA_MAEXXNA_GATE:
1062 return _maexxnaGateGUID;
1064 return _gothikEnterGateGUID;
1066 return _gothikInnerGateGUID;
1068 return _gothikExitGateGUID;
1069 case DATA_HORSEMEN_GATE:
1070 return _horsemanGateGUID;
1071 case DATA_THADDIUS_GATE:
1072 return _thaddiusGateGUID;
1074 return _nothEntryGateGUID;
1076 return _kelthuzadFloorGUID;
1078 return _kelthuzadGateGUID;
1080 return _kelthuzadPortal1GUID;
1082 return _kelthuzadPortal2GUID;
1084 return _kelthuzadPortal3GUID;
1086 return _kelthuzadPortal4GUID;
1087
1088 // NPCs
1089 case DATA_THADDIUS_BOSS:
1090 return _thaddiusGUID;
1091 case DATA_STALAGG_BOSS:
1092 return _stalaggGUID;
1093 case DATA_FEUGEN_BOSS:
1094 return _feugenGUID;
1096 return _lichkingGUID;
1097 default:
1098 break;
1099 }
1100
1101 return ObjectGuid::Empty;
1102 }
@ DATA_GOTHIK_INNER_GATE
Definition: naxxramas.h:62
@ DATA_HEIGAN_ENTER_GATE
Definition: naxxramas.h:52
@ DATA_KELTHUZAD_FLOOR
Definition: naxxramas.h:66
@ DATA_NOTH_ENTRY_GATE
Definition: naxxramas.h:50
@ DATA_KELTHUZAD_GATE
Definition: naxxramas.h:74
@ DATA_ANUB_GATE
Definition: naxxramas.h:54
@ DATA_GOTHIK_ENTER_GATE
Definition: naxxramas.h:61
@ DATA_LICH_KING_BOSS
Definition: naxxramas.h:65
@ DATA_KELTHUZAD_PORTAL_3
Definition: naxxramas.h:78
@ DATA_LOATHEB_GATE
Definition: naxxramas.h:53
@ DATA_KELTHUZAD_PORTAL_2
Definition: naxxramas.h:77
@ DATA_GOTHIK_EXIT_GATE
Definition: naxxramas.h:63
@ DATA_KELTHUZAD_PORTAL_1
Definition: naxxramas.h:76
@ DATA_HORSEMEN_GATE
Definition: naxxramas.h:64
@ DATA_THADDIUS_GATE
Definition: naxxramas.h:60
@ DATA_MAEXXNA_GATE
Definition: naxxramas.h:56
@ DATA_KELTHUZAD_PORTAL_4
Definition: naxxramas.h:79
@ DATA_FAERLINA_WEB
Definition: naxxramas.h:55
@ DATA_THADDIUS_BOSS
Definition: naxxramas.h:57
@ DATA_STALAGG_BOSS
Definition: naxxramas.h:58
@ DATA_FEUGEN_BOSS
Definition: naxxramas.h:59
static ObjectGuid const Empty
Definition: ObjectGuid.h:122
ObjectGuid _anubGateGUID
Definition: instance_naxxramas.cpp:106
ObjectGuid _kelthuzadPortal1GUID
Definition: instance_naxxramas.cpp:118
ObjectGuid _gothikInnerGateGUID
Definition: instance_naxxramas.cpp:113
ObjectGuid _maexxnaGateGUID
Definition: instance_naxxramas.cpp:110
ObjectGuid _kelthuzadPortal4GUID
Definition: instance_naxxramas.cpp:121
ObjectGuid _kelthuzadFloorGUID
Definition: instance_naxxramas.cpp:116
ObjectGuid _feugenGUID
Definition: instance_naxxramas.cpp:141
ObjectGuid _gothikEnterGateGUID
Definition: instance_naxxramas.cpp:112
ObjectGuid _loathebGateGUID
Definition: instance_naxxramas.cpp:105
ObjectGuid _kelthuzadPortal3GUID
Definition: instance_naxxramas.cpp:120
ObjectGuid _faerlinaWebGUID
Definition: instance_naxxramas.cpp:108
ObjectGuid _horsemanGateGUID
Definition: instance_naxxramas.cpp:115
ObjectGuid _kelthuzadGateGUID
Definition: instance_naxxramas.cpp:117
ObjectGuid _heiganGateGUID
Definition: instance_naxxramas.cpp:103
ObjectGuid _lichkingGUID
Definition: instance_naxxramas.cpp:148
ObjectGuid _thaddiusGateGUID
Definition: instance_naxxramas.cpp:111
ObjectGuid _gothikExitGateGUID
Definition: instance_naxxramas.cpp:114
ObjectGuid _thaddiusGUID
Definition: instance_naxxramas.cpp:139
ObjectGuid _stalaggGUID
Definition: instance_naxxramas.cpp:140
ObjectGuid _nothEntryGateGUID
Definition: instance_naxxramas.cpp:101
ObjectGuid _kelthuzadPortal2GUID
Definition: instance_naxxramas.cpp:119

References _anubGateGUID, _faerlinaWebGUID, _feugenGUID, _gothikEnterGateGUID, _gothikExitGateGUID, _gothikInnerGateGUID, _heiganGateGUID, _horsemanGateGUID, _kelthuzadFloorGUID, _kelthuzadGateGUID, _kelthuzadPortal1GUID, _kelthuzadPortal2GUID, _kelthuzadPortal3GUID, _kelthuzadPortal4GUID, _lichkingGUID, _loathebGateGUID, _maexxnaGateGUID, _nothEntryGateGUID, _stalaggGUID, _thaddiusGateGUID, _thaddiusGUID, DATA_ANUB_GATE, DATA_FAERLINA_WEB, DATA_FEUGEN_BOSS, DATA_GOTHIK_ENTER_GATE, DATA_GOTHIK_EXIT_GATE, DATA_GOTHIK_INNER_GATE, DATA_HEIGAN_ENTER_GATE, DATA_HORSEMEN_GATE, DATA_KELTHUZAD_FLOOR, DATA_KELTHUZAD_GATE, DATA_KELTHUZAD_PORTAL_1, DATA_KELTHUZAD_PORTAL_2, DATA_KELTHUZAD_PORTAL_3, DATA_KELTHUZAD_PORTAL_4, DATA_LICH_KING_BOSS, DATA_LOATHEB_GATE, DATA_MAEXXNA_GATE, DATA_NOTH_ENTRY_GATE, DATA_STALAGG_BOSS, DATA_THADDIUS_BOSS, DATA_THADDIUS_GATE, and ObjectGuid::Empty.

◆ HeiganEruptSections()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::HeiganEruptSections ( uint32  section)
inline
170 {
171 for (uint8 i = 0; i < 4; ++i)
172 {
173 if (i == section)
174 continue;
175
176 for (auto itr : HeiganEruption[i])
177 {
178 itr->SendCustomAnim(itr->GetGoAnimProgress());
179 itr->CastSpell(nullptr, SPELL_ERUPTION);
180 }
181 }
182 }
@ SPELL_ERUPTION
Definition: boss_garr.cpp:43

References HeiganEruption, and SPELL_ERUPTION.

Referenced by SetData().

◆ IsEncounterInProgress()

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::IsEncounterInProgress ( ) const
inlineoverridevirtual

Reimplemented from InstanceScript.

185 {
186 for (uint8 i = 0; i < MAX_ENCOUNTERS; ++i)
187 {
188 if (GetBossState(i) == IN_PROGRESS)
189 return true;
190 }
191 return false;
192 }
@ IN_PROGRESS
Definition: InstanceScript.h:58

References InstanceScript::GetBossState(), IN_PROGRESS, and MAX_ENCOUNTERS.

◆ OnCreatureCreate()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from InstanceScript.

195 {
196 switch(creature->GetEntry())
197 {
198 case NPC_PATCHWERK:
199 _patchwerkGUID = creature->GetGUID();
200 return;
202 PatchwerkRoomTrash.push_back(creature->GetGUID());
203 return;
204 case NPC_BILE_RETCHER:
205 if (creature->GetPositionY() > -3258.0f) // we want only those inside the room, not before
206 PatchwerkRoomTrash.push_back(creature->GetGUID());
207 return;
209 if (creature->GetPositionY() > -3258.0f) // we want only those inside the room, not before
210 PatchwerkRoomTrash.push_back(creature->GetGUID());
211 return;
213 PatchwerkRoomTrash.push_back(creature->GetGUID());
214 return;
216 PatchwerkRoomTrash.push_back(creature->GetGUID());
217 return;
219 PatchwerkRoomTrash.push_back(creature->GetGUID());
220 return;
221 case NPC_THADDIUS:
222 _thaddiusGUID = creature->GetGUID();
223 return;
224 case NPC_STALAGG:
225 _stalaggGUID = creature->GetGUID();
226 return;
227 case NPC_FEUGEN:
228 _feugenGUID = creature->GetGUID();
229 return;
231 _blaumeuxGUID = creature->GetGUID();
232 return;
233 case NPC_SIR_ZELIEK:
234 _zeliekGUID = creature->GetGUID();
235 return;
237 _rivendareGUID = creature->GetGUID();
238 return;
240 _korthazzGUID = creature->GetGUID();
241 return;
242 case NPC_SAPPHIRON:
243 _sapphironGUID = creature->GetGUID();
244 return;
245 case NPC_KELTHUZAD:
246 _kelthuzadGUID = creature->GetGUID();
247 return;
248 case NPC_LICH_KING:
249 _lichkingGUID = creature->GetGUID();
250 return;
251 }
252 }
@ NPC_BARON_RIVENDARE
Definition: stratholme.h:43
@ NPC_LICH_KING
Definition: trial_of_the_crusader.h:144
@ NPC_FEUGEN
Definition: naxxramas.h:137
@ NPC_THADDIUS
Definition: naxxramas.h:135
@ NPC_LADY_BLAUMEUX
Definition: naxxramas.h:142
@ NPC_MAD_SCIENTIST
Definition: naxxramas.h:161
@ NPC_SLUDGE_BELCHER
Definition: naxxramas.h:164
@ NPC_SAPPHIRON
Definition: naxxramas.h:146
@ NPC_STALAGG
Definition: naxxramas.h:136
@ NPC_PATCHWERK
Definition: naxxramas.h:158
@ NPC_BILE_RETCHER
Definition: naxxramas.h:160
@ NPC_SURGICAL_ASSIST
Definition: naxxramas.h:163
@ NPC_THANE_KORTHAZZ
Definition: naxxramas.h:143
@ NPC_PATCHWORK_GOLEM
Definition: naxxramas.h:159
@ NPC_KELTHUZAD
Definition: naxxramas.h:149
@ NPC_LIVING_MONSTROSITY
Definition: naxxramas.h:162
@ NPC_SIR_ZELIEK
Definition: naxxramas.h:141
uint32 GetEntry() const
Definition: Object.h:109
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
float GetPositionY() const
Definition: Position.h:118
ObjectGuid _rivendareGUID
Definition: instance_naxxramas.cpp:143
ObjectGuid _sapphironGUID
Definition: instance_naxxramas.cpp:146
ObjectGuid _kelthuzadGUID
Definition: instance_naxxramas.cpp:147
ObjectGuid _blaumeuxGUID
Definition: instance_naxxramas.cpp:144
ObjectGuid _korthazzGUID
Definition: instance_naxxramas.cpp:145
ObjectGuid _patchwerkGUID
Definition: instance_naxxramas.cpp:138
ObjectGuid _zeliekGUID
Definition: instance_naxxramas.cpp:142

References _blaumeuxGUID, _feugenGUID, _kelthuzadGUID, _korthazzGUID, _lichkingGUID, _patchwerkGUID, _rivendareGUID, _sapphironGUID, _stalaggGUID, _thaddiusGUID, _zeliekGUID, Object::GetEntry(), Object::GetGUID(), Position::GetPositionY(), NPC_BARON_RIVENDARE, NPC_BILE_RETCHER, NPC_FEUGEN, NPC_KELTHUZAD, NPC_LADY_BLAUMEUX, NPC_LICH_KING, NPC_LIVING_MONSTROSITY, NPC_MAD_SCIENTIST, NPC_PATCHWERK, NPC_PATCHWORK_GOLEM, NPC_SAPPHIRON, NPC_SIR_ZELIEK, NPC_SLUDGE_BELCHER, NPC_STALAGG, NPC_SURGICAL_ASSIST, NPC_THADDIUS, NPC_THANE_KORTHAZZ, and PatchwerkRoomTrash.

◆ OnGameObjectCreate()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::OnGameObjectCreate ( GameObject pGo)
inlineoverridevirtual

Reimplemented from InstanceScript.

255 {
256 if (pGo->GetGOInfo()->displayId == 6785 || pGo->GetGOInfo()->displayId == 1287)
257 {
258 HeiganEruption[GetEruptionSection(pGo->GetPositionX(), pGo->GetPositionY())].insert(pGo);
259 return;
260 }
261
262 switch(pGo->GetEntry())
263 {
267 {
269 }
270 break;
271 case GO_GLUTH_GATE:
272 _gluthGateGUID = pGo->GetGUID();
274 {
276 }
277 break;
281 {
283 }
284 break;
286 _nothExitGateGUID = pGo->GetGUID();
288 {
290 }
291 break;
293 _heiganGateGUID = pGo->GetGUID();
295 {
297 }
298 break;
302 {
304 }
305 break;
306 case GO_LOATHEB_GATE:
307 _loathebGateGUID = pGo->GetGUID();
309 {
311 }
312 break;
313 case GO_ANUB_GATE:
314 _anubGateGUID = pGo->GetGUID();
316 {
318 }
319 break;
321 _anubNextGateGUID = pGo->GetGUID();
323 {
325 }
326 break;
327 case GO_FAERLINA_GATE:
328 _faerlinaGateGUID = pGo->GetGUID();
330 {
332 }
333 break;
334 case GO_FAERLINA_WEB:
335 _faerlinaWebGUID = pGo->GetGUID();
337 {
339 }
340 break;
341 case GO_MAEXXNA_GATE:
342 _maexxnaGateGUID = pGo->GetGUID();
344 {
346 }
347 break;
348 case GO_THADDIUS_GATE:
349 _thaddiusGateGUID = pGo->GetGUID();
351 {
353 }
354 break;
357 break;
360 break;
364 {
366 }
367 break;
368 case GO_HORSEMEN_GATE:
369 _horsemanGateGUID = pGo->GetGUID();
371 {
373 }
374 break;
377 break;
381 {
383 }
384 break;
387 break;
390 break;
393 break;
396 break;
400 {
402 }
403 break;
407 {
410 }
411 break;
415 {
418 }
419 break;
423 {
426 }
427 break;
431 {
434 }
435 break;
436
437 // Glow portals at center-side
441 {
443 }
444 break;
448 {
450 }
451 break;
455 {
457 }
458 break;
462 {
464 }
465 break;
466
467 // Glow portals at boss-side
471 {
473 }
474 break;
478 {
480 }
481 break;
485 {
487 }
488 break;
492 {
494 }
495 break;
496 }
497 }
@ GO_STATE_ACTIVE
Definition: GameObjectData.h:690
@ DONE
Definition: InstanceScript.h:60
uint8 GetEruptionSection(float x, float y)
Definition: instance_naxxramas.cpp:36
@ GO_HEIGAN_ENTRY_GATE
Definition: naxxramas.h:88
@ GO_MAEXXNA_PORTAL
Definition: naxxramas.h:116
@ GO_GOTHIK_EXIT_GATE
Definition: naxxramas.h:99
@ GO_PATCHWERK_GATE
Definition: naxxramas.h:84
@ GO_THADDIUS_GATE
Definition: naxxramas.h:96
@ GO_LOATHEB_GATE
Definition: naxxramas.h:90
@ GO_HEIGAN_EXIT_GATE
Definition: naxxramas.h:89
@ GO_PLAGUE_EYE_PORTAL
Definition: naxxramas.h:121
@ GO_MAEXXNA_GATE
Definition: naxxramas.h:95
@ GO_KELTHUZAD_FLOOR
Definition: naxxramas.h:107
@ GO_ABOM_EYE_PORTAL
Definition: naxxramas.h:123
@ GO_LOATHEB_PORTAL
Definition: naxxramas.h:114
@ GO_KELTHUZAD_PORTAL_3
Definition: naxxramas.h:111
@ GO_SAPPHIRON_GATE
Definition: naxxramas.h:101
@ GO_SPIDER_EYE_PORTAL
Definition: naxxramas.h:122
@ GO_KELTHUZAD_GATE
Definition: naxxramas.h:108
@ GO_NOTH_ENTRY_GATE
Definition: naxxramas.h:86
@ GO_THADDIUS_PORTAL
Definition: naxxramas.h:115
@ GO_GOTHIK_ENTER_GATE
Definition: naxxramas.h:97
@ GO_CONS_EYE_RAMP_BOSS
Definition: naxxramas.h:129
@ GO_PLAG_EYE_RAMP_BOSS
Definition: naxxramas.h:127
@ GO_HORSEMAN_PORTAL
Definition: naxxramas.h:117
@ GO_FAERLINA_WEB
Definition: naxxramas.h:93
@ GO_ANUB_NEXT_GATE
Definition: naxxramas.h:92
@ GO_MILI_EYE_RAMP_BOSS
Definition: naxxramas.h:128
@ GO_ANUB_GATE
Definition: naxxramas.h:91
@ GO_NOTH_EXIT_GATE
Definition: naxxramas.h:87
@ GO_KELTHUZAD_PORTAL_1
Definition: naxxramas.h:109
@ GO_DEATHKNIGHT_EYE_PORTAL
Definition: naxxramas.h:120
@ GO_KELTHUZAD_PORTAL_2
Definition: naxxramas.h:110
@ GO_KELTHUZAD_PORTAL_4
Definition: naxxramas.h:112
@ GO_FAERLINA_GATE
Definition: naxxramas.h:94
@ GO_HORSEMEN_GATE
Definition: naxxramas.h:100
@ GO_GLUTH_GATE
Definition: naxxramas.h:85
@ GO_GOTHIK_INNER_GATE
Definition: naxxramas.h:98
@ GO_ARAC_EYE_RAMP_BOSS
Definition: naxxramas.h:126
@ BOSS_HORSEMAN
Definition: naxxramas.h:42
@ BOSS_ANUB
Definition: naxxramas.h:36
@ BOSS_HEIGAN
Definition: naxxramas.h:34
@ BOSS_LOATHEB
Definition: naxxramas.h:35
@ BOSS_GLUTH
Definition: naxxramas.h:32
@ BOSS_GOTHIK
Definition: naxxramas.h:41
@ BOSS_SAPPHIRON
Definition: naxxramas.h:43
@ BOSS_MAEXXNA
Definition: naxxramas.h:38
@ BOSS_THADDIUS
Definition: naxxramas.h:39
@ BOSS_NOTH
Definition: naxxramas.h:33
@ BOSS_PATCHWERK
Definition: naxxramas.h:30
@ BOSS_FAERLINA
Definition: naxxramas.h:37
@ GO_FLAG_NOT_SELECTABLE
Definition: SharedDefines.h:1607
void SetGoState(GOState state)
Definition: GameObject.cpp:2477
GameObjectTemplate const * GetGOInfo() const
Definition: GameObject.h:138
void RemoveGameObjectFlag(GameObjectFlags flags)
Definition: GameObject.h:221
uint32 displayId
Definition: GameObjectData.h:35
float GetPositionX() const
Definition: Position.h:117
ObjectGuid _nothExitGateGUID
Definition: instance_naxxramas.cpp:102
ObjectGuid _loathebPortalGUID
Definition: instance_naxxramas.cpp:124
ObjectGuid _plagueEyePortalGUID
Definition: instance_naxxramas.cpp:128
ObjectGuid _deathknightGlowEyePortalGUID
Definition: instance_naxxramas.cpp:131
ObjectGuid _sapphironGateGUID
Definition: instance_naxxramas.cpp:122
ObjectGuid _abomGlowEyePortalGUID
Definition: instance_naxxramas.cpp:134
ObjectGuid _horsemanPortalGUID
Definition: instance_naxxramas.cpp:123
ObjectGuid _plagueGlowEyePortalGUID
Definition: instance_naxxramas.cpp:132
ObjectGuid _thaddiusPortalGUID
Definition: instance_naxxramas.cpp:126
ObjectGuid _gluthGateGUID
Definition: instance_naxxramas.cpp:100
ObjectGuid _spiderGlowEyePortalGUID
Definition: instance_naxxramas.cpp:133
ObjectGuid _anubNextGateGUID
Definition: instance_naxxramas.cpp:107
ObjectGuid _deathknightEyePortalGUID
Definition: instance_naxxramas.cpp:127
ObjectGuid _faerlinaGateGUID
Definition: instance_naxxramas.cpp:109
ObjectGuid _abomEyePortalGUID
Definition: instance_naxxramas.cpp:130
ObjectGuid _maexxnaPortalGUID
Definition: instance_naxxramas.cpp:125
ObjectGuid _heiganGateExitGUID
Definition: instance_naxxramas.cpp:104
ObjectGuid _patchwerkGateGUID
Definition: instance_naxxramas.cpp:99
ObjectGuid _spiderEyePortalGUID
Definition: instance_naxxramas.cpp:129

References _abomEyePortalGUID, _abomGlowEyePortalGUID, _anubGateGUID, _anubNextGateGUID, _deathknightEyePortalGUID, _deathknightGlowEyePortalGUID, _faerlinaGateGUID, _faerlinaWebGUID, _gluthGateGUID, _gothikEnterGateGUID, _gothikExitGateGUID, _gothikInnerGateGUID, _heiganGateExitGUID, _heiganGateGUID, _horsemanGateGUID, _horsemanPortalGUID, _kelthuzadFloorGUID, _kelthuzadGateGUID, _kelthuzadPortal1GUID, _kelthuzadPortal2GUID, _kelthuzadPortal3GUID, _kelthuzadPortal4GUID, _loathebGateGUID, _loathebPortalGUID, _maexxnaGateGUID, _maexxnaPortalGUID, _nothEntryGateGUID, _nothExitGateGUID, _patchwerkGateGUID, _plagueEyePortalGUID, _plagueGlowEyePortalGUID, _sapphironGateGUID, _speakTimer, _spiderEyePortalGUID, _spiderGlowEyePortalGUID, _thaddiusGateGUID, _thaddiusPortalGUID, BOSS_ANUB, BOSS_FAERLINA, BOSS_GLUTH, BOSS_GOTHIK, BOSS_HEIGAN, BOSS_HORSEMAN, BOSS_LOATHEB, BOSS_MAEXXNA, BOSS_NOTH, BOSS_PATCHWERK, BOSS_SAPPHIRON, BOSS_THADDIUS, GameObjectTemplate::displayId, DONE, InstanceScript::GetBossState(), Object::GetEntry(), GetEruptionSection(), GameObject::GetGOInfo(), Object::GetGUID(), Position::GetPositionX(), Position::GetPositionY(), GO_ABOM_EYE_PORTAL, GO_ANUB_GATE, GO_ANUB_NEXT_GATE, GO_ARAC_EYE_RAMP_BOSS, GO_CONS_EYE_RAMP_BOSS, GO_DEATHKNIGHT_EYE_PORTAL, GO_FAERLINA_GATE, GO_FAERLINA_WEB, GO_FLAG_NOT_SELECTABLE, GO_GLUTH_GATE, GO_GOTHIK_ENTER_GATE, GO_GOTHIK_EXIT_GATE, GO_GOTHIK_INNER_GATE, GO_HEIGAN_ENTRY_GATE, GO_HEIGAN_EXIT_GATE, GO_HORSEMAN_PORTAL, GO_HORSEMEN_GATE, GO_KELTHUZAD_FLOOR, GO_KELTHUZAD_GATE, GO_KELTHUZAD_PORTAL_1, GO_KELTHUZAD_PORTAL_2, GO_KELTHUZAD_PORTAL_3, GO_KELTHUZAD_PORTAL_4, GO_LOATHEB_GATE, GO_LOATHEB_PORTAL, GO_MAEXXNA_GATE, GO_MAEXXNA_PORTAL, GO_MILI_EYE_RAMP_BOSS, GO_NOTH_ENTRY_GATE, GO_NOTH_EXIT_GATE, GO_PATCHWERK_GATE, GO_PLAG_EYE_RAMP_BOSS, GO_PLAGUE_EYE_PORTAL, GO_SAPPHIRON_GATE, GO_SPIDER_EYE_PORTAL, GO_STATE_ACTIVE, GO_THADDIUS_GATE, GO_THADDIUS_PORTAL, HeiganEruption, GameObject::RemoveGameObjectFlag(), and GameObject::SetGoState().

◆ OnGameObjectRemove()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::OnGameObjectRemove ( GameObject pGo)
inlineoverridevirtual

Reimplemented from InstanceScript.

500 {
501 if (pGo->GetGOInfo()->displayId == 6785 || pGo->GetGOInfo()->displayId == 1287)
502 {
503 uint32 section = GetEruptionSection(pGo->GetPositionX(), pGo->GetPositionY());
504 HeiganEruption[section].erase(pGo);
505 return;
506 }
507 if (pGo->GetEntry() == GO_SAPPHIRON_BIRTH)
508 {
510 {
511 cr->AI()->DoAction(ACTION_SAPPHIRON_BIRTH);
512 }
513 }
514 }
std::uint32_t uint32
Definition: Define.h:108
@ GO_SAPPHIRON_BIRTH
Definition: naxxramas.h:106
@ ACTION_SAPPHIRON_BIRTH
Definition: naxxramas.h:172
Definition: Creature.h:46
Creature * GetCreature(ObjectGuid const guid)
Definition: Map.cpp:3307

References _sapphironGUID, ACTION_SAPPHIRON_BIRTH, GameObjectTemplate::displayId, Map::GetCreature(), Object::GetEntry(), GetEruptionSection(), GameObject::GetGOInfo(), Position::GetPositionX(), Position::GetPositionY(), GO_SAPPHIRON_BIRTH, HeiganEruption, and InstanceScript::instance.

◆ ReadSaveDataMore()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

1105 {
1106 data >> immortalAchievement;
1107 }

References immortalAchievement.

◆ SetBossState()

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::SetBossState ( uint32  bossId,
EncounterState  state 
)
inlineoverridevirtual

Reimplemented from InstanceScript.

647 {
648 // pull all the trash if not killed
649 if (bossId == BOSS_PATCHWERK && state == IN_PROGRESS)
650 {
652 {
653 for (auto& itr : PatchwerkRoomTrash)
654 {
655 Creature* trash = ObjectAccessor::GetCreature(*patch, itr);
656 if (trash && trash->IsAlive() && !trash->IsInCombat())
657 {
658 trash->AI()->AttackStart(patch->GetVictim());
659 }
660 }
661 }
662 }
663
664 // Horseman handling
665 if (bossId == BOSS_HORSEMAN && !_horsemanLoadDoneState)
666 {
667 if (state == DONE)
668 {
671 if (_horsemanKilled < 4)
672 {
673 return false;
674 }
675 // All horsemans are killed
677 {
678 cr->CastSpell(cr, 59450, true); // credit
679 }
680 }
681
682 // respawn
683 else if (state == NOT_STARTED && _horsemanKilled > 0)
684 {
685 Creature* cr;
686 _horsemanKilled = 0;
688 {
689 if (!cr->IsAlive())
690 {
691 cr->SetPosition(cr->GetHomePosition());
692 cr->Respawn();
693 }
694 }
696 {
697 if (!cr->IsAlive())
698 {
699 cr->SetPosition(cr->GetHomePosition());
700 cr->Respawn();
701 }
702 }
703 if ((cr = instance->GetCreature(_zeliekGUID)))
704 {
705 if (!cr->IsAlive())
706 {
707 cr->SetPosition(cr->GetHomePosition());
708 cr->Respawn();
709 }
710 }
712 {
713 if (!cr->IsAlive())
714 {
715 cr->SetPosition(cr->GetHomePosition());
716 cr->Respawn();
717 }
718 }
719 }
720 else if (state == IN_PROGRESS)
721 {
722 Creature* cr;
724 {
726 }
728 {
730 }
731 if ((cr = instance->GetCreature(_zeliekGUID)))
732 {
734 }
736 {
738 }
739 }
740
741 if (state == NOT_STARTED)
742 {
743 _horsemanTimer = 0;
744 }
745 }
746
747 if (!InstanceScript::SetBossState(bossId, state))
748 return false;
749
750 // Bosses data
751 switch(bossId)
752 {
753 case BOSS_KELTHUZAD:
754 if (state == NOT_STARTED)
755 {
757 }
758 break;
759 case BOSS_FAERLINA:
760 if (state == NOT_STARTED)
761 {
762 faerlinaAchievement = true;
763 }
764 break;
765 case BOSS_THADDIUS:
766 if (state == NOT_STARTED)
767 {
768 thaddiusAchievement = true;
769 }
770 break;
771 case BOSS_LOATHEB:
772 if (state == NOT_STARTED)
773 {
774 loathebAchievement = true;
775 }
776 break;
777 case BOSS_HEIGAN:
778 if (state == NOT_STARTED)
779 {
780 heiganAchievement = true;
781 }
782 break;
783 case BOSS_SAPPHIRON:
784 if (state == DONE)
785 {
786 _speakTimer = 1;
787 // Load KT's grid so he can talk
788 instance->LoadGrid(3763.43f, -5115.87f);
789 }
790 else if (state == NOT_STARTED)
791 {
793 }
794 break;
795 default:
796 break;
797 }
798
799 // Save instance and open gates
800 if (state == DONE)
801 {
802 SaveToDB();
803
804 switch (bossId)
805 {
806 case BOSS_PATCHWERK:
808 {
809 go->SetGoState(GO_STATE_ACTIVE);
810 }
811 break;
812 case BOSS_GLUTH:
814 {
815 go->SetGoState(GO_STATE_ACTIVE);
816 }
818 {
819 go->SetGoState(GO_STATE_ACTIVE);
820 }
821 break;
822 case BOSS_NOTH:
824 {
825 go->SetGoState(GO_STATE_ACTIVE);
826 }
828 {
829 go->SetGoState(GO_STATE_ACTIVE);
830 }
831 break;
832 case BOSS_HEIGAN:
834 {
835 go->SetGoState(GO_STATE_ACTIVE);
836 }
838 {
839 go->SetGoState(GO_STATE_ACTIVE);
840 }
841 break;
842 case BOSS_LOATHEB:
844 {
845 go->SetGoState(GO_STATE_ACTIVE);
846 }
848 {
849 go->SetGoState(GO_STATE_ACTIVE);
850 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
851 }
853 {
854 go->SetGoState(GO_STATE_ACTIVE);
855 }
857 {
858 go->SetGoState(GO_STATE_ACTIVE);
859 }
860 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
861 break;
862 case BOSS_ANUB:
864 {
865 go->SetGoState(GO_STATE_ACTIVE);
866 }
868 {
869 go->SetGoState(GO_STATE_ACTIVE);
870 }
871 break;
872 case BOSS_FAERLINA:
874 {
875 go->SetGoState(GO_STATE_ACTIVE);
876 }
878 {
879 go->SetGoState(GO_STATE_ACTIVE);
880 }
881 break;
882 case BOSS_MAEXXNA:
884 {
885 go->SetGoState(GO_STATE_ACTIVE);
886 }
888 {
889 go->SetGoState(GO_STATE_ACTIVE);
890 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
891 }
893 {
894 go->SetGoState(GO_STATE_ACTIVE);
895 }
897 {
898 go->SetGoState(GO_STATE_ACTIVE);
899 }
900 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
901 break;
902 case BOSS_GOTHIK:
904 {
905 go->SetGoState(GO_STATE_ACTIVE);
906 }
908 {
909 go->SetGoState(GO_STATE_ACTIVE);
910 }
912 {
913 go->SetGoState(GO_STATE_ACTIVE);
914 }
915 break;
916 case BOSS_SAPPHIRON:
917 events.ScheduleEvent(EVENT_FROSTWYRM_WATERFALL_DOOR, 5s);
918 break;
919 case BOSS_THADDIUS:
921 {
922 go->SetGoState(GO_STATE_ACTIVE);
923 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
924 }
926 {
927 go->SetGoState(GO_STATE_ACTIVE);
928 }
930 {
931 go->SetGoState(GO_STATE_ACTIVE);
932 }
933 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
934 break;
935 case BOSS_HORSEMAN:
937 {
938 go->SetGoState(GO_STATE_ACTIVE);
939 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
940 }
942 {
943 go->SetGoState(GO_STATE_ACTIVE);
944 }
946 {
947 go->SetGoState(GO_STATE_ACTIVE);
948 }
949 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
950 break;
951 default:
952 break;
953 }
954 }
955 return true;
956 }
events
Definition: boss_sartura.cpp:43
@ BOSS_KELTHUZAD
Definition: naxxramas.h:44
@ EVENT_FROSTWYRM_WATERFALL_DOOR
Definition: naxxramas.h:194
@ EVENT_KELTHUZAD_WING_TAUNT
Definition: naxxramas.h:193
Creature * GetCreature(WorldObject const &u, ObjectGuid const guid)
Definition: ObjectAccessor.cpp:213
virtual void AttackStart(Unit *)
Definition: UnitAI.cpp:27
void SetInCombatWithZone()
Definition: Creature.cpp:2732
void Respawn(bool force=false)
Definition: Creature.cpp:1974
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition: Creature.h:332
void SetPosition(float x, float y, float z, float o)
Definition: Creature.cpp:3072
CreatureAI * AI() const
Definition: Creature.h:136
Definition: GameObject.h:122
bool IsAlive() const
Definition: Unit.h:1822
bool IsInCombat() const
Definition: Unit.h:1702
virtual bool SetBossState(uint32 id, EncounterState state)
Definition: InstanceScript.cpp:350
void SaveToDB()
Definition: InstanceScript.cpp:40
void LoadGrid(float x, float y)
Definition: Map.cpp:492
GameObject * GetGameObject(ObjectGuid const guid)
Definition: Map.cpp:3312

References _abomEyePortalGUID, _abomGlowEyePortalGUID, _anubGateGUID, _anubNextGateGUID, _blaumeuxGUID, _deathknightEyePortalGUID, _deathknightGlowEyePortalGUID, _faerlinaGateGUID, _gluthGateGUID, _gothikEnterGateGUID, _gothikExitGateGUID, _heiganGateExitGUID, _heiganGateGUID, _horsemanGateGUID, _horsemanKilled, _horsemanLoadDoneState, _horsemanPortalGUID, _horsemanTimer, _korthazzGUID, _loathebGateGUID, _loathebPortalGUID, _maexxnaGateGUID, _maexxnaPortalGUID, _nothExitGateGUID, _patchwerkGateGUID, _patchwerkGUID, _plagueEyePortalGUID, _plagueGlowEyePortalGUID, _rivendareGUID, _speakTimer, _spiderEyePortalGUID, _spiderGlowEyePortalGUID, _thaddiusGateGUID, _thaddiusPortalGUID, _zeliekGUID, abominationsKilled, Creature::AI(), UnitAI::AttackStart(), BOSS_ANUB, BOSS_FAERLINA, BOSS_GLUTH, BOSS_GOTHIK, BOSS_HEIGAN, BOSS_HORSEMAN, BOSS_KELTHUZAD, BOSS_LOATHEB, BOSS_MAEXXNA, BOSS_NOTH, BOSS_PATCHWERK, BOSS_SAPPHIRON, BOSS_THADDIUS, DONE, EVENT_FROSTWYRM_WATERFALL_DOOR, EVENT_KELTHUZAD_WING_TAUNT, faerlinaAchievement, Map::GetCreature(), ObjectAccessor::GetCreature(), Map::GetGameObject(), Creature::GetHomePosition(), GO_FLAG_NOT_SELECTABLE, GO_STATE_ACTIVE, heiganAchievement, IN_PROGRESS, InstanceScript::instance, Unit::IsAlive(), Unit::IsInCombat(), Map::LoadGrid(), loathebAchievement, NOT_STARTED, PatchwerkRoomTrash, Creature::Respawn(), sapphironAchievement, InstanceScript::SaveToDB(), InstanceScript::SetBossState(), Creature::SetInCombatWithZone(), Creature::SetPosition(), and thaddiusAchievement.

◆ SetData()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::SetData ( uint32  id,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

603 {
604 switch(id)
605 {
608 return;
610 faerlinaAchievement = false;
611 return;
613 thaddiusAchievement = false;
614 return;
616 loathebAchievement = false;
617 return;
619 sapphironAchievement = false;
620 return;
621 case DATA_DANCE_FAIL:
622 heiganAchievement = false;
623 return;
626 SaveToDB();
627 return;
630 return;
632 _hadThaddiusGreet = (data == 1);
633 default:
634 return;
635 }
636 }
@ DATA_HUNDRED_CLUB
Definition: naxxramas.h:71
@ DATA_FRENZY_REMOVED
Definition: naxxramas.h:68
@ DATA_CHARGES_CROSSED
Definition: naxxramas.h:69
@ DATA_IMMORTAL_FAIL
Definition: naxxramas.h:73
@ DATA_DANCE_FAIL
Definition: naxxramas.h:72
@ DATA_ABOMINATION_KILLED
Definition: naxxramas.h:67
@ DATA_SPORE_KILLED
Definition: naxxramas.h:70
@ DATA_HEIGAN_ERUPTION
Definition: naxxramas.h:51
void HeiganEruptSections(uint32 section)
Definition: instance_naxxramas.cpp:169

References _hadThaddiusGreet, abominationsKilled, DATA_ABOMINATION_KILLED, DATA_CHARGES_CROSSED, DATA_DANCE_FAIL, DATA_FRENZY_REMOVED, DATA_HAD_THADDIUS_GREET, DATA_HEIGAN_ERUPTION, DATA_HUNDRED_CLUB, DATA_IMMORTAL_FAIL, DATA_SPORE_KILLED, faerlinaAchievement, heiganAchievement, HeiganEruptSections(), immortalAchievement, loathebAchievement, sapphironAchievement, InstanceScript::SaveToDB(), and thaddiusAchievement.

◆ Update()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

959 {
960 if (_speakTimer)
961 {
964 if (kel && lich)
965 {
966 _speakTimer += diff;
967 }
968 else
969 {
970 return;
971 }
972 if (_speakTimer > 10000 && _speakTimer < 20000)
973 {
974 kel->AI()->Talk(SAY_SAPP_DIALOG1);
975 _speakTimer = 20000;
976 }
977 else if (_speakTimer > 30000 && _speakTimer < 40000)
978 {
979 lich->AI()->Talk(SAY_SAPP_DIALOG2_LICH);
980 _speakTimer = 40000;
981 }
982 else if (_speakTimer > 54000 && _speakTimer < 60000)
983 {
984 kel->AI()->Talk(SAY_SAPP_DIALOG3);
985 _speakTimer = 60000;
986 }
987 else if (_speakTimer > 70000 && _speakTimer < 80000)
988 {
989 lich->AI()->Talk(SAY_SAPP_DIALOG4_LICH);
990 _speakTimer = 80000;
991 }
992 else if (_speakTimer > 92000 && _speakTimer < 100000)
993 {
994 kel->AI()->Talk(SAY_SAPP_DIALOG5);
995 _speakTimer = 100000;
996 }
997 else if (_speakTimer > 105000)
998 {
999 kel->AI()->Talk(SAY_SAPP_DIALOG6);
1000 _speakTimer = 0;
1002 {
1003 go->SetGoState(GO_STATE_ACTIVE);
1004 }
1005 }
1006 }
1007
1008 // And They would all
1009 if (_horsemanTimer)
1010 {
1011 _horsemanTimer += diff;
1012 }
1013
1015 {
1016 if (_screamTimer <= diff)
1017 {
1019 _screamTimer = (2 * MINUTE + urand(0, 30)) * IN_MILLISECONDS;
1020 }
1021 else
1022 {
1023 _screamTimer -= diff;
1024 }
1025 }
1026
1027 events.Update(diff);
1028 switch (events.ExecuteEvent())
1029 {
1031 // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
1032 instance->LoadGrid(3749.67f, -5114.06f);
1033 if (Creature* kelthuzad = instance->GetCreature(_kelthuzadGUID))
1034 {
1035 kelthuzad->AI()->Talk(_currentWingTaunt);
1036 }
1038 break;
1041 {
1042 go->SetGoState(GO_STATE_ACTIVE);
1043 }
1044 break;
1045 }
1046 }
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44
@ SOUND_SCREAM
Definition: naxxramas.h:175
@ SAY_SAPP_DIALOG4_LICH
Definition: naxxramas.h:183
@ SAY_SAPP_DIALOG6
Definition: naxxramas.h:185
@ SAY_SAPP_DIALOG2_LICH
Definition: naxxramas.h:181
@ SAY_SAPP_DIALOG1
Definition: naxxramas.h:180
@ SAY_SAPP_DIALOG5
Definition: naxxramas.h:184
@ SAY_SAPP_DIALOG3
Definition: naxxramas.h:182
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0s)
Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
Definition: CreatureAI.cpp:49
void PlayDirectSoundToMap(uint32 soundId, uint32 zoneId=0)
Definition: Map.cpp:3737

References _currentWingTaunt, _horsemanTimer, _kelthuzadGateGUID, _kelthuzadGUID, _lichkingGUID, _sapphironGateGUID, _screamTimer, _speakTimer, Creature::AI(), BOSS_THADDIUS, DONE, EVENT_FROSTWYRM_WATERFALL_DOOR, EVENT_KELTHUZAD_WING_TAUNT, InstanceScript::GetBossState(), Map::GetCreature(), Map::GetGameObject(), GO_STATE_ACTIVE, IN_MILLISECONDS, InstanceScript::instance, Map::LoadGrid(), MINUTE, Map::PlayDirectSoundToMap(), SAY_SAPP_DIALOG1, SAY_SAPP_DIALOG2_LICH, SAY_SAPP_DIALOG3, SAY_SAPP_DIALOG4_LICH, SAY_SAPP_DIALOG5, SAY_SAPP_DIALOG6, SOUND_SCREAM, CreatureAI::Talk(), and urand().

◆ WriteSaveDataMore()

void instance_naxxramas::instance_naxxramas_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

1110 {
1111 data << immortalAchievement;
1112 }

References immortalAchievement.

Member Data Documentation

◆ _abomEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_abomEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _abomGlowEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_abomGlowEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _anubGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_anubGateGUID

◆ _anubNextGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_anubNextGateGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _blaumeuxGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_blaumeuxGUID

Referenced by OnCreatureCreate(), and SetBossState().

◆ _currentWingTaunt

uint8 instance_naxxramas::instance_naxxramas_InstanceMapScript::_currentWingTaunt

◆ _deathknightEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_deathknightEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _deathknightGlowEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_deathknightGlowEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _faerlinaGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_faerlinaGateGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _faerlinaWebGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_faerlinaWebGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _feugenGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_feugenGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ _gluthGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_gluthGateGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _gothikEnterGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_gothikEnterGateGUID

◆ _gothikExitGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_gothikExitGateGUID {}

◆ _gothikInnerGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_gothikInnerGateGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _hadThaddiusGreet

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::_hadThaddiusGreet

◆ _heiganGateExitGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_heiganGateExitGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _heiganGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_heiganGateGUID

◆ _horsemanGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_horsemanGateGUID

◆ _horsemanKilled

uint8 instance_naxxramas::instance_naxxramas_InstanceMapScript::_horsemanKilled

◆ _horsemanLoadDoneState

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::_horsemanLoadDoneState

◆ _horsemanPortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_horsemanPortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _horsemanTimer

uint32 instance_naxxramas::instance_naxxramas_InstanceMapScript::_horsemanTimer

◆ _kelthuzadFloorGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_kelthuzadFloorGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _kelthuzadGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_kelthuzadGateGUID

◆ _kelthuzadGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_kelthuzadGUID

Referenced by OnCreatureCreate(), and Update().

◆ _kelthuzadPortal1GUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_kelthuzadPortal1GUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _kelthuzadPortal2GUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_kelthuzadPortal2GUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _kelthuzadPortal3GUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_kelthuzadPortal3GUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _kelthuzadPortal4GUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_kelthuzadPortal4GUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _korthazzGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_korthazzGUID

Referenced by OnCreatureCreate(), and SetBossState().

◆ _lichkingGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_lichkingGUID

◆ _loathebGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_loathebGateGUID

◆ _loathebPortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_loathebPortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _maexxnaGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_maexxnaGateGUID

◆ _maexxnaPortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_maexxnaPortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _nothEntryGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_nothEntryGateGUID

Referenced by GetGuidData(), and OnGameObjectCreate().

◆ _nothExitGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_nothExitGateGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _patchwerkGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_patchwerkGateGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _patchwerkGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_patchwerkGUID

Referenced by OnCreatureCreate(), and SetBossState().

◆ _plagueEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_plagueEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _plagueGlowEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_plagueGlowEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _rivendareGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_rivendareGUID

Referenced by OnCreatureCreate(), and SetBossState().

◆ _sapphironGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_sapphironGateGUID

Referenced by OnGameObjectCreate(), and Update().

◆ _sapphironGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_sapphironGUID

◆ _screamTimer

uint32 instance_naxxramas::instance_naxxramas_InstanceMapScript::_screamTimer

◆ _speakTimer

uint32 instance_naxxramas::instance_naxxramas_InstanceMapScript::_speakTimer

◆ _spiderEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_spiderEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _spiderGlowEyePortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_spiderGlowEyePortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _stalaggGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_stalaggGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ _thaddiusGateGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_thaddiusGateGUID

◆ _thaddiusGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_thaddiusGUID

Referenced by GetGuidData(), and OnCreatureCreate().

◆ _thaddiusPortalGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_thaddiusPortalGUID

Referenced by OnGameObjectCreate(), and SetBossState().

◆ _zeliekGUID

ObjectGuid instance_naxxramas::instance_naxxramas_InstanceMapScript::_zeliekGUID

Referenced by OnCreatureCreate(), and SetBossState().

◆ abominationsKilled

uint8 instance_naxxramas::instance_naxxramas_InstanceMapScript::abominationsKilled

◆ events

EventMap instance_naxxramas::instance_naxxramas_InstanceMapScript::events

◆ faerlinaAchievement

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::faerlinaAchievement

◆ heiganAchievement

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::heiganAchievement

◆ HeiganEruption

std::set<GameObject*> instance_naxxramas::instance_naxxramas_InstanceMapScript::HeiganEruption[4]

◆ immortalAchievement

uint32 instance_naxxramas::instance_naxxramas_InstanceMapScript::immortalAchievement

◆ loathebAchievement

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::loathebAchievement

◆ PatchwerkRoomTrash

GuidList instance_naxxramas::instance_naxxramas_InstanceMapScript::PatchwerkRoomTrash

◆ sapphironAchievement

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::sapphironAchievement

◆ thaddiusAchievement

bool instance_naxxramas::instance_naxxramas_InstanceMapScript::thaddiusAchievement