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

Public Member Functions

 instance_blackwing_lair (Map *map)
 
void Initialize () override
 
void OnCreatureCreate (Creature *creature) override
 
void OnGameObjectCreate (GameObject *go) override
 
void OnGameObjectRemove (GameObject *go) override
 
uint32 GetData (uint32 data) const override
 
bool SetBossState (uint32 type, EncounterState state) override
 
void SetData (uint32 type, uint32 data) override
 
ObjectGuid GetGuidData (uint32 type) const override
 
bool CheckRequiredBosses (uint32 bossId, Player const *player) const override
 
void OnUnitDeath (Unit *unit) override
 
void Update (uint32 diff) 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 Load (char const *data)
 
virtual void CreatureLooted (Creature *, LootType)
 
virtual std::string GetSaveData ()
 
void SaveToDB ()
 
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 OnPlayerLeave (Player *)
 
virtual void OnPlayerAreaUpdate (Player *, uint32, uint32)
 
virtual void OnPlayerInWaterStateUpdate (Player *, bool)
 
void HandleGameObject (ObjectGuid guid, bool open, GameObject *go=nullptr)
 Open or close a GameObject by GUID.
 
void HandleGameObject (uint32 type, bool open)
 Open or close a GameObject registered via LoadObjectData.
 
void DoUseDoorOrButton (ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
 
void DoRespawnGameObject (ObjectGuid guid, uint32 timeToDespawn=MINUTE)
 
void DoRespawnGameObject (uint32 type)
 
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 ()
 
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)
 
bool _SkipCheckRequiredBosses (Player const *player=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 (WorldPackets::WorldState::InitWorldStates &)
 
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)
 
void StoreGameObjectState (ObjectGuid::LowType spawnId, uint8 state)
 
uint8 GetStoredGameObjectState (ObjectGuid::LowType spawnId) const
 
void LoadInstanceSavedGameobjectStateData ()
 
bool IsBossDone (uint32 bossId) const
 
bool AllBossesDone () const
 
bool AllBossesDone (std::initializer_list< uint32 > bossIds) const
 
TeamId GetTeamIdInInstance () const
 
void SetTeamIdInInstance (TeamId teamId)
 
bool IsTwoFactionInstance () const
 
- 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 OnCreatureEvade (Creature *)
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Protected Attributes

ObjectGuid razorgoreGUID
 
ObjectGuid nefarianGUID
 
ObjectGuid nefarianDoorGUID
 
uint8 EggCount
 
uint32 EggEvent
 
GuidList EggList
 
GuidList guardList
 
std::array< uint32, 2 > addsCount
 
uint32 NefarianLeftTunnel
 
uint32 NefarianRightTunnel
 
EventMap _events
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- Public Attributes inherited from InstanceScript
Mapinstance
 
TaskScheduler scheduler
 
- 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 LoadSummonData (ObjectData const *data)
 
void SetSummoner (Creature *creature)
 
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)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
void WritePersistentData (std::ostringstream &data)
 

Detailed Description

Constructor & Destructor Documentation

◆ instance_blackwing_lair()

instance_blackwing_lair::instance_blackwing_lair ( Map map)
inline
77 : InstanceScript(map)
78 {
83 }
#define DataHeader
Definition blackrock_depths.h:23
uint32 const EncounterCount
Definition blackrock_spire.h:23
Definition InstanceScript.h:143
void SetBossNumber(uint32 number)
Definition InstanceScript.h:308
void LoadDoorData(DoorData const *data)
Definition InstanceScript.cpp:182
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:159
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
Definition InstanceScript.cpp:194
ObjectData const creatureData[]
Definition instance_blackwing_lair.cpp:45
ObjectData const objectData[]
Definition instance_blackwing_lair.cpp:54
DoorData const doorData[]
Definition instance_blackwing_lair.cpp:33

