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)
 
- 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
 

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)
 
void AddObject (GameObject *obj, bool add)
 
void AddObject (WorldObject *obj, uint32 type, bool add)
 
void AddDoor (GameObject *door, bool add)
 
void AddMinion (Creature *minion, bool add)
 
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
65 : InstanceScript(pMap)
66 {
69 for (auto& i : HeiganEruption)
70 i.clear();
71
72 // NPCs
73 PatchwerkRoomTrash.clear();
74
75 // Controls
77 _speakTimer = 0;
80 _hadThaddiusGreet = false;
83
84 // Achievements
88 loathebAchievement = true;
90 heiganAchievement = true;
92 }
constexpr auto IN_MILLISECONDS
Definition: Common.h:62
constexpr auto MINUTE
Definition: Common.h:56
#define DataHeader
Definition: blackrock_depths.h:23
@ MAX_ENCOUNTERS
Definition: deadmines.h:30
@ SAY_FIRST_WING_TAUNT
Definition: naxxramas.h:187
Definition: InstanceScript.h:140
void SetBossNumber(uint32 number)
Definition: InstanceScript.h:265
void SetHeaders(std::string const &dataHeaders)
Definition: InstanceScript.cpp:137
uint8 _currentWingTaunt
Definition: instance_naxxramas.cpp:155
GuidList PatchwerkRoomTrash
Definition: instance_naxxramas.cpp:135
uint32 _horsemanTimer
Definition: instance_naxxramas.cpp:151
std::set< GameObject * > HeiganEruption[4]
Definition: instance_naxxramas.cpp:94
bool _hadThaddiusGreet
Definition: instance_naxxramas.cpp:153
bool _horsemanLoadDoneState
Definition: instance_naxxramas.cpp:156
bool sapphironAchievement
Definition: instance_naxxramas.cpp:163
bool loathebAchievement
Definition: instance_naxxramas.cpp:162
uint32 _speakTimer
Definition: instance_naxxramas.cpp:150
bool thaddiusAchievement
Definition: instance_naxxramas.cpp:161
uint32 _screamTimer
Definition: instance_naxxramas.cpp:152
bool faerlinaAchievement
Definition: instance_naxxramas.cpp:160
uint8 _horsemanKilled
Definition: instance_naxxramas.cpp:149
uint32 immortalAchievement
Definition: instance_naxxramas.cpp:165
uint8 abominationsKilled
Definition: instance_naxxramas.cpp:159
bool heiganAchievement
Definition: instance_naxxramas.cpp:164

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.

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

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.

637 {
639 return 1;
640
641 return 0;
642 }
@ 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.

