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

Public Member Functions

 instance_blackwing_lair_InstanceMapScript (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 CheckRequiredBosses (uint32 bossId, Player const *) const override
 
bool SetBossState (uint32 type, EncounterState state) override
 
void SetData (uint32 type, uint32 data) override
 
ObjectGuid GetGuidData (uint32 type) 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)
 
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)
 
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_InstanceMapScript()

instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::instance_blackwing_lair_InstanceMapScript ( Map map)
inline
82 : InstanceScript(map)
83 {
88 }
#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:296
void LoadDoorData(DoorData const *data)
Definition InstanceScript.cpp:176
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:153
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
Definition InstanceScript.cpp:188
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::instance_blackwing_lair_InstanceMapScript::CheckRequiredBosses ( uint32  bossId,
Player const *   
) const
inlineoverridevirtual

Reimplemented from InstanceScript.

208 {
209 switch (bossId)
210 {
213 return false;
214 break;
215 default:
216 break;
217 }
218
219 return true;
220 }
@ 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:242

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

◆ GetData()

uint32 instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::GetData ( uint32  data) const
inlineoverridevirtual

Reimplemented from ZoneScript.

191 {
192 switch (data)
193 {
195 return NefarianLeftTunnel;
197 return NefarianRightTunnel;
198 case DATA_EGG_EVENT:
199 return EggEvent;
200 default:
201 break;
202 }
203
204 return 0;
205 }
@ 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 NefarianRightTunnel
Definition instance_blackwing_lair.cpp:463
uint32 NefarianLeftTunnel
Definition instance_blackwing_lair.cpp:462
uint32 EggEvent
Definition instance_blackwing_lair.cpp:456

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

◆ GetGuidData()

ObjectGuid instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::GetGuidData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

330 {
331 switch (type)
332 {
334 return razorgoreGUID;
335 default:
336 break;
337 }
338
339 return ObjectGuid::Empty;
340 }
@ DATA_RAZORGORE_THE_UNTAMED
Definition blackwing_lair.h:31
static ObjectGuid const Empty
Definition ObjectGuid.h:120
ObjectGuid razorgoreGUID
Definition instance_blackwing_lair.cpp:450

References DATA_RAZORGORE_THE_UNTAMED, ObjectGuid::Empty, and razorgoreGUID.

◆ Initialize()

void instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

91 {
92 // Razorgore
93 EggCount = 0;
94 EggEvent = 0;
97 addsCount.fill(0);
98 }
uint8 EggCount
Definition instance_blackwing_lair.cpp:455
std::array< uint32, 2 > addsCount
Definition instance_blackwing_lair.cpp:459

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

◆ OnCreatureCreate()

void instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

101 {
102 // This is required because the tempspawn at Vael overwrites his GUID.
103 if (creature->GetEntry() == NPC_VICTOR_NEFARIUS && creature->ToTempSummon())
104 {
105 return;
106 }
107
109
110 switch (creature->GetEntry())
111 {
112 case NPC_RAZORGORE:
113 razorgoreGUID = creature->GetGUID();
114 break;
116 ++addsCount[0];
118 {
119 if (CreatureAI* razorAI = razor->AI())
120 {
121 razorAI->JustSummoned(creature);
122 }
123 }
124 break;
127 ++addsCount[1];
129 {
130 if (CreatureAI* razorAI = razor->AI())
131 {
132 razorAI->JustSummoned(creature);
133 }
134 }
135 break;
137 guardList.push_back(creature->GetGUID());
138 break;
139 case NPC_NEFARIAN:
140 nefarianGUID = creature->GetGUID();
141 break;
147 case NPC_RED_DRAKONID:
149 {
150 if (CreatureAI* nefariusAI = nefarius->AI())
151 {
152 nefariusAI->JustSummoned(creature);
153 }
154 }
155 break;
156 default:
157 break;
158 }
159 }
@ 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:70
Definition Creature.h:43
void OnCreatureCreate(Creature *creature) override
Definition InstanceScript.cpp:70
Creature * GetCreature(uint32 type)
Definition InstanceScript.cpp:115
Map * instance
Definition InstanceScript.h:149
Creature * GetCreature(ObjectGuid const guid)
Definition Map.cpp:2498
uint32 GetEntry() const
Definition Object.h:115
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112
TempSummon * ToTempSummon()
Definition Unit.h:702
GuidList guardList
Definition instance_blackwing_lair.cpp:458
ObjectGuid nefarianGUID
Definition instance_blackwing_lair.cpp:451

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::instance_blackwing_lair_InstanceMapScript::OnGameObjectCreate ( GameObject go)
inlineoverridevirtual

