diff options
Diffstat (limited to 'src/server/game/Handlers/LootHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/LootHandler.cpp | 15 |
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)); } } |