aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEpicurus4 <maxmakki2@gmail.com>2015-03-12 10:39:33 -0400
committerEpicurus4 <maxmakki2@gmail.com>2015-03-12 10:39:33 -0400
commitb306c7c6cfc27861a10d26cb9068eaf4396fde9f (patch)
treee90564cc1407acdcf3bf27512bcda426caee9867 /src
parentebc226cdac6b08067319fc3514337c386c8f456a (diff)
Core/Loot: Enable setting AcquireReason, correct LootMethod definition, fix structure to match sniffs of retail and correct threashold and reason definitions.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp16
-rw-r--r--src/server/game/Server/Packets/LootPackets.cpp6
-rw-r--r--src/server/game/Server/Packets/LootPackets.h8
3 files changed, 22 insertions, 8 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index cc951259c9f..7c5d5911161 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -8744,12 +8744,26 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type)
if (permission != NONE_PERMISSION)
{
+ LootMethod _lootMethod = FREE_FOR_ALL;
+ if (Group* group = GetGroup())
+ {
+ if (Creature* creature = GetMap()->GetCreature(guid))
+ {
+ if (Player* recipient = creature->GetLootRecipient())
+ {
+ if (group == recipient->GetGroup())
+ _lootMethod = group->GetLootMethod();
+ }
+ }
+ }
+
SetLootGUID(guid);
WorldPackets::Loot::LootResponse packet;
packet.LootObj = guid;
packet.Owner = loot->GetGUID();
- packet.LootMethod = loot_type;
+ packet.LootMethod = _lootMethod;
+ packet.AcquireReason = loot_type;
if (!GetGroup())
packet.PersonalLooting = true;
else
diff --git a/src/server/game/Server/Packets/LootPackets.cpp b/src/server/game/Server/Packets/LootPackets.cpp
index e8c365ea45b..62bae290cce 100644
--- a/src/server/game/Server/Packets/LootPackets.cpp
+++ b/src/server/game/Server/Packets/LootPackets.cpp
@@ -26,10 +26,10 @@ WorldPacket const* WorldPackets::Loot::LootResponse::Write()
{
_worldPacket << LootObj;
_worldPacket << Owner;
- _worldPacket << Threshold;
- _worldPacket << LootMethod;
- _worldPacket << AcquireReason;
_worldPacket << FailureReason;
+ _worldPacket << AcquireReason;
+ _worldPacket << LootMethod;
+ _worldPacket << Threshold;
_worldPacket << Coins;
_worldPacket << uint32(Items.size());
_worldPacket << uint32(Currencies.size());
diff --git a/src/server/game/Server/Packets/LootPackets.h b/src/server/game/Server/Packets/LootPackets.h
index 74a5c58d649..ba78d1488a3 100644
--- a/src/server/game/Server/Packets/LootPackets.h
+++ b/src/server/game/Server/Packets/LootPackets.h
@@ -64,10 +64,10 @@ namespace WorldPackets
ObjectGuid LootObj;
ObjectGuid Owner;
- uint8 Threshold = 17; // Most common value
- uint8 LootMethod = 0;
- uint8 AcquireReason = 0;
- uint8 FailureReason = 2; // Most common value
+ uint8 Threshold = 2; // Most common value
+ uint8 LootMethod = 0;
+ uint8 AcquireReason = 0;
+ uint8 FailureReason = 17; // Most common value
uint32 Coins = 0;
std::vector<LootItem> Items;
std::vector<LootCurrency> Currencies;