From e69db2526e21636738936a96fd732625fc8e15e8 Mon Sep 17 00:00:00 2001 From: vaisest Date: Mon, 3 Aug 2026 10:39:50 +0000 Subject: [PATCH] Apply changes from https://github.com/PathOfBuildingCommunity/PathOfBuilding/pull/10077 --- spec/System/TestTradeQueryCurrency_spec.lua | 9 +- .../TestTradeQueryCurrency_spec.lua.rej | 163 ++++ src/Classes/PoEAPI.lua.rej | 45 ++ src/Classes/TradeQuery.lua | 20 +- src/Classes/TradeQuery.lua.rej | 221 ++++++ src/Data/CurrencyNames.lua | 702 ++++++++++++++++++ src/Export/Scripts/miscdata.lua | 9 + 7 files changed, 1153 insertions(+), 16 deletions(-) create mode 100644 spec/System/TestTradeQueryCurrency_spec.lua.rej create mode 100644 src/Classes/PoEAPI.lua.rej create mode 100644 src/Classes/TradeQuery.lua.rej create mode 100644 src/Data/CurrencyNames.lua diff --git a/spec/System/TestTradeQueryCurrency_spec.lua b/spec/System/TestTradeQueryCurrency_spec.lua index 2758a84363..35a2baa938 100644 --- a/spec/System/TestTradeQueryCurrency_spec.lua +++ b/spec/System/TestTradeQueryCurrency_spec.lua @@ -9,7 +9,8 @@ describe("TradeQuery Currency Conversion", function() -- Pass: Calculates price in divs -- Fail: Wrong value or nil, indicating broken rounding/baseline logic it("handles chaos currency", function() - mock_tradeQuery.pbCurrencyConversion = { league = { chaos = 0.1 } } + mock_tradeQuery.pbCurrencyConversion = { realm = { league = { chaos = 0.1 } } } + mock_tradeQuery.pbRealm = "realm" mock_tradeQuery.pbLeague = "league" local result = mock_tradeQuery:ConvertCurrencyToDivs("chaos", 5) assert.are.equal(result, 0.5) @@ -67,14 +68,14 @@ describe("TradeQuery Currency Conversion", function() assert.are.equal(result, "1 exalted, 10 div, 5 chaos") -- check if they're sorted according to currency value + mock_tradeQuery.pbRealm = "realm" mock_tradeQuery.pbLeague = "league" - mock_tradeQuery.pbCurrencyConversion = { league = { chaos = 0.1, exalted = 0.05, div = 1, mirror = 700} } + mock_tradeQuery.pbCurrencyConversion = { realm = { league = { chaos = 0.1, exalted = 0.05, div = 1, mirror = 700 } } } local result = mock_tradeQuery:GetTotalPriceString() assert.are.equal(result, "10 div, 5 chaos, 1 exalted") -- check that missing currency values don't crash - mock_tradeQuery.pbLeague = "league" - mock_tradeQuery.pbCurrencyConversion = { league = { chaos = 0.1, exalted = 0.05, mirror = 700 } } + mock_tradeQuery.pbCurrencyConversion = { realm = { league = { chaos = 0.1, exalted = 0.05, mirror = 700 } } } local result = mock_tradeQuery:GetTotalPriceString() assert.True(true) end) diff --git a/spec/System/TestTradeQueryCurrency_spec.lua.rej b/spec/System/TestTradeQueryCurrency_spec.lua.rej new file mode 100644 index 0000000000..e65a5603ea --- /dev/null +++ b/spec/System/TestTradeQueryCurrency_spec.lua.rej @@ -0,0 +1,163 @@ +diff a/spec/System/TestTradeQueryCurrency_spec.lua b/spec/System/TestTradeQueryCurrency_spec.lua (rejected hunks) +@@ -58,6 +58,7 @@ describe("TradeQuery Currency Conversion", function() + local CHAOS = "Metadata/Items/Currency/CurrencyRerollRare" + local EXALT = "Metadata/Items/Currency/CurrencyAddModToRare" + local ALCH = "Metadata/Items/Currency/CurrencyUpgradeToRare" ++ local STACKED_DECK = "Metadata/Items/DivinationCards/DivinationCardDeck" + + -- static trade data: maps display name -> short trade id + local static = { +@@ -68,35 +69,96 @@ describe("TradeQuery Currency Conversion", function() + { id = "chaos", text = "Chaos Orb" }, + { id = "exalt", text = "Exalted Orb" }, + { id = "alch", text = "Orb of Alchemy" }, ++ { id = "stacked-deck", text = "Stacked Deck" }, + } + } } + } + +- local origDownloadPage, origApi ++ local origDownloadPage, cxResponse + + before_each(function() + mock_tradeQuery.pbRealm = "pc" + mock_tradeQuery.controls.pbNotice = {} + origDownloadPage = launch.DownloadPage +- origApi = main.api +- -- static trade data is fetched first via launch:DownloadPage +- launch.DownloadPage = function(_, _url, callback) +- callback({ body = dkjson.encode(static) }) ++ cxResponse = nil ++ launch.DownloadPage = function(_, url, callback) ++ if url == "https://www.pathofexile.com/api/trade/data/static" then ++ callback({ body = dkjson.encode(static) }) ++ elseif cxResponse then ++ callback({ body = dkjson.encode(cxResponse) }) ++ end + end + end) + + after_each(function() + launch.DownloadPage = origDownloadPage +- main.api = origApi + end) + +- -- helper: make main.api:FetchCurrencyExchange feed the given markets back +- local function mockCX(markets) +- main.api = { +- FetchCurrencyExchange = function(_, _realm, callback) +- callback({ body = dkjson.encode({ markets = markets }) }) ++ it("fetches currency exchange data without authentication", function() ++ local requestedUrl ++ local requestedParams ++ launch.DownloadPage = function(_, url, callback, params) ++ if url == "https://www.pathofexile.com/api/trade/data/static" then ++ callback({ body = dkjson.encode(static) }) ++ else ++ requestedUrl = url ++ requestedParams = params ++ callback({ body = dkjson.encode({ markets = {} }) }) ++ end ++ end ++ ++ mock_tradeQuery.pbRealm = "xbox" ++ mock_tradeQuery:PullCXData() ++ ++ assert.is_truthy(requestedUrl:match("^https://web%.poecdn%.com/api/currency%-exchange/xbox/%d+$")) ++ assert.is_nil(requestedParams) ++ end) ++ ++ it("waits until a realm is selected", function() ++ local fetched = false ++ mock_tradeQuery.pbRealm = "" ++ launch.DownloadPage = function() ++ fetched = true ++ end ++ ++ mock_tradeQuery:PullCXData() ++ ++ assert.is_false(fetched) ++ end) ++ ++ it("stores responses under the requested realm", function() ++ local callbacks = {} ++ launch.DownloadPage = function(_, url, callback) ++ if url == "https://www.pathofexile.com/api/trade/data/static" then ++ callback({ body = dkjson.encode(static) }) ++ elseif url:find("/xbox/", 1, true) then ++ callbacks.xbox = callback ++ else ++ callbacks.pc = callback + end +- } ++ end ++ ++ mock_tradeQuery.pbRealm = "pc" ++ mock_tradeQuery:PullCXData() ++ mock_tradeQuery.pbRealm = "xbox" ++ mock_tradeQuery:PullCXData() ++ ++ for _, response in ipairs({ { "xbox", 5 }, { "pc", 10 } }) do ++ callbacks[response[1]]({ body = dkjson.encode({ markets = { { ++ league = "Standard", ++ market_pair = { EXALT, DIVINE }, ++ lowest_ratio = { [EXALT] = response[2], [DIVINE] = 1 }, ++ highest_stock = { [EXALT] = 100, [DIVINE] = 100 }, ++ } } }) }) ++ end ++ ++ assert.are.equal(0.1, mock_tradeQuery.pbCurrencyConversion.pc.Standard.exalt) ++ assert.are.equal(0.2, mock_tradeQuery.pbCurrencyConversion.xbox.Standard.exalt) ++ end) ++ ++ -- Provide the currency exchange response returned by the download mock. ++ local function mockCX(markets) ++ cxResponse = { markets = markets } + end + + it("converts a chained market to divine values", function() +@@ -122,6 +184,12 @@ describe("TradeQuery Currency Conversion", function() + lowest_ratio = { [ALCH] = 5, [CHAOS] = 1 }, + highest_stock = { [ALCH] = 1000, [CHAOS] = 1000 }, + }, ++ { ++ league = "Standard", ++ market_pair = { STACKED_DECK, DIVINE }, ++ lowest_ratio = { [STACKED_DECK] = 50, [DIVINE] = 1 }, ++ highest_stock = { [STACKED_DECK] = 1000, [DIVINE] = 100 }, ++ }, + }) + + mock_tradeQuery:PullCXData() +@@ -133,6 +201,7 @@ describe("TradeQuery Currency Conversion", function() + assert.are.equal(0.005, rates.chaos) + -- 0.2 chaos * 0.005 div/chaos = 0.001 div + assert.are.equal(0.001, rates.alch) ++ assert.are.equal(0.02, rates["stacked-deck"]) + end) + + it("keeps the highest-stock listing for a currency", function() +@@ -173,11 +242,7 @@ describe("TradeQuery Currency Conversion", function() + end) + + it("shows a notice on an API error response", function() +- main.api = { +- FetchCurrencyExchange = function(_, _realm, callback) +- callback({ body = dkjson.encode({ error = { message = "kaput" } }) }) +- end +- } ++ cxResponse = { error = { message = "kaput" } } + + mock_tradeQuery:PullCXData() + +@@ -188,9 +253,7 @@ describe("TradeQuery Currency Conversion", function() + it("does not refetch within the rate-limit window", function() + mock_tradeQuery.pbCurrencyConversion.pc = { timestamp = os.time() } + local fetched = false +- main.api = { +- FetchCurrencyExchange = function() fetched = true end +- } ++ launch.DownloadPage = function() fetched = true end + + mock_tradeQuery:PullCXData() + diff --git a/src/Classes/PoEAPI.lua.rej b/src/Classes/PoEAPI.lua.rej new file mode 100644 index 0000000000..9dde9cb431 --- /dev/null +++ b/src/Classes/PoEAPI.lua.rej @@ -0,0 +1,45 @@ +diff a/src/Classes/PoEAPI.lua b/src/Classes/PoEAPI.lua (rejected hunks) +@@ -17,7 +17,6 @@ local PoEAPIClass = newClass("PoEAPI", function(self, authToken, refreshToken, t + self.refreshToken = refreshToken + self.tokenExpiry = tokenExpiry or 0 + self.baseUrl = "https://api.pathofexile.com" +- self.CDNBaseUrl = "https://web.poecdn.com/api" + self.rateLimiter = new("TradeQueryRateLimiter") + self.tokenHasBeenValidated = false + +@@ -152,8 +151,7 @@ end + + --- @param endpoint string + --- @param callback fun(response: table?, errorMsg: string) +-function PoEAPIClass:DownloadWithRefresh(endpoint, callback, useCDN) +- local baseUrl = useCDN and self.CDNBaseUrl or self.baseUrl ++function PoEAPIClass:DownloadWithRefresh(endpoint, callback) + self:ValidateAuth(function(valid, validationErrMsg) + if not valid then + -- Clean info about token and refresh token +@@ -162,7 +160,7 @@ function PoEAPIClass:DownloadWithRefresh(endpoint, callback, useCDN) + return + end + +- launch:DownloadPage(baseUrl .. endpoint, function(response, errMsg) ++ launch:DownloadPage(self.baseUrl .. endpoint, function(response, errMsg) + if errMsg and errMsg:match("401") and self.retries < 1 then + -- try once again with refresh token + self.retries = 1 +@@ -234,16 +232,3 @@ function PoEAPIClass:DownloadCharacter(realm, name, callback) + self:DownloadWithRateLimit("character-request-limit", + "/character" .. (realm == "pc" and "" or "/" .. realm) .. "/" .. name, callback) + end +- +----@param realm string +----@param callback DownloadCallback +-function PoEAPIClass:FetchCurrencyExchange(realm, callback) +- local url = "/currency-exchange" +- if realm ~= "pc" then +- url = url .. "/" .. realm +- end +- local hourSeconds = 60 * 60 +- local unixTimeLastHour = (math.floor(os.time() / hourSeconds) - 1) * hourSeconds +- url = url .. "/" .. unixTimeLastHour +- self:DownloadWithRefresh(url, callback, true) +-end diff --git a/src/Classes/TradeQuery.lua b/src/Classes/TradeQuery.lua index 261457739e..107a692fa1 100644 --- a/src/Classes/TradeQuery.lua +++ b/src/Classes/TradeQuery.lua @@ -35,10 +35,9 @@ local TradeQueryClass = newClass("TradeQuery", function(self, itemsTab) -- default set of trade item sort selection self.slotTables = { } self.pbItemSortSelectionIndex = 1 - -- for each league, a table of values of each currency in div - --- @type table> - self.pbCurrencyConversion = { } - self.lastCurrencyConversionRequest = 0 + -- for each realm and league, a table of values of each currency in div + --- @type table>> + self.pbCurrencyConversion = {} self.lastCurrencyFileTime = { } self.pbFileTimestampDiff = { } self.pbRealm = "" @@ -94,7 +93,6 @@ function TradeQueryClass:PullLeagueList() self.controls.league:SetList(self.itemsTab.leagueDropList) self.controls.league.selIndex = 1 self.pbLeague = self.itemsTab.leagueDropList[self.controls.league.selIndex] - self:SetCurrencyConversionButton() end end) end @@ -382,14 +380,16 @@ Highest Weight - Displays the order retrieved from trade]] self.controls.realmLabel = new("LabelControl", {"LEFT", self.controls.setSelect, "RIGHT"}, {18, 0, 20, row_height - 4}, "^7Realm:") self.controls.realm = new("DropDownControl", {"LEFT", self.controls.realmLabel, "RIGHT"}, {6, 0, 150, row_height}, self.realmDropList, function(index, value) self.pbRealmIndex = index - self.pbRealm = self.realmIds[value] + if self.pbRealm ~= self.realmIds[value] then + self.pbRealm = self.realmIds[value] + self:PullCXData() + end local function setLeagueDropList() self.itemsTab.leagueDropList = copyTable(self.allLeagues[self.pbRealm]) self.controls.league:SetList(self.itemsTab.leagueDropList) -- invalidate selIndex to trigger select function call in the SetSel self.controls.league.selIndex = nil self.controls.league:SetSel(self.pbLeagueIndex) - self:SetCurrencyConversionButton() end if self.allLeagues[self.pbRealm] then setLeagueDropList() @@ -422,7 +422,6 @@ Highest Weight - Displays the order retrieved from trade]] self.controls.league = new("DropDownControl", {"LEFT", self.controls.leagueLabel, "RIGHT"}, {6, 0, 150, row_height}, self.itemsTab.leagueDropList, function(index, value) self.pbLeagueIndex = index self.pbLeague = value - self:SetCurrencyConversionButton() end) self.controls.league:SetSel(self.pbLeagueIndex) self.controls.league.enabled = function() @@ -577,11 +576,7 @@ Highest Weight - Displays the order retrieved from trade]] main:ClosePopup() end) - self.controls.updateCurrencyConversion = new("ButtonControl", {"BOTTOMLEFT", nil, "BOTTOMLEFT"}, {pane_margins_horizontal, -pane_margins_vertical, 240, row_height}, "Get Currency Conversion Rates", function() - self:PullPoENinjaCurrencyConversion(self.pbLeague) - end) self.controls.pbNotice = new("LabelControl", {"BOTTOMRIGHT", nil, "BOTTOMRIGHT"}, {-row_height - pane_margins_vertical - row_vertical_padding, -pane_margins_vertical, 300, row_height}, "") - self:SetCurrencyConversionButton() -- used in PopupDialog:Draw() local function scrollBarFunc() @@ -615,6 +610,7 @@ Highest Weight - Displays the order retrieved from trade]] end end end + self:PullCXData() main:OpenPopup(pane_width, self.pane_height, "Trader", self.controls, nil, nil, "close", (scrollBarShown and scrollBarFunc or nil)) end diff --git a/src/Classes/TradeQuery.lua.rej b/src/Classes/TradeQuery.lua.rej new file mode 100644 index 0000000000..6894f19ced --- /dev/null +++ b/src/Classes/TradeQuery.lua.rej @@ -0,0 +1,221 @@ +diff a/src/Classes/TradeQuery.lua b/src/Classes/TradeQuery.lua (rejected hunks) +@@ -116,103 +115,15 @@ local generalCurrencies = { + ["Metadata/Items/Currency/CurrencyRerollRare"] = true + } + +----@return table> exchangeData For each league, a map from currency name to value in divines. +-local function processCXResponse(static, CXData) +- -- short currency names for each base item type id +- local currencyNames = {} +- -- long currency names for each base item type id +- local currencyIdMapData = require("Data.CurrencyNames") +- -- make map bidirectional +- local currencyIdMap = {} +- for k, v in pairs(currencyIdMapData) do +- currencyIdMap[v] = k +- currencyIdMap[k] = v +- end +- -- build currencyNames +- for _, entry in ipairs(static.result[1].entries) do +- if entry.id ~= "sep" then +- local itemID = currencyIdMap[entry.text] +- -- it's possible for there to be no match as only the "currency" +- -- category is exported. the static data is used for the bulk +- -- trading function which means not every item is actually used as a +- -- trade site currency +- if itemID then +- currencyNames[itemID] = entry.id +- end +- end +- end +- local out = {} +- for _, entry in ipairs(CXData.markets) do +- local league = entry.league +- if not out[league] then +- out[league] = {} +- end +- local leagueOut = out[league] +- +- -- base type ids in the form of e.g. Metadata/Items/.../CurrencyModValues +- local fromID = entry.market_pair[1] +- local toID = entry.market_pair[2] +- +- -- entry is from chaos/div to something else -> flip +- if generalCurrencies[fromID] and not (toID == "Metadata/Items/Currency/CurrencyModValues") then +- fromID, toID = toID, fromID +- end +- +- -- short name such as "divine" which the trade site actually uses +- local fromShort = currencyNames[fromID] +- local toShort = currencyNames[toID] +- local price +- +- if (not fromShort) or (not generalCurrencies[toID]) or (entry.lowest_ratio[fromID] == 0) then +- goto CXContinue +- end +- +- price = entry.lowest_ratio[toID] / entry.lowest_ratio[fromID] +- local newEntry = { +- currency = toShort, +- price = price, +- stock = entry.highest_stock[fromID] +- } +- -- only keep the most popular option +- if (not leagueOut[fromShort]) or (leagueOut[fromShort].stock < newEntry.stock) then +- leagueOut[fromShort] = newEntry +- end +- ::CXContinue:: +- end +- +- -- convert any non-divine prices to divine equivalent prices +- for leagueName, leagueEntries in pairs(out) do +- for from, to in pairs(leagueEntries) do +- if to.currency ~= "divine" then +- local divEntry = leagueEntries[to.currency] +- if not divEntry then +- leagueEntries[from] = nil +- else +- leagueEntries[from] = divEntry.price * to.price +- end +- end +- end +- -- iterate again to convert prices that were already divine to just the price number +- for from, to in pairs(leagueEntries) do +- if type(to) == "table" then +- leagueEntries[from] = to.price +- end +- end +- -- delete empty league entries +- if not next(leagueEntries) then +- out[leagueName] = nil +- else +- leagueEntries.divine = 1 +- end +- end +- +- return out +-end + -- Method to pull down and interpret the Currency Exchange JSON endpoint data + function TradeQueryClass:PullCXData() ++ local realm = self.pbRealm ++ if realm == "" then ++ return ++ end + local now = get_time() + -- Limit Currency Conversion request to 1 per hour +- if self.pbCurrencyConversion[self.pbRealm] and ((now - self.pbCurrencyConversion[self.pbRealm].timestamp) < 61 * 60) then ++ if self.pbCurrencyConversion[realm] and ((now - self.pbCurrencyConversion[realm].timestamp) < 61 * 60) then + return + end + +@@ -228,7 +139,13 @@ function TradeQueryClass:PullCXData() + self:SetNotice(self.controls.pbNotice, "Could not decode static trade data") + return + end +- main.api:FetchCurrencyExchange(self.pbRealm, function(response, errMsg) ++ local url = "https://web.poecdn.com/api/currency-exchange" ++ if realm ~= "pc" then ++ url = url .. "/" .. realm ++ end ++ local hourSeconds = 60 * 60 ++ url = url .. "/" .. ((math.floor(now / hourSeconds) - 1) * hourSeconds) ++ launch:DownloadPage(url, function(response, errMsg) + if errMsg then + self:SetNotice(self.controls.pbNotice, "Error: " .. tostring(errMsg)) + return +@@ -243,15 +160,91 @@ function TradeQueryClass:PullCXData() + self:SetNotice(self.controls.pbNotice, "CX error: " .. json.error.message) + return + end +- local success, result = pcall(processCXResponse, static, json) ++ local success, result = pcall(function() ++ -- short currency names for each base item type id ++ local currencyNames = {} ++ local currencyIdMap = {} ++ for id, name in pairs(require("Data.CurrencyNames")) do ++ currencyIdMap[name] = id ++ end ++ for _, entry in ipairs(static.result[1].entries) do ++ if entry.id ~= "sep" then ++ local itemID = currencyIdMap[entry.text] ++ -- Not every bulk trade item is exported as currency. ++ if itemID then ++ currencyNames[itemID] = entry.id ++ end ++ end ++ end ++ ++ local out = {} ++ for _, entry in ipairs(json.markets) do ++ local league = entry.league ++ if not out[league] then ++ out[league] = {} ++ end ++ local leagueOut = out[league] ++ ++ -- Base type IDs are in the form Metadata/Items/.../CurrencyModValues. ++ local fromID = entry.market_pair[1] ++ local toID = entry.market_pair[2] ++ ++ -- Normalize entries to price each currency in chaos or divines. ++ if generalCurrencies[fromID] and toID ~= "Metadata/Items/Currency/CurrencyModValues" then ++ fromID, toID = toID, fromID ++ end ++ ++ local fromShort = currencyNames[fromID] ++ local toShort = currencyNames[toID] ++ if not fromShort or not generalCurrencies[toID] or entry.lowest_ratio[fromID] == 0 then ++ goto CXContinue ++ end ++ ++ local newEntry = { ++ currency = toShort, ++ price = entry.lowest_ratio[toID] / entry.lowest_ratio[fromID], ++ stock = entry.highest_stock[fromID] ++ } ++ -- Only keep the most popular option. ++ if not leagueOut[fromShort] or leagueOut[fromShort].stock < newEntry.stock then ++ leagueOut[fromShort] = newEntry ++ end ++ ::CXContinue:: ++ end ++ ++ -- Convert any chaos prices to divine equivalent prices. ++ for leagueName, leagueEntries in pairs(out) do ++ for from, to in pairs(leagueEntries) do ++ if to.currency ~= "divine" then ++ local divEntry = leagueEntries[to.currency] ++ if not divEntry then ++ leagueEntries[from] = nil ++ else ++ leagueEntries[from] = divEntry.price * to.price ++ end ++ end ++ end ++ for from, to in pairs(leagueEntries) do ++ if type(to) == "table" then ++ leagueEntries[from] = to.price ++ end ++ end ++ if not next(leagueEntries) then ++ out[leagueName] = nil ++ else ++ leagueEntries.divine = 1 ++ end ++ end ++ ++ return out ++ end) + if not success then + self:SetNotice(self.controls.pbNotice, "Failed to process CX response") + ConPrintf("CX error: %s", result) + return +- else +- result.timestamp = now +- self.pbCurrencyConversion[self.pbRealm] = result + end ++ result.timestamp = now ++ self.pbCurrencyConversion[realm] = result + end) + end) + end diff --git a/src/Data/CurrencyNames.lua b/src/Data/CurrencyNames.lua new file mode 100644 index 0000000000..28548279f2 --- /dev/null +++ b/src/Data/CurrencyNames.lua @@ -0,0 +1,702 @@ +-- This file is automatically generated, do not edit! +-- Game data (c) Grinding Gear Games + +-- This file contains mapping item names for every currency base item type ID. +-- Used for working with the currency exchange which uses item type IDs. + +-- spell-checker: disable +return { + ["Metadata/Items/AtlasExiles/AddModToRareCrusader"] = "Crusader's Exalted Orb", + ["Metadata/Items/AtlasExiles/AddModToRareHunter"] = "Hunter's Exalted Orb", + ["Metadata/Items/AtlasExiles/AddModToRareRedeemer"] = "Redeemer's Exalted Orb", + ["Metadata/Items/AtlasExiles/AddModToRareWarlord"] = "Warlord's Exalted Orb", + ["Metadata/Items/AtlasExiles/ApplyInfluence"] = "Awakener's Orb", + ["Metadata/Items/Currency/AncestralOmenOnChanceMakeUnique"] = "Omen of Fortune", + ["Metadata/Items/Currency/AncestralOmenOnChromaticAddWhiteSockets"] = "Omen of Trichromatism", + ["Metadata/Items/Currency/AncestralOmenOnCriticalLifeAvoidDamage"] = "Omen of Death-dancing", + ["Metadata/Items/Currency/AncestralOmenOnCriticalLifeGainAdrenaline"] = "Omen of Adrenaline", + ["Metadata/Items/Currency/AncestralOmenOnCriticalLifeGainShadeForm"] = "Omen of Death's Door", + ["Metadata/Items/Currency/AncestralOmenOnCriticalLifeRecoupLife"] = "Omen of Resurgence", + ["Metadata/Items/Currency/AncestralOmenOnCriticalLifeRecoverFlaskCharges"] = "Omen of Refreshment", + ["Metadata/Items/Currency/AncestralOmenOnDeathCreatePortal"] = "Omen of Return", + ["Metadata/Items/Currency/AncestralOmenOnDeathGemsGainExperience"] = "Omen of Bequeathal", + ["Metadata/Items/Currency/AncestralOmenOnDeathNearbyEnemiesMoreDamage"] = "Omen of Revenge", + ["Metadata/Items/Currency/AncestralOmenOnDeathPreventExpLoss"] = "Omen of Amelioration", + ["Metadata/Items/Currency/AncestralOmenOnFusingMakeFullLinks"] = "Omen of Connections", + ["Metadata/Items/Currency/AncestralOmenOnJewellersMakeFullSockets"] = "Omen of the Jeweller", + ["Metadata/Items/Currency/AncestralOmenOnLevelingUpGainExperienceBuff"] = "Omen of Brilliance", + ["Metadata/Items/Currency/AncestralOmenOnLevelingUpGainSoulEater"] = "Omen of the Soul Devourer", + ["Metadata/Items/Currency/AncestralOmenOnLevelingUpSpawnAccelerationShrine"] = "Omen of Acceleration", + ["Metadata/Items/Currency/AncestralTattooArohongui1"] = "Tattoo of the Arohongui Moonwarden", + ["Metadata/Items/Currency/AncestralTattooArohongui2"] = "Tattoo of the Arohongui Scout", + ["Metadata/Items/Currency/AncestralTattooArohongui3"] = "Tattoo of the Arohongui Warrior", + ["Metadata/Items/Currency/AncestralTattooArohongui4"] = "Tattoo of the Arohongui Warmonger", + ["Metadata/Items/Currency/AncestralTattooArohongui5"] = "Tattoo of the Arohongui Shaman", + ["Metadata/Items/Currency/AncestralTattooArohongui6"] = "Loyalty Tattoo of Ikiaho", + ["Metadata/Items/Currency/AncestralTattooArohongui7"] = "Tattoo of the Arohongui Makanga", + ["Metadata/Items/Currency/AncestralTattooHinekora1"] = "Tattoo of the Hinekora Warrior", + ["Metadata/Items/Currency/AncestralTattooHinekora2"] = "Tattoo of the Hinekora Deathwarden", + ["Metadata/Items/Currency/AncestralTattooHinekora3"] = "Tattoo of the Hinekora Shaman", + ["Metadata/Items/Currency/AncestralTattooHinekora4"] = "Tattoo of the Hinekora Storyteller", + ["Metadata/Items/Currency/AncestralTattooHinekora5"] = "Tattoo of the Hinekora Warmonger", + ["Metadata/Items/Currency/AncestralTattooHinekora6"] = "Loyalty Tattoo of Tawhanuku", + ["Metadata/Items/Currency/AncestralTattooHinekora7"] = "Tattoo of the Hinekora Makanga", + ["Metadata/Items/Currency/AncestralTattooKitava1"] = "Tattoo of the Kitava Blood Drinker", + ["Metadata/Items/Currency/AncestralTattooKitava2"] = "Tattoo of the Kitava Rebel", + ["Metadata/Items/Currency/AncestralTattooKitava3"] = "Tattoo of the Kitava Warrior", + ["Metadata/Items/Currency/AncestralTattooKitava4"] = "Tattoo of the Kitava Heart Eater", + ["Metadata/Items/Currency/AncestralTattooKitava5"] = "Tattoo of the Kitava Shaman", + ["Metadata/Items/Currency/AncestralTattooKitava6"] = "Loyalty Tattoo of Utula", + ["Metadata/Items/Currency/AncestralTattooKitava7"] = "Tattoo of the Kitava Makanga", + ["Metadata/Items/Currency/AncestralTattooNgamahu1"] = "Tattoo of the Ngamahu Firewalker", + ["Metadata/Items/Currency/AncestralTattooNgamahu2"] = "Tattoo of the Ngamahu Shaman", + ["Metadata/Items/Currency/AncestralTattooNgamahu3"] = "Tattoo of the Ngamahu Warrior", + ["Metadata/Items/Currency/AncestralTattooNgamahu4"] = "Tattoo of the Ngamahu Warmonger", + ["Metadata/Items/Currency/AncestralTattooNgamahu5"] = "Tattoo of the Ngamahu Woodcarver", + ["Metadata/Items/Currency/AncestralTattooNgamahu6"] = "Loyalty Tattoo of Kaom", + ["Metadata/Items/Currency/AncestralTattooNgamahu7"] = "Tattoo of the Ngamahu Makanga", + ["Metadata/Items/Currency/AncestralTattooRamako1"] = "Tattoo of the Ramako Scout", + ["Metadata/Items/Currency/AncestralTattooRamako2"] = "Tattoo of the Ramako Archer", + ["Metadata/Items/Currency/AncestralTattooRamako3"] = "Tattoo of the Ramako Sniper", + ["Metadata/Items/Currency/AncestralTattooRamako4"] = "Tattoo of the Ramako Fleetfoot", + ["Metadata/Items/Currency/AncestralTattooRamako5"] = "Tattoo of the Ramako Shaman", + ["Metadata/Items/Currency/AncestralTattooRamako6"] = "Loyalty Tattoo of Ahuana", + ["Metadata/Items/Currency/AncestralTattooRamako7"] = "Tattoo of the Ramako Makanga", + ["Metadata/Items/Currency/AncestralTattooRongokurai1"] = "Tattoo of the Rongokurai Warrior", + ["Metadata/Items/Currency/AncestralTattooRongokurai2"] = "Tattoo of the Rongokurai Brute", + ["Metadata/Items/Currency/AncestralTattooRongokurai3"] = "Tattoo of the Rongokurai Goliath", + ["Metadata/Items/Currency/AncestralTattooRongokurai4"] = "Tattoo of the Rongokurai Turtle", + ["Metadata/Items/Currency/AncestralTattooRongokurai5"] = "Tattoo of the Rongokurai Guard", + ["Metadata/Items/Currency/AncestralTattooRongokurai6"] = "Loyalty Tattoo of Kahuturoa", + ["Metadata/Items/Currency/AncestralTattooRongokurai7"] = "Tattoo of the Rongokurai Makanga", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableDex1"] = "Honoured Tattoo of the Hunter", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableDex2"] = "Honoured Tattoo of the Barbarian", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableDex3"] = "Honoured Tattoo of the Berserker", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableInt1"] = "Honoured Tattoo of the Wise", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableInt2"] = "Honoured Tattoo of the Storm", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableInt3"] = "Honoured Tattoo of the Flood", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableStr1"] = "Honoured Tattoo of the Warlord", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableStr2"] = "Honoured Tattoo of the Mountain", + ["Metadata/Items/Currency/AncestralTattooSpecialNotableStr3"] = "Honoured Tattoo of the Pa", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode1"] = "Honoured Tattoo of the Dove", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode2"] = "Honoured Tattoo of the Sky", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode3"] = "Honoured Tattoo of the Tuatara", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode4"] = "Honoured Tattoo of the Pillager", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode5"] = "Honoured Tattoo of the Turtle", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode6"] = "Honoured Tattoo of the Oak", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode7"] = "Honoured Tattoo of the Hatungo", + ["Metadata/Items/Currency/AncestralTattooSpecialSmallNode8"] = "Honoured Tattoo of the Flock", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique1"] = "Ancestral Tattoo of Bloodlines", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique2"] = "Honoured Tattoo of the Makanga", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique3"] = "Journey Tattoo of the Body", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique4"] = "Journey Tattoo of the Mind", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique5"] = "Journey Tattoo of the Soul", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique6"] = "Journey Tattoo of Makanui", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique7Duelist"] = "Forbidden Tattoo of the Duelist", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique7Marauder"] = "Forbidden Tattoo of the Marauder", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique7Ranger"] = "Forbidden Tattoo of the Ranger", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique7Scion"] = "Forbidden Tattoo of the Scion", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique7Shadow"] = "Forbidden Tattoo of the Shadow", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique7Templar"] = "Forbidden Tattoo of the Templar", + ["Metadata/Items/Currency/AncestralTattooSpecialUnique7Witch"] = "Forbidden Tattoo of the Witch", + ["Metadata/Items/Currency/AncestralTattooTasalio1"] = "Tattoo of the Tasalio Bladedancer", + ["Metadata/Items/Currency/AncestralTattooTasalio2"] = "Tattoo of the Tasalio Tideshifter", + ["Metadata/Items/Currency/AncestralTattooTasalio3"] = "Tattoo of the Tasalio Shaman", + ["Metadata/Items/Currency/AncestralTattooTasalio4"] = "Tattoo of the Tasalio Warrior", + ["Metadata/Items/Currency/AncestralTattooTasalio5"] = "Tattoo of the Tasalio Scout", + ["Metadata/Items/Currency/AncestralTattooTasalio6"] = "Loyalty Tattoo of Rakiata", + ["Metadata/Items/Currency/AncestralTattooTasalio7"] = "Tattoo of the Tasalio Makanga", + ["Metadata/Items/Currency/AncestralTattooTawhoa1"] = "Tattoo of the Tawhoa Naturalist", + ["Metadata/Items/Currency/AncestralTattooTawhoa2"] = "Tattoo of the Tawhoa Scout", + ["Metadata/Items/Currency/AncestralTattooTawhoa3"] = "Tattoo of the Tawhoa Warrior", + ["Metadata/Items/Currency/AncestralTattooTawhoa4"] = "Tattoo of the Tawhoa Herbalist", + ["Metadata/Items/Currency/AncestralTattooTawhoa5"] = "Tattoo of the Tawhoa Shaman", + ["Metadata/Items/Currency/AncestralTattooTawhoa6"] = "Loyalty Tattoo of Maata", + ["Metadata/Items/Currency/AncestralTattooTawhoa7"] = "Tattoo of the Tawhoa Makanga", + ["Metadata/Items/Currency/AncestralTattooTukohama1"] = "Tattoo of the Tukohama Shaman", + ["Metadata/Items/Currency/AncestralTattooTukohama2"] = "Tattoo of the Tukohama Warrior", + ["Metadata/Items/Currency/AncestralTattooTukohama3"] = "Tattoo of the Tukohama Brawler", + ["Metadata/Items/Currency/AncestralTattooTukohama4"] = "Tattoo of the Tukohama Warmonger", + ["Metadata/Items/Currency/AncestralTattooTukohama5"] = "Tattoo of the Tukohama Warcaller", + ["Metadata/Items/Currency/AncestralTattooTukohama6"] = "Loyalty Tattoo of Akoya", + ["Metadata/Items/Currency/AncestralTattooTukohama7"] = "Tattoo of the Tukohama Makanga", + ["Metadata/Items/Currency/AncestralTattooValako1"] = "Tattoo of the Valako Stormrider", + ["Metadata/Items/Currency/AncestralTattooValako2"] = "Tattoo of the Valako Scout", + ["Metadata/Items/Currency/AncestralTattooValako3"] = "Tattoo of the Valako Warrior", + ["Metadata/Items/Currency/AncestralTattooValako4"] = "Tattoo of the Valako Shieldbearer", + ["Metadata/Items/Currency/AncestralTattooValako5"] = "Tattoo of the Valako Shaman", + ["Metadata/Items/Currency/AncestralTattooValako6"] = "Loyalty Tattoo of Kiloava", + ["Metadata/Items/Currency/AncestralTattooValako7"] = "Tattoo of the Valako Makanga", + ["Metadata/Items/Currency/AstrolabeAbyss"] = "Lightless Astrolabe", + ["Metadata/Items/Currency/AstrolabeBlight"] = "Fungal Astrolabe", + ["Metadata/Items/Currency/AstrolabeBreach"] = "Grasping Astrolabe", + ["Metadata/Items/Currency/AstrolabeDelirium"] = "Deceptive Astrolabe", + ["Metadata/Items/Currency/AstrolabeExpedition"] = "Runic Astrolabe", + ["Metadata/Items/Currency/AstrolabeGeneric"] = "Templar Astrolabe", + ["Metadata/Items/Currency/AstrolabeHarvest"] = "Fruiting Astrolabe", + ["Metadata/Items/Currency/AstrolabeLegion"] = "Timeless Astrolabe", + ["Metadata/Items/Currency/AstrolabeRitual"] = "Nameless Astrolabe", + ["Metadata/Items/Currency/AstrolabeSettlers"] = "Prospecting Astrolabe", + ["Metadata/Items/Currency/AstrolabeUltimatum"] = "Chaotic Astrolabe", + ["Metadata/Items/Currency/BenevolenceMemoryThread"] = "Memory of Reverence", + ["Metadata/Items/Currency/Bestiary/BestiaryNet1"] = "Simple Rope Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet10"] = "Thaumaturgical Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet11"] = "Necromancy Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet2"] = "Reinforced Rope Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet3"] = "Strong Rope Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet4"] = "Simple Iron Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet5"] = "Reinforced Iron Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet6"] = "Strong Iron Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet7"] = "Simple Steel Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet8"] = "Reinforced Steel Net", + ["Metadata/Items/Currency/Bestiary/BestiaryNet9"] = "Strong Steel Net", + ["Metadata/Items/Currency/CrucibleGeode"] = "Igneous Geode", + ["Metadata/Items/Currency/CrucibleGeodeUber"] = "Crystalline Geode", + ["Metadata/Items/Currency/CurrencyAddAtlasMod"] = "Simple Sextant", + ["Metadata/Items/Currency/CurrencyAddAtlasModHigh"] = "Awakened Sextant", + ["Metadata/Items/Currency/CurrencyAddAtlasModMaven"] = "Elevated Sextant", + ["Metadata/Items/Currency/CurrencyAddAtlasModMid"] = "Prime Sextant", + ["Metadata/Items/Currency/CurrencyAddCrucibleExperience"] = "Magmatic Ore", + ["Metadata/Items/Currency/CurrencyAddGemExperience"] = "Facetor's Lens", + ["Metadata/Items/Currency/CurrencyAddModToMagic"] = "Orb of Augmentation", + ["Metadata/Items/Currency/CurrencyAddModToRare"] = "Exalted Orb", + ["Metadata/Items/Currency/CurrencyAddModToRareElder"] = "Elder's Exalted Orb", + ["Metadata/Items/Currency/CurrencyAddModToRareShaper"] = "Shaper's Exalted Orb", + ["Metadata/Items/Currency/CurrencyAddModToRareShard"] = "Exalted Shard", + ["Metadata/Items/Currency/CurrencyAddZanaInfluence"] = "Orb of Remembrance", + ["Metadata/Items/Currency/CurrencyAfflictionOrbAbyss"] = "Abyssal Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbArmour"] = "Armoursmith's Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbBlight"] = "Blighted Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbBreach"] = "Obscured Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbCurrency"] = "Fine Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbDivinationCards"] = "Diviner's Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbEssences"] = "Whispering Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbFossils"] = "Fossilised Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbFragments"] = "Fragmented Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbGems"] = "Thaumaturge's Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbGeneric"] = "Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbHarbinger"] = "Fine Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbHardMode"] = "Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbIncubators"] = "Timeless Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbLabyrinth"] = "Imperial Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbMaps"] = "Cartographer's Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbMetamorphosis"] = "Challenging Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbPerandus"] = "Kalguuran Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbProphecies"] = "Fine Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbScarabs"] = "Skittering Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbTalismans"] = "Primal Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbTrinkets"] = "Jeweller's Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbUniques"] = "Singular Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionOrbWeapons"] = "Blacksmith's Delirium Orb", + ["Metadata/Items/Currency/CurrencyAfflictionRerollClusterEnchant"] = "Refracting Fog", + ["Metadata/Items/Currency/CurrencyAfflictionShard"] = "Simulacrum Splinter", + ["Metadata/Items/Currency/CurrencyAlbinoCrabClaw"] = "Albino Crab Claw", + ["Metadata/Items/Currency/CurrencyAncestralSilverCoin"] = "Silver Coin", + ["Metadata/Items/Currency/CurrencyArmourQuality"] = "Armourer's Scrap", + ["Metadata/Items/Currency/CurrencyAtlasPassiveRefund"] = "Orb of Unmaking", + ["Metadata/Items/Currency/CurrencyBreachChaosShard"] = "Splinter of Chayula", + ["Metadata/Items/Currency/CurrencyBreachColdShard"] = "Splinter of Tul", + ["Metadata/Items/Currency/CurrencyBreachFireShard"] = "Splinter of Xoph", + ["Metadata/Items/Currency/CurrencyBreachLightningShard"] = "Splinter of Esh", + ["Metadata/Items/Currency/CurrencyBreachPhysicalShard"] = "Splinter of Uul-Netol", + ["Metadata/Items/Currency/CurrencyBreachUpgradeUniqueChaos"] = "Blessing of Chayula", + ["Metadata/Items/Currency/CurrencyBreachUpgradeUniqueCold"] = "Blessing of Tul", + ["Metadata/Items/Currency/CurrencyBreachUpgradeUniqueFire"] = "Blessing of Xoph", + ["Metadata/Items/Currency/CurrencyBreachUpgradeUniqueGeneral"] = "Flesh of Xesht", + ["Metadata/Items/Currency/CurrencyBreachUpgradeUniqueLightning"] = "Blessing of Esh", + ["Metadata/Items/Currency/CurrencyBreachUpgradeUniquePhysical"] = "Blessing of Uul-Netol", + ["Metadata/Items/Currency/CurrencyConflictOrb"] = "Orb of Conflict", + ["Metadata/Items/Currency/CurrencyConvertToNormal"] = "Orb of Scouring", + ["Metadata/Items/Currency/CurrencyCorrupt"] = "Vaal Orb", + ["Metadata/Items/Currency/CurrencyCorruptMonolith"] = "Remnant of Corruption", + ["Metadata/Items/Currency/CurrencyDeepwater"] = "Dead Man's Sulphur", + ["Metadata/Items/Currency/CurrencyDelveCraftingAbyss"] = "Hollow Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingAttackMods"] = "Serrated Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingBleedPoison"] = "Corroded Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingCasterMods"] = "Aetheric Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingChaos"] = "Aberrant Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingCold"] = "Frigid Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingCorruptEssence"] = "Glyphic Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingDefences"] = "Dense Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingElemental"] = "Prismatic Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingEnchant"] = "Deft Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingFire"] = "Scorched Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingGemLevel"] = "Faceted Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingLife"] = "Pristine Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingLightning"] = "Metallic Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingLuckyModRolls"] = "Sanctified Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingMana"] = "Lucent Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingMinionsAuras"] = "Bound Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingMirror"] = "Fractured Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingPhysical"] = "Jagged Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingQuality"] = "Opulent Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingRandom"] = "Tangled Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingSellPrice"] = "Gilded Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingSockets"] = "Fundamental Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingSpeed"] = "Shuddering Fossil", + ["Metadata/Items/Currency/CurrencyDelveCraftingVaal"] = "Bloodstained Fossil", + ["Metadata/Items/Currency/CurrencyDuplicate"] = "Mirror of Kalandra", + ["Metadata/Items/Currency/CurrencyDuplicateShard"] = "Mirror Shard", + ["Metadata/Items/Currency/CurrencyDuplicateShattered"] = "Broken Mirror of Kalandra", + ["Metadata/Items/Currency/CurrencyEldritchAddModToRare"] = "Eldritch Exalted Orb", + ["Metadata/Items/Currency/CurrencyEldritchEmber1"] = "Lesser Eldritch Ember", + ["Metadata/Items/Currency/CurrencyEldritchEmber2"] = "Greater Eldritch Ember", + ["Metadata/Items/Currency/CurrencyEldritchEmber3"] = "Grand Eldritch Ember", + ["Metadata/Items/Currency/CurrencyEldritchEmber4"] = "Exceptional Eldritch Ember", + ["Metadata/Items/Currency/CurrencyEldritchIchor1"] = "Lesser Eldritch Ichor", + ["Metadata/Items/Currency/CurrencyEldritchIchor2"] = "Greater Eldritch Ichor", + ["Metadata/Items/Currency/CurrencyEldritchIchor3"] = "Grand Eldritch Ichor", + ["Metadata/Items/Currency/CurrencyEldritchIchor4"] = "Exceptional Eldritch Ichor", + ["Metadata/Items/Currency/CurrencyEldritchRemoveMod"] = "Eldritch Orb of Annulment", + ["Metadata/Items/Currency/CurrencyEldritchRerollRare"] = "Eldritch Chaos Orb", + ["Metadata/Items/Currency/CurrencyEnkindlingOrb"] = "Enkindling Orb", + ["Metadata/Items/Currency/CurrencyEssenceAnger1"] = "Muttering Essence of Anger", + ["Metadata/Items/Currency/CurrencyEssenceAnger2"] = "Weeping Essence of Anger", + ["Metadata/Items/Currency/CurrencyEssenceAnger3"] = "Wailing Essence of Anger", + ["Metadata/Items/Currency/CurrencyEssenceAnger4"] = "Screaming Essence of Anger", + ["Metadata/Items/Currency/CurrencyEssenceAnger5"] = "Shrieking Essence of Anger", + ["Metadata/Items/Currency/CurrencyEssenceAnger6"] = "Deafening Essence of Anger", + ["Metadata/Items/Currency/CurrencyEssenceAnguish1"] = "Wailing Essence of Anguish", + ["Metadata/Items/Currency/CurrencyEssenceAnguish2"] = "Screaming Essence of Anguish", + ["Metadata/Items/Currency/CurrencyEssenceAnguish3"] = "Shrieking Essence of Anguish", + ["Metadata/Items/Currency/CurrencyEssenceAnguish4"] = "Deafening Essence of Anguish", + ["Metadata/Items/Currency/CurrencyEssenceContempt1"] = "Whispering Essence of Contempt", + ["Metadata/Items/Currency/CurrencyEssenceContempt2"] = "Muttering Essence of Contempt", + ["Metadata/Items/Currency/CurrencyEssenceContempt3"] = "Weeping Essence of Contempt", + ["Metadata/Items/Currency/CurrencyEssenceContempt4"] = "Wailing Essence of Contempt", + ["Metadata/Items/Currency/CurrencyEssenceContempt5"] = "Screaming Essence of Contempt", + ["Metadata/Items/Currency/CurrencyEssenceContempt6"] = "Shrieking Essence of Contempt", + ["Metadata/Items/Currency/CurrencyEssenceContempt7"] = "Deafening Essence of Contempt", + ["Metadata/Items/Currency/CurrencyEssenceDelirium1"] = "Essence of Delirium", + ["Metadata/Items/Currency/CurrencyEssenceDoubt1"] = "Weeping Essence of Doubt", + ["Metadata/Items/Currency/CurrencyEssenceDoubt2"] = "Wailing Essence of Doubt", + ["Metadata/Items/Currency/CurrencyEssenceDoubt3"] = "Screaming Essence of Doubt", + ["Metadata/Items/Currency/CurrencyEssenceDoubt4"] = "Shrieking Essence of Doubt", + ["Metadata/Items/Currency/CurrencyEssenceDoubt5"] = "Deafening Essence of Doubt", + ["Metadata/Items/Currency/CurrencyEssenceDread1"] = "Screaming Essence of Dread", + ["Metadata/Items/Currency/CurrencyEssenceDread2"] = "Shrieking Essence of Dread", + ["Metadata/Items/Currency/CurrencyEssenceDread3"] = "Deafening Essence of Dread", + ["Metadata/Items/Currency/CurrencyEssenceEnvy1"] = "Screaming Essence of Envy", + ["Metadata/Items/Currency/CurrencyEssenceEnvy2"] = "Shrieking Essence of Envy", + ["Metadata/Items/Currency/CurrencyEssenceEnvy3"] = "Deafening Essence of Envy", + ["Metadata/Items/Currency/CurrencyEssenceFaridun1"] = "Essence of Desolation", + ["Metadata/Items/Currency/CurrencyEssenceFear1"] = "Muttering Essence of Fear", + ["Metadata/Items/Currency/CurrencyEssenceFear2"] = "Weeping Essence of Fear", + ["Metadata/Items/Currency/CurrencyEssenceFear3"] = "Wailing Essence of Fear", + ["Metadata/Items/Currency/CurrencyEssenceFear4"] = "Screaming Essence of Fear", + ["Metadata/Items/Currency/CurrencyEssenceFear5"] = "Shrieking Essence of Fear", + ["Metadata/Items/Currency/CurrencyEssenceFear6"] = "Deafening Essence of Fear", + ["Metadata/Items/Currency/CurrencyEssenceGreed1"] = "Whispering Essence of Greed", + ["Metadata/Items/Currency/CurrencyEssenceGreed2"] = "Muttering Essence of Greed", + ["Metadata/Items/Currency/CurrencyEssenceGreed3"] = "Weeping Essence of Greed", + ["Metadata/Items/Currency/CurrencyEssenceGreed4"] = "Wailing Essence of Greed", + ["Metadata/Items/Currency/CurrencyEssenceGreed5"] = "Screaming Essence of Greed", + ["Metadata/Items/Currency/CurrencyEssenceGreed6"] = "Shrieking Essence of Greed", + ["Metadata/Items/Currency/CurrencyEssenceGreed7"] = "Deafening Essence of Greed", + ["Metadata/Items/Currency/CurrencyEssenceHatred1"] = "Whispering Essence of Hatred", + ["Metadata/Items/Currency/CurrencyEssenceHatred2"] = "Muttering Essence of Hatred", + ["Metadata/Items/Currency/CurrencyEssenceHatred3"] = "Weeping Essence of Hatred", + ["Metadata/Items/Currency/CurrencyEssenceHatred4"] = "Wailing Essence of Hatred", + ["Metadata/Items/Currency/CurrencyEssenceHatred5"] = "Screaming Essence of Hatred", + ["Metadata/Items/Currency/CurrencyEssenceHatred6"] = "Shrieking Essence of Hatred", + ["Metadata/Items/Currency/CurrencyEssenceHatred7"] = "Deafening Essence of Hatred", + ["Metadata/Items/Currency/CurrencyEssenceHorror1"] = "Essence of Horror", + ["Metadata/Items/Currency/CurrencyEssenceHysteria1"] = "Essence of Hysteria", + ["Metadata/Items/Currency/CurrencyEssenceInsanity1"] = "Essence of Insanity", + ["Metadata/Items/Currency/CurrencyEssenceLoathing1"] = "Wailing Essence of Loathing", + ["Metadata/Items/Currency/CurrencyEssenceLoathing2"] = "Screaming Essence of Loathing", + ["Metadata/Items/Currency/CurrencyEssenceLoathing3"] = "Shrieking Essence of Loathing", + ["Metadata/Items/Currency/CurrencyEssenceLoathing4"] = "Deafening Essence of Loathing", + ["Metadata/Items/Currency/CurrencyEssenceMisery1"] = "Screaming Essence of Misery", + ["Metadata/Items/Currency/CurrencyEssenceMisery2"] = "Shrieking Essence of Misery", + ["Metadata/Items/Currency/CurrencyEssenceMisery3"] = "Deafening Essence of Misery", + ["Metadata/Items/Currency/CurrencyEssenceRage1"] = "Weeping Essence of Rage", + ["Metadata/Items/Currency/CurrencyEssenceRage2"] = "Wailing Essence of Rage", + ["Metadata/Items/Currency/CurrencyEssenceRage3"] = "Screaming Essence of Rage", + ["Metadata/Items/Currency/CurrencyEssenceRage4"] = "Shrieking Essence of Rage", + ["Metadata/Items/Currency/CurrencyEssenceRage5"] = "Deafening Essence of Rage", + ["Metadata/Items/Currency/CurrencyEssenceScorn1"] = "Screaming Essence of Scorn", + ["Metadata/Items/Currency/CurrencyEssenceScorn2"] = "Shrieking Essence of Scorn", + ["Metadata/Items/Currency/CurrencyEssenceScorn3"] = "Deafening Essence of Scorn", + ["Metadata/Items/Currency/CurrencyEssenceSorrow1"] = "Muttering Essence of Sorrow", + ["Metadata/Items/Currency/CurrencyEssenceSorrow2"] = "Weeping Essence of Sorrow", + ["Metadata/Items/Currency/CurrencyEssenceSorrow3"] = "Wailing Essence of Sorrow", + ["Metadata/Items/Currency/CurrencyEssenceSorrow4"] = "Screaming Essence of Sorrow", + ["Metadata/Items/Currency/CurrencyEssenceSorrow5"] = "Shrieking Essence of Sorrow", + ["Metadata/Items/Currency/CurrencyEssenceSorrow6"] = "Deafening Essence of Sorrow", + ["Metadata/Items/Currency/CurrencyEssenceSpite1"] = "Wailing Essence of Spite", + ["Metadata/Items/Currency/CurrencyEssenceSpite2"] = "Screaming Essence of Spite", + ["Metadata/Items/Currency/CurrencyEssenceSpite3"] = "Shrieking Essence of Spite", + ["Metadata/Items/Currency/CurrencyEssenceSpite4"] = "Deafening Essence of Spite", + ["Metadata/Items/Currency/CurrencyEssenceSuffering1"] = "Weeping Essence of Suffering", + ["Metadata/Items/Currency/CurrencyEssenceSuffering2"] = "Wailing Essence of Suffering", + ["Metadata/Items/Currency/CurrencyEssenceSuffering3"] = "Screaming Essence of Suffering", + ["Metadata/Items/Currency/CurrencyEssenceSuffering4"] = "Shrieking Essence of Suffering", + ["Metadata/Items/Currency/CurrencyEssenceSuffering5"] = "Deafening Essence of Suffering", + ["Metadata/Items/Currency/CurrencyEssenceTorment1"] = "Muttering Essence of Torment", + ["Metadata/Items/Currency/CurrencyEssenceTorment2"] = "Weeping Essence of Torment", + ["Metadata/Items/Currency/CurrencyEssenceTorment3"] = "Wailing Essence of Torment", + ["Metadata/Items/Currency/CurrencyEssenceTorment4"] = "Screaming Essence of Torment", + ["Metadata/Items/Currency/CurrencyEssenceTorment5"] = "Shrieking Essence of Torment", + ["Metadata/Items/Currency/CurrencyEssenceTorment6"] = "Deafening Essence of Torment", + ["Metadata/Items/Currency/CurrencyEssenceWoe1"] = "Whispering Essence of Woe", + ["Metadata/Items/Currency/CurrencyEssenceWoe2"] = "Muttering Essence of Woe", + ["Metadata/Items/Currency/CurrencyEssenceWoe3"] = "Weeping Essence of Woe", + ["Metadata/Items/Currency/CurrencyEssenceWoe4"] = "Wailing Essence of Woe", + ["Metadata/Items/Currency/CurrencyEssenceWoe5"] = "Screaming Essence of Woe", + ["Metadata/Items/Currency/CurrencyEssenceWoe6"] = "Shrieking Essence of Woe", + ["Metadata/Items/Currency/CurrencyEssenceWoe7"] = "Deafening Essence of Woe", + ["Metadata/Items/Currency/CurrencyEssenceWrath1"] = "Weeping Essence of Wrath", + ["Metadata/Items/Currency/CurrencyEssenceWrath2"] = "Wailing Essence of Wrath", + ["Metadata/Items/Currency/CurrencyEssenceWrath3"] = "Screaming Essence of Wrath", + ["Metadata/Items/Currency/CurrencyEssenceWrath4"] = "Shrieking Essence of Wrath", + ["Metadata/Items/Currency/CurrencyEssenceWrath5"] = "Deafening Essence of Wrath", + ["Metadata/Items/Currency/CurrencyEssenceZeal1"] = "Wailing Essence of Zeal", + ["Metadata/Items/Currency/CurrencyEssenceZeal2"] = "Screaming Essence of Zeal", + ["Metadata/Items/Currency/CurrencyEssenceZeal3"] = "Shrieking Essence of Zeal", + ["Metadata/Items/Currency/CurrencyEssenceZeal4"] = "Deafening Essence of Zeal", + ["Metadata/Items/Currency/CurrencyExtractOil"] = "Oil Extractor", + ["Metadata/Items/Currency/CurrencyFlaskQuality"] = "Glassblower's Bauble", + ["Metadata/Items/Currency/CurrencyFractureRare"] = "Fracturing Orb", + ["Metadata/Items/Currency/CurrencyFractureRareShard"] = "Fracturing Shard", + ["Metadata/Items/Currency/CurrencyGemQuality"] = "Gemcutter's Prism", + ["Metadata/Items/Currency/CurrencyGraftAddModToMagic"] = "Augmentation Implant", + ["Metadata/Items/Currency/CurrencyGraftAddModToRare"] = "Exalted Implant", + ["Metadata/Items/Currency/CurrencyGraftCorrupt"] = "Unstable Implant", + ["Metadata/Items/Currency/CurrencyGraftUpgradeMagicToRare"] = "Regal Implant", + ["Metadata/Items/Currency/CurrencyHarbingerBlessingBelt"] = "Time-light Scroll", + ["Metadata/Items/Currency/CurrencyHarbingerBlessingHelmet"] = "Deregulation Scroll", + ["Metadata/Items/Currency/CurrencyHarbingerBlessingQuiver"] = "Fragmentation Scroll", + ["Metadata/Items/Currency/CurrencyHarbingerBlessingShield"] = "Specularity Scroll", + ["Metadata/Items/Currency/CurrencyHarbingerBlessingStaff"] = "Haemocombustion Scroll", + ["Metadata/Items/Currency/CurrencyHarbingerBlessingSword"] = "Electroshock Scroll", + ["Metadata/Items/Currency/CurrencyHeistArmourEnchant"] = "Tailoring Orb", + ["Metadata/Items/Currency/CurrencyHeistWeaponEnchant"] = "Tempering Orb", + ["Metadata/Items/Currency/CurrencyHellscapeAddModToRare"] = "Tainted Exalted Orb", + ["Metadata/Items/Currency/CurrencyHellscapeArmourQuality"] = "Tainted Armourer's Scrap", + ["Metadata/Items/Currency/CurrencyHellscapeModValues"] = "Volatile Vaal Orb", + ["Metadata/Items/Currency/CurrencyHellscapeRerollRare"] = "Tainted Chaos Orb", + ["Metadata/Items/Currency/CurrencyHellscapeRerollSocketColours"] = "Tainted Chromatic Orb", + ["Metadata/Items/Currency/CurrencyHellscapeRerollSocketLinks"] = "Tainted Orb of Fusing", + ["Metadata/Items/Currency/CurrencyHellscapeRerollSocketNumbers"] = "Tainted Jeweller's Orb", + ["Metadata/Items/Currency/CurrencyHellscapeUpgradeModTier"] = "Tainted Divine Teardrop", + ["Metadata/Items/Currency/CurrencyHellscapeUpgradeToUnique"] = "Tainted Mythic Orb", + ["Metadata/Items/Currency/CurrencyHellscapeWeaponQuality"] = "Tainted Blacksmith's Whetstone", + ["Metadata/Items/Currency/CurrencyHinekorasLock"] = "Hinekora's Lock", + ["Metadata/Items/Currency/CurrencyIdentification"] = "Scroll of Wisdom", + ["Metadata/Items/Currency/CurrencyIdentificationShard"] = "Scroll Fragment", + ["Metadata/Items/Currency/CurrencyImprint"] = "Imprint", + ["Metadata/Items/Currency/CurrencyImprintOrb"] = "Eternal Orb", + ["Metadata/Items/Currency/CurrencyIncubationAbyss"] = "Abyssal Incubator", + ["Metadata/Items/Currency/CurrencyIncubationAbyssStackable"] = "Abyssal Incubator", + ["Metadata/Items/Currency/CurrencyIncubationArmour6Linked"] = "Geomancer's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationArmour6LinkedStackable"] = "Geomancer's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationArmourShaperElder"] = "Celestial Armoursmith's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationArmourShaperElderStackable"] = "Celestial Armoursmith's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationBestiary"] = "Feral Incubator", + ["Metadata/Items/Currency/CurrencyIncubationBestiaryStackable"] = "Feral Incubator", + ["Metadata/Items/Currency/CurrencyIncubationBlight"] = "Blighted Incubator", + ["Metadata/Items/Currency/CurrencyIncubationBlightStackable"] = "Blighted Incubator", + ["Metadata/Items/Currency/CurrencyIncubationBreach"] = "Obscured Incubator", + ["Metadata/Items/Currency/CurrencyIncubationBreachStackable"] = "Obscured Incubator", + ["Metadata/Items/Currency/CurrencyIncubationCurrency"] = "Fine Incubator", + ["Metadata/Items/Currency/CurrencyIncubationCurrencyMid"] = "Ornate Incubator", + ["Metadata/Items/Currency/CurrencyIncubationCurrencyMidStackable"] = "Ornate Incubator", + ["Metadata/Items/Currency/CurrencyIncubationCurrencyStackable"] = "Fine Incubator", + ["Metadata/Items/Currency/CurrencyIncubationDelirium"] = "Maddening Incubator", + ["Metadata/Items/Currency/CurrencyIncubationDeliriumStackable"] = "Maddening Incubator", + ["Metadata/Items/Currency/CurrencyIncubationDivination"] = "Diviner's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationDivinationStackable"] = "Diviner's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationEssence"] = "Whispering Incubator", + ["Metadata/Items/Currency/CurrencyIncubationEssenceHigh"] = "Infused Incubator", + ["Metadata/Items/Currency/CurrencyIncubationEssenceHighStackable"] = "Infused Incubator", + ["Metadata/Items/Currency/CurrencyIncubationEssenceStackable"] = "Whispering Incubator", + ["Metadata/Items/Currency/CurrencyIncubationFaridunHighStackable"] = "Sacred Incubator", + ["Metadata/Items/Currency/CurrencyIncubationFaridunLowStackable"] = "Honoured Incubator", + ["Metadata/Items/Currency/CurrencyIncubationFaridunMapStackable"] = "Miraged Incubator", + ["Metadata/Items/Currency/CurrencyIncubationFossils"] = "Fossilised Incubator", + ["Metadata/Items/Currency/CurrencyIncubationFossilsStackable"] = "Fossilised Incubator", + ["Metadata/Items/Currency/CurrencyIncubationFragments"] = "Fragmented Incubator", + ["Metadata/Items/Currency/CurrencyIncubationFragmentsStackable"] = "Fragmented Incubator", + ["Metadata/Items/Currency/CurrencyIncubationGem"] = "Thaumaturge's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationGemLow"] = "Gemcutter's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationGemLowStackable"] = "Gemcutter's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationGemStackable"] = "Thaumaturge's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationGeneric"] = "Mysterious Incubator", + ["Metadata/Items/Currency/CurrencyIncubationGenericStackable"] = "Mysterious Incubator", + ["Metadata/Items/Currency/CurrencyIncubationHarbingerShard"] = "Foreboding Incubator", + ["Metadata/Items/Currency/CurrencyIncubationHarbingerShardStackable"] = "Foreboding Incubator", + ["Metadata/Items/Currency/CurrencyIncubationLabyrinthHelm"] = "Enchanted Incubator", + ["Metadata/Items/Currency/CurrencyIncubationLabyrinthHelmStackable"] = "Enchanted Incubator", + ["Metadata/Items/Currency/CurrencyIncubationMapElder"] = "Eldritch Incubator", + ["Metadata/Items/Currency/CurrencyIncubationMapElderStackable"] = "Eldritch Incubator", + ["Metadata/Items/Currency/CurrencyIncubationMaps"] = "Cartographer's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationMapsStackable"] = "Cartographer's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationMetamorph"] = "Challenging Incubator", + ["Metadata/Items/Currency/CurrencyIncubationMetamorphStackable"] = "Challenging Incubator", + ["Metadata/Items/Currency/CurrencyIncubationPerandus"] = "Kalguuran Incubator", + ["Metadata/Items/Currency/CurrencyIncubationPerandusStackable"] = "Kalguuran Incubator", + ["Metadata/Items/Currency/CurrencyIncubationScarabs"] = "Skittering Incubator", + ["Metadata/Items/Currency/CurrencyIncubationScarabsStackable"] = "Skittering Incubator", + ["Metadata/Items/Currency/CurrencyIncubationTalismans"] = "Primal Incubator", + ["Metadata/Items/Currency/CurrencyIncubationTalismansStackable"] = "Primal Incubator", + ["Metadata/Items/Currency/CurrencyIncubationTrinketShaperElder"] = "Celestial Jeweller's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationTrinketShaperElderStackable"] = "Celestial Jeweller's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationUniqueLeague"] = "Time-Lost Incubator", + ["Metadata/Items/Currency/CurrencyIncubationUniqueLeagueStackable"] = "Time-Lost Incubator", + ["Metadata/Items/Currency/CurrencyIncubationUniqueMaps"] = "Otherworldly Incubator", + ["Metadata/Items/Currency/CurrencyIncubationUniqueMapsStackable"] = "Otherworldly Incubator", + ["Metadata/Items/Currency/CurrencyIncubationUniques"] = "Singular Incubator", + ["Metadata/Items/Currency/CurrencyIncubationUniquesStackable"] = "Singular Incubator", + ["Metadata/Items/Currency/CurrencyIncubationWeaponShaperElder"] = "Celestial Blacksmith's Incubator", + ["Metadata/Items/Currency/CurrencyIncubationWeaponShaperElderStackable"] = "Celestial Blacksmith's Incubator", + ["Metadata/Items/Currency/CurrencyIncursionCorrupt1"] = "Corrupt", + ["Metadata/Items/Currency/CurrencyIncursionCorrupt2"] = "Corrupt", + ["Metadata/Items/Currency/CurrencyIncursionCorruptGem"] = "Corrupt", + ["Metadata/Items/Currency/CurrencyIncursionVialBossAmulet"] = "Vial of Sacrifice", + ["Metadata/Items/Currency/CurrencyIncursionVialBossFlask"] = "Vial of the Ghost", + ["Metadata/Items/Currency/CurrencyIncursionVialBossJewel"] = "Vial of Transcendence", + ["Metadata/Items/Currency/CurrencyIncursionVialFire"] = "Vial of Fate", + ["Metadata/Items/Currency/CurrencyIncursionVialHealing"] = "Vial of Summoning", + ["Metadata/Items/Currency/CurrencyIncursionVialLightning"] = "Vial of the Ritual", + ["Metadata/Items/Currency/CurrencyIncursionVialMinion"] = "Vial of Consequence", + ["Metadata/Items/Currency/CurrencyIncursionVialPoison"] = "Vial of Awakening", + ["Metadata/Items/Currency/CurrencyIncursionVialTrap"] = "Vial of Dominance", + ["Metadata/Items/Currency/CurrencyInstillingOrb"] = "Instilling Orb", + ["Metadata/Items/Currency/CurrencyItemiseCapturedMonster"] = "Bestiary Orb", + ["Metadata/Items/Currency/CurrencyItemiseNecropolisCorpse"] = "Empty Coffin", + ["Metadata/Items/Currency/CurrencyItemiseSextantModifier"] = "Surveyor's Compass", + ["Metadata/Items/Currency/CurrencyItemisedCapturedMonster"] = "Imprinted Bestiary Orb", + ["Metadata/Items/Currency/CurrencyItemisedNecropolisCorpse"] = "Filled Coffin", + ["Metadata/Items/Currency/CurrencyItemisedProphecy"] = "Prophecy", + ["Metadata/Items/Currency/CurrencyItemisedSextantModifier"] = "Charged Compass", + ["Metadata/Items/Currency/CurrencyJewelleryQualityAttack"] = "Abrasive Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityAttribute"] = "Intrinsic Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityCaster"] = "Imbued Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityCritical"] = "Unstable Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityDefense"] = "Tempering Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityElemental"] = "Turbulent Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityPhysicalChaos"] = "Noxious Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityPrefix"] = "Sinistral Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityResistance"] = "Prismatic Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityResource"] = "Fertile Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualitySpeed"] = "Accelerating Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualitySuffix"] = "Dextral Catalyst", + ["Metadata/Items/Currency/CurrencyJewelleryQualityVaal"] = "Tainted Catalyst", + ["Metadata/Items/Currency/CurrencyLabyrinthEnchant"] = "Enchant", + ["Metadata/Items/Currency/CurrencyLabyrinthEnchantCorrupt"] = "Tainted Blessing", + ["Metadata/Items/Currency/CurrencyLegionEternalEmpireShard"] = "Timeless Eternal Empire Splinter", + ["Metadata/Items/Currency/CurrencyLegionKaruiShard"] = "Timeless Karui Splinter", + ["Metadata/Items/Currency/CurrencyLegionMarakethShard"] = "Timeless Maraketh Splinter", + ["Metadata/Items/Currency/CurrencyLegionTemplarShard"] = "Timeless Templar Splinter", + ["Metadata/Items/Currency/CurrencyLegionVaalShard"] = "Timeless Vaal Splinter", + ["Metadata/Items/Currency/CurrencyMapQuality"] = "Cartographer's Chisel", + ["Metadata/Items/Currency/CurrencyMapQualityCurrency"] = "Maven's Chisel of Avarice", + ["Metadata/Items/Currency/CurrencyMapQualityDivinationCards"] = "Maven's Chisel of Divination", + ["Metadata/Items/Currency/CurrencyMapQualityPackSize"] = "Maven's Chisel of Proliferation", + ["Metadata/Items/Currency/CurrencyMapQualityRarity"] = "Maven's Chisel of Procurement", + ["Metadata/Items/Currency/CurrencyMapQualityScarabs"] = "Maven's Chisel of Scarabs", + ["Metadata/Items/Currency/CurrencyModValues"] = "Divine Orb", + ["Metadata/Items/Currency/CurrencyMoreCorrupt"] = "Djinn-Touched Vaal Orb", + ["Metadata/Items/Currency/CurrencyMoreZanaInfluencedItems"] = "Orb of Intention", + ["Metadata/Items/Currency/CurrencyMutatedAddModToMagic"] = "Foulborn Orb of Augmentation", + ["Metadata/Items/Currency/CurrencyMutatedAddModToRare"] = "Foulborn Exalted Orb", + ["Metadata/Items/Currency/CurrencyMutatedUpgradeMagicToRare"] = "Foulborn Regal Orb", + ["Metadata/Items/Currency/CurrencyPassiveRefund"] = "Orb of Regret", + ["Metadata/Items/Currency/CurrencyPerandusCoin"] = "Perandus Coin", + ["Metadata/Items/Currency/CurrencyPortal"] = "Portal Scroll", + ["Metadata/Items/Currency/CurrencyRefreshBarter"] = "Exotic Coinage", + ["Metadata/Items/Currency/CurrencyRefreshDealer"] = "Scrap Metal", + ["Metadata/Items/Currency/CurrencyRefreshGambler"] = "Astragali", + ["Metadata/Items/Currency/CurrencyRefreshSaga"] = "Burial Medallion", + ["Metadata/Items/Currency/CurrencyRemoveMod"] = "Orb of Annulment", + ["Metadata/Items/Currency/CurrencyRemoveModShard"] = "Annulment Shard", + ["Metadata/Items/Currency/CurrencyRemoveZanaInfluence"] = "Orb of Unravelling", + ["Metadata/Items/Currency/CurrencyRerollDefences"] = "Sacred Orb", + ["Metadata/Items/Currency/CurrencyRerollGem"] = "Gemcutters Lens", + ["Metadata/Items/Currency/CurrencyRerollImplicit"] = "Blessed Orb", + ["Metadata/Items/Currency/CurrencyRerollMagic"] = "Orb of Alteration", + ["Metadata/Items/Currency/CurrencyRerollMagicShard"] = "Alteration Shard", + ["Metadata/Items/Currency/CurrencyRerollMapType"] = "Orb of Horizons", + ["Metadata/Items/Currency/CurrencyRerollMapTypeShard"] = "Horizon Shard", + ["Metadata/Items/Currency/CurrencyRerollRare"] = "Chaos Orb", + ["Metadata/Items/Currency/CurrencyRerollRareShard"] = "Chaos Shard", + ["Metadata/Items/Currency/CurrencyRerollRareVeiled"] = "Veiled Exalted Orb", + ["Metadata/Items/Currency/CurrencyRerollRareVeiledChaos"] = "Veiled Chaos Orb", + ["Metadata/Items/Currency/CurrencyRerollSkillQualityType"] = "Prime Regrading Lens", + ["Metadata/Items/Currency/CurrencyRerollSocketColours"] = "Chromatic Orb", + ["Metadata/Items/Currency/CurrencyRerollSocketLinks"] = "Orb of Fusing", + ["Metadata/Items/Currency/CurrencyRerollSocketNumbers"] = "Jeweller's Orb", + ["Metadata/Items/Currency/CurrencyRerollSupportQualityType"] = "Secondary Regrading Lens", + ["Metadata/Items/Currency/CurrencyRerollUnique"] = "Ancient Orb", + ["Metadata/Items/Currency/CurrencyRerollUniqueShard"] = "Ancient Shard", + ["Metadata/Items/Currency/CurrencyRespecShapersOrb"] = "Unshaping Orb", + ["Metadata/Items/Currency/CurrencyRhoaFeather"] = "Albino Rhoa Feather", + ["Metadata/Items/Currency/CurrencyRitualSplinter"] = "Ritual Splinter", + ["Metadata/Items/Currency/CurrencyRitualStone"] = "Ritual Vessel", + ["Metadata/Items/Currency/CurrencyScryingOrb"] = "Scrying Orb", + ["Metadata/Items/Currency/CurrencySealMapHigh"] = "Master Cartographer's Seal", + ["Metadata/Items/Currency/CurrencySealMapLow"] = "Apprentice Cartographer's Seal", + ["Metadata/Items/Currency/CurrencySealMapMid"] = "Journeyman Cartographer's Seal", + ["Metadata/Items/Currency/CurrencySilverCoin"] = "Silver Coin", + ["Metadata/Items/Currency/CurrencySkillGemToken"] = "Uncarved Gemstone", + ["Metadata/Items/Currency/CurrencyStackedScarab"] = "Veiled Scarab", + ["Metadata/Items/Currency/CurrencyStrongboxQuality"] = "Engineer's Orb", + ["Metadata/Items/Currency/CurrencyStrongboxQualityInfused"] = "Infused Engineer's Orb", + ["Metadata/Items/Currency/CurrencyStrongboxQualityShard"] = "Engineer's Shard", + ["Metadata/Items/Currency/CurrencyUpgradeInfluenceMod"] = "Orb of Dominance", + ["Metadata/Items/Currency/CurrencyUpgradeMagicToRare"] = "Regal Orb", + ["Metadata/Items/Currency/CurrencyUpgradeMagicToRareShard"] = "Regal Shard", + ["Metadata/Items/Currency/CurrencyUpgradeMapTier"] = "Harbinger's Orb", + ["Metadata/Items/Currency/CurrencyUpgradeMapTierShard"] = "Harbinger's Shard", + ["Metadata/Items/Currency/CurrencyUpgradeRandomly"] = "Orb of Chance", + ["Metadata/Items/Currency/CurrencyUpgradeToMagic"] = "Orb of Transmutation", + ["Metadata/Items/Currency/CurrencyUpgradeToMagicShard"] = "Transmutation Shard", + ["Metadata/Items/Currency/CurrencyUpgradeToRare"] = "Orb of Alchemy", + ["Metadata/Items/Currency/CurrencyUpgradeToRareAndSetSockets"] = "Orb of Binding", + ["Metadata/Items/Currency/CurrencyUpgradeToRareAndSetSocketsShard"] = "Binding Shard", + ["Metadata/Items/Currency/CurrencyUpgradeToRareShard"] = "Alchemy Shard", + ["Metadata/Items/Currency/CurrencyValdoPuzzleBox"] = "Valdo's Puzzle Box", + ["Metadata/Items/Currency/CurrencyWeaponQuality"] = "Blacksmith's Whetstone", + ["Metadata/Items/Currency/CurrencyWishConvertUnique"] = "Coin of Restoration", + ["Metadata/Items/Currency/CurrencyWishConvertUniqueCorrupt"] = "Coin of Desecration", + ["Metadata/Items/Currency/CurrencyWishSupportGemBlue"] = "Coin of Knowledge", + ["Metadata/Items/Currency/CurrencyWishSupportGemGreen"] = "Coin of Skill", + ["Metadata/Items/Currency/CurrencyWishSupportGemRed"] = "Coin of Power", + ["Metadata/Items/Currency/FearMemoryThread"] = "Memory of Trauma", + ["Metadata/Items/Currency/GoldCoin"] = "Gold", + ["Metadata/Items/Currency/HarvestSeedBlue"] = "Primal Crystallised Lifeforce", + ["Metadata/Items/Currency/HarvestSeedBoss"] = "Sacred Crystallised Lifeforce", + ["Metadata/Items/Currency/HarvestSeedFaridun"] = "Crystallised Rancour", + ["Metadata/Items/Currency/HarvestSeedGreen"] = "Vivid Crystallised Lifeforce", + ["Metadata/Items/Currency/HarvestSeedRed"] = "Wild Crystallised Lifeforce", + ["Metadata/Items/Currency/IgnoranceMemoryThread"] = "Memory of Loneliness", + ["Metadata/Items/Currency/KalguuranRune1"] = "Sun Rune", + ["Metadata/Items/Currency/KalguuranRune10"] = "Power Rune", + ["Metadata/Items/Currency/KalguuranRune2"] = "Bound Rune", + ["Metadata/Items/Currency/KalguuranRune3"] = "Life Rune", + ["Metadata/Items/Currency/KalguuranRune4"] = "War Rune", + ["Metadata/Items/Currency/KalguuranRune5"] = "River Rune", + ["Metadata/Items/Currency/KalguuranRune6"] = "Bounty Rune", + ["Metadata/Items/Currency/KalguuranRune7"] = "Journey Rune", + ["Metadata/Items/Currency/KalguuranRune8"] = "Mountain Rune", + ["Metadata/Items/Currency/KalguuranRune9"] = "Time Rune", + ["Metadata/Items/Currency/LegionCocoonBodyArmour"] = "Maraketh Enshrouding Crystal", + ["Metadata/Items/Currency/LegionCocoonBoots"] = "Imperial Enshrouding Crystal", + ["Metadata/Items/Currency/LegionCocoonGloves"] = "Karui Enshrouding Crystal", + ["Metadata/Items/Currency/LegionCocoonHelmet"] = "Vaal Enshrouding Crystal", + ["Metadata/Items/Currency/LegionCocoonShield"] = "Templar Enshrouding Crystal", + ["Metadata/Items/Currency/Mushrune1"] = "Clear Oil", + ["Metadata/Items/Currency/Mushrune10"] = "Opalescent Oil", + ["Metadata/Items/Currency/Mushrune11"] = "Silver Oil", + ["Metadata/Items/Currency/Mushrune12"] = "Golden Oil", + ["Metadata/Items/Currency/Mushrune2"] = "Sepia Oil", + ["Metadata/Items/Currency/Mushrune3"] = "Amber Oil", + ["Metadata/Items/Currency/Mushrune4"] = "Verdant Oil", + ["Metadata/Items/Currency/Mushrune5"] = "Teal Oil", + ["Metadata/Items/Currency/Mushrune6"] = "Azure Oil", + ["Metadata/Items/Currency/Mushrune6b"] = "Indigo Oil", + ["Metadata/Items/Currency/Mushrune7"] = "Violet Oil", + ["Metadata/Items/Currency/Mushrune8"] = "Crimson Oil", + ["Metadata/Items/Currency/Mushrune9"] = "Black Oil", + ["Metadata/Items/Currency/MushruneCorrupt"] = "Tainted Oil", + ["Metadata/Items/Currency/MushruneMirror"] = "Reflective Oil", + ["Metadata/Items/Currency/MushruneUber"] = "Prismatic Oil", + ["Metadata/Items/Currency/ReflectiveMist"] = "Reflecting Mist", + ["Metadata/Items/Currency/ReflectiveMistWeak"] = "Fading Reflecting Mist", + ["Metadata/Items/Currency/RunegraftAilmentRedirect"] = "Runegraft of Loyalty", + ["Metadata/Items/Currency/RunegraftAttributeGlobalDefences"] = "Runegraft of the Fortress", + ["Metadata/Items/Currency/RunegraftBootsGloves"] = "Runegraft of the Bound", + ["Metadata/Items/Currency/RunegraftBuffScaling"] = "Runegraft of the Warp", + ["Metadata/Items/Currency/RunegraftChainMana"] = "Runegraft of Refraction", + ["Metadata/Items/Currency/RunegraftConnection"] = "Runegraft of Connection", + ["Metadata/Items/Currency/RunegraftConsecratedGround"] = "Runegraft of Consecration", + ["Metadata/Items/Currency/RunegraftCooldownRefresh"] = "Runegraft of Time", + ["Metadata/Items/Currency/RunegraftCritRecoup"] = "Runegraft of Restitching", + ["Metadata/Items/Currency/RunegraftDamagePerSocket"] = "Runegraft of the Jeweller", + ["Metadata/Items/Currency/RunegraftElusive"] = "Runegraft of the Agile", + ["Metadata/Items/Currency/RunegraftFishing"] = "Runegraft of the Angler", + ["Metadata/Items/Currency/RunegraftFlatOffhandAttackTime"] = "Runegraft of the Sinistral", + ["Metadata/Items/Currency/RunegraftFortificationBanner"] = "Runegraft of Rallying", + ["Metadata/Items/Currency/RunegraftLifeFlaskRage"] = "Runegraft of Fury", + ["Metadata/Items/Currency/RunegraftLifeFromManaFlasks"] = "Runegraft of Quaffing", + ["Metadata/Items/Currency/RunegraftLowLifeRestore"] = "Runegraft of the River", + ["Metadata/Items/Currency/RunegraftMatchedAttackDamage"] = "Runegraft of the Combatant", + ["Metadata/Items/Currency/RunegraftMatchedSpeed"] = "[DNT - UNUSED] Limiting Runegraft", + ["Metadata/Items/Currency/RunegraftMinionCannotAttack"] = "[DNT - UNUSED] Arcane Orders Runegraft", + ["Metadata/Items/Currency/RunegraftMinionCannotCast"] = "[DNT - UNUSED] Martial Orders Runegraft", + ["Metadata/Items/Currency/RunegraftNovaMarkedTarget"] = "Runegraft of the Novamark", + ["Metadata/Items/Currency/RunegraftOffhandInvert"] = "Runegraft of the Gauche", + ["Metadata/Items/Currency/RunegraftPoisonConversion"] = "Runegraft of Rotblood", + ["Metadata/Items/Currency/RunegraftRandomCurse"] = "Runegraft of Blasphemy", + ["Metadata/Items/Currency/RunegraftResurgence"] = "Runegraft of Resurgence", + ["Metadata/Items/Currency/RunegraftSouls"] = "Runegraft of the Soulwick", + ["Metadata/Items/Currency/RunegraftSpellLifeCost"] = "Runegraft of the Witchmark", + ["Metadata/Items/Currency/RunegraftSpellbound"] = "Runegraft of the Spellbound", + ["Metadata/Items/Currency/RunegraftSuffering"] = "Runegraft of Suffering", + ["Metadata/Items/Currency/RunegraftSupportLevels"] = "Runegraft of Gemcraft", + ["Metadata/Items/Currency/RunegraftTest"] = "[DNT - UNUSED] Test Runegraft", + ["Metadata/Items/Currency/RunegraftTinctures"] = "Runegraft of the Imbued", + ["Metadata/Items/Currency/RunegraftTreacherousAuras"] = "Runegraft of Treachery", + ["Metadata/Items/Currency/RunegraftUnexciting"] = "Runegraft of Stability", + ["Metadata/Items/Currency/RunegraftWarcrySpeed"] = "Runegraft of Bellows", + ["Metadata/Items/Currency/SanctumCurrencyAcrobatics"] = "Lycia's Invocation of Acrobatics", + ["Metadata/Items/Currency/SanctumCurrencyAncestralBond"] = "Lycia's Invocation of Ancestral Bond", + ["Metadata/Items/Currency/SanctumCurrencyArrowDancing"] = "Lycia's Invocation of Arrow Dancing", + ["Metadata/Items/Currency/SanctumCurrencyAvatarOfFire"] = "Lycia's Invocation of Avatar of Fire", + ["Metadata/Items/Currency/SanctumCurrencyBloodMagic"] = "Lycia's Invocation of Blood Magic", + ["Metadata/Items/Currency/SanctumCurrencyCallToArms"] = "Lycia's Invocation of Call to Arms", + ["Metadata/Items/Currency/SanctumCurrencyConduit"] = "Lycia's Invocation of Conduit", + ["Metadata/Items/Currency/SanctumCurrencyCrimsonDance"] = "Lycia's Invocation of Crimson Dance", + ["Metadata/Items/Currency/SanctumCurrencyDivineShield"] = "Lycia's Invocation of Divine Shield", + ["Metadata/Items/Currency/SanctumCurrencyDoomsday"] = "Lycia's Invocation of Hex Master", + ["Metadata/Items/Currency/SanctumCurrencyEldritchBattery"] = "Lycia's Invocation of Eldritch Battery", + ["Metadata/Items/Currency/SanctumCurrencyElementalEquilibrium"] = "Lycia's Invocation of Elemental Equilibrium", + ["Metadata/Items/Currency/SanctumCurrencyElementalOverload"] = "Lycia's Invocation of Elemental Overload", + ["Metadata/Items/Currency/SanctumCurrencyEternalYouth"] = "Lycia's Invocation of Eternal Youth", + ["Metadata/Items/Currency/SanctumCurrencyGhostDance"] = "Lycia's Invocation of Ghost Dance", + ["Metadata/Items/Currency/SanctumCurrencyGhostReaver"] = "Lycia's Invocation of Ghost Reaver", + ["Metadata/Items/Currency/SanctumCurrencyGlancingBlows"] = "Lycia's Invocation of Glancing Blows", + ["Metadata/Items/Currency/SanctumCurrencyImbalancedGuard"] = "Lycia's Invocation of Imbalanced Guard", + ["Metadata/Items/Currency/SanctumCurrencyIronGrip"] = "Lycia's Invocation of Iron Grip", + ["Metadata/Items/Currency/SanctumCurrencyIronReflexes"] = "Lycia's Invocation of Iron Reflexes", + ["Metadata/Items/Currency/SanctumCurrencyIronWill"] = "Lycia's Invocation of Iron Will", + ["Metadata/Items/Currency/SanctumCurrencyLetheShade"] = "Lycia's Invocation of Lethe Shade", + ["Metadata/Items/Currency/SanctumCurrencyMagebane"] = "Lycia's Invocation of Magebane", + ["Metadata/Items/Currency/SanctumCurrencyMindoverMatter"] = "Lycia's Invocation of Mind over Matter", + ["Metadata/Items/Currency/SanctumCurrencyMinionInstability"] = "Lycia's Invocation of Minion Instability", + ["Metadata/Items/Currency/SanctumCurrencyPainAttunement"] = "Lycia's Invocation of Pain Attunement", + ["Metadata/Items/Currency/SanctumCurrencyPerfectAgony"] = "Lycia's Invocation of Perfect Agony", + ["Metadata/Items/Currency/SanctumCurrencyPointBlank"] = "Lycia's Invocation of Point Blank", + ["Metadata/Items/Currency/SanctumCurrencyPreciseTechnique"] = "Lycia's Invocation of Precise Technique", + ["Metadata/Items/Currency/SanctumCurrencyResoluteTechnique"] = "Lycia's Invocation of Resolute Technique", + ["Metadata/Items/Currency/SanctumCurrencyRunebinder"] = "Lycia's Invocation of Runebinder", + ["Metadata/Items/Currency/SanctumCurrencySolipsism"] = "Lycia's Invocation of Solipsism", + ["Metadata/Items/Currency/SanctumCurrencySupremeEgo"] = "Lycia's Invocation of Supreme Ego", + ["Metadata/Items/Currency/SanctumCurrencyTheAgnostic"] = "Lycia's Invocation of the Agnostic", + ["Metadata/Items/Currency/SanctumCurrencyTheImpaler"] = "Lycia's Invocation of the Impaler", + ["Metadata/Items/Currency/SanctumCurrencyUnwaveringStance"] = "Lycia's Invocation of Unwavering Stance", + ["Metadata/Items/Currency/SanctumCurrencyVaalPact"] = "Lycia's Invocation of Vaal Pact", + ["Metadata/Items/Currency/SanctumCurrencyVersatileCombatant"] = "Lycia's Invocation of Versatile Combatant", + ["Metadata/Items/Currency/SanctumCurrencyWickedWard"] = "Lycia's Invocation of Wicked Ward", + ["Metadata/Items/Currency/SanctumCurrencyWindDancer"] = "Lycia's Invocation of Wind Dancer", + ["Metadata/Items/Currency/SanctumCurrencyZealotsOath"] = "Lycia's Invocation of Zealot's Oath", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportBlighted"] = "Blighted Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportBreachstone"] = "Otherworldly Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportCorrupted"] = "Vaal Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportDelirium"] = "Delirious Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportExplorers"] = "Explorer's Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportGuardian"] = "Influenced Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportJuiced"] = "Operative's Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportMoreHidden"] = "Comprehensive Scouting Report", + ["Metadata/Items/Currency/ScoutingReports/AtlasScoutingReportUnique"] = "Singular Scouting Report", + ["Metadata/Items/Currency/SentinelCurrencyAddMod"] = "Augmenting Power Core", + ["Metadata/Items/Currency/SentinelCurrencyArmour"] = "Armour Recombinator", + ["Metadata/Items/Currency/SentinelCurrencyBasic"] = "Power Core", + ["Metadata/Items/Currency/SentinelCurrencyJewellery"] = "Jewellery Recombinator", + ["Metadata/Items/Currency/SentinelCurrencyMutate"] = "Transforming Power Core", + ["Metadata/Items/Currency/SentinelCurrencyUpgradeMod"] = "Amplifying Power Core", + ["Metadata/Items/Currency/SentinelCurrencyWeapon"] = "Weapon Recombinator", + ["Metadata/Items/DivinationCards/DivinationCardDeck"] = "Stacked Deck", + ["Metadata/Items/Heist/HeistCoin"] = "Rogue's Marker", +} diff --git a/src/Export/Scripts/miscdata.lua b/src/Export/Scripts/miscdata.lua index 995d2fe327..75b8dfaf8d 100644 --- a/src/Export/Scripts/miscdata.lua +++ b/src/Export/Scripts/miscdata.lua @@ -1,3 +1,5 @@ +---@module "Modules.Utils" +local utils = LoadModule("../Modules/Utils") local out = io.open("../Data/Misc.lua", "w") out:write("-- This file is automatically generated, do not edit!\n\n") out:write('local data = ...\n') @@ -168,4 +170,11 @@ out:write('}\n') out:close() +local currencies = {} +for row in dat("BaseItemTypes"):Rows() do + if row.ItemClass.Id == "Currency" and row.Name ~= "" then + currencies[row.Id] = row.Name + end +end +utils.saveTableToFile("../Data/CurrencyNames.lua", currencies, "This file contains mapping item names for every currency base item type ID.\nUsed for working with the currency exchange which uses item type IDs.") print("Misc data exported.")