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)) //{