diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index be12e3889e..0959212365 100644 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -468,14 +468,14 @@ inline void Battleground::_ProcessJoin(uint32 diff) { uint32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; - WorldPacket data(SMSG_START_TIMER, 4+4+4); - data << uint32(0); // unk - data << uint32(countdownMaxForBGType - (GetElapsedTime() / 1000)); - data << uint32(countdownMaxForBGType); + WorldPackets::Misc::StartTimer packet; + packet.Type = 0; + packet.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / IN_MILLISECONDS); + packet.TotalTime = countdownMaxForBGType; for (BattlegroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr) if (Player* player = ObjectAccessor::FindPlayer(itr->first)) - player->SendDirectMessage(&data); + player->SendDirectMessage(packet.Write()); m_CountdownTimer = 0; } @@ -1139,11 +1139,12 @@ void Battleground::AddPlayer(Player* player) player->CastSpell(player, SPELL_PREPARATION, true); // reduces all mana cost of spells. int32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX; - WorldPacket data(SMSG_START_TIMER, 4+4+4); - data << uint32(0); // unk - data << uint32(countdownMaxForBGType - (GetElapsedTime() / 1000)); - data << uint32(countdownMaxForBGType); - player->SendDirectMessage(&data); + + WorldPackets::Misc::StartTimer packet; + packet.Type = 0; + packet.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / IN_MILLISECONDS); + packet.TotalTime = countdownMaxForBGType; + player->SendDirectMessage(packet.Write()); } } diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp index 702c5634f3..3a3791bd5f 100644 --- a/src/server/game/Server/Packets/MiscPackets.cpp +++ b/src/server/game/Server/Packets/MiscPackets.cpp @@ -232,3 +232,12 @@ WorldPacket const* WorldPackets::Misc::UnitHealthFrequent::Write() return &_worldPacket; } + +WorldPacket const* WorldPackets::Misc::StartTimer::Write() +{ + _worldPacket << uint32(Type); + _worldPacket << uint32(TimeLeft); + _worldPacket << uint32(TotalTime); + + return &_worldPacket; +} diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h index e347cacd33..94348c06cf 100644 --- a/src/server/game/Server/Packets/MiscPackets.h +++ b/src/server/game/Server/Packets/MiscPackets.h @@ -281,6 +281,18 @@ namespace WorldPackets ObjectGuid UnitGUID; int32 Health = 0; }; + + class StartTimer final : public ServerPacket + { + public: + StartTimer() : ServerPacket(SMSG_START_TIMER, 12) { } + + WorldPacket const* Write() override; + + uint32 Type = 0; + int32 TimeLeft = 0; + int32 TotalTime = 0; + }; } }