diff options
| author | ccrs <ccrs@users.noreply.github.com> | 2019-03-04 16:33:08 +0100 |
|---|---|---|
| committer | ccrs <ccrs@users.noreply.github.com> | 2019-03-04 16:33:08 +0100 |
| commit | e69570dd7662848ae38628c4af71cce002dd1c3d (patch) | |
| tree | db5a867f01d34307437b288b9bfba8fbd5baa43b /src/server/scripts/Northrend | |
| parent | e1aafddc2e90c01d0e2511518d7c23ac6baca935 (diff) | |
Core/Misc: use/implement/portfrommaster InitWorldState packet definition
WorldPackets::WorldState::InitWorldStates
Diffstat (limited to 'src/server/scripts/Northrend')
12 files changed, 109 insertions, 77 deletions
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index 72269798a8a..8f783a5073f 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -15,15 +15,15 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "ruby_sanctum.h" #include "AreaBoundary.h" #include "CreatureAI.h" #include "GameObject.h" #include "InstanceScript.h" #include "Map.h" -#include "ruby_sanctum.h" +#include "ScriptMgr.h" #include "TemporarySummon.h" -#include "WorldPacket.h" +#include "WorldStatePackets.h" Position const HalionControllerSpawnPos = { 3156.037f, 533.2656f, 72.97205f, 0.0f }; @@ -197,11 +197,11 @@ class instance_ruby_sanctum : public InstanceMapScript return BaltharusSharedHealth; } - void FillInitialWorldStates(WorldPacket& data) override + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override { - data << uint32(WORLDSTATE_CORPOREALITY_MATERIAL) << uint32(50); - data << uint32(WORLDSTATE_CORPOREALITY_TWILIGHT) << uint32(50); - data << uint32(WORLDSTATE_CORPOREALITY_TOGGLE) << uint32(0); + packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_MATERIAL, 50); + packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_TWILIGHT, 50); + packet.Worldstates.emplace_back(WORLDSTATE_CORPOREALITY_TOGGLE, 0); } protected: diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp index adaa87f184f..fbab443f327 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp @@ -15,15 +15,15 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" #include "halls_of_reflection.h" #include "InstanceScript.h" #include "Map.h" #include "Player.h" #include "ScriptedCreature.h" +#include "ScriptMgr.h" #include "TemporarySummon.h" #include "Transport.h" -#include "WorldPacket.h" +#include "WorldStatePackets.h" Position const JainaSpawnPos = { 5236.659f, 1929.894f, 707.7781f, 0.8726646f }; // Jaina Spawn Position Position const SylvanasSpawnPos = { 5236.667f, 1929.906f, 707.7781f, 0.8377581f }; // Sylvanas Spawn Position (sniffed) @@ -290,10 +290,10 @@ class instance_halls_of_reflection : public InstanceMapScript } } - void FillInitialWorldStates(WorldPacket& data) override + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override { - data << uint32(WORLD_STATE_HOR_WAVES_ENABLED) << uint32(_introState == DONE && GetBossState(DATA_MARWYN) != DONE); - data << uint32(WORLD_STATE_HOR_WAVE_COUNT) << uint32(_waveCount); + packet.Worldstates.emplace_back(WORLD_STATE_HOR_WAVES_ENABLED, (_introState == DONE && GetBossState(DATA_MARWYN) != DONE) ? 1 : 0); + packet.Worldstates.emplace_back(WORLD_STATE_HOR_WAVE_COUNT, _waveCount); } bool SetBossState(uint32 type, EncounterState state) override diff --git a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp index 024dd39f462..3f6f2f59f6e 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp @@ -15,19 +15,19 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "icecrown_citadel.h" #include "AreaBoundary.h" #include "CreatureAI.h" -#include "icecrown_citadel.h" #include "InstanceScript.h" #include "Map.h" #include "ObjectMgr.h" #include "Player.h" #include "PoolMgr.h" +#include "ScriptMgr.h" #include "TemporarySummon.h" #include "Transport.h" #include "TransportMgr.h" -#include "WorldPacket.h" +#include "WorldStatePackets.h" enum EventIds { @@ -166,13 +166,13 @@ class instance_icecrown_citadel : public InstanceMapScript } } - void FillInitialWorldStates(WorldPacket& data) override + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override { - data << uint32(WORLDSTATE_SHOW_TIMER) << uint32(BloodQuickeningState == IN_PROGRESS); - data << uint32(WORLDSTATE_EXECUTION_TIME) << uint32(BloodQuickeningMinutes); - data << uint32(WORLDSTATE_SHOW_ATTEMPTS) << uint32(instance->IsHeroic()); - data << uint32(WORLDSTATE_ATTEMPTS_REMAINING) << uint32(HeroicAttempts); - data << uint32(WORLDSTATE_ATTEMPTS_MAX) << uint32(MaxHeroicAttempts); + packet.Worldstates.emplace_back(WORLDSTATE_SHOW_TIMER, BloodQuickeningState == IN_PROGRESS ? 1 : 0); + packet.Worldstates.emplace_back(WORLDSTATE_EXECUTION_TIME, BloodQuickeningMinutes); + packet.Worldstates.emplace_back(WORLDSTATE_SHOW_ATTEMPTS, instance->IsHeroic() ? 1 : 0); + packet.Worldstates.emplace_back(WORLDSTATE_ATTEMPTS_REMAINING, HeroicAttempts); + packet.Worldstates.emplace_back(WORLDSTATE_ATTEMPTS_MAX, MaxHeroicAttempts); } void OnPlayerEnter(Player* player) override diff --git a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp index f2a32072a00..feb075aaf85 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp @@ -15,16 +15,16 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "oculus.h" #include "Creature.h" #include "CreatureAI.h" #include "GameObject.h" #include "InstanceScript.h" #include "Map.h" #include "MotionMaster.h" -#include "oculus.h" +#include "ScriptMgr.h" #include "TemporarySummon.h" -#include "WorldPacket.h" +#include "WorldStatePackets.h" DoorData const doorData[] = { @@ -145,17 +145,17 @@ class instance_oculus : public InstanceMapScript } } - void FillInitialWorldStates(WorldPacket& data) override + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override { if (GetBossState(DATA_DRAKOS) == DONE && GetBossState(DATA_VAROS) != DONE) { - data << uint32(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW) << uint32(1); - data << uint32(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT) << uint32(CentrifugueConstructCounter); + packet.Worldstates.emplace_back(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 1); + packet.Worldstates.emplace_back(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT, CentrifugueConstructCounter); } else { - data << uint32(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW) << uint32(0); - data << uint32(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT) << uint32(0); + packet.Worldstates.emplace_back(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 0); + packet.Worldstates.emplace_back(WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT, 0); } } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp index 12820df6dbf..bc11a51c016 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp @@ -526,9 +526,18 @@ class spell_auriaya_sentinel_blast : public SpellScript { PrepareSpellScript(spell_auriaya_sentinel_blast); - void FilterTargets(std::list<WorldObject*>& unitList) + void FilterTargets(std::list<WorldObject*>& targets) { - unitList.remove_if(PlayerOrPetCheck()); + targets.remove_if([](WorldObject* object) -> bool + { + if (object->GetTypeId() == TYPEID_PLAYER) + return false; + + if (Creature* creature = object->ToCreature()) + return !creature->IsPet(); + + return true; + }); } void Register() override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index 375dab28cf9..c32d16f5129 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -617,9 +617,18 @@ class spell_kologarn_stone_shout : public SpellScriptLoader { PrepareSpellScript(spell_kologarn_stone_shout_SpellScript); - void FilterTargets(std::list<WorldObject*>& unitList) + void FilterTargets(std::list<WorldObject*>& targets) { - unitList.remove_if(PlayerOrPetCheck()); + targets.remove_if([](WorldObject* object) -> bool + { + if (object->GetTypeId() == TYPEID_PLAYER) + return false; + + if (Creature* creature = object->ToCreature()) + return !creature->IsPet(); + + return true; + }); } void Register() override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index c69a542c873..cf200c689af 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -599,7 +599,7 @@ class boss_thorim : public CreatureScript events.ScheduleEvent(EVENT_OUTRO_2, _hardMode ? 8000 : 11000); events.ScheduleEvent(EVENT_OUTRO_3, _hardMode ? 19000 : 21000); - me->m_Events.AddEvent(new KeeperDespawnEvent(me), me->m_Events.CalculateTime(35000)); + me->m_Events.AddEvent(new UlduarKeeperDespawnEvent(me), me->m_Events.CalculateTime(35000)); } void MovementInform(uint32 type, uint32 id) override @@ -1730,9 +1730,18 @@ class spell_thorim_frostbolt_volley : public SpellScriptLoader { PrepareSpellScript(spell_thorim_frostbolt_volley_SpellScript); - void FilterTargets(std::list<WorldObject*>& unitList) + void FilterTargets(std::list<WorldObject*>& targets) { - unitList.remove_if(PlayerOrPetCheck()); + targets.remove_if([](WorldObject* object) -> bool + { + if (object->GetTypeId() == TYPEID_PLAYER) + return false; + + if (Creature* creature = object->ToCreature()) + return !creature->IsPet(); + + return true; + }); } void Register() override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index a51a3ce8cd2..d974bd2b7e0 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -853,7 +853,16 @@ class spell_xt002_tympanic_tantrum : public SpellScript void FilterTargets(std::list<WorldObject*>& targets) { - targets.remove_if(PlayerOrPetCheck()); + targets.remove_if([](WorldObject* object) -> bool + { + if (object->GetTypeId() == TYPEID_PLAYER) + return false; + + if (Creature* creature = object->ToCreature()) + return !creature->IsPet(); + + return true; + }); } void RecalculateDamage() diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index efcecae2537..75e167cbf1d 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -15,7 +15,7 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "ulduar.h" #include "AreaBoundary.h" #include "CreatureAI.h" #include "GameObject.h" @@ -23,12 +23,12 @@ #include "Item.h" #include "Map.h" #include "Player.h" +#include "ScriptMgr.h" #include "Spell.h" #include "SpellScript.h" #include "TemporarySummon.h" -#include "ulduar.h" #include "Vehicle.h" -#include "WorldPacket.h" +#include "WorldStatePackets.h" static BossBoundaryData const boundaries = { @@ -142,6 +142,17 @@ ObjectData const objectData[] = { 0, 0 } }; +UlduarKeeperDespawnEvent::UlduarKeeperDespawnEvent(Creature* owner, uint32 despawnTimerOffset) : _owner(owner), _despawnTimer(despawnTimerOffset) +{ +} + +bool UlduarKeeperDespawnEvent::Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) +{ + _owner->CastSpell(_owner, SPELL_TELEPORT_KEEPER_VISUAL); + _owner->DespawnOrUnsummon(1000 + _despawnTimer); + return true; +} + class instance_ulduar : public InstanceMapScript { public: @@ -215,10 +226,10 @@ class instance_ulduar : public InstanceMapScript bool Unbroken; bool IsDriveMeCrazyEligible; - void FillInitialWorldStates(WorldPacket& packet) override + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override { - packet << uint32(WORLD_STATE_ALGALON_TIMER_ENABLED) << uint32(_algalonTimer && _algalonTimer <= 60); - packet << uint32(WORLD_STATE_ALGALON_DESPAWN_TIMER) << uint32(std::min<uint32>(_algalonTimer, 60)); + packet.Worldstates.emplace_back(WORLD_STATE_ALGALON_TIMER_ENABLED, (_algalonTimer && _algalonTimer <= 60) ? 1 : 0); + packet.Worldstates.emplace_back(WORLD_STATE_ALGALON_DESPAWN_TIMER, std::min<int32>(_algalonTimer, 60)); } void OnPlayerEnter(Player* player) override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h index 2c75a2cc0cb..345bbfbcbed 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h @@ -19,6 +19,8 @@ #define DEF_ULDUAR_H #include "CreatureAIImpl.h" +#include "EventProcessor.h" +#include "Position.h" #define UlduarScriptName "instance_ulduar" #define DataHeader "UU" @@ -506,44 +508,26 @@ enum YoggSaronIllusions STORMWIND_ILLUSION = 2, }; -template <class AI, class T> -inline AI* GetUlduarAI(T* obj) -{ - return GetInstanceAI<AI, T>(obj, UlduarScriptName); -} - -#define RegisterUlduarCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetUlduarAI) +class Creature; -class KeeperDespawnEvent : public BasicEvent +class UlduarKeeperDespawnEvent : public BasicEvent { public: - KeeperDespawnEvent(Creature* owner, uint32 despawnTimerOffset = 500) : _owner(owner), _despawnTimer(despawnTimerOffset) { } + UlduarKeeperDespawnEvent(Creature* owner, uint32 despawnTimerOffset = 500); - bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override - { - _owner->CastSpell(_owner, SPELL_TELEPORT_KEEPER_VISUAL); - _owner->DespawnOrUnsummon(1000 + _despawnTimer); - return true; - } + bool Execute(uint64 /*eventTime*/, uint32 /*updateTime*/) override; private: Creature* _owner; uint32 _despawnTimer; }; -class PlayerOrPetCheck +template <class AI, class T> +inline AI* GetUlduarAI(T* obj) { - public: - bool operator()(WorldObject* object) const - { - if (object->GetTypeId() == TYPEID_PLAYER) - return false; - - if (Creature* creature = object->ToCreature()) - return !creature->IsPet(); + return GetInstanceAI<AI, T>(obj, UlduarScriptName); +} - return true; - } -}; +#define RegisterUlduarCreatureAI(ai_name) RegisterCreatureAIWithFactory(ai_name, GetUlduarAI) #endif diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index fde6f9585ef..e665752c054 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -15,16 +15,16 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "violet_hold.h" #include "GameObject.h" #include "InstanceScript.h" #include "Map.h" #include "MotionMaster.h" #include "Player.h" #include "ScriptedCreature.h" +#include "ScriptMgr.h" #include "TemporarySummon.h" -#include "violet_hold.h" -#include "WorldPacket.h" +#include "WorldStatePackets.h" /* * TODO: @@ -290,11 +290,11 @@ class instance_violet_hold : public InstanceMapScript } } - void FillInitialWorldStates(WorldPacket& data) override + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override { - data << uint32(WORLD_STATE_VH_SHOW) << uint32(EventState == IN_PROGRESS ? 1 : 0); - data << uint32(WORLD_STATE_VH_PRISON_STATE) << uint32(DoorIntegrity); - data << uint32(WORLD_STATE_VH_WAVE_COUNT) << uint32(WaveCount); + packet.Worldstates.emplace_back(WORLD_STATE_VH_SHOW, EventState == IN_PROGRESS ? 1 : 0); + packet.Worldstates.emplace_back(WORLD_STATE_VH_PRISON_STATE, DoorIntegrity); + packet.Worldstates.emplace_back(WORLD_STATE_VH_WAVE_COUNT, WaveCount); } bool CheckRequiredBosses(uint32 bossId, Player const* player = nullptr) const override diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.h b/src/server/scripts/Northrend/VioletHold/violet_hold.h index 601ce93a49e..283c620afc1 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.h +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.h @@ -19,6 +19,7 @@ #define VIOLET_HOLD_H_ #include "CreatureAIImpl.h" +#include "Position.h" #define VioletHoldScriptName "instance_violet_hold" #define DataHeader "VH" |
