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

Public Member Functions

 instance_stratholme_InstanceMapScript (Map *map)
 
void Initialize () override
 
void OnPlayerEnter (Player *player) override
 
void OnCreatureCreate (Creature *creature) override
 
void ProcessSlaughterEvent ()
 
void OnUnitDeath (Unit *unit) override
 
void OnGameObjectCreate (GameObject *go) override
 
void CheckZiggurats ()
 
void DoSpawnPlaguedCritters (uint8, Player *player)
 
void SetData (uint32 type, uint32 data) override
 
void ReadSaveDataMore (std::istringstream &data) override
 
void WriteSaveDataMore (std::ostringstream &data) override
 
uint32 GetData (uint32 type) const override
 
void Update (uint32 diff) 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 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 ()
 
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 (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)
 

Private Member Functions

void gate_delay (int gate)
 
void gate_critter_delay (int gate)
 

Private Attributes

uint32 _baronRunProgress
 
uint32 _baronRunTime
 
uint32 _zigguratState1
 
uint32 _zigguratState2
 
uint32 _zigguratState3
 
uint32 _slaughterProgress
 
uint32 _slaughterNPCs
 
uint32 _barthilasrunProgress {}
 
uint32 _postboxesOpened
 
EventMap events
 
ObjectGuid _zigguratDoorsGUID1
 
ObjectGuid _zigguratDoorsGUID2
 
ObjectGuid _zigguratDoorsGUID3
 
ObjectGuid _zigguratDoorsGUID4
 
ObjectGuid _zigguratDoorsGUID5
 
ObjectGuid _slaughterGateGUID
 
ObjectGuid _gauntletGateGUID
 
ObjectGuid _baronRivendareGUID
 
ObjectGuid _barthilasGUID
 
bool _gateTrapsCooldown [2]
 
ObjectGuid _trappedPlayerGUID
 
ObjectGuid _trapGatesGUIDs [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)
 
void WriteSaveDataHeaders (std::ostringstream &data)
 
void WriteSaveDataBossStates (std::ostringstream &data)
 
void WritePersistentData (std::ostringstream &data)
 

Detailed Description

Constructor & Destructor Documentation

◆ instance_stratholme_InstanceMapScript()

instance_stratholme::instance_stratholme_InstanceMapScript::instance_stratholme_InstanceMapScript ( Map map)
inline
65 : InstanceScript(map)
66 {
68 }
#define DataHeader
Definition blackrock_depths.h:23
Definition InstanceScript.h:143
void SetHeaders(std::string const &dataHeaders)
Definition InstanceScript.cpp:153

References DataHeader, and InstanceScript::SetHeaders().

Member Function Documentation

◆ CheckZiggurats()

void instance_stratholme::instance_stratholme_InstanceMapScript::CheckZiggurats ( )
inline
259 {
260 if (_zigguratState1 == 2 && _zigguratState2 == 2 && _zigguratState3 == 2)
261 {
263 baron->AI()->Talk(SAY_BRAON_ZIGGURAT_FALL_YELL);
264
266 gate->SetGoState(GO_STATE_ACTIVE);
268 gate->SetGoState(GO_STATE_ACTIVE);
269 }
270 }
@ GO_STATE_ACTIVE
Definition GameObjectData.h:689
Definition Creature.h:43
Definition GameObject.h:120
Map * instance
Definition InstanceScript.h:149
GameObject * GetGameObject(ObjectGuid const guid)
Definition Map.cpp:2503
Creature * GetCreature(ObjectGuid const guid)
Definition Map.cpp:2498
@ SAY_BRAON_ZIGGURAT_FALL_YELL
Definition stratholme.h:86
ObjectGuid _slaughterGateGUID
Definition instance_stratholme.cpp:606
ObjectGuid _gauntletGateGUID
Definition instance_stratholme.cpp:607
uint32 _zigguratState3
Definition instance_stratholme.cpp:594
uint32 _zigguratState2
Definition instance_stratholme.cpp:593
ObjectGuid _baronRivendareGUID
Definition instance_stratholme.cpp:608
uint32 _zigguratState1
Definition instance_stratholme.cpp:592

References _baronRivendareGUID, _gauntletGateGUID, _slaughterGateGUID, _zigguratState1, _zigguratState2, _zigguratState3, Map::GetCreature(), Map::GetGameObject(), GO_STATE_ACTIVE, InstanceScript::instance, and SAY_BRAON_ZIGGURAT_FALL_YELL.

Referenced by SetData().

◆ DoSpawnPlaguedCritters()

