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

Public Member Functions

 instance_blood_furnace_InstanceMapScript (Map *map)
 
void Initialize () override
 
void OnCreatureCreate (Creature *creature) override
 
void OnUnitDeath (Unit *unit) override
 
void OnGameObjectCreate (GameObject *go) override
 
ObjectGuid GetGuidData (uint32 data) const override
 
bool SetBossState (uint32 type, EncounterState state) override
 
void ResetPrisons ()
 
void ResetPrisoners (GuidSet prisoners)
 
void ResetPrisoner (Creature *prisoner)
 
void StorePrisoner (Creature *creature)
 
void PrisonerDied (ObjectGuid guid)
 
void ActivateCell (uint8 id)
 
void ActivatePrisoners (GuidSet prisoners)
 
- 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 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 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)
 
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 (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 uint32 GetData (uint32) const
 
virtual void SetData (uint32, uint32)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Private Attributes

ObjectGuid _prisonGUIDs [4]
 
GuidSet _prisonersCell [4]
 
uint8 _prisonerCounter [4]
 

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

instance_blood_furnace::instance_blood_furnace_InstanceMapScript::instance_blood_furnace_InstanceMapScript ( Map map)
inline
55 : InstanceScript(map)
56 {
61 }
#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_blood_furnace.cpp:41
DoorData const doorData[]
Definition instance_blood_furnace.cpp:23
ObjectData const gameobjectData[]
Definition instance_blood_furnace.cpp:34

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

Member Function Documentation

◆ ActivateCell()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::ActivateCell ( uint8  id)
inline
204 {
205 switch (id)
206 {
213 break;
217 if (Creature* broggok = GetCreature(DATA_BROGGOK))
218 broggok->AI()->DoAction(ACTION_ACTIVATE_BROGGOK);
219 break;
220 }
221 }
@ ACTION_ACTIVATE_BROGGOK
Definition blood_furnace.h:44
@ DATA_BROGGOK_REAR_DOOR
Definition blood_furnace.h:36
@ DATA_PRISON_CELL2
Definition blood_furnace.h:40
@ DATA_PRISON_CELL1
Definition blood_furnace.h:39
@ DATA_PRISON_CELL3
Definition blood_furnace.h:41
@ DATA_BROGGOK
Definition blood_furnace.h:32
@ DATA_PRISON_CELL4
Definition blood_furnace.h:42
Definition Creature.h:43
Definition GameObject.h:120
Creature * GetCreature(uint32 type)
Definition InstanceScript.cpp:115
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Definition InstanceScript.cpp:125
GameObject * GetGameObject(uint32 type)
Definition InstanceScript.cpp:120
static ObjectGuid const Empty
Definition ObjectGuid.h:120
void ActivatePrisoners(GuidSet prisoners)
Definition instance_blood_furnace.cpp:223
GuidSet _prisonersCell[4]
Definition instance_blood_furnace.cpp:236
ObjectGuid _prisonGUIDs[4]
Definition instance_blood_furnace.cpp:235

References _prisonersCell, _prisonGUIDs, ACTION_ACTIVATE_BROGGOK, ActivatePrisoners(), DATA_BROGGOK, DATA_BROGGOK_REAR_DOOR, DATA_PRISON_CELL1, DATA_PRISON_CELL2, DATA_PRISON_CELL3, DATA_PRISON_CELL4, ObjectGuid::Empty, InstanceScript::GetCreature(), InstanceScript::GetGameObject(), and InstanceScript::HandleGameObject().

Referenced by PrisonerDied(), and SetBossState().

◆ ActivatePrisoners()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::ActivatePrisoners ( GuidSet  prisoners)
inline
224 {
225 for (ObjectGuid const& guid : prisoners)
226 if (Creature* prisoner = instance->GetCreature(guid))
227 {
228 prisoner->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
229 prisoner->SetImmuneToAll(false);
230 prisoner->SetInCombatWithZone();
231 }
232 }
@ UNIT_FLAG_NON_ATTACKABLE
Definition UnitDefines.h:251
Map * instance
Definition InstanceScript.h:149
Definition ObjectGuid.h:118

References Map::GetCreature(), InstanceScript::instance, and UNIT_FLAG_NON_ATTACKABLE.

Referenced by ActivateCell().

◆ GetGuidData()

ObjectGuid instance_blood_furnace::instance_blood_furnace_InstanceMapScript::GetGuidData ( uint32  data) const
inlineoverridevirtual

Reimplemented from ZoneScript.

97 {
98 switch (data)
99 {
104 return _prisonGUIDs[data - DATA_PRISON_CELL1];
105 }
106
107 return ObjectGuid::Empty;
108 }

References _prisonGUIDs, DATA_PRISON_CELL1, DATA_PRISON_CELL2, DATA_PRISON_CELL3, DATA_PRISON_CELL4, and ObjectGuid::Empty.

◆ Initialize()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

64 {
65 memset(&_prisonerCounter, 0, sizeof(_prisonerCounter));
66 }
uint8 _prisonerCounter[4]
Definition instance_blood_furnace.cpp:237

References _prisonerCounter.

◆ OnCreatureCreate()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

69 {
70 if (creature->GetEntry() == NPC_NASCENT_FEL_ORC)
71 StorePrisoner(creature);
72
74 }
@ NPC_NASCENT_FEL_ORC
Definition blood_furnace.h:53
void OnCreatureCreate(Creature *creature) override
Definition InstanceScript.cpp:70
uint32 GetEntry() const
Definition Object.h:115
void StorePrisoner(Creature *creature)
Definition instance_blood_furnace.cpp:154

References Object::GetEntry(), NPC_NASCENT_FEL_ORC, InstanceScript::OnCreatureCreate(), and StorePrisoner().

◆ OnGameObjectCreate()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::OnGameObjectCreate ( GameObject go)
inlineoverridevirtual

Reimplemented from ZoneScript.

83 {
84 if (go->GetEntry() == 181821) //Broggok prison cell front right
85 _prisonGUIDs[0] = go->GetGUID();
86 if (go->GetEntry() == 181818) //Broggok prison cell back right
87 _prisonGUIDs[1] = go->GetGUID();
88 if (go->GetEntry() == 181820) //Broggok prison cell front left
89 _prisonGUIDs[2] = go->GetGUID();
90 if (go->GetEntry() == 181817) //Broggok prison cell back left
91 _prisonGUIDs[3] = go->GetGUID();
92
94 }
void OnGameObjectCreate(GameObject *go) override
Definition InstanceScript.cpp:85
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112

References _prisonGUIDs, Object::GetEntry(), Object::GetGUID(), and InstanceScript::OnGameObjectCreate().

◆ OnUnitDeath()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::OnUnitDeath ( Unit unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

77 {
78 if (unit && unit->IsCreature() && unit->GetEntry() == NPC_NASCENT_FEL_ORC)
79 PrisonerDied(unit->GetGUID());
80 }
bool IsCreature() const
Definition Object.h:204
void PrisonerDied(ObjectGuid guid)
Definition instance_blood_furnace.cpp:191

References Object::GetEntry(), Object::GetGUID(), Object::IsCreature(), NPC_NASCENT_FEL_ORC, and PrisonerDied().

◆ PrisonerDied()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::PrisonerDied ( ObjectGuid  guid)
inline
192 {
193 if (_prisonersCell[0].find(guid) != _prisonersCell[0].end() && --_prisonerCounter[0] <= 0)
195 else if (_prisonersCell[1].find(guid) != _prisonersCell[1].end() && --_prisonerCounter[1] <= 0)
197 else if (_prisonersCell[2].find(guid) != _prisonersCell[2].end() && --_prisonerCounter[2] <= 0)
199 else if (_prisonersCell[3].find(guid) != _prisonersCell[3].end() && --_prisonerCounter[3] <= 0)
201 }
void ActivateCell(uint8 id)
Definition instance_blood_furnace.cpp:203

References _prisonerCounter, _prisonersCell, ActivateCell(), DATA_BROGGOK_REAR_DOOR, DATA_PRISON_CELL2, DATA_PRISON_CELL3, and DATA_PRISON_CELL4.

Referenced by OnUnitDeath().

◆ ResetPrisoner()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::ResetPrisoner ( Creature prisoner)
inline
147 {
148 if (!prisoner->IsAlive())
149 prisoner->Respawn(true);
151 prisoner->SetImmuneToAll(true);
152 }
void Respawn(bool force=false)
Definition Creature.cpp:2044
bool IsAlive() const
Definition Unit.h:1707
void SetUnitFlag(UnitFlags flags)
UnitFlags available in UnitDefines.h.
Definition Unit.h:719
void SetImmuneToAll(bool apply, bool keepCombat=false)
Definition Unit.h:883

References Unit::IsAlive(), Creature::Respawn(), Unit::SetImmuneToAll(), Unit::SetUnitFlag(), and UNIT_FLAG_NON_ATTACKABLE.

Referenced by ResetPrisoners(), and StorePrisoner().

◆ ResetPrisoners()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::ResetPrisoners ( GuidSet  prisoners)
inline
140 {
141 for (ObjectGuid const& guid : prisoners)
142 if (Creature* prisoner = instance->GetCreature(guid))
143 ResetPrisoner(prisoner);
144 }
void ResetPrisoner(Creature *prisoner)
Definition instance_blood_furnace.cpp:146

References Map::GetCreature(), InstanceScript::instance, and ResetPrisoner().

Referenced by ResetPrisons().

◆ ResetPrisons()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::ResetPrisons ( )
inline
130 {
131 for (uint8 i = 0; i < 4; ++i)
132 {
133 _prisonerCounter[i] = _prisonersCell[i].size();
136 }
137 }
std::uint8_t uint8
Definition Define.h:109
void ResetPrisoners(GuidSet prisoners)
Definition instance_blood_furnace.cpp:139

References _prisonerCounter, _prisonersCell, _prisonGUIDs, InstanceScript::HandleGameObject(), and ResetPrisoners().

Referenced by SetBossState().

◆ SetBossState()

bool instance_blood_furnace::instance_blood_furnace_InstanceMapScript::SetBossState ( uint32  type,
EncounterState  state 
)
inlineoverridevirtual

Reimplemented from InstanceScript.

111 {
112 if (!InstanceScript::SetBossState(type, state))
113 return false;
114
115 if (type == DATA_BROGGOK)
116 {
117 if (state == IN_PROGRESS)
119 else if (state == NOT_STARTED)
120 {
121 ResetPrisons();
123 }
124 }
125
126 return true;
127 }
@ IN_PROGRESS
Definition InstanceScript.h:59
@ NOT_STARTED
Definition InstanceScript.h:58
@ DATA_BROGGOK_LEVER
Definition blood_furnace.h:37
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:385
void DoRespawnGameObject(ObjectGuid guid, uint32 timeToDespawn=MINUTE)
Definition InstanceScript.cpp:573
void ResetPrisons()
Definition instance_blood_furnace.cpp:129

References ActivateCell(), DATA_BROGGOK, DATA_BROGGOK_LEVER, DATA_PRISON_CELL1, InstanceScript::DoRespawnGameObject(), IN_PROGRESS, NOT_STARTED, ResetPrisons(), and InstanceScript::SetBossState().

◆ StorePrisoner()

void instance_blood_furnace::instance_blood_furnace_InstanceMapScript::StorePrisoner ( Creature creature)
inline
155 {
156 float posX = creature->GetPositionX();
157 float posY = creature->GetPositionY();
158
159 if (posX >= 405.0f && posX <= 423.0f)
160 {
161 if (posY >= 106.0f && posY <= 123.0f)
162 {
163 _prisonersCell[0].insert(creature->GetGUID());
164 ++_prisonerCounter[0];
165 ResetPrisoner(creature);
166 }
167 else if (posY >= 76.0f && posY <= 91.0f)
168 {
169 _prisonersCell[1].insert(creature->GetGUID());
170 ++_prisonerCounter[1];
171 ResetPrisoner(creature);
172 }
173 }
174 else if (posX >= 490.0f && posX <= 506.0f)
175 {
176 if (posY >= 106.0f && posY <= 123.0f)
177 {
178 _prisonersCell[2].insert(creature->GetGUID());
179 ++_prisonerCounter[2];
180 ResetPrisoner(creature);
181 }
182 else if (posY >= 76.0f && posY <= 91.0f)
183 {
184 _prisonersCell[3].insert(creature->GetGUID());
185 ++_prisonerCounter[3];
186 ResetPrisoner(creature);
187 }
188 }
189 }
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122

References _prisonerCounter, _prisonersCell, Object::GetGUID(), Position::GetPositionX(), Position::GetPositionY(), and ResetPrisoner().

Referenced by OnCreatureCreate().

Member Data Documentation

◆ _prisonerCounter

uint8 instance_blood_furnace::instance_blood_furnace_InstanceMapScript::_prisonerCounter[4]
private

◆ _prisonersCell

GuidSet instance_blood_furnace::instance_blood_furnace_InstanceMapScript::_prisonersCell[4]
private

◆ _prisonGUIDs

ObjectGuid instance_blood_furnace::instance_blood_furnace_InstanceMapScript::_prisonGUIDs[4]
private

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