diff options
author | Epicurus4 <maxmakki2@gmail.com> | 2015-03-12 10:39:33 -0400 |
---|---|---|
committer | Epicurus4 <maxmakki2@gmail.com> | 2015-03-12 10:39:33 -0400 |
commit | b306c7c6cfc27861a10d26cb9068eaf4396fde9f (patch) | |
tree | e90564cc1407acdcf3bf27512bcda426caee9867 /src | |
parent | ebc226cdac6b08067319fc3514337c386c8f456a (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.cpp | 16 | ||||
-rw-r--r-- | src/server/game/Server/Packets/LootPackets.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Server/Packets/LootPackets.h | 8 |
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; |