References creatureData, DataHeader, doorData, EncounterCount, InstanceScript::LoadDoorData(), InstanceScript::LoadObjectData(), objectData, InstanceScript::SetBossNumber(), and InstanceScript::SetHeaders().

Member Function Documentation

◆ CheckRequiredBosses()

bool instance_blackwing_lair::CheckRequiredBosses ( uint32  bossId,
Player const *  player 
) const
inlineoverridevirtual

Reimplemented from InstanceScript.

293 {
294 if (_SkipCheckRequiredBosses(player))
295 return true;
296
297 switch (bossId)
298 {
301 return false;
302 break;
303 default:
304 break;
305 }
306
307 return true;
308 }
@ DONE
Definition InstanceScript.h:61
@ DATA_VAELASTRAZ_THE_CORRUPT
Definition blackwing_lair.h:32
@ DATA_BROODLORD_LASHLAYER
Definition blackwing_lair.h:33
EncounterState GetBossState(uint32 id) const
Definition InstanceScript.h:252
bool _SkipCheckRequiredBosses(Player const *player=nullptr) const
Definition InstanceScript.cpp:391

References InstanceScript::_SkipCheckRequiredBosses(), DATA_BROODLORD_LASHLAYER, DATA_VAELASTRAZ_THE_CORRUPT, DONE, and InstanceScript::GetBossState().

◆ GetData()

uint32 instance_blackwing_lair::GetData ( uint32  data) const
inlineoverridevirtual

Reimplemented from ZoneScript.

168 {
169 switch (data)
170 {
172 return NefarianLeftTunnel;
174 return NefarianRightTunnel;
175 case DATA_EGG_EVENT:
176 return EggEvent;
177 default:
178 break;
179 }
180
181 return 0;
182 }
@ DATA_EGG_EVENT
Definition blackwing_lair.h:112
@ DATA_NEFARIAN_RIGHT_TUNNEL
Definition blackwing_lair.h:119
@ DATA_NEFARIAN_LEFT_TUNNEL
Definition blackwing_lair.h:118
uint32 EggEvent
Definition instance_blackwing_lair.cpp:416
uint32 NefarianLeftTunnel
Definition instance_blackwing_lair.cpp:422
uint32 NefarianRightTunnel
Definition instance_blackwing_lair.cpp:423

References DATA_EGG_EVENT, DATA_NEFARIAN_LEFT_TUNNEL, DATA_NEFARIAN_RIGHT_TUNNEL, EggEvent, NefarianLeftTunnel, and NefarianRightTunnel.

◆ GetGuidData()

ObjectGuid instance_blackwing_lair::GetGuidData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

280 {
281 switch (type)
282 {
284 return razorgoreGUID;
285 default:
286 break;
287 }
288
289 return ObjectGuid::Empty;
290 }
@ DATA_RAZORGORE_THE_UNTAMED
Definition blackwing_lair.h:31
static ObjectGuid const Empty
Definition ObjectGuid.h:120
ObjectGuid razorgoreGUID
Definition instance_blackwing_lair.cpp:410

References DATA_RAZORGORE_THE_UNTAMED, ObjectGuid::Empty, and razorgoreGUID.

◆ Initialize()

void instance_blackwing_lair::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

86 {
87 // Razorgore
88 EggCount = 0;
89 EggEvent = 0;
92 addsCount.fill(0);
93 }
uint8 EggCount
Definition instance_blackwing_lair.cpp:415
std::array< uint32, 2 > addsCount
Definition instance_blackwing_lair.cpp:419

References addsCount, EggCount, EggEvent, NefarianLeftTunnel, and NefarianRightTunnel.

◆ OnCreatureCreate()

void instance_blackwing_lair::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

