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

Public Member Functions

 instance_vault_of_archavon_InstanceMapScript (Map *map)
 
void Initialize () override
 
void OnPlayerEnter (Player *) override
 
void Update (uint32 diff) override
 
bool IsEncounterInProgress () const override
 
void OnCreatureCreate (Creature *creature) override
 
ObjectGuid GetGuidData (uint32 identifier) const override
 
uint32 GetData (uint32 identifier) const override
 
void SetData (uint32 type, uint32 data) override
 
bool CheckAchievementCriteriaMeet (uint32 criteria_id, Player const *, Unit const *, uint32) 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 ()
 
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 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 ()
 
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 CheckRequiredBosses (uint32, Player const *=nullptr) const
 
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 OnUnitDeath (Unit *)
 
virtual void OnCreatureEvade (Creature *)
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual void ProcessEvent (WorldObject *, uint32)
 

Private Attributes

time_t ArchavonDeath
 
time_t EmalonDeath
 
time_t KoralonDeath
 
uint32 checkTimer
 
bool stoned
 
uint32 m_auiEncounter [MAX_ENCOUNTER]
 
ObjectGuid bossGUIDs [MAX_ENCOUNTER]
 

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

instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::instance_vault_of_archavon_InstanceMapScript ( Map map)
inline
42 : InstanceScript(map)
43 {
44 }
Definition InstanceScript.h:143

Member Function Documentation

◆ CheckAchievementCriteriaMeet()

bool instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::CheckAchievementCriteriaMeet ( uint32  criteria_id,
Player const *  ,
Unit const *  ,
uint32   
)
inlineoverridevirtual

Reimplemented from InstanceScript.

219 {
220 switch (criteria_id)
221 {
225 {
226 // instance difficulty check is already done in db (achievement_criteria_data)
227 // int() for Visual Studio, compile errors with std::abs(time_t)
228 return (std::abs(int(ArchavonDeath - EmalonDeath)) < MINUTE && \
229 std::abs(int(EmalonDeath - KoralonDeath)) < MINUTE && \
230 std::abs(int(KoralonDeath - ArchavonDeath)) < MINUTE);
231 }
232 break;
233 default:
234 break;
235 }
236
237 return false;
238 }
constexpr auto MINUTE
Definition Common.h:47
time_t ArchavonDeath
Definition instance_vault_of_archavon.cpp:257
time_t KoralonDeath
Definition instance_vault_of_archavon.cpp:259
time_t EmalonDeath
Definition instance_vault_of_archavon.cpp:258
@ CRITERIA_EARTH_WIND_FIRE_25
Definition vault_of_archavon.h:48
@ CRITERIA_EARTH_WIND_FIRE_10
Definition vault_of_archavon.h:47

References ArchavonDeath, CRITERIA_EARTH_WIND_FIRE_10, CRITERIA_EARTH_WIND_FIRE_25, EmalonDeath, KoralonDeath, and MINUTE.

◆ GetData()

uint32 instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::GetData ( uint32  identifier) const
inlineoverridevirtual

Reimplemented from ZoneScript.

177 {
178 if (identifier == DATA_STONED)
179 return (uint32)stoned;
180 return 0;
181 }
std::uint32_t uint32
Definition Define.h:107
bool stoned
Definition instance_vault_of_archavon.cpp:261
@ DATA_STONED
Definition vault_of_archavon.h:42

References DATA_STONED, and stoned.

◆ GetGuidData()

ObjectGuid instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::GetGuidData ( uint32  identifier) const
inlineoverridevirtual

Reimplemented from ZoneScript.

169 {
170 if (identifier < MAX_ENCOUNTER)
171 return bossGUIDs[identifier];
172
173 return ObjectGuid::Empty;
174 }
static ObjectGuid const Empty
Definition ObjectGuid.h:120
constexpr auto MAX_ENCOUNTER
Definition instance_blackrock_depths.cpp:24
ObjectGuid bossGUIDs[MAX_ENCOUNTER]
Definition instance_vault_of_archavon.cpp:264

References bossGUIDs, ObjectGuid::Empty, and MAX_ENCOUNTER.

◆ Initialize()

void instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

47 {
49 memset(&m_auiEncounter, 0, sizeof(m_auiEncounter));
50
51 ArchavonDeath = 0;
52 EmalonDeath = 0;
53 KoralonDeath = 0;
54 checkTimer = 0;
55 stoned = false;
56 }
#define DataHeader
Definition blackrock_depths.h:23
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:159
uint32 m_auiEncounter[MAX_ENCOUNTER]
Definition instance_vault_of_archavon.cpp:263
uint32 checkTimer
Definition instance_vault_of_archavon.cpp:260

References ArchavonDeath, checkTimer, DataHeader, EmalonDeath, KoralonDeath, m_auiEncounter, InstanceScript::SetHeaders(), and stoned.

◆ IsEncounterInProgress()

bool instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::IsEncounterInProgress ( ) const
inlineoverridevirtual

Reimplemented from InstanceScript.

