Core/PacketIO: updated CMSG_LOOT_ROLL

This commit is contained in:
MitchesD
2015-04-02 15:58:45 +02:00
parent 930a6af70a
commit 5c1600b9ba
5 changed files with 26 additions and 12 deletions

View File

@@ -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);

View File

@@ -106,3 +106,10 @@ WorldPacket const* WorldPackets::Loot::CoinRemoved::Write()
return &_worldPacket;
}
void WorldPackets::Loot::LootRoll::Read()
{
_worldPacket >> LootObj;
_worldPacket >> LootListID;
_worldPacket >> RollType;
}

View File

@@ -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;
};
}
}

View File

@@ -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 );

View File

@@ -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);