fix(Core): fix chests not despawning when opened in group (#5371)

This commit is contained in:
Axel Cocat
2021-04-20 22:51:55 +02:00
committed by GitHub
parent a278fd7340
commit cd6ee1c644
3 changed files with 12 additions and 0 deletions

View File

@@ -60,6 +60,7 @@ GameObject::GameObject() : WorldObject(false), MovableMapObject(),
m_lootGenerationTime = 0;
ResetLootMode(); // restore default loot mode
loot.sourceGameObject = this;
m_stationaryPosition.Relocate(0.0f, 0.0f, 0.0f, 0.0f);
}

View File

@@ -1494,6 +1494,15 @@ void Group::CountTheRoll(Rolls::iterator rollI, Map* allowedMap)
item->is_blocked = false;
}
{
Loot* loot = roll->getLoot();
if (loot->isLooted() && loot->sourceGameObject != nullptr && loot->sourceGameObject->GetGOInfo()->type == GAMEOBJECT_TYPE_CHEST)
{
// Deactivate chest if the last item was rolled in group
loot->sourceGameObject->SetLootState(GO_JUST_DEACTIVATED);
}
}
RollId.erase(rollI);
delete roll;
}

View File

@@ -109,6 +109,7 @@ enum LootSlotType
class Player;
class LootStore;
class ConditionMgr;
class GameObject;
struct Loot;
struct LootStoreItem
@@ -311,6 +312,7 @@ struct Loot
// GUIDLow of container that holds this loot (item_instance.entry), set for items that can be looted
uint32 containerId{0};
GameObject* sourceGameObject;
Loot(uint32 _gold = 0) : gold(_gold) { }
~Loot() { clear(); }