aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
-rw-r--r--src/server/game/Groups/Group.cpp4
-rw-r--r--src/server/game/Groups/Group.h4
-rw-r--r--src/server/game/Handlers/GroupHandler.cpp7
-rw-r--r--src/server/game/Server/Packets/MiscPackets.cpp16
-rw-r--r--src/server/game/Server/Packets/MiscPackets.h24
-rw-r--r--src/server/game/Server/WorldSession.h3
7 files changed, 57 insertions, 15 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index aad83013be1..29979976f28 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -26869,15 +26869,15 @@ uint32 Player::DoRandomRoll(uint32 minimum, uint32 maximum)
uint32 roll = urand(minimum, maximum);
- WorldPacket data(MSG_RANDOM_ROLL, 4 + 4 + 4 + 8);
- data << uint32(minimum);
- data << uint32(maximum);
- data << uint32(roll);
- data << GetGUID();
+ WorldPackets::Misc::RandomRoll randomRoll;
+ randomRoll.Min = minimum;
+ randomRoll.Max = maximum;
+ randomRoll.Result = roll;
+ randomRoll.Roller = GetGUID();
if (Group* group = GetGroup())
- group->BroadcastPacket(&data, false);
+ group->BroadcastPacket(randomRoll.Write(), false);
else
- SendDirectMessage(&data);
+ SendDirectMessage(randomRoll.Write());
return roll;
}
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index 55072d4df9e..3d2e1ed4599 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -1756,7 +1756,7 @@ void Group::UpdatePlayerOutOfRange(Player* player)
}
}
-void Group::BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group /*= -1*/, ObjectGuid ignoredPlayer /*= ObjectGuid::Empty*/)
+void Group::BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRaid, int group /*= -1*/, ObjectGuid ignoredPlayer /*= ObjectGuid::Empty*/)
{
for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
{
@@ -1769,7 +1769,7 @@ void Group::BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int
}
}
-void Group::BroadcastReadyCheck(WorldPacket* packet)
+void Group::BroadcastReadyCheck(WorldPacket const* packet)
{
for (GroupReference* itr = GetFirstMember(); itr != nullptr; itr = itr->next())
{
diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h
index 23cafd7d84e..ff12ddb7e79 100644
--- a/src/server/game/Groups/Group.h
+++ b/src/server/game/Groups/Group.h
@@ -292,8 +292,8 @@ class TC_GAME_API Group
worker(itr->GetSource());
}
- void BroadcastPacket(WorldPacket* packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignoredPlayer = ObjectGuid::Empty);
- void BroadcastReadyCheck(WorldPacket* packet);
+ void BroadcastPacket(WorldPacket const* packet, bool ignorePlayersInBGRaid, int group = -1, ObjectGuid ignoredPlayer = ObjectGuid::Empty);
+ void BroadcastReadyCheck(WorldPacket const* packet);
void OfflineReadyCheck();
/*********************************************************/
diff --git a/src/server/game/Handlers/GroupHandler.cpp b/src/server/game/Handlers/GroupHandler.cpp
index 51baaf6616e..2597667afff 100644
--- a/src/server/game/Handlers/GroupHandler.cpp
+++ b/src/server/game/Handlers/GroupHandler.cpp
@@ -22,6 +22,7 @@
#include "Group.h"
#include "GroupMgr.h"
#include "Log.h"
+#include "MiscPackets.h"
#include "ObjectAccessor.h"
#include "ObjectMgr.h"
#include "Pet.h"
@@ -516,11 +517,11 @@ void WorldSession::HandleMinimapPingOpcode(WorldPacket& recvData)
GetPlayer()->GetGroup()->BroadcastPacket(&data, true, -1, GetPlayer()->GetGUID());
}
-void WorldSession::HandleRandomRollOpcode(WorldPacket& recvData)
+void WorldSession::HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet)
{
uint32 minimum, maximum;
- recvData >> minimum;
- recvData >> maximum;
+ minimum = packet.Min;
+ maximum = packet.Max;
/** error handling **/
if (minimum > maximum || maximum > 10000) // < 32768 for urand call
diff --git a/src/server/game/Server/Packets/MiscPackets.cpp b/src/server/game/Server/Packets/MiscPackets.cpp
index dd75cafc3b4..29dd80ffdec 100644
--- a/src/server/game/Server/Packets/MiscPackets.cpp
+++ b/src/server/game/Server/Packets/MiscPackets.cpp
@@ -156,6 +156,22 @@ WorldPacket const* WorldPackets::Misc::OverrideLight::Write()
return &_worldPacket;
}
+void WorldPackets::Misc::RandomRollClient::Read()
+{
+ _worldPacket >> Min;
+ _worldPacket >> Max;
+}
+
+WorldPacket const* WorldPackets::Misc::RandomRoll::Write()
+{
+ _worldPacket << uint32(Min);
+ _worldPacket << uint32(Max);
+ _worldPacket << uint32(Result);
+ _worldPacket << Roller;
+
+ return &_worldPacket;
+}
+
WorldPacket const* WorldPackets::Misc::UITime::Write()
{
_worldPacket << uint32(Time);
diff --git a/src/server/game/Server/Packets/MiscPackets.h b/src/server/game/Server/Packets/MiscPackets.h
index bd5726d3249..6683cdc7588 100644
--- a/src/server/game/Server/Packets/MiscPackets.h
+++ b/src/server/game/Server/Packets/MiscPackets.h
@@ -261,6 +261,30 @@ namespace WorldPackets
int32 OverrideLightID = 0;
};
+ class RandomRollClient final : public ClientPacket
+ {
+ public:
+ RandomRollClient(WorldPacket&& packet) : ClientPacket(MSG_RANDOM_ROLL, std::move(packet)) { }
+
+ void Read() override;
+
+ uint32 Min = 0;
+ uint32 Max = 0;
+ };
+
+ class RandomRoll final : public ServerPacket
+ {
+ public:
+ RandomRoll() : ServerPacket(MSG_RANDOM_ROLL, 4 + 4 + 4 + 8) { }
+
+ WorldPacket const* Write() override;
+
+ uint32 Min = 0;
+ uint32 Max = 0;
+ uint32 Result = 0;
+ ObjectGuid Roller;
+ };
+
class UITime final : public ServerPacket
{
public:
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index f121805c106..7ff716f838d 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -140,6 +140,7 @@ namespace WorldPackets
class CompleteMovie;
class NextCinematicCamera;
class OpeningCinematic;
+ class RandomRollClient;
class WorldTeleport;
}
@@ -941,7 +942,7 @@ class TC_GAME_API WorldSession
void HandleWardenDataOpcode(WorldPacket& recvData);
void HandleWorldTeleportOpcode(WorldPackets::Misc::WorldTeleport& worldTeleport);
void HandleMinimapPingOpcode(WorldPacket& recvData);
- void HandleRandomRollOpcode(WorldPacket& recvData);
+ void HandleRandomRollOpcode(WorldPackets::Misc::RandomRollClient& packet);
void HandleFarSightOpcode(WorldPacket& recvData);
void HandleSetDungeonDifficultyOpcode(WorldPacket& recvData);
void HandleSetRaidDifficultyOpcode(WorldPacket& recvData);