96 {
97 // This is required because the tempspawn at Vael overwrites his GUID.
98 if (creature->GetEntry() == NPC_VICTOR_NEFARIUS && creature->ToTempSummon())
99 return;
100
102
103 switch (creature->GetEntry())
104 {
105 case NPC_RAZORGORE:
106 razorgoreGUID = creature->GetGUID();
107 break;
109 ++addsCount[0];
111 if (CreatureAI* razorAI = razor->AI())
112 razorAI->JustSummoned(creature);
113 break;
116 ++addsCount[1];
118 if (CreatureAI* razorAI = razor->AI())
119 razorAI->JustSummoned(creature);
120 break;
122 guardList.push_back(creature->GetGUID());
123 break;
124 case NPC_NEFARIAN:
125 nefarianGUID = creature->GetGUID();
126 break;
132 case NPC_RED_DRAKONID:
134 if (CreatureAI* nefariusAI = nefarius->AI())
135 nefariusAI->JustSummoned(creature);
136 break;
137 default:
138 break;
139 }
140 }
@ DATA_LORD_VICTOR_NEFARIUS
Definition blackwing_lair.h:41
@ NPC_RED_DRAKONID
Definition blackwing_lair.h:79
@ NPC_VICTOR_NEFARIUS
Definition blackwing_lair.h:67
@ NPC_BLACKWING_DRAGON
Definition blackwing_lair.h:56
@ NPC_CHROMATIC_DRAKONID
Definition blackwing_lair.h:82
@ NPC_BLUE_DRAKONID
Definition blackwing_lair.h:78
@ NPC_BLACKWING_GUARDSMAN
Definition blackwing_lair.h:53
@ NPC_BLACKWING_MAGE
Definition blackwing_lair.h:60
@ NPC_GREEN_DRAKONID
Definition blackwing_lair.h:80
@ NPC_BRONZE_DRAKONID
Definition blackwing_lair.h:77
@ NPC_BLACK_DRAKONID
Definition blackwing_lair.h:81
@ NPC_RAZORGORE
Definition blackwing_lair.h:55
@ NPC_BLACKWING_LEGIONAIRE
Definition blackwing_lair.h:58
@ NPC_NEFARIAN
Definition blackwing_lair.h:68
Definition CreatureAI.h:69
Definition Creature.h:47
void OnCreatureCreate(Creature *creature) override
Definition InstanceScript.cpp:71
Creature * GetCreature(uint32 type)
Definition InstanceScript.cpp:116
Map * instance
Definition InstanceScript.h:149
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2349
uint32 GetEntry() const
Definition Object.h:117
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
TempSummon * ToTempSummon()
Definition Unit.h:731
GuidList guardList
Definition instance_blackwing_lair.cpp:418
ObjectGuid nefarianGUID
Definition instance_blackwing_lair.cpp:411

References addsCount, DATA_LORD_VICTOR_NEFARIUS, Map::GetCreature(), InstanceScript::GetCreature(), Object::GetEntry(), Object::GetGUID(), guardList, InstanceScript::instance, nefarianGUID, NPC_BLACK_DRAKONID, NPC_BLACKWING_DRAGON, NPC_BLACKWING_GUARDSMAN, NPC_BLACKWING_LEGIONAIRE, NPC_BLACKWING_MAGE, NPC_BLUE_DRAKONID, NPC_BRONZE_DRAKONID, NPC_CHROMATIC_DRAKONID, NPC_GREEN_DRAKONID, NPC_NEFARIAN, NPC_RAZORGORE, NPC_RED_DRAKONID, NPC_VICTOR_NEFARIUS, InstanceScript::OnCreatureCreate(), razorgoreGUID, and Unit::ToTempSummon().

◆ OnGameObjectCreate()

void instance_blackwing_lair::OnGameObjectCreate ( GameObject go)
inlineoverridevirtual

Reimplemented from ZoneScript.

143 {
145
146 switch (go->GetEntry())
147 {
150 go->SetPhaseMask(2, true);
151 else
152 EggList.push_back(go->GetGUID());
153 break;
154 default:
155 break;
156 }
157 }
@ GO_BLACK_DRAGON_EGG
Definition blackwing_lair.h:88
@ DATA_FIREMAW
Definition blackwing_lair.h:34
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition GameObject.cpp:2616
void OnGameObjectCreate(GameObject *go) override
Definition InstanceScript.cpp:86
GuidList EggList
Definition instance_blackwing_lair.cpp:417