134 {
135 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
136 if (m_auiEncounter[i] == IN_PROGRESS)
137 return true;
138
139 if (!sWorld->getBoolConfig(CONFIG_WINTERGRASP_KICK_VOA_PLAYERS))
140 return false;
141
142 Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG);
143 if (!bf || bf->IsWarTime() || bf->GetTimer() <= 10 * MINUTE * IN_MILLISECONDS)
144 return true;
145
146 return false;
147 }
#define sBattlefieldMgr
Definition BattlefieldMgr.h:79
@ BATTLEFIELD_BATTLEID_WG
Definition Battlefield.h:36
constexpr auto IN_MILLISECONDS
Definition Common.h:53
std::uint8_t uint8
Definition Define.h:109
@ IN_PROGRESS
Definition InstanceScript.h:59
@ CONFIG_WINTERGRASP_KICK_VOA_PLAYERS
Definition WorldConfig.h:333
Definition Battlefield.h:196
bool IsWarTime() const
Return true if battle is started, false if battle is not started.
Definition Battlefield.h:239
uint32 GetTimer() const
Definition Battlefield.h:348
#define sWorld
Definition World.h:317

References BATTLEFIELD_BATTLEID_WG, CONFIG_WINTERGRASP_KICK_VOA_PLAYERS, Battlefield::GetTimer(), IN_MILLISECONDS, IN_PROGRESS, Battlefield::IsWarTime(), m_auiEncounter, MAX_ENCOUNTER, MINUTE, sBattlefieldMgr, and sWorld.

◆ OnCreatureCreate()

void instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

150 {
151 switch (creature->GetEntry())
152 {
153 case CREATURE_TORAVON:
154 bossGUIDs[EVENT_TORAVON] = creature->GetGUID();
155 break;
157 bossGUIDs[EVENT_ARCHAVON] = creature->GetGUID();
158 break;
159 case CREATURE_KORALON:
160 bossGUIDs[EVENT_KORALON] = creature->GetGUID();
161 break;
162 case CREATURE_EMALON:
163 bossGUIDs[EVENT_EMALON] = creature->GetGUID();
164 break;
165 }
166 }
uint32 GetEntry() const
Definition Object.h:117
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
@ CREATURE_EMALON
Definition vault_of_archavon.h:30
@ CREATURE_KORALON
Definition vault_of_archavon.h:31
@ CREATURE_ARCHAVON
Definition vault_of_archavon.h:29
@ CREATURE_TORAVON
Definition vault_of_archavon.h:32
@ EVENT_TORAVON
Definition vault_of_archavon.h:40
@ EVENT_KORALON
Definition vault_of_archavon.h:39
@ EVENT_ARCHAVON
Definition vault_of_archavon.h:37
@ EVENT_EMALON
Definition vault_of_archavon.h:38

References bossGUIDs, CREATURE_ARCHAVON, CREATURE_EMALON, CREATURE_KORALON, CREATURE_TORAVON, EVENT_ARCHAVON, EVENT_EMALON, EVENT_KORALON, EVENT_TORAVON, Object::GetEntry(), and Object::GetGUID().

◆ OnPlayerEnter()

void instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::OnPlayerEnter ( Player )
inlineoverridevirtual

Reimplemented from InstanceScript.

59 {
60 if (stoned)
61 {
62 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
64 if (!cr->IsInCombat())
65 cr->RemoveAllAuras();
66
67 stoned = false;
68 }
69 }
Definition Creature.h:47
Map * instance
Definition InstanceScript.h:149
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2362

References bossGUIDs, Map::GetCreature(), InstanceScript::instance, MAX_ENCOUNTER, and stoned.

◆ ReadSaveDataMore()

void instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

241 {
242 data >> m_auiEncounter[0];
243 data >> m_auiEncounter[1];
244 data >> m_auiEncounter[2];
245 data >> m_auiEncounter[3];
246 }

References m_auiEncounter.

◆ SetData()

void instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

184 {
185 switch (type)
186 {
187 case EVENT_ARCHAVON:
188 case EVENT_EMALON:
189 case EVENT_KORALON:
190 case EVENT_TORAVON:
191 m_auiEncounter[type] = data;
192 break;
193 }
194
195 if (data == DONE)
196 {
197 SaveToDB();
198 switch (type)
199 {
200 case EVENT_ARCHAVON:
202 break;
203 case EVENT_EMALON:
205 break;
206 case EVENT_KORALON:
208 break;
209 default:
210 return;
211 }
212
213 // on every death of Archavon, Emalon and Koralon check our achievement
215 }
216 }
@ DONE
Definition InstanceScript.h:61
void DoCastSpellOnPlayers(uint32 spell)
Definition InstanceScript.cpp:705
void SaveToDB()
Definition InstanceScript.cpp:42
Seconds GetGameTime()
Definition GameTime.cpp:38
@ SPELL_EARTH_WIND_FIRE_ACHIEVEMENT_CHECK
Definition vault_of_archavon.h:53