void instance_stratholme::instance_stratholme_InstanceMapScript::DoSpawnPlaguedCritters ( uint8  ,
Player player 
)
inline
273 {
274 if (!player)
275 return;
276
277 uint32 uiEntry = aPlaguedCritters[urand(0, 2)];
278 for (uint8 i = 0; i < 30; ++i)
279 {
280 float x, y, z;
281 const Position pPos = { player->GetPositionX(), player->GetPositionY(), player->GetPositionZ(), player->GetOrientation() };
282 player->GetRandomPoint(pPos, 8.0f, x, y, z);
283 z = player->GetPositionZ() + 1;
284 player->SummonCreature(uiEntry, x, y, z, 0, TEMPSUMMON_DEAD_DESPAWN, 0)->AI()->AttackStart(player);
285 }
286 }
std::uint8_t uint8
Definition Define.h:109
std::uint32_t uint32
Definition Define.h:107
@ TEMPSUMMON_DEAD_DESPAWN
Definition Object.h:52
uint32 urand(uint32 min, uint32 max)
Definition Random.cpp:44
CreatureAI * AI() const
Definition Creature.h:141
virtual void AttackStart(Unit *)
Definition UnitAI.cpp:27
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:2368
void GetRandomPoint(const Position &srcPos, float distance, float &rand_x, float &rand_y, float &rand_z) const
Definition Object.cpp:1513
static const uint32 aPlaguedCritters[]
Definition instance_stratholme.cpp:40
Definition Position.h:27
float GetPositionZ() const
Definition Position.h:123
float GetOrientation() const
Definition Position.h:124
float GetPositionX() const
Definition Position.h:121
float GetPositionY() const
Definition Position.h:122

References Creature::AI(), aPlaguedCritters, UnitAI::AttackStart(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), WorldObject::GetRandomPoint(), WorldObject::SummonCreature(), TEMPSUMMON_DEAD_DESPAWN, and urand().

Referenced by gate_critter_delay().

◆ gate_critter_delay()

void instance_stratholme::instance_stratholme_InstanceMapScript::gate_critter_delay ( int  gate)
inlineprivate
628 {
630 {
632 {
633 DoSpawnPlaguedCritters(gate, pPlayer);
634 }
635 }
636 }
Definition Player.h:1081
Player * GetPlayer(Map const *, ObjectGuid const guid)
Definition ObjectAccessor.cpp:220
ObjectGuid _trappedPlayerGUID
Definition instance_stratholme.cpp:612
void DoSpawnPlaguedCritters(uint8, Player *player)
Definition instance_stratholme.cpp:272

References _trappedPlayerGUID, DoSpawnPlaguedCritters(), ObjectAccessor::GetPlayer(), and InstanceScript::instance.

Referenced by Update().

◆ gate_delay()

void instance_stratholme::instance_stratholme_InstanceMapScript::gate_delay ( int  gate)
inlineprivate
616 {
617 if (_trapGatesGUIDs[2 * gate])
618 {
620 }
621 if (_trapGatesGUIDs[2 * gate + 1])
622 {
623 DoUseDoorOrButton(_trapGatesGUIDs[2 * gate + 1]);
624 }
625 }
void DoUseDoorOrButton(ObjectGuid guid, uint32 withRestoreTime=0, bool useAlternativeState=false)
Definition InstanceScript.cpp:552
ObjectGuid _trapGatesGUIDs[4]
Definition instance_stratholme.cpp:613

References _trapGatesGUIDs, and InstanceScript::DoUseDoorOrButton().

Referenced by Update().

◆ GetData()

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::GetData ( uint32  type) const
inlineoverridevirtual

Reimplemented from ZoneScript.

404 {
405 switch (type)
406 {
407 case TYPE_ZIGGURAT1:
408 return _zigguratState1;
409 case TYPE_ZIGGURAT2:
410 return _zigguratState2;
411 case TYPE_ZIGGURAT3:
412 return _zigguratState3;
413 case TYPE_MALLOW:
414 return _postboxesOpened;
417 }
418 return 0;
419 }
@ TYPE_ZIGGURAT3
Definition stratholme.h:29
@ TYPE_ZIGGURAT1
Definition stratholme.h:27
@ TYPE_ZIGGURAT2
Definition stratholme.h:28
@ TYPE_BARTHILAS_RUN
Definition stratholme.h:32
@ TYPE_MALLOW
Definition stratholme.h:31
uint32 _postboxesOpened
Definition instance_stratholme.cpp:598
uint32 _barthilasrunProgress
Definition instance_stratholme.cpp:597

References _barthilasrunProgress, _postboxesOpened, _zigguratState1, _zigguratState2, _zigguratState3, TYPE_BARTHILAS_RUN, TYPE_MALLOW, TYPE_ZIGGURAT1, TYPE_ZIGGURAT2, and TYPE_ZIGGURAT3.

Referenced by OnGameObjectCreate().

◆ Initialize()

void instance_stratholme::instance_stratholme_InstanceMapScript::Initialize ( )
inlineoverridevirtual

Reimplemented from InstanceScript.

