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

Public Member Functions

 instance_eye_of_eternity (Map *pMap)
 
void OnCreatureCreate (Creature *creature) override
 
ObjectGuid GetGuidData (uint32 data) const override
 
void VortexHandling ()
 
void OnPlayerEnter (Player *player) override
 
void OnGameObjectCreate (GameObject *gameobject) override
 
void SetData (uint32 type, uint32) override
 
bool SetBossState (uint32 type, EncounterState state) override
 
void ProcessEvent (WorldObject *, uint32 eventId) override
 
bool CheckAchievementCriteriaMeet (uint32 criteria_id, Player const *source, Unit const *, uint32) 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 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 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 OnUnitDeath (Unit *)
 
virtual void OnCreatureEvade (Creature *)
 
virtual void SetGuidData (uint32, ObjectGuid)
 
virtual uint64 GetData64 (uint32) const
 
virtual void SetData64 (uint32, uint64)
 
virtual uint32 GetData (uint32) const
 

Public Attributes

bool _pokeAchievementValid = false
 
GuidVector _vortexTriggers
 
- Public Attributes inherited from InstanceScript
Mapinstance
 
TaskScheduler scheduler
 

Additional Inherited Members

- Static Public Member Functions inherited from InstanceScript
static std::string GetBossStateName (uint8 state)
 
- 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_eye_of_eternity()

instance_eye_of_eternity::instance_eye_of_eternity ( Map pMap)
inline
41 : InstanceScript(pMap)
42 {
46 Initialize();
48 }
#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:306
virtual void Initialize()
Definition InstanceScript.h:152
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:158
void LoadObjectData(ObjectData const *creatureData, ObjectData const *gameObjectData)
Definition InstanceScript.cpp:193
ObjectData const creatureData[]
Definition instance_eye_of_eternity.cpp:24
ObjectData const gameobjectData[]
Definition instance_eye_of_eternity.cpp:30
bool _pokeAchievementValid
Definition instance_eye_of_eternity.cpp:50

References _pokeAchievementValid, creatureData, DataHeader, EncounterCount, gameobjectData, InstanceScript::Initialize(), InstanceScript::LoadObjectData(), InstanceScript::SetBossNumber(), and InstanceScript::SetHeaders().

Member Function Documentation

◆ CheckAchievementCriteriaMeet()

bool instance_eye_of_eternity::CheckAchievementCriteriaMeet ( uint32  criteria_id,
Player const *  source,
Unit const *  ,
uint32   
)
inlineoverridevirtual

Reimplemented from InstanceScript.

204 {
205 switch (criteria_id)
206 {
212 return source && source->GetVehicle() && source->GetVehicle()->GetVehicleInfo()->m_ID == 224;
213 }
214 return false;
215 }
@ ACHIEV_CRITERIA_A_POKE_IN_THE_EYE_10
Definition eye_of_eternity.h:93
@ ACHIEV_CRITERIA_DENYIN_THE_SCION_10
Definition eye_of_eternity.h:91
@ ACHIEV_CRITERIA_DENYIN_THE_SCION_25
Definition eye_of_eternity.h:92
@ ACHIEV_CRITERIA_A_POKE_IN_THE_EYE_25
Definition eye_of_eternity.h:94

References _pokeAchievementValid, ACHIEV_CRITERIA_A_POKE_IN_THE_EYE_10, ACHIEV_CRITERIA_A_POKE_IN_THE_EYE_25, ACHIEV_CRITERIA_DENYIN_THE_SCION_10, ACHIEV_CRITERIA_DENYIN_THE_SCION_25, Unit::GetVehicle(), Vehicle::GetVehicleInfo(), and VehicleEntry::m_ID.

◆ GetGuidData()

ObjectGuid instance_eye_of_eternity::GetGuidData ( uint32  data) const
inlineoverridevirtual

Reimplemented from ZoneScript.

66 {
67 if (data == DATA_VORTEX_TRIGGER)
68 return !_vortexTriggers.empty() ? _vortexTriggers.front() : ObjectGuid::Empty;
69
70 return InstanceScript::GetGuidData(data);
71 }
ObjectGuid GetGuidData(uint32 type) const override
Definition InstanceScript.cpp:110
static ObjectGuid const Empty
Definition ObjectGuid.h:120
@ DATA_VORTEX_TRIGGER
Definition eye_of_eternity.h:65
GuidVector _vortexTriggers
Definition instance_eye_of_eternity.cpp:51

