mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/PacketIO: updated CMSG_LOOT_ROLL
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
#include "WorldSession.h"
|
||||
#include "SpellAuraEffects.h"
|
||||
#include "MiscPackets.h"
|
||||
#include "LootPackets.h"
|
||||
|
||||
class Aura;
|
||||
|
||||
@@ -599,22 +600,15 @@ void WorldSession::HandleLootMethodOpcode(WorldPacket& recvData)
|
||||
group->SendUpdate();
|
||||
}
|
||||
|
||||
void WorldSession::HandleLootRoll(WorldPacket& recvData)
|
||||
void WorldSession::HandleLootRoll(WorldPackets::Loot::LootRoll& packet)
|
||||
{
|
||||
ObjectGuid guid;
|
||||
uint32 itemSlot;
|
||||
uint8 rollType;
|
||||
recvData >> guid; // guid of the item rolled
|
||||
recvData >> itemSlot;
|
||||
recvData >> rollType; // 0: pass, 1: need, 2: greed
|
||||
|
||||
Group* group = GetPlayer()->GetGroup();
|
||||
if (!group)
|
||||
return;
|
||||
|
||||
group->CountRollVote(GetPlayer()->GetGUID(), guid, rollType);
|
||||
group->CountRollVote(GetPlayer()->GetGUID(), packet.LootObj, packet.RollType);
|
||||
|
||||
switch (rollType)
|
||||
switch (packet.RollType)
|
||||
{
|
||||
case ROLL_NEED:
|
||||
GetPlayer()->UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_ROLL_NEED, 1);
|
||||
|
||||
@@ -106,3 +106,10 @@ WorldPacket const* WorldPackets::Loot::CoinRemoved::Write()
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Loot::LootRoll::Read()
|
||||
{
|
||||
_worldPacket >> LootObj;
|
||||
_worldPacket >> LootListID;
|
||||
_worldPacket >> RollType;
|
||||
}
|
||||
|
||||
@@ -143,6 +143,18 @@ namespace WorldPackets
|
||||
|
||||
ObjectGuid LootObj;
|
||||
};
|
||||
|
||||
class LootRoll final : public ClientPacket
|
||||
{
|
||||
public:
|
||||
LootRoll(WorldPacket&& packet) : ClientPacket(CMSG_LOOT_ROLL, std::move(packet)) { }
|
||||
|
||||
void Read() override;
|
||||
|
||||
ObjectGuid LootObj;
|
||||
uint8 LootListID = 0;
|
||||
uint8 RollType = 0;
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -493,7 +493,7 @@ void OpcodeTable::Initialize()
|
||||
DEFINE_HANDLER(CMSG_LOOT_ITEM, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootItem, &WorldSession::HandleAutostoreLootItemOpcode);
|
||||
DEFINE_HANDLER(CMSG_LOOT_MONEY, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootMoney, &WorldSession::HandleLootMoneyOpcode);
|
||||
DEFINE_HANDLER(CMSG_LOOT_RELEASE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootRelease, &WorldSession::HandleLootReleaseOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_LOOT_ROLL, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::HandleLootRoll );
|
||||
DEFINE_HANDLER(CMSG_LOOT_ROLL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootRoll, &WorldSession::HandleLootRoll);
|
||||
DEFINE_HANDLER(CMSG_LOOT_UNIT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, WorldPackets::Loot::LootUnit, &WorldSession::HandleLootOpcode);
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_LOW_LEVEL_RAID1, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
DEFINE_OPCODE_HANDLER_OLD(CMSG_LOW_LEVEL_RAID2, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL );
|
||||
|
||||
@@ -256,6 +256,7 @@ namespace WorldPackets
|
||||
class LootItem;
|
||||
class LootRelease;
|
||||
class LootMoney;
|
||||
class LootRoll;
|
||||
}
|
||||
|
||||
namespace Mail
|
||||
@@ -939,7 +940,7 @@ class WorldSession
|
||||
void HandleGroupDisbandOpcode(WorldPacket& recvPacket);
|
||||
void HandleOptOutOfLootOpcode(WorldPacket& recvData);
|
||||
void HandleLootMethodOpcode(WorldPacket& recvPacket);
|
||||
void HandleLootRoll(WorldPacket& recvData);
|
||||
void HandleLootRoll(WorldPackets::Loot::LootRoll& packet);
|
||||
void HandleRequestPartyMemberStatsOpcode(WorldPacket& recvData);
|
||||
void HandleRaidTargetUpdateOpcode(WorldPacket& recvData);
|
||||
void HandleRaidReadyCheckOpcode(WorldPacket& recvData);
|
||||
|
||||
Reference in New Issue
Block a user