References DATA_FIREMAW, DONE, EggList, InstanceScript::GetBossState(), Object::GetEntry(), Object::GetGUID(), GO_BLACK_DRAGON_EGG, InstanceScript::OnGameObjectCreate(), and GameObject::SetPhaseMask().

◆ OnGameObjectRemove()

void instance_blackwing_lair::OnGameObjectRemove ( GameObject go)
inlineoverridevirtual

Reimplemented from ZoneScript.

160 {
162
163 if (go->GetEntry() == GO_BLACK_DRAGON_EGG)
164 EggList.remove(go->GetGUID());
165 }
void OnGameObjectRemove(GameObject *go) override
Definition InstanceScript.cpp:93

References EggList, Object::GetEntry(), Object::GetGUID(), GO_BLACK_DRAGON_EGG, and InstanceScript::OnGameObjectRemove().

◆ OnUnitDeath()

void instance_blackwing_lair::OnUnitDeath ( Unit unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

311 {
312 switch (unit->GetEntry())
313 {
315 --addsCount[0];
318 break;
321 --addsCount[1];
324 break;
325 default:
326 break;
327 }
328 }
@ EVENT_RAZOR_SPAWN
Definition blackwing_lair.h:103
bool HasTimeUntilEvent(EventId eventId) const
Definition EventMap.cpp:209
void ScheduleEvent(EventId eventId, Milliseconds time, GroupIndex group=0u, PhaseIndex phase=0u)
Definition EventMap.cpp:48
EventMap _events
Definition instance_blackwing_lair.cpp:426

References _events, addsCount, DONE, EggEvent, EVENT_RAZOR_SPAWN, Object::GetEntry(), EventMap::HasTimeUntilEvent(), NPC_BLACKWING_DRAGON, NPC_BLACKWING_LEGIONAIRE, NPC_BLACKWING_MAGE, and EventMap::ScheduleEvent().

◆ ReadSaveDataMore()

void instance_blackwing_lair::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

399 {
400 data >> NefarianLeftTunnel;
401 data >> NefarianRightTunnel;
402 }

References NefarianLeftTunnel, and NefarianRightTunnel.

◆ SetBossState()

bool instance_blackwing_lair::SetBossState ( uint32  type,
EncounterState  state 
)
inlineoverridevirtual
Todo:
: after dynamic spawns

Reimplemented from InstanceScript.

185 {
186 if (!InstanceScript::SetBossState(type, state))
187 return false;
188
189 switch (type)
190 {
192 if (state == DONE)
193 {
194 for (ObjectGuid const& guid : EggList)
195 {
196 // Eggs should be destroyed instead
198 if (GameObject* egg = instance->GetGameObject(guid))
199 egg->SetPhaseMask(2, true);
200 }
201 }
202 break;
203 case DATA_NEFARIAN:
204 switch (state)
205 {
206 case FAIL:
208 [[fallthrough]];
209 case NOT_STARTED:
210 if (Creature* nefarian = instance->GetCreature(nefarianGUID))
211 nefarian->DespawnOrUnsummon();
212 break;
213 default:
214 break;
215 }
216 break;
217 }
218 return true;
219 }
@ FAIL
Definition InstanceScript.h:60
@ NOT_STARTED
Definition InstanceScript.h:58
@ EVENT_RESPAWN_NEFARIUS
Definition blackwing_lair.h:105
@ DATA_NEFARIAN
Definition blackwing_lair.h:38
Definition GameObject.h:120
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:396
GameObject * GetGameObject(ObjectGuid const &guid)
Definition Map.cpp:2354
Definition ObjectGuid.h:118

References _events, DATA_NEFARIAN, DATA_RAZORGORE_THE_UNTAMED, DONE, EggList, EVENT_RESPAWN_NEFARIUS, FAIL, Map::GetCreature(), Map::GetGameObject(), InstanceScript::instance, nefarianGUID, NOT_STARTED, EventMap::ScheduleEvent(), and InstanceScript::SetBossState().

◆ SetData()

void instance_blackwing_lair::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

222 {
223 if (type == DATA_EGG_EVENT)
224 {
225 switch (data)
226 {
227 case DONE:
228 EggEvent = data;
229 break;
230 case FAIL:
232 break;
233 case IN_PROGRESS:
235 EggEvent = data;
236 EggCount = 0;
237 addsCount.fill(0);
238 break;
239 case NOT_STARTED:
241 EggEvent = data;
242 EggCount = 0;
243 addsCount.fill(0);
244
245 for (ObjectGuid const& guid : EggList)
246 DoRespawnGameObject(guid, 0);
247
249
250 for (ObjectGuid const& guid : guardList)
251 DoRespawnCreature(guid);
252
253 break;
254 case SPECIAL:
255 if (EggEvent == NOT_STARTED)
257 if (++EggCount >= EggList.size())
258 {
260 {
262 razor->RemoveAurasDueToSpell(19832); // MindControl
264 }
267 }
268 break;
269 }
270 }
271
272 if (type == DATA_NEFARIAN_LEFT_TUNNEL)
273 NefarianLeftTunnel = data;
274
275 if (type == DATA_NEFARIAN_RIGHT_TUNNEL)
276 NefarianRightTunnel = data;
277 }
@ IN_PROGRESS
Definition InstanceScript.h:59
@ SPECIAL
Definition InstanceScript.h:62
@ EVENT_RAZOR_PHASE_TWO
Definition blackwing_lair.h:104
@ DATA_GRETHOK
Definition blackwing_lair.h:42
void CancelEvent(EventId eventId)
Definition EventMap.cpp:160
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell)
Definition InstanceScript.cpp:694
void DoRespawnCreature(ObjectGuid guid, bool force=false)
Definition InstanceScript.cpp:616
void DoRespawnGameObject(ObjectGuid guid, uint32 timeToDespawn=MINUTE)
Definition InstanceScript.cpp:584
void SetData(uint32 type, uint32 data) override
Definition instance_blackwing_lair.cpp:221

