diff --git a/Source/Game/Entities/Creature/Creature.Fields.cs b/Source/Game/Entities/Creature/Creature.Fields.cs index f47bde160..3aa6616f2 100644 --- a/Source/Game/Entities/Creature/Creature.Fields.cs +++ b/Source/Game/Entities/Creature/Creature.Fields.cs @@ -92,7 +92,7 @@ namespace Game.Entities internal Dictionary m_personalLoot = new(); public Loot _loot; - List m_tapList = new(); + HashSet m_tapList = new(); } public enum ObjectCellMoveState diff --git a/Source/Game/Entities/Creature/Creature.cs b/Source/Game/Entities/Creature/Creature.cs index 0b067fd3b..9eea35dd6 100644 --- a/Source/Game/Entities/Creature/Creature.cs +++ b/Source/Game/Entities/Creature/Creature.cs @@ -1244,8 +1244,8 @@ namespace Game.Entities return false; } - public List GetTapList() { return m_tapList; } - public void SetTapList(List tapList) { m_tapList = tapList; } + public HashSet GetTapList() { return m_tapList; } + public void SetTapList(HashSet tapList) { m_tapList = tapList; } public bool HasLootRecipient() { return !m_tapList.Empty(); } public void SaveToDB() diff --git a/Source/Game/Entities/Player/Player.Items.cs b/Source/Game/Entities/Player/Player.Items.cs index a93bd179f..4f359602c 100644 --- a/Source/Game/Entities/Player/Player.Items.cs +++ b/Source/Game/Entities/Player/Player.Items.cs @@ -4107,10 +4107,7 @@ namespace Game.Entities public Loot GetLootByWorldObjectGUID(ObjectGuid lootWorldObjectGuid) { - if (m_AELootView.TryGetValue(lootWorldObjectGuid, out Loot lootView)) - return lootView; - - return null; + return m_AELootView.FirstOrDefault(pair => pair.Value.GetOwnerGUID() == lootWorldObjectGuid).Value; } public LootRoll GetLootRoll(ObjectGuid lootObjectGuid, byte lootListId) diff --git a/Source/Game/Loot/Loot.cs b/Source/Game/Loot/Loot.cs index 7486d4690..4d373eae7 100644 --- a/Source/Game/Loot/Loot.cs +++ b/Source/Game/Loot/Loot.cs @@ -827,10 +827,6 @@ namespace Game.Loots void FillNotNormalLootFor(Player player) { - if (_dungeonEncounterId != 0) - if (player.IsLockedToDungeonEncounter(_dungeonEncounterId)) - return; - ObjectGuid plguid = player.GetGUID(); _allowedLooters.Add(plguid); @@ -841,6 +837,8 @@ namespace Game.Loots if (!item.AllowedForPlayer(player, this)) continue; + item.AddAllowedLooter(player); + if (item.freeforall) { ffaItems.Add(new NotNormalLootItem((byte)item.LootListId));