Krowi's Extended Vendor UI

Krowi's Extended Vendor UI

59.5k Downloads

[Bug] merchant frame broken when filtering is active (Cata Classic)

ZMA777 opened this issue ยท 8 comments

commented

Hello! Just wanted to submit a bug in the add-on (installed version 13.1) for Cata Classic:

When visiting a vendor with filtering options active (e.g. hide collected recipes) and there are vendor items that would get filtered, the merchant frame becomes broken and unresponsive.

In BugSack, the following errors are shown:

4x Invalid merchant slot in SetMerchantItem
[string "@Krowi_ExtendedVendorUI/Gui/MerchantItemsContainer.lua"]:21: in function <...rowi_ExtendedVendorUI/Gui/MerchantItemsContainer.lua:18>

Locals:
button = MerchantItem20ItemButton {
 CanIMogItOverlay = CIMIOverlayFrame_MerchantItem20ItemButton {
 }
 IconOverlay = Texture {
 }
 extendedCost = true
 IconBorder = Texture {
 }
 hasItem = true
 icon = MerchantItem20ItemButtonIconTexture {
 }
 texture = 134941
 subicon = MerchantItem20ItemButtonSubIconTexture {
 }
 numInStock = -1
 link = "|cff0070dd|Hitem:71915::::::::85:::::::::|h[Design: Reckless Lava Coral]|h|r"
 Count = MerchantItem20ItemButtonCount {
 }
 name = "Design: Reckless Lava Coral"
 showNonrefundablePrompt = false
 searchOverlay = MerchantItem20ItemButtonSearchOverlay {
 }
 count = 1
}
addon = <table> {
 Icon = <table> {
 }
 Options = <table> {
 }
 Api = <table> {
 }
 Gui = <table> {
 }
 Filters = <table> {
 }
 CachedItemIndices = <table> {
 }
 Metadata = <table> {
 }
 IsDragonflightRetail = false
 InjectOptions = <table> {
 }
 Localization = <table> {
 }
 Plugins = <table> {
 }
 Libs = <table> {
 }
 L = <table> {
 }
 Util = <table> {
 }
 IsWrathClassic = false
}
17x Krowi_ExtendedVendorUI/Filters.lua:359: attempt to index global 'C_TooltipInfo' (a nil value)
[string "@Krowi_ExtendedVendorUI/Filters.lua"]:359: in function `IsRecipeCollected'
[string "@Krowi_ExtendedVendorUI/Filters.lua"]:157: in function `Validate'
[string "@Krowi_ExtendedVendorUI/Gui/MerchantFrame.lua"]:192: in function `GetMerchantNumItems'
[string "@Blizzard_UIPanels_Game/TBC/MerchantFrame.lua"]:191: in function <Blizzard_UIPanels_Game/TBC/MerchantFrame.lua:187>
[string "=[C]"]: ?
[string "=[C]"]: in function `MerchantFrame_UpdateMerchantInfo'
[string "@Blizzard_UIPanels_Game/TBC/MerchantFrame.lua"]:130: in function <Blizzard_UIPanels_Game/TBC/MerchantFrame.lua:123>
[string "=[C]"]: ?
[string "@Krowi_ExtendedVendorUI/Gui/MerchantItemsContainer.lua"]:99: in function `MerchantFrame_Update'
[string "@Krowi_ExtendedVendorUI/Krowi_ExtendedVendorUI.lua"]:41: in function <...ns/Krowi_ExtendedVendorUI/Krowi_ExtendedVendorUI.lua:38>
[string "=[C]"]: in function `MerchantFrame_SetFilter'
[string "@Krowi_ExtendedVendorUI/Gui/FilterButton/FilterButtonMixin.lua"]:45: in function `func'
[string "@Blizzard_SharedXML/Classic/UIDropDownMenu.lua"]:975: in function `UIDropDownMenuButton_OnClick'
[string "*UIDropDownMenuTemplates.xml:148_OnClick"]:1: in function <[string "*UIDropDownMenuTemplates.xml:148_OnClick"]:1>

Locals:
itemId = 71949
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index global 'C_TooltipInfo' (a nil value)"
commented

Perfect, thank you very much. Would be great if it could get fixed for MoP classic, as the filtering functions are very useful.

I also got some feature suggestions inspired by other addons:

  • Instead of hiding the filtered items completely, optionally just graying them out.
  • Option to also filter suboptimal armor classes (e.g. cloth on a leather wearer etc.)
commented

Is it not fixed for mop classic?

commented

It is fixed, but filtering recipes and pets isn't possible anymore.

commented

Temporarily disabled recipe filtering

commented

Thank you very much for the quick fix, the merchant frame for recipe vendors now works fine.

However, the frame is still broken for vendors that sell pets (e.g. Baradin's Wardens quartermaster). When visiting this vendor, I get the following error (regardless if filtering is active or not):

5x Krowi_ExtendedVendorUI/Filters.lua:184: attempt to call field 'GetPetInfoByItemID' (a nil value)
[string "@Krowi_ExtendedVendorUI/Filters.lua"]:184: in function `IsPet'
[string "@Krowi_ExtendedVendorUI/Filters.lua"]:132: in function `Validate'
[string "@Krowi_ExtendedVendorUI/Gui/MerchantFrame.lua"]:192: in function `GetMerchantNumItems'
[string "@Auctionator/Source/CraftingInfo/Main.lua"]:2: in function `CacheVendorPrices'
[string "@Auctionator/Source_Classic/Initialize/Main.lua"]:23: in function <...ddOns/Auctionator/Source_Classic/Initialize/Main.lua:17>

Locals:
itemId = 63355
classId = 15
subclassId = 2
(*temporary) = nil
(*temporary) = 63355
(*temporary) = "attempt to call field 'GetPetInfoByItemID' (a nil value)"
commented

Is there another vendor you know that could reproduce this? I only have a lvl 59 character on cata classic so I can;t get to the npc.

commented

Yes, for example the pet vendor just outside Stormwind. But it seems the bug has been fixed in the meantime by disabling pet filtering as well?

commented

Yes, I disabled it for now until I can look for a proper fix. Probably will wait for MoP classic to do it.