References _events, addsCount, EventMap::CancelEvent(), DATA_EGG_EVENT, DATA_GRETHOK, DATA_NEFARIAN_LEFT_TUNNEL, DATA_NEFARIAN_RIGHT_TUNNEL, DONE, InstanceScript::DoRemoveAurasDueToSpellOnPlayers(), InstanceScript::DoRespawnCreature(), InstanceScript::DoRespawnGameObject(), EggCount, EggEvent, EggList, EVENT_RAZOR_PHASE_TWO, EVENT_RAZOR_SPAWN, FAIL, Map::GetCreature(), guardList, IN_PROGRESS, InstanceScript::instance, NefarianLeftTunnel, NefarianRightTunnel, NOT_STARTED, razorgoreGUID, EventMap::ScheduleEvent(), SetData(), and SPECIAL.

Referenced by SetData().

◆ Update()

void instance_blackwing_lair::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

331 {
332 if (_events.Empty())
333 return;
334
335 _events.Update(diff);
336
337 while (uint32 eventId = _events.ExecuteEvent())
338 {
339 switch (eventId)
340 {
342 if (EggEvent == IN_PROGRESS)
343 {
344 bool spawnMoreAdds = true;
345 for (uint8 i = urand(2, 5); i > 0; --i)
346 {
347 uint32 mobEntry = Entry[urand(0, 2)];
348 uint32 dragonkinsCount = addsCount[0];
349 uint32 orcsCount = addsCount[1];
350
351 // If more than 12 dragonkins...
352 if (dragonkinsCount >= 12)
353 {
354 //... and more than 40 orcs - stop spawning more adds.
355 if (orcsCount >= 40)
356 {
357 spawnMoreAdds = false;
358 break;
359 }
360 //... - stop spawning them.
361 else if (mobEntry == NPC_BLACKWING_DRAGON)
362 {
363 continue;
364 }
365 }
366 // If more than 40 orcs - stop spawning them.
367 else if (orcsCount >= 40 && mobEntry != NPC_BLACKWING_DRAGON)
368 {
369 continue;
370 }
371
372 if (Creature* summon = instance->SummonCreature(mobEntry, SummonPosition[urand(0, 7)]))
373 summon->AI()->DoZoneInCombat();
374 }
375
376 if (spawnMoreAdds)
378 }
379 break;
383 razor->AI()->DoAction(ACTION_PHASE_TWO);
384 break;
387 {
388 nefarius->SetPhaseMask(1, true);
389 nefarius->setActive(true);
390 nefarius->Respawn();
391 nefarius->GetMotionMaster()->MoveTargetedHome();
392 }
393 break;
394 }
395 }
396 }
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
@ ACTION_PHASE_TWO
Definition blackwing_lair.h:111
void Update(uint32 time)
Definition EventMap.h:67
bool Empty() const
Definition EventMap.h:95
EventId ExecuteEvent()
Definition EventMap.cpp:86
TempSummon * SummonCreature(uint32 entry, Position const &pos, SummonPropertiesEntry const *properties=nullptr, uint32 duration=0, WorldObject *summoner=nullptr, uint32 spellId=0, uint32 vehId=0, bool visibleBySummonerOnly=false)
Definition Object.cpp:2187
Position const SummonPosition[8]
Definition instance_blackwing_lair.cpp:61
uint32 const Entry[3]
Definition instance_blackwing_lair.cpp:73

References _events, ACTION_PHASE_TWO, addsCount, EventMap::CancelEvent(), DATA_LORD_VICTOR_NEFARIUS, EggEvent, EventMap::Empty(), Entry, EVENT_RAZOR_PHASE_TWO, EVENT_RAZOR_SPAWN, EVENT_RESPAWN_NEFARIUS, EventMap::ExecuteEvent(), Map::GetCreature(), InstanceScript::GetCreature(), IN_PROGRESS, InstanceScript::instance, NPC_BLACKWING_DRAGON, razorgoreGUID, EventMap::ScheduleEvent(), Map::SummonCreature(), SummonPosition, EventMap::Update(), and urand().

◆ WriteSaveDataMore()

void instance_blackwing_lair::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

405 {
406 data << NefarianLeftTunnel << ' ' << NefarianRightTunnel;
407 }

References NefarianLeftTunnel, and NefarianRightTunnel.

Member Data Documentation

◆ _events

EventMap instance_blackwing_lair::_events
protected

◆ addsCount

std::array<uint32, 2> instance_blackwing_lair::addsCount
protected

◆ EggCount

uint8 instance_blackwing_lair::EggCount
protected

Referenced by Initialize(), and SetData().

◆ EggEvent

uint32 instance_blackwing_lair::EggEvent
protected

◆ EggList

GuidList instance_blackwing_lair::EggList
protected

◆ guardList

GuidList instance_blackwing_lair::guardList
protected

Referenced by OnCreatureCreate(), and SetData().

◆ nefarianDoorGUID

ObjectGuid instance_blackwing_lair::nefarianDoorGUID
protected

◆ nefarianGUID

ObjectGuid instance_blackwing_lair::nefarianGUID
protected

Referenced by OnCreatureCreate(), and SetBossState().

◆ NefarianLeftTunnel

uint32 instance_blackwing_lair::NefarianLeftTunnel
protected

◆ NefarianRightTunnel

uint32 instance_blackwing_lair::NefarianRightTunnel
protected

◆ razorgoreGUID

ObjectGuid instance_blackwing_lair::razorgoreGUID
protected

The documentation for this struct was generated from the following file: