aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-09-09 23:11:13 +0100
committerDDuarte <dnpd.dd@gmail.com>2014-09-09 23:11:37 +0100
commit2bba21910692cf32b8ec333be3c4423d1ad18a43 (patch)
tree335173ab34ea4d425d3959cf37664799adef60a5 /src
parent04415f33a7646f9f2a148a087a1603826599fc76 (diff)
Core/Loot: Fix some issues with master loot
Thanks to @PortgasDAce for the initial patch Closes #12732
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Loot/LootMgr.cpp10
2 files changed, 10 insertions, 2 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 0e1e53cfe4c..f7ef9a3d895 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -17831,6 +17831,7 @@ bool Player::isAllowedToLoot(const Creature* creature)
switch (thisGroup->GetLootMethod())
{
+ case MASTER_LOOT:
case FREE_FOR_ALL:
return true;
case ROUND_ROBIN:
@@ -17840,7 +17841,6 @@ bool Player::isAllowedToLoot(const Creature* creature)
return true;
return loot->hasItemFor(this);
- case MASTER_LOOT:
case GROUP_LOOT:
case NEED_BEFORE_GREED:
// may only loot if the player is the loot roundrobin player
diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp
index 270af559f0b..cf50dbcda52 100644
--- a/src/server/game/Loot/LootMgr.cpp
+++ b/src/server/game/Loot/LootMgr.cpp
@@ -898,8 +898,16 @@ ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv)
slot_type = LOOT_SLOT_TYPE_ROLL_ONGOING;
break;
case MASTER_PERMISSION:
- slot_type = LOOT_SLOT_TYPE_MASTER;
+ {
+ if (lv.viewer->GetGroup())
+ {
+ if (lv.viewer->GetGroup()->GetMasterLooterGuid() == lv.viewer->GetGUID())
+ slot_type = LOOT_SLOT_TYPE_MASTER;
+ else
+ slot_type = LOOT_SLOT_TYPE_LOCKED;
+ }
break;
+ }
case RESTRICTED_PERMISSION:
slot_type = LOOT_SLOT_TYPE_LOCKED;
break;