71 {
73 _baronRunTime = 0;
80
81 _gateTrapsCooldown[0] = false;
82 _gateTrapsCooldown[1] = false;
83
84 events.Reset();
85 }
events
Definition boss_sartura.cpp:43
uint32 _slaughterNPCs
Definition instance_stratholme.cpp:596
bool _gateTrapsCooldown[2]
Definition instance_stratholme.cpp:611
uint32 _baronRunTime
Definition instance_stratholme.cpp:591
uint32 _baronRunProgress
Definition instance_stratholme.cpp:590
uint32 _slaughterProgress
Definition instance_stratholme.cpp:595

References _baronRunProgress, _baronRunTime, _gateTrapsCooldown, _postboxesOpened, _slaughterNPCs, _slaughterProgress, _zigguratState1, _zigguratState2, and _zigguratState3.

◆ OnCreatureCreate()

void instance_stratholme::instance_stratholme_InstanceMapScript::OnCreatureCreate ( Creature creature)
inlineoverridevirtual

Reimplemented from ZoneScript.

95 {
96 switch (creature->GetEntry())
97 {
99 _baronRivendareGUID = creature->GetGUID();
100 break;
102 case NPC_BILE_SPEWER:
103 if (_slaughterProgress == 0)
105 break;
107 if (_slaughterProgress == 1)
109 break;
111 if (_slaughterProgress == 2)
113 break;
114 case NPC_BLACK_GUARD:
115 if (_slaughterProgress == 3)
117 break;
118 case NPC_BARTHILAS:
119 _barthilasGUID = creature->GetGUID();
120 break;
121 default:
122 break;
123 }
124 }
uint32 GetEntry() const
Definition Object.h:115
static ObjectGuid GetGUID(Object const *o)
Definition Object.h:112
@ NPC_MINDLESS_UNDEAD
Definition stratholme.h:47
@ NPC_BLACK_GUARD
Definition stratholme.h:48
@ NPC_BILE_SPEWER
Definition stratholme.h:44
@ NPC_BARON_RIVENDARE
Definition stratholme.h:43
@ NPC_RAMSTEIN_THE_GORGER
Definition stratholme.h:46
@ NPC_BARTHILAS
Definition stratholme.h:42
@ NPC_VENOM_BELCHER
Definition stratholme.h:45
ObjectGuid _barthilasGUID
Definition instance_stratholme.cpp:609

References _baronRivendareGUID, _barthilasGUID, _slaughterNPCs, _slaughterProgress, Object::GetEntry(), Object::GetGUID(), NPC_BARON_RIVENDARE, NPC_BARTHILAS, NPC_BILE_SPEWER, NPC_BLACK_GUARD, NPC_MINDLESS_UNDEAD, NPC_RAMSTEIN_THE_GORGER, and NPC_VENOM_BELCHER.

◆ OnGameObjectCreate()

void instance_stratholme::instance_stratholme_InstanceMapScript::OnGameObjectCreate ( GameObject go)
inlineoverridevirtual

Reimplemented from ZoneScript.

180 {
181 switch (go->GetEntry())
182 {
184 case GO_HOARD_DOOR:
188 go->AllowSaveToDB(true);
189 break;
191 go->AllowSaveToDB(true);
193 if (GetData(TYPE_ZIGGURAT1) >= 1)
195 break;
197 go->AllowSaveToDB(true);
199 if (GetData(TYPE_ZIGGURAT2) >= 1)
201 break;
203 go->AllowSaveToDB(true);
205 if (GetData(TYPE_ZIGGURAT3) >= 1)
207 break;
208 case GO_GAUNTLET_GATE:
209 go->AllowSaveToDB(true);
211 if (_zigguratState1 == 2 && _zigguratState2 == 2 && _zigguratState3 == 2)
213 break;
215 go->AllowSaveToDB(true);
217 if (_zigguratState1 == 2 && _zigguratState2 == 2 && _zigguratState3 == 2)
219 break;
221 go->AllowSaveToDB(true);
223 if (_slaughterProgress == 4)
225 break;
227 go->AllowSaveToDB(true);
229 if (_slaughterProgress == 4)
231 break;
233 go->AllowSaveToDB(true);
234 if (_slaughterProgress >= 2)
236 break;
238 go->AllowSaveToDB(true);
239 _trapGatesGUIDs[0] = go->GetGUID();
240 break;
242 go->AllowSaveToDB(true);
243 _trapGatesGUIDs[1] = go->GetGUID();
244 break;
246 go->AllowSaveToDB(true);
247 _trapGatesGUIDs[2] = go->GetGUID();
248 break;
250 go->AllowSaveToDB(true);
251 _trapGatesGUIDs[3] = go->GetGUID();
252 break;
253 default:
254 break;
255 }
256 }
void SetGoState(GOState state)
Definition GameObject.cpp:2462
void AllowSaveToDB(bool enable)
Definition GameObject.h:360
@ GO_PORT_TRAP_GATE_4
Definition stratholme.h:78
@ GO_PORT_TRAP_GATE_1
Definition stratholme.h:75
@ GO_SLAUGTHER_GATE
Definition stratholme.h:72
@ GO_GAUNTLET_DOOR_1
Definition stratholme.h:64
@ GO_ZIGGURAT_DOORS4
Definition stratholme.h:69
@ GO_HALL_OF_HIGH_COMMAND
Definition stratholme.h:63
@ GO_ZIGGURAT_DOORS1
Definition stratholme.h:66
@ GO_PORT_TRAP_GATE_3
Definition stratholme.h:77
@ GO_ZIGGURAT_DOORS5
Definition stratholme.h:70
@ GO_GAUNTLET_GATE
Definition stratholme.h:71
@ GO_ZIGGURAT_DOORS2
Definition stratholme.h:67
@ GO_PORT_TRAP_GATE_2
Definition stratholme.h:76
@ GO_ZIGGURAT_DOORS3
Definition stratholme.h:68
@ GO_GAUNTLET_DOOR_2
Definition stratholme.h:65
@ GO_CRUSADER_SQUARE_DOOR
Definition stratholme.h:61
@ GO_SLAUGHTER_GATE_SIDE
Definition stratholme.h:73
@ GO_HOARD_DOOR
Definition stratholme.h:62
ObjectGuid _zigguratDoorsGUID4
Definition instance_stratholme.cpp:604
ObjectGuid _zigguratDoorsGUID1
Definition instance_stratholme.cpp:601
ObjectGuid _zigguratDoorsGUID2
Definition instance_stratholme.cpp:602
ObjectGuid _zigguratDoorsGUID5
Definition instance_stratholme.cpp:605
ObjectGuid _zigguratDoorsGUID3
Definition instance_stratholme.cpp:603
uint32 GetData(uint32 type) const override
Definition instance_stratholme.cpp:403

