Core/PacketIO: Corrected data sent in SMSG_LOOT_RESPONSE

Closes #15438
This commit is contained in:
Shauren
2015-09-06 00:26:11 +02:00
parent 49b4dc269c
commit ed633e5d31
4 changed files with 24 additions and 23 deletions
+17 -16
View File
@@ -913,7 +913,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v
WorldPackets::Loot::LootItemData lootItem;
lootItem.LootListID = packet.Items.size()+1;
lootItem.LootItemType = slot_type;
lootItem.UIType = slot_type;
lootItem.Quantity = items[i].count;
lootItem.Loot.Initialize(items[i]);
packet.Items.push_back(lootItem);
@@ -933,7 +933,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v
WorldPackets::Loot::LootItemData lootItem;
lootItem.LootListID = packet.Items.size()+1;
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.Quantity = items[i].count;
lootItem.Loot.Initialize(items[i]);
packet.Items.push_back(lootItem);
@@ -950,7 +950,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v
{
WorldPackets::Loot::LootItemData lootItem;
lootItem.LootListID = packet.Items.size()+1;
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = permission == OWNER_PERMISSION ? LOOT_SLOT_TYPE_OWNER : LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.Quantity = items[i].count;
lootItem.Loot.Initialize(items[i]);
packet.Items.push_back(lootItem);
@@ -962,6 +962,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v
return;
}
LootSlotType slotType = permission == OWNER_PERMISSION ? LOOT_SLOT_TYPE_OWNER : LOOT_SLOT_TYPE_ALLOW_LOOT;
QuestItemMap const& lootPlayerQuestItems = GetPlayerQuestItems();
QuestItemMap::const_iterator q_itr = lootPlayerQuestItems.find(viewer->GetGUID().GetCounter());
if (q_itr != lootPlayerQuestItems.end())
@@ -982,25 +983,25 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v
switch (permission)
{
case MASTER_PERMISSION:
lootItem.LootItemType = LOOT_SLOT_TYPE_MASTER;
lootItem.UIType = LOOT_SLOT_TYPE_MASTER;
break;
case RESTRICTED_PERMISSION:
lootItem.LootItemType = item.is_blocked ? LOOT_SLOT_TYPE_LOCKED : LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = item.is_blocked ? LOOT_SLOT_TYPE_LOCKED : LOOT_SLOT_TYPE_ALLOW_LOOT;
break;
case GROUP_PERMISSION:
case ROUND_ROBIN_PERMISSION:
if (!item.is_blocked)
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = LOOT_SLOT_TYPE_ALLOW_LOOT;
else
lootItem.LootItemType = LOOT_SLOT_TYPE_ROLL_ONGOING;
lootItem.UIType = LOOT_SLOT_TYPE_ROLL_ONGOING;
break;
default:
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = slotType;
break;
}
}
else
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = slotType;
packet.Items.push_back(lootItem);
}
@@ -1019,7 +1020,7 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v
{
WorldPackets::Loot::LootItemData lootItem;
lootItem.LootListID = packet.Items.size()+1;
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = slotType;
lootItem.Quantity = item.count;
lootItem.Loot.Initialize(item);
packet.Items.push_back(lootItem);
@@ -1047,25 +1048,25 @@ void Loot::BuildLootResponse(WorldPackets::Loot::LootResponse& packet, Player* v
switch (permission)
{
case MASTER_PERMISSION:
lootItem.LootItemType = LOOT_SLOT_TYPE_MASTER;
lootItem.UIType = LOOT_SLOT_TYPE_MASTER;
break;
case RESTRICTED_PERMISSION:
lootItem.LootItemType = item.is_blocked ? LOOT_SLOT_TYPE_LOCKED : LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = item.is_blocked ? LOOT_SLOT_TYPE_LOCKED : LOOT_SLOT_TYPE_ALLOW_LOOT;
break;
case GROUP_PERMISSION:
case ROUND_ROBIN_PERMISSION:
if (!item.is_blocked)
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = LOOT_SLOT_TYPE_ALLOW_LOOT;
else
lootItem.LootItemType = LOOT_SLOT_TYPE_ROLL_ONGOING;
lootItem.UIType = LOOT_SLOT_TYPE_ROLL_ONGOING;
break;
default:
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = slotType;
break;
}
}
else
lootItem.LootItemType = LOOT_SLOT_TYPE_ALLOW_LOOT;
lootItem.UIType = slotType;
packet.Items.push_back(lootItem);
}
+5 -5
View File
@@ -121,11 +121,11 @@ enum LootError
// type of Loot Item in Loot View
enum LootSlotType
{
LOOT_SLOT_TYPE_ALLOW_LOOT = 0, // player can loot the item.
LOOT_SLOT_TYPE_ROLL_ONGOING = 1, // roll is ongoing. player cannot loot.
LOOT_SLOT_TYPE_MASTER = 2, // item can only be distributed by group loot master.
LOOT_SLOT_TYPE_LOCKED = 3, // item is shown in red. player cannot loot.
LOOT_SLOT_TYPE_OWNER = 4 // ignore binding confirmation and etc, for single player looting (6.x no longer used)
LOOT_SLOT_TYPE_ALLOW_LOOT = 2, // player can loot the item.
LOOT_SLOT_TYPE_ROLL_ONGOING = 6, // roll is ongoing. player cannot loot.
LOOT_SLOT_TYPE_MASTER = 4, // item can only be distributed by group loot master.
LOOT_SLOT_TYPE_LOCKED = 1, // item is shown in red. player cannot loot.
LOOT_SLOT_TYPE_OWNER = 7 // ignore binding confirmation and etc, for single player looting
};
class Player;
@@ -57,8 +57,8 @@ WorldPacket const* WorldPackets::Loot::LootResponse::Write()
}
_worldPacket.WriteBit(Acquired);
_worldPacket.WriteBit(PersonalLooting);
_worldPacket.WriteBit(AELooting);
_worldPacket.WriteBit(PersonalLooting);
_worldPacket.FlushBits();
return &_worldPacket;
+1 -1
View File
@@ -39,7 +39,7 @@ namespace WorldPackets
struct LootItemData
{
uint8 Type = 2;
uint8 UIType = 4;
uint8 UIType = 7;
uint32 Quantity = 0;
uint8 LootItemType = 0;
uint8 LootListID = 0;