From 7fc3293fd4cfa5fd927a16ab677e705a46a00e69 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Tue, 25 Oct 2022 18:09:05 -0400 Subject: [PATCH] Fixes some errors with loot. --- Source/Game/Entities/Creature/Creature.Fields.cs | 2 +- Source/Game/Entities/Creature/Creature.cs | 4 ++-- Source/Game/Entities/Player/Player.Items.cs | 5 +---- Source/Game/Loot/Loot.cs | 6 ++---- 4 files changed, 6 insertions(+), 11 deletions(-) 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));