pfSellData: drop sell column, use C_Item.GetItemSellPriceByID

Each pfSellData entry was a "sell,buy" string. The sell price duplicates
what C_Item.GetItemSellPriceByID returns from the engine's item DBC, so
it's redundant in our table — only the buy price (curated from real
vendor encounters, not a static item property) needs to live here.

Transformed every [id]="X,Y" entry across env/tables.lua, compat/tbc.lua,
and modules/turtle-wow.lua to [id]=Y via sed. Format is now itemid →
buyPrice (number, copper).

sellvalue.lua: reads sell from C_Item.GetItemSellPriceByID(id), reads
buy from pfSellData[id]. Items that have only a sell price (not in
pfSellData) now display sell-only — previously they got no tooltip
addition because the lookup gated on table membership. Items with
buy-only (sell == 0 in old data) still display buy correctly.

autovendor.lua: replaces the pfSellData[id] gate (which only checked
table membership and unused the parsed sell/buy) with a direct
C_Item.GetItemSellPriceByID > 0 check — the engine's canonical
"is this item sellable to a vendor" answer.
This commit is contained in:
Brues
2026-05-21 17:19:29 -05:00
parent d27db55abf
commit 802d47312f
5 changed files with 7140 additions and 7134 deletions
+1835 -1835
View File
File diff suppressed because it is too large Load Diff
+2336 -2334
View File
File diff suppressed because it is too large Load Diff
+2 -3
View File
@@ -58,10 +58,9 @@ pfUI:RegisterModule("autovendor", "vanilla:tbc", function ()
return
end
-- get value
-- only proceed for items the engine reports as vendor-sellable
local id = C_Container.GetContainerItemID(bag, slot)
if pfSellData[id] then
local _, _, sell, buy = strfind(pfSellData[id], "(.*),(.*)")
if (id and C_Item.GetItemSellPriceByID(id) or 0) > 0 then
this.count = this.count + 1
end
+16 -11
View File
@@ -1,31 +1,36 @@
pfUI:RegisterModule("sellvalue", "vanilla:tbc", function ()
local function AddVendorPrices(frame, id, count)
if pfSellData[id] then
local _, _, sell, buy = strfind(pfSellData[id], "(.*),(.*)")
sell = tonumber(sell)
buy = tonumber(buy)
if not id then return end
-- Sell price comes from the engine (item DBC); buy price from pfSellData
-- (curated vendor data, since vendor purchase prices aren't a static field).
local sell = C_Item.GetItemSellPriceByID(id) or 0
local buy = pfSellData[id]
if sell == 0 and not buy then return end
if not MerchantFrame:IsShown() then
if sell > 0 then SetTooltipMoney(frame, sell * count) end
end
if not MerchantFrame:IsShown() and sell > 0 then
SetTooltipMoney(frame, sell * count)
end
if IsShiftKeyDown() or C.tooltip.vendor.showalways == "1" then
frame:AddLine(" ")
if IsShiftKeyDown() or C.tooltip.vendor.showalways == "1" then
frame:AddLine(" ")
if sell > 0 then
if count > 1 then
frame:AddDoubleLine(T["Sell"] .. ":", CreateGoldString(sell) .. "|cff555555 // " .. CreateGoldString(sell*count), 1, 1, 1)
else
frame:AddDoubleLine(T["Sell"] .. ":", CreateGoldString(sell * count), 1, 1, 1)
frame:AddDoubleLine(T["Sell"] .. ":", CreateGoldString(sell), 1, 1, 1)
end
end
if buy then
if count > 1 then
frame:AddDoubleLine(T["Buy"] .. ":", CreateGoldString(buy) .. "|cff555555 // " .. CreateGoldString(buy*count), 1, 1, 1)
else
frame:AddDoubleLine(T["Buy"] .. ":", CreateGoldString(buy), 1, 1, 1)
end
end
frame:Show()
end
frame:Show()
end
pfUI.sellvalue = CreateFrame("Frame", "pfGameTooltip", GameTooltip)
+2951 -2951
View File
File diff suppressed because it is too large Load Diff