References _gauntletGateGUID, _slaughterGateGUID, _slaughterProgress, _trapGatesGUIDs, _zigguratDoorsGUID1, _zigguratDoorsGUID2, _zigguratDoorsGUID3, _zigguratDoorsGUID4, _zigguratDoorsGUID5, _zigguratState1, _zigguratState2, _zigguratState3, GameObject::AllowSaveToDB(), GetData(), Object::GetEntry(), Object::GetGUID(), GO_CRUSADER_SQUARE_DOOR, GO_GAUNTLET_DOOR_1, GO_GAUNTLET_DOOR_2, GO_GAUNTLET_GATE, GO_HALL_OF_HIGH_COMMAND, GO_HOARD_DOOR, GO_PORT_TRAP_GATE_1, GO_PORT_TRAP_GATE_2, GO_PORT_TRAP_GATE_3, GO_PORT_TRAP_GATE_4, GO_SLAUGHTER_GATE_SIDE, GO_SLAUGTHER_GATE, GO_STATE_ACTIVE, GO_ZIGGURAT_DOORS1, GO_ZIGGURAT_DOORS2, GO_ZIGGURAT_DOORS3, GO_ZIGGURAT_DOORS4, GO_ZIGGURAT_DOORS5, GameObject::SetGoState(), TYPE_ZIGGURAT1, TYPE_ZIGGURAT2, and TYPE_ZIGGURAT3.

◆ OnPlayerEnter()

void instance_stratholme::instance_stratholme_InstanceMapScript::OnPlayerEnter ( Player player)
inlineoverridevirtual

Reimplemented from InstanceScript.

88 {
89 if (_baronRunTime > 0)
90 if (Aura* aura = player->AddAura(SPELL_BARON_ULTIMATUM, player))
91 aura->SetDuration(_baronRunTime * MINUTE * IN_MILLISECONDS);
92 }
constexpr auto IN_MILLISECONDS
Definition Common.h:53
constexpr auto MINUTE
Definition Common.h:47
Definition SpellAuras.h:87
Aura * AddAura(uint32 spellId, Unit *target)
Definition Unit.cpp:18915
@ SPELL_BARON_ULTIMATUM
Definition stratholme.h:105

References _baronRunTime, Unit::AddAura(), IN_MILLISECONDS, MINUTE, and SPELL_BARON_ULTIMATUM.

◆ OnUnitDeath()

void instance_stratholme::instance_stratholme_InstanceMapScript::OnUnitDeath ( Unit unit)
inlineoverridevirtual

Reimplemented from ZoneScript.

157 {
158 switch (unit->GetEntry())
159 {
161 case NPC_BILE_SPEWER:
164 case NPC_BLACK_GUARD:
165 if (--_slaughterNPCs == 0)
166 {
169 SaveToDB();
170 }
171 break;
173 events.CancelEvent(EVENT_BARON_TIME);
175 break;
176 }
177 }
void DoRemoveAurasDueToSpellOnPlayers(uint32 spell)
Definition InstanceScript.cpp:683
void SaveToDB()
Definition InstanceScript.cpp:41
@ EVENT_BARON_TIME
Definition stratholme.h:93
void ProcessSlaughterEvent()
Definition instance_stratholme.cpp:126

