diff --git a/Source/Game/Entities/Player/Player.Items.cs b/Source/Game/Entities/Player/Player.Items.cs index 2043d6833..1358c8e99 100644 --- a/Source/Game/Entities/Player/Player.Items.cs +++ b/Source/Game/Entities/Player/Player.Items.cs @@ -2393,7 +2393,7 @@ namespace Game.Entities // 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)) @@ -2404,9 +2404,9 @@ namespace Game.Entities Item bagItem = bag.GetItemByPos(i); if (bagItem != null) { - if (bagItem.GetGUID() == GetLootGUID()) + if (HasLootWorldObjectGUID(bagItem.GetGUID())) { - GetSession().DoLootRelease(GetLootGUID()); + GetSession().DoLootReleaseAll(); released = true; // so we don't need to look at dstBag break; } @@ -2422,9 +2422,9 @@ namespace Game.Entities Item bagItem = bag.GetItemByPos(i); if (bagItem != null) { - if (bagItem.GetGUID() == GetLootGUID()) + if (HasLootWorldObjectGUID(bagItem.GetGUID())) { - GetSession().DoLootRelease(GetLootGUID()); + GetSession().DoLootReleaseAll(); break; } } diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 0bdd4095f..4492d904b 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -756,9 +756,7 @@ namespace Game.Entities StopCastingBindSight(); UnsummonPetTemporaryIfAny(); ClearComboPoints(); - ObjectGuid lootGuid = GetLootGUID(); - if (!lootGuid.IsEmpty()) - GetSession().DoLootRelease(lootGuid); + GetSession().DoLootReleaseAll(); Global.OutdoorPvPMgr.HandlePlayerLeaveZone(this, m_zoneUpdateId); Global.BattleFieldMgr.HandlePlayerLeaveZone(this, m_zoneUpdateId); } diff --git a/Source/Game/Handlers/LootHandler.cs b/Source/Game/Handlers/LootHandler.cs index 1aea81577..c744d0e18 100644 --- a/Source/Game/Handlers/LootHandler.cs +++ b/Source/Game/Handlers/LootHandler.cs @@ -350,7 +350,8 @@ namespace Game player.SendLootRelease(lguid); player.RemoveAELootedWorldObject(lguid); - player.RemoveUnitFlag(UnitFlags.Looting); + if (player.GetAELootView().Empty()) + player.RemoveUnitFlag(UnitFlags.Looting); if (!player.IsInWorld) return;