References _vortexTriggers, DATA_VORTEX_TRIGGER, ObjectGuid::Empty, and InstanceScript::GetGuidData().

◆ OnCreatureCreate()

void instance_eye_of_eternity::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

54 {
56
57 if (creature->GetEntry() == NPC_VORTEX)
58 _vortexTriggers.push_back(creature->GetGUID());
59
61 if (creature->GetEntry() == NPC_WYRMREST_SKYTALON)
63 }
@ FACTION_FRIENDLY
Definition SharedDefines.h:189
@ CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP
Definition WorldConfig.h:34
void OnCreatureCreate(Creature *creature) override
Definition InstanceScript.cpp:70
uint32 GetEntry() const
Definition Object.h:117
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:114
void SetFaction(uint32 faction)
Definition Unit.cpp:7056
@ NPC_WYRMREST_SKYTALON
Definition eye_of_eternity.h:52
#define sWorld
Definition World.h:316
@ NPC_VORTEX
Definition zone_undercity.cpp:519

References _vortexTriggers, CONFIG_ALLOW_TWO_SIDE_INTERACTION_GROUP, FACTION_FRIENDLY, Object::GetEntry(), Object::GetGUID(), NPC_VORTEX, NPC_WYRMREST_SKYTALON, InstanceScript::OnCreatureCreate(), Unit::SetFaction(), and sWorld.

◆ OnGameObjectCreate()

void instance_eye_of_eternity::OnGameObjectCreate ( GameObject gameobject)
inlineoverridevirtual

Reimplemented from ZoneScript.

100 {
102
103 uint32 entry = gameobject->GetEntry();
104
106 {
107 if (entry == GO_IRIS_N || entry == GO_IRIS_H)
108 gameobject->SetPhaseMask(2, true);
109 else if (entry == GO_NEXUS_PLATFORM)
110 {
111 gameobject->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED, nullptr, true);
112 gameobject->EnableCollision(false);
113 }
114 }
115 }
std::uint32_t uint32
Definition Define.h:107
@ GO_DESTRUCTIBLE_DESTROYED
Definition SharedDefines.h:1635
void SetPhaseMask(uint32 newPhaseMask, bool update) override
Definition GameObject.cpp:2611
void EnableCollision(bool enable)
Definition GameObject.cpp:2619
void SetDestructibleState(GameObjectDestructibleState state, Player *eventInvoker=nullptr, bool setHealth=false)
Definition GameObject.cpp:2355
bool IsBossDone(uint32 bossId) const
Definition InstanceScript.h:295
void OnGameObjectCreate(GameObject *go) override
Definition InstanceScript.cpp:85
@ GO_IRIS_N
Definition eye_of_eternity.h:31
@ GO_IRIS_H
Definition eye_of_eternity.h:32
@ GO_NEXUS_PLATFORM
Definition eye_of_eternity.h:30
@ DATA_MALYGOS
Definition eye_of_eternity.h:57

References DATA_MALYGOS, GameObject::EnableCollision(), Object::GetEntry(), GO_DESTRUCTIBLE_DESTROYED, GO_IRIS_H, GO_IRIS_N, GO_NEXUS_PLATFORM, InstanceScript::IsBossDone(), InstanceScript::OnGameObjectCreate(), GameObject::SetDestructibleState(), and GameObject::SetPhaseMask().

◆ OnPlayerEnter()

void instance_eye_of_eternity::OnPlayerEnter ( Player player)
inlineoverridevirtual

Reimplemented from InstanceScript.

94 {
95 if (player && player->IsAlive() && IsBossDone(DATA_MALYGOS))
96 player->CastSpell(player, SPELL_SUMMON_RED_DRAGON_BUDDY, true);
97 }
bool IsAlive() const
Definition Unit.h:1793
SpellCastResult CastSpell(SpellCastTargets const &targets, SpellInfo const *spellInfo, CustomSpellValues const *value, TriggerCastFlags triggerFlags=TRIGGERED_NONE, Item *castItem=nullptr, AuraEffect const *triggeredByAura=nullptr, ObjectGuid originalCaster=ObjectGuid::Empty)
Definition Unit.cpp:1350
@ SPELL_SUMMON_RED_DRAGON_BUDDY
Definition eye_of_eternity.h:83