References _slaughterNPCs, _slaughterProgress, InstanceScript::DoRemoveAurasDueToSpellOnPlayers(), EVENT_BARON_TIME, Object::GetEntry(), NPC_BARON_RIVENDARE, NPC_BILE_SPEWER, NPC_BLACK_GUARD, NPC_MINDLESS_UNDEAD, NPC_RAMSTEIN_THE_GORGER, NPC_VENOM_BELCHER, ProcessSlaughterEvent(), InstanceScript::SaveToDB(), and SPELL_BARON_ULTIMATUM.

◆ ProcessSlaughterEvent()

void instance_stratholme::instance_stratholme_InstanceMapScript::ProcessSlaughterEvent ( )
inline
127 {
128 if (_slaughterProgress == 1)
129 {
131 baron->AI()->Talk(SAY_BRAON_SUMMON_RAMSTEIN);
132
134 }
135 if (_slaughterProgress == 2)
136 {
137 for (uint32 i = 0; i < 33; ++i)
138 events.ScheduleEvent(EVENT_SPAWN_MINDLESS, 5000 + i * 210);
140 if (GameObject* gate = baron->FindNearestGameObject(GO_SLAUGHTER_GATE_SIDE, 200.0f))
141 gate->SetGoState(GO_STATE_ACTIVE);
142 }
143 if (_slaughterProgress == 3)
144 {
145 events.ScheduleEvent(EVENT_SPAWN_BLACK_GUARD, 20000);
146 }
147 if (_slaughterProgress == 4)
148 {
150 baron->AI()->Talk(SAY_BARON_GUARD_DEAD);
152 gate->SetGoState(GO_STATE_ACTIVE);
153 }
154 }
void Talk(uint8 id, WorldObject const *whisperTarget=nullptr, Milliseconds delay=0s)
Causes the creature to talk/say the text assigned to their entry in the creature_text database table.
Definition CreatureAI.cpp:50
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
GameObject * FindNearestGameObject(uint32 entry, float range, bool onlySpawned=false) const
Definition Object.cpp:2468
Position const SlaughterPos
Definition instance_stratholme.cpp:54
@ SAY_BRAON_SUMMON_RAMSTEIN
Definition stratholme.h:90
@ SAY_BARON_GUARD_DEAD
Definition stratholme.h:91
@ EVENT_SPAWN_MINDLESS
Definition stratholme.h:94
@ EVENT_SPAWN_BLACK_GUARD
Definition stratholme.h:96

References _baronRivendareGUID, _slaughterProgress, _zigguratDoorsGUID5, Creature::AI(), EVENT_SPAWN_BLACK_GUARD, EVENT_SPAWN_MINDLESS, WorldObject::FindNearestGameObject(), Map::GetCreature(), Map::GetGameObject(), GO_SLAUGHTER_GATE_SIDE, GO_STATE_ACTIVE, InstanceScript::instance, NPC_RAMSTEIN_THE_GORGER, SAY_BARON_GUARD_DEAD, SAY_BRAON_SUMMON_RAMSTEIN, SlaughterPos, Map::SummonCreature(), and CreatureAI::Talk().

Referenced by OnUnitDeath(), and Update().

◆ ReadSaveDataMore()

void instance_stratholme::instance_stratholme_InstanceMapScript::ReadSaveDataMore ( std::istringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

371 {
372 data >> _baronRunProgress;
373 data >> _baronRunTime;
374 data >> _zigguratState1;
375 data >> _zigguratState2;
376 data >> _zigguratState3;
377 data >> _slaughterProgress;
378 data >> _postboxesOpened;
379 data >> _barthilasrunProgress;
380 if (_baronRunTime)
381 {
382 events.ScheduleEvent(EVENT_BARON_TIME, 60000);
383 }
384
386 {
387 events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 5000);
388 }
389 }
@ EVENT_FORCE_SLAUGHTER_EVENT
Definition stratholme.h:95

References _baronRunProgress, _baronRunTime, _barthilasrunProgress, _postboxesOpened, _slaughterProgress, _zigguratState1, _zigguratState2, _zigguratState3, EVENT_BARON_TIME, and EVENT_FORCE_SLAUGHTER_EVENT.

◆ SetData()

void instance_stratholme::instance_stratholme_InstanceMapScript::SetData ( uint32  type,
uint32  data 
)
inlineoverridevirtual

Reimplemented from ZoneScript.

