From 6531cd9dc10341feef7ed921b889dd5038949769 Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Tue, 2 Sep 2025 13:01:36 -0400 Subject: [PATCH] Core/AuctionHouse: Updated AuctionHouseFilterMask and implemented current expansion filter Port From (https://github.com/TrinityCore/TrinityCore/commit/5b278a4ca79dd8aa19cde3892d92ae857d6f1dd4) --- Source/Framework/Constants/AuctionConst.cs | 27 +++++++++++----------- Source/Game/AuctionHouse/AuctionManager.cs | 11 +++++++-- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/Source/Framework/Constants/AuctionConst.cs b/Source/Framework/Constants/AuctionConst.cs index 12adb22ba..ebbe6badd 100644 --- a/Source/Framework/Constants/AuctionConst.cs +++ b/Source/Framework/Constants/AuctionConst.cs @@ -50,19 +50,20 @@ namespace Framework.Constants [Flags] public enum AuctionHouseFilterMask { - None = 0x0, - UncollectedOnly = 0x1, - UsableOnly = 0x2, - UpgradesOnly = 0x4, - ExactMatch = 0x8, - PoorQuality = 0x10, - CommonQuality = 0x20, - UncommonQuality = 0x40, - RareQuality = 0x80, - EpicQuality = 0x100, - LegendaryQuality = 0x200, - ArtifactQuality = 0x400, - LegendaryCraftedItemOnly = 0x800, + None = 0x00, + UncollectedOnly = 0x02, + UsableOnly = 0x04, + CurrentExpansionOnly = 0x08, + UpgradesOnly = 0x10, + ExactMatch = 0x20, + PoorQuality = 0x40, + CommonQuality = 0x80, + UncommonQuality = 0x100, + RareQuality = 0x200, + EpicQuality = 0x400, + LegendaryQuality = 0x800, + ArtifactQuality = 0x1000, + LegendaryCraftedItemOnly = 0x2000, } public enum AuctionHouseSortOrder diff --git a/Source/Game/AuctionHouse/AuctionManager.cs b/Source/Game/AuctionHouse/AuctionManager.cs index 844a2aeea..05f0c4f47 100644 --- a/Source/Game/AuctionHouse/AuctionManager.cs +++ b/Source/Game/AuctionHouse/AuctionManager.cs @@ -625,7 +625,7 @@ namespace Game } } - bucket.QualityMask |= (AuctionHouseFilterMask)(1 << ((int)quality + 4)); + bucket.QualityMask |= (AuctionHouseFilterMask)((uint)AuctionHouseFilterMask.PoorQuality << (int)quality); ++bucket.QualityCounts[quality]; if (trans != null) @@ -733,7 +733,7 @@ namespace Game } if (--bucket.QualityCounts[quality] == 0) - bucket.QualityMask &= (AuctionHouseFilterMask)(~(1 << ((int)quality + 4))); + bucket.QualityMask &= (AuctionHouseFilterMask)((uint)AuctionHouseFilterMask.PoorQuality << (int)quality); } else _buckets.Remove(bucket.Key); @@ -937,6 +937,13 @@ namespace Game continue; } + if (filters.HasFlag(AuctionHouseFilterMask.CurrentExpansionOnly)) + { + ItemTemplate itemTemplate = Global.ObjectMgr.GetItemTemplate(bucket.Key.ItemId); + if (itemTemplate.GetRequiredExpansion() != WorldConfig.GetIntValue(WorldCfg.Expansion)) + continue; + } + // TODO: this one needs to access loot history to know highest item level for every inventory type //if (filters.HasFlag(AuctionHouseFilterMask.UpgradesOnly)) //{