1047 {
1048 switch (id)
1049 {
1050 // GameObjects
1052 return _heiganGateGUID;
1053 case DATA_LOATHEB_GATE:
1054 return _loathebGateGUID;
1055 case DATA_ANUB_GATE:
1056 return _anubGateGUID;
1057 case DATA_FAERLINA_WEB:
1058 return _faerlinaWebGUID;
1059 case DATA_MAEXXNA_GATE:
1060 return _maexxnaGateGUID;
1062 return _gothikEnterGateGUID;
1064 return _gothikInnerGateGUID;
1066 return _gothikExitGateGUID;
1067 case DATA_HORSEMEN_GATE:
1068 return _horsemanGateGUID;
1069 case DATA_THADDIUS_GATE:
1070 return _thaddiusGateGUID;
1072 return _nothEntryGateGUID;
1074 return _kelthuzadFloorGUID;
1076 return _kelthuzadGateGUID;
1078 return _kelthuzadPortal1GUID;
1080 return _kelthuzadPortal2GUID;
1082 return _kelthuzadPortal3GUID;
1084 return _kelthuzadPortal4GUID;
1085
1086 // NPCs
1087 case DATA_THADDIUS_BOSS:
1088 return _thaddiusGUID;
1089 case DATA_STALAGG_BOSS:
1090 return _stalaggGUID;
1091 case DATA_FEUGEN_BOSS:
1092 return _feugenGUID;
1094 return _lichkingGUID;
1095 default:
1096 break;
1097 }
1098
1099 return ObjectGuid::Empty;
1100 }
@ 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:104
ObjectGuid _kelthuzadPortal1GUID
Definition: instance_naxxramas.cpp:116
ObjectGuid _gothikInnerGateGUID
Definition: instance_naxxramas.cpp:111
ObjectGuid _maexxnaGateGUID
Definition: instance_naxxramas.cpp:108
ObjectGuid _kelthuzadPortal4GUID
Definition: instance_naxxramas.cpp:119
ObjectGuid _kelthuzadFloorGUID
Definition: instance_naxxramas.cpp:114
ObjectGuid _feugenGUID
Definition: instance_naxxramas.cpp:139
ObjectGuid _gothikEnterGateGUID
Definition: instance_naxxramas.cpp:110
ObjectGuid _loathebGateGUID
Definition: instance_naxxramas.cpp:103
ObjectGuid _kelthuzadPortal3GUID
Definition: instance_naxxramas.cpp:118
ObjectGuid _faerlinaWebGUID
Definition: instance_naxxramas.cpp:106
ObjectGuid _horsemanGateGUID
Definition: instance_naxxramas.cpp:113
ObjectGuid _kelthuzadGateGUID
Definition: instance_naxxramas.cpp:115
ObjectGuid _heiganGateGUID
Definition: instance_naxxramas.cpp:101
ObjectGuid _lichkingGUID
Definition: instance_naxxramas.cpp:146
ObjectGuid _thaddiusGateGUID
Definition: instance_naxxramas.cpp:109
ObjectGuid _gothikExitGateGUID
Definition: instance_naxxramas.cpp:112
ObjectGuid _thaddiusGUID
Definition: instance_naxxramas.cpp:137
ObjectGuid _stalaggGUID
Definition: instance_naxxramas.cpp:138
ObjectGuid _nothEntryGateGUID
Definition: instance_naxxramas.cpp:99
ObjectGuid _kelthuzadPortal2GUID
Definition: instance_naxxramas.cpp:117

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
168 {
169 for (uint8 i = 0; i < 4; ++i)
170 {
171 if (i == section)
172 continue;
173
174 for (auto itr : HeiganEruption[i])
175 {
176 itr->SendCustomAnim(itr->GetGoAnimProgress());
177 itr->CastSpell(nullptr, SPELL_ERUPTION);
178 }
179 }
180 }
@ SPELL_ERUPTION
Definition: boss_garr.cpp:42

References HeiganEruption, and SPELL_ERUPTION.

Referenced by SetData().

◆ IsEncounterInProgress()

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

Reimplemented from InstanceScript.

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

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

◆ OnCreatureCreate()

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

Reimplemented from InstanceScript.

193 {
194 switch(creature->GetEntry())
195 {
196 case NPC_PATCHWERK:
197 _patchwerkGUID = creature->GetGUID();
198 return;
200 PatchwerkRoomTrash.push_back(creature->GetGUID());
201 return;
202 case NPC_BILE_RETCHER:
203 if (creature->GetPositionY() > -3258.0f) // we want only those inside the room, not before
204 PatchwerkRoomTrash.push_back(creature->GetGUID());
205 return;
207 if (creature->GetPositionY() > -3258.0f) // we want only those inside the room, not before
208 PatchwerkRoomTrash.push_back(creature->GetGUID());
209 return;
211 PatchwerkRoomTrash.push_back(creature->GetGUID());
212 return;
214 PatchwerkRoomTrash.push_back(creature->GetGUID());
215 return;
217 PatchwerkRoomTrash.push_back(creature->GetGUID());
218 return;
219 case NPC_THADDIUS:
220 _thaddiusGUID = creature->GetGUID();
221 return;
222 case NPC_STALAGG:
223 _stalaggGUID = creature->GetGUID();
224 return;
225 case NPC_FEUGEN:
226 _feugenGUID = creature->GetGUID();
227 return;
229 _blaumeuxGUID = creature->GetGUID();
230 return;
231 case NPC_SIR_ZELIEK:
232 _zeliekGUID = creature->GetGUID();
233 return;
235 _rivendareGUID = creature->GetGUID();
236 return;
238 _korthazzGUID = creature->GetGUID();
239 return;
240 case NPC_SAPPHIRON:
241 _sapphironGUID = creature->GetGUID();
242 return;
243 case NPC_KELTHUZAD:
244 _kelthuzadGUID = creature->GetGUID();
245 return;
246 case NPC_LICH_KING:
247 _lichkingGUID = creature->GetGUID();
248 return;
249 }
250 }
@ 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:141
ObjectGuid _sapphironGUID
Definition: instance_naxxramas.cpp:144
ObjectGuid _kelthuzadGUID
Definition: instance_naxxramas.cpp:145
ObjectGuid _blaumeuxGUID
Definition: instance_naxxramas.cpp:142
ObjectGuid _korthazzGUID
Definition: instance_naxxramas.cpp:143
ObjectGuid _patchwerkGUID
Definition: instance_naxxramas.cpp:136
ObjectGuid _zeliekGUID
Definition: instance_naxxramas.cpp:140

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.