289 {
290 switch (type)
291 {
292 case TYPE_BARON_RUN:
293 {
295 {
297 _baronRunTime = 45;
299 events.ScheduleEvent(EVENT_BARON_TIME, 60000);
300
302 baron->AI()->Talk(SAY_BARON_INIT_YELL);
303 }
304 break;
305 }
306 case TYPE_ZIGGURAT1:
307 {
308 if (data == _zigguratState1 + 1)
310
311 if (_zigguratState1 == 1)
313 ziggurat->SetGoState(GO_STATE_ACTIVE);
314
316 break;
317 }
318 case TYPE_ZIGGURAT2:
319 {
320 if (data == _zigguratState2 + 1)
322
323 if (_zigguratState2 == 1)
325 ziggurat->SetGoState(GO_STATE_ACTIVE);
326
328 break;
329 }
330 case TYPE_ZIGGURAT3:
331 {
332 if (data == _zigguratState3 + 1)
334
335 if (_zigguratState3 == 1)
337 ziggurat->SetGoState(GO_STATE_ACTIVE);
338
340 break;
341 }
342 case TYPE_BARON_FIGHT:
343 {
345 gate->SetGoState(data == IN_PROGRESS ? GO_STATE_READY : GO_STATE_ACTIVE);
346 return;
347 }
348 case TYPE_MALLOW:
350 break;
352 if (data == DONE)
353 {
354 if (Creature* barthilas = instance->GetCreature(_barthilasGUID))
355 {
356 if (barthilas->IsAlive())
357 {
359 barthilas->SetHomePosition(BarthilasPos);
360 }
361 }
362 }
364 break;
365 }
366
367 SaveToDB();
368 }
@ GO_STATE_READY
Definition GameObjectData.h:690
@ IN_PROGRESS
Definition InstanceScript.h:59
@ DONE
Definition InstanceScript.h:61
void DoCastSpellOnPlayers(uint32 spell)
Definition InstanceScript.cpp:694
Position const BarthilasPos
Definition instance_stratholme.cpp:53
@ SAY_BARON_INIT_YELL
Definition stratholme.h:85
@ TYPE_BARON_FIGHT
Definition stratholme.h:30
@ DATA_BARON_RUN_NONE
Definition stratholme.h:34
@ DATA_BARON_RUN_GATE
Definition stratholme.h:35
@ TYPE_BARON_RUN
Definition stratholme.h:26
void CheckZiggurats()
Definition instance_stratholme.cpp:258

References _baronRivendareGUID, _baronRunProgress, _baronRunTime, _barthilasGUID, _barthilasrunProgress, _postboxesOpened, _zigguratDoorsGUID1, _zigguratDoorsGUID2, _zigguratDoorsGUID3, _zigguratDoorsGUID5, _zigguratState1, _zigguratState2, _zigguratState3, BarthilasPos, CheckZiggurats(), DATA_BARON_RUN_GATE, DATA_BARON_RUN_NONE, InstanceScript::DoCastSpellOnPlayers(), DONE, EVENT_BARON_TIME, Map::GetCreature(), Map::GetGameObject(), Position::GetOrientation(), Position::GetPositionX(), Position::GetPositionY(), Position::GetPositionZ(), GO_STATE_ACTIVE, GO_STATE_READY, IN_PROGRESS, InstanceScript::instance, InstanceScript::SaveToDB(), SAY_BARON_INIT_YELL, SPELL_BARON_ULTIMATUM, TYPE_BARON_FIGHT, TYPE_BARON_RUN, TYPE_BARTHILAS_RUN, TYPE_MALLOW, TYPE_ZIGGURAT1, TYPE_ZIGGURAT2, and TYPE_ZIGGURAT3.

◆ Update()

void instance_stratholme::instance_stratholme_InstanceMapScript::Update ( uint32  diff)
inlineoverridevirtual

Reimplemented from InstanceScript.

