diff options
Diffstat (limited to 'src/server/game/Handlers/ItemHandler.cpp')
-rw-r--r-- | src/server/game/Handlers/ItemHandler.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Handlers/ItemHandler.cpp b/src/server/game/Handlers/ItemHandler.cpp index e24e2bfc7a2..cee3a98a452 100644 --- a/src/server/game/Handlers/ItemHandler.cpp +++ b/src/server/game/Handlers/ItemHandler.cpp @@ -617,6 +617,10 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) WorldPackets::NPC::VendorItem& item = packet.Items[count]; + if (PlayerConditionEntry const* playerCondition = sPlayerConditionStore.LookupEntry(vendorItem->PlayerConditionId)) + if (!ConditionMgr::IsPlayerMeetingCondition(_player, playerCondition)) + item.PlayerConditionFailed = playerCondition->ID; + if (vendorItem->Type == ITEM_VENDOR_TYPE_ITEM) { ItemTemplate const* itemTemplate = sObjectMgr->GetItemTemplate(vendorItem->item); @@ -658,8 +662,14 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) item.Quantity = leftInStock; item.StackCount = itemTemplate->GetBuyCount(); item.Price = price; + item.DoNotFilterOnVendor = vendorItem->IgnoreFiltering; item.Item.ItemID = vendorItem->item; + if (!vendorItem->BonusListIDs.empty()) + { + item.Item.ItemBonus = boost::in_place(); + item.Item.ItemBonus->BonusListIDs = vendorItem->BonusListIDs; + } } else if (vendorItem->Type == ITEM_VENDOR_TYPE_CURRENCY) { @@ -675,6 +685,7 @@ void WorldSession::SendListInventory(ObjectGuid vendorGuid) item.Item.ItemID = vendorItem->item; item.Type = vendorItem->Type; item.StackCount = vendorItem->maxcount; + item.DoNotFilterOnVendor = vendorItem->IgnoreFiltering; } else continue; |