Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion spec/System/TestTradeQueryRequests_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -204,8 +204,10 @@ Strict-Transport-Security: max-age=63115200; includeSubDomains; preload]]
account = { name = "seller" },
},
item = {
extended = { text = "VGVzdCBJdGVt" },
pseudoMods = pseudoMods,
rarity = "Rare",
name = "Test Subject",
typeLine = "Astral Plate",
},
}
end
Expand Down
2 changes: 1 addition & 1 deletion src/Classes/ImportTab.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1460,7 +1460,7 @@ function ImportTabClass:ImportItem(itemData, slotName, ignoreWeaponSwap)
item.rarity = rarityMap[itemData.frameType]
if #itemData.name > 0 then
item.title = sanitiseText(itemData.name)
item.baseName = sanitiseText(itemData.typeLine):gsub("Synthesised ","")
item.baseName = sanitiseText(itemData.typeLine):gsub("Synthesised ", ""):gsub("^Vestigial ", "")
item.name = item.title .. ", " .. item.baseName
if item.baseName == "Two-Toned Boots" then
-- Hack for Two-Toned Boots
Expand Down
13 changes: 12 additions & 1 deletion src/Classes/Item.lua
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ local lineFlags = {
-- in poe2. this is currently only added as a hack for cane of kulemak and
-- should be added based on mod tags after matching a mod in the future
["unveiled"] = true,
["vestigial"] = true,
}

-- Special function to store unique instances of modifier on specific item slots
Expand Down Expand Up @@ -690,6 +691,10 @@ function ItemClass:ParseRaw(raw, rarity, highQuality)
end
elseif specName == "CatalystQuality" then
self.catalystQuality = specToNumber(specVal)
elseif specName == "Intangibility" then
self.intangibility = specToNumber(specVal)
elseif specName == "Memory Strands" then
-- ignored
elseif specName == "Note" then
self.note = specVal
elseif specName == "Str" or specName == "Strength" or specName == "Dex" or specName == "Dexterity" or
Expand Down Expand Up @@ -791,7 +796,7 @@ function ItemClass:ParseRaw(raw, rarity, highQuality)
self.name = self.name:gsub(" %(.+%)","")
end
if not baseName then
baseName = line:gsub("^Superior ", ""):gsub("^Synthesised ","")
baseName = line:gsub("^Superior ", ""):gsub("^Synthesised ", ""):gsub("^Vestigial ", "")
end
if baseName == "Two-Toned Boots" then
baseName = "Two-Toned Boots (Armour/Energy Shield)"
Expand Down Expand Up @@ -1479,6 +1484,9 @@ function ItemClass:BuildRaw()
end
end
end
if self.intangibility then
t_insert(rawLines, string.format("Intangibility: %d%%", self.intangibility))
end
if self.uniqueID then
t_insert(rawLines, "Unique ID: " .. self.uniqueID)
end
Expand Down Expand Up @@ -1574,6 +1582,9 @@ function ItemClass:BuildRaw()
if modLine.unscalable then
line = "{unscalable}" .. line
end
if modLine.vestigial then
line = "{vestigial}" .. line
end
if modLine.variantList then
local varSpec
for varId in pairs(modLine.variantList) do
Expand Down
7 changes: 6 additions & 1 deletion src/Classes/ItemsTab.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4272,7 +4272,7 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode, maxWidth)
end
end
end

if item.catalyst and item.catalyst > 0 and item.catalyst <= #catalystQualityFormat and item.catalystQuality and item.catalystQuality > 0 then
tooltip:AddLine(fontSizeBig, s_format(catalystQualityFormat[item.catalyst], item.catalystQuality), "FONTIN SC")
tooltip:AddSeparator(10)
Expand Down Expand Up @@ -4314,6 +4314,11 @@ function ItemsTabClass:AddItemTooltip(tooltip, item, slot, dbMode, maxWidth)
tooltip:AddSeparator(10)
end

if item.intangibility then
tooltip:AddLine(fontSizeBig, colorCodes.INTANGIBILITY .. s_format("Intangibility: ^7%d%%", item.intangibility), "FONTIN SC")
tooltip:AddSeparator(10)
end