422 {
423 events.Update(diff);
424
425 Map::PlayerList const& players = instance->GetPlayers();
426 // Loop over the two Gate traps, each one has up to three timers (trap reset, gate opening delay, critters spawning delay)
427 for (uint8 i = 0; i < 2; i++)
428 {
429 // if the gate is in cooldown, skip the other checks
430 if (_gateTrapsCooldown[i])
431 break;
432
433 // Check that the trap is not on cooldown, if so check if player/pet is in range
434 for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr)
435 {
436 if (Player* player = itr->GetSource())
437 {
438 // should pet also trigger the trap? could not find any source for it
439 if (!player->IsGameMaster() && player->IsWithinDist2d(aGateTrap[i].m_positionX, aGateTrap[i].m_positionY, 5.5f))
440 {
441 // Check if timer was not already set by another player/pet a few milliseconds before
442 if (_gateTrapsCooldown[i])
443 return;
444
445 _gateTrapsCooldown[i] = true;
446
447 // close the gates
448 if (_trapGatesGUIDs[2 * i])
450 if (_trapGatesGUIDs[2 * i + 1])
452
453 _trappedPlayerGUID = player->GetGUID();
454
455 if (i == 0)
456 {
457 // set timer to reset the trap
458 events.ScheduleEvent(EVENT_GATE1_TRAP, 30 * MINUTE * IN_MILLISECONDS);
459 // set timer to reopen gates
460 events.ScheduleEvent(EVENT_GATE1_DELAY, 20 * IN_MILLISECONDS);
461 // set timer to spawn the plagued critters
463 }
464 else if (i == 1)
465 {
466 // set timer to reset the trap
467 events.ScheduleEvent(EVENT_GATE2_TRAP, 30 * MINUTE * IN_MILLISECONDS);
468 // set timer to reopen gates
469 events.ScheduleEvent(EVENT_GATE2_DELAY, 20 * IN_MILLISECONDS);
470 // set timer to spawn the plagued critters
472 }
473 }
474 }
475 }
476 }
477
478 const int GATE1 = 0;
479 const int GATE2 = 1;
480
481 switch (events.ExecuteEvent())
482 {
483 case EVENT_GATE1_TRAP:
484 _gateTrapsCooldown[GATE1] = false;
485 break;
486 case EVENT_GATE2_TRAP:
487 _gateTrapsCooldown[GATE2] = false;
488 break;
490 gate_delay(GATE1);
491 break;
493 gate_delay(GATE2);
494 break;
496 gate_critter_delay(GATE1);
497 break;
499 gate_critter_delay(GATE2);
500 break;
501 case EVENT_BARON_TIME:
502 {
505 if (baron && !baron->IsInCombat())
506 {
507 switch (_baronRunTime)
508 {
509 case 10:
510 baron->AI()->Talk(SAY_BARON_10M);
511 break;
512 case 5:
513 baron->AI()->Talk(SAY_BARON_5M);
514 if (Creature* ysida = baron->FindNearestCreature(NPC_YSIDA, 50.0f))
515 ysida->AI()->SetData(1, 1);
516 break;
517 case 0:
518 baron->AI()->Talk(SAY_BARON_0M);
520 break;
521 }
522 }
523
524 if (_baronRunTime > 0)
525 events.ScheduleEvent(EVENT_BARON_TIME, 60s);
526 else
527 events.ScheduleEvent(EVENT_EXECUTE_PRISONER, 0ms);
528
529 SaveToDB();
530 break;
531 }
533 {
535 if (baron && baron->IsAlive())
536 {
537 if (!baron->IsInCombat())
538 {
540 if (Creature* ysida = baron->FindNearestCreature(NPC_YSIDA, 50.0f))
541 Unit::Kill(baron, ysida);
542 }
543 else
544 events.ScheduleEvent(EVENT_EXECUTE_PRISONER, 1s);
545 }
546 break;
547 }
549 {
551 break;
552 }
554 {
555 Map::PlayerList const& PlayerList = instance->GetPlayers();
556 if (!PlayerList.IsEmpty())
557 for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
558 if (Player* player = i->GetSource())
559 if (player->GetDistance2d(4034.97f, -3402.13f) < 50.0f)
560 {
562 return;
563 }
564
565 events.ScheduleEvent(EVENT_FORCE_SLAUGHTER_EVENT, 3s);
566 break;
567 }
569 {
570 for (uint8 i = 0; i < 5; ++i)
572 {
573 guard->SetWalk(true);
574 guard->GetMotionMaster()->MovePoint(0, BlackGuardPos[i + 5]);
575 guard->SetHomePosition(BlackGuardPos[i + 5]);
576 if (i == 0 && guard->AI())
577 guard->AI()->Talk(SAY_BLACK_GUARD_INIT);
578 }
579
581 gate->SetGoState(GO_STATE_ACTIVE);
582 break;
583 }
584 default:
585 break;
586 }
587 }
@ EMOTE_ONESHOT_ATTACK1H
Definition SharedDefines.h:1926
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:333
static void Kill(Unit *killer, Unit *victim, bool durabilityLoss=true, WeaponAttackType attackType=BASE_ATTACK, SpellInfo const *spellProto=nullptr, Spell const *spell=nullptr)
Definition Unit.cpp:17754
bool IsAlive() const
Definition Unit.h:1707
void HandleEmoteCommand(uint32 emoteId)
Definition Unit.cpp:2011
bool IsInCombat() const
Definition Unit.h:893
Creature * FindNearestCreature(uint32 entry, float range, bool alive=true) const
Definition Object.cpp:2459
Position const MindlessUndeadPos
Definition instance_stratholme.cpp:52
const Position BlackGuardPos[10]
Definition instance_stratholme.cpp:24
static const Position aGateTrap[]
Definition instance_stratholme.cpp:46
@ EVENT_GATE1_TRAP
Definition stratholme.h:98
@ SAY_BLACK_GUARD_INIT
Definition stratholme.h:84
@ SAY_BARON_10M
Definition stratholme.h:87
@ SAY_BARON_0M
Definition stratholme.h:89
@ EVENT_GATE1_DELAY
Definition stratholme.h:99
@ EVENT_GATE1_CRITTER_DELAY
Definition stratholme.h:100
@ SAY_BARON_5M
Definition stratholme.h:88
@ EVENT_GATE2_CRITTER_DELAY
Definition stratholme.h:103
@ EVENT_GATE2_DELAY
Definition stratholme.h:102
@ EVENT_EXECUTE_PRISONER
Definition stratholme.h:97
@ EVENT_GATE2_TRAP
Definition stratholme.h:101
@ NPC_YSIDA
Definition stratholme.h:49
void gate_delay(int gate)
Definition instance_stratholme.cpp:615
void gate_critter_delay(int gate)
Definition instance_stratholme.cpp:627

