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

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

instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::instance_blackwing_lair_InstanceMapScript ( Map map)
inline
79 : InstanceScript(map)
80 {
85 }
#define DataHeader
Definition: blackrock_depths.h:23
uint32 const EncounterCount
Definition: blackrock_spire.h:23
ObjectData const creatureData[]
Definition: instance_blackwing_lair.cpp:44
ObjectData const objectData[]
Definition: instance_blackwing_lair.cpp:52
DoorData const doorData[]
Definition: instance_blackwing_lair.cpp:32
Definition: InstanceScript.h:140
void SetBossNumber(uint32 number)
Definition: InstanceScript.h:265
void LoadDoorData(DoorData const *data)
Definition: InstanceScript.cpp:160
void SetHeaders(std::string const &dataHeaders)
Definition: InstanceScript.cpp:137
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
Definition: InstanceScript.cpp:172

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.

205 {
206 switch (bossId)
207 {
210 return false;
211 break;
212 default:
213 break;
214 }
215
216 return true;
217 }
@ DONE
Definition: InstanceScript.h:59
@ 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:230

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.

188 {
189 switch (data)
190 {
192 return NefarianLeftTunnel;
194 return NefarianRightTunnel;
195 case DATA_EGG_EVENT:
196 return EggEvent;
197 default:
198 break;
199 }
200
201 return 0;
202 }
@ 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:460
uint32 NefarianLeftTunnel
Definition: instance_blackwing_lair.cpp:459
uint32 EggEvent
Definition: instance_blackwing_lair.cpp:453

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 InstanceScript.

327 {
328 switch (type)
329 {
331 return razorgoreGUID;
332 default:
333 break;
334 }
335
336 return ObjectGuid::Empty;
337 }
@ DATA_RAZORGORE_THE_UNTAMED
Definition: blackwing_lair.h:31
static ObjectGuid const Empty
Definition: ObjectGuid.h:122
ObjectGuid razorgoreGUID
Definition: instance_blackwing_lair.cpp:447

References DATA_RAZORGORE_THE_UNTAMED, ObjectGuid::Empty, and razorgoreGUID.

◆ Initialize()

void instance_blackwing_lair::instance_blackwing_lair_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

88 {
89 // Razorgore
90 EggCount = 0;
91 EggEvent = 0;
94 addsCount.fill(0);
95 }
uint8 EggCount
Definition: instance_blackwing_lair.cpp:452
std::array< uint32, 2 > addsCount
Definition: instance_blackwing_lair.cpp:456

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

◆ OnCreatureCreate()

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

Reimplemented from InstanceScript.

98 {
99 // This is required because the tempspawn at Vael overwrites his GUID.
100 if (creature->GetEntry() == NPC_VICTOR_NEFARIUS && creature->ToTempSummon())
101 {
102 return;
103 }
104
106
107 switch (creature->GetEntry())
108 {
109 case NPC_RAZORGORE:
110 razorgoreGUID = creature->GetGUID();
111 break;
113 ++addsCount[0];
115 {
116 if (CreatureAI* razorAI = razor->AI())
117 {
118 razorAI->JustSummoned(creature);
119 }
120 }
121 break;
124 ++addsCount[1];
126 {
127 if (CreatureAI* razorAI = razor->AI())
128 {
129 razorAI->JustSummoned(creature);
130 }
131 }
132 break;
134 guardList.push_back(creature->GetGUID());
135 break;
136 case NPC_NEFARIAN:
137 nefarianGUID = creature->GetGUID();
138 break;
144 case NPC_RED_DRAKONID:
146 {
147 if (CreatureAI* nefariusAI = nefarius->AI())
148 {
149 nefariusAI->JustSummoned(creature);
150 }
151 }
152 break;
153 default:
154 break;
155 }
156 }
@ 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:46
uint32 GetEntry() const
Definition: Object.h:109
static ObjectGuid GetGUID(Object const *o)
Definition: Object.h:106
TempSummon * ToTempSummon()
Definition: Unit.h:2400
void OnCreatureCreate(Creature *creature) override
Definition: InstanceScript.cpp:58
Creature * GetCreature(uint32 type)
Definition: InstanceScript.cpp:99
Map * instance
Definition: InstanceScript.h:146
Creature * GetCreature(ObjectGuid const guid)
Definition: Map.cpp:3293
GuidList guardList
Definition: instance_blackwing_lair.cpp:455
ObjectGuid nefarianGUID
Definition: instance_blackwing_lair.cpp:448

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 InstanceScript.

159 {
161
162 switch (go->GetEntry())
163 {
166 {
167 go->SetPhaseMask(2, true);
168 }
169 else
170 {
171 EggList.push_back(go->GetGUID());
172 }
173 break;
174 default:
175 break;
176 }
177 }
@ 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:2641
void OnGameObjectCreate(GameObject *go) override
Definition: InstanceScript.cpp:70
GuidList EggList
Definition: instance_blackwing_lair.cpp:454

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 InstanceScript.

180 {
182
183 if (go->GetEntry() == GO_BLACK_DRAGON_EGG)
184 EggList.remove(go->GetGUID());
185 }
void OnGameObjectRemove(GameObject *go) override
Definition: InstanceScript.cpp:76

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.

340 {
341 switch (unit->GetEntry())
342 {
344 --addsCount[0];
345 if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
346 {
348 }
349 break;
352 --addsCount[1];
353 if (EggEvent != DONE && _events.GetTimeUntilEvent(EVENT_RAZOR_SPAWN) == Milliseconds::max())
354 {
356 }
357 break;
358 default:
359 break;
360 }
361 }
@ 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:463

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.

436 {
437 data >> NefarianLeftTunnel;
438 data >> NefarianRightTunnel;
439 }

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.

220 {
221 if (!InstanceScript::SetBossState(type, state))
222 return false;
223
224 switch (type)
225 {
227 if (state == DONE)
228 {
229 for (ObjectGuid const& guid : EggList)
230 {
231 // Eggs should be destroyed instead
233 if (GameObject* egg = instance->GetGameObject(guid))
234 {
235 egg->SetPhaseMask(2, true);
236 }
237 }
238 }
239 break;
240 case DATA_NEFARIAN:
241 switch (state)
242 {
243 case FAIL:
245 [[fallthrough]];
246 case NOT_STARTED:
247 if (Creature* nefarian = instance->GetCreature(nefarianGUID))
248 {
249 nefarian->DespawnOrUnsummon();
250 }
251 break;
252 default:
253 break;
254 }
255 break;
256 }
257 return true;
258 }
@ FAIL
Definition: InstanceScript.h:58
@ NOT_STARTED
Definition: InstanceScript.h:56
@ EVENT_RESPAWN_NEFARIUS
Definition: blackwing_lair.h:105
@ DATA_NEFARIAN
Definition: blackwing_lair.h:38
Definition: GameObject.h:122
Definition: ObjectGuid.h:120
virtual bool SetBossState(uint32 id, EncounterState state)
Definition: InstanceScript.cpp:317
GameObject * GetGameObject(ObjectGuid const guid)
Definition: Map.cpp:3298

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.

261 {
262 if (type == DATA_EGG_EVENT)
263 {
264 switch (data)
265 {
266 case DONE:
267 EggEvent = data;
268 break;
269 case FAIL:
271 break;
272 case IN_PROGRESS:
274 EggEvent = data;
275 EggCount = 0;
276 addsCount.fill(0);
277 break;
278 case NOT_STARTED:
280 EggEvent = data;
281 EggCount = 0;
282 addsCount.fill(0);
283
284 for (ObjectGuid const& guid : EggList)
285 {
286 DoRespawnGameObject(guid, 0);
287 }
288
290
291 for (ObjectGuid const& guid : guardList)
292 {
293 DoRespawnCreature(guid);
294 }
295
296 break;
297 case SPECIAL:
298 if (EggEvent == NOT_STARTED)
300 if (++EggCount >= EggList.size())
301 {
303 {
305 razor->RemoveAurasDueToSpell(19832); // MindControl
307 }
310 }
311 break;
312 }
313 }
314
315 if (type == DATA_NEFARIAN_LEFT_TUNNEL)
316 {
317 NefarianLeftTunnel = data;
318 }
319
320 if (type == DATA_NEFARIAN_RIGHT_TUNNEL)
321 {
322 NefarianRightTunnel = data;
323 }
324 }
@ IN_PROGRESS
Definition: InstanceScript.h:57
@ SPECIAL
Definition: InstanceScript.h:60
@ 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:587
void DoRespawnCreature(ObjectGuid guid, bool force=false)
Definition: InstanceScript.cpp:503
void DoRespawnGameObject(ObjectGuid guid, uint32 timeToDespawn=MINUTE)
Definition: InstanceScript.cpp:487
void SetData(uint32 type, uint32 data) override
Definition: instance_blackwing_lair.cpp:260

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.

364 {
365 if (_events.Empty())
366 return;
367
368 _events.Update(diff);
369
370 while (uint32 eventId = _events.ExecuteEvent())
371 {
372 switch (eventId)
373 {
375 if (EggEvent == IN_PROGRESS)
376 {
377 bool spawnMoreAdds = true;
378 for (uint8 i = urand(2, 5); i > 0; --i)
379 {
380 uint32 mobEntry = Entry[urand(0, 2)];
381 uint32 dragonkinsCount = addsCount[0];
382 uint32 orcsCount = addsCount[1];
383
384 // If more than 12 dragonkins...
385 if (dragonkinsCount >= 12)
386 {
387 //... and more than 40 orcs - stop spawning more adds.
388 if (orcsCount >= 40)
389 {
390 spawnMoreAdds = false;
391 break;
392 }
393 //... - stop spawning them.
394 else if (mobEntry == NPC_BLACKWING_DRAGON)
395 {
396 continue;
397 }
398 }
399 // If more than 40 orcs - stop spawning them.
400 else if (orcsCount >= 40 && mobEntry != NPC_BLACKWING_DRAGON)
401 {
402 continue;
403 }
404
405 if (Creature* summon = instance->SummonCreature(mobEntry, SummonPosition[urand(0, 7)]))
406 {
407 summon->AI()->DoZoneInCombat();
408 }
409 }
410
411 if (spawnMoreAdds)
412 {
414 }
415 }
416 break;
420 razor->AI()->DoAction(ACTION_PHASE_TWO);
421 break;
424 {
425 nefarius->SetPhaseMask(1, true);
426 nefarius->setActive(true);
427 nefarius->Respawn();
428 nefarius->GetMotionMaster()->MoveTargetedHome();
429 }
430 break;
431 }
432 }
433 }
std::uint8_t uint8
Definition: Define.h:110
std::uint32_t uint32
Definition: Define.h:108
uint32 urand(uint32 min, uint32 max)
Definition: Random.cpp:44
@ ACTION_PHASE_TWO
Definition: blackwing_lair.h:111
Position const SummonPosition[8]
Definition: instance_blackwing_lair.cpp:58
uint32 const Entry[3]
Definition: instance_blackwing_lair.cpp:70
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:2129

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.

442 {
443 data << NefarianLeftTunnel << ' ' << NefarianRightTunnel;
444 }

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