253 {
254 if (pGo->GetGOInfo()->displayId == 6785 || pGo->GetGOInfo()->displayId == 1287)
255 {
256 HeiganEruption[GetEruptionSection(pGo->GetPositionX(), pGo->GetPositionY())].insert(pGo);
257 return;
258 }
259
260 switch(pGo->GetEntry())
261 {
265 {
267 }
268 break;
269 case GO_GLUTH_GATE:
270 _gluthGateGUID = pGo->GetGUID();
272 {
274 }
275 break;
279 {
281 }
282 break;
284 _nothExitGateGUID = pGo->GetGUID();
286 {
288 }
289 break;
291 _heiganGateGUID = pGo->GetGUID();
293 {
295 }
296 break;
300 {
302 }
303 break;
304 case GO_LOATHEB_GATE:
305 _loathebGateGUID = pGo->GetGUID();
307 {
309 }
310 break;
311 case GO_ANUB_GATE:
312 _anubGateGUID = pGo->GetGUID();
314 {
316 }
317 break;
319 _anubNextGateGUID = pGo->GetGUID();
321 {
323 }
324 break;
325 case GO_FAERLINA_GATE:
326 _faerlinaGateGUID = pGo->GetGUID();
328 {
330 }
331 break;
332 case GO_FAERLINA_WEB:
333 _faerlinaWebGUID = pGo->GetGUID();
335 {
337 }
338 break;
339 case GO_MAEXXNA_GATE:
340 _maexxnaGateGUID = pGo->GetGUID();
342 {
344 }
345 break;
346 case GO_THADDIUS_GATE:
347 _thaddiusGateGUID = pGo->GetGUID();
349 {
351 }
352 break;
355 break;
358 break;
362 {
364 }
365 break;
366 case GO_HORSEMEN_GATE:
367 _horsemanGateGUID = pGo->GetGUID();
369 {
371 }
372 break;
375 break;
379 {
381 }
382 break;
385 break;
388 break;
391 break;
394 break;
398 {
400 }
401 break;
405 {
408 }
409 break;
413 {
416 }
417 break;
421 {
424 }
425 break;
429 {
432 }
433 break;
434
435 // Glow portals at center-side
439 {
441 }
442 break;
446 {
448 }
449 break;
453 {
455 }
456 break;
460 {
462 }
463 break;
464
465 // Glow portals at boss-side
469 {
471 }
472 break;
476 {
478 }
479 break;
483 {
485 }
486 break;
490 {
492 }
493 break;
494 }
495 }
@ GO_STATE_ACTIVE
Definition: GameObjectData.h:690
@ DONE
Definition: InstanceScript.h:59
uint8 GetEruptionSection(float x, float y)
Definition: instance_naxxramas.cpp:34
@ 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:1579
void SetGoState(GOState state)
Definition: GameObject.cpp:2467
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:100
ObjectGuid _loathebPortalGUID
Definition: instance_naxxramas.cpp:122
ObjectGuid _plagueEyePortalGUID
Definition: instance_naxxramas.cpp:126
ObjectGuid _deathknightGlowEyePortalGUID
Definition: instance_naxxramas.cpp:129
ObjectGuid _sapphironGateGUID
Definition: instance_naxxramas.cpp:120
ObjectGuid _abomGlowEyePortalGUID
Definition: instance_naxxramas.cpp:132
ObjectGuid _horsemanPortalGUID
Definition: instance_naxxramas.cpp:121
ObjectGuid _plagueGlowEyePortalGUID
Definition: instance_naxxramas.cpp:130
ObjectGuid _thaddiusPortalGUID
Definition: instance_naxxramas.cpp:124
ObjectGuid _gluthGateGUID
Definition: instance_naxxramas.cpp:98
ObjectGuid _spiderGlowEyePortalGUID
Definition: instance_naxxramas.cpp:131
ObjectGuid _anubNextGateGUID
Definition: instance_naxxramas.cpp:105
ObjectGuid _deathknightEyePortalGUID
Definition: instance_naxxramas.cpp:125
ObjectGuid _faerlinaGateGUID
Definition: instance_naxxramas.cpp:107
ObjectGuid _abomEyePortalGUID
Definition: instance_naxxramas.cpp:128
ObjectGuid _maexxnaPortalGUID
Definition: instance_naxxramas.cpp:123
ObjectGuid _heiganGateExitGUID
Definition: instance_naxxramas.cpp:102
ObjectGuid _patchwerkGateGUID
Definition: instance_naxxramas.cpp:97
ObjectGuid _spiderEyePortalGUID
Definition: instance_naxxramas.cpp:127

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.

