aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/Battleground.cpp23
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp9
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp2
4 files changed, 34 insertions, 12 deletions
diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp
index cd9303828a4..1b26f339c5e 100644
--- a/src/server/game/Battlegrounds/Battleground.cpp
+++ b/src/server/game/Battlegrounds/Battleground.cpp
@@ -411,16 +411,16 @@ inline void Battleground::_ProcessJoin(uint32 diff)
// Send packet every 10 seconds until the 2nd field reach 0
if (m_CountdownTimer >= 10000)
{
- uint32 countdownMaxForBGType = isArena() ? ARENA_COUNTDOWN_MAX : BATTLEGROUND_COUNTDOWN_MAX;
+ 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);
+ WorldPackets::Misc::StartTimer startTimer;
+ startTimer.Type = 0;
+ startTimer.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / 1000);
+ startTimer.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(startTimer.Write());
m_CountdownTimer = 0;
}
@@ -1088,11 +1088,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 startTimer;
+ startTimer.Type = 0;
+ startTimer.TimeLeft = countdownMaxForBGType - (GetElapsedTime() / 1000);
+ startTimer.TotalTime = countdownMaxForBGType;
+ player->SendDirectMessage(startTimer.Write());
}
}
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index fd9c0382421..a1bd2a25598 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -699,3 +699,12 @@ void WorldPackets::Misc::CloseInteraction::Read()
{
_worldPacket >> SourceGuid;
}
+
+WorldPacket const* WorldPackets::Misc::StartTimer::Write()
+{
+ _worldPacket << int32(TimeLeft);
+ _worldPacket << int32(TotalTime);
+ _worldPacket << int32(Type);
+
+ return &_worldPacket;
+}
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index 3b1118b0d1f..683340529d8 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -902,6 +902,18 @@ namespace WorldPackets
ObjectGuid SourceGuid;
};
+
+ class StartTimer final : public ServerPacket
+ {
+ public:
+ StartTimer() : ServerPacket(SMSG_START_TIMER, 12) { }
+
+ WorldPacket const* Write() override;
+
+ int32 Type = 0;
+ int32 TimeLeft = 0;
+ int32 TotalTime = 0;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index cd566b41876..076e0c55d08 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -1821,7 +1821,7 @@ void OpcodeTable::Initialize()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_ELAPSED_TIMERS, STATUS_UNHANDLED, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_LOOT_ROLL, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_START_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_ELAPSED_TIMER, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_MIRROR_TIMER, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_STOP_SPEAKERBOT_SOUND, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);