aboutsummaryrefslogtreecommitdiff
path: root/src/server/scripts
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2019-03-04 16:33:08 +0100
committerccrs <ccrs@users.noreply.github.com>2019-03-04 16:33:08 +0100
commite69570dd7662848ae38628c4af71cce002dd1c3d (patch)
treedb5a867f01d34307437b288b9bfba8fbd5baa43b /src/server/scripts
parente1aafddc2e90c01d0e2511518d7c23ac6baca935 (diff)
Core/Misc: use/implement/portfrommaster InitWorldState packet definition
WorldPackets::WorldState::InitWorldStates
Diffstat (limited to 'src/server/scripts')
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/instance_culling_of_stratholme.cpp17
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp26
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp14
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp10
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/instance_icecrown_citadel.cpp18
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/instance_oculus.cpp16
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_auriaya.cpp13
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp13
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp15
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp11
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp23
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h38
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp14
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.h1
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPEP.cpp86
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPEP.h80
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPHP.cpp55
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPHP.h12
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPNA.cpp94
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPNA.h30
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPSI.cpp18
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPSI.h11
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPTF.cpp44
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPTF.h15
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPZM.cpp55
-rw-r--r--src/server/scripts/OutdoorPvP/OutdoorPvPZM.h37
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