498 {
499 if (pGo->GetGOInfo()->displayId == 6785 || pGo->GetGOInfo()->displayId == 1287)
500 {
501 uint32 section = GetEruptionSection(pGo->GetPositionX(), pGo->GetPositionY());
502 HeiganEruption[section].erase(pGo);
503 return;
504 }
505 if (pGo->GetEntry() == GO_SAPPHIRON_BIRTH)
506 {
508 {
509 cr->AI()->DoAction(ACTION_SAPPHIRON_BIRTH);
510 }
511 }
512 }
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:3293

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.

1103 {
1104 data >> immortalAchievement;
1105 }

References immortalAchievement.

◆ SetBossState()

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

Reimplemented from InstanceScript.

645 {
646 // pull all the trash if not killed
647 if (bossId == BOSS_PATCHWERK && state == IN_PROGRESS)
648 {
650 {
651 for (auto& itr : PatchwerkRoomTrash)
652 {
653 Creature* trash = ObjectAccessor::GetCreature(*patch, itr);
654 if (trash && trash->IsAlive() && !trash->IsInCombat())
655 {
656 trash->AI()->AttackStart(patch->GetVictim());
657 }
658 }
659 }
660 }
661
662 // Horseman handling
663 if (bossId == BOSS_HORSEMAN && !_horsemanLoadDoneState)
664 {
665 if (state == DONE)
666 {
669 if (_horsemanKilled < 4)
670 {
671 return false;
672 }
673 // All horsemans are killed
675 {
676 cr->CastSpell(cr, 59450, true); // credit
677 }
678 }
679
680 // respawn
681 else if (state == NOT_STARTED && _horsemanKilled > 0)
682 {
683 Creature* cr;
684 _horsemanKilled = 0;
686 {
687 if (!cr->IsAlive())
688 {
689 cr->SetPosition(cr->GetHomePosition());
690 cr->Respawn();
691 }
692 }
694 {
695 if (!cr->IsAlive())
696 {
697 cr->SetPosition(cr->GetHomePosition());
698 cr->Respawn();
699 }
700 }
701 if ((cr = instance->GetCreature(_zeliekGUID)))
702 {
703 if (!cr->IsAlive())
704 {
705 cr->SetPosition(cr->GetHomePosition());
706 cr->Respawn();
707 }
708 }
710 {
711 if (!cr->IsAlive())
712 {
713 cr->SetPosition(cr->GetHomePosition());
714 cr->Respawn();
715 }
716 }
717 }
718 else if (state == IN_PROGRESS)
719 {
720 Creature* cr;
722 {
724 }
726 {
728 }
729 if ((cr = instance->GetCreature(_zeliekGUID)))
730 {
732 }
734 {
736 }
737 }
738
739 if (state == NOT_STARTED)
740 {
741 _horsemanTimer = 0;
742 }
743 }
744
745 if (!InstanceScript::SetBossState(bossId, state))
746 return false;
747
748 // Bosses data
749 switch(bossId)
750 {
751 case BOSS_KELTHUZAD:
752 if (state == NOT_STARTED)
753 {
755 }
756 break;
757 case BOSS_FAERLINA:
758 if (state == NOT_STARTED)
759 {
760 faerlinaAchievement = true;
761 }
762 break;
763 case BOSS_THADDIUS:
764 if (state == NOT_STARTED)
765 {
766 thaddiusAchievement = true;
767 }
768 break;
769 case BOSS_LOATHEB:
770 if (state == NOT_STARTED)
771 {
772 loathebAchievement = true;
773 }
774 break;
775 case BOSS_HEIGAN:
776 if (state == NOT_STARTED)
777 {
778 heiganAchievement = true;
779 }
780 break;
781 case BOSS_SAPPHIRON:
782 if (state == DONE)
783 {
784 _speakTimer = 1;
785 // Load KT's grid so he can talk
786 instance->LoadGrid(3763.43f, -5115.87f);
787 }
788 else if (state == NOT_STARTED)
789 {
791 }
792 break;
793 default:
794 break;
795 }
796
797 // Save instance and open gates
798 if (state == DONE)
799 {
800 SaveToDB();
801
802 switch (bossId)
803 {
804 case BOSS_PATCHWERK:
806 {
807 go->SetGoState(GO_STATE_ACTIVE);
808 }
809 break;
810 case BOSS_GLUTH:
812 {
813 go->SetGoState(GO_STATE_ACTIVE);
814 }
816 {
817 go->SetGoState(GO_STATE_ACTIVE);
818 }
819 break;
820 case BOSS_NOTH:
822 {
823 go->SetGoState(GO_STATE_ACTIVE);
824 }
826 {
827 go->SetGoState(GO_STATE_ACTIVE);
828 }
829 break;
830 case BOSS_HEIGAN:
832 {
833 go->SetGoState(GO_STATE_ACTIVE);
834 }
836 {
837 go->SetGoState(GO_STATE_ACTIVE);
838 }
839 break;
840 case BOSS_LOATHEB:
842 {
843 go->SetGoState(GO_STATE_ACTIVE);
844 }
846 {
847 go->SetGoState(GO_STATE_ACTIVE);
848 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
849 }
851 {
852 go->SetGoState(GO_STATE_ACTIVE);
853 }
855 {
856 go->SetGoState(GO_STATE_ACTIVE);
857 }
858 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
859 break;
860 case BOSS_ANUB:
862 {
863 go->SetGoState(GO_STATE_ACTIVE);
864 }
866 {
867 go->SetGoState(GO_STATE_ACTIVE);
868 }
869 break;
870 case BOSS_FAERLINA:
872 {
873 go->SetGoState(GO_STATE_ACTIVE);
874 }
876 {
877 go->SetGoState(GO_STATE_ACTIVE);
878 }
879 break;
880 case BOSS_MAEXXNA:
882 {
883 go->SetGoState(GO_STATE_ACTIVE);
884 }
886 {
887 go->SetGoState(GO_STATE_ACTIVE);
888 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
889 }
891 {
892 go->SetGoState(GO_STATE_ACTIVE);
893 }
895 {
896 go->SetGoState(GO_STATE_ACTIVE);
897 }
898 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
899 break;
900 case BOSS_GOTHIK:
902 {
903 go->SetGoState(GO_STATE_ACTIVE);
904 }
906 {
907 go->SetGoState(GO_STATE_ACTIVE);
908 }
910 {
911 go->SetGoState(GO_STATE_ACTIVE);
912 }
913 break;
914 case BOSS_SAPPHIRON:
915 events.ScheduleEvent(EVENT_FROSTWYRM_WATERFALL_DOOR, 5s);
916 break;
917 case BOSS_THADDIUS:
919 {
920 go->SetGoState(GO_STATE_ACTIVE);
921 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
922 }
924 {
925 go->SetGoState(GO_STATE_ACTIVE);
926 }
928 {
929 go->SetGoState(GO_STATE_ACTIVE);
930 }
931 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
932 break;
933 case BOSS_HORSEMAN:
935 {
936 go->SetGoState(GO_STATE_ACTIVE);
937 go->RemoveGameObjectFlag(GO_FLAG_NOT_SELECTABLE);
938 }
940 {
941 go->SetGoState(GO_STATE_ACTIVE);
942 }
944 {
945 go->SetGoState(GO_STATE_ACTIVE);
946 }
947 events.ScheduleEvent(EVENT_KELTHUZAD_WING_TAUNT, 6s);
948 break;
949 default:
950 break;
951 }
952 }
953 return true;
954 }
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:215
virtual void AttackStart(Unit *)
Definition: UnitAI.cpp:28
void SetInCombatWithZone()
Definition: Creature.cpp:2723
void Respawn(bool force=false)
Definition: Creature.cpp:2005
void GetHomePosition(float &x, float &y, float &z, float &ori) const
Definition: Creature.h:330
void SetPosition(float x, float y, float z, float o)
Definition: Creature.cpp:3055
CreatureAI * AI() const
Definition: Creature.h:135
Definition: GameObject.h:122
bool IsAlive() const
Definition: Unit.h:1808
bool IsInCombat() const
Definition: Unit.h:1688
virtual bool SetBossState(uint32 id, EncounterState state)
Definition: InstanceScript.cpp:317
void SaveToDB()
Definition: InstanceScript.cpp:41
void LoadGrid(float x, float y)
Definition: Map.cpp:494
GameObject * GetGameObject(ObjectGuid const guid)
Definition: Map.cpp:3298

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.