-- Requirements
self.build:AddRequirementsToTooltip(tooltip, item.requirements.level,
item.requirements.strMod, item.requirements.dexMod, item.requirements.intMod,
Expand Down
75 changes: 74 additions & 1 deletion src/Classes/TradeQueryRequests.lua
Original file line number Diff line number Diff line change
Expand Up @@ -290,13 +290,86 @@ function TradeQueryRequestsClass:FetchResultBlock(url, callback)
end
local items = {}
for _, trade_entry in pairs(response.result) do
local item = trade_entry.item
local t_insert = table.insert

local rawLines = {}
t_insert(rawLines, "Rarity: " .. item.rarity)
-- item.name is empty when magic and full magic name is in typeLine but typeLine == baseType when rare.
if item.name ~= "" then
t_insert(rawLines, item.name)
end
t_insert(rawLines, item.typeLine)
-- note that PoB MUST parse these properties, or otherwise item
-- parsing will consider anything after a non-matching property
-- an explicit mod line
if item.properties then
for _, property in ipairs(item.properties) do
local name = escapeGGGString(property.name)
if property.values[1] then
t_insert(rawLines, string.format("%s: %s", name, property.values[1][1]))
else
t_insert(rawLines, name)
end
end
end

if item.ilvl then
t_insert(rawLines, "Item Level: " .. item.ilvl)
end
if item.sockets then
local socketString = ""
local colours = {}
for _, socket in ipairs(item.sockets) do
table.insert(colours, socket.sColour)
end
socketString = table.concat(colours, "-")
t_insert(rawLines, "Sockets: " .. socketString)
end


-- TODO: crucible mods
for _, field in ipairs({ "enchantMods", "implicitMods", "scourgeMods", "explicitMods" }) do
if not item[field] then
item[field] = {}
end
end

local function processLine(modLine)
local s = ""
for flagName, flag in pairs(modLine.flags or {}) do
if flag then
s = s .. string.format("{%s}", flagName)
end
end
return s .. escapeGGGString(modLine.description)
end
t_insert(rawLines, "Implicits: " .. (#item.enchantMods + #item.scourgeMods + #item.implicitMods))
for _, modLine in ipairs(item.enchantMods) do
t_insert(rawLines, "{enchant}" .. processLine(modLine))
end
for _, modLine in ipairs(item.scourgeMods) do
t_insert(rawLines, "{scourge}" .. processLine(modLine))
end
for _, modLine in ipairs(item.implicitMods) do
t_insert(rawLines, processLine(modLine))
end
for _, modLine in ipairs(item.explicitMods) do
t_insert(rawLines, processLine(modLine))
end
if item.duplicated then
t_insert(rawLines, "Mirrored")
end
if item.corrupted then
t_insert(rawLines, "Corrupted")
end
local pseudoMod = trade_entry.item.pseudoMods and trade_entry.item.pseudoMods[1]
local pseudoModLine = pseudoMod and (pseudoMod.description or pseudoMod)
table.insert(items, {
amount = trade_entry.listing.price.amount,
currency = trade_entry.listing.price.currency,
priceType = trade_entry.listing.price.type,
item_string = escapeGGGString(common.base64.decode(trade_entry.item.extended.text)),
item_string = table.concat(rawLines, "\n"),
whisper = trade_entry.listing.whisper,
trader = trade_entry.listing.account.name,
weight = pseudoModLine and pseudoModLine:match("Sum: (.+)") or "0",
Expand Down
4 changes: 3 additions & 1 deletion src/Data/Global.lua
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,9 @@ colorCodes = {
SAPBG = "^x261500",
SCOURGE = "^xFF6E25",
CRUCIBLE = "^xFFA500",
SPLITPERSONALITY = "^xFFD62A"
SPLITPERSONALITY = "^xFFD62A",
VESTIGIAL = "^xCBA5F1",
INTANGIBILITY = "^x9BF4BD",
}
colorCodes.STRENGTH = colorCodes.MARAUDER
colorCodes.DEXTERITY = colorCodes.RANGER
Expand Down
2 changes: 1 addition & 1 deletion src/Modules/ItemTools.lua
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ function itemLib.formatModLine(modLine, dbMode)
line = line .. " ^1'" .. modLine.extra .. "'"
end
else
colorCode = (modLine.fractured and colorCodes.FRACTURED) or (modLine.crafted and colorCodes.CRAFTED) or (modLine.mutated and colorCodes.MUTATED) or (modLine.scourge and colorCodes.SCOURGE) or (modLine.custom and colorCodes.CUSTOM) or (modLine.crucible and colorCodes.CRUCIBLE) or colorCodes.MAGIC
colorCode = (modLine.fractured and colorCodes.FRACTURED) or (modLine.crafted and colorCodes.CRAFTED) or (modLine.mutated and colorCodes.MUTATED) or (modLine.scourge and colorCodes.SCOURGE) or (modLine.custom and colorCodes.CUSTOM) or (modLine.crucible and colorCodes.CRUCIBLE) or (modLine.vestigial and colorCodes.VESTIGIAL) or colorCodes.MAGIC
end
return colorCode..line
end
Expand Down
Loading