aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.cpp13
-rw-r--r--src/server/game/AuctionHouse/AuctionHouseMgr.h27
2 files changed, 24 insertions, 16 deletions
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
index 83c99e96feb..3aa347b7457 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp
@@ -961,7 +961,7 @@ void AuctionHouseObject::AddAuction(CharacterDatabaseTransaction trans, AuctionP
}
}
- bucket->QualityMask |= static_cast<AuctionHouseFilterMask>(1 << (quality + 4));
+ bucket->QualityMask |= static_cast<AuctionHouseFilterMask>(AsUnderlyingType(AuctionHouseFilterMask::PoorQuality) << quality);
++bucket->QualityCounts[quality];
if (trans)
@@ -1063,7 +1063,7 @@ std::map<uint32, AuctionPosting>::node_type AuctionHouseObject::RemoveAuction(Ch
}
if (!--bucket->QualityCounts[quality])
- bucket->QualityMask &= static_cast<AuctionHouseFilterMask>(~(1 << (quality + 4)));
+ bucket->QualityMask &= static_cast<AuctionHouseFilterMask>(AsUnderlyingType(AuctionHouseFilterMask::PoorQuality) << quality);
}
else
{
@@ -1223,7 +1223,7 @@ void AuctionHouseObject::BuildListBuckets(WorldPackets::AuctionHouse::AuctionLis
{
if (ItemModifiedAppearanceEntry const* itemModifiedAppearance = sItemModifiedAppearanceStore.LookupEntry(bucketAppearance.first))
{
- if (knownAppearanceIds.find(itemModifiedAppearance->ItemAppearanceID) == knownAppearanceIds.end())
+ if (!knownAppearanceIds.contains(itemModifiedAppearance->ItemAppearanceID))
{
hasAll = false;
break;
@@ -1277,6 +1277,13 @@ void AuctionHouseObject::BuildListBuckets(WorldPackets::AuctionHouse::AuctionLis
continue;
}
+ if (filters.HasFlag(AuctionHouseFilterMask::CurrentExpansionOnly))
+ {
+ ItemTemplate const* itemTemplate = ASSERT_NOTNULL(sObjectMgr->GetItemTemplate(bucket.first.ItemId));
+ if (itemTemplate->GetRequiredExpansion() != sWorld->getIntConfig(CONFIG_EXPANSION))
+ continue;
+ }
+
// TODO: this one needs to access loot history to know highest item level for every inventory type
//if (filters.HasFlag(AuctionHouseFilterMask::UpgradesOnly))
//{
diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.h b/src/server/game/AuctionHouse/AuctionHouseMgr.h
index 1ac82af2e4d..2d84fa3f5e8 100644
--- a/src/server/game/AuctionHouse/AuctionHouseMgr.h
+++ b/src/server/game/AuctionHouse/AuctionHouseMgr.h
@@ -97,19 +97,20 @@ constexpr std::size_t MAX_FAVORITE_AUCTIONS = 100;
enum class AuctionHouseFilterMask : uint32
{
- 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 = 0x0000,
+ UncollectedOnly = 0x0002,
+ UsableOnly = 0x0004,
+ CurrentExpansionOnly = 0x0008,
+ UpgradesOnly = 0x0010,
+ ExactMatch = 0x0020,
+ PoorQuality = 0x0040,
+ CommonQuality = 0x0080,
+ UncommonQuality = 0x0100,
+ RareQuality = 0x0200,
+ EpicQuality = 0x0400,
+ LegendaryQuality = 0x0800,
+ ArtifactQuality = 0x1000,
+ LegendaryCraftedItemOnly = 0x2000,
};
DEFINE_ENUM_FLAG(AuctionHouseFilterMask);