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 | |
| parent | e1aafddc2e90c01d0e2511518d7c23ac6baca935 (diff) | |
Core/Misc: use/implement/portfrommaster InitWorldState packet definition
WorldPackets::WorldState::InitWorldStates
Diffstat (limited to 'src/server/scripts')
26 files changed, 324 insertions, 442 deletions
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp index 180ffd49929..d30f45e8bc2 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp @@ -15,18 +15,19 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "culling_of_stratholme.h" #include "CreatureAI.h" #include "CreatureTextMgr.h" -#include "culling_of_stratholme.h" #include "EventMap.h" #include "GameObject.h" #include "InstanceScript.h" #include "Map.h" #include "MotionMaster.h" #include "Player.h" +#include "ScriptMgr.h" #include "SpellInfo.h" #include "TemporarySummon.h" +#include "WorldStatePackets.h" /* Culling of Stratholme encounters: 0 - Meathook @@ -71,13 +72,13 @@ class instance_culling_of_stratholme : public InstanceMapScript _infiniteCouterState = NOT_STARTED; } - void FillInitialWorldStates(WorldPacket& data) override + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override { - data << uint32(WORLDSTATE_SHOW_CRATES) << uint32(1); - data << uint32(WORLDSTATE_CRATES_REVEALED) << uint32(_crateCount); - data << uint32(WORLDSTATE_WAVE_COUNT) << uint32(0); - data << uint32(WORLDSTATE_TIME_GUARDIAN) << uint32(25); - data << uint32(WORLDSTATE_TIME_GUARDIAN_SHOW) << uint32(0); + packet.Worldstates.emplace_back(WORLDSTATE_SHOW_CRATES, 1); + packet.Worldstates.emplace_back(WORLDSTATE_CRATES_REVEALED, _crateCount); + packet.Worldstates.emplace_back(WORLDSTATE_WAVE_COUNT, 0); + packet.Worldstates.emplace_back(WORLDSTATE_TIME_GUARDIAN, 25); + packet.Worldstates.emplace_back(WORLDSTATE_TIME_GUARDIAN_SHOW, 0); } void OnCreatureCreate(Creature* creature) override diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index 634b9ca32f2..97a41464fe5 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -209,21 +209,6 @@ class boss_skeram : public CreatureScript } }; -class PlayerOrPetCheck -{ - public: - bool operator()(WorldObject* object) const - { - if (object->GetTypeId() == TYPEID_PLAYER) - return false; - - if (Creature* creature = object->ToCreature()) - return !creature->IsPet(); - - return true; - } -}; - // 26192 - Arcane Explosion class spell_skeram_arcane_explosion : public SpellScriptLoader { @@ -236,7 +221,16 @@ class spell_skeram_arcane_explosion : public SpellScriptLoader 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 Register() override 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" diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp index 86ea4b1fa21..b1df97b7883 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp @@ -15,39 +15,30 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "MapManager.h" -#include "ScriptMgr.h" #include "OutdoorPvPEP.h" -#include "WorldPacket.h" -#include "Player.h" +#include "Creature.h" #include "GameObject.h" -#include "ObjectMgr.h" +#include "GossipDef.h" +#include "MapManager.h" #include "ObjectAccessor.h" +#include "ObjectMgr.h" #include "OutdoorPvPMgr.h" -#include "Creature.h" -#include "GossipDef.h" +#include "ScriptMgr.h" +#include "Player.h" +#include "WorldStatePackets.h" uint32 const EP_AllianceBuffs[4] = { 11413, 11414, 11415, 1386 }; - uint32 const EP_HordeBuffs[4] = { 30880, 30683, 30682, 29520 }; - uint32 const EP_GraveyardZone = 139; - uint32 const EP_GraveyardId = 927; - uint8 const EPBuffZonesNum = 3; - uint32 const EP_EWT_CM = 17690; uint32 const EP_CGT_CM = 17689; uint32 const EP_NPT_CM = 17696; uint32 const EP_PWT_CM = 17698; - uint32 const EPBuffZones[EPBuffZonesNum] = { 139, 2017, 2057 }; - -/* -uint32 const EPTowerPlayerEnterEvents[EP_TOWER_NUM] = { 10691, 10699, 10701, 10705 }; -uint32 const EPTowerPlayerLeaveEvents[EP_TOWER_NUM] = { 10692, 10698, 10700, 10704 }; -*/ +//uint32 const EPTowerPlayerEnterEvents[EP_TOWER_NUM] = { 10691, 10699, 10701, 10705 }; +//uint32 const EPTowerPlayerLeaveEvents[EP_TOWER_NUM] = { 10692, 10698, 10700, 10704 }; go_type const EPCapturePoints[EP_TOWER_NUM] = { @@ -94,8 +85,7 @@ creature_type const EP_PWT_FlightMaster = { 17209, 0, { 2987.5f, -3049.11f, 120. // after spawning, modify the faction so that only the controller will be able to use it with SetUInt32Value(GAMEOBJECT_FACTION, faction_id); go_type const EP_NPT_LordaeronShrine = { 181682, 0, { 3167.72f, -4355.91f, 138.785f, 1.69297f }, { 0.0f, 0.0f, 0.748956f, 0.66262f } }; -OPvPCapturePointEP_EWT::OPvPCapturePointEP_EWT(OutdoorPvP* pvp) -: OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_UnitsSummonedSide(0) +OPvPCapturePointEP_EWT::OPvPCapturePointEP_EWT(OutdoorPvP* pvp) : OPvPCapturePoint(pvp), m_TowerState(EP_TS_N), m_UnitsSummonedSide(0) { SetCapturePointData(EPCapturePoints[EP_EWT].entry, EPCapturePoints[EP_EWT].map, EPCapturePoints[EP_EWT].pos, EPCapturePoints[EP_EWT].rot); AddObject(EP_EWT_FLAGS, EPTowerFlags[EP_EWT].entry, EPTowerFlags[EP_EWT].map, EPTowerFlags[EP_EWT].pos, EPTowerFlags[EP_EWT].rot); @@ -154,13 +144,13 @@ void OPvPCapturePointEP_EWT::ChangeState() SendObjectiveComplete(EP_EWT_CM, ObjectGuid::Empty); } -void OPvPCapturePointEP_EWT::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointEP_EWT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << EP_EWT_A << uint32((m_TowerState & EP_TS_A) != 0); - data << EP_EWT_H << uint32((m_TowerState & EP_TS_H) != 0); - data << EP_EWT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); - data << EP_EWT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); - data << EP_EWT_N << uint32((m_TowerState & EP_TS_N) != 0); + packet.Worldstates.emplace_back(EP_EWT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_EWT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_EWT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_EWT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_EWT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0); } void OPvPCapturePointEP_EWT::UpdateTowerState() @@ -262,13 +252,13 @@ void OPvPCapturePointEP_NPT::ChangeState() SendObjectiveComplete(EP_NPT_CM, ObjectGuid::Empty); } -void OPvPCapturePointEP_NPT::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointEP_NPT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << EP_NPT_A << uint32((m_TowerState & EP_TS_A) != 0); - data << EP_NPT_H << uint32((m_TowerState & EP_TS_H) != 0); - data << EP_NPT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); - data << EP_NPT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); - data << EP_NPT_N << uint32((m_TowerState & EP_TS_N) != 0); + packet.Worldstates.emplace_back(EP_NPT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_NPT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_NPT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_NPT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_NPT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0); } void OPvPCapturePointEP_NPT::UpdateTowerState() @@ -357,13 +347,13 @@ void OPvPCapturePointEP_CGT::ChangeState() SendObjectiveComplete(EP_CGT_CM, ObjectGuid::Empty); } -void OPvPCapturePointEP_CGT::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointEP_CGT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << EP_CGT_A << uint32((m_TowerState & EP_TS_A) != 0); - data << EP_CGT_H << uint32((m_TowerState & EP_TS_H) != 0); - data << EP_CGT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); - data << EP_CGT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); - data << EP_CGT_N << uint32((m_TowerState & EP_TS_N) != 0); + packet.Worldstates.emplace_back(EP_CGT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_CGT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_CGT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_CGT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_CGT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0); } void OPvPCapturePointEP_CGT::UpdateTowerState() @@ -456,13 +446,13 @@ void OPvPCapturePointEP_PWT::ChangeState() SendObjectiveComplete(EP_PWT_CM, ObjectGuid::Empty); } -void OPvPCapturePointEP_PWT::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointEP_PWT::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << EP_PWT_A << uint32((m_TowerState & EP_TS_A) != 0); - data << EP_PWT_H << uint32((m_TowerState & EP_TS_H) != 0); - data << EP_PWT_N_A << uint32((m_TowerState & EP_TS_N_A) != 0); - data << EP_PWT_N_H << uint32((m_TowerState & EP_TS_N_H) != 0); - data << EP_PWT_N << uint32((m_TowerState & EP_TS_N) != 0); + packet.Worldstates.emplace_back(EP_PWT_A, (m_TowerState & EP_TS_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_PWT_H, (m_TowerState & EP_TS_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_PWT_N_A, (m_TowerState & EP_TS_N_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_PWT_N_H, (m_TowerState & EP_TS_N_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(EP_PWT_N, (m_TowerState & EP_TS_N) != 0 ? 1 : 0); } void OPvPCapturePointEP_PWT::UpdateTowerState() @@ -628,13 +618,13 @@ void OutdoorPvPEP::SetControlledState(uint32 index, uint32 state) EP_Controls[index] = state; } -void OutdoorPvPEP::FillInitialWorldStates(WorldPacket & data) +void OutdoorPvPEP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << EP_UI_TOWER_COUNT_A << m_AllianceTowersControlled; - data << EP_UI_TOWER_COUNT_H << m_HordeTowersControlled; + packet.Worldstates.emplace_back(EP_UI_TOWER_COUNT_A, m_AllianceTowersControlled); + packet.Worldstates.emplace_back(EP_UI_TOWER_COUNT_H, m_HordeTowersControlled); for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - itr->second->FillInitialWorldStates(data); + itr->second->FillInitialWorldStates(packet); } void OutdoorPvPEP::SendRemoveWorldStates(Player* player) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h index bcc08469ba7..f0ed3d873e6 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPEP.h @@ -123,25 +123,39 @@ enum EP_TowerStates EP_TS_H = 64 }; -class OutdoorPvPEP; +class OutdoorPvPEP : public OutdoorPvP +{ + public: + OutdoorPvPEP(); + + bool SetupOutdoorPvP() override; + void HandlePlayerEnterZone(Player* player, uint32 zone) override; + void HandlePlayerLeaveZone(Player* player, uint32 zone) override; + bool Update(uint32 diff) override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; + void SendRemoveWorldStates(Player* player) override; + + void BuffTeams(); + void SetControlledState(uint32 index, uint32 state); + + uint32 EP_Controls[EP_TOWER_NUM]; // how many towers are controlled + uint32 m_AllianceTowersControlled; + uint32 m_HordeTowersControlled; +}; class OPvPCapturePointEP_EWT : public OPvPCapturePoint { public: OPvPCapturePointEP_EWT(OutdoorPvP* pvp); - void ChangeState(); - - void FillInitialWorldStates(WorldPacket & data); + void ChangeState() override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; protected: void SummonSupportUnitAtNorthpassTower(uint32 team); - void UpdateTowerState(); - protected: uint32 m_TowerState; - uint32 m_UnitsSummonedSide; }; @@ -150,18 +164,14 @@ class OPvPCapturePointEP_NPT : public OPvPCapturePoint public: OPvPCapturePointEP_NPT(OutdoorPvP* pvp); - void ChangeState(); - - void FillInitialWorldStates(WorldPacket & data); + void ChangeState() override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; protected: void SummonGO(uint32 team); - void UpdateTowerState(); - protected: uint32 m_TowerState; - uint32 m_SummonedGOSide; }; @@ -170,18 +180,14 @@ class OPvPCapturePointEP_CGT : public OPvPCapturePoint public: OPvPCapturePointEP_CGT(OutdoorPvP* pvp); - void ChangeState(); - - void FillInitialWorldStates(WorldPacket & data); + void ChangeState() override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; protected: void LinkGraveyard(uint32 team); - void UpdateTowerState(); - protected: uint32 m_TowerState; - uint32 m_GraveyardSide; }; @@ -190,47 +196,15 @@ class OPvPCapturePointEP_PWT : public OPvPCapturePoint public: OPvPCapturePointEP_PWT(OutdoorPvP* pvp); - void ChangeState(); - - void FillInitialWorldStates(WorldPacket & data); + void ChangeState() override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; protected: void SummonFlightMaster(uint32 team); - void UpdateTowerState(); - protected: uint32 m_FlightMasterSpawned; - uint32 m_TowerState; }; -class OutdoorPvPEP : public OutdoorPvP -{ - public: - OutdoorPvPEP(); - - bool SetupOutdoorPvP(); - - void HandlePlayerEnterZone(Player* player, uint32 zone); - void HandlePlayerLeaveZone(Player* player, uint32 zone); - - bool Update(uint32 diff); - - void FillInitialWorldStates(WorldPacket &data); - - void SendRemoveWorldStates(Player* player); - - void BuffTeams(); - - void SetControlledState(uint32 index, uint32 state); - - private: - // how many towers are controlled - uint32 EP_Controls[EP_TOWER_NUM]; - - uint32 m_AllianceTowersControlled; - uint32 m_HordeTowersControlled; -}; - #endif diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp index a9b7f7b97a7..f44b9770656 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp @@ -15,29 +15,22 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "OutdoorPvPHP.h" #include "GameObject.h" #include "Map.h" -#include "OutdoorPvPHP.h" #include "OutdoorPvPMgr.h" #include "Player.h" -#include "WorldPacket.h" +#include "ScriptMgr.h" +#include "WorldStatePackets.h" uint32 const OutdoorPvPHPBuffZonesNum = 6; - // HP, citadel, ramparts, blood furnace, shattered halls, mag's lair -uint32 const OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum] = { 3483, 3563, 3562, 3713, 3714, 3836 }; - +uint32 const OutdoorPvPHPBuffZones[OutdoorPvPHPBuffZonesNum] = { 3483, 3563, 3562, 3713, 3714, 3836 }; // HP, citadel, ramparts, blood furnace, shattered halls, mag's lair uint32 const HP_CREDITMARKER[HP_TOWER_NUM] = { 19032, 19028, 19029 }; - -/* -uint32 const HP_CapturePointEvent_Enter[HP_TOWER_NUM] = { 11404, 11396, 11388 }; -uint32 const HP_CapturePointEvent_Leave[HP_TOWER_NUM] = { 11403, 11395, 11387 }; -*/ - +//uint32 const HP_CapturePointEvent_Enter[HP_TOWER_NUM] = { 11404, 11396, 11388 }; +//uint32 const HP_CapturePointEvent_Leave[HP_TOWER_NUM] = { 11403, 11395, 11387 }; uint32 const HP_MAP_N[HP_TOWER_NUM] = { 0x9b5, 0x9b2, 0x9a8 }; uint32 const HP_MAP_A[HP_TOWER_NUM] = { 0x9b3, 0x9b0, 0x9a7 }; uint32 const HP_MAP_H[HP_TOWER_NUM] = { 0x9b4, 0x9b1, 0x9a6 }; - uint32 const HP_TowerArtKit_A[HP_TOWER_NUM] = { 65, 62, 67 }; uint32 const HP_TowerArtKit_H[HP_TOWER_NUM] = { 64, 61, 68 }; uint32 const HP_TowerArtKit_N[HP_TOWER_NUM] = { 66, 63, 69 }; @@ -59,13 +52,11 @@ go_type const HPTowerFlags[HP_TOWER_NUM] = uint32 const HP_LANG_CAPTURE_A[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_ALLIANCE, TEXT_OVERLOOK_TAKEN_ALLIANCE, TEXT_STADIUM_TAKEN_ALLIANCE }; uint32 const HP_LANG_CAPTURE_H[HP_TOWER_NUM] = { TEXT_BROKEN_HILL_TAKEN_HORDE, TEXT_OVERLOOK_TAKEN_HORDE, TEXT_STADIUM_TAKEN_HORDE }; -OPvPCapturePointHP::OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type) -: OPvPCapturePoint(pvp), m_TowerType(type) +OPvPCapturePointHP::OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type) : OPvPCapturePoint(pvp), m_TowerType(type) { SetCapturePointData(HPCapturePoints[type].entry, HPCapturePoints[type].map, HPCapturePoints[type].pos, HPCapturePoints[type].rot); AddObject(type, HPTowerFlags[type].entry, HPTowerFlags[type].map, HPTowerFlags[type].pos, HPTowerFlags[type].rot); } - OutdoorPvPHP::OutdoorPvPHP() { m_TypeId = OUTDOOR_PVP_HP; @@ -156,15 +147,15 @@ void OutdoorPvPHP::SendRemoveWorldStates(Player* player) } } -void OutdoorPvPHP::FillInitialWorldStates(WorldPacket &data) +void OutdoorPvPHP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << uint32(HP_UI_TOWER_DISPLAY_A) << uint32(1); - data << uint32(HP_UI_TOWER_DISPLAY_H) << uint32(1); - data << uint32(HP_UI_TOWER_COUNT_A) << uint32(m_AllianceTowersControlled); - data << uint32(HP_UI_TOWER_COUNT_H) << uint32(m_HordeTowersControlled); + packet.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_A, 1); + packet.Worldstates.emplace_back(HP_UI_TOWER_DISPLAY_H, 1); + packet.Worldstates.emplace_back(HP_UI_TOWER_COUNT_A, m_AllianceTowersControlled); + packet.Worldstates.emplace_back(HP_UI_TOWER_COUNT_H, m_HordeTowersControlled); for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - itr->second->FillInitialWorldStates(data); + itr->second->FillInitialWorldStates(packet); } void OPvPCapturePointHP::ChangeState() @@ -270,29 +261,29 @@ void OPvPCapturePointHP::ChangeState() SendObjectiveComplete(HP_CREDITMARKER[m_TowerType], ObjectGuid::Empty); } -void OPvPCapturePointHP::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointHP::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { switch (m_State) { case OBJECTIVESTATE_ALLIANCE: case OBJECTIVESTATE_ALLIANCE_HORDE_CHALLENGE: - data << uint32(HP_MAP_N[m_TowerType]) << uint32(0); - data << uint32(HP_MAP_A[m_TowerType]) << uint32(1); - data << uint32(HP_MAP_H[m_TowerType]) << uint32(0); + packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 0); + packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 1); + packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 0); break; case OBJECTIVESTATE_HORDE: case OBJECTIVESTATE_HORDE_ALLIANCE_CHALLENGE: - data << uint32(HP_MAP_N[m_TowerType]) << uint32(0); - data << uint32(HP_MAP_A[m_TowerType]) << uint32(0); - data << uint32(HP_MAP_H[m_TowerType]) << uint32(1); + packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 0); + packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 0); + packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 1); break; case OBJECTIVESTATE_NEUTRAL: case OBJECTIVESTATE_NEUTRAL_ALLIANCE_CHALLENGE: case OBJECTIVESTATE_NEUTRAL_HORDE_CHALLENGE: default: - data << uint32(HP_MAP_N[m_TowerType]) << uint32(1); - data << uint32(HP_MAP_A[m_TowerType]) << uint32(0); - data << uint32(HP_MAP_H[m_TowerType]) << uint32(0); + packet.Worldstates.emplace_back(HP_MAP_N[m_TowerType], 1); + packet.Worldstates.emplace_back(HP_MAP_A[m_TowerType], 0); + packet.Worldstates.emplace_back(HP_MAP_H[m_TowerType], 0); break; } } diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h index 7464a9dea84..ad96953b89e 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPHP.h @@ -61,8 +61,7 @@ class OPvPCapturePointHP : public OPvPCapturePoint OPvPCapturePointHP(OutdoorPvP* pvp, OutdoorPvPHPTowerType type); void ChangeState() override; - - void FillInitialWorldStates(WorldPacket & data) override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; private: OutdoorPvPHPTowerType m_TowerType; @@ -79,22 +78,17 @@ class OutdoorPvPHP : public OutdoorPvP void HandlePlayerLeaveZone(Player* player, uint32 zone) override; bool Update(uint32 diff) override; - - void FillInitialWorldStates(WorldPacket &data) override; - + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; void SendRemoveWorldStates(Player* player) override; - void HandleKillImpl(Player* player, Unit* killed) override; uint32 GetAllianceTowersControlled() const; void SetAllianceTowersControlled(uint32 count); - uint32 GetHordeTowersControlled() const; void SetHordeTowersControlled(uint32 count); private: - // how many towers are controlled - uint32 m_AllianceTowersControlled; + uint32 m_AllianceTowersControlled; // how many towers are controlled uint32 m_HordeTowersControlled; }; diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp index f9f8172249b..f63f8849a77 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp @@ -15,33 +15,24 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "OutdoorPvPNA.h" #include "Creature.h" #include "GameObject.h" +#include "Map.h" #include "ObjectMgr.h" #include "OutdoorPvPMgr.h" -#include "OutdoorPvPNA.h" -#include "Map.h" #include "Player.h" -#include "WorldPacket.h" - - // kill credit for pks -uint32 const NA_CREDIT_MARKER = 24867; +#include "ScriptMgr.h" +#include "WorldStatePackets.h" +uint32 const NA_CREDIT_MARKER = 24867; // kill credit for pks uint32 const NA_GUARDS_MAX = 15; - uint32 const NA_BUFF_ZONE = 3518; - uint32 const NA_HALAA_GRAVEYARD = 993; - uint32 const NA_HALAA_GRAVEYARD_ZONE = 3518; // need to add zone id, not area id - uint32 const NA_RESPAWN_TIME = 3600000; // one hour to capture after defeating all guards - uint32 const NA_GUARD_CHECK_TIME = 500; // every half second - uint32 const FLIGHT_NODES_NUM = 4; - uint32 const FlightPathStartNodes[FLIGHT_NODES_NUM] = { 103, 105, 107, 109 }; uint32 const FlightPathEndNodes[FLIGHT_NODES_NUM] = { 104, 106, 108, 110 }; @@ -285,10 +276,8 @@ void OPvPCapturePointNA::FactionTakeOver(uint32 team) UpdateWyvernRoostWorldState(NA_ROOST_E); } -OPvPCapturePointNA::OPvPCapturePointNA(OutdoorPvP* pvp) : -OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFaction(0), -m_WyvernStateNorth(0), m_WyvernStateSouth(0), m_WyvernStateEast(0), m_WyvernStateWest(0), -m_HalaaState(HALAA_N), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME) +OPvPCapturePointNA::OPvPCapturePointNA(OutdoorPvP* pvp) : OPvPCapturePoint(pvp), m_capturable(true), m_GuardsAlive(0), m_ControllingFaction(0), m_WyvernStateNorth(0), m_WyvernStateSouth(0), m_WyvernStateEast(0), + m_WyvernStateWest(0), m_HalaaState(HALAA_N), m_RespawnTimer(NA_RESPAWN_TIME), m_GuardCheckTimer(NA_GUARD_CHECK_TIME) { SetCapturePointData(182210, 530, { -1572.57f, 7945.3f, -22.475f, 2.05949f }, { 0.0f, 0.0f, 0.857167f, 0.515038f }); } @@ -322,57 +311,52 @@ void OutdoorPvPNA::HandlePlayerLeaveZone(Player* player, uint32 zone) OutdoorPvP::HandlePlayerLeaveZone(player, zone); } -void OutdoorPvPNA::FillInitialWorldStates(WorldPacket &data) +void OutdoorPvPNA::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - m_obj->FillInitialWorldStates(data); + m_obj->FillInitialWorldStates(packet); } -void OPvPCapturePointNA::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointNA::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { if (m_ControllingFaction == ALLIANCE) { - data << NA_UI_HORDE_GUARDS_SHOW << uint32(0); - data << NA_UI_ALLIANCE_GUARDS_SHOW << uint32(1); + packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 0); + packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 1); } else if (m_ControllingFaction == HORDE) { - data << NA_UI_HORDE_GUARDS_SHOW << uint32(1); - data << NA_UI_ALLIANCE_GUARDS_SHOW << uint32(0); + packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 1); + packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 0); } else { - data << NA_UI_HORDE_GUARDS_SHOW << uint32(0); - data << NA_UI_ALLIANCE_GUARDS_SHOW << uint32(0); + packet.Worldstates.emplace_back(NA_UI_HORDE_GUARDS_SHOW, 0); + packet.Worldstates.emplace_back(NA_UI_ALLIANCE_GUARDS_SHOW, 0); } - data << NA_UI_GUARDS_MAX << NA_GUARDS_MAX; - data << NA_UI_GUARDS_LEFT << uint32(m_GuardsAlive); - - data << NA_MAP_WYVERN_NORTH_NEU_H << uint32((m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0); - data << NA_MAP_WYVERN_NORTH_NEU_A << uint32((m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0); - data << NA_MAP_WYVERN_NORTH_H << uint32((m_WyvernStateNorth & WYVERN_HORDE) != 0); - data << NA_MAP_WYVERN_NORTH_A << uint32((m_WyvernStateNorth & WYVERN_ALLIANCE) != 0); - - data << NA_MAP_WYVERN_SOUTH_NEU_H << uint32((m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0); - data << NA_MAP_WYVERN_SOUTH_NEU_A << uint32((m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0); - data << NA_MAP_WYVERN_SOUTH_H << uint32((m_WyvernStateSouth & WYVERN_HORDE) != 0); - data << NA_MAP_WYVERN_SOUTH_A << uint32((m_WyvernStateSouth & WYVERN_ALLIANCE) != 0); - - data << NA_MAP_WYVERN_WEST_NEU_H << uint32((m_WyvernStateWest & WYVERN_NEU_HORDE) != 0); - data << NA_MAP_WYVERN_WEST_NEU_A << uint32((m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0); - data << NA_MAP_WYVERN_WEST_H << uint32((m_WyvernStateWest & WYVERN_HORDE) != 0); - data << NA_MAP_WYVERN_WEST_A << uint32((m_WyvernStateWest & WYVERN_ALLIANCE) != 0); - - data << NA_MAP_WYVERN_EAST_NEU_H << uint32((m_WyvernStateEast & WYVERN_NEU_HORDE) != 0); - data << NA_MAP_WYVERN_EAST_NEU_A << uint32((m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0); - data << NA_MAP_WYVERN_EAST_H << uint32((m_WyvernStateEast & WYVERN_HORDE) != 0); - data << NA_MAP_WYVERN_EAST_A << uint32((m_WyvernStateEast & WYVERN_ALLIANCE) != 0); - - data << NA_MAP_HALAA_NEUTRAL << uint32((m_HalaaState & HALAA_N) != 0); - data << NA_MAP_HALAA_NEU_A << uint32((m_HalaaState & HALAA_N_A) != 0); - data << NA_MAP_HALAA_NEU_H << uint32((m_HalaaState & HALAA_N_H) != 0); - data << NA_MAP_HALAA_HORDE << uint32((m_HalaaState & HALAA_H) != 0); - data << NA_MAP_HALAA_ALLIANCE << uint32((m_HalaaState & HALAA_A) != 0); + packet.Worldstates.emplace_back(NA_UI_GUARDS_MAX, NA_GUARDS_MAX); + packet.Worldstates.emplace_back(NA_UI_GUARDS_LEFT, m_GuardsAlive); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_H, (m_WyvernStateNorth & WYVERN_NEU_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_NEU_A, (m_WyvernStateNorth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_H, (m_WyvernStateNorth & WYVERN_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_NORTH_A, (m_WyvernStateNorth & WYVERN_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_H, (m_WyvernStateSouth & WYVERN_NEU_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_NEU_A, (m_WyvernStateSouth & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_H, (m_WyvernStateSouth & WYVERN_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_SOUTH_A, (m_WyvernStateSouth & WYVERN_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_H, (m_WyvernStateWest & WYVERN_NEU_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_NEU_A, (m_WyvernStateWest & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_H, (m_WyvernStateWest & WYVERN_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_WEST_A, (m_WyvernStateWest & WYVERN_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_H, (m_WyvernStateEast & WYVERN_NEU_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_NEU_A, (m_WyvernStateEast & WYVERN_NEU_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_H, (m_WyvernStateEast & WYVERN_HORDE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_WYVERN_EAST_A, (m_WyvernStateEast & WYVERN_ALLIANCE) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_HALAA_NEUTRAL, (m_HalaaState & HALAA_N) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_HALAA_NEU_A, (m_HalaaState & HALAA_N_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_HALAA_NEU_H, (m_HalaaState & HALAA_N_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_HALAA_HORDE, (m_HalaaState & HALAA_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(NA_MAP_HALAA_ALLIANCE, (m_HalaaState & HALAA_A) != 0 ? 1 : 0); } void OutdoorPvPNA::SendRemoveWorldStates(Player* player) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h index 95c7d0ed553..c13dd37e212 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPNA.h @@ -148,7 +148,6 @@ enum HalaaStates class Unit; class Creature; -class OutdoorPvPNA; class OPvPCapturePointNA : public OPvPCapturePoint { @@ -156,47 +155,31 @@ class OPvPCapturePointNA : public OPvPCapturePoint OPvPCapturePointNA(OutdoorPvP* pvp); bool Update(uint32 diff) override; - void ChangeState() override; - - void FillInitialWorldStates(WorldPacket & data) override; - + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go) override; - int32 HandleOpenGo(Player* player, GameObject* go) override; uint32 GetAliveGuardsCount(); uint32 GetControllingFaction() const; - - protected: - // called when a faction takes control - void FactionTakeOver(uint32 team); - + void FactionTakeOver(uint32 team); // called when a faction takes control void DeSpawnNPCs(); void DeSpawnGOs(); - void SpawnNPCsForTeam(uint32 team); void SpawnGOsForTeam(uint32 team); - void UpdateWyvernRoostWorldState(uint32 roost); void UpdateHalaaWorldState(); private: bool m_capturable; - uint32 m_GuardsAlive; - uint32 m_ControllingFaction; - uint32 m_WyvernStateNorth; uint32 m_WyvernStateSouth; uint32 m_WyvernStateEast; uint32 m_WyvernStateWest; - uint32 m_HalaaState; - uint32 m_RespawnTimer; - uint32 m_GuardCheckTimer; }; @@ -206,20 +189,15 @@ class OutdoorPvPNA : public OutdoorPvP OutdoorPvPNA(); bool SetupOutdoorPvP() override; - void HandlePlayerEnterZone(Player* player, uint32 zone) override; void HandlePlayerLeaveZone(Player* player, uint32 zone) override; - bool Update(uint32 diff) override; - - void FillInitialWorldStates(WorldPacket &data) override; - + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; void SendRemoveWorldStates(Player* player) override; - void HandleKillImpl(Player* player, Unit* killed) override; private: - OPvPCapturePointNA * m_obj; + OPvPCapturePointNA* m_obj; }; #endif diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp index a6cf63375b4..90d11689872 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp @@ -15,29 +15,25 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" +#include "OutdoorPvPSI.h" #include "DBCStores.h" #include "GameObject.h" #include "Language.h" #include "Map.h" #include "ObjectMgr.h" #include "OutdoorPvPMgr.h" -#include "OutdoorPvPSI.h" #include "Player.h" #include "ReputationMgr.h" +#include "ScriptMgr.h" #include "World.h" -#include "WorldPacket.h" +#include "WorldStatePackets.h" uint32 const SI_MAX_RESOURCES = 200; - uint32 const SI_AREATRIGGER_H = 4168; uint32 const SI_AREATRIGGER_A = 4162; - uint32 const SI_TURNIN_QUEST_CM_A = 17090; uint32 const SI_TURNIN_QUEST_CM_H = 18199; - uint32 const SI_SILITHYST_MOUND = 181597; - uint8 const OutdoorPvPSIBuffZonesNum = 3; uint32 const OutdoorPvPSIBuffZones[OutdoorPvPSIBuffZonesNum] = { 1377, 3428, 3429 }; @@ -49,11 +45,11 @@ OutdoorPvPSI::OutdoorPvPSI() m_LastController = 0; } -void OutdoorPvPSI::FillInitialWorldStates(WorldPacket &data) +void OutdoorPvPSI::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << SI_GATHERED_A << m_Gathered_A; - data << SI_GATHERED_H << m_Gathered_H; - data << SI_SILITHYST_MAX << SI_MAX_RESOURCES; + packet.Worldstates.emplace_back(SI_GATHERED_A, m_Gathered_A); + packet.Worldstates.emplace_back(SI_GATHERED_H, m_Gathered_H); + packet.Worldstates.emplace_back(SI_SILITHYST_MAX, SI_MAX_RESOURCES); } void OutdoorPvPSI::SendRemoveWorldStates(Player* player) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h index 1d32a0e5b2b..0235f19c0c6 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPSI.h @@ -41,28 +41,19 @@ class OutdoorPvPSI : public OutdoorPvP OutdoorPvPSI(); bool SetupOutdoorPvP() override; - void HandlePlayerEnterZone(Player* player, uint32 zone) override; void HandlePlayerLeaveZone(Player* player, uint32 zone) override; - bool Update(uint32 diff) override; - - void FillInitialWorldStates(WorldPacket &data) override; - + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; void SendRemoveWorldStates(Player* player) override; - bool HandleAreaTrigger(Player* player, uint32 trigger) override; - bool HandleDropFlag(Player* player, uint32 spellId) override; - bool HandleCustomSpell(Player* player, uint32 spellId, GameObject* go) override; - void UpdateWorldState(); private: uint32 m_Gathered_A; uint32 m_Gathered_H; - uint32 m_LastController; }; diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp index c78960fca45..3ed223e8895 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp @@ -15,14 +15,14 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "ScriptMgr.h" #include "GameObject.h" #include "Map.h" #include "ObjectAccessor.h" #include "OutdoorPvPMgr.h" #include "OutdoorPvPTF.h" #include "Player.h" -#include "WorldPacket.h" +#include "ScriptMgr.h" +#include "WorldStatePackets.h" uint8 const OutdoorPvPTFBuffZonesNum = 5; uint32 const OutdoorPvPTFBuffZones[OutdoorPvPTFBuffZonesNum] = @@ -94,50 +94,42 @@ uint32 const TFTowerPlayerLeaveEvents[TF_TOWER_NUM] = OutdoorPvPTF::OutdoorPvPTF() { m_TypeId = OUTDOOR_PVP_TF; - m_IsLocked = false; m_LockTimer = TF_LOCK_TIME; m_LockTimerUpdate = 0; - m_AllianceTowersControlled = 0; m_HordeTowersControlled = 0; - hours_left = 6; second_digit = 0; first_digit = 0; } -OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type) -: OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N) +OPvPCapturePointTF::OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(TF_TOWERSTATE_N) { SetCapturePointData(TFCapturePoints[type].entry, TFCapturePoints[type].map, TFCapturePoints[type].pos, TFCapturePoints[type].rot); } -void OPvPCapturePointTF::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointTF::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << uint32(TFTowerWorldStates[m_TowerType].n) << uint32((m_TowerState & TF_TOWERSTATE_N) != 0); - data << uint32(TFTowerWorldStates[m_TowerType].h) << uint32((m_TowerState & TF_TOWERSTATE_H) != 0); - data << uint32(TFTowerWorldStates[m_TowerType].a) << uint32((m_TowerState & TF_TOWERSTATE_A) != 0); + packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].n, (m_TowerState & TF_TOWERSTATE_N) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].h, (m_TowerState & TF_TOWERSTATE_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(TFTowerWorldStates[m_TowerType].a, (m_TowerState & TF_TOWERSTATE_A) != 0 ? 1 : 0); } -void OutdoorPvPTF::FillInitialWorldStates(WorldPacket &data) +void OutdoorPvPTF::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << TF_UI_TOWER_COUNT_H << m_HordeTowersControlled; - data << TF_UI_TOWER_COUNT_A << m_AllianceTowersControlled; - data << TF_UI_TOWERS_CONTROLLED_DISPLAY << uint32(!m_IsLocked); - - data << TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT << first_digit; - data << TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT << second_digit; - data << TF_UI_LOCKED_TIME_HOURS << hours_left; - - data << TF_UI_LOCKED_DISPLAY_NEUTRAL << uint32(m_IsLocked && !m_HordeTowersControlled && !m_AllianceTowersControlled); - data << TF_UI_LOCKED_DISPLAY_HORDE << uint32(m_IsLocked && (m_HordeTowersControlled > m_AllianceTowersControlled)); - data << TF_UI_LOCKED_DISPLAY_ALLIANCE << uint32(m_IsLocked && (m_HordeTowersControlled < m_AllianceTowersControlled)); + packet.Worldstates.emplace_back(TF_UI_TOWER_COUNT_H, m_HordeTowersControlled); + packet.Worldstates.emplace_back(TF_UI_TOWER_COUNT_A, m_AllianceTowersControlled); + packet.Worldstates.emplace_back(TF_UI_TOWERS_CONTROLLED_DISPLAY, !m_IsLocked); + packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT, first_digit); + packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT, second_digit); + packet.Worldstates.emplace_back(TF_UI_LOCKED_TIME_HOURS, hours_left); + packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_NEUTRAL, (m_IsLocked && !m_HordeTowersControlled && !m_AllianceTowersControlled) ? 1 : 0); + packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_HORDE, (m_IsLocked && (m_HordeTowersControlled > m_AllianceTowersControlled)) ? 1 : 0); + packet.Worldstates.emplace_back(TF_UI_LOCKED_DISPLAY_ALLIANCE, (m_IsLocked && (m_HordeTowersControlled < m_AllianceTowersControlled)) ? 1 : 0); for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - { - itr->second->FillInitialWorldStates(data); - } + itr->second->FillInitialWorldStates(packet); } void OutdoorPvPTF::SendRemoveWorldStates(Player* player) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h index 381bd373224..59850bbb3e6 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPTF.h @@ -67,16 +67,13 @@ class OPvPCapturePointTF : public OPvPCapturePoint OPvPCapturePointTF(OutdoorPvP* pvp, OutdoorPvPTF_TowerType type); bool Update(uint32 diff) override; - void ChangeState() override; - - void FillInitialWorldStates(WorldPacket & data) override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; void UpdateTowerState(); protected: OutdoorPvPTF_TowerType m_TowerType; - uint32 m_TowerState; }; @@ -86,32 +83,24 @@ class OutdoorPvPTF : public OutdoorPvP OutdoorPvPTF(); bool SetupOutdoorPvP() override; - void HandlePlayerEnterZone(Player* player, uint32 zone) override; void HandlePlayerLeaveZone(Player* player, uint32 zone) override; - bool Update(uint32 diff) override; - - void FillInitialWorldStates(WorldPacket &data) override; - + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; void SendRemoveWorldStates(Player* player) override; uint32 GetAllianceTowersControlled() const; void SetAllianceTowersControlled(uint32 count); - uint32 GetHordeTowersControlled() const; void SetHordeTowersControlled(uint32 count); - bool IsLocked() const; private: bool m_IsLocked; uint32 m_LockTimer; uint32 m_LockTimerUpdate; - uint32 m_AllianceTowersControlled; uint32 m_HordeTowersControlled; - uint32 hours_left, second_digit, first_digit; }; diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp index 40184e6a0ab..ca2f4ec51a1 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp @@ -15,16 +15,16 @@ * with this program. If not, see <http://www.gnu.org/licenses/>. */ -#include "MapManager.h" -#include "ScriptMgr.h" #include "OutdoorPvPZM.h" +#include "Creature.h" +#include "GossipDef.h" +#include "MapManager.h" +#include "ObjectAccessor.h" #include "ObjectMgr.h" #include "OutdoorPvPMgr.h" #include "Player.h" -#include "Creature.h" -#include "ObjectAccessor.h" -#include "WorldPacket.h" -#include "GossipDef.h" +#include "ScriptMgr.h" +#include "WorldStatePackets.h" uint8 const OutdoorPvPZMBuffZonesNum = 5; @@ -85,20 +85,19 @@ go_type const ZMCapturePoints[ZM_NUM_BEACONS] = { 182522, 530, { 336.466f, 7340.26f, 41.4984f, -1.58825f }, { 0.0f, 0.0f, 0.71325f, -0.700909f } } }; -OPvPCapturePointZM_Beacon::OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconType type) -: OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(ZM_TOWERSTATE_N) +OPvPCapturePointZM_Beacon::OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconType type) : OPvPCapturePoint(pvp), m_TowerType(type), m_TowerState(ZM_TOWERSTATE_N) { SetCapturePointData(ZMCapturePoints[type].entry, ZMCapturePoints[type].map, ZMCapturePoints[type].pos, ZMCapturePoints[type].rot); } -void OPvPCapturePointZM_Beacon::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointZM_Beacon::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_n) << uint32((m_TowerState & ZM_TOWERSTATE_N) != 0); - data << uint32(ZMBeaconInfo[m_TowerType].map_tower_n) << uint32((m_TowerState & ZM_TOWERSTATE_N) != 0); - data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_a) << uint32((m_TowerState & ZM_TOWERSTATE_A) != 0); - data << uint32(ZMBeaconInfo[m_TowerType].map_tower_a) << uint32((m_TowerState & ZM_TOWERSTATE_A) != 0); - data << uint32(ZMBeaconInfo[m_TowerType].ui_tower_h) << uint32((m_TowerState & ZM_TOWERSTATE_H) != 0); - data << uint32(ZMBeaconInfo[m_TowerType].map_tower_h) << uint32((m_TowerState & ZM_TOWERSTATE_H) != 0); + packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].ui_tower_n, (m_TowerState & ZM_TOWERSTATE_N) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].map_tower_n, (m_TowerState & ZM_TOWERSTATE_N) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].ui_tower_a, (m_TowerState & ZM_TOWERSTATE_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].map_tower_a, (m_TowerState & ZM_TOWERSTATE_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].ui_tower_h, (m_TowerState & ZM_TOWERSTATE_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZMBeaconInfo[m_TowerType].map_tower_h, (m_TowerState & ZM_TOWERSTATE_H) != 0 ? 1 : 0); } void OPvPCapturePointZM_Beacon::UpdateTowerState() @@ -275,8 +274,7 @@ int32 OPvPCapturePointZM_Graveyard::HandleOpenGo(Player* player, GameObject* go) return retval; } -OPvPCapturePointZM_Graveyard::OPvPCapturePointZM_Graveyard(OutdoorPvP* pvp) -: OPvPCapturePoint(pvp) +OPvPCapturePointZM_Graveyard::OPvPCapturePointZM_Graveyard(OutdoorPvP* pvp) : OPvPCapturePoint(pvp) { m_BothControllingFaction = 0; m_GraveyardState = ZM_GRAVEYARD_N; @@ -300,16 +298,15 @@ void OPvPCapturePointZM_Graveyard::UpdateTowerState() m_PvP->SendUpdateWorldState(ZM_MAP_HORDE_FLAG_NOT_READY, uint32(m_BothControllingFaction != HORDE)); } -void OPvPCapturePointZM_Graveyard::FillInitialWorldStates(WorldPacket &data) +void OPvPCapturePointZM_Graveyard::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << ZM_MAP_GRAVEYARD_N << uint32((m_GraveyardState & ZM_GRAVEYARD_N) != 0); - data << ZM_MAP_GRAVEYARD_H << uint32((m_GraveyardState & ZM_GRAVEYARD_H) != 0); - data << ZM_MAP_GRAVEYARD_A << uint32((m_GraveyardState & ZM_GRAVEYARD_A) != 0); - - data << ZM_MAP_ALLIANCE_FLAG_READY << uint32(m_BothControllingFaction == ALLIANCE); - data << ZM_MAP_ALLIANCE_FLAG_NOT_READY << uint32(m_BothControllingFaction != ALLIANCE); - data << ZM_MAP_HORDE_FLAG_READY << uint32(m_BothControllingFaction == HORDE); - data << ZM_MAP_HORDE_FLAG_NOT_READY << uint32(m_BothControllingFaction != HORDE); + packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_N, (m_GraveyardState & ZM_GRAVEYARD_N) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_H, (m_GraveyardState & ZM_GRAVEYARD_H) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZM_MAP_GRAVEYARD_A, (m_GraveyardState & ZM_GRAVEYARD_A) != 0 ? 1 : 0); + packet.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_READY, m_BothControllingFaction == ALLIANCE ? 1 : 0); + packet.Worldstates.emplace_back(ZM_MAP_ALLIANCE_FLAG_NOT_READY, m_BothControllingFaction != ALLIANCE ? 1 : 0); + packet.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_READY, m_BothControllingFaction == HORDE ? 1 : 0); + packet.Worldstates.emplace_back(ZM_MAP_HORDE_FLAG_NOT_READY, m_BothControllingFaction != HORDE ? 1 : 0); } void OPvPCapturePointZM_Graveyard::SetBeaconState(uint32 controlling_faction) @@ -436,12 +433,12 @@ void OutdoorPvPZM::SetHordeTowersControlled(uint32 count) m_HordeTowersControlled = count; } -void OutdoorPvPZM::FillInitialWorldStates(WorldPacket &data) +void OutdoorPvPZM::FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) { - data << ZM_WORLDSTATE_UNK_1 << uint32(1); + packet.Worldstates.emplace_back(ZM_WORLDSTATE_UNK_1, 1); for (OPvPCapturePointMap::iterator itr = m_capturePoints.begin(); itr != m_capturePoints.end(); ++itr) - itr->second->FillInitialWorldStates(data); + itr->second->FillInitialWorldStates(packet); } void OutdoorPvPZM::SendRemoveWorldStates(Player* player) diff --git a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h index 9736fd22499..31fe0495395 100644 --- a/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h +++ b/src/server/scripts/OutdoorPvP/OutdoorPvPZM.h @@ -96,16 +96,13 @@ enum ZM_TowerStateMask ZM_TOWERSTATE_H = 4 }; -class OutdoorPvPZM; - class OPvPCapturePointZM_Beacon : public OPvPCapturePoint { public: OPvPCapturePointZM_Beacon(OutdoorPvP* pvp, ZM_BeaconType type); void ChangeState() override; - - void FillInitialWorldStates(WorldPacket & data) override; + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; void UpdateTowerState(); @@ -127,64 +124,46 @@ class OPvPCapturePointZM_Graveyard : public OPvPCapturePoint OPvPCapturePointZM_Graveyard(OutdoorPvP* pvp); bool Update(uint32 diff) override; - void ChangeState() override { } - - void FillInitialWorldStates(WorldPacket & data) override; - - void UpdateTowerState(); - + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; int32 HandleOpenGo(Player* player, GameObject* go) override; - - void SetBeaconState(uint32 controlling_team); // not good atm - bool HandleGossipOption(Player* player, Creature* creature, uint32 gossipid) override; - bool HandleDropFlag(Player* player, uint32 spellId) override; - bool CanTalkTo(Player* player, Creature* creature, GossipMenuItems const& gso) override; + void UpdateTowerState(); + void SetBeaconState(uint32 controlling_team); // not good atm uint32 GetGraveyardState() const; - private: - uint32 m_GraveyardState; - protected: uint32 m_BothControllingFaction; - ObjectGuid m_FlagCarrierGUID; + uint32 m_GraveyardState; }; +/// @todo flag carrier death/leave/mount/activitychange should give back the gossip options class OutdoorPvPZM : public OutdoorPvP { public: OutdoorPvPZM(); bool SetupOutdoorPvP() override; - void HandlePlayerEnterZone(Player* player, uint32 zone) override; void HandlePlayerLeaveZone(Player* player, uint32 zone) override; - bool Update(uint32 diff) override; - - void FillInitialWorldStates(WorldPacket &data) override; - + void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& packet) override; void SendRemoveWorldStates(Player* player) override; - void HandleKillImpl(Player* player, Unit* killed) override; uint32 GetAllianceTowersControlled() const; void SetAllianceTowersControlled(uint32 count); - uint32 GetHordeTowersControlled() const; void SetHordeTowersControlled(uint32 count); private: - OPvPCapturePointZM_Graveyard * m_Graveyard; - + OPvPCapturePointZM_Graveyard* m_Graveyard; uint32 m_AllianceTowersControlled; uint32 m_HordeTowersControlled; }; -/// @todo flag carrier death/leave/mount/activitychange should give back the gossip options #endif |