References Unit::CastSpell(), DATA_MALYGOS, Unit::IsAlive(), InstanceScript::IsBossDone(), and SPELL_SUMMON_RED_DRAGON_BUDDY.

◆ ProcessEvent()

void instance_eye_of_eternity::ProcessEvent ( WorldObject ,
uint32  eventId 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

186 {
187 if (eventId == EVENT_IRIS_ACTIVATED)
188 {
189 if (Creature* malygos = GetCreature(DATA_MALYGOS))
190 if (Player* player = malygos->SelectNearestPlayer(250.0f))
191 malygos->AI()->AttackStart(player);
192 }
193 else if (eventId == EVENT_DESTROY_PLATFORM)
194 {
196 {
197 platform->SetDestructibleState(GO_DESTRUCTIBLE_DESTROYED, nullptr, true);
198 platform->EnableCollision(false);
199 }
200 }
201 }
Definition Creature.h:47
Definition GameObject.h:120
Creature * GetCreature(uint32 type)
Definition InstanceScript.cpp:115
GameObject * GetGameObject(uint32 type)
Definition InstanceScript.cpp:120
Definition Player.h:1084
Player * SelectNearestPlayer(float distance=0) const
Definition Object.cpp:2526
@ EVENT_IRIS_ACTIVATED
Definition eye_of_eternity.h:102
@ EVENT_DESTROY_PLATFORM
Definition eye_of_eternity.h:101
@ DATA_NEXUS_PLATFORM
Definition eye_of_eternity.h:60

References DATA_MALYGOS, DATA_NEXUS_PLATFORM, EVENT_DESTROY_PLATFORM, EVENT_IRIS_ACTIVATED, InstanceScript::GetCreature(), InstanceScript::GetGameObject(), GO_DESTRUCTIBLE_DESTROYED, and WorldObject::SelectNearestPlayer().

◆ SetBossState()

bool instance_eye_of_eternity::SetBossState ( uint32  type,
EncounterState  state 
)
inlineoverridevirtual

Reimplemented from InstanceScript.

144 {
145 if (!InstanceScript::SetBossState(type, state))
146 return false;
147
148 if (type != DATA_MALYGOS)
149 return true;
150
151 switch (state)
152 {
153 case NOT_STARTED:
154 _pokeAchievementValid = false;
156 {
157 iris->SetPhaseMask(1, true);
158 HandleGameObject(iris->GetGUID(), false, iris);
159 }
161 portal->SetPhaseMask(1, true);
163 {
164 platform->SetDestructibleState(GO_DESTRUCTIBLE_REBUILDING, nullptr, true);
165 platform->EnableCollision(true);
166 }
167 break;
168 case IN_PROGRESS:
170 break;
171 case DONE:
172 _pokeAchievementValid = false;
174 portal->SetPhaseMask(1, true);
175 if (Creature* malygos = GetCreature(DATA_MALYGOS))
176 malygos->SummonCreature(NPC_ALEXSTRASZA, 798.0f, 1268.0f, 299.0f, 2.45f, TEMPSUMMON_MANUAL_DESPAWN);
177 break;
178 default:
179 break;
180 }
181
182 return true;
183 }
@ IN_PROGRESS
Definition InstanceScript.h:59
@ DONE
Definition InstanceScript.h:61
@ NOT_STARTED
Definition InstanceScript.h:58
@ TEMPSUMMON_MANUAL_DESPAWN
Definition Object.h:56
@ GO_DESTRUCTIBLE_REBUILDING
Definition SharedDefines.h:1636
virtual bool SetBossState(uint32 id, EncounterState state)
Definition InstanceScript.cpp:390
void HandleGameObject(ObjectGuid guid, bool open, GameObject *go=nullptr)
Open or close a GameObject by GUID.
Definition InstanceScript.cpp:125
Map * instance
Definition InstanceScript.h:149
uint8 GetSpawnMode() const
Definition Map.h:267
uint32 GetPlayersCountExceptGMs() const
Definition Map.cpp:1813
@ NPC_ALEXSTRASZA
Definition eye_of_eternity.h:51
@ DATA_IRIS
Definition eye_of_eternity.h:58
@ DATA_EXIT_PORTAL
Definition eye_of_eternity.h:59

References _pokeAchievementValid, DATA_EXIT_PORTAL, DATA_IRIS, DATA_MALYGOS, DATA_NEXUS_PLATFORM, DONE, InstanceScript::GetCreature(), InstanceScript::GetGameObject(), Map::GetPlayersCountExceptGMs(), Map::GetSpawnMode(), GO_DESTRUCTIBLE_REBUILDING, InstanceScript::HandleGameObject(), IN_PROGRESS, InstanceScript::instance, NOT_STARTED, NPC_ALEXSTRASZA, InstanceScript::SetBossState(), and TEMPSUMMON_MANUAL_DESPAWN.

◆ SetData()

void instance_eye_of_eternity::SetData ( uint32  type,
uint32   
)
inlineoverridevirtual

Reimplemented from ZoneScript.

118 {
119 switch (type)
120 {
122 {
124 {
126 if (Creature* trigger = iris->SummonCreature(NPC_WORLD_TRIGGER_LAOI, *iris, TEMPSUMMON_TIMED_DESPAWN, 10000))
127 trigger->CastSpell(trigger, SPELL_IRIS_ACTIVATED, true);
128 }
129 break;
130 }
133 iris->SetPhaseMask(2, true);
135 portal->SetPhaseMask(2, true);
136 break;
139 break;
140 }
141 }
@ TEMPSUMMON_TIMED_DESPAWN
Definition Object.h:51
@ NPC_WORLD_TRIGGER_LAOI
Definition azjol_nerub.h:53
TempSummon * SummonCreature(uint32 id, const Position &pos, TempSummonType spwtype=TEMPSUMMON_MANUAL_DESPAWN, uint32 despwtime=0, uint32 vehId=0, SummonPropertiesEntry const *properties=nullptr, bool visibleBySummonerOnly=false) const
Definition Object.cpp:2394
@ SPELL_IRIS_ACTIVATED
Definition eye_of_eternity.h:71
@ DATA_SET_IRIS_INACTIVE
Definition eye_of_eternity.h:62
@ DATA_VORTEX_HANDLING
Definition eye_of_eternity.h:64
@ DATA_HIDE_IRIS_AND_PORTAL
Definition eye_of_eternity.h:63
void VortexHandling()
Definition instance_eye_of_eternity.cpp:73

References DATA_EXIT_PORTAL, DATA_HIDE_IRIS_AND_PORTAL, DATA_IRIS, DATA_SET_IRIS_INACTIVE, DATA_VORTEX_HANDLING, ObjectGuid::Empty, InstanceScript::GetGameObject(), InstanceScript::HandleGameObject(), NPC_WORLD_TRIGGER_LAOI, SPELL_IRIS_ACTIVATED, WorldObject::SummonCreature(), TEMPSUMMON_TIMED_DESPAWN, and VortexHandling().

◆ VortexHandling()

void instance_eye_of_eternity::VortexHandling ( )
inline
74 {
75 if (_vortexTriggers.empty())
76 return;
77
78 size_t triggerIndex = 0;
79 size_t triggerCount = _vortexTriggers.size();
80
81 instance->DoForAllPlayers([&](Player* player)
82 {
83 if (!player->IsAlive() || player->IsGameMaster())
84 return;
85
86 if (Creature* trigger = instance->GetCreature(_vortexTriggers[triggerIndex]))
87 player->CastSpell(trigger, SPELL_VORTEX_4, true);
88
89 triggerIndex = (triggerIndex + 1) % triggerCount;
90 });
91 }
void DoForAllPlayers(std::function< void(Player *)> exec)
Definition Map.cpp:2890
Creature * GetCreature(ObjectGuid const &guid)
Definition Map.cpp:2336
bool IsGameMaster() const
Definition Player.h:1174
@ SPELL_VORTEX_4
Definition eye_of_eternity.h:86

References _vortexTriggers, Unit::CastSpell(), Map::DoForAllPlayers(), Map::GetCreature(), InstanceScript::instance, Unit::IsAlive(), Player::IsGameMaster(), and SPELL_VORTEX_4.

Referenced by SetData().

Member Data Documentation

◆ _pokeAchievementValid

bool instance_eye_of_eternity::_pokeAchievementValid = false

◆ _vortexTriggers

GuidVector instance_eye_of_eternity::_vortexTriggers

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