aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/LootHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/LootHandler.cpp')
-rw-r--r--src/server/game/Handlers/LootHandler.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp
index 8fe3ecff2b5..fdaf064dd74 100644
--- a/src/server/game/Handlers/LootHandler.cpp
+++ b/src/server/game/Handlers/LootHandler.cpp
@@ -354,11 +354,14 @@ void WorldSession::DoLootRelease(Loot* loot)
if (loot->isLooted())
{
- creature->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
+ if (creature->IsFullyLooted())
+ {
+ creature->RemoveDynamicFlag(UNIT_DYNFLAG_LOOTABLE);
- // skip pickpocketing loot for speed, skinning timer reduction is no-op in fact
- if (!creature->IsAlive())
- creature->AllLootRemovedFromCorpse();
+ // skip pickpocketing loot for speed, skinning timer reduction is no-op in fact
+ if (!creature->IsAlive())
+ creature->AllLootRemovedFromCorpse();
+ }
}
else
{
@@ -368,9 +371,9 @@ void WorldSession::DoLootRelease(Loot* loot)
loot->roundRobinPlayer.Clear();
loot->NotifyLootList(creature->GetMap());
}
- // force dynflag update to update looter and lootable info
- creature->ForceUpdateFieldChange(creature->m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags));
}
+ // force dynflag update to update looter and lootable info
+ creature->ForceUpdateFieldChange(creature->m_values.ModifyValue(&Object::m_objectData).ModifyValue(&UF::ObjectData::DynamicFlags));
}
}