601 {
602 switch(id)
603 {
606 return;
608 faerlinaAchievement = false;
609 return;
611 thaddiusAchievement = false;
612 return;
614 loathebAchievement = false;
615 return;
617 sapphironAchievement = false;
618 return;
619 case DATA_DANCE_FAIL:
620 heiganAchievement = false;
621 return;
624 SaveToDB();
625 return;
628 return;
630 _hadThaddiusGreet = (data == 1);
631 default:
632 return;
633 }
634 }
@ 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:167

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.

957 {
958 if (_speakTimer)
959 {
962 if (kel && lich)
963 {
964 _speakTimer += diff;
965 }
966 else
967 {
968 return;
969 }
970 if (_speakTimer > 10000 && _speakTimer < 20000)
971 {
972 kel->AI()->Talk(SAY_SAPP_DIALOG1);
973 _speakTimer = 20000;
974 }
975 else if (_speakTimer > 30000 && _speakTimer < 40000)
976 {
977 lich->AI()->Talk(SAY_SAPP_DIALOG2_LICH);
978 _speakTimer = 40000;
979 }
980 else if (_speakTimer > 54000 && _speakTimer < 60000)
981 {
982 kel->AI()->Talk(SAY_SAPP_DIALOG3);
983 _speakTimer = 60000;
984 }
985 else if (_speakTimer > 70000 && _speakTimer < 80000)
986 {
987 lich->AI()->Talk(SAY_SAPP_DIALOG4_LICH);
988 _speakTimer = 80000;
989 }
990 else if (_speakTimer > 92000 && _speakTimer < 100000)
991 {
992 kel->AI()->Talk(SAY_SAPP_DIALOG5);
993 _speakTimer = 100000;
994 }
995 else if (_speakTimer > 105000)
996 {
997 kel->AI()->Talk(SAY_SAPP_DIALOG6);
998 _speakTimer = 0;
1000 {
1001 go->SetGoState(GO_STATE_ACTIVE);
1002 }
1003 }
1004 }
1005
1006 // And They would all
1007 if (_horsemanTimer)
1008 {
1009 _horsemanTimer += diff;
1010 }
1011
1013 {
1014 if (_screamTimer <= diff)
1015 {
1017 _screamTimer = (2 * MINUTE + urand(0, 30)) * IN_MILLISECONDS;
1018 }
1019 else
1020 {
1021 _screamTimer -= diff;
1022 }
1023 }
1024
1025 events.Update(diff);
1026 switch (events.ExecuteEvent())
1027 {
1029 // Loads Kel'Thuzad's grid. We need this as he must be active in order for his texts to work.
1030 instance->LoadGrid(3749.67f, -5114.06f);
1031 if (Creature* kelthuzad = instance->GetCreature(_kelthuzadGUID))
1032 {
1033 kelthuzad->AI()->Talk(_currentWingTaunt);
1034 }
1036 break;
1039 {
1040 go->SetGoState(GO_STATE_ACTIVE);
1041 }
1042 break;
1043 }
1044 }
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:50
void PlayDirectSoundToMap(uint32 soundId, uint32 zoneId=0)
Definition: Map.cpp:3712

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.

1108 {
1109 data << immortalAchievement;
1110 }

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