References _baronRivendareGUID, _baronRunTime, _gateTrapsCooldown, _trapGatesGUIDs, _trappedPlayerGUID, _zigguratDoorsGUID4, aGateTrap, Creature::AI(), MapRefMgr::begin(), BlackGuardPos, InstanceScript::DoRemoveAurasDueToSpellOnPlayers(), InstanceScript::DoUseDoorOrButton(), EMOTE_ONESHOT_ATTACK1H, MapRefMgr::end(), EVENT_BARON_TIME, EVENT_EXECUTE_PRISONER, EVENT_FORCE_SLAUGHTER_EVENT, EVENT_GATE1_CRITTER_DELAY, EVENT_GATE1_DELAY, EVENT_GATE1_TRAP, EVENT_GATE2_CRITTER_DELAY, EVENT_GATE2_DELAY, EVENT_GATE2_TRAP, EVENT_SPAWN_BLACK_GUARD, EVENT_SPAWN_MINDLESS, WorldObject::FindNearestCreature(), gate_critter_delay(), gate_delay(), Map::GetCreature(), Map::GetGameObject(), Map::GetPlayers(), GO_STATE_ACTIVE, Unit::HandleEmoteCommand(), IN_MILLISECONDS, InstanceScript::instance, Unit::IsAlive(), LinkedListHead::IsEmpty(), Unit::IsInCombat(), Unit::Kill(), MindlessUndeadPos, MINUTE, NPC_BLACK_GUARD, NPC_MINDLESS_UNDEAD, NPC_YSIDA, ProcessSlaughterEvent(), InstanceScript::SaveToDB(), SAY_BARON_0M, SAY_BARON_10M, SAY_BARON_5M, SAY_BLACK_GUARD_INIT, SPELL_BARON_ULTIMATUM, Map::SummonCreature(), and CreatureAI::Talk().

◆ WriteSaveDataMore()

void instance_stratholme::instance_stratholme_InstanceMapScript::WriteSaveDataMore ( std::ostringstream &  data)
inlineoverridevirtual

Reimplemented from InstanceScript.

392 {
393 data << _baronRunProgress << ' '
394 << _baronRunTime << ' '
395 << _zigguratState1 << ' '
396 << _zigguratState2 << ' '
397 << _zigguratState3 << ' '
398 << _slaughterProgress << ' '
399 << _postboxesOpened << ' '
401 }

References _baronRunProgress, _baronRunTime, _barthilasrunProgress, _postboxesOpened, _slaughterProgress, _zigguratState1, _zigguratState2, and _zigguratState3.

Member Data Documentation

◆ _baronRivendareGUID

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_baronRivendareGUID
private

◆ _baronRunProgress

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_baronRunProgress
private

◆ _baronRunTime

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_baronRunTime
private

◆ _barthilasGUID

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_barthilasGUID
private

Referenced by OnCreatureCreate(), and SetData().

◆ _barthilasrunProgress

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_barthilasrunProgress {}
private

◆ _gateTrapsCooldown

bool instance_stratholme::instance_stratholme_InstanceMapScript::_gateTrapsCooldown[2]
private

Referenced by Initialize(), and Update().

◆ _gauntletGateGUID

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_gauntletGateGUID
private

◆ _postboxesOpened

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_postboxesOpened
private

◆ _slaughterGateGUID

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_slaughterGateGUID
private

◆ _slaughterNPCs

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_slaughterNPCs
private

◆ _slaughterProgress

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_slaughterProgress
private

◆ _trapGatesGUIDs

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_trapGatesGUIDs[4]
private

◆ _trappedPlayerGUID

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_trappedPlayerGUID
private

Referenced by gate_critter_delay(), and Update().

◆ _zigguratDoorsGUID1

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratDoorsGUID1
private

Referenced by OnGameObjectCreate(), and SetData().

◆ _zigguratDoorsGUID2

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratDoorsGUID2
private

Referenced by OnGameObjectCreate(), and SetData().

◆ _zigguratDoorsGUID3

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratDoorsGUID3
private

Referenced by OnGameObjectCreate(), and SetData().

◆ _zigguratDoorsGUID4

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratDoorsGUID4
private

Referenced by OnGameObjectCreate(), and Update().

◆ _zigguratDoorsGUID5

ObjectGuid instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratDoorsGUID5
private

◆ _zigguratState1

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratState1
private

◆ _zigguratState2

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratState2
private

◆ _zigguratState3

uint32 instance_stratholme::instance_stratholme_InstanceMapScript::_zigguratState3
private

◆ events

EventMap instance_stratholme::instance_stratholme_InstanceMapScript::events
private

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