Reimplemented from ZoneScript.

162 {
164
165 switch (go->GetEntry())
166 {
169 {
170 go->SetPhaseMask(2, true);
171 }
172 else
173 {
174 EggList.push_back(go->GetGUID());
175 }
176 break;
177 default:
178 break;
179 }
180 }
@ 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:2581
void OnGameObjectCreate(GameObject *go) override
Definition InstanceScript.cpp:85
GuidList EggList
Definition instance_blackwing_lair.cpp:457

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::instance_blackwing_lair_InstanceMapScript::OnGameObjectRemove ( GameObject go)
inlineoverridevirtual

Reimplemented from ZoneScript.

183 {
185
186 if (go->GetEntry() == GO_BLACK_DRAGON_EGG)
187 EggList.remove(go->GetGUID());
188 }
void OnGameObjectRemove(GameObject *go) override
Definition InstanceScript.cpp:92

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

◆ OnUnitDeath()

void instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::OnUnitDeath ( Unit unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

343 {
344 switch (unit->GetEntry())
345 {
347 --addsCount[0];
348 if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
349 {
351 }
352 break;
355 --addsCount[1];
356 if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
357 {
359 }
360 break;
361 default:
362 break;
363 }
364 }
@ EVENT_RAZOR_SPAWN
Definition blackwing_lair.h:103
void ScheduleEvent(uint32 eventId, uint32 time, uint32 group=0, uint32 phase=0)
Definition EventMap.cpp:56
Milliseconds GetTimeUntilEvent(uint32 eventId) const
Definition EventMap.cpp:258
EventMap _events
Definition instance_blackwing_lair.cpp:466

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

◆ ReadSaveDataMore()

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

Reimplemented from InstanceScript.

439 {
440 data >> NefarianLeftTunnel;
441 data >> NefarianRightTunnel;
442 }

References NefarianLeftTunnel, and NefarianRightTunnel.

◆ SetBossState()

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

Reimplemented from InstanceScript.

223 {
224 if (!InstanceScript::SetBossState(type, state))
225 return false;
226
227 switch (type)
228 {
230 if (state == DONE)
231 {
232 for (ObjectGuid const& guid : EggList)
233 {
234 // Eggs should be destroyed instead
236 if (GameObject* egg = instance->GetGameObject(guid))
237 {
238 egg->SetPhaseMask(2, true);
239 }
240 }
241 }
242 break;
243 case DATA_NEFARIAN:
244 switch (state)
245 {
246 case FAIL:
248 [[fallthrough]];
249 case NOT_STARTED:
250 if (Creature* nefarian = instance->GetCreature(nefarianGUID))
251 {
252 nefarian->DespawnOrUnsummon();
253 }
254 break;
255 default:
256 break;
257 }
258 break;
259 }
260 return true;
261 }
@ 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:385
GameObject * GetGameObject(ObjectGuid const guid)
Definition Map.cpp:2503
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::instance_blackwing_lair_InstanceMapScript::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

264 {
265 if (type == DATA_EGG_EVENT)
266 {
267 switch (data)
268 {
269 case DONE:
270 EggEvent = data;
271 break;
272 case FAIL:
274 break;
275 case IN_PROGRESS:
277 EggEvent = data;
278 EggCount = 0;
279 addsCount.fill(0);
280 break;
281 case NOT_STARTED:
283 EggEvent = data;
284 EggCount = 0;
285 addsCount.fill(0);
286
287 for (ObjectGuid const& guid : EggList)
288 {
289 DoRespawnGameObject(guid, 0);
290 }
291
293
294 for (ObjectGuid const& guid : guardList)
295 {
296 DoRespawnCreature(guid);
297 }
298
299 break;
300 case SPECIAL:
301 if (EggEvent == NOT_STARTED)
303 if (++EggCount >= EggList.size())
304 {
306 {
308 razor->RemoveAurasDueToSpell(19832); // MindControl
310 }
313 }
314 break;
315 }
316 }
317
318 if (type == DATA_NEFARIAN_LEFT_TUNNEL)
319 {
320 NefarianLeftTunnel = data;
321 }
322
323 if (type == DATA_NEFARIAN_RIGHT_TUNNEL)
324 {
325 NefarianRightTunnel = data;
326 }
327 }
@ 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(uint32 eventId)
Definition EventMap.cpp:190
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell)
Definition InstanceScript.cpp:683
void DoRespawnCreature(ObjectGuid guid, bool force=false)
Definition InstanceScript.cpp:605
void DoRespawnGameObject(ObjectGuid guid, uint32 timeToDespawn=MINUTE)
Definition InstanceScript.cpp:573
void SetData(uint32 type, uint32 data) override
Definition instance_blackwing_lair.cpp:263

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::instance_blackwing_lair_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

367 {
368 if (_events.Empty())
369 return;
370
371 _events.Update(diff);
372
373 while (uint32 eventId = _events.ExecuteEvent())
374 {
375 switch (eventId)
376 {
378 if (EggEvent == IN_PROGRESS)
379 {
380 bool spawnMoreAdds = true;
381 for (uint8 i = urand(2, 5); i > 0; --i)
382 {
383 uint32 mobEntry = Entry[urand(0, 2)];
384 uint32 dragonkinsCount = addsCount[0];
385 uint32 orcsCount = addsCount[1];
386
387 // If more than 12 dragonkins...
388 if (dragonkinsCount >= 12)
389 {
390 //... and more than 40 orcs - stop spawning more adds.
391 if (orcsCount >= 40)
392 {
393 spawnMoreAdds = false;
394 break;
395 }
396 //... - stop spawning them.
397 else if (mobEntry == NPC_BLACKWING_DRAGON)
398 {
399 continue;
400 }
401 }
402 // If more than 40 orcs - stop spawning them.
403 else if (orcsCount >= 40 && mobEntry != NPC_BLACKWING_DRAGON)
404 {
405 continue;
406 }
407
408 if (Creature* summon = instance->SummonCreature(mobEntry, SummonPosition[urand(0, 7)]))
409 {
410 summon->AI()->DoZoneInCombat();
411 }
412 }
413
414 if (spawnMoreAdds)
415 {
417 }
418 }
419 break;
423 razor->AI()->DoAction(ACTION_PHASE_TWO);
424 break;
427 {
428 nefarius->SetPhaseMask(1, true);
429 nefarius->setActive(true);
430 nefarius->Respawn();
431 nefarius->GetMotionMaster()->MoveTargetedHome();
432 }
433 break;
434 }
435 }
436 }
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
uint32 ExecuteEvent()
Definition EventMap.cpp:114
void Update(uint32 time)
Definition EventMap.h:54
bool Empty() const
Definition EventMap.h:96
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:2174
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::instance_blackwing_lair_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

445 {
446 data << NefarianLeftTunnel << ' ' << NefarianRightTunnel;
447 }

References NefarianLeftTunnel, and NefarianRightTunnel.

Member Data Documentation

◆ _events

EventMap instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::_events
protected

◆ addsCount

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

◆ EggCount

uint8 instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::EggCount
protected

Referenced by Initialize(), and SetData().

◆ EggEvent

uint32 instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::EggEvent
protected

◆ EggList

GuidList instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::EggList
protected

◆ guardList

GuidList instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::guardList
protected

Referenced by OnCreatureCreate(), and SetData().

◆ nefarianDoorGUID

ObjectGuid instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::nefarianDoorGUID
protected

◆ nefarianGUID

ObjectGuid instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::nefarianGUID
protected

Referenced by OnCreatureCreate(), and SetBossState().

◆ NefarianLeftTunnel

uint32 instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::NefarianLeftTunnel
protected

◆ NefarianRightTunnel

uint32 instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::NefarianRightTunnel
protected

◆ razorgoreGUID

ObjectGuid instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::razorgoreGUID
protected

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