References ArchavonDeath, InstanceScript::DoCastSpellOnPlayers(), DONE, EmalonDeath, EVENT_ARCHAVON, EVENT_EMALON, EVENT_KORALON, EVENT_TORAVON, GameTime::GetGameTime(), KoralonDeath, m_auiEncounter, InstanceScript::SaveToDB(), and SPELL_EARTH_WIND_FIRE_ACHIEVEMENT_CHECK.

◆ Update()

void instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

72 {
73 checkTimer += diff;
74 if (checkTimer >= 60000)
75 {
76 checkTimer -= 60000; // one minute
78 return;
79 if (Battlefield* bf = sBattlefieldMgr->GetBattlefieldByBattleId(BATTLEFIELD_BATTLEID_WG))
80 {
81 if (!bf->IsWarTime())
82 {
83 if (bf->GetTimer() <= (16 * MINUTE * IN_MILLISECONDS) && bf->GetTimer() >= (15 * MINUTE * IN_MILLISECONDS))
84 {
85 Map::PlayerList const& PlayerList = instance->GetPlayers();
86 if (!PlayerList.IsEmpty())
87 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
88 if (Player* player = i->GetSource())
89 player->TextEmote("This instance will reset in 15 minutes.", nullptr, true);
90 }
91 else if (bf->GetTimer() <= (10 * MINUTE * IN_MILLISECONDS) && bf->GetTimer() >= (9 * MINUTE * IN_MILLISECONDS))
92 {
93 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
95 if (!cr->IsInCombat())
96 {
97 cr->RemoveAllAuras();
98 if (Aura* aur = cr->AddAura(SPELL_STONED_AURA, cr))
99 {
100 aur->SetMaxDuration(60 * MINUTE * IN_MILLISECONDS);
101 aur->SetDuration(60 * MINUTE * IN_MILLISECONDS);
102 }
103 }
104
105 stoned = true;
106 }
107 else if (bf->GetTimer() <= (2 * MINUTE * IN_MILLISECONDS) && bf->GetTimer() > (MINUTE * IN_MILLISECONDS))
108 {
109 Map::PlayerList const& PlayerList = instance->GetPlayers();
110 if (!PlayerList.IsEmpty())
111 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
112 if (Player* player = i->GetSource())
113 player->TextEmote("This instance is about to reset. Prepare to be removed.", nullptr, true);
114 }
115 else if (bf->GetTimer() <= MINUTE * IN_MILLISECONDS)
116 {
117 for (uint8 i = 0; i < MAX_ENCOUNTER; ++i)
118 if (Creature* cr = instance->GetCreature(bossGUIDs[i]))
119 if (cr->IsInCombat() && cr->AI())
120 cr->AI()->EnterEvadeMode();
121
122 Map::PlayerList const& PlayerList = instance->GetPlayers();
123 if (!PlayerList.IsEmpty())
124 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
125 if (Player* player = i->GetSource())
126 player->TeleportTo(player->m_homebindMapId, player->m_homebindX, player->m_homebindY, player->m_homebindZ, player->GetOrientation());
127 }
128 }
129 }
130 }
131 }
Definition SpellAuras.h:87
Definition LinkedList.h:139
bool IsEmpty() const
Definition LinkedList.h:97
Definition MapRefMgr.h:26
iterator begin()
Definition MapRefMgr.h:36
iterator end()
Definition MapRefMgr.h:37
PlayerList const & GetPlayers() const
Definition Map.h:329
Definition Player.h:1084
@ SPELL_STONED_AURA
Definition vault_of_archavon.h:54

References BATTLEFIELD_BATTLEID_WG, MapRefMgr::begin(), bossGUIDs, checkTimer, CONFIG_WINTERGRASP_KICK_VOA_PLAYERS, MapRefMgr::end(), Map::GetCreature(), Map::GetPlayers(), IN_MILLISECONDS, InstanceScript::instance, LinkedListHead::IsEmpty(), MAX_ENCOUNTER, MINUTE, sBattlefieldMgr, SPELL_STONED_AURA, stoned, and sWorld.

◆ WriteSaveDataMore()

void instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

249 {
250 data << m_auiEncounter[0] << ' '
251 << m_auiEncounter[1] << ' '
252 << m_auiEncounter[2] << ' '
253 << m_auiEncounter[3];
254 }

References m_auiEncounter.

Member Data Documentation

◆ ArchavonDeath

time_t instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::ArchavonDeath
private

◆ bossGUIDs

ObjectGuid instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::bossGUIDs[MAX_ENCOUNTER]
private

◆ checkTimer

uint32 instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::checkTimer
private

Referenced by Initialize(), and Update().

◆ EmalonDeath

time_t instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::EmalonDeath
private

◆ KoralonDeath

time_t instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::KoralonDeath
private

◆ m_auiEncounter

uint32 instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::m_auiEncounter[MAX_ENCOUNTER]
private

◆ stoned

bool instance_vault_of_archavon::instance_vault_of_archavon_InstanceMapScript::stoned
private

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