aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp14
-rw-r--r--src/server/game/Handlers/LootHandler.cpp3
2 files changed, 8 insertions, 9 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 20c8f8805ce..9e5cf7b1371 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1633,9 +1633,7 @@ void Player::RemoveFromWorld()
StopCastingBindSight();
UnsummonPetTemporaryIfAny();
ClearComboPoints();
- ObjectGuid lootGuid = GetLootGUID();
- if (!lootGuid.IsEmpty())
- m_session->DoLootRelease(lootGuid);
+ m_session->DoLootReleaseAll();
sOutdoorPvPMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId);
sBattlefieldMgr->HandlePlayerLeaveZone(this, m_zoneUpdateId);
}
@@ -13044,7 +13042,7 @@ void Player::SwapItem(uint16 src, uint16 dst)
// if player is moving bags and is looting an item inside this bag
// release the loot
- if (!GetLootGUID().IsEmpty())
+ if (!GetAELootView().empty())
{
bool released = false;
if (IsBagPos(src))
@@ -13054,9 +13052,9 @@ void Player::SwapItem(uint16 src, uint16 dst)
{
if (Item* bagItem = bag->GetItemByPos(i))
{
- if (bagItem->GetGUID() == GetLootGUID())
+ if (HasLootWorldObjectGUID(bagItem->GetGUID()))
{
- m_session->DoLootRelease(GetLootGUID());
+ m_session->DoLootReleaseAll();
released = true; // so we don't need to look at dstBag
break;
}
@@ -13071,9 +13069,9 @@ void Player::SwapItem(uint16 src, uint16 dst)
{
if (Item* bagItem = bag->GetItemByPos(i))
{
- if (bagItem->GetGUID() == GetLootGUID())
+ if (HasLootWorldObjectGUID(bagItem->GetGUID()))
{
- m_session->DoLootRelease(GetLootGUID());
+ m_session->DoLootReleaseAll();
break;
}
}
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index 7978f4be74c..389e2e373dc 100644
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -347,7 +347,8 @@ void WorldSession::DoLootRelease(ObjectGuid lguid)
player->SendLootRelease(lguid);
player->RemoveAELootedWorldObject(lguid);
- player->RemoveUnitFlag(UNIT_FLAG_LOOTING);
+ if (player->GetAELootView().empty())
+ player->RemoveUnitFlag(UNIT_FLAG_LOOTING);
if (!player->IsInWorld())
return;