From 42dbe9d52678245bfbb645ec98ee934702cd0415 Mon Sep 17 00:00:00 2001 From: Xan-Asc <119889093+Xan-Asc@users.noreply.github.com> Date: Fri, 7 Apr 2023 03:55:47 -0700 Subject: [PATCH] =?UTF-8?q?Enchanting=20fixes,=20reverted=20Crafting=20mod?= =?UTF-8?q?ule=20to=20previous=20version=20that=20s=E2=80=A6=20(#1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Enchanting fixes, reverted Crafting module to previous version that supports Ascension specific crafts and Vellums. * Updated enchanting names from DB * Added the remaining Ascension specific recipes * Replace SpellNames2IDs.lua with UnitCastingSpellID * Bugfix: Ascension uses exact quality QueryAuctionItems, TSM was designed for quality or higher * Bugfix: Properly get list of Professions via index * Replaced factionrealm with realm Ascension does not have strict faction seperation * GetTradeSkillCooldown -> SpellHasBaseCooldown GetTradeSkillCooldown only tells you if a spell is on CD, not if it has a CD Data is from DB, which isn't populated fully yet. * Implement backported API GetSpellBaseCooldown * bugfix: hasCD is nil if no cd, not 0 --- TradeSkillMaster/Auction/AuctionQueryUtil.lua | 4 +- TradeSkillMaster/Auction/AuctionScanning.lua | 6 +- TradeSkillMaster/Core/Groups.lua | 20 +- TradeSkillMaster/Core/Modules.lua | 10 +- TradeSkillMaster/Core/Options.lua | 6 +- TradeSkillMaster/Core/Sync.lua | 14 +- TradeSkillMaster/Data/Vendor.lua | 4 +- TradeSkillMaster/GUI/BankUI.lua | 16 +- TradeSkillMaster/TradeSkillMaster.lua | 6 +- TradeSkillMaster/Util/Util.lua | 2 +- TradeSkillMaster_Accounting/Modules/data.lua | 44 +- TradeSkillMaster_Accounting/Modules/gui.lua | 50 +- .../TradeSkillMaster_Accounting.lua | 54 +- .../Modules/Scanning.lua | 10 +- TradeSkillMaster_AuctionDB/Modules/config.lua | 8 +- TradeSkillMaster_AuctionDB/Modules/data.lua | 2 +- .../TradeSkillMaster_AuctionDB.lua | 43 +- .../TradeSkillMaster_Auctioning.lua | 6 +- .../modules/Options.lua | 14 +- .../modules/ResetScan.lua | 2 +- .../modules/ScanUtil.lua | 8 +- TradeSkillMaster_Crafting/Modules/Cost.lua | 32 +- .../Modules/CraftingGUI.lua | 265 +- .../Modules/EnchantingInfo.lua | 624 +-- TradeSkillMaster_Crafting/Modules/Gather.lua | 18 +- .../Modules/Inventory.lua | 22 +- TradeSkillMaster_Crafting/Modules/Options.lua | 26 +- TradeSkillMaster_Crafting/Modules/Queue.lua | 36 +- .../Modules/SpellNames2IDs.lua | 3583 ----------------- TradeSkillMaster_Crafting/Modules/Sync.lua | 4 +- TradeSkillMaster_Crafting/Modules/Util.lua | 105 +- .../Modules/VellumInfo.lua | 567 +-- .../TradeSkillMaster_Crafting.lua | 135 +- .../Modules/config.lua | 6 +- .../TradeSkillMaster_ItemTracker.lua | 28 +- TradeSkillMaster_Mailing/Modules/Other.lua | 10 +- .../TradeSkillMaster_Mailing.lua | 4 +- .../TradeSkillMaster_Shopping.lua | 2 +- TradeSkillMaster_Warehousing/Modules/data.lua | 2 +- TradeSkillMaster_Warehousing/Modules/move.lua | 4 +- .../TradeSkillMaster_Warehousing.lua | 14 +- 41 files changed, 1122 insertions(+), 4694 deletions(-) delete mode 100644 TradeSkillMaster_Crafting/Modules/SpellNames2IDs.lua diff --git a/TradeSkillMaster/Auction/AuctionQueryUtil.lua b/TradeSkillMaster/Auction/AuctionQueryUtil.lua index 674d80a..c7775a2 100644 --- a/TradeSkillMaster/Auction/AuctionQueryUtil.lua +++ b/TradeSkillMaster/Auction/AuctionQueryUtil.lua @@ -48,7 +48,7 @@ local function GetCommonQueryInfo(name, items) if existingQuery then existingQuery.minLevel = min(existingQuery.minLevel, itemQuery.minLevel) existingQuery.maxLevel = max(existingQuery.maxLevel, itemQuery.maxLevel) - existingQuery.quality = min(existingQuery.quality, itemQuery.quality) + existingQuery.quality = (existingQuery.quality == itemQuery.quality) and existingQuery.quality or nil if existingQuery.subClass ~= itemQuery.subClass then existingQuery.subClass = nil end @@ -70,7 +70,7 @@ local function GetCommonQueryInfoClass(class, items) local itemQuery = TSMAPI:GetAuctionQueryInfo(items[i]) resultQuery.minLevel = min(resultQuery.minLevel, itemQuery.minLevel) resultQuery.maxLevel = max(resultQuery.maxLevel, itemQuery.maxLevel) - resultQuery.quality = min(resultQuery.quality, itemQuery.quality) + resultQuery.quality = (resultQuery.quality == itemQuery.quality) and resultQuery.quality or nil if resultQuery.subClass ~= itemQuery.subClass then resultQuery.subClass = nil end end resultQuery.items = items diff --git a/TradeSkillMaster/Auction/AuctionScanning.lua b/TradeSkillMaster/Auction/AuctionScanning.lua index 879cba7..39cbec7 100644 --- a/TradeSkillMaster/Auction/AuctionScanning.lua +++ b/TradeSkillMaster/Auction/AuctionScanning.lua @@ -213,7 +213,7 @@ function private:ScanAuctions() local totalPages = ceil(total / NUM_AUCTION_ITEMS_PER_PAGE) if private.scanType == "numPages" then - local cacheData = TSM.db.factionrealm.numPagesCache[private.query.cacheKey] + local cacheData = TSM.db.realm.numPagesCache[private.query.cacheKey] cacheData.lastScan = time() local confidence = (120 - cacheData.confidence) / (CACHE_DECAY_PER_DAY * 2) local diff = abs(cacheData.avg - totalPages) @@ -393,7 +393,7 @@ function TSMAPI.AuctionScan:GetNumPages(query, callbackHandler) temp[i] = tostring(query[field]) end local cacheKey = table.concat(temp, "~") - local cacheData = TSM.db.factionrealm.numPagesCache[cacheKey] + local cacheData = TSM.db.realm.numPagesCache[cacheKey] if cacheData then local cacheHit if time() - cacheData.lastScan < CACHE_AUTO_HIT_TIME then @@ -412,7 +412,7 @@ function TSMAPI.AuctionScan:GetNumPages(query, callbackHandler) return 2 end else - TSM.db.factionrealm.numPagesCache[cacheKey] = { avg = 0, confidence = 0, numScans = 0, lastScan = 0 } + TSM.db.realm.numPagesCache[cacheKey] = { avg = 0, confidence = 0, numScans = 0, lastScan = 0 } end -- setup the query diff --git a/TradeSkillMaster/Core/Groups.lua b/TradeSkillMaster/Core/Groups.lua index c77d0d5..9647fa7 100644 --- a/TradeSkillMaster/Core/Groups.lua +++ b/TradeSkillMaster/Core/Groups.lua @@ -363,14 +363,14 @@ function TSMAPI:DrawOperationManagement(TSMObj, container, operationName) local operation = TSMObj.operations[operationName] local playerList = {} - local factionrealmKey = TSM.db.keys.factionrealm - for playerName in pairs(TSM.db.factionrealm.characters) do - playerList[playerName.." - "..factionrealmKey] = playerName + local realmKey = TSM.db.keys.realm + for playerName in pairs(TSM.db.realm.characters) do + playerList[playerName.." - "..realmKey] = playerName end - local factionrealmList = {} - for factionrealm in pairs(TSM.db.sv.factionrealm) do - factionrealmList[factionrealm] = factionrealm + local realmList = {} + for realm in pairs(TSM.db.sv.realm) do + realmList[realm] = realm end local groupList = {} @@ -436,9 +436,9 @@ function TSMAPI:DrawOperationManagement(TSMObj, container, operationName) { type = "Dropdown", label = L["Ignore Operation on Faction-Realms:"], - list = factionrealmList, + list = realmList, relativeWidth = 0.5, - settingInfo = {operation, "ignoreFactionrealm"}, + settingInfo = {operation, "ignorerealm"}, multiselect = true, tooltip = L["This operation will be ignored when you're on any character which is checked in this dropdown."], }, @@ -612,7 +612,7 @@ function TSMAPI:DrawOperationManagement(TSMObj, container, operationName) end data.module = nil data.ignorePlayer = {} - data.ignoreFactionrealm = {} + data.ignorerealm = {} data.relationships = {} TSMObj.operations[operationName] = data self:SetText("") @@ -629,7 +629,7 @@ function TSMAPI:DrawOperationManagement(TSMObj, container, operationName) local data = CopyTable(operation) data.module = moduleName data.ignorePlayer = nil - data.ignoreFactionrealm = nil + data.ignorerealm = nil data.relationships = nil ShowExportFrame(LibStub("AceSerializer-3.0"):Serialize(data)) end, diff --git a/TradeSkillMaster/Core/Modules.lua b/TradeSkillMaster/Core/Modules.lua index 42ddcd9..7ee089b 100644 --- a/TradeSkillMaster/Core/Modules.lua +++ b/TradeSkillMaster/Core/Modules.lua @@ -220,7 +220,7 @@ function TSMAPI:NewModule(obj) obj.operations = TSM.operations[moduleName] for _, operation in pairs(obj.operations) do operation.ignorePlayer = operation.ignorePlayer or {} - operation.ignoreFactionrealm = operation.ignoreFactionrealm or {} + operation.ignorerealm = operation.ignorerealm or {} operation.relationships = operation.relationships or {} end TSM:CheckOperationRelationships(moduleName) @@ -266,7 +266,7 @@ function TSM:UpdateModuleProfiles() for module, operations in pairs(TSM.operations) do for _, operation in pairs(operations) do operation.ignorePlayer = operation.ignorePlayer or {} - operation.ignoreFactionrealm = operation.ignoreFactionrealm or {} + operation.ignorerealm = operation.ignorerealm or {} operation.relationships = operation.relationships or {} end TSM:CheckOperationRelationships(module) @@ -296,9 +296,9 @@ function TSM:IsOperationIgnored(module, operationName) local obj = moduleObjects[module] local operation = obj.operations[operationName] if not operation then return end - local factionrealm = TSM.db.keys.factionrealm - local playerKey = UnitName("player").." - "..factionrealm - return operation.ignorePlayer[playerKey] or operation.ignoreFactionrealm[factionrealm] + local realm = TSM.db.keys.realm + local playerKey = UnitName("player").." - "..realm + return operation.ignorePlayer[playerKey] or operation.ignorerealm[realm] end function TSM:CheckOperationRelationships(moduleName) diff --git a/TradeSkillMaster/Core/Options.lua b/TradeSkillMaster/Core/Options.lua index 8f9430e..d0f2155 100644 --- a/TradeSkillMaster/Core/Options.lua +++ b/TradeSkillMaster/Core/Options.lua @@ -455,7 +455,7 @@ function private:LoadOptionsPage(parent) relativeWidth = 0.49, callback = function(_, _, value) local name = characterList[value] - TSM.db.factionrealm.characters[name] = nil + TSM.db.realm.characters[name] = nil TSM:Printf("%s removed.", name) parent:ReloadTab() end, @@ -663,7 +663,7 @@ function private:LoadOptionsPage(parent) } -- extra multi-account syncing widgets - for account, players in pairs(TSM.db.factionrealm.syncAccounts) do + for account, players in pairs(TSM.db.realm.syncAccounts) do local playerList = {} for player in pairs(players) do tinsert(playerList, player) @@ -674,7 +674,7 @@ function private:LoadOptionsPage(parent) text = DELETE, relativeWidth = 0.2, callback = function() - TSM.db.factionrealm.syncAccounts[account] = nil + TSM.db.realm.syncAccounts[account] = nil parent:ReloadTab() end, }, diff --git a/TradeSkillMaster/Core/Sync.lua b/TradeSkillMaster/Core/Sync.lua index c960dff..a94fb41 100644 --- a/TradeSkillMaster/Core/Sync.lua +++ b/TradeSkillMaster/Core/Sync.lua @@ -25,7 +25,7 @@ function Sync:OnEnable() Sync:RegisterEvent("CHAT_MSG_SYSTEM") local data = {characters={}, accountKey=TSMAPI.Sync:GetAccountKey()} - for name in pairs(TSM.db.factionrealm.characters) do + for name in pairs(TSM.db.realm.characters) do data.characters[name] = TSMAPI.Sync:GetAccountKey() end TSMAPI:CreateTimeDelay("syncSetupDelay", 3, function() TSMAPI.Sync:BroadcastData("TradeSkillMaster", "SETUP", data) end) @@ -63,7 +63,7 @@ function Sync:OnCommReceived(_, data, _, source) data.__account = nil -- make sure we are getting this from a known source - if not TSM.db.factionrealm.syncAccounts[account] and (module ~= "TradeSkillMaster" and not data.isSetup) then return end + if not TSM.db.realm.syncAccounts[account] and (module ~= "TradeSkillMaster" and not data.isSetup) then return end private.callbacks[module](key, data, source) end @@ -83,7 +83,7 @@ end function TSMAPI.Sync:GetAccountKey() - return TSM.db.factionrealm.accountKey + return TSM.db.realm.accountKey end function TSM:RegisterSyncCallback(module, callback) @@ -147,7 +147,7 @@ end function TSMAPI.Sync:BroadcastData(module, key, data) - for account, players in pairs(TSM.db.factionrealm.syncAccounts) do + for account, players in pairs(TSM.db.realm.syncAccounts) do if account ~= TSMAPI.Sync:GetAccountKey() then local sent for player in pairs(players) do @@ -173,7 +173,7 @@ end function private:SendSetupData(target, isResponse, isSetup) local data = {isResponse=isResponse, isSetup=isSetup, characters={}, accountKey=TSMAPI.Sync:GetAccountKey()} - for name in pairs(TSM.db.factionrealm.characters) do + for name in pairs(TSM.db.realm.characters) do data.characters[name] = true end TSMAPI.Sync:SendData("TradeSkillMaster", "SETUP", data, target) @@ -190,11 +190,11 @@ end function TSM:SyncCallback(key, data, source) if key == "SETUP" then - if (data.isSetup and strlower(source) ~= strlower(private.syncSetupTarget or "")) or (not data.isSetup and not TSM.db.factionrealm.syncAccounts[data.accountKey]) then + if (data.isSetup and strlower(source) ~= strlower(private.syncSetupTarget or "")) or (not data.isSetup and not TSM.db.realm.syncAccounts[data.accountKey]) then return end TSMAPI:Verify(data.accountKey ~= TSMAPI.Sync:GetAccountKey(), "It appears that you've manually copied your saved variables between accounts which will cause TSM's automatic sync'ing to not work. You'll need to undo this, and/or delete the TradeSkillMaster, TSM_Crafting, and TSM_ItemTracker saved variables files on both accounts (with WoW closed) in order to fix this.") - TSM.db.factionrealm.syncAccounts[data.accountKey] = data.characters + TSM.db.realm.syncAccounts[data.accountKey] = data.characters if data.isSetup then TSMAPI:CloseFrame() TSM:Printf(L["Setup account sync'ing with the account which '%s' is on."], source) diff --git a/TradeSkillMaster/Data/Vendor.lua b/TradeSkillMaster/Data/Vendor.lua index 39b72bc..cb70b9d 100644 --- a/TradeSkillMaster/Data/Vendor.lua +++ b/TradeSkillMaster/Data/Vendor.lua @@ -55,7 +55,9 @@ local vendorItems = { ["item:39684:0:0:0:0:0:0"] = 9000, ["item:40533:0:0:0:0:0:0"] = 50000, ["item:44835:0:0:0:0:0:0"] = 10, - ["item:44853:0:0:0:0:0:0"] = 25, + ["item:52510:0:0:0:0:0:0"] = 30000, + ["item:52511:0:0:0:0:0:0"] = 30000, + ["item:8925:0:0:0:0:0:0"] = 500, -- ["item:52188:0:0:0:0:0:0"] = 15000, -- ["item:58274:0:0:0:0:0:0"] = 11000, -- ["item:58278:0:0:0:0:0:0"] = 16000, diff --git a/TradeSkillMaster/GUI/BankUI.lua b/TradeSkillMaster/GUI/BankUI.lua index 6e5830a..d5229ed 100644 --- a/TradeSkillMaster/GUI/BankUI.lua +++ b/TradeSkillMaster/GUI/BankUI.lua @@ -169,9 +169,9 @@ function BankUI:getFrame(frameType) bFrame:SetScript("OnMouseDown", bFrame.StartMoving) bFrame:SetScript("OnMouseUp", function(...) bFrame.StopMovingOrSizing(...) if bankType == "guild" then - TSM.db.factionrealm.bankUIGBankFramePosition = { bFrame:GetLeft(), bFrame:GetBottom() } + TSM.db.realm.bankUIGBankFramePosition = { bFrame:GetLeft(), bFrame:GetBottom() } else - TSM.db.factionrealm.bankUIBankFramePosition = { bFrame:GetLeft(), bFrame:GetBottom() } + TSM.db.realm.bankUIBankFramePosition = { bFrame:GetLeft(), bFrame:GetBottom() } end end) bFrame:SetMovable(true) @@ -183,9 +183,9 @@ function BankUI:getFrame(frameType) self:SetFrameLevel(0) self:ClearAllPoints() if bankType == "guild" then - self:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.factionrealm.bankUIGBankFramePosition)) + self:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.realm.bankUIGBankFramePosition)) else - self:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.factionrealm.bankUIBankFramePosition)) + self:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.realm.bankUIBankFramePosition)) end end @@ -270,9 +270,9 @@ end function BankUI:resetPoints(container) if bankType == "guild" then - container:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.factionrealm.bankUIGBankFramePosition)) + container:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.realm.bankUIGBankFramePosition)) else - container:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.factionrealm.bankUIBankFramePosition)) + container:SetPoint("BOTTOMLEFT", UIParent, unpack(TSM.db.realm.bankUIBankFramePosition)) end end @@ -337,8 +337,8 @@ function TSM:getBankTabs() end function TSM:ResetBankUIFramePosition() - TSM.db.factionrealm.bankUIGBankFramePosition = { 100, 300 } - TSM.db.factionrealm.bankUIBankFramePosition = { 100, 300 } + TSM.db.realm.bankUIGBankFramePosition = { 100, 300 } + TSM.db.realm.bankUIBankFramePosition = { 100, 300 } if ui then ui:Hide() ui:Show() diff --git a/TradeSkillMaster/TradeSkillMaster.lua b/TradeSkillMaster/TradeSkillMaster.lua index e0bd736..d89076f 100644 --- a/TradeSkillMaster/TradeSkillMaster.lua +++ b/TradeSkillMaster/TradeSkillMaster.lua @@ -121,7 +121,7 @@ local savedDBDefaults = { colorGroupName = true, embeddedTooltip = true, }, - factionrealm = { + realm = { accountKey = nil, characters = {}, syncAccounts = {}, @@ -161,9 +161,9 @@ function TSM:OnInitialize() TSM:RegisterModule() -- create account key for multi-account syncing if necessary - TSM.db.factionrealm.accountKey = TSM.db.factionrealm.accountKey or (GetRealmName() .. random(time())) + TSM.db.realm.accountKey = TSM.db.realm.accountKey or (GetRealmName() .. random(time())) -- add this character to the list of characters on this realm - TSM.db.factionrealm.characters[UnitName("player")] = true + TSM.db.realm.characters[UnitName("player")] = true -- Initialize default design, and apply defaults for any missing DB values. -- NOTE: We allow missing fonts (such as uninstalled SharedMedia fonts), and diff --git a/TradeSkillMaster/Util/Util.lua b/TradeSkillMaster/Util/Util.lua index d0eeecf..f4ef87f 100644 --- a/TradeSkillMaster/Util/Util.lua +++ b/TradeSkillMaster/Util/Util.lua @@ -46,7 +46,7 @@ function TSMAPI:ShowStaticPopupDialog(name) end function TSMAPI:GetCharacters() - return CopyTable(TSM.db.factionrealm.characters) + return CopyTable(TSM.db.realm.characters) end diff --git a/TradeSkillMaster_Accounting/Modules/data.lua b/TradeSkillMaster_Accounting/Modules/data.lua index 5558e07..606dfbc 100644 --- a/TradeSkillMaster_Accounting/Modules/data.lua +++ b/TradeSkillMaster_Accounting/Modules/data.lua @@ -74,9 +74,9 @@ function private:LoadItemRecords(csvData, recordType, key) local saveTimeIndex = 1 local saveTimes if recordType == "sales" then - saveTimes = TSMAPI:SafeStrSplit(TSM.db.factionrealm.saveTimeSales, ",") + saveTimes = TSMAPI:SafeStrSplit(TSM.db.realm.saveTimeSales, ",") elseif recordType == "buys" then - saveTimes = TSMAPI:SafeStrSplit(TSM.db.factionrealm.saveTimeBuys, ",") + saveTimes = TSMAPI:SafeStrSplit(TSM.db.realm.saveTimeBuys, ",") end for _, record in ipairs(select(2, LibParse:CSVDecode(csvData)) or {}) do local itemString = record.itemString @@ -119,20 +119,20 @@ function Data:Load() -- Decode item records TSM.items = {} TSM.cache = {} - private:LoadItemRecords(TSM.db.factionrealm.csvSales, "sales") - private:LoadItemRecords(TSM.db.factionrealm.csvBuys, "buys") - private:LoadItemRecords(TSM.db.factionrealm.csvCancelled, "auctions", "Cancel") - private:LoadItemRecords(TSM.db.factionrealm.csvExpired, "auctions", "Expire") + private:LoadItemRecords(TSM.db.realm.csvSales, "sales") + private:LoadItemRecords(TSM.db.realm.csvBuys, "buys") + private:LoadItemRecords(TSM.db.realm.csvCancelled, "auctions", "Cancel") + private:LoadItemRecords(TSM.db.realm.csvExpired, "auctions", "Expire") -- Decode money records TSM.money = {} - private:LoadMoneyRecords(TSM.db.factionrealm.csvIncome, "income") - private:LoadMoneyRecords(TSM.db.factionrealm.csvExpense, "expense") + private:LoadMoneyRecords(TSM.db.realm.csvIncome, "income") + private:LoadMoneyRecords(TSM.db.realm.csvExpense, "expense") -- Decode the gold log - for player, data in pairs(TSM.db.factionrealm.goldLog) do + for player, data in pairs(TSM.db.realm.goldLog) do if type(data) == "string" then - TSM.db.factionrealm.goldLog[player] = select(2, LibParse:CSVDecode(data)) + TSM.db.realm.goldLog[player] = select(2, LibParse:CSVDecode(data)) end end Data:SetupDataTracking() @@ -534,13 +534,13 @@ end -- returns a formatted time in the format that the user has selected function private:GetFormattedTime(rTime) - if TSM.db.factionrealm.timeFormat == "ago" then + if TSM.db.realm.timeFormat == "ago" then return format(L["%s ago"], SecondsToTime(time() - rTime) or "?") - elseif TSM.db.factionrealm.timeFormat == "usdate" then + elseif TSM.db.realm.timeFormat == "usdate" then return date("%m/%d/%y %H:%M", rTime) - elseif TSM.db.factionrealm.timeFormat == "eudate" then + elseif TSM.db.realm.timeFormat == "eudate" then return date("%d/%m/%y %H:%M", rTime) - elseif TSM.db.factionrealm.timeFormat == "aidate" then + elseif TSM.db.realm.timeFormat == "aidate" then return date("%y/%m/%d %H:%M", rTime) end end @@ -559,7 +559,7 @@ function private:IsItemFiltered(itemString, filters) return true end - if not TSM.db.factionrealm.displayGreys and rarity == 0 then + if not TSM.db.realm.displayGreys and rarity == 0 then return true end @@ -578,7 +578,7 @@ function private:IsRecordFiltered(record, filters) if filters.otherPlayer and record.otherPlayer ~= filters.otherPlayer then return true end - if not TSM.db.factionrealm.displayTransfers and record.key == "Transfer" then + if not TSM.db.realm.displayTransfers and record.key == "Transfer" then return true end if filters.time and floor(record.time/SECONDS_PER_DAY) < (floor(time()/SECONDS_PER_DAY) - filters.time) then @@ -684,7 +684,7 @@ function private:GetItemSummaryData(filters, includeProfit) if isValidItem then itemData[itemString] = {buyNum=buyNum, sellNum=sellNum, profit=profit, profitText=profitText} - if TSM.db.factionrealm.priceFormat == "total" then + if TSM.db.realm.priceFormat == "total" then itemData[itemString].avgSell = sellNum > 0 and sellTotal or 0 itemData[itemString].avgBuy = buyNum > 0 and buyTotal or 0 else @@ -741,7 +741,7 @@ function Data.GetItemSummarySTData(filters) local stData = {} for itemString, data in pairs(itemData) do local name = TSM.items[itemString].name - local marketValue = TSMAPI:GetItemValue(itemString, TSM.db.factionrealm.mvSource) + local marketValue = TSMAPI:GetItemValue(itemString, TSM.db.realm.mvSource) local row = { cols = { { @@ -1169,7 +1169,7 @@ do end local function onChatMsg(_, msg) - if not TSM.db.factionrealm.trackTrades then return + if not TSM.db.realm.trackTrades then return end if msg == ERR_TRADE_COMPLETE and tradeInfo then -- trade went through @@ -1223,7 +1223,7 @@ do Data:InsertItemBuyRecord(info.itemString, "Trade", info.count, info.price, tradeInfo.target.name) end end - if TSM.db.factionrealm.autoTrackTrades then + if TSM.db.realm.autoTrackTrades then InsertTradeRecord() else StaticPopupDialogs["TSMAccountingOnTrade"] = { @@ -1254,8 +1254,8 @@ function Data:LogGold() if not player then return end lastTrackMinute = currentMinute - TSM.db.factionrealm.goldLog[player] = TSM.db.factionrealm.goldLog[player] or {} - local goldLog = TSM.db.factionrealm.goldLog[player] + TSM.db.realm.goldLog[player] = TSM.db.realm.goldLog[player] or {} + local goldLog = TSM.db.realm.goldLog[player] local currentGold = TSM:Round(GetMoney(), COPPER_PER_GOLD * 1000) if #goldLog > 0 and currentGold == goldLog[#goldLog].copper then goldLog[#goldLog].endMinute = currentMinute diff --git a/TradeSkillMaster_Accounting/Modules/gui.lua b/TradeSkillMaster_Accounting/Modules/gui.lua index f99a724..a5f11a9 100644 --- a/TradeSkillMaster_Accounting/Modules/gui.lua +++ b/TradeSkillMaster_Accounting/Modules/gui.lua @@ -224,7 +224,7 @@ function GUI:DrawRevenueTab(container) private:CreateScrollingTable(self, "income", TSM.Data.GetIncomeSTData, ITEM_MONEY_ST_COLS) elseif value == 3 then GUI:CreateFiltersWidgetsItem(self, "resale", {"Auction", "COD", "Trade", "Vendor"}) - local stCols = TSM.db.factionrealm.priceFormat == "avg" and ITEM_RESALE_ST_COLS_AVG or ITEM_RESALE_ST_COLS_TOTAL + local stCols = TSM.db.realm.priceFormat == "avg" and ITEM_RESALE_ST_COLS_AVG or ITEM_RESALE_ST_COLS_TOTAL private:CreateScrollingTable(self, "resale", TSM.Data.GetResaleSTData, stCols, tabNum, value) end tabGroup.children[1]:DoLayout() @@ -287,7 +287,7 @@ end function GUI:DrawItemSummary(container) GUI:CreateFiltersWidgetsItem(container, "itemSummary", {"Auction", "COD", "Trade", "Vendor"}) - local stCols = TSM.db.factionrealm.priceFormat == "avg" and ITEM_SUMMARY_ST_COLS_AVG or ITEM_SUMMARY_ST_COLS_TOTAL + local stCols = TSM.db.realm.priceFormat == "avg" and ITEM_SUMMARY_ST_COLS_AVG or ITEM_SUMMARY_ST_COLS_TOTAL private:CreateScrollingTable(container, "itemSummary", TSM.Data.GetItemSummarySTData, stCols, 4) end @@ -824,7 +824,7 @@ function private:GetGoldGraphSumData() local currentMinute = floor(time() / 60) local players = {} local starts = {} - for _, playerData in pairs(TSM.db.factionrealm.goldLog) do + for _, playerData in pairs(TSM.db.realm.goldLog) do if #playerData > 2 then local data = CopyTable(playerData) for i=1, #data do @@ -885,17 +885,17 @@ function private:GetGoldGraphSumData() end function GUI:DrawGoldGraph(container) - TSM.db.factionrealm.goldGraphCharacter = TSM.db.factionrealm.goldGraphCharacter or UnitName("player") - local player = TSM.db.factionrealm.goldGraphCharacter + TSM.db.realm.goldGraphCharacter = TSM.db.realm.goldGraphCharacter or UnitName("player") + local player = TSM.db.realm.goldGraphCharacter local data, minX, maxX, minY, maxY if player == "" then data, minX, maxX, minY, maxY = private:GetGoldGraphSumData() else - data, minX, maxX, minY, maxY = private:GetGoldGraphPoints(TSM.db.factionrealm.goldLog[player]) + data, minX, maxX, minY, maxY = private:GetGoldGraphPoints(TSM.db.realm.goldLog[player]) end local dropdownList = {[""]="Sum of All Characters"} - for player in pairs(TSM.db.factionrealm.goldLog) do + for player in pairs(TSM.db.realm.goldLog) do dropdownList[player] = player end @@ -916,7 +916,7 @@ function GUI:DrawGoldGraph(container) { type = "Dropdown", label = "Character to Graph", - settingInfo = {TSM.db.factionrealm, "goldGraphCharacter"}, + settingInfo = {TSM.db.realm, "goldGraphCharacter"}, relativeWidth = 0.5, list = dropdownList, callback = function() container:ReloadTab() end, @@ -930,10 +930,10 @@ function GUI:DrawGoldGraph(container) end local startDate, endDate - if TSM.db.factionrealm.timeFormat == "eudate" then + if TSM.db.realm.timeFormat == "eudate" then startDate = date("%d/%m/%y %H:%M", minX * 60) endDate = date("%d/%m/%y %H:%M", maxX * 60) - elseif TSM.db.factionrealm.timeFormat == "aidate" then + elseif TSM.db.realm.timeFormat == "aidate" then startDate = date("%y/%m/%d %H:%M", minX * 60) endDate = date("%y/%m/%d %H:%M", maxX * 60) else @@ -958,7 +958,7 @@ function GUI:DrawGoldGraph(container) { type = "Dropdown", label = L["Character to Graph"], - settingInfo = {TSM.db.factionrealm, "goldGraphCharacter"}, + settingInfo = {TSM.db.realm, "goldGraphCharacter"}, relativeWidth = 0.5, list = dropdownList, callback = function() container:ReloadTab() end, @@ -1024,7 +1024,7 @@ function GUI:DrawOptions(container) { type = "Dropdown", label = L["Time Format"], - settingInfo = {TSM.db.factionrealm, "timeFormat"}, + settingInfo = {TSM.db.realm, "timeFormat"}, relativeWidth = 0.5, list = { ["ago"] = L["_ Hr _ Min ago"], ["usdate"] = L["MM/DD/YY HH:MM"], ["aidate"] = L["YY/MM/DD HH:MM"], ["eudate"] = L["DD/MM/YY HH:MM"] }, tooltip = L["Select what format Accounting should use to display times in applicable screens."], @@ -1032,7 +1032,7 @@ function GUI:DrawOptions(container) { type = "Dropdown", label = L["Market Value Source"], - settingInfo = {TSM.db.factionrealm, "mvSource"}, + settingInfo = {TSM.db.realm, "mvSource"}, relativeWidth = 0.49, list = mvSources, tooltip = L["Select where you want Accounting to get market value info from to show in applicable screens."], @@ -1040,7 +1040,7 @@ function GUI:DrawOptions(container) { type = "Dropdown", label = "Items/Resale Price Format", - settingInfo = {TSM.db.factionrealm, "priceFormat"}, + settingInfo = {TSM.db.realm, "priceFormat"}, relativeWidth = 0.49, list = { ["avg"] = L["Per Item"], ["total"] = L["Total Value"] }, tooltip = L["Select how you would like prices to be shown in the \"Items\" and \"Resale\" tabs; either average price per item or total value."], @@ -1052,33 +1052,33 @@ function GUI:DrawOptions(container) { type = "CheckBox", label = L["Track sales/purchases via trade"], - settingInfo = { TSM.db.factionrealm, "trackTrades" }, + settingInfo = { TSM.db.realm, "trackTrades" }, callback = function() container:ReloadTab() end, tooltip = L["If checked, whenever you buy or sell any quantity of a single item via trade, Accounting will display a popup asking if you want it to record that transaction."], }, { type = "CheckBox", label = L["Don't prompt to record trades"], - settingInfo = { TSM.db.factionrealm, "autoTrackTrades" }, - disabled = not TSM.db.factionrealm.trackTrades, + settingInfo = { TSM.db.realm, "autoTrackTrades" }, + disabled = not TSM.db.realm.trackTrades, tooltip = L["If checked, you won't get a popup confirmation about whether or not to track trades."], }, { type = "CheckBox", label = L["Display Grey Items in Sales"], - settingInfo = { TSM.db.factionrealm, "displayGreys" }, + settingInfo = { TSM.db.realm, "displayGreys" }, tooltip = L["If checked, poor quality items will be shown in sales data. They will still be included in gold earned totals on the summary tab regardless of this setting"], }, { type = "CheckBox", label = L["Display Money Transfers in Income/Expense/Summary"], - settingInfo = { TSM.db.factionrealm, "displayTransfers" }, + settingInfo = { TSM.db.realm, "displayTransfers" }, tooltip = L["If checked, Money Transfers will be included in income / expense and summary. Accounting will still track these if disabled but will not show them."], }, { type = "CheckBox", label = L["Use smart average for purchase price"], - settingInfo = { TSM.db.factionrealm, "smartBuyPrice" }, + settingInfo = { TSM.db.realm, "smartBuyPrice" }, tooltip = L["If checked, the average purchase price that shows in the tooltip will be the average price for the most recent X you have purchased, where X is the number you have in your bags / bank / gbank using data from the ItemTracker module. Otherwise, a simple average of all purchases will be used."], }, }, @@ -1131,34 +1131,34 @@ function GUI:LoadTooltipOptions(container) { type = "CheckBox", label = L["Show sale info in item tooltips"], - settingInfo = { TSM.db.factionrealm.tooltip, "sale" }, + settingInfo = { TSM.db.realm.tooltip, "sale" }, tooltip = L["If checked, the number you have sold and the average sale price will show up in an item's tooltip."], }, { type = "CheckBox", label = L["Show Expired Auctions as Failed Auctions since Last Sale in item tooltips"], - settingInfo = { TSM.db.factionrealm, "expiredAuctions" }, + settingInfo = { TSM.db.realm, "expiredAuctions" }, relativeWidth = 1, tooltip = L["If checked, the number of expired auctions since the last sale will show as up as failed auctions in an item's tooltip. if no sales then the total number of expired auctions will be shown."], }, { type = "CheckBox", label = L["Show Cancelled Auctions as Failed Auctions since Last Sale in item tooltips"], - settingInfo = { TSM.db.factionrealm, "cancelledAuctions" }, + settingInfo = { TSM.db.realm, "cancelledAuctions" }, relativeWidth = 1, tooltip = L["If checked, the number of cancelled auctions since the last sale will show as up as failed auctions in an item's tooltip. if no sales then the total number of cancelled auctions will be shown."], }, { type = "CheckBox", label = L["Show Sale Rate in item tooltips"], - settingInfo = { TSM.db.factionrealm, "saleRate" }, + settingInfo = { TSM.db.realm, "saleRate" }, relativeWidth = 1, tooltip = L["If checked, the sale rate will be shown in item tooltips. sale rate is calculated as total sold / (total sold + total expired + total cancelled)."], }, { type = "CheckBox", label = L["Show purchase info in item tooltips"], - settingInfo = { TSM.db.factionrealm.tooltip, "purchase" }, + settingInfo = { TSM.db.realm.tooltip, "purchase" }, tooltip = L["If checked, the number you have purchased and the average purchase price will show up in an item's tooltip."], }, }, diff --git a/TradeSkillMaster_Accounting/TradeSkillMaster_Accounting.lua b/TradeSkillMaster_Accounting/TradeSkillMaster_Accounting.lua index 0f79296..f8f6e36 100644 --- a/TradeSkillMaster_Accounting/TradeSkillMaster_Accounting.lua +++ b/TradeSkillMaster_Accounting/TradeSkillMaster_Accounting.lua @@ -25,7 +25,7 @@ local savedDBDefaults = { itemStrings = {}, infoID = 0, }, - factionrealm = { + realm = { csvSales = "", csvBuys = "", csvIncome = "", @@ -64,25 +64,25 @@ function TSM:OnInitialize() TSM:RegisterModule() -- clear out 1.x data - if TSM.db.factionrealm.itemData then - TSM.db.factionrealm.itemData = nil + if TSM.db.realm.itemData then + TSM.db.realm.itemData = nil end - if TSM.db.factionrealm.data then - TSM.db.factionrealm.csvSales = TSM.db.factionrealm.data.sales - TSM.db.factionrealm.csvBuys = TSM.db.factionrealm.data.buys - TSM.db.factionrealm.data = nil + if TSM.db.realm.data then + TSM.db.realm.csvSales = TSM.db.realm.data.sales + TSM.db.realm.csvBuys = TSM.db.realm.data.buys + TSM.db.realm.data = nil end - for key, timestamp in pairs(TSM.db.factionrealm.trimmed) do + for key, timestamp in pairs(TSM.db.realm.trimmed) do TSM:Printf(L["|cffff0000IMPORTANT:|r When TSM_Accounting last saved data for this realm, it was too big for WoW to handle, so old data was automatically trimmed in order to avoid corruption of the saved variables. The last %s of %s data has been preserved."], SecondsToTime(time()-timestamp), key) end - TSM.db.factionrealm.trimmed = {} + TSM.db.realm.trimmed = {} TSM.Data:Load() -- fix issues in gold log - for player, playerData in pairs(TSM.db.factionrealm.goldLog) do + for player, playerData in pairs(TSM.db.realm.goldLog) do for i=#playerData, 1, -1 do local data = playerData[i] data.startMinute = floor(data.startMinute) @@ -135,7 +135,7 @@ end local tooltipCache = {buys={}, sales={}} function TSM:GetTooltip(itemString) - if not (TSM.db.factionrealm.tooltip.sale or TSM.db.factionrealm.tooltip.purchase) then return end + if not (TSM.db.realm.tooltip.sale or TSM.db.realm.tooltip.purchase) then return end if not TSM.items[itemString] then return end TSM.cache[itemString] = TSM.cache[itemString] or {} local text = {} @@ -145,7 +145,7 @@ function TSM:GetTooltip(itemString) local numSaleRecords = #TSM.items[itemString].sales local lastSold = numSaleRecords > 0 and TSM.items[itemString].sales[numSaleRecords].time or 0 local moneyCoinsTooltip = TSMAPI:GetMoneyCoinsTooltip() - if TSM.db.factionrealm.tooltip.sale and numSaleRecords > 0 then + if TSM.db.realm.tooltip.sale and numSaleRecords > 0 then local totalSalePrice = avgSalePrice * totalSaleNum if IsShiftKeyDown() then @@ -183,7 +183,7 @@ function TSM:GetTooltip(itemString) tinsert(text, { left = " " .. L["Sale Rate:"], right = "|cffffffff" .. saleRate }) end - if TSM.db.factionrealm.tooltip.purchase and TSM.items[itemString] and #TSM.items[itemString].buys > 0 then + if TSM.db.realm.tooltip.purchase and TSM.items[itemString] and #TSM.items[itemString].buys > 0 then local lastPurchased = TSM.items[itemString].buys[#TSM.items[itemString].buys].time local totalPrice, totalNum = 0, 0 for _, record in ipairs(TSM.items[itemString].buys) do @@ -288,16 +288,16 @@ function TSM:OnTSMDBShutdown() while (#data > floor(MAX_CSV_RECORDS*0.9)) do tremove(data) end - TSM.db.factionrealm.trimmed[key] = data[#data].time + TSM.db.realm.trimmed[key] = data[#data].time end end - TSM.db.factionrealm.saveTimeSales = table.concat(saveTimeSales, ",") - TSM.db.factionrealm.saveTimeBuys = table.concat(saveTimeBuys, ",") - TSM.db.factionrealm.csvSales = LibParse:CSVEncode(TSM.SELL_KEYS, sales) - TSM.db.factionrealm.csvBuys = LibParse:CSVEncode(TSM.BUY_KEYS, buys) - TSM.db.factionrealm.csvCancelled = LibParse:CSVEncode(TSM.CANCELLED_KEYS, cancels) - TSM.db.factionrealm.csvExpired = LibParse:CSVEncode(TSM.EXPIRED_KEYS, expires) + TSM.db.realm.saveTimeSales = table.concat(saveTimeSales, ",") + TSM.db.realm.saveTimeBuys = table.concat(saveTimeBuys, ",") + TSM.db.realm.csvSales = LibParse:CSVEncode(TSM.SELL_KEYS, sales) + TSM.db.realm.csvBuys = LibParse:CSVEncode(TSM.BUY_KEYS, buys) + TSM.db.realm.csvCancelled = LibParse:CSVEncode(TSM.CANCELLED_KEYS, cancels) + TSM.db.realm.csvExpired = LibParse:CSVEncode(TSM.EXPIRED_KEYS, expires) -- process income local income = {} @@ -309,7 +309,7 @@ function TSM:OnTSMDBShutdown() tinsert(income, record) end end - TSM.db.factionrealm.csvIncome = LibParse:CSVEncode(TSM.INCOME_KEYS, income) + TSM.db.realm.csvIncome = LibParse:CSVEncode(TSM.INCOME_KEYS, income) -- process expense local expense = {} @@ -327,13 +327,13 @@ function TSM:OnTSMDBShutdown() tinsert(expense, record) end end - TSM.db.factionrealm.csvExpense = LibParse:CSVEncode(TSM.EXPENSE_KEYS, expense) + TSM.db.realm.csvExpense = LibParse:CSVEncode(TSM.EXPENSE_KEYS, expense) -- process gold log TSM.Data:LogGold() - for player, data in pairs(TSM.db.factionrealm.goldLog) do + for player, data in pairs(TSM.db.realm.goldLog) do if type(data) == "table" then - TSM.db.factionrealm.goldLog[player] = LibParse:CSVEncode(TSM.GOLD_LOG_KEYS, data) + TSM.db.realm.goldLog[player] = LibParse:CSVEncode(TSM.GOLD_LOG_KEYS, data) end end end @@ -362,9 +362,9 @@ end local function GetAuctionStats(itemString, minTime) local cancel, expire, total = 0, 0, 0 for _, record in ipairs(TSM.items[itemString].auctions) do - if record.key == "Cancel" and TSM.db.factionrealm.cancelledAuctions and record.time > minTime then + if record.key == "Cancel" and TSM.db.realm.cancelledAuctions and record.time > minTime then cancel = cancel + record.quantity - elseif record.key == "Expire" and TSM.db.factionrealm.expiredAuctions and record.time > minTime then + elseif record.key == "Expire" and TSM.db.realm.expiredAuctions and record.time > minTime then expire = expire + record.quantity end total = total + record.quantity @@ -441,7 +441,7 @@ local function GetAvgerageBuyPrice(itemString, noBaseItem) if not (TSM.items[itemString] and #TSM.items[itemString].buys > 0) then return end local itemCount = 0 - if TSM.db.factionrealm.smartBuyPrice then + if TSM.db.realm.smartBuyPrice then local player, alts = TSMAPI:ModuleAPI("ItemTracker", "playertotal", itemString) if not player then alts = nil diff --git a/TradeSkillMaster_AuctionDB/Modules/Scanning.lua b/TradeSkillMaster_AuctionDB/Modules/Scanning.lua index d2ec6b1..3e4e76f 100644 --- a/TradeSkillMaster_AuctionDB/Modules/Scanning.lua +++ b/TradeSkillMaster_AuctionDB/Modules/Scanning.lua @@ -96,7 +96,7 @@ local function FullScanCallback(event, ...) -- It would be like trying to predict "the total download-time of a -- file that keeps fluctuating between fast and slow speeds". The -- best we can do is estimate based on current and previous speeds. - local last_scan_seconds_per_page = TSM.db.factionrealm.lastScanSecondsPerPage + local last_scan_seconds_per_page = TSM.db.realm.lastScanSecondsPerPage if last_scan_seconds_per_page and last_scan_seconds_per_page > 0 then -- TSM:Print(format("Read from DB: %f (Our unweighted estimate: %f)", last_scan_seconds_per_page, seconds_per_page)) -- DEBUG seconds_per_page = (seconds_per_page * progress_float) + (last_scan_seconds_per_page * remaining_float) @@ -143,7 +143,7 @@ local function FullScanCallback(event, ...) -- with incorrect, partial-scan estimates, since most servers heavily -- slow down their page requests over time. The completed scan is the truth. if Scan.fullScanSecondsPerPage > 0 then - TSM.db.factionrealm.lastScanSecondsPerPage = Scan.fullScanSecondsPerPage + TSM.db.realm.lastScanSecondsPerPage = Scan.fullScanSecondsPerPage end -- Calculate how many seconds the completed "Full Scan" took. @@ -333,7 +333,7 @@ function Scan.ProcessGetAllScan(self) end -- Process the collected "GetAll" auction data as a new "complete scan" with today's date. - TSM.db.factionrealm.lastCompleteScan = time() + TSM.db.realm.lastCompleteScan = time() TSM.Data:ProcessData(data, nil, verifyNewAlgorithm) -- Show GUI progress while we're waiting for the processing. @@ -569,7 +569,7 @@ function Scan:ProcessScanData(scanData) -- Mark the collected auction data as a new "complete scan" with today's date, -- but only if this was a normal "Full Scan" (not just a "TSM item group" scan). if Scan.isScanning ~= "group" then - TSM.db.factionrealm.lastCompleteScan = time() + TSM.db.realm.lastCompleteScan = time() end -- Process the collected auction data. @@ -618,6 +618,6 @@ function Scan:ProcessImportedData(auctionData) end -- Process the imported auction data as a new "complete scan" with today's date. - TSM.db.factionrealm.lastCompleteScan = time() + TSM.db.realm.lastCompleteScan = time() TSM.Data:ProcessData(data, nil, verifyNewAlgorithm) end diff --git a/TradeSkillMaster_AuctionDB/Modules/config.lua b/TradeSkillMaster_AuctionDB/Modules/config.lua index 38f94a6..7da9fd3 100644 --- a/TradeSkillMaster_AuctionDB/Modules/config.lua +++ b/TradeSkillMaster_AuctionDB/Modules/config.lua @@ -130,11 +130,11 @@ function Config:LoadSearch(container) tinsert(classes, "") local lastScanInfo - if TSM.db.factionrealm.lastCompleteScan > 0 then - if TSM.db.factionrealm.lastCompleteScan == TSM.db.factionrealm.appDataUpdate then - lastScanInfo = format(L["Last updated from the TSM Application %s ago."], SecondsToTime(time() - TSM.db.factionrealm.appDataUpdate)) + if TSM.db.realm.lastCompleteScan > 0 then + if TSM.db.realm.lastCompleteScan == TSM.db.realm.appDataUpdate then + lastScanInfo = format(L["Last updated from the TSM Application %s ago."], SecondsToTime(time() - TSM.db.realm.appDataUpdate)) else - lastScanInfo = format(L["Last updated from in-game scan %s ago."], SecondsToTime(time() - TSM.db.factionrealm.lastCompleteScan)) + lastScanInfo = format(L["Last updated from in-game scan %s ago."], SecondsToTime(time() - TSM.db.realm.lastCompleteScan)) end else lastScanInfo = L["No scans found."] diff --git a/TradeSkillMaster_AuctionDB/Modules/data.lua b/TradeSkillMaster_AuctionDB/Modules/data.lua index f035581..b1d350b 100644 --- a/TradeSkillMaster_AuctionDB/Modules/data.lua +++ b/TradeSkillMaster_AuctionDB/Modules/data.lua @@ -316,7 +316,7 @@ function Data:ProcessData(scanData, groupItems, verifyNewAlgorithm) -- item contains a "greater than 0" buyout value. That was mostly -- necessary in the past, when TSM sloppily included bid-only items -- in the data, but should no longer be able to happen with our new code! - TSM.data[itemID].lastScan = TSM.db.factionrealm.lastCompleteScan + TSM.data[itemID].lastScan = TSM.db.realm.lastCompleteScan TSM.data[itemID].minBuyout = data.minBuyout > 0 and data.minBuyout or nil TSM.data[itemID].quantity = data.quantity -- Counts all items of all stacks. Data:UpdateMarketValue(TSM.data[itemID]) diff --git a/TradeSkillMaster_AuctionDB/TradeSkillMaster_AuctionDB.lua b/TradeSkillMaster_AuctionDB/TradeSkillMaster_AuctionDB.lua index 82b1956..3ad4f82 100644 --- a/TradeSkillMaster_AuctionDB/TradeSkillMaster_AuctionDB.lua +++ b/TradeSkillMaster_AuctionDB/TradeSkillMaster_AuctionDB.lua @@ -17,7 +17,7 @@ TSM.MAX_AVG_DAY = 1 local SECONDS_PER_DAY = 60 * 60 * 24 local savedDBDefaults = { - factionrealm = { + realm = { appData = {}, scanData = "", time = 0, @@ -50,10 +50,10 @@ function TSM:OnInitialize() -- register this module with TSM TSM:RegisterModule() - TSM.db.factionrealm.time = 10 -- because AceDB won't save if we don't do this... + TSM.db.realm.time = 10 -- because AceDB won't save if we don't do this... TSM.data = {} - TSM:Deserialize(TSM.db.factionrealm.scanData, TSM.data) + TSM:Deserialize(TSM.db.realm.scanData, TSM.data) end -- registers this module with TSM by first setting all fields and then calling TSMAPI:NewModule(). @@ -75,7 +75,7 @@ function TSM:RegisterModule() { key = "lastCompleteScan", callback = TSM.GetLastCompleteScan }, { key = "lastCompleteScanTime", callback = TSM.GetLastCompleteScanTime }, { key = "adbScans", callback = TSM.GetScans }, - { key = "adbOppositeFaction", callback = TSM.GetOppositeFactionData }, + --{ key = "adbOppositeFaction", callback = TSM.GetOppositeFactionData }, } TSM.tooltipOptions = {callback = "Config:LoadTooltipOptions"} TSMAPI:NewModule(TSM) @@ -84,7 +84,7 @@ end function TSM:LoadAuctionData() local function LoadDataThread(self, itemIDs) -- process new items first - for itemID in pairs(TSM.db.factionrealm.appData) do + for itemID in pairs(TSM.db.realm.appData) do if not TSM.data[itemID] then TSM:DecodeItemData(itemID) TSM:ProcessAppData(itemID) @@ -131,12 +131,12 @@ function TSM:LoadAuctionData() end function TSM:ProcessAppData(itemID) - if not TSM.db.factionrealm.appData[itemID] then return end + if not TSM.db.realm.appData[itemID] then return end TSM.data[itemID] = TSM.data[itemID] or {scans = {}, lastScan = 0} local dbData = TSM.data[itemID] local day = TSM.Data:GetDay() - for _, appData in ipairs(TSM.db.factionrealm.appData[itemID]) do + for _, appData in ipairs(TSM.db.realm.appData[itemID]) do local marketValue, minBuyout, scanTime = appData.m, appData.b, appData.t if abs(day - TSM.Data:GetDay(scanTime)) <= TSM.MAX_AVG_DAY then local dayScans = dbData.scans @@ -159,11 +159,12 @@ function TSM:ProcessAppData(itemID) end end TSM.Data:UpdateMarketValue(dbData) - TSM.db.factionrealm.appData[itemID] = nil + TSM.db.realm.appData[itemID] = nil end function TSM:OnEnable() local function DecodeJSON(data) + print(data) data = gsub(data, ":", "=") data = gsub(data, "\"horde\"", "horde") data = gsub(data, "\"alliance\"", "alliance") @@ -193,7 +194,7 @@ function TSM:OnEnable() r = strlower(r) f = strlower(f) local scanTime = tonumber(t) - if realm == r and (faction == f or f == "both") and scanTime > TSM.db.factionrealm.appDataUpdate and abs(TSM.Data:GetDay() - TSM.Data:GetDay(scanTime)) <= TSM.MAX_AVG_DAY then + if realm == r and (faction == f or f == "both") and scanTime > TSM.db.realm.appDataUpdate and abs(TSM.Data:GetDay() - TSM.Data:GetDay(scanTime)) <= TSM.MAX_AVG_DAY then local importData = DecodeJSON(appScanData)[faction] if importData then for itemID, data in pairs(importData) do @@ -202,8 +203,8 @@ function TSM:OnEnable() data.b = tonumber(data.b) data.t = scanTime if itemID and data.m and data.b then - TSM.db.factionrealm.appData[itemID] = TSM.db.factionrealm.appData[itemID] or {} - tinsert(TSM.db.factionrealm.appData[itemID], data) + TSM.db.realm.appData[itemID] = TSM.db.realm.appData[itemID] or {} + tinsert(TSM.db.realm.appData[itemID], data) end end maxScanTime = max(maxScanTime, scanTime) @@ -213,8 +214,8 @@ function TSM:OnEnable() end if numNewScans > 0 then - TSM.db.factionrealm.appDataUpdate = maxScanTime - TSM.db.factionrealm.lastCompleteScan = TSM.db.factionrealm.appDataUpdate + TSM.db.realm.appDataUpdate = maxScanTime + TSM.db.realm.lastCompleteScan = TSM.db.realm.appDataUpdate TSM:Printf(L["Imported %s scans worth of new auction data!"], numNewScans) end @@ -225,7 +226,7 @@ function TSM:OnEnable() end function TSM:OnTSMDBShutdown() - TSM.db.factionrealm.time = 0 + TSM.db.realm.time = 0 TSM:Serialize(TSM.data) end @@ -310,8 +311,8 @@ function TSM:Reset() whileDead = true, hideOnEscape = true, OnAccept = function() - TSM.db.factionrealm.lastCompleteScan = 0 - TSM.db.factionrealm.appDataUpdate = 0 + TSM.db.realm.lastCompleteScan = 0 + TSM.db.realm.appDataUpdate = 0 for i in pairs(TSM.data) do TSM.data[i] = nil end @@ -456,7 +457,7 @@ function TSM:Serialize() tinsert(results, "?" .. encode(itemID) .. "," .. data.encoded) end end - TSM.db.factionrealm.scanData = table.concat(results) + TSM.db.realm.scanData = table.concat(results) end function TSM:Deserialize(data, resultTbl, fullyDecode) @@ -496,7 +497,7 @@ function TSM:GetLastCompleteScan() local lastScan = {} for itemID, data in pairs(TSM.data) do TSM:DecodeItemData(itemID) - if data.lastScan == TSM.db.factionrealm.lastCompleteScan then + if data.lastScan == TSM.db.realm.lastCompleteScan then lastScan[itemID] = { marketValue = data.marketValue, minBuyout = data.minBuyout } end end @@ -505,7 +506,7 @@ function TSM:GetLastCompleteScan() end function TSM:GetLastCompleteScanTime() - return TSM.db.factionrealm.lastCompleteScan + return TSM.db.realm.lastCompleteScan end function TSM:GetScans(link) @@ -521,7 +522,7 @@ end function TSM:GetOppositeFactionData() local realm = GetRealmName() - local faction = UnitFactionGroup("player") + local faction = "Ascension" -- UnitFactionGroup("player") if faction == "Horde" then faction = "Alliance" elseif faction == "Alliance" then @@ -530,7 +531,7 @@ function TSM:GetOppositeFactionData() return end - local data = TSM.db.sv.factionrealm[faction .. " - " .. realm] + local data = TSM.db.sv.realm[faction .. " - " .. realm] if not data or type(data.scanData) ~= "string" then return end local result = {} diff --git a/TradeSkillMaster_Auctioning/TradeSkillMaster_Auctioning.lua b/TradeSkillMaster_Auctioning/TradeSkillMaster_Auctioning.lua index 0fa5a00..b1b4bb3 100644 --- a/TradeSkillMaster_Auctioning/TradeSkillMaster_Auctioning.lua +++ b/TradeSkillMaster_Auctioning/TradeSkillMaster_Auctioning.lua @@ -30,7 +30,7 @@ local savedDBDefaults = { priceColumn = 1, tooltip = true, }, - factionrealm = { + realm = { player = {}, whitelist = {}, lastSoldFilter = 0, @@ -47,7 +47,7 @@ function TSM:OnInitialize() end -- Add this character to the alt list so it's not undercut by the player - TSM.db.factionrealm.player[UnitName("player")] = true + TSM.db.realm.player[UnitName("player")] = true -- register this module with TSM TSM:RegisterModule() @@ -117,7 +117,7 @@ TSM.operationDefaults = { matchStackSize = nil, ignoreLowDuration = 0, ignorePlayer = {}, - ignoreFactionrealm = {}, + ignorerealm = {}, relationships = {}, -- post stackSize = 1, diff --git a/TradeSkillMaster_Auctioning/modules/Options.lua b/TradeSkillMaster_Auctioning/modules/Options.lua index fb4a2ac..0ae3349 100644 --- a/TradeSkillMaster_Auctioning/modules/Options.lua +++ b/TradeSkillMaster_Auctioning/modules/Options.lua @@ -226,19 +226,19 @@ function Options:DrawWhitelistSettings(container) value = string.trim(strlower(value or "")) if value == "" then return TSM:Print(L["No name entered."]) end - if TSM.db.factionrealm.whitelist[value] then - TSM:Printf(L["The player \"%s\" is already on your whitelist."], TSM.db.factionrealm.whitelist[value]) + if TSM.db.realm.whitelist[value] then + TSM:Printf(L["The player \"%s\" is already on your whitelist."], TSM.db.realm.whitelist[value]) return end - for player in pairs(TSM.db.factionrealm.player) do + for player in pairs(TSM.db.realm.player) do if strlower(player) == value then TSM:Printf(L["You do not need to add \"%s\", alts are whitelisted automatically."], player) return end end - TSM.db.factionrealm.whitelist[strlower(value)] = value + TSM.db.realm.whitelist[strlower(value)] = value container:SelectByPath(2) end @@ -292,11 +292,11 @@ function Options:DrawWhitelistSettings(container) }, } - for name in pairs(TSM.db.factionrealm.whitelist) do + for name in pairs(TSM.db.realm.whitelist) do tinsert(page[1].children[3].children, { type = "Label", - text = TSM.db.factionrealm.whitelist[name], + text = TSM.db.realm.whitelist[name], fontObject = GameFontNormal, }) tinsert(page[1].children[3].children, @@ -305,7 +305,7 @@ function Options:DrawWhitelistSettings(container) text = L["Delete"], relativeWidth = 0.3, callback = function(self) - TSM.db.factionrealm.whitelist[name] = nil + TSM.db.realm.whitelist[name] = nil container:SelectByPath(2) end, }) diff --git a/TradeSkillMaster_Auctioning/modules/ResetScan.lua b/TradeSkillMaster_Auctioning/modules/ResetScan.lua index a3ead4a..3fed8bb 100644 --- a/TradeSkillMaster_Auctioning/modules/ResetScan.lua +++ b/TradeSkillMaster_Auctioning/modules/ResetScan.lua @@ -524,7 +524,7 @@ function Reset:GetAuctionSTRow(record, index) local function GetSellerText(name) if TSMAPI:IsPlayer(name) then return "|cff99ffff" .. name .. "|r" - elseif TSM.db.factionrealm.whitelist[strlower(name)] then + elseif TSM.db.realm.whitelist[strlower(name)] then return name .. " |cffff2222(" .. L["Whitelist"] .. ")|r" end diff --git a/TradeSkillMaster_Auctioning/modules/ScanUtil.lua b/TradeSkillMaster_Auctioning/modules/ScanUtil.lua index ecae6e1..0b2e502 100644 --- a/TradeSkillMaster_Auctioning/modules/ScanUtil.lua +++ b/TradeSkillMaster_Auctioning/modules/ScanUtil.lua @@ -89,7 +89,7 @@ function Scan:ProcessItem(itemString, auctionItem) if not itemString or not auctionItem then return end auctionItem:SetRecordParams({"GetItemBuyout", "GetItemDisplayedBid", "seller", "count"}) auctionItem:PopulateCompactRecords() - auctionItem:SetAlts(TSM.db.factionrealm.player) + auctionItem:SetAlts(TSM.db.realm.player) if #auctionItem.records > 0 then auctionItem:SetMarketValue(TSMAPI:GetItemValue(itemString, "DBMarket")) Scan.auctionData[itemString] = auctionItem @@ -169,7 +169,7 @@ function Scan:GetLowestAuction(auctionItem, operation) end end end - if owner == "?" and next(TSM.db.factionrealm.whitelist) then + if owner == "?" and next(TSM.db.realm.whitelist) then invalidSellerEntry = true end @@ -182,7 +182,7 @@ function Scan:GetLowestAuction(auctionItem, operation) local recordBuyout = record:GetItemBuyout() if not record:IsPlayer() and recordBuyout and recordBuyout == buyout then isPlayer = nil - if not TSM.db.factionrealm.whitelist[strlower(record.seller)] then + if not TSM.db.realm.whitelist[strlower(record.seller)] then isWhitelist = nil end @@ -192,7 +192,7 @@ function Scan:GetLowestAuction(auctionItem, operation) end end end - if owner == "?" and next(TSM.db.factionrealm.whitelist) then + if owner == "?" and next(TSM.db.realm.whitelist) then invalidSellerEntry = true end diff --git a/TradeSkillMaster_Crafting/Modules/Cost.lua b/TradeSkillMaster_Crafting/Modules/Cost.lua index 0cf0971..25b67b0 100644 --- a/TradeSkillMaster_Crafting/Modules/Cost.lua +++ b/TradeSkillMaster_Crafting/Modules/Cost.lua @@ -15,7 +15,7 @@ local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Crafting") -- loa local currentVisited = {} local cache = { time = 0 } function Cost:GetMatCost(itemString) - local mat = TSM.db.factionrealm.mats[itemString] + local mat = TSM.db.realm.mats[itemString] if not mat then return end if cache.time < (time() - 1) then @@ -37,8 +37,8 @@ end function Cost:GetCraftValue(itemString) if type(itemString) == "number" then -- we got passed a spell - if not TSM.db.factionrealm.crafts[itemString] then return end - itemString = TSM.db.factionrealm.crafts[itemString].itemID + if not TSM.db.realm.crafts[itemString] then return end + itemString = TSM.db.realm.crafts[itemString].itemID end if type(itemString) ~= "string" then return end local operation = TSMAPI:GetItemOperation(itemString, "Crafting") @@ -56,7 +56,7 @@ function Cost:GetCraftCost(itemID) spellIDs = TSM.craftReverseLookup[TSMAPI:GetBaseItemstring(itemID)] elseif type(itemID) == "number" then -- we got passed a spell - if TSM.db.factionrealm.crafts[itemID] then + if TSM.db.realm.crafts[itemID] then spellIDs = { itemID } end end @@ -64,20 +64,20 @@ function Cost:GetCraftCost(itemID) local lowestCost for _, spellID in ipairs(spellIDs) do - local craft = TSM.db.factionrealm.crafts[spellID] + local craft = TSM.db.realm.crafts[spellID] local cost, costIsValid = 0, true - if #spellIDs >= 2 and TSM.db.global.ignoreCDCraftCost and TSM.db.factionrealm.crafts[spellID].hasCD then + if #spellIDs >= 2 and TSM.db.global.ignoreCDCraftCost and TSM.db.realm.crafts[spellID].hasCD then costIsValid = false end for matID, matQuantity in pairs(craft.mats) do local MatName = GetItemInfo(matID) - if MatName ~= nil and strfind(MatName, "Vellum") then - local NewItemString = CheapestVellum(matID) - if matID ~= NewItemString then - matID = NewItemString - end - end + -- if MatName ~= nil and strfind(MatName, "Vellum") then + -- local NewItemString = CheapestVellum(matID) + -- if matID ~= NewItemString then + -- matID = NewItemString + -- end + -- end local matCost = Cost:GetMatCost(matID) if not matCost or matCost == 0 then costIsValid = false @@ -119,15 +119,15 @@ function Cost:GetLowestCraftPrices(itemString, intermediate) local lowestCost, cheapestSpellID local soh = "item:76061:0:0:0:0:0:0" -- Spirit of Harmony for _, spellID in ipairs(spellIDs) do - if TSM.db.factionrealm.crafts[spellID] then - if intermediate and (TSM.db.factionrealm.crafts[spellID].mats[soh] or TSM.db.factionrealm.crafts[spellID].hasCD) then + if TSM.db.realm.crafts[spellID] then + if intermediate and (TSM.db.realm.crafts[spellID].mats[soh] or TSM.db.realm.crafts[spellID].hasCD) then break end --exclude spells using SOH or have cooldown from intermediate crafts local cost = Cost:GetCraftCost(spellID) if cost and (not lowestCost or cost < lowestCost) then -- exclude spells with cooldown if option to ignore is enabled or more than one way to craft and not soulbound e.g. BoE if not TSM.db.global.ignoreCDCraftCost then - if TSM.db.factionrealm.crafts[spellID].hasCD then + if TSM.db.realm.crafts[spellID].hasCD then if TSMAPI.SOULBOUND_MATS[itemString] or #spellIDs == 1 then lowestCost = cost cheapestSpellID = spellID @@ -136,7 +136,7 @@ function Cost:GetLowestCraftPrices(itemString, intermediate) lowestCost = cost cheapestSpellID = spellID end - elseif not TSM.db.factionrealm.crafts[spellID].hasCD then + elseif not TSM.db.realm.crafts[spellID].hasCD then lowestCost = cost cheapestSpellID = spellID end diff --git a/TradeSkillMaster_Crafting/Modules/CraftingGUI.lua b/TradeSkillMaster_Crafting/Modules/CraftingGUI.lua index 5c439b9..727f159 100644 --- a/TradeSkillMaster_Crafting/Modules/CraftingGUI.lua +++ b/TradeSkillMaster_Crafting/Modules/CraftingGUI.lua @@ -85,6 +85,7 @@ function GUI:OnEnable() GUI:RegisterEvent("TRADE_SKILL_FILTER_UPDATE", "EventHandler") GUI:RegisterEvent("UPDATE_TRADESKILL_RECAST", "EventHandler") GUI:RegisterEvent("CHAT_MSG_SKILL", "EventHandler") + GUI:RegisterEvent("UNIT_SPELLCAST_START", "EventHandler") GUI:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED", "EventHandler") GUI:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED", "EventHandler") GUI:RegisterEvent("UNIT_SPELLCAST_FAILED", "EventHandler") @@ -116,7 +117,7 @@ function GUI:OnEnable() GUI:UpdateTradeSkills() GUI.gatheringFrame = GUI:CreateGatheringFrame() - if next(TSM.db.factionrealm.gathering.neededMats) then + if next(TSM.db.realm.gathering.neededMats) then TSMAPI:CreateTimeDelay("gatheringShowThrottle", 0.3, GUI:ShowGatheringFrame()) end end @@ -203,7 +204,7 @@ end function GUI:OpenFirstProfession() TSM.db.global.showingDefaultFrame = nil local link - for playerName, professions in pairs(TSM.db.factionrealm.tradeSkills) do + for playerName, professions in pairs(TSM.db.realm.tradeSkills) do for _, data in pairs(professions) do link = data.link if link then break end @@ -244,22 +245,25 @@ function GUI:EventHandler(event, ...) GUI.frame.content.professionsTab.craftInfoFrame.buttonsFrame.inputBox:SetNumber(GetTradeskillRepeatCount()) elseif event == "CHAT_MSG_SKILL" and not IsTradeSkillLinked() then local skillName, level, maxLevel = GetTradeSkillLine() - if skillName and skillName ~= "UNKNOWN" and TSM.db.factionrealm.tradeSkills[UnitName("player")] and TSM.db.factionrealm.tradeSkills[UnitName("player")][skillName] then - TSM.db.factionrealm.tradeSkills[UnitName("player")][skillName].level = level - TSM.db.factionrealm.tradeSkills[UnitName("player")][skillName].maxLevel = maxLevel + if skillName and skillName ~= "UNKNOWN" and TSM.db.realm.tradeSkills[UnitName("player")] and TSM.db.realm.tradeSkills[UnitName("player")][skillName] then + TSM.db.realm.tradeSkills[UnitName("player")][skillName].level = level + TSM.db.realm.tradeSkills[UnitName("player")][skillName].maxLevel = maxLevel end + elseif event == "UNIT_SPELLCAST_START" then + local unit = ... + if unit ~= "player" then return end + TSM.currentspell = UnitCastingSpellID("player") elseif event == "UNIT_SPELLCAST_SUCCEEDED" then - -- local unit, _, _, _, spellID = ... -- parameter ... doesn't provide spellID in 3.3.5a - local unit, spellName = ... - local spellID = TSM.SpellName2ID[spellName] - + -- we only care about our spells + local unit = ... + if unit ~= "player" then return end + -- if spell is not related to crafting, ignore + local craft = TSM.currentspell and TSM.db.realm.crafts[TSM.currentspell] + if not craft then return end -- if spellID == nil then -- TSM:Printf("Could not find spellID for %s", spellName) -- end - local craft = spellID and TSM.db.factionrealm.crafts[spellID] - if unit ~= "player" or not craft then return end - -- decrements the number of this craft that are queued to be crafted craft.queued = craft.queued - 1 if GUI.isCrafting and GUI.isCrafting.quantity > 0 then @@ -268,19 +272,17 @@ function GUI:EventHandler(event, ...) --GUI:UpdateQueue() end end - + TSM.currentspell = nil -- TSMAPI:CreateTimeDelay("craftingQueueUpdateThrottle", 0.2, GUI.UpdateQueue) elseif event == "UNIT_SPELLCAST_INTERRUPTED" or event == "UNIT_SPELLCAST_FAILED" or event == "UNIT_SPELLCAST_FAILED_QUIET" then - -- local unit, _, _, _, spellID = ... -- parameter ... doesn't provide spellID in 3.3.5a - local unit, spellName = ... - local spellID = TSM.SpellName2ID[spellName] + local unit = ... + if unit ~= "player" then return end -- if spellID == nil then -- TSM:Printf("Could not find spellID for %s", spellName) -- end - if unit ~= "player" then return end - if GUI.isCrafting and spellID == GUI.isCrafting.spellID then + if GUI.isCrafting and TSM.currentspell == GUI.isCrafting.spellID then GUI.isCrafting.quantity = 0 TSMAPI:CreateTimeDelay("craftingQueueUpdateThrottle", 0.2, GUI.UpdateQueue) end @@ -308,7 +310,7 @@ function GUI:UpdateTradeSkills() local skillName, header local tradeSkill1, tradeSkill2, cook, firstAid - for i = 5, 8 do + for i = 1, GetNumSkillLines() do skillName = GetSkillLineInfo(i) if skillName == "Professions" then --TRADE_SKILLS ) then tradeSkill1, header = GetSkillLineInfo(i + 1); @@ -324,14 +326,7 @@ function GUI:UpdateTradeSkills() else tradeSkill2=i+2 end - break - end - end - - - for i = 5, 10 do - skillName = GetSkillLineInfo(i) - if skillName == "Cooking" then + elseif skillName == "Cooking" then cook = i elseif skillName == "First Aid" then firstAid = i @@ -342,31 +337,31 @@ function GUI:UpdateTradeSkills() local playerName = UnitName("player") if not playerName then return end - TSM.db.factionrealm.tradeSkills[playerName] = TSM.db.factionrealm.tradeSkills[playerName] or {} + TSM.db.realm.tradeSkills[playerName] = TSM.db.realm.tradeSkills[playerName] or {} -- SpellBook_UpdateProfTab() -- local tradeSkill1, tradeSkill2, _, _, cook, firstAid = GetProfessions() -- GetProfessions API added in Cata -- local btns = { PrimaryProfession1SpellButtonBottom, PrimaryProfession2SpellButtonBottom, SecondaryProfession3SpellButtonRight, SecondaryProfession4SpellButtonRight } - local old = TSM.db.factionrealm.tradeSkills[playerName] - --TSM.db.factionrealm.tradeSkills[playerName] = {} + local old = TSM.db.realm.tradeSkills[playerName] + --TSM.db.realm.tradeSkills[playerName] = {} -- for i, id in pairs({ "tradeSkill1", "tradeSkill2", "cook", "firstAid" }) do for i, id in pairs({ tradeSkill1, tradeSkill2, cook, firstAid }) do -- needs to be pairs since may not be continuous indices -- if not btns[i]:GetParent().missingHeader:IsVisible() then -- local skillName, _, level, maxLevel = GetProfessionInfo(id) -- Also added in Cata local skillName, _, _, skillRank, _, _, skillMaxRank = GetSkillLineInfo(id) if skillName ~= nil then - TSM.db.factionrealm.tradeSkills[playerName][skillName] = old[skillName] or {} - TSM.db.factionrealm.tradeSkills[playerName][skillName].level = skillRank - TSM.db.factionrealm.tradeSkills[playerName][skillName].maxLevel = skillMaxRank - TSM.db.factionrealm.tradeSkills[playerName][skillName].isSecondary = (i > 2) and true + TSM.db.realm.tradeSkills[playerName][skillName] = old[skillName] or {} + TSM.db.realm.tradeSkills[playerName][skillName].level = skillRank + TSM.db.realm.tradeSkills[playerName][skillName].maxLevel = skillMaxRank + TSM.db.realm.tradeSkills[playerName][skillName].isSecondary = (i > 2) and true -- local spellBookSlot = btns[i]:GetID() + btns[i]:GetParent().spellOffset local _, link = GetSpellLink(skillName) if link then - TSM.db.factionrealm.tradeSkills[playerName][skillName].link = link + TSM.db.realm.tradeSkills[playerName][skillName].link = link if skillName == GetTradeSkillLine() and i <= 2 and not TSM.isSyncing then - TSM.db.factionrealm.tradeSkills[playerName][skillName].account = nil - TSM.db.factionrealm.tradeSkills[playerName][skillName].accountKey = TSMAPI.Sync:GetAccountKey() + TSM.db.realm.tradeSkills[playerName][skillName].account = nil + TSM.db.realm.tradeSkills[playerName][skillName].accountKey = TSMAPI.Sync:GetAccountKey() TSM.Sync:BroadcastTradeSkillData() end end @@ -375,18 +370,18 @@ function GUI:UpdateTradeSkills() end --tidy up crafts if player unlearned a profession - for spellid, data in pairs(TSM.db.factionrealm.crafts) do + for spellid, data in pairs(TSM.db.realm.crafts) do for player in pairs(data.players) do - if not TSM.db.factionrealm.tradeSkills[player] or not TSM.db.factionrealm.tradeSkills[player][data.profession] then - TSM.db.factionrealm.crafts[spellid].players[player] = nil + if not TSM.db.realm.tradeSkills[player] or not TSM.db.realm.tradeSkills[player][data.profession] then + TSM.db.realm.crafts[spellid].players[player] = nil end end end --remove craft if no players - for spellid, data in pairs(TSM.db.factionrealm.crafts) do + for spellid, data in pairs(TSM.db.realm.crafts) do if not next(data.players) then - TSM.db.factionrealm.crafts[spellid] = nil + TSM.db.realm.crafts[spellid] = nil end end end @@ -613,7 +608,7 @@ function GUI:CreateQueueFrame(parent) GameTooltip:SetOwner(self, "ANCHOR_NONE") -- GameTooltip:SetPoint("LEFT", self, "RIGHT") GameTooltip:SetPoint("LEFT", self, "LEFT") - GameTooltip:AddLine(TSM.db.factionrealm.crafts[data.spellID].name .. " (x" .. data.numQueued .. ")") + GameTooltip:AddLine(TSM.db.realm.crafts[data.spellID].name .. " (x" .. data.numQueued .. ")") local cost = TSM.Cost:GetCraftPrices(data.spellID) if data.profit then @@ -665,8 +660,8 @@ function GUI:CreateQueueFrame(parent) end end - for itemID, matQuantity in pairs(TSM.db.factionrealm.crafts[data.spellID].mats) do - local name = TSMAPI:GetSafeItemInfo(itemID) or (TSM.db.factionrealm.mats[itemID] and TSM.db.factionrealm.mats[itemID].name) or "?" + for itemID, matQuantity in pairs(TSM.db.realm.crafts[data.spellID].mats) do + local name = TSMAPI:GetSafeItemInfo(itemID) or (TSM.db.realm.mats[itemID] and TSM.db.realm.mats[itemID].name) or "?" local itemIDx = itemID @@ -675,19 +670,13 @@ function GUI:CreateQueueFrame(parent) if strfind(name, "Vellum") then velName = name end - if (velName ~= nil) and (not strfind(velName, "III")) then - local VellumReplacePrice = TSM.Cost:GetMatCost(itemIDx) - - if strfind(velName, "Weapon Vellum") then - if VellumReplacePrice > TSM.Cost:GetMatCost("item:43146:0:0:0:0:0:0") then - itemIDx = "item:43146:0:0:0:0:0:0" - name = TSMAPI:GetSafeItemInfo(itemIDx) - end + if (velName ~= nil) then + if strfind(velName, "Weapon") then + itemIDx = "item:52511:0:0:0:0:0:0" + name = TSMAPI:GetSafeItemInfo(itemIDx) else - if VellumReplacePrice > TSM.Cost:GetMatCost("item:43145:0:0:0:0:0:0") then - itemIDx = "item:43145:0:0:0:0:0:0" - name = TSMAPI:GetSafeItemInfo(itemIDx) - end + itemIDx = "item:52510:0:0:0:0:0:0" + name = TSMAPI:GetSafeItemInfo(itemIDx) end end @@ -716,9 +705,9 @@ function GUI:CreateQueueFrame(parent) else if data.isTitle then if data.stage then - TSM.db.factionrealm.queueStatus.collapsed[data.profession .. data.stage] = not TSM.db.factionrealm.queueStatus.collapsed[data.profession .. data.stage] + TSM.db.realm.queueStatus.collapsed[data.profession .. data.stage] = not TSM.db.realm.queueStatus.collapsed[data.profession .. data.stage] else - TSM.db.factionrealm.queueStatus.collapsed[data.profession] = not TSM.db.factionrealm.queueStatus.collapsed[data.profession] + TSM.db.realm.queueStatus.collapsed[data.profession] = not TSM.db.realm.queueStatus.collapsed[data.profession] end GUI:UpdateQueue() elseif data.index then @@ -825,10 +814,10 @@ function GUI:CreateQueueFrame(parent) GUI:UpdateGatherSelectionWindow() if GUI.gatheringFrame:IsShown() then GUI.gatheringFrame:Hide() - TSM.db.factionrealm.gathering.crafter = nil - TSM.db.factionrealm.gathering.neededMats = {} - TSM.db.factionrealm.gathering.gatheredMats = false - TSM.db.factionrealm.sourceStatus.collapsed = {} + TSM.db.realm.gathering.crafter = nil + TSM.db.realm.gathering.neededMats = {} + TSM.db.realm.gathering.gatheredMats = false + TSM.db.realm.sourceStatus.collapsed = {} end end) frame.clearBtn = btn @@ -962,7 +951,7 @@ function GUI:CreateProfessionsTab(parent) local player = UnitName("player") local function UpdateProfession(self) local list = {} - for playerName, professionData in pairs(TSM.db.factionrealm.tradeSkills) do + for playerName, professionData in pairs(TSM.db.realm.tradeSkills) do for name, data in pairs(professionData) do if not data.isSecondary and playerName == player then -- only display current player profs until blizz fix it list[playerName .. "~" .. name] = format("%s %d/%d - %s", name, data.level or "?", data.maxLevel or "?", playerName) @@ -993,7 +982,7 @@ function GUI:CreateProfessionsTab(parent) CastSpellByName(profession) end else - local link = TSM.db.factionrealm.tradeSkills[playerName][profession].link + local link = TSM.db.realm.tradeSkills[playerName][profession].link if not link then TSM:Printf(L["Profession data not found for %s on %s. Logging into this player and opening the profession may solve this issue."], profession, playerName) return OnValueChanged(_, _, currentSelection) @@ -1199,7 +1188,7 @@ function GUI:CreateCraftInfoFrame(parent) local function OnEnter(self) if not frame.index then return end local spellID = TSM.Util:GetSpellID(frame.index) - local itemID = spellID and TSM.db.factionrealm.crafts[spellID] and TSM.db.factionrealm.crafts[spellID].itemID + local itemID = spellID and TSM.db.realm.crafts[spellID] and TSM.db.realm.crafts[spellID].itemID if itemID then GameTooltip:SetOwner(self, "ANCHOR_RIGHT") TSMAPI:SafeTooltipLink(itemID) @@ -1402,20 +1391,20 @@ function GUI:CreateCraftInfoFrame(parent) queueBtn:RegisterForClicks("AnyUp") queueBtn:SetScript("OnClick", function(_, button) local spellID = TSM.Util:GetSpellID(frame.index) - if not spellID or not TSM.db.factionrealm.crafts[spellID] then return end + if not spellID or not TSM.db.realm.crafts[spellID] then return end - TSM.db.factionrealm.crafts[spellID].queued = max(TSM.db.factionrealm.crafts[spellID].queued, 0) + TSM.db.realm.crafts[spellID].queued = max(TSM.db.realm.crafts[spellID].queued, 0) if button == "LeftButton" then if IsModifiedClick() then - TSM.db.factionrealm.crafts[spellID].queued = select(3, GetTradeSkillInfo(frame.index)) or 0 + TSM.db.realm.crafts[spellID].queued = select(3, GetTradeSkillInfo(frame.index)) or 0 else - TSM.db.factionrealm.crafts[spellID].queued = (TSM.db.factionrealm.crafts[spellID].queued or 0) + buttonsFrame.inputBox:GetNumber() + TSM.db.realm.crafts[spellID].queued = (TSM.db.realm.crafts[spellID].queued or 0) + buttonsFrame.inputBox:GetNumber() end elseif button == "RightButton" then if IsModifiedClick() then - TSM.db.factionrealm.crafts[spellID].queued = 0 + TSM.db.realm.crafts[spellID].queued = 0 else - TSM.db.factionrealm.crafts[spellID].queued = max((TSM.db.factionrealm.crafts[spellID].queued or 0) - buttonsFrame.inputBox:GetNumber(), 0) + TSM.db.realm.crafts[spellID].queued = max((TSM.db.realm.crafts[spellID].queued or 0) - buttonsFrame.inputBox:GetNumber(), 0) end end GUI:UpdateQueue() @@ -1455,7 +1444,7 @@ function GUI:CreateCraftInfoFrame(parent) -- Enable display of items created local lNum, hNum = GetTradeSkillNumMade(skillIndex) local numMade = floor(((lNum or 1) + (hNum or 1)) / 2) - if altVerb == ENSCRIBE then + if altVerb ~= nil and strfind(name,"Enchant ") then numMade = 1 end if numMade > 1 then @@ -1469,7 +1458,7 @@ function GUI:CreateCraftInfoFrame(parent) -- The code below is heavily based on the code in Blizzard_TradeSkillUI.lua. local toolsInfo = BuildColoredListString(GetTradeSkillTools(skillIndex)) self.infoFrame.toolsText:SetText(toolsInfo and REQUIRES_LABEL .. " " .. toolsInfo or "") - local cooldown, isDayCooldown = GetTradeSkillCooldown(skillIndex) + local cooldown = GetTradeSkillCooldown(skillIndex) if not cooldown then self.infoFrame.cooldownText:SetText(""); elseif cooldown > 60 * 60 * 24 then --Cooldown is greater than 1 day. @@ -1492,15 +1481,14 @@ function GUI:CreateCraftInfoFrame(parent) end end - if altVerb == ENSCRIBE then + -- if altVerb == ENSCRIBE then + if altVerb ~= nil and strfind(name,"Enchant ") then createAllBtn:SetText(L["Enchant Vellum"]) - -- createAllBtn.vellum = TSMAPI:GetSafeItemInfo("item:38682:0:0:0:0:0:0") if strfind(name, "Weapon") or strfind(name, "Staff") then - createAllBtn.vellum = TSMAPI:GetSafeItemInfo("item:43146:0:0:0:0:0:0") -- Weapon Vellum III + createAllBtn.vellum = TSMAPI:GetSafeItemInfo("item:52511:0:0:0:0:0:0") -- Weapon Vellum else - createAllBtn.vellum = TSMAPI:GetSafeItemInfo("item:43145:0:0:0:0:0:0") -- Armor Vellum III + createAllBtn.vellum = TSMAPI:GetSafeItemInfo("item:52510:0:0:0:0:0:0") -- Armor Vellum end - else createAllBtn:SetText(CREATE_ALL) createAllBtn.vellum = nil @@ -1535,8 +1523,8 @@ function GUI:CreateGroupsTab(parent) RestockGroups = groupTree local function OnCreateBtnClick() - if TSM.db.factionrealm.tradeSkills[UnitName("player")][GetTradeSkillLine()] then - TSM.db.factionrealm.tradeSkills[UnitName("player")][GetTradeSkillLine()].prompted = nil + if TSM.db.realm.tradeSkills[UnitName("player")][GetTradeSkillLine()] then + TSM.db.realm.tradeSkills[UnitName("player")][GetTradeSkillLine()].prompted = nil end private.forceCreateGroups = true TSM.Util:ScanCurrentProfession() @@ -1631,8 +1619,8 @@ function GUI:UpdateProfessionsTabST() if not numAvailableAllCache[spellID] then local numAvailableAll = math.huge - if spellID and TSM.db.factionrealm.crafts[spellID] then - for itemString, quantity in pairs(TSM.db.factionrealm.crafts[spellID].mats) do + if spellID and TSM.db.realm.crafts[spellID] then + for itemString, quantity in pairs(TSM.db.realm.crafts[spellID].mats) do numAvailableAll = min(numAvailableAll, floor((inventoryTotals[itemString] or 0) / quantity)) end end @@ -1755,12 +1743,12 @@ function GUI:UpdateQueue() for profession, crafts in pairs(queuedCrafts) do local professionColor, playerColor local players = {} - for player, data in pairs(TSM.db.factionrealm.tradeSkills) do + for player, data in pairs(TSM.db.realm.tradeSkills) do if data[profession] then tinsert(players, player) end end - if TSM.db.factionrealm.tradeSkills[UnitName("player")][profession] then + if TSM.db.realm.tradeSkills[UnitName("player")][profession] then playerColor = "|cffffffff" if profession == currentProfession then professionColor = "|cffffffff" @@ -1772,7 +1760,7 @@ function GUI:UpdateQueue() professionColor = "|cffff0000" end - local professionCollapsed = TSM.db.factionrealm.queueStatus.collapsed[profession] + local professionCollapsed = TSM.db.realm.queueStatus.collapsed[profession] local row = { cols = { { @@ -1786,7 +1774,7 @@ function GUI:UpdateQueue() if not professionCollapsed then for _, stage in ipairs(crafts) do - local stageCollapsed = TSM.db.factionrealm.queueStatus.collapsed[profession .. stage.name] + local stageCollapsed = TSM.db.realm.queueStatus.collapsed[profession .. stage.name] local row = { cols = { { @@ -1809,7 +1797,7 @@ function GUI:UpdateQueue() velName = GetItemInfo(TSM.VellumInfo[spellID]) end - for itemID, quantity in pairs(TSM.db.factionrealm.crafts[spellID].mats) do + for itemID, quantity in pairs(TSM.db.realm.crafts[spellID].mats) do local MatName = GetItemInfo(itemID) if MatName ~= nil and velName ~= nil and strfind(MatName, "Vellum") then @@ -1824,12 +1812,6 @@ function GUI:UpdateQueue() canCraft = min(canCraft, floor(numHave / quantity)) end - -- local velName - -- local VELLUM_ID = "item:38682:0:0:0:0:0:0" - -- if TSM.db.factionrealm.crafts[spellID].mats[VELLUM_ID] then - -- velName = GetItemInfo(VELLUM_ID) or TSM.db.factionrealm.mats[VELLUM_ID].name - -- end - local color local craftIndex = skillIndexLookup[spellID] if canCraft >= numQueued then @@ -1857,7 +1839,7 @@ function GUI:UpdateQueue() local extra = "" if not craftIndex then - if TSM.db.factionrealm.crafts[spellID].players[UnitName("player")] and TSM.db.factionrealm.crafts[spellID].profession == currentProfession then + if TSM.db.realm.crafts[spellID].players[UnitName("player")] and TSM.db.realm.crafts[spellID].profession == currentProfession then extra = "|cffff0000[Filtered]|r " end end @@ -1865,7 +1847,7 @@ function GUI:UpdateQueue() local row = { cols = { { - value = " " .. extra .. color .. TSM.db.factionrealm.crafts[spellID].name .. " (x" .. numQueued .. ")" .. "|r", + value = " " .. extra .. color .. TSM.db.realm.crafts[spellID].name .. " (x" .. numQueued .. ")" .. "|r", }, }, spellID = spellID, @@ -1946,8 +1928,8 @@ function GUI:UpdateQueue() local row = { cols = { { - value = color .. TSM.db.factionrealm.mats[itemString].name .. "|r", - args = { TSM.db.factionrealm.mats[itemString].name }, + value = color .. TSM.db.realm.mats[itemString].name .. "|r", + args = { TSM.db.realm.mats[itemString].name }, }, { value = color .. need .. "|r", @@ -2035,7 +2017,7 @@ function GUI:CreatePromptFrame(parent) yesBtn:SetScript("OnClick", function() TSM:Printf(L["Created profession group for %s."], frame.profession) TSMAPI:CreatePresetGroups(frame.presetGroupInfo) - TSM.db.factionrealm.tradeSkills[UnitName("player")][frame.profession].prompted = true + TSM.db.realm.tradeSkills[UnitName("player")][frame.profession].prompted = true frame:Hide() GUI:UpdateProfessionsTabST() end) @@ -2055,7 +2037,7 @@ function GUI:CreatePromptFrame(parent) noBtn:SetHeight(20) noBtn:SetText(L["No Thanks"]) noBtn:SetScript("OnClick", function() - TSM.db.factionrealm.tradeSkills[UnitName("player")][frame.profession].prompted = true + TSM.db.realm.tradeSkills[UnitName("player")][frame.profession].prompted = true frame:Hide() end) frame.noBtn = noBtn @@ -2066,7 +2048,7 @@ end function GUI:PromptPresetGroups(currentTradeSkill, presetGroupInfo) GUI:RestoreFilters() - if TSM.db.factionrealm.tradeSkills[UnitName("player")][currentTradeSkill] and not TSM.db.factionrealm.tradeSkills[UnitName("player")][currentTradeSkill].prompted then + if TSM.db.realm.tradeSkills[UnitName("player")][currentTradeSkill] and not TSM.db.realm.tradeSkills[UnitName("player")][currentTradeSkill].prompted then GUI.frame.prompt.profession = currentTradeSkill GUI.frame.prompt.presetGroupInfo = presetGroupInfo GUI.frame.prompt:Show() @@ -2148,7 +2130,7 @@ function GUI:UpdateGatherSelectionWindow() local crafters = {} local numCrafters = 0 for profession, _ in pairs(queuedCrafts) do - for player, data in pairs(TSM.db.factionrealm.tradeSkills) do + for player, data in pairs(TSM.db.realm.tradeSkills) do if data[profession] then crafters[player] = player numCrafters = numCrafters + 1 @@ -2174,7 +2156,7 @@ function GUI:UpdateGatherSelectionWindow() local professions = {} local numProfessions = 0 for profession, _ in pairs(queuedCrafts) do - if TSM.db.factionrealm.tradeSkills[private.gather.player][profession] then + if TSM.db.realm.tradeSkills[private.gather.player][profession] then professions[profession] = profession numProfessions = numProfessions + 1 end @@ -2289,9 +2271,9 @@ function GUI:CreateGatheringFrame() local function OnCraftRowClicked(_, data) if data.isTitle then if data.task then - TSM.db.factionrealm.sourceStatus.collapsed[data.source .. data.task] = not TSM.db.factionrealm.sourceStatus.collapsed[data.source .. data.task] + TSM.db.realm.sourceStatus.collapsed[data.source .. data.task] = not TSM.db.realm.sourceStatus.collapsed[data.source .. data.task] else - TSM.db.factionrealm.sourceStatus.collapsed[data.source] = not TSM.db.factionrealm.sourceStatus.collapsed[data.source] + TSM.db.realm.sourceStatus.collapsed[data.source] = not TSM.db.realm.sourceStatus.collapsed[data.source] end GUI:UpdateGathering() end @@ -2356,10 +2338,10 @@ function GUI:CreateGatheringFrame() --checkbox:SetPoint("BOTTOMRIGHT", checkboxFrame, "BOTTOMRIGHT") checkbox1:SetHeight(18) checkbox1:SetWidth(185) - checkbox1:SetValue(TSM.db.factionrealm.gathering.destroyDisable) + checkbox1:SetValue(TSM.db.realm.gathering.destroyDisable) checkbox1:SetLabel(L[" Disable Destroying Search"]) checkbox1:SetCallback("OnValueChanged", function(_, _, value) - TSM.db.factionrealm.gathering.destroyDisable = value + TSM.db.realm.gathering.destroyDisable = value end) local checkbox2 = TSMAPI.GUI:CreateCheckBox(checkboxFrame, L["If checked, the AH destroying search will only look for even stacks"]) @@ -2368,10 +2350,10 @@ function GUI:CreateGatheringFrame() --checkbox:SetPoint("BOTTOMRIGHT", checkboxFrame, "BOTTOMRIGHT") checkbox2:SetHeight(18) checkbox2:SetWidth(100) - checkbox2:SetValue(TSM.db.factionrealm.gathering.evenStacks) + checkbox2:SetValue(TSM.db.realm.gathering.evenStacks) checkbox2:SetLabel(L["Even Stacks"]) checkbox2:SetCallback("OnValueChanged", function(_, _, value) - TSM.db.factionrealm.gathering.evenStacks = value + TSM.db.realm.gathering.evenStacks = value end) TSMAPI.Design:SetFrameColor(checkboxFrame) @@ -2384,11 +2366,11 @@ function GUI:CreateGatheringFrame() btn:SetScript("OnClick", function() private.gather = {} GUI.gatheringFrame:Hide() - TSM.db.factionrealm.gathering.availableMats = {} - TSM.db.factionrealm.gathering.crafter = nil - TSM.db.factionrealm.gathering.neededMats = {} - TSM.db.factionrealm.gathering.gatheredMats = false - TSM.db.factionrealm.gathering.destroyingMats = {} + TSM.db.realm.gathering.availableMats = {} + TSM.db.realm.gathering.crafter = nil + TSM.db.realm.gathering.neededMats = {} + TSM.db.realm.gathering.gatheredMats = false + TSM.db.realm.gathering.destroyingMats = {} private.currentSource = nil end) @@ -2408,7 +2390,7 @@ end function GUI:StartGathering() GUI.frame.gather:Hide() - TSM.db.factionrealm.gathering.gatheredMats = false + TSM.db.realm.gathering.gatheredMats = false local _, queuedMats = TSM.Queue:GetQueue() local neededMats = {} @@ -2423,9 +2405,9 @@ function GUI:StartGathering() if not next(neededMats) then TSM:Print(L["Nothing To Gather"]) else - TSM.db.factionrealm.gathering.crafter = private.gather.player - TSM.db.factionrealm.gathering.professions = private.gather.professions - TSM.db.factionrealm.gathering.neededMats = neededMats + TSM.db.realm.gathering.crafter = private.gather.player + TSM.db.realm.gathering.professions = private.gather.professions + TSM.db.realm.gathering.neededMats = neededMats GUI.gatheringFrame:Show() GUI:UpdateGathering() end @@ -2434,13 +2416,13 @@ end function GUI:UpdateGathering() if not GUI.gatheringFrame or not GUI.gatheringFrame:IsVisible() then return end - if not TSM.db.factionrealm.gathering.crafter or not next(TSM.db.factionrealm.gathering.neededMats) then return end + if not TSM.db.realm.gathering.crafter or not next(TSM.db.realm.gathering.neededMats) then return end -- recheck the craft queue and update neededMats local _, queuedMats = TSM.Queue:GetQueue() local neededMats = {} for profession, data in pairs(queuedMats) do - if TSM.db.factionrealm.gathering.professions[profession] then + if TSM.db.realm.gathering.professions[profession] then for itemString, quantity in pairs(data) do neededMats[itemString] = (neededMats[itemString] or 0) + quantity end @@ -2449,9 +2431,9 @@ function GUI:UpdateGathering() local stData = {} local sources = {} - local crafter = TSM.db.factionrealm.gathering.crafter + local crafter = TSM.db.realm.gathering.crafter local professionList = {} - for profession in pairs(TSM.db.factionrealm.gathering.professions) do + for profession in pairs(TSM.db.realm.gathering.professions) do tinsert(professionList, profession) end @@ -2466,18 +2448,18 @@ function GUI:UpdateGathering() end if not next(shortItems) then GUI.gatheringFrame:Hide() - if TSM.db.factionrealm.gathering.gatheredMats == true then + if TSM.db.realm.gathering.gatheredMats == true then TSM:Print("Finished Gathering") - TSM.db.factionrealm.gathering.gatheredMats = false - TSM.db.factionrealm.gathering.crafter = nil - TSM.db.factionrealm.gathering.neededMats = {} - TSM.db.factionrealm.gathering.gatheredMats = false - TSM.db.factionrealm.sourceStatus.collapsed = {} - TSM.db.factionrealm.gathering.destroyingMats = {} + TSM.db.realm.gathering.gatheredMats = false + TSM.db.realm.gathering.crafter = nil + TSM.db.realm.gathering.neededMats = {} + TSM.db.realm.gathering.gatheredMats = false + TSM.db.realm.sourceStatus.collapsed = {} + TSM.db.realm.gathering.destroyingMats = {} end return else - TSM.db.factionrealm.gathering.neededMats = CopyTable(neededMats) + TSM.db.realm.gathering.neededMats = CopyTable(neededMats) end sort(professionList) @@ -2505,8 +2487,8 @@ function GUI:UpdateGathering() local row = { cols = { { - value = color .. TSM.db.factionrealm.mats[itemString].name .. "|r", - args = { TSM.db.factionrealm.mats[itemString].name }, + value = color .. TSM.db.realm.mats[itemString].name .. "|r", + args = { TSM.db.realm.mats[itemString].name }, }, { value = color .. need .. "|r", @@ -2519,7 +2501,7 @@ function GUI:UpdateGathering() }, itemString = itemString, order = order, - name = TSM.db.factionrealm.mats[itemString].name, + name = TSM.db.realm.mats[itemString].name, } tinsert(stData, row) end @@ -2548,7 +2530,7 @@ function GUI:UpdateGathering() else color = "|cffffff00" end - local sourceCollapsed = TSM.db.factionrealm.sourceStatus.collapsed[source.sourceName] + local sourceCollapsed = TSM.db.realm.sourceStatus.collapsed[source.sourceName] local row = { cols = { { @@ -2562,7 +2544,7 @@ function GUI:UpdateGathering() if not sourceCollapsed then for _, task in ipairs(source.tasks) do - local tasksCollapsed = TSM.db.factionrealm.sourceStatus.collapsed[source.sourceName .. task.taskType] + local tasksCollapsed = TSM.db.realm.sourceStatus.collapsed[source.sourceName .. task.taskType] local row = { cols = { { @@ -2681,7 +2663,7 @@ function GUI:UpdateGathering() end end -- store the available mats from source - TSM.db.factionrealm.gathering.availableMats = CopyTable(availableMats) + TSM.db.realm.gathering.availableMats = CopyTable(availableMats) GUI.gatheringFrame.gatherButton:SetText(L["Gather Items"]) if next(stData) then @@ -2753,7 +2735,7 @@ end function CheapestVellum(itemPassed) - -- Get Cheapest vellum, lower vellum types can be replaced by III + -- Return one of the two vellum available local MatName = GetItemInfo(itemPassed) -- MatName is sometimes nil ??? if MatName ~= nil then @@ -2761,12 +2743,11 @@ function CheapestVellum(itemPassed) if strfind(MatName, "Vellum") then velName = MatName end - if (velName ~= nil) and (not strfind(velName, "III")) then - local VellumReplacePrice = TSM.Cost:GetMatCost(itemPassed) or 0 - if strfind(velName, "Weapon Vellum") then - if VellumReplacePrice > (TSM.Cost:GetMatCost("item:43146:0:0:0:0:0:0") or 0) then itemPassed = "item:43146:0:0:0:0:0:0" end + if (velName ~= nil) then + if strfind(velName, "Weapon") then + itemPassed = "item:52511:0:0:0:0:0:0" else - if VellumReplacePrice > (TSM.Cost:GetMatCost("item:43145:0:0:0:0:0:0") or 0) then itemPassed = "item:43145:0:0:0:0:0:0" end + itemPassed = "item:52510:0:0:0:0:0:0" end end end diff --git a/TradeSkillMaster_Crafting/Modules/EnchantingInfo.lua b/TradeSkillMaster_Crafting/Modules/EnchantingInfo.lua index fa4c5da..87c6bdf 100644 --- a/TradeSkillMaster_Crafting/Modules/EnchantingInfo.lua +++ b/TradeSkillMaster_Crafting/Modules/EnchantingInfo.lua @@ -14,7 +14,7 @@ TSM.enchantingName = GetSpellInfo(7411) -- looks up the itemID of the scroll that the enchant makes -- index = spellID of the enchant -- value = itemID of scroll -TSM.enchantingItemIDs = { +--TSM.enchantingItemIDs = { -- -- MOP -- [110764] = 79061, -- Enchant Weapon - Pandamonium -- [104338] = 74700, -- Enchant Bracer - Mastery @@ -341,263 +341,365 @@ TSM.enchantingItemIDs = { -- [28003] = 38926, -- Enchant Weapon - Spellsurge -- [28004] = 38927, -- Enchant Weapon - Battlemaster - [7418] = 38679, -- Scroll of Enchant Bracer - Minor Health - [7420] = 38766, -- Scroll of Enchant Chest - Minor Health - [7426] = 38767, -- Scroll of Enchant Chest - Minor Absorption - [7428] = 38768, -- Scroll of Enchant Bracer - Minor Deflection - [7443] = 38769, -- Scroll of Enchant Chest - Minor Mana - [7454] = 38770, -- Scroll of Enchant Cloak - Minor Resistance - [7457] = 38771, -- Scroll of Enchant Bracer - Minor Stamina - [7745] = 38772, -- Scroll of Enchant 2H Weapon - Minor Impact - [7748] = 38773, -- Scroll of Enchant Chest - Lesser Health - [7766] = 38774, -- Scroll of Enchant Bracer - Minor Spirit - [7771] = 38775, -- Scroll of Enchant Cloak - Minor Protection - [7776] = 38776, -- Scroll of Enchant Chest - Lesser Mana - [7779] = 38777, -- Scroll of Enchant Bracer - Minor Agility - [7782] = 38778, -- Scroll of Enchant Bracer - Minor Strength - [7786] = 38779, -- Scroll of Enchant Weapon - Minor Beastslayer - [7788] = 38780, -- Scroll of Enchant Weapon - Minor Striking - [7793] = 38781, -- Scroll of Enchant 2H Weapon - Lesser Intellect - [7857] = 38782, -- Scroll of Enchant Chest - Health - [7859] = 38783, -- Scroll of Enchant Bracer - Lesser Spirit - [7861] = 38784, -- Scroll of Enchant Cloak - Lesser Fire Resistance - [7863] = 38785, -- Scroll of Enchant Boots - Minor Stamina - [7867] = 38786, -- Scroll of Enchant Boots - Minor Agility - [13378] = 38787, -- Scroll of Enchant Shield - Minor Stamina - [13380] = 38788, -- Scroll of Enchant 2H Weapon - Lesser Spirit - [13419] = 38789, -- Scroll of Enchant Cloak - Minor Agility - [13421] = 38790, -- Scroll of Enchant Cloak - Lesser Protection - [13464] = 38791, -- Scroll of Enchant Shield - Lesser Protection - [13485] = 38792, -- Scroll of Enchant Shield - Lesser Spirit - [13501] = 38793, -- Scroll of Enchant Bracer - Lesser Stamina - [13503] = 38794, -- Scroll of Enchant Weapon - Lesser Striking - [13522] = 38795, -- Scroll of Enchant Cloak - Lesser Shadow Resistance - [13529] = 38796, -- Scroll of Enchant 2H Weapon - Lesser Impact - [13536] = 38797, -- Scroll of Enchant Bracer - Lesser Strength - [13538] = 38798, -- Scroll of Enchant Chest - Lesser Absorption - [13607] = 38799, -- Scroll of Enchant Chest - Mana - [13612] = 38800, -- Scroll of Enchant Gloves - Mining - [13617] = 38801, -- Scroll of Enchant Gloves - Herbalism - [13620] = 38802, -- Scroll of Enchant Gloves - Fishing - [13622] = 38803, -- Scroll of Enchant Bracer - Lesser Intellect - [13626] = 38804, -- Scroll of Enchant Chest - Minor Stats - [13631] = 38805, -- Scroll of Enchant Shield - Lesser Stamina - [13635] = 38806, -- Scroll of Enchant Cloak - Defense - [13637] = 38807, -- Scroll of Enchant Boots - Lesser Agility - [13640] = 38808, -- Scroll of Enchant Chest - Greater Health - [13642] = 38809, -- Scroll of Enchant Bracer - Spirit - [13644] = 38810, -- Scroll of Enchant Boots - Lesser Stamina - [13646] = 38811, -- Scroll of Enchant Bracer - Lesser Deflection - [13648] = 38812, -- Scroll of Enchant Bracer - Stamina - [13653] = 38813, -- Scroll of Enchant Weapon - Lesser Beastslayer - [13655] = 38814, -- Scroll of Enchant Weapon - Lesser Elemental Slayer - [13657] = 38815, -- Scroll of Enchant Cloak - Fire Resistance - [13659] = 38816, -- Scroll of Enchant Shield - Spirit - [13661] = 38817, -- Scroll of Enchant Bracer - Strength - [13663] = 38818, -- Scroll of Enchant Chest - Greater Mana - [13687] = 38819, -- Scroll of Enchant Boots - Lesser Spirit - [13689] = 38820, -- Scroll of Enchant Shield - Lesser Block - [13693] = 38821, -- Scroll of Enchant Weapon - Striking - [13695] = 38822, -- Scroll of Enchant 2H Weapon - Impact - [13698] = 38823, -- Scroll of Enchant Gloves - Skinning - [13700] = 38824, -- Scroll of Enchant Chest - Lesser Stats - [13746] = 38825, -- Scroll of Enchant Cloak - Greater Defense - [13794] = 38826, -- Scroll of Enchant Cloak - Resistance - [13815] = 38827, -- Scroll of Enchant Gloves - Agility - [13817] = 38828, -- Scroll of Enchant Shield - Stamina - [13822] = 38829, -- Scroll of Enchant Bracer - Intellect - [13836] = 38830, -- Scroll of Enchant Boots - Stamina - [13841] = 38831, -- Scroll of Enchant Gloves - Advanced Mining - [13846] = 38832, -- Scroll of Enchant Bracer - Greater Spirit - [13858] = 38833, -- Scroll of Enchant Chest - Superior Health - [13868] = 38834, -- Scroll of Enchant Gloves - Advanced Herbalism - [13882] = 38835, -- Scroll of Enchant Cloak - Lesser Agility - [13887] = 38836, -- Scroll of Enchant Gloves - Strength - [13890] = 38837, -- Scroll of Enchant Boots - Minor Speed - [13898] = 38838, -- Scroll of Enchant Weapon - Fiery Weapon - [13905] = 38839, -- Scroll of Enchant Shield - Greater Spirit - [13915] = 38840, -- Scroll of Enchant Weapon - Demonslaying - [13917] = 38841, -- Scroll of Enchant Chest - Superior Mana - [13931] = 38842, -- Scroll of Enchant Bracer - Deflection - [13933] = 38843, -- Scroll of Enchant Shield - Frost Resistance - [13935] = 38844, -- Scroll of Enchant Boots - Agility - [13937] = 38845, -- Scroll of Enchant 2H Weapon - Greater Impact - [13939] = 38846, -- Scroll of Enchant Bracer - Greater Strength - [13941] = 38847, -- Scroll of Enchant Chest - Stats - [13943] = 38848, -- Scroll of Enchant Weapon - Greater Striking - [13945] = 38849, -- Scroll of Enchant Bracer - Greater Stamina - [13947] = 38850, -- Scroll of Enchant Gloves - Riding Skill - [13948] = 38851, -- Scroll of Enchant Gloves - Minor Haste - [20008] = 38852, -- Scroll of Enchant Bracer - Greater Intellect - [20009] = 38853, -- Scroll of Enchant Bracer - Superior Spirit - [20010] = 38854, -- Scroll of Enchant Bracer - Superior Strength - [20011] = 38855, -- Scroll of Enchant Bracer - Superior Stamina - [20012] = 38856, -- Scroll of Enchant Gloves - Greater Agility - [20013] = 38857, -- Scroll of Enchant Gloves - Greater Strength - [20014] = 38858, -- Scroll of Enchant Cloak - Greater Resistance - [20015] = 38859, -- Scroll of Enchant Cloak - Superior Defense - [20016] = 38860, -- Scroll of Enchant Shield - Vitality - [20017] = 38861, -- Scroll of Enchant Shield - Greater Stamina - [20020] = 38862, -- Scroll of Enchant Boots - Greater Stamina - [20023] = 38863, -- Scroll of Enchant Boots - Greater Agility - [20024] = 38864, -- Scroll of Enchant Boots - Spirit - [20025] = 38865, -- Scroll of Enchant Chest - Greater Stats - [20026] = 38866, -- Scroll of Enchant Chest - Major Health - [20028] = 38867, -- Scroll of Enchant Chest - Major Mana - [20029] = 38868, -- Scroll of Enchant Weapon - Icy Chill - [20030] = 38869, -- Scroll of Enchant 2H Weapon - Superior Impact - [20031] = 38870, -- Scroll of Enchant Weapon - Superior Striking - [20032] = 38871, -- Scroll of Enchant Weapon - Lifestealing - [20033] = 38872, -- Scroll of Enchant Weapon - Unholy Weapon - [20034] = 38873, -- Scroll of Enchant Weapon - Crusader - [20035] = 38874, -- Scroll of Enchant 2H Weapon - Major Spirit - [20036] = 38875, -- Scroll of Enchant 2H Weapon - Major Intellect - [21931] = 38876, -- Scroll of Enchant Weapon - Winter's Might - [22749] = 38877, -- Scroll of Enchant Weapon - Spellpower - [22750] = 38878, -- Scroll of Enchant Weapon - Healing Power - [23799] = 38879, -- Scroll of Enchant Weapon - Strength - [23800] = 38880, -- Scroll of Enchant Weapon - Agility - [23801] = 38881, -- Scroll of Enchant Bracer - Mana Regeneration - [23802] = 38882, -- Scroll of Enchant Bracer - Healing Power - [23803] = 38883, -- Scroll of Enchant Weapon - Mighty Spirit - [23804] = 38884, -- Scroll of Enchant Weapon - Mighty Intellect - [25072] = 38885, -- Scroll of Enchant Gloves - Threat - [25073] = 38886, -- Scroll of Enchant Gloves - Shadow Power - [25074] = 38887, -- Scroll of Enchant Gloves - Frost Power - [25078] = 38888, -- Scroll of Enchant Gloves - Fire Power - [25079] = 38889, -- Scroll of Enchant Gloves - Healing Power - [25080] = 38890, -- Scroll of Enchant Gloves - Superior Agility - [25081] = 38891, -- Scroll of Enchant Cloak - Greater Fire Resistance - [25082] = 38892, -- Scroll of Enchant Cloak - Greater Nature Resistance - [25083] = 38893, -- Scroll of Enchant Cloak - Stealth - [25084] = 38894, -- Scroll of Enchant Cloak - Subtlety - [25086] = 38895, -- Scroll of Enchant Cloak - Dodge - [27837] = 38896, -- Scroll of Enchant 2H Weapon - Agility - [27899] = 38897, -- Scroll of Enchant Bracer - Brawn - [27905] = 38898, -- Scroll of Enchant Bracer - Stats - [27906] = 38899, -- Scroll of Enchant Bracer - Major Defense - [27911] = 38900, -- Scroll of Enchant Bracer - Superior Healing - [27913] = 38901, -- Scroll of Enchant Bracer - Restore Mana Prime - [27914] = 38902, -- Scroll of Enchant Bracer - Fortitude - [27917] = 38903, -- Scroll of Enchant Bracer - Spellpower - [27944] = 38904, -- Scroll of Enchant Shield - Tough Shield - [27945] = 38905, -- Scroll of Enchant Shield - Intellect - [27946] = 38906, -- Scroll of Enchant Shield - Shield Block - [27947] = 38907, -- Scroll of Enchant Shield - Resistance - [27948] = 38908, -- Scroll of Enchant Boots - Vitality - [27950] = 38909, -- Scroll of Enchant Boots - Fortitude - [27951] = 37603, -- Scroll of Enchant Boots - Dexterity - [27954] = 38910, -- Scroll of Enchant Boots - Surefooted - [27957] = 38911, -- Scroll of Enchant Chest - Exceptional Health - [27958] = 38912, -- Scroll of Enchant Chest - Exceptional Mana - [27960] = 38913, -- Scroll of Enchant Chest - Exceptional Stats - [27961] = 38914, -- Scroll of Enchant Cloak - Major Armor - [27962] = 38915, -- Scroll of Enchant Cloak - Major Resistance - [27967] = 38917, -- Scroll of Enchant Weapon - Major Striking - [27968] = 38918, -- Scroll of Enchant Weapon - Major Intellect - [27971] = 38919, -- Scroll of Enchant 2H Weapon - Savagery - [27972] = 38920, -- Scroll of Enchant Weapon - Potency - [27975] = 38921, -- Scroll of Enchant Weapon - Major Spellpower - [27977] = 38922, -- Scroll of Enchant 2H Weapon - Major Agility - [27981] = 38923, -- Scroll of Enchant Weapon - Sunfire - [27982] = 38924, -- Scroll of Enchant Weapon - Soulfrost - [27984] = 38925, -- Scroll of Enchant Weapon - Mongoose - [28003] = 38926, -- Scroll of Enchant Weapon - Spellsurge - [28004] = 38927, -- Scroll of Enchant Weapon - Battlemaster - [33990] = 38928, -- Scroll of Enchant Chest - Major Spirit - [33991] = 38929, -- Scroll of Enchant Chest - Restore Mana Prime - [33992] = 38930, -- Scroll of Enchant Chest - Major Resilience - [33993] = 38931, -- Scroll of Enchant Gloves - Blasting - [33994] = 38932, -- Scroll of Enchant Gloves - Precise Strikes - [33995] = 38933, -- Scroll of Enchant Gloves - Major Strength - [33996] = 38934, -- Scroll of Enchant Gloves - Assault - [33997] = 38935, -- Scroll of Enchant Gloves - Major Spellpower - [33999] = 38936, -- Scroll of Enchant Gloves - Major Healing - [34001] = 38937, -- Scroll of Enchant Bracer - Major Intellect - [34002] = 38938, -- Scroll of Enchant Bracer - Assault - [34003] = 38939, -- Scroll of Enchant Cloak - Spell Penetration - [34004] = 38940, -- Scroll of Enchant Cloak - Greater Agility - [34005] = 38941, -- Scroll of Enchant Cloak - Greater Arcane Resistance - [34006] = 38942, -- Scroll of Enchant Cloak - Greater Shadow Resistance - [34007] = 38943, -- Scroll of Enchant Boots - Cat's Swiftness - [34008] = 38944, -- Scroll of Enchant Boots - Boar's Speed - [34009] = 38945, -- Scroll of Enchant Shield - Major Stamina - [34010] = 38946, -- Scroll of Enchant Weapon - Major Healing - [42620] = 38947, -- Scroll of Enchant Weapon - Greater Agility - [42974] = 38948, -- Scroll of Enchant Weapon - Executioner - [44383] = 38949, -- Scroll of Enchant Shield - Resilience - [44483] = 38950, -- Scroll of Enchant Cloak - Superior Frost Resistance - [44484] = 38951, -- Scroll of Enchant Gloves - Expertise - [44488] = 38953, -- Scroll of Enchant Gloves - Precision - [44489] = 38954, -- Scroll of Enchant Shield - Defense - [44492] = 38955, -- Scroll of Enchant Chest - Mighty Health - [44494] = 38956, -- Scroll of Enchant Cloak - Superior Nature Resistance - [44500] = 38959, -- Scroll of Enchant Cloak - Superior Agility - [44506] = 38960, -- Scroll of Enchant Gloves - Gatherer - [44508] = 38961, -- Scroll of Enchant Boots - Greater Spirit - [44509] = 38962, -- Scroll of Enchant Chest - Greater Mana Restoration - [44510] = 38963, -- Scroll of Enchant Weapon - Exceptional Spirit - [44513] = 38964, -- Scroll of Enchant Gloves - Greater Assault - [44524] = 38965, -- Scroll of Enchant Weapon - Icebreaker - [44528] = 38966, -- Scroll of Enchant Boots - Greater Fortitude - [44529] = 38967, -- Scroll of Enchant Gloves - Major Agility - [44555] = 38968, -- Scroll of Enchant Bracers - Exceptional Intellect - [44556] = 38969, -- Scroll of Enchant Cloak - Superior Fire Resistance - [44575] = 44815, -- Scroll of Enchant Bracers - Greater Assault - [44576] = 38972, -- Scroll of Enchant Weapon - Lifeward - [44582] = 38973, -- Scroll of Enchant Cloak - Spell Piercing - [44584] = 38974, -- Scroll of Enchant Boots - Greater Vitality - [44588] = 38975, -- Scroll of Enchant Chest - Exceptional Resilience - [44589] = 38976, -- Scroll of Enchant Boots - Superior Agility - [44590] = 38977, -- Scroll of Enchant Cloak - Superior Shadow Resistance - [44591] = 38978, -- Scroll of Enchant Cloak - Titanweave - [44592] = 38979, -- Scroll of Enchant Gloves - Exceptional Spellpower - [44593] = 38980, -- Scroll of Enchant Bracers - Major Spirit - [44595] = 38981, -- Scroll of Enchant 2H Weapon - Scourgebane - [44596] = 38982, -- Scroll of Enchant Cloak - Superior Arcane Resistance - [44598] = 38984, -- Scroll of Enchant Bracer - Expertise - [44612] = 38985, -- Scroll of Enchant Gloves - Greater Blasting - [44616] = 38987, -- Scroll of Enchant Bracers - Greater Stats - [44621] = 38988, -- Scroll of Enchant Weapon - Giant Slayer - [44623] = 38989, -- Scroll of Enchant Chest - Super Stats - [44625] = 38990, -- Scroll of Enchant Gloves - Armsman - [44629] = 38991, -- Scroll of Enchant Weapon - Exceptional Spellpower - [44630] = 38992, -- Scroll of Enchant 2H Weapon - Greater Savagery - [44631] = 38993, -- Scroll of Enchant Cloak - Shadow Armor - [44633] = 38995, -- Scroll of Enchant Weapon - Exceptional Agility - [44635] = 38997, -- Scroll of Enchant Bracers - Greater Spellpower - [46578] = 38998, -- Scroll of Enchant Weapon - Deathfrost - [46594] = 38999, -- Scroll of Enchant Chest - Defense - [47051] = 39000, -- Scroll of Enchant Cloak - Steelweave - [47672] = 39001, -- Scroll of Enchant Cloak - Mighty Armor - [47766] = 39002, -- Scroll of Enchant Chest - Greater Defense - [47898] = 39003, -- Scroll of Enchant Cloak - Greater Speed - [47899] = 39004, -- Scroll of Enchant Cloak - Wisdom - [47900] = 39005, -- Scroll of Enchant Chest - Super Health - [47901] = 39006, -- Scroll of Enchant Boots - Tuskarr's Vitality - [59619] = 44497, -- Scroll of Enchant Weapon - Accuracy - [59621] = 44493, -- Scroll of Enchant Weapon - Berserking - [59625] = 43987, -- Scroll of Enchant Weapon - Black Magic - [60606] = 44449, -- Scroll of Enchant Boots - Assault - [60609] = 44456, -- Scroll of Enchant Cloak - Speed - [60616] = 38971, -- Scroll of Enchant Bracers - Striking - [60621] = 44453, -- Scroll of Enchant Weapon - Greater Potency - [60623] = 38986, -- Scroll of Enchant Boots - Icewalker - [60653] = 44455, -- Scroll of Enchant Shield - Greater Intellect - [60663] = 44457, -- Scroll of Enchant Cloak - Major Agility - [60668] = 44458, -- Scroll of Enchant Gloves - Crusher - [60691] = 44463, -- Scroll of Enchant 2H Weapon - Massacre - [60692] = 44465, -- Scroll of Enchant Chest - Powerful Stats - [60707] = 44466, -- Scroll of Enchant Weapon - Superior Potency - [60714] = 44467, -- Scroll of Enchant Weapon - Mighty Spellpower - [60763] = 44469, -- Scroll of Enchant Boots - Greater Assault - [60767] = 44470, -- Scroll of Enchant Bracer - Superior Spellpower - [62256] = 44947, -- Scroll of Enchant Bracer - Major Stamina - [62257] = 44946, -- Scroll of Enchant Weapon - Titanguard - [62948] = 45056, -- Scroll of Enchant Staff - Greater Spellpower - [62959] = 45060, -- Scroll of Enchant Staff - Spellpower - [63746] = 45628, -- Scroll of Enchant Boots - Lesser Accuracy - [64441] = 46026, -- Scroll of Enchant Weapon - Blade Ward - [64579] = 46098, -- Scroll of Enchant Weapon - Blood Draining - [71692] = 50816, -- Scroll of Enchant Gloves - Angler -} \ No newline at end of file + -- High Risk Ascension Content + -- [968676] = 967760, -- Enchant Weapon - Unstoppable Assault I + -- [968677] = 967761, -- Enchant Weapon - Unstoppable Assault II + -- [968678] = 967762, -- Enchant Weapon - Unstoppable Assault III + -- [968679] = 967763, -- Enchant Weapon - Lucid Assault I + -- [968680] = 967764, -- Enchant Weapon - Lucid Assault II + -- [968681] = 967765, -- Enchant Weapon - Lucid Assault III + -- [968682] = 967766, -- Enchant Weapon - Spellbinder's Rage I + -- [968683] = 967767, -- Enchant Weapon - Spellbinder's Rage II + -- [968684] = 967768, -- Enchant Weapon - Spellbinder's Rage III + -- [968685] = 967769, -- Enchant Weapon - Ninja's Focus I + -- [968686] = 967770, -- Enchant Weapon - Ninja's Focus II + -- [968687] = 967771, -- Enchant Weapon - Ninja's Focus III + -- [968688] = 967772, -- Enchant Weapon - Grovewarden's Blessing I + -- [968689] = 967773, -- Enchant Weapon - Grovewarden's Blessing II + -- [968690] = 967774, -- Enchant Weapon - Grovewarden's Blessing III + -- [968691] = 967775, -- Enchant Weapon - Viscious Assault I + -- [968692] = 967776, -- Enchant Weapon - Viscious Assault II + -- [968693] = 967777, -- Enchant Weapon - Viscious Assault III + -- [968694] = 967778, -- Enchant Weapon - Arcane Dexterity I + -- [968695] = 967779, -- Enchant Weapon - Arcane Dexterity II + -- [968696] = 967780, -- Enchant Weapon - Arcane Dexterity III + -- [968697] = 967781, -- Enchant Weapon - Arcane Artillery I + -- [968698] = 967782, -- Enchant Weapon - Arcane Artillery II + -- [968699] = 967783, -- Enchant Weapon - Arcane Artillery III + -- [968700] = 967784, -- Enchant Weapon - Arcane Precision I + -- [968701] = 967785, -- Enchant Weapon - Arcane Precision II + -- [968702] = 967786, -- Enchant Weapon - Arcane Precision III + -- [968770] = 967787, -- Enchant Weapon - Crusader II + -- [968771] = 967788, -- Enchant Weapon - Crusader III + -- [1968677] = 1204125, -- Enchant Weapon - Void Assault + -- [1968678] = 1204126, -- Enchant Weapon - Overpowering Void Assault + -- [1968680] = 1204127, -- Enchant Weapon - Dread Assault + -- [1968681] = 1204128, -- Enchant Weapon - Overpowering Dread Assault + -- [1968683] = 1204129, -- Enchant Weapon - Twisted Evoker + -- [1968684] = 1204130, -- Enchant Weapon - Overpowering Twisted Evoker + -- [1968686] = 1204131, -- Enchant Weapon - Twisted Assault + -- [1968687] = 1204132, -- Enchant Weapon - Overpowering Twisted Assault + -- [1968689] = 1204133, -- Enchant Weapon - Twisted Channeler + -- [1968690] = 1204134, -- Enchant Weapon - Overpowering Twisted Channeler + -- [1968692] = 1204135, -- Enchant Weapon - Dread Omen Strikes + -- [1968693] = 1204136, -- Enchant Weapon - Overpowering Dread Omen Strikes + -- [1968695] = 1204137, -- Enchant Weapon - Void Flows + -- [1968696] = 1204138, -- Enchant Weapon - Overpowering Void Flows + -- [1968698] = 1204139, -- Enchant Weapon - Void Blasting + -- [1968699] = 1204140, -- Enchant Weapon - Overpowering Void Blasting + -- [1968701] = 1204141, -- Enchant Weapon - Dread Precision + -- [1968702] = 1204142, -- Enchant Weapon - Overpowering Dread Precision + -- [1968770] = 1204143, -- Enchant Weapon - Twisted Crusader + -- [1968771] = 1204144, -- Enchant Weapon - Overpowering Twisted Crusader + +TSM.enchantingItemIDs = { + [7418] = 38679, -- Scroll of Enchant Bracer - Minor Health + [7420] = 38766, -- Scroll of Enchant Chest - Minor Health + [7426] = 38767, -- Scroll of Enchant Chest - Minor Absorption + [7428] = 38768, -- Scroll of Enchant Bracer - Minor Deflection + [7443] = 38769, -- Scroll of Enchant Chest - Minor Mana + [7454] = 38770, -- Scroll of Enchant Cloak - Minor Resistance + [7457] = 38771, -- Scroll of Enchant Bracer - Minor Stamina + [7745] = 38772, -- Scroll of Enchant 2H Weapon - Minor Impact + [7748] = 38773, -- Scroll of Enchant Chest - Lesser Health + [7766] = 38774, -- Scroll of Enchant Bracer - Minor Spirit + [7771] = 38775, -- Scroll of Enchant Cloak - Minor Protection + [7776] = 38776, -- Scroll of Enchant Chest - Lesser Mana + [7779] = 38777, -- Scroll of Enchant Bracer - Minor Agility + [7782] = 38778, -- Scroll of Enchant Bracer - Minor Strength + [7786] = 38779, -- Scroll of Enchant Weapon - Minor Beastslayer + [7788] = 38780, -- Scroll of Enchant Weapon - Minor Striking + [7793] = 38781, -- Scroll of Enchant 2H Weapon - Lesser Intellect + [7857] = 38782, -- Scroll of Enchant Chest - Health + [7859] = 38783, -- Scroll of Enchant Bracer - Lesser Spirit + [7861] = 38784, -- Scroll of Enchant Cloak - Lesser Fire Resistance + [7863] = 38785, -- Scroll of Enchant Boots - Minor Stamina + [7867] = 38786, -- Scroll of Enchant Boots - Minor Agility + [13378] = 38787, -- Scroll of Enchant Shield - Minor Stamina + [13380] = 38788, -- Scroll of Enchant 2H Weapon - Lesser Spirit + [13419] = 38789, -- Scroll of Enchant Cloak - Minor Agility + [13421] = 38790, -- Scroll of Enchant Cloak - Lesser Protection + [13464] = 38791, -- Scroll of Enchant Shield - Lesser Protection + [13485] = 38792, -- Scroll of Enchant Shield - Lesser Spirit + [13501] = 38793, -- Scroll of Enchant Bracer - Lesser Stamina + [13503] = 38794, -- Scroll of Enchant Weapon - Lesser Striking + [13522] = 38795, -- Scroll of Enchant Cloak - Lesser Shadow Resistance + [13529] = 38796, -- Scroll of Enchant 2H Weapon - Lesser Impact + [13536] = 38797, -- Scroll of Enchant Bracer - Lesser Strength + [13538] = 38798, -- Scroll of Enchant Chest - Lesser Absorption + [13607] = 38799, -- Scroll of Enchant Chest - Mana + [13612] = 38800, -- Scroll of Enchant Gloves - Mining + [13617] = 38801, -- Scroll of Enchant Gloves - Herbalism + [13620] = 38802, -- Scroll of Enchant Gloves - Fishing + [13622] = 38803, -- Scroll of Enchant Bracer - Lesser Intellect + [13626] = 38804, -- Scroll of Enchant Chest - Minor Stats + [13631] = 38805, -- Scroll of Enchant Shield - Lesser Stamina + [13635] = 38806, -- Scroll of Enchant Cloak - Defense + [13637] = 38807, -- Scroll of Enchant Boots - Lesser Agility + [13640] = 38808, -- Scroll of Enchant Chest - Greater Health + [13642] = 38809, -- Scroll of Enchant Bracer - Spirit + [13644] = 38810, -- Scroll of Enchant Boots - Lesser Stamina + [13646] = 38811, -- Scroll of Enchant Bracer - Lesser Deflection + [13648] = 38812, -- Scroll of Enchant Bracer - Stamina + [13653] = 38813, -- Scroll of Enchant Weapon - Lesser Beastslayer + [13655] = 38814, -- Scroll of Enchant Weapon - Lesser Elemental Slayer + [13657] = 38815, -- Scroll of Enchant Cloak - Fire Resistance + [13659] = 38816, -- Scroll of Enchant Shield - Spirit + [13661] = 38817, -- Scroll of Enchant Bracer - Strength + [13663] = 38818, -- Scroll of Enchant Chest - Greater Mana + [13687] = 38819, -- Scroll of Enchant Boots - Lesser Spirit + [13689] = 38820, -- Scroll of Enchant Shield - Lesser Block + [13693] = 38821, -- Scroll of Enchant Weapon - Striking + [13695] = 38822, -- Scroll of Enchant 2H Weapon - Impact + [13698] = 38823, -- Scroll of Enchant Gloves - Skinning + [13700] = 38824, -- Scroll of Enchant Chest - Lesser Stats + [13746] = 38825, -- Scroll of Enchant Cloak - Greater Defense + [13794] = 38826, -- Scroll of Enchant Cloak - Resistance + [13815] = 38827, -- Scroll of Enchant Gloves - Agility + [13817] = 38828, -- Scroll of Enchant Shield - Stamina + [13822] = 38829, -- Scroll of Enchant Bracer - Intellect + [13836] = 38830, -- Scroll of Enchant Boots - Stamina + [13841] = 38831, -- Scroll of Enchant Gloves - Advanced Mining + [13846] = 38832, -- Scroll of Enchant Bracer - Greater Spirit + [13858] = 38833, -- Scroll of Enchant Chest - Superior Health + [13868] = 38834, -- Scroll of Enchant Gloves - Advanced Herbalism + [13882] = 38835, -- Scroll of Enchant Cloak - Lesser Agility + [13887] = 38836, -- Scroll of Enchant Gloves - Strength + [13890] = 38837, -- Scroll of Enchant Boots - Minor Speed + [13898] = 38838, -- Scroll of Enchant Weapon - Fiery Weapon + [13905] = 38839, -- Scroll of Enchant Shield - Greater Spirit + [13915] = 38840, -- Scroll of Enchant Weapon - Demonslaying + [13917] = 38841, -- Scroll of Enchant Chest - Superior Mana + [13931] = 38842, -- Scroll of Enchant Bracer - Deflection + [13933] = 38843, -- Scroll of Enchant Shield - Frost Resistance + [13935] = 38844, -- Scroll of Enchant Boots - Agility + [13937] = 38845, -- Scroll of Enchant 2H Weapon - Greater Impact + [13939] = 38846, -- Scroll of Enchant Bracer - Greater Strength + [13941] = 38847, -- Scroll of Enchant Chest - Stats + [13943] = 38848, -- Scroll of Enchant Weapon - Greater Striking + [13945] = 38849, -- Scroll of Enchant Bracer - Greater Stamina + [13947] = 38850, -- Scroll of Enchant Gloves - Riding Skill + [13948] = 38851, -- Scroll of Enchant Gloves - Minor Haste + [20008] = 38852, -- Scroll of Enchant Bracer - Greater Intellect + [20009] = 38853, -- Scroll of Enchant Bracer - Superior Spirit + [20010] = 38854, -- Scroll of Enchant Bracer - Superior Strength + [20011] = 38855, -- Scroll of Enchant Bracer - Superior Stamina + [20012] = 38856, -- Scroll of Enchant Gloves - Greater Agility + [20013] = 38857, -- Scroll of Enchant Gloves - Greater Strength + [20014] = 38858, -- Scroll of Enchant Cloak - Greater Resistance + [20015] = 38859, -- Scroll of Enchant Cloak - Superior Defense + [20016] = 38860, -- Scroll of Enchant Shield - Vitality + [20017] = 38861, -- Scroll of Enchant Shield - Greater Stamina + [20020] = 38862, -- Scroll of Enchant Boots - Greater Stamina + [20023] = 38863, -- Scroll of Enchant Boots - Greater Agility + [20024] = 38864, -- Scroll of Enchant Boots - Spirit + [20025] = 38865, -- Scroll of Enchant Chest - Greater Stats + [20026] = 38866, -- Scroll of Enchant Chest - Major Health + [20028] = 38867, -- Scroll of Enchant Chest - Major Mana + [20029] = 38868, -- Scroll of Enchant Weapon - Icy Chill + [20030] = 38869, -- Scroll of Enchant 2H Weapon - Superior Impact + [20031] = 38870, -- Scroll of Enchant Weapon - Superior Striking + [20032] = 38871, -- Scroll of Enchant Weapon - Lifestealing + [20033] = 38872, -- Scroll of Enchant Weapon - Unholy Weapon + [20034] = 38873, -- Scroll of Enchant Weapon - Crusader + [20035] = 38874, -- Scroll of Enchant 2H Weapon - Major Spirit + [20036] = 38875, -- Scroll of Enchant 2H Weapon - Major Intellect + [21931] = 38876, -- Scroll of Enchant Weapon - Winter's Might + [22749] = 38877, -- Scroll of Enchant Weapon - Spellpower + [22750] = 38878, -- Scroll of Enchant Weapon - Healing Power + [23799] = 38879, -- Scroll of Enchant Weapon - Strength + [23800] = 38880, -- Scroll of Enchant Weapon - Agility + [23801] = 38881, -- Scroll of Enchant Bracer - Mana Regeneration + [23802] = 38882, -- Scroll of Enchant Bracer - Healing Power + [23803] = 38883, -- Scroll of Enchant Weapon - Mighty Spirit + [23804] = 38884, -- Scroll of Enchant Weapon - Mighty Intellect + [25072] = 38885, -- Scroll of Enchant Gloves - Threat + [25073] = 38886, -- Scroll of Enchant Gloves - Shadow Power + [25074] = 38887, -- Scroll of Enchant Gloves - Frost Power + [25078] = 38888, -- Scroll of Enchant Gloves - Fire Power + [25079] = 38889, -- Scroll of Enchant Gloves - Healing Power + [25080] = 38890, -- Scroll of Enchant Gloves - Superior Agility + [25081] = 38891, -- Scroll of Enchant Cloak - Greater Fire Resistance + [25082] = 38892, -- Scroll of Enchant Cloak - Greater Nature Resistance + [25083] = 38893, -- Scroll of Enchant Cloak - Stealth + [25084] = 38894, -- Scroll of Enchant Cloak - Subtlety + [25086] = 38895, -- Scroll of Enchant Cloak - Dodge + [27837] = 38896, -- Scroll of Enchant 2H Weapon - Agility + [27899] = 38897, -- Scroll of Enchant Bracer - Brawn + [27905] = 38898, -- Scroll of Enchant Bracer - Stats + [27906] = 38899, -- Scroll of Enchant Bracer - Major Defense + [27911] = 38900, -- Scroll of Enchant Bracer - Superior Healing + [27913] = 38901, -- Scroll of Enchant Bracer - Restore Mana Prime + [27914] = 38902, -- Scroll of Enchant Bracer - Fortitude + [27917] = 38903, -- Scroll of Enchant Bracer - Spellpower + [27944] = 38904, -- Scroll of Enchant Shield - Tough Shield + [27945] = 38905, -- Scroll of Enchant Shield - Intellect + [27946] = 38906, -- Scroll of Enchant Shield - Shield Block + [27947] = 38907, -- Scroll of Enchant Shield - Resistance + [27948] = 38908, -- Scroll of Enchant Boots - Vitality + [27950] = 38909, -- Scroll of Enchant Boots - Fortitude + [27951] = 37603, -- Scroll of Enchant Boots - Dexterity + [27954] = 38910, -- Scroll of Enchant Boots - Surefooted + [27957] = 38911, -- Scroll of Enchant Chest - Exceptional Health + [27958] = 38912, -- Scroll of Enchant Chest - Exceptional Mana + [27960] = 38913, -- Scroll of Enchant Chest - Exceptional Stats + [27961] = 38914, -- Scroll of Enchant Cloak - Major Armor + [27962] = 38915, -- Scroll of Enchant Cloak - Major Resistance + [27967] = 38917, -- Scroll of Enchant Weapon - Major Striking + [27968] = 38918, -- Scroll of Enchant Weapon - Major Intellect + [27971] = 38919, -- Scroll of Enchant 2H Weapon - Savagery + [27972] = 38920, -- Scroll of Enchant Weapon - Potency + [27975] = 38921, -- Scroll of Enchant Weapon - Major Spellpower + [27977] = 38922, -- Scroll of Enchant 2H Weapon - Major Agility + [27981] = 38923, -- Scroll of Enchant Weapon - Sunfire + [27982] = 38924, -- Scroll of Enchant Weapon - Soulfrost + [27984] = 38925, -- Scroll of Enchant Weapon - Mongoose + [28003] = 38926, -- Scroll of Enchant Weapon - Spellsurge + [28004] = 38927, -- Scroll of Enchant Weapon - Battlemaster + [33990] = 38928, -- Scroll of Enchant Chest - Major Spirit + [33991] = 38929, -- Scroll of Enchant Chest - Restore Mana Prime + [33992] = 38930, -- Scroll of Enchant Chest - Major Resilience + [33993] = 38931, -- Scroll of Enchant Gloves - Blasting + [33994] = 38932, -- Scroll of Enchant Gloves - Precise Strikes + [33995] = 38933, -- Scroll of Enchant Gloves - Major Strength + [33996] = 38934, -- Scroll of Enchant Gloves - Assault + [33997] = 38935, -- Scroll of Enchant Gloves - Major Spellpower + [33999] = 38936, -- Scroll of Enchant Gloves - Major Healing + [34001] = 38937, -- Scroll of Enchant Bracer - Major Intellect + [34002] = 38938, -- Scroll of Enchant Bracer - Assault + [34003] = 38939, -- Scroll of Enchant Cloak - Spell Penetration + [34004] = 38940, -- Scroll of Enchant Cloak - Greater Agility + [34005] = 38941, -- Scroll of Enchant Cloak - Greater Arcane Resistance + [34006] = 38942, -- Scroll of Enchant Cloak - Greater Shadow Resistance + [34007] = 38943, -- Scroll of Enchant Boots - Cat's Swiftness + [34008] = 38944, -- Scroll of Enchant Boots - Boar's Speed + [34009] = 38945, -- Scroll of Enchant Shield - Major Stamina + [34010] = 38946, -- Scroll of Enchant Weapon - Major Healing + [42620] = 38947, -- Scroll of Enchant Weapon - Greater Agility + [42974] = 38948, -- Scroll of Enchant Weapon - Executioner + [44383] = 38949, -- Scroll of Enchant Shield - Resilience + [44483] = 38950, -- Scroll of Enchant Cloak - Superior Frost Resistance + [44484] = 38951, -- Scroll of Enchant Gloves - Expertise + [44488] = 38953, -- Scroll of Enchant Gloves - Precision + [44489] = 38954, -- Scroll of Enchant Shield - Defense + [44492] = 38955, -- Scroll of Enchant Chest - Mighty Health + [44494] = 38956, -- Scroll of Enchant Cloak - Superior Nature Resistance + [44500] = 38959, -- Scroll of Enchant Cloak - Superior Agility + [44506] = 38960, -- Scroll of Enchant Gloves - Gatherer + [44508] = 38961, -- Scroll of Enchant Boots - Greater Spirit + [44509] = 38962, -- Scroll of Enchant Chest - Greater Mana Restoration + [44510] = 38963, -- Scroll of Enchant Weapon - Exceptional Spirit + [44513] = 38964, -- Scroll of Enchant Gloves - Greater Assault + [44524] = 38965, -- Scroll of Enchant Weapon - Icebreaker + [44528] = 38966, -- Scroll of Enchant Boots - Greater Fortitude + [44529] = 38967, -- Scroll of Enchant Gloves - Major Agility + [44555] = 38968, -- Scroll of Enchant Bracers - Exceptional Intellect + [44556] = 38969, -- Scroll of Enchant Cloak - Superior Fire Resistance + [44575] = 44815, -- Scroll of Enchant Bracers - Greater Assault + [44576] = 38972, -- Scroll of Enchant Weapon - Lifeward + [44582] = 38973, -- Scroll of Enchant Cloak - Spell Piercing + [44584] = 38974, -- Scroll of Enchant Boots - Greater Vitality + [44588] = 38975, -- Scroll of Enchant Chest - Exceptional Resilience + [44589] = 38976, -- Scroll of Enchant Boots - Superior Agility + [44590] = 38977, -- Scroll of Enchant Cloak - Superior Shadow Resistance + [44591] = 38978, -- Scroll of Enchant Cloak - Titanweave + [44592] = 38979, -- Scroll of Enchant Gloves - Exceptional Spellpower + [44593] = 38980, -- Scroll of Enchant Bracers - Major Spirit + [44595] = 38981, -- Scroll of Enchant 2H Weapon - Scourgebane + [44596] = 38982, -- Scroll of Enchant Cloak - Superior Arcane Resistance + [44598] = 38984, -- Scroll of Enchant Bracer - Expertise + [44612] = 38985, -- Scroll of Enchant Gloves - Greater Blasting + [44616] = 38987, -- Scroll of Enchant Bracers - Greater Stats + [44621] = 38988, -- Scroll of Enchant Weapon - Giant Slayer + [44623] = 38989, -- Scroll of Enchant Chest - Super Stats + [44625] = 38990, -- Scroll of Enchant Gloves - Armsman + [44629] = 38991, -- Scroll of Enchant Weapon - Exceptional Spellpower + [44630] = 38992, -- Scroll of Enchant 2H Weapon - Greater Savagery + [44631] = 38993, -- Scroll of Enchant Cloak - Shadow Armor + [44633] = 38995, -- Scroll of Enchant Weapon - Exceptional Agility + [44635] = 38997, -- Scroll of Enchant Bracers - Greater Spellpower + [46578] = 38998, -- Scroll of Enchant Weapon - Deathfrost + [46594] = 38999, -- Scroll of Enchant Chest - Defense + [47051] = 39000, -- Scroll of Enchant Cloak - Steelweave + [47672] = 39001, -- Scroll of Enchant Cloak - Mighty Armor + [47766] = 39002, -- Scroll of Enchant Chest - Greater Defense + [47898] = 39003, -- Scroll of Enchant Cloak - Greater Speed + [47899] = 39004, -- Scroll of Enchant Cloak - Wisdom + [47900] = 39005, -- Scroll of Enchant Chest - Super Health + [47901] = 39006, -- Scroll of Enchant Boots - Tuskarr's Vitality + [59619] = 44497, -- Scroll of Enchant Weapon - Accuracy + [59621] = 44493, -- Scroll of Enchant Weapon - Berserking + [59625] = 43987, -- Scroll of Enchant Weapon - Black Magic + [60606] = 44449, -- Scroll of Enchant Boots - Assault + [60609] = 44456, -- Scroll of Enchant Cloak - Speed + [60616] = 38971, -- Scroll of Enchant Bracers - Striking + [60621] = 44453, -- Scroll of Enchant Weapon - Greater Potency + [60623] = 38986, -- Scroll of Enchant Boots - Icewalker + [60653] = 44455, -- Scroll of Enchant Shield - Greater Intellect + [60663] = 44457, -- Scroll of Enchant Cloak - Major Agility + [60668] = 44458, -- Scroll of Enchant Gloves - Crusher + [60691] = 44463, -- Scroll of Enchant 2H Weapon - Massacre + [60692] = 44465, -- Scroll of Enchant Chest - Powerful Stats + [60707] = 44466, -- Scroll of Enchant Weapon - Superior Potency + [60714] = 44467, -- Scroll of Enchant Weapon - Mighty Spellpower + [60763] = 44469, -- Scroll of Enchant Boots - Greater Assault + [60767] = 44470, -- Scroll of Enchant Bracer - Superior Spellpower + [62256] = 44947, -- Scroll of Enchant Bracer - Major Stamina + [62257] = 44946, -- Scroll of Enchant Weapon - Titanguard + [62948] = 45056, -- Scroll of Enchant Staff - Greater Spellpower + [62959] = 45060, -- Scroll of Enchant Staff - Spellpower + [63746] = 45628, -- Scroll of Enchant Boots - Lesser Accuracy + [64441] = 46026, -- Scroll of Enchant Weapon - Blade Ward + [64579] = 46098, -- Scroll of Enchant Weapon - Blood Draining + [71692] = 50816, -- Scroll of Enchant Gloves - Angler + [968676] = 967760, -- Scroll of Enchant Weapon - Unstoppable Assault I + [968677] = 967761, -- Scroll of Enchant Weapon - Unstoppable Assault II + [968678] = 967762, -- Scroll of Enchant Weapon - Unstoppable Assault III + [968679] = 967763, -- Scroll of Enchant Weapon - Lucid Assault I + [968680] = 967764, -- Scroll of Enchant Weapon - Lucid Assault II + [968681] = 967765, -- Scroll of Enchant Weapon - Lucid Assault III + [968682] = 967766, -- Scroll of Enchant Weapon - Spellbinder's Rage I + [968683] = 967767, -- Scroll of Enchant Weapon - Spellbinder's Rage II + [968684] = 967768, -- Scroll of Enchant Weapon - Spellbinder's Rage III + [968685] = 967769, -- Scroll of Enchant Weapon - Ninja's Focus I + [968686] = 967770, -- Scroll of Enchant Weapon - Ninja's Focus II + [968687] = 967771, -- Scroll of Enchant Weapon - Ninja's Focus III + [968688] = 967772, -- Scroll of Enchant Weapon - Grovewarden's Blessing I + [968689] = 967773, -- Scroll of Enchant Weapon - Grovewarden's Blessing II + [968690] = 967774, -- Scroll of Enchant Weapon - Grovewarden's Blessing III + [968691] = 967775, -- Scroll of Enchant Weapon - Viscious Assault I + [968692] = 967776, -- Scroll of Enchant Weapon - Viscious Assault II + [968693] = 967777, -- Scroll of Enchant Weapon - Viscious Assault III + [968694] = 967778, -- Scroll of Enchant Weapon - Arcane Dexterity I + [968695] = 967779, -- Scroll of Enchant Weapon - Arcane Dexterity II + [968696] = 967780, -- Scroll of Enchant Weapon - Arcane Dexterity III + [968697] = 967781, -- Scroll of Enchant Weapon - Arcane Artillery I + [968698] = 967782, -- Scroll of Enchant Weapon - Arcane Artillery II + [968699] = 967783, -- Scroll of Enchant Weapon - Arcane Artillery III + [968700] = 967784, -- Scroll of Enchant Weapon - Arcane Precision I + [968701] = 967785, -- Scroll of Enchant Weapon - Arcane Precision II + [968702] = 967786, -- Scroll of Enchant Weapon - Arcane Precision III + [968770] = 967787, -- Scroll of Enchant Weapon - Crusader II + [968771] = 967788, -- Scroll of Enchant Weapon - Crusader III + [1968677] = 1204125, -- Scroll of Enchant Weapon - Void Assault + [1968678] = 1204126, -- Scroll of Enchant Weapon - Overpowering Void Assault + [1968680] = 1204127, -- Scroll of Enchant Weapon - Dread Assault + [1968681] = 1204128, -- Scroll of Enchant Weapon - Overpowering Dread Assault + [1968683] = 1204129, -- Scroll of Enchant Weapon - Twisted Evoker + [1968684] = 1204130, -- Scroll of Enchant Weapon - Overpowering Twisted Evoker + [1968686] = 1204131, -- Scroll of Enchant Weapon - Twisted Assault + [1968687] = 1204132, -- Scroll of Enchant Weapon - Overpowering Twisted Assault + [1968689] = 1204133, -- Scroll of Enchant Weapon - Twisted Channeler + [1968690] = 1204134, -- Scroll of Enchant Weapon - Overpowering Twisted Channeler + [1968692] = 1204135, -- Scroll of Enchant Weapon - Dread Omen Strikes + [1968693] = 1204136, -- Scroll of Enchant Weapon - Overpowering Dread Omen Strikes + [1968695] = 1204137, -- Scroll of Enchant Weapon - Void Flows + [1968696] = 1204138, -- Scroll of Enchant Weapon - Overpowering Void Flows + [1968698] = 1204139, -- Scroll of Enchant Weapon - Void Blasting + [1968699] = 1204140, -- Scroll of Enchant Weapon - Overpowering Void Blasting + [1968701] = 1204141, -- Scroll of Enchant Weapon - Dread Precision + [1968702] = 1204142, -- Scroll of Enchant Weapon - Overpowering Dread Precision + [1968770] = 1204143, -- Scroll of Enchant Weapon - Twisted Crusader + [1968771] = 1204144, -- Scroll of Enchant Weapon - Overpowering Twisted Crusader +} + \ No newline at end of file diff --git a/TradeSkillMaster_Crafting/Modules/Gather.lua b/TradeSkillMaster_Crafting/Modules/Gather.lua index 08b9595..6f603f0 100644 --- a/TradeSkillMaster_Crafting/Modules/Gather.lua +++ b/TradeSkillMaster_Crafting/Modules/Gather.lua @@ -23,14 +23,14 @@ function Gather:BuyFromMerchant(neededMats) while toBuy > 0 do BuyMerchantItem(i, math.min(toBuy, maxStack)) toBuy = toBuy - maxStack - TSM.db.factionrealm.gathering.gatheredMats = true + TSM.db.realm.gathering.gatheredMats = true end end end end function Gather:gatherItems(source, task) - local items = TSM.db.factionrealm.gathering.availableMats + local items = TSM.db.realm.gathering.availableMats if source == L["Vendor"] then Gather:BuyFromMerchant(items) @@ -58,7 +58,7 @@ function Gather:GatherBank(moveItems) else TSM:Print(L["Gathering Crafting Mats"]) TSMAPI:MoveItems(moveItems, Gather.PrintMsg) - TSM.db.factionrealm.gathering.gatheredMats = true + TSM.db.realm.gathering.gatheredMats = true end end @@ -83,11 +83,11 @@ function Gather:MailItems(neededItems) if next(neededItems) == nil then TSM:Print(L["Nothing to Mail"]) else - local crafter = TSM.db.factionrealm.gathering.crafter + local crafter = TSM.db.realm.gathering.crafter if crafter then TSM:Print(format(L["Mailing Craft Mats to %s"], crafter)) TSMAPI:ModuleAPI("Mailing", "mailItems", neededItems, crafter, Gather.PrintMsg) - TSM.db.factionrealm.gathering.gatheredMats = true + TSM.db.realm.gathering.gatheredMats = true end end end @@ -111,7 +111,7 @@ local function ShoppingCallback(remainingQty, boughtItem, stackSize) if TSM.Inventory.gatherItem and boughtItem ~= TSM.Inventory.gatherItem then for itemString, data in pairs(TSMAPI.Conversions[TSM.Inventory.gatherItem] or {}) do if itemString == boughtItem then - TSM.db.factionrealm.gathering.destroyingMats[boughtItem] = (TSM.db.factionrealm.gathering.destroyingMats[boughtItem] or 0) + stackSize + TSM.db.realm.gathering.destroyingMats[boughtItem] = (TSM.db.realm.gathering.destroyingMats[boughtItem] or 0) + stackSize end end end @@ -125,10 +125,10 @@ end function Gather:ShoppingSearch(itemString, need, ignoreMaxQty) TSM.Inventory.gatherQuantity = nil local matPrice = TSMAPI:FormatTextMoney(TSM.Cost:GetMatCost(itemString)) - if not TSM.db.factionrealm.gathering.destroyDisable then + if not TSM.db.realm.gathering.destroyDisable then if TSMAPI.InkConversions[itemString] then TSM.Inventory.gatherItem = itemString - if TSM.db.factionrealm.gathering.evenStacks then + if TSM.db.realm.gathering.evenStacks then if ignoreMaxQty then TSMAPI:ModuleAPI("Shopping", "runDestroySearch", TSMAPI:GetSafeItemInfo(itemString) .. "/even", ShoppingCallback) else @@ -154,7 +154,7 @@ function Gather:ShoppingSearch(itemString, need, ignoreMaxQty) break end if convertSource == "mill" or convertSource == "prospect" then - if TSM.db.factionrealm.gathering.evenStacks then + if TSM.db.realm.gathering.evenStacks then if ignoreMaxQty then TSMAPI:ModuleAPI("Shopping", "runDestroySearch", TSMAPI:GetSafeItemInfo(itemString) .. "/even", ShoppingCallback) else diff --git a/TradeSkillMaster_Crafting/Modules/Inventory.lua b/TradeSkillMaster_Crafting/Modules/Inventory.lua index cc9409c..4fbce8b 100644 --- a/TradeSkillMaster_Crafting/Modules/Inventory.lua +++ b/TradeSkillMaster_Crafting/Modules/Inventory.lua @@ -204,7 +204,7 @@ end end -- add mail tasks for destroyable items bought through shopping search (exclude items already added to mail tasks) - for itemString, quantity in pairs(TSM.db.factionrealm.gathering.destroyingMats) do + for itemString, quantity in pairs(TSM.db.realm.gathering.destroyingMats) do if mail[itemString] and not shortItems[itemString] then mailItems[itemString] = quantity end @@ -256,44 +256,44 @@ local need = max(quantity - (TSM.Inventory:GetTotalQuantity(itemString) or 0), 0) -- conversion items for destroyItem, data in pairs(TSMAPI.Conversions[itemString] or {}) do - if TSM.db.factionrealm.gathering.destroyingMats[destroyItem] then + if TSM.db.realm.gathering.destroyingMats[destroyItem] then if need > 0 then local destroyNeed if data.source == "mill" then - destroyNeed = floor(TSM.db.factionrealm.gathering.destroyingMats[destroyItem] / 5) + destroyNeed = floor(TSM.db.realm.gathering.destroyingMats[destroyItem] / 5) if destroyNeed > 0 then millItems[destroyItem] = (millItems[destroyItem] or 0) + destroyNeed end elseif data.source == "prospect" then - destroyNeed = floor(TSM.db.factionrealm.gathering.destroyingMats[destroyItem] / 5) + destroyNeed = floor(TSM.db.realm.gathering.destroyingMats[destroyItem] / 5) if destroyNeed > 0 then prospectItems[destroyItem] = (prospectItems[destroyItem] or 0) + destroyNeed end elseif data.source == "transform" then if data.rate == 1 / 3 then - destroyNeed = floor(TSM.db.factionrealm.gathering.destroyingMats[destroyItem] / 3) + destroyNeed = floor(TSM.db.realm.gathering.destroyingMats[destroyItem] / 3) elseif data.rate == 1 / 10 then - destroyNeed = floor(TSM.db.factionrealm.gathering.destroyingMats[destroyItem] / 10) + destroyNeed = floor(TSM.db.realm.gathering.destroyingMats[destroyItem] / 10) else - destroyNeed = TSM.db.factionrealm.gathering.destroyingMats[destroyItem] + destroyNeed = TSM.db.realm.gathering.destroyingMats[destroyItem] end if destroyNeed > 0 then transformItems[destroyItem] = (transformItems[destroyItem] or 0) + destroyNeed end end else - TSM.db.factionrealm.gathering.destroyingMats[destroyItem] = nil + TSM.db.realm.gathering.destroyingMats[destroyItem] = nil end end end -- disenchantable items - if next(TSM.db.factionrealm.gathering.destroyingMats) then - for deItemString, quantity in pairs(TSM.db.factionrealm.gathering.destroyingMats) do + if next(TSM.db.realm.gathering.destroyingMats) then + for deItemString, quantity in pairs(TSM.db.realm.gathering.destroyingMats) do if Inventory:IsDisenchantable(deItemString) then if need > 0 then deItems[deItemString] = quantity else - TSM.db.factionrealm.gathering.destroyingMats[deItemString] = nil + TSM.db.realm.gathering.destroyingMats[deItemString] = nil end end end diff --git a/TradeSkillMaster_Crafting/Modules/Options.lua b/TradeSkillMaster_Crafting/Modules/Options.lua index dc611a5..623a5aa 100644 --- a/TradeSkillMaster_Crafting/Modules/Options.lua +++ b/TradeSkillMaster_Crafting/Modules/Options.lua @@ -342,7 +342,7 @@ function Options:LoadGeneralSettings(container) { type = "CheckBox", label = L["Gather All Professions by Default if Only One Crafter"], - settingInfo = { TSM.db.factionrealm.gathering, "gatherAll" }, + settingInfo = { TSM.db.realm.gathering, "gatherAll" }, relativeWidth = 1, tooltip = L["If checked, if there is only one crafter for the craft queue clicking gather will gather for all professions for that crafter"], }, @@ -491,7 +491,7 @@ function Options:UpdateCraftST() if not craftST then return end local stData = {} local bagTotal, auctionTotal, otherTotal = TSM.Inventory:GetTotals() - for spellID, data in pairs(TSM.db.factionrealm.crafts) do + for spellID, data in pairs(TSM.db.realm.crafts) do local isFiltered local name, link = TSMAPI:GetSafeItemInfo(data.itemID) @@ -572,7 +572,7 @@ function Options:LoadCraftsPage(container) filters = {filter="", profession="", dpSelection="all", haveMats=nil, queueIncr=1} local professionList = { [""] = L[""] } - for _, data in pairs(TSM.db.factionrealm.crafts) do + for _, data in pairs(TSM.db.realm.crafts) do professionList[data.profession] = data.profession end @@ -704,7 +704,7 @@ function Options:LoadCraftsPage(container) local handlers = { OnClick = function(st, data, self, button) if not data then return end - local craft = TSM.db.factionrealm.crafts[data.spellID] + local craft = TSM.db.realm.crafts[data.spellID] if button == "LeftButton" then craft.queued = craft.queued + filters.queueIncr elseif button == "RightButton" then @@ -747,7 +747,7 @@ function Options:LoadCraftsPage(container) end function Options:ResetDefaultPrice() - for itemString, data in pairs(TSM.db.factionrealm.mats) do + for itemString, data in pairs(TSM.db.realm.mats) do if data.customValue then data.customValue = nil end @@ -757,12 +757,12 @@ end function Options:UpdateMatST() local items = {} - for _, data in pairs(TSM.db.factionrealm.crafts) do + for _, data in pairs(TSM.db.realm.crafts) do if filters.ddSelection == "none" or data.profession == filters.ddSelection then for itemString in pairs(data.mats) do - if filters.dpSelection == "all" or (filters.dpSelection == "default" and not TSM.db.factionrealm.mats[itemString].customValue) or (filters.dpSelection == "custom" and TSM.db.factionrealm.mats[itemString].customValue) then - if TSM.db.factionrealm.mats[itemString] and TSM.db.factionrealm.mats[itemString].name then -- sanity check - items[itemString] = TSM.db.factionrealm.mats[itemString].name + if filters.dpSelection == "all" or (filters.dpSelection == "default" and not TSM.db.realm.mats[itemString].customValue) or (filters.dpSelection == "custom" and TSM.db.realm.mats[itemString].customValue) then + if TSM.db.realm.mats[itemString] and TSM.db.realm.mats[itemString].name then -- sanity check + items[itemString] = TSM.db.realm.mats[itemString].name end end end @@ -776,7 +776,7 @@ function Options:UpdateMatST() if strfind(strlower(name), filters.filter) then local professions = {} local professionList = {} - for _, data in pairs(TSM.db.factionrealm.crafts) do + for _, data in pairs(TSM.db.realm.crafts) do if data.mats[itemString] then if not professions[data.profession] then professions[data.profession] = true @@ -787,7 +787,7 @@ function Options:UpdateMatST() sort(professionList) local professionsUsed = table.concat(professionList, ",") - local mat = TSM.db.factionrealm.mats[itemString] + local mat = TSM.db.realm.mats[itemString] local cost = TSM:GetCustomPrice(mat.customValue or TSM.db.global.defaultMatCostMethod, itemString) or 0 local quantity = inventoryTotals[itemString] or 0 tinsert(stData, { @@ -824,7 +824,7 @@ function Options:LoadMaterialsPage(container) filters = {filter="", ddSelection="none", dpSelection="all"} local ddList = { ["none"] = L[""] } - for _, data in pairs(TSM.db.factionrealm.crafts) do + for _, data in pairs(TSM.db.realm.crafts) do ddList[data.profession] = data.profession end @@ -962,7 +962,7 @@ end -- Material Options Window function Options:ShowMatOptionsWindow(parent, itemString) if Options.OpenWindow then Options.OpenWindow:Hide() end - local mat = TSM.db.factionrealm.mats[itemString] + local mat = TSM.db.realm.mats[itemString] if not mat then return end local link = select(2, TSMAPI:GetSafeItemInfo(itemString)) or mat.name local cost = TSM:GetCustomPrice(mat.customValue or TSM.db.global.defaultMatCostMethod, itemString) or 0 diff --git a/TradeSkillMaster_Crafting/Modules/Queue.lua b/TradeSkillMaster_Crafting/Modules/Queue.lua index 5ab8151..82532b9 100644 --- a/TradeSkillMaster_Crafting/Modules/Queue.lua +++ b/TradeSkillMaster_Crafting/Modules/Queue.lua @@ -43,7 +43,7 @@ function Queue:CreateRestockQueue(groupInfo) for itemString in pairs(data.items) do itemString = TSMAPI:GetItemString(itemString) local spellID = TSM.craftReverseLookup[itemString] and TSM.craftReverseLookup[itemString][1] - if spellID and TSM.db.factionrealm.crafts[spellID] then + if spellID and TSM.db.realm.crafts[spellID] then local maxQueueCount = max(opSettings.maxRestock - TSM.Inventory:GetTotalQuantity(itemString), 0) local numToQueue = 0 @@ -60,7 +60,7 @@ function Queue:CreateRestockQueue(groupInfo) end end - local craft = TSM.db.factionrealm.crafts[spellID] + local craft = TSM.db.realm.crafts[spellID] craft.queued = floor(numToQueue / craft.numResult) craft.queued = craft.queued >= opSettings.minRestock and craft.queued or 0 if craft.queued > 0 then @@ -84,12 +84,12 @@ function Queue:HasLoop(itemString, steps, visited) if visited[itemString] then return true end visited[itemString] = true local craftCost = TSM:GetCustomPrice("Crafting", itemString) - local mat = TSM.db.factionrealm.mats[itemString] + local mat = TSM.db.realm.mats[itemString] local lowestCost = TSM:GetCustomPrice(mat.customValue or TSM.db.global.defaultMatCostMethod, itemString) if craftCost and lowestCost and craftCost <= lowestCost and (not TSM.db.global.neverCraftInks or not TSMAPI.InkConversions[itemString]) then local spellID = TSM.Cost:GetLowestCraftPrices(itemString, true) - if spellID and TSM.db.factionrealm.crafts[spellID] then - for matItemString in pairs(TSM.db.factionrealm.crafts[spellID].mats) do + if spellID and TSM.db.realm.crafts[spellID] then + for matItemString in pairs(TSM.db.realm.crafts[spellID].mats) do if Queue:HasLoop(matItemString, steps, CopyTable(visited)) then return true end @@ -123,18 +123,18 @@ function Queue:GetIntermediateCrafts(mats, usedItems, usedMats, tempMats) end if quantity > 0 and not Queue:HasLoop(itemString, 0, {}) then - local mat = TSM.db.factionrealm.mats[itemString] + local mat = TSM.db.realm.mats[itemString] local craftCost = TSM:GetCustomPrice("Crafting", itemString) local lowestCost = TSM:GetCustomPrice(mat.customValue or TSM.db.global.defaultMatCostMethod, itemString) if craftCost and lowestCost and craftCost <= lowestCost and (not TSM.db.global.neverCraftInks or not TSMAPI.InkConversions[itemString]) then local spellID = TSM.Cost:GetLowestCraftPrices(itemString, true) - if spellID and TSM.db.factionrealm.crafts[spellID] then - local numResult = TSM.db.factionrealm.crafts[spellID].numResult + if spellID and TSM.db.realm.crafts[spellID] then + local numResult = TSM.db.realm.crafts[spellID].numResult quantity = ceil(quantity / numResult) - subCrafts[TSM.db.factionrealm.crafts[spellID].profession] = subCrafts[TSM.db.factionrealm.crafts[spellID].profession] or {} - subCrafts[TSM.db.factionrealm.crafts[spellID].profession][spellID] = (subCrafts[TSM.db.factionrealm.crafts[spellID].profession][spellID] or 0) + quantity - TSM.db.factionrealm.crafts[spellID].queued = TSM.db.factionrealm.crafts[spellID].queued + quantity - TSM.db.factionrealm.crafts[spellID].intermediateQueued = (TSM.db.factionrealm.crafts[spellID].intermediateQueued or 0) + quantity + subCrafts[TSM.db.realm.crafts[spellID].profession] = subCrafts[TSM.db.realm.crafts[spellID].profession] or {} + subCrafts[TSM.db.realm.crafts[spellID].profession][spellID] = (subCrafts[TSM.db.realm.crafts[spellID].profession][spellID] or 0) + quantity + TSM.db.realm.crafts[spellID].queued = TSM.db.realm.crafts[spellID].queued + quantity + TSM.db.realm.crafts[spellID].intermediateQueued = (TSM.db.realm.crafts[spellID].intermediateQueued or 0) + quantity mats[profession][itemString] = nil usedMats[profession] = usedMats[profession] or {} usedMats[profession][itemString] = numHave @@ -148,7 +148,7 @@ function Queue:GetIntermediateCrafts(mats, usedItems, usedMats, tempMats) for profession, data in pairs(subCrafts) do for spellID, quantity in pairs(data) do newSubCrafts = true - for itemString, matQuantity in pairs(TSM.db.factionrealm.crafts[spellID].mats) do + for itemString, matQuantity in pairs(TSM.db.realm.crafts[spellID].mats) do mats[profession] = mats[profession] or {} mats[profession][itemString] = (mats[profession][itemString] or 0) + matQuantity * quantity end @@ -162,7 +162,7 @@ function Queue:GetQueue() local totalCost, totalProfit -- first queue up all the normally queued stuff - for spellID, data in pairs(TSM.db.factionrealm.crafts) do + for spellID, data in pairs(TSM.db.realm.crafts) do if data.intermediateQueued then data.queued = max(data.queued - data.intermediateQueued, 0) data.intermediateQueued = nil @@ -229,14 +229,14 @@ function Queue:GetQueue() end function Queue:ClearQueue() - for spellID, data in pairs(TSM.db.factionrealm.crafts) do + for spellID, data in pairs(TSM.db.realm.crafts) do data.queued = 0 data.intermediateQueued = nil end end function Queue:addQueue(spellID, quantity) - local craft = TSM.db.factionrealm.crafts[spellID] + local craft = TSM.db.realm.crafts[spellID] if not craft then return end quantity = quantity or 1 craft.queued = craft.queued + quantity @@ -244,7 +244,7 @@ function Queue:addQueue(spellID, quantity) end function Queue:removeQueue(spellID, quantity) - local craft = TSM.db.factionrealm.crafts[spellID] + local craft = TSM.db.realm.crafts[spellID] if not craft then return end quantity = quantity or 1 craft.queued = max(craft.queued - quantity, 0) @@ -252,6 +252,6 @@ function Queue:removeQueue(spellID, quantity) end function Queue:getQueue(spellID) - local craft = TSM.db.factionrealm.crafts[spellID] + local craft = TSM.db.realm.crafts[spellID] return craft.queued end \ No newline at end of file diff --git a/TradeSkillMaster_Crafting/Modules/SpellNames2IDs.lua b/TradeSkillMaster_Crafting/Modules/SpellNames2IDs.lua deleted file mode 100644 index acfad38..0000000 --- a/TradeSkillMaster_Crafting/Modules/SpellNames2IDs.lua +++ /dev/null @@ -1,3583 +0,0 @@ --- load the parent file (TSM) into a local variable -local TSM = select(2, ...) - --- TSM.enchantingName = GetSpellInfo(7411) - -TSM.SpellName2ID = { - ["Disenchant"] = 13262, - ["Milling"] = 51005, - --- Alchemy - ["Alchemy"] = 2259, - ["Elixir of Lion's Strength"] = 2329, - ["Minor Healing Potion"] = 2330, - ["Minor Mana Potion"] = 2331, - ["Minor Rejuvenation Potion"] = 2332, - ["Elixir of Lesser Agility"] = 2333, - ["Elixir of Minor Fortitude"] = 2334, - ["Swiftness Potion"] = 2335, - ["Elixir of Tongues"] = 2336, - ["Lesser Healing Potion"] = 2337, - ["Weak Troll's Blood Elixir"] = 3170, - ["Elixir of Wisdom"] = 3171, - ["Minor Magic Resistance Potion"] = 3172, - ["Lesser Mana Potion"] = 3173, - ["Potion of Curing"] = 3174, - ["Limited Invulnerability Potion"] = 3175, - ["Strong Troll's Blood Elixir"] = 3176, - ["Elixir of Defense"] = 3177, - ["Elixir of Ogre's Strength"] = 3188, - ["Elixir of Minor Agility"] = 3230, - ["Healing Potion"] = 3447, - ["Lesser Invisibility Potion"] = 3448, - ["Shadow Oil"] = 3449, - ["Elixir of Fortitude"] = 3450, - ["Major Troll's Blood Elixir"] = 3451, - ["Mana Potion"] = 3452, - ["Elixir of Detect Lesser Invisibility"] = 3453, - ["Frost Oil"] = 3454, - ["Discolored Healing Potion"] = 4508, - ["Lesser Stoneshield Potion"] = 4942, - ["Rage Potion"] = 6617, - ["Great Rage Potion"] = 6618, - ["Free Action Potion"] = 6624, - ["Elixir of Water Breathing"] = 7179, - ["Greater Healing Potion"] = 7181, - ["Elixir of Minor Defense"] = 7183, - ["Holy Protection Potion"] = 7255, - ["Shadow Protection Potion"] = 7256, - ["Fire Protection Potion"] = 7257, - ["Frost Protection Potion"] = 7258, - ["Nature Protection Potion"] = 7259, - ["Blackmouth Oil"] = 7836, - ["Fire Oil"] = 7837, - ["Swim Speed Potion"] = 7841, - ["Elixir of Firepower"] = 7845, - ["Elixir of Giant Growth"] = 8240, - ["Greater Mana Potion"] = 11448, - ["Elixir of Agility"] = 11449, - ["Elixir of Greater Defense"] = 11450, - ["Oil of Immolation"] = 11451, - ["Restorative Potion"] = 11452, - ["Magic Resistance Potion"] = 11453, - ["Goblin Rocket Fuel"] = 11456, - ["Superior Healing Potion"] = 11457, - ["Wildvine Potion"] = 11458, - ["Philosopher's Stone"] = 11459, - ["Elixir of Detect Undead"] = 11460, - ["Arcane Elixir"] = 11461, - ["Invisibility Potion"] = 11464, - ["Elixir of Greater Intellect"] = 11465, - ["Gift of Arthas"] = 11466, - ["Elixir of Greater Agility"] = 11467, - ["Elixir of Dream Vision"] = 11468, - ["Elixir of Giants"] = 11472, - ["Ghost Dye"] = 11473, - ["Elixir of Shadow Power"] = 11476, - ["Elixir of Demonslaying"] = 11477, - ["Elixir of Detect Demon"] = 11478, - ["Transmute: Iron to Gold"] = 11479, - ["Transmute: Mithril to Truesilver"] = 11480, - ["Catseye Elixir"] = 12609, - ["Dreamless Sleep Potion"] = 15833, - ["Transmute: Arcanite"] = 17187, - ["Stonescale Oil"] = 17551, - ["Mighty Rage Potion"] = 17552, - ["Superior Mana Potion"] = 17553, - ["Elixir of Superior Defense"] = 17554, - ["Elixir of the Sages"] = 17555, - ["Major Healing Potion"] = 17556, - ["Elixir of Brute Force"] = 17557, - ["Transmute: Air to Fire"] = 17559, - ["Transmute: Fire to Earth"] = 17560, - ["Transmute: Earth to Water"] = 17561, - ["Transmute: Water to Air"] = 17562, - ["Transmute: Undeath to Water"] = 17563, - ["Transmute: Water to Undeath"] = 17564, - ["Transmute: Life to Earth"] = 17565, - ["Transmute: Earth to Life"] = 17566, - ["Greater Stoneshield Potion"] = 17570, - ["Elixir of the Mongoose"] = 17571, - ["Purification Potion"] = 17572, - ["Greater Arcane Elixir"] = 17573, - ["Greater Fire Protection Potion"] = 17574, - ["Greater Frost Protection Potion"] = 17575, - ["Greater Nature Protection Potion"] = 17576, - ["Greater Arcane Protection Potion"] = 17577, - ["Greater Shadow Protection Potion"] = 17578, - ["Greater Holy Protection Potion"] = 17579, - ["Major Mana Potion"] = 17580, - ["Alchemist's Stone"] = 17632, - ["Potion of Petrification"] = 17634, - ["Flask of the Titans"] = 17635, - ["Flask of Distilled Wisdom"] = 17636, - ["Flask of Supreme Power"] = 17637, - ["Flask of Chromatic Resistance"] = 17638, - ["Elixir of Frost Power"] = 21923, - ["Major Rejuvenation Potion"] = 22732, - ["Elixir of Greater Water Breathing"] = 22808, - ["Gurubashi Mojo Madness"] = 24266, - ["Mageblood Elixir"] = 24365, - ["Greater Dreamless Sleep Potion"] = 24366, - ["Living Action Potion"] = 24367, - ["Mighty Troll's Blood Elixir"] = 24368, - ["Transmute: Elemental Fire"] = 25146, - ["Elixir of Greater Firepower"] = 26277, - ["Elixir of Camouflage"] = 28543, - ["Elixir of Major Strength"] = 28544, - ["Elixir of Healing Power"] = 28545, - ["Sneaking Potion"] = 28546, - ["Elixir of Major Frost Power"] = 28549, - ["Insane Strength Potion"] = 28550, - ["Super Healing Potion"] = 28551, - ["Elixir of the Searching Eye"] = 28552, - ["Elixir of Major Agility"] = 28553, - ["Shrouding Potion"] = 28554, - ["Super Mana Potion"] = 28555, - ["Elixir of Major Firepower"] = 28556, - ["Elixir of Major Defense"] = 28557, - ["Elixir of Major Shadow Power"] = 28558, - ["Major Dreamless Sleep Potion"] = 28562, - ["Heroic Potion"] = 28563, - ["Haste Potion"] = 28564, - ["Destruction Potion"] = 28565, - ["Transmute: Primal Air to Fire"] = 28566, - ["Transmute: Primal Earth to Water"] = 28567, - ["Transmute: Primal Fire to Earth"] = 28568, - ["Transmute: Primal Water to Air"] = 28569, - ["Elixir of Major Mageblood"] = 28570, - ["Major Fire Protection Potion"] = 28571, - ["Major Frost Protection Potion"] = 28572, - ["Major Nature Protection Potion"] = 28573, - ["Major Arcane Protection Potion"] = 28575, - ["Major Shadow Protection Potion"] = 28576, - ["Major Holy Protection Potion"] = 28577, - ["Elixir of Empowerment"] = 28578, - ["Ironshield Potion"] = 28579, - ["Transmute: Primal Shadow to Water"] = 28580, - ["Transmute: Primal Water to Shadow"] = 28581, - ["Transmute: Primal Mana to Fire"] = 28582, - ["Transmute: Primal Fire to Mana"] = 28583, - ["Transmute: Primal Life to Earth"] = 28584, - ["Transmute: Primal Earth to Life"] = 28585, - ["Super Rejuvenation Potion"] = 28586, - ["Flask of Fortification"] = 28587, - ["Flask of Mighty Restoration"] = 28588, - ["Flask of Relentless Assault"] = 28589, - ["Flask of Blinding Light"] = 28590, - ["Flask of Pure Death"] = 28591, - ["Transmute: Primal Might"] = 29688, - ["Transmute: Earthstorm Diamond"] = 32765, - ["Transmute: Skyfire Diamond"] = 32766, - ["Volatile Healing Potion"] = 33732, - ["Unstable Mana Potion"] = 33733, - ["Onslaught Elixir"] = 33738, - ["Adept's Elixir"] = 33740, - ["Elixir of Mastery"] = 33741, - ["Mercurial Stone"] = 38070, - ["Fel Strength Elixir"] = 38960, - ["Fel Mana Potion"] = 38961, - ["Fel Regeneration Potion"] = 38962, - ["Elixir of Major Fortitude"] = 39636, - ["Earthen Elixir"] = 39637, - ["Elixir of Draenic Wisdom"] = 39638, - ["Elixir of Ironskin"] = 39639, - ["Cauldron of Major Arcane Protection"] = 41458, - ["Cauldron of Major Fire Protection"] = 41500, - ["Cauldron of Major Frost Protection"] = 41501, - ["Cauldron of Major Nature Protection"] = 41502, - ["Cauldron of Major Shadow Protection"] = 41503, - ["Flask of Chromatic Wonder"] = 42736, - ["Mad Alchemist's Potion"] = 45061, - ["Guardian's Alchemist Stone"] = 47046, - ["Sorcerer's Alchemist Stone"] = 47048, - ["Redeemer's Alchemist Stone"] = 47049, - ["Assassin's Alchemist Stone"] = 47050, - ["Transmute: Eternal Life to Shadow"] = 53771, - ["Transmute: Eternal Life to Fire"] = 53773, - ["Transmute: Eternal Fire to Water"] = 53774, - ["Transmute: Eternal Fire to Life"] = 53775, - ["Transmute: Eternal Air to Water"] = 53776, - ["Transmute: Eternal Air to Earth"] = 53777, - ["Transmute: Eternal Shadow to Earth"] = 53779, - ["Transmute: Eternal Shadow to Life"] = 53780, - ["Transmute: Eternal Earth to Air"] = 53781, - ["Transmute: Eternal Earth to Shadow"] = 53782, - ["Transmute: Eternal Water to Air"] = 53783, - ["Transmute: Eternal Water to Fire"] = 53784, - ["Pygmy Oil"] = 53812, - ["Runic Healing Potion"] = 53836, - ["Runic Mana Potion"] = 53837, - ["Resurgent Healing Potion"] = 53838, - ["Icy Mana Potion"] = 53839, - ["Elixir of Mighty Agility"] = 53840, - ["Wrath Elixir"] = 53841, - ["Spellpower Elixir"] = 53842, - ["Elixir of Spirit"] = 53847, - ["Guru's Elixir"] = 53848, - ["Crazy Alchemist's Potion"] = 53895, - ["Elixir of Mighty Fortitude"] = 53898, - ["Lesser Flask of Toughness"] = 53899, - ["Potion of Nightmares"] = 53900, - ["Flask of the Frost Wyrm"] = 53901, - ["Flask of Stoneblood"] = 53902, - ["Flask of Endless Rage"] = 53903, - ["Powerful Rejuvenation Potion"] = 53904, - ["Indestructible Potion"] = 53905, - ["Mighty Arcane Protection Potion"] = 53936, - ["Mighty Frost Protection Potion"] = 53937, - ["Mighty Shadow Protection Potion"] = 53938, - ["Mighty Fire Protection Potion"] = 53939, - ["Mighty Nature Protection Potion"] = 53942, - ["Transmute: Eternal Might"] = 54020, - ["Flask of Pure Mojo"] = 54213, - ["Elixir of Mighty Strength"] = 54218, - ["Elixir of Protection"] = 54220, - ["Potion of Speed"] = 54221, - ["Potion of Wild Magic"] = 54222, - ["Elixir of Mighty Mageblood"] = 56519, - ["Transmute: Skyflare Diamond"] = 57425, - ["Transmute: Earthsiege Diamond"] = 57427, - ["Endless Mana Potion"] = 58868, - ["Endless Healing Potion"] = 58871, - ["Transmute: Titanium"] = 60350, - ["Elixir of Accuracy"] = 60354, - ["Elixir of Deadly Strikes"] = 60355, - ["Elixir of Mighty Defense"] = 60356, - ["Elixir of Expertise"] = 60357, - ["Elixir of Armor Piercing"] = 60365, - ["Elixir of Lightning Speed"] = 60366, - ["Elixir of Mighty Thoughts"] = 60367, - ["Mercurial Alchemist Stone"] = 60396, - ["Indestructible Alchemist Stone"] = 60403, - ["Mighty Alchemist Stone"] = 60405, - ["Northrend Alchemy Research"] = 60893, - ["Lesser Flask of Resistance"] = 62213, - ["Ethereal Oil"] = 62409, - ["Elixir of Water Walking"] = 62410, - ["Elixir of Minor Accuracy"] = 63732, - ["Transmute: Ametrine"] = 66658, - ["Transmute: Cardinal Ruby"] = 66659, - ["Transmute: King's Amber"] = 66660, - ["Transmute: Dreadstone"] = 66662, - ["Transmute: Majestic Zircon"] = 66663, - ["Transmute: Eye of Zul"] = 66664, - ["Flask of the North"] = 67025, - - - --- Blacksmithing - ["Blacksmithing"] = 2018, - ["Rough Sharpening Stone"] = 2660, - ["Copper Chain Belt"] = 2661, - ["Copper Chain Pants"] = 2662, - ["Copper Bracers"] = 2663, - ["Runed Copper Bracers"] = 2664, - ["Coarse Sharpening Stone"] = 2665, - ["Runed Copper Belt"] = 2666, - ["Runed Copper Breastplate"] = 2667, - ["Rough Bronze Leggings"] = 2668, - ["Rough Bronze Cuirass"] = 2670, - ["Rough Bronze Bracers"] = 2671, - ["Patterned Bronze Bracers"] = 2672, - ["Silvered Bronze Breastplate"] = 2673, - ["Heavy Sharpening Stone"] = 2674, - ["Shining Silver Breastplate"] = 2675, - ["Copper Mace"] = 2737, - ["Copper Axe"] = 2738, - ["Copper Shortsword"] = 2739, - ["Bronze Mace"] = 2740, - ["Bronze Axe"] = 2741, - ["Bronze Shortsword"] = 2742, - ["Rough Weightstone"] = 3115, - ["Coarse Weightstone"] = 3116, - ["Heavy Weightstone"] = 3117, - ["Heavy Copper Broadsword"] = 3292, - ["Copper Battle Axe"] = 3293, - ["Thick War Axe"] = 3294, - ["Deadly Bronze Poniard"] = 3295, - ["Heavy Bronze Mace"] = 3296, - ["Mighty Iron Hammer"] = 3297, - ["Copper Chain Boots"] = 3319, - ["Rough Grinding Stone"] = 3320, - ["Copper Chain Vest"] = 3321, - ["Runed Copper Gauntlets"] = 3323, - ["Runed Copper Pants"] = 3324, - ["Gemmed Copper Gauntlets"] = 3325, - ["Coarse Grinding Stone"] = 3326, - ["Rough Bronze Shoulders"] = 3328, - ["Silvered Bronze Shoulders"] = 3330, - ["Silvered Bronze Boots"] = 3331, - ["Silvered Bronze Gauntlets"] = 3333, - ["Green Iron Boots"] = 3334, - ["Green Iron Gauntlets"] = 3336, - ["Heavy Grinding Stone"] = 3337, - ["Big Bronze Knife"] = 3491, - ["Hardened Iron Shortsword"] = 3492, - ["Jade Serpentblade"] = 3493, - ["Solid Iron Maul"] = 3494, - ["Golden Iron Destroyer"] = 3495, - ["Moonsteel Broadsword"] = 3496, - ["Frost Tiger Blade"] = 3497, - ["Massive Iron Axe"] = 3498, - ["Shadow Crescent Axe"] = 3500, - ["Green Iron Bracers"] = 3501, - ["Green Iron Helm"] = 3502, - ["Golden Scale Coif"] = 3503, - ["Green Iron Shoulders"] = 3504, - ["Golden Scale Shoulders"] = 3505, - ["Green Iron Leggings"] = 3506, - ["Golden Scale Leggings"] = 3507, - ["Green Iron Hauberk"] = 3508, - ["Golden Scale Cuirass"] = 3511, - ["Polished Steel Boots"] = 3513, - ["Golden Scale Boots"] = 3515, - ["Pearl-handled Dagger"] = 6517, - ["Iridescent Hammer"] = 6518, - ["Iron Shield Spike"] = 7221, - ["Iron Counterweight"] = 7222, - ["Golden Scale Bracers"] = 7223, - ["Steel Weapon Chain"] = 7224, - ["Heavy Copper Maul"] = 7408, - ["Rough Bronze Boots"] = 7817, - ["Silver Rod"] = 7818, - ["Ironforge Chain"] = 8366, - ["Ironforge Breastplate"] = 8367, - ["Ironforge Gauntlets"] = 8368, - ["Iron Buckle"] = 8768, - ["Copper Dagger"] = 8880, - ["Barbaric Iron Shoulders"] = 9811, - ["Barbaric Iron Breastplate"] = 9813, - ["Barbaric Iron Helm"] = 9814, - ["Barbaric Iron Boots"] = 9818, - ["Barbaric Iron Gloves"] = 9820, - ["Steel Breastplate"] = 9916, - ["Solid Sharpening Stone"] = 9918, - ["Solid Grinding Stone"] = 9920, - ["Solid Weightstone"] = 9921, - ["Heavy Mithril Shoulder"] = 9926, - ["Heavy Mithril Gauntlet"] = 9928, - ["Mithril Scale Pants"] = 9931, - ["Heavy Mithril Pants"] = 9933, - ["Steel Plate Helm"] = 9935, - ["Mithril Scale Bracers"] = 9937, - ["Mithril Shield Spike"] = 9939, - ["Mithril Scale Gloves"] = 9942, - ["Ornate Mithril Pants"] = 9945, - ["Ornate Mithril Gloves"] = 9950, - ["Ornate Mithril Shoulder"] = 9952, - ["Truesilver Gauntlets"] = 9954, - ["Orcish War Leggings"] = 9957, - ["Heavy Mithril Breastplate"] = 9959, - ["Mithril Coif"] = 9961, - ["Mithril Spurs"] = 9964, - ["Mithril Scale Shoulders"] = 9966, - ["Heavy Mithril Boots"] = 9968, - ["Heavy Mithril Helm"] = 9970, - ["Ornate Mithril Breastplate"] = 9972, - ["Truesilver Breastplate"] = 9974, - ["Ornate Mithril Boots"] = 9979, - ["Ornate Mithril Helm"] = 9980, - ["Copper Claymore"] = 9983, - ["Bronze Warhammer"] = 9985, - ["Bronze Greatsword"] = 9986, - ["Bronze Battle Axe"] = 9987, - ["Heavy Mithril Axe"] = 9993, - ["Blue Glittering Axe"] = 9995, - ["Wicked Mithril Blade"] = 9997, - ["Big Black Mace"] = 10001, - ["The Shatterer"] = 10003, - ["Dazzling Mithril Rapier"] = 10005, - ["Phantom Blade"] = 10007, - ["Runed Mithril Hammer"] = 10009, - ["Blight"] = 10011, - ["Ebon Shiv"] = 10013, - ["Truesilver Champion"] = 10015, - ["Inlaid Mithril Cylinder"] = 11454, - ["Golden Scale Gauntlets"] = 11643, - ["Silvered Bronze Leggings"] = 12259, - ["Rough Copper Vest"] = 12260, - ["Golden Rod"] = 14379, - ["Truesilver Rod"] = 14380, - ["Dark Iron Pulverizer"] = 15292, - ["Dark Iron Mail"] = 15293, - ["Dark Iron Sunderer"] = 15294, - ["Dark Iron Shoulders"] = 15295, - ["Dark Iron Plate"] = 15296, - ["Glinting Steel Dagger"] = 15972, - ["Searing Golden Blade"] = 15973, - ["Dense Grinding Stone"] = 16639, - ["Dense Weightstone"] = 16640, - ["Dense Sharpening Stone"] = 16641, - ["Thorium Armor"] = 16642, - ["Thorium Belt"] = 16643, - ["Thorium Bracers"] = 16644, - ["Radiant Belt"] = 16645, - ["Imperial Plate Shoulders"] = 16646, - ["Imperial Plate Belt"] = 16647, - ["Radiant Breastplate"] = 16648, - ["Imperial Plate Bracers"] = 16649, - ["Wildthorn Mail"] = 16650, - ["Thorium Shield Spike"] = 16651, - ["Thorium Boots"] = 16652, - ["Thorium Helm"] = 16653, - ["Radiant Gloves"] = 16654, - ["Fiery Plate Gauntlets"] = 16655, - ["Radiant Boots"] = 16656, - ["Imperial Plate Boots"] = 16657, - ["Imperial Plate Helm"] = 16658, - ["Radiant Circlet"] = 16659, - ["Dawnbringer Shoulders"] = 16660, - ["Storm Gauntlets"] = 16661, - ["Thorium Leggings"] = 16662, - ["Imperial Plate Chest"] = 16663, - ["Runic Plate Shoulders"] = 16664, - ["Runic Plate Boots"] = 16665, - ["Demon Forged Breastplate"] = 16667, - ["Whitesoul Helm"] = 16724, - ["Radiant Leggings"] = 16725, - ["Runic Plate Helm"] = 16726, - ["Helm of the Great Chief"] = 16728, - ["Lionheart Helm"] = 16729, - ["Imperial Plate Leggings"] = 16730, - ["Runic Breastplate"] = 16731, - ["Runic Plate Leggings"] = 16732, - ["Stronghold Gauntlets"] = 16741, - ["Enchanted Thorium Helm"] = 16742, - ["Enchanted Thorium Leggings"] = 16744, - ["Enchanted Thorium Breastplate"] = 16745, - ["Invulnerable Mail"] = 16746, - ["Thorium Greatsword"] = 16960, - ["Bleakwood Hew"] = 16965, - ["Inlaid Thorium Hammer"] = 16967, - ["Ornate Thorium Handaxe"] = 16969, - ["Dawn's Edge"] = 16970, - ["Huge Thorium Battleaxe"] = 16971, - ["Enchanted Battlehammer"] = 16973, - ["Blazing Rapier"] = 16978, - ["Rune Edge"] = 16980, - ["Serenity"] = 16983, - ["Volcanic Hammer"] = 16984, - ["Corruption"] = 16985, - ["Blood Talon"] = 16986, - ["Darkspear"] = 16987, - ["Hammer of the Titans"] = 16988, - ["Arcanite Champion"] = 16990, - ["Annihilator"] = 16991, - ["Frostguard"] = 16992, - ["Masterwork Stormhammer"] = 16993, - ["Arcanite Reaper"] = 16994, - ["Heartseeker"] = 16995, - ["Silver Skeleton Key"] = 19666, - ["Golden Skeleton Key"] = 19667, - ["Truesilver Skeleton Key"] = 19668, - ["Arcanite Skeleton Key"] = 19669, - ["Arcanite Rod"] = 20201, - ["Fiery Chain Girdle"] = 20872, - ["Fiery Chain Shoulders"] = 20873, - ["Dark Iron Bracers"] = 20874, - ["Dark Iron Leggings"] = 20876, - ["Dark Iron Reaver"] = 20890, - ["Dark Iron Destroyer"] = 20897, - ["Sulfuron Hammer"] = 21161, - ["Edge of Winter"] = 21913, - ["Elemental Sharpening Stone"] = 22757, - ["Heavy Timbermaw Belt"] = 23628, - ["Heavy Timbermaw Boots"] = 23629, - ["Girdle of the Dawn"] = 23632, - ["Gloves of the Dawn"] = 23633, - ["Dark Iron Helm"] = 23636, - ["Dark Iron Gauntlets"] = 23637, - ["Black Amnesty"] = 23638, - ["Blackfury"] = 23639, - ["Ebon Hand"] = 23650, - ["Blackguard"] = 23652, - ["Nightfall"] = 23653, - ["Bloodsoul Breastplate"] = 24136, - ["Bloodsoul Shoulders"] = 24137, - ["Bloodsoul Gauntlets"] = 24138, - ["Darksoul Breastplate"] = 24139, - ["Darksoul Leggings"] = 24140, - ["Darksoul Shoulders"] = 24141, - ["Dark Iron Boots"] = 24399, - ["Darkrune Gauntlets"] = 24912, - ["Darkrune Helm"] = 24913, - ["Darkrune Breastplate"] = 24914, - ["Heavy Obsidian Belt"] = 27585, - ["Jagged Obsidian Shield"] = 27586, - ["Thick Obsidian Breastplate"] = 27587, - ["Light Obsidian Belt"] = 27588, - ["Black Grasp of the Destroyer"] = 27589, - ["Obsidian Mail Tunic"] = 27590, - ["Titanic Leggings"] = 27829, - ["Persuader"] = 27830, - ["Sageblade"] = 27832, - ["Icebane Breastplate"] = 28242, - ["Icebane Gauntlets"] = 28243, - ["Icebane Bracers"] = 28244, - ["Ironvine Breastplate"] = 28461, - ["Ironvine Gloves"] = 28462, - ["Ironvine Belt"] = 28463, - ["Fel Iron Plate Gloves"] = 29545, - ["Fel Iron Plate Belt"] = 29547, - ["Fel Iron Plate Boots"] = 29548, - ["Fel Iron Plate Pants"] = 29549, - ["Fel Iron Breastplate"] = 29550, - ["Fel Iron Chain Coif"] = 29551, - ["Fel Iron Chain Gloves"] = 29552, - ["Fel Iron Chain Bracers"] = 29553, - ["Fel Iron Chain Tunic"] = 29556, - ["Fel Iron Hatchet"] = 29557, - ["Fel Iron Hammer"] = 29558, - ["Fel Iron Greatsword"] = 29565, - ["Adamantite Maul"] = 29566, - ["Adamantite Cleaver"] = 29568, - ["Adamantite Dagger"] = 29569, - ["Adamantite Rapier"] = 29571, - ["Adamantite Plate Bracers"] = 29603, - ["Adamantite Plate Gloves"] = 29605, - ["Adamantite Breastplate"] = 29606, - ["Enchanted Adamantite Belt"] = 29608, - ["Enchanted Adamantite Breastplate"] = 29610, - ["Enchanted Adamantite Boots"] = 29611, - ["Enchanted Adamantite Leggings"] = 29613, - ["Flamebane Bracers"] = 29614, - ["Flamebane Helm"] = 29615, - ["Flamebane Gloves"] = 29616, - ["Flamebane Breastplate"] = 29617, - ["Felsteel Gloves"] = 29619, - ["Felsteel Leggings"] = 29620, - ["Felsteel Helm"] = 29621, - ["Gauntlets of the Iron Tower"] = 29622, - ["Khorium Belt"] = 29628, - ["Khorium Pants"] = 29629, - ["Khorium Boots"] = 29630, - ["Ragesteel Gloves"] = 29642, - ["Ragesteel Helm"] = 29643, - ["Ragesteel Breastplate"] = 29645, - ["Swiftsteel Gloves"] = 29648, - ["Earthpeace Breastplate"] = 29649, - ["Fel Sharpening Stone"] = 29654, - ["Adamantite Sharpening Stone"] = 29656, - ["Felsteel Shield Spike"] = 29657, - ["Felfury Gauntlets"] = 29658, - ["Steelgrip Gauntlets"] = 29662, - ["Storm Helm"] = 29663, - ["Helm of the Stalwart Defender"] = 29664, - ["Oathkeeper's Helm"] = 29668, - ["Black Felsteel Bracers"] = 29669, - ["Bracers of the Green Fortress"] = 29671, - ["Blessed Bracers"] = 29672, - ["Felsteel Longblade"] = 29692, - ["Khorium Champion"] = 29693, - ["Fel Edged Battleaxe"] = 29694, - ["Felsteel Reaper"] = 29695, - ["Runic Hammer"] = 29696, - ["Fel Hardened Maul"] = 29697, - ["Eternium Runed Blade"] = 29698, - ["Dirge"] = 29699, - ["Hand of Eternity"] = 29700, - ["Lesser Ward of Shielding"] = 29728, - ["Greater Ward of Shielding"] = 29729, - ["Lesser Rune of Warding"] = 32284, - ["Greater Rune of Warding"] = 32285, - ["Fel Iron Rod"] = 32655, - ["Adamantite Rod"] = 32656, - ["Eternium Rod"] = 32657, - ["Nether Chain Shirt"] = 34529, - ["Twisting Nether Chain Shirt"] = 34530, - ["Breastplate of Kings"] = 34533, - ["Bulwark of Kings"] = 34534, - ["Fireguard"] = 34535, - ["Blazeguard"] = 34537, - ["Lionheart Blade"] = 34538, - ["Lionheart Champion"] = 34540, - ["The Planar Edge"] = 34541, - ["Black Planar Edge"] = 34542, - ["Lunar Crescent"] = 34543, - ["Mooncleaver"] = 34544, - ["Drakefist Hammer"] = 34545, - ["Dragonmaw"] = 34546, - ["Thunder"] = 34547, - ["Deep Thunder"] = 34548, - ["Fel Weightstone"] = 34607, - ["Adamantite Weightstone"] = 34608, - ["Thick Bronze Darts"] = 34979, - ["Whirling Steel Axes"] = 34981, - ["Enchanted Thorium Blades"] = 34982, - ["Felsteel Whisper Knives"] = 34983, - ["Earthforged Leggings"] = 36122, - ["Windforged Leggings"] = 36124, - ["Light Earthforged Blade"] = 36125, - ["Light Skyforged Axe"] = 36126, - ["Light Emberforged Hammer"] = 36128, - ["Heavy Earthforged Breastplate"] = 36129, - ["Stormforged Hauberk"] = 36130, - ["Windforged Rapier"] = 36131, - ["Stoneforged Claymore"] = 36133, - ["Stormforged Axe"] = 36134, - ["Skyforged Great Axe"] = 36135, - ["Lavaforged Warhammer"] = 36136, - ["Great Earthforged Hammer"] = 36137, - ["Embrace of the Twisting Nether"] = 36256, - ["Bulwark of the Ancient Kings"] = 36257, - ["Blazefury"] = 36258, - ["Lionheart Executioner"] = 36259, - ["Wicked Edge of the Planes"] = 36260, - ["Bloodmoon"] = 36261, - ["Dragonstrike"] = 36262, - ["Stormherald"] = 36263, - ["Belt of the Guardian"] = 36389, - ["Red Belt of Battle"] = 36390, - ["Boots of the Protector"] = 36391, - ["Red Havoc Boots"] = 36392, - ["Wildguard Breastplate"] = 38473, - ["Wildguard Leggings"] = 38475, - ["Wildguard Helm"] = 38476, - ["Iceguard Breastplate"] = 38477, - ["Iceguard Leggings"] = 38478, - ["Iceguard Helm"] = 38479, - ["Shadesteel Sabots"] = 40033, - ["Shadesteel Bracers"] = 40034, - ["Shadesteel Greaves"] = 40035, - ["Shadesteel Girdle"] = 40036, - ["Swiftsteel Bracers"] = 41132, - ["Swiftsteel Shoulders"] = 41133, - ["Dawnsteel Bracers"] = 41134, - ["Dawnsteel Shoulders"] = 41135, - ["Ragesteel Shoulders"] = 42662, - ["Adamantite Weapon Chain"] = 42688, - ["Heavy Copper Longsword"] = 43549, - ["Hammer of Righteous Might"] = 43846, - ["Sunblessed Gauntlets"] = 46140, - ["Hard Khorium Battlefists"] = 46141, - ["Sunblessed Breastplate"] = 46142, - ["Hard Khorium Battleplate"] = 46144, - ["Cobalt Legplates"] = 52567, - ["Cobalt Belt"] = 52568, - ["Cobalt Boots"] = 52569, - ["Cobalt Chestpiece"] = 52570, - ["Cobalt Helm"] = 52571, - ["Cobalt Shoulders"] = 52572, - ["Cobalt Triangle Shield"] = 54550, - ["Tempered Saronite Belt"] = 54551, - ["Tempered Saronite Boots"] = 54552, - ["Tempered Saronite Breastplate"] = 54553, - ["Tempered Saronite Legplates"] = 54554, - ["Tempered Saronite Helm"] = 54555, - ["Tempered Saronite Shoulders"] = 54556, - ["Saronite Defender"] = 54557, - ["Spiked Cobalt Helm"] = 54917, - ["Spiked Cobalt Boots"] = 54918, - ["Spiked Cobalt Shoulders"] = 54941, - ["Spiked Cobalt Chestpiece"] = 54944, - ["Spiked Cobalt Gauntlets"] = 54945, - ["Spiked Cobalt Belt"] = 54946, - ["Spiked Cobalt Legplates"] = 54947, - ["Spiked Cobalt Bracers"] = 54948, - ["Horned Cobalt Helm"] = 54949, - ["Reinforced Cobalt Shoulders"] = 54978, - ["Reinforced Cobalt Helm"] = 54979, - ["Reinforced Cobalt Legplates"] = 54980, - ["Reinforced Cobalt Chestpiece"] = 54981, - ["Saronite Protector"] = 55013, - ["Saronite Bulwark"] = 55014, - ["Tempered Saronite Gauntlets"] = 55015, - ["Tempered Saronite Bracers"] = 55017, - ["Brilliant Saronite Legplates"] = 55055, - ["Brilliant Saronite Gauntlets"] = 55056, - ["Brilliant Saronite Boots"] = 55057, - ["Brilliant Saronite Breastplate"] = 55058, - ["Honed Cobalt Cleaver"] = 55174, - ["Savage Cobalt Slicer"] = 55177, - ["Saronite Ambusher"] = 55179, - ["Saronite Shiv"] = 55181, - ["Furious Saronite Beatstick"] = 55182, - ["Corroded Saronite Edge"] = 55183, - ["Corroded Saronite Woundbringer"] = 55184, - ["Saronite Mindcrusher"] = 55185, - ["Chestplate of Conquest"] = 55186, - ["Legplates of Conquest"] = 55187, - ["Sturdy Cobalt Quickblade"] = 55200, - ["Cobalt Tenderizer"] = 55201, - ["Sure-fire Shuriken"] = 55202, - ["Forged Cobalt Claymore"] = 55203, - ["Notched Cobalt War Axe"] = 55204, - ["Deadly Saronite Dirk"] = 55206, - ["Vengeance Bindings"] = 55298, - ["Righteous Gauntlets"] = 55300, - ["Daunting Handguards"] = 55301, - ["Helm of Command"] = 55302, - ["Daunting Legplates"] = 55303, - ["Righteous Greaves"] = 55304, - ["Savage Saronite Bracers"] = 55305, - ["Savage Saronite Pauldrons"] = 55306, - ["Savage Saronite Waistguard"] = 55307, - ["Savage Saronite Walkers"] = 55308, - ["Savage Saronite Gauntlets"] = 55309, - ["Savage Saronite Legplates"] = 55310, - ["Savage Saronite Hauberk"] = 55311, - ["Savage Saronite Skullshield"] = 55312, - ["Titansteel Destroyer"] = 55369, - ["Titansteel Bonecrusher"] = 55370, - ["Titansteel Guardian"] = 55371, - ["Spiked Titansteel Helm"] = 55372, - ["Tempered Titansteel Helm"] = 55373, - ["Brilliant Titansteel Helm"] = 55374, - ["Spiked Titansteel Treads"] = 55375, - ["Tempered Titansteel Treads"] = 55376, - ["Brilliant Titansteel Treads"] = 55377, - ["Socket Bracer"] = 55628, - ["Socket Gloves"] = 55641, - ["Eternal Belt Buckle"] = 55656, - ["Titanium Rod"] = 55732, - ["Cobalt Bracers"] = 55834, - ["Cobalt Gauntlets"] = 55835, - ["Titanium Weapon Chain"] = 55839, - ["Titansteel Shanker"] = 56234, - ["Cudgel of Saronite Justice"] = 56280, - ["Titanium Shield Spike"] = 56357, - ["Titansteel Shield Wall"] = 56400, - ["Ornate Saronite Bracers"] = 56549, - ["Ornate Saronite Pauldrons"] = 56550, - ["Ornate Saronite Waistguard"] = 56551, - ["Ornate Saronite Walkers"] = 56552, - ["Ornate Saronite Gauntlets"] = 56553, - ["Ornate Saronite Legplates"] = 56554, - ["Ornate Saronite Hauberk"] = 56555, - ["Ornate Saronite Skullshield"] = 56556, - ["Cobalt Skeleton Key"] = 59405, - ["Titanium Skeleton Key"] = 59406, - ["Brilliant Saronite Belt"] = 59436, - ["Brilliant Saronite Bracers"] = 59438, - ["Brilliant Saronite Pauldrons"] = 59440, - ["Brilliant Saronite Helm"] = 59441, - ["Saronite Spellblade"] = 59442, - ["Icebane Chestguard"] = 61008, - ["Icebane Girdle"] = 61009, - ["Icebane Treads"] = 61010, - ["Titanium Plating"] = 62202, - ["Titansteel Spellblade"] = 63182, - ["Belt of the Titans"] = 63187, - ["Battlelord's Plate Boots"] = 63188, - ["Plate Girdle of Righteousness"] = 63189, - ["Treads of Destiny"] = 63190, - ["Indestructible Plate Girdle"] = 63191, - ["Spiked Deathdealers"] = 63192, - ["Breastplate of the White Knight"] = 67130, - ["Saronite Swordbreakers"] = 67131, - ["Titanium Razorplate"] = 67132, - ["Titanium Spikeguards"] = 67133, - ["Sunforged Breastplate"] = 67134, - ["Sunforged Bracers"] = 67135, - ["Puresteel Legplates"] = 70562, - ["Protectors of Life"] = 70563, - ["Legplates of Painful Death"] = 70565, - ["Hellfrozen Bonegrinders"] = 70566, - ["Pillars of Might"] = 70567, - ["Boots of Kingly Upheaval"] = 70568, - - - --- Enchanting - ["Enchanting"] = 7411, - ["Enchant Bracer - Minor Health"] = 7418, - ["Enchant Chest - Minor Health"] = 7420, - ["Runed Copper Rod"] = 7421, - ["Enchant Chest - Minor Absorption"] = 7426, - ["Enchant Bracer - Minor Deflection"] = 7428, - ["Enchant Chest - Minor Mana"] = 7443, - ["Enchant Cloak - Minor Resistance"] = 7454, - ["Enchant Bracer - Minor Stamina"] = 7457, - ["Enchant 2H Weapon - Minor Impact"] = 7745, - ["Enchant Chest - Lesser Health"] = 7748, - ["Enchant Bracer - Minor Spirit"] = 7766, - ["Enchant Cloak - Minor Protection"] = 7771, - ["Enchant Chest - Lesser Mana"] = 7776, - ["Enchant Bracer - Minor Agility"] = 7779, - ["Enchant Bracer - Minor Strength"] = 7782, - ["Enchant Weapon - Minor Beastslayer"] = 7786, - ["Enchant Weapon - Minor Striking"] = 7788, - ["Enchant 2H Weapon - Lesser Intellect"] = 7793, - ["Runed Silver Rod"] = 7795, - ["Enchant Chest - Health"] = 7857, - ["Enchant Bracer - Lesser Spirit"] = 7859, - ["Enchant Cloak - Lesser Fire Resistance"] = 7861, - ["Enchant Boots - Minor Stamina"] = 7863, - ["Enchant Boots - Minor Agility"] = 7867, - ["Enchant Shield - Minor Stamina"] = 13378, - ["Enchant 2H Weapon - Lesser Spirit"] = 13380, - ["Enchant Cloak - Minor Agility"] = 13419, - ["Enchant Cloak - Lesser Protection"] = 13421, - ["Enchant Shield - Lesser Protection"] = 13464, - ["Enchant Shield - Lesser Spirit"] = 13485, - ["Enchant Bracer - Lesser Stamina"] = 13501, - ["Enchant Weapon - Lesser Striking"] = 13503, - ["Enchant Cloak - Lesser Shadow Resistance"] = 13522, - ["Enchant 2H Weapon - Lesser Impact"] = 13529, - ["Enchant Bracer - Lesser Strength"] = 13536, - ["Enchant Chest - Lesser Absorption"] = 13538, - ["Enchant Chest - Mana"] = 13607, - ["Enchant Gloves - Mining"] = 13612, - ["Enchant Gloves - Herbalism"] = 13617, - ["Enchant Gloves - Fishing"] = 13620, - ["Enchant Bracer - Lesser Intellect"] = 13622, - ["Enchant Chest - Minor Stats"] = 13626, - ["Runed Golden Rod"] = 13628, - ["Enchant Shield - Lesser Stamina"] = 13631, - ["Enchant Cloak - Defense"] = 13635, - ["Enchant Boots - Lesser Agility"] = 13637, - ["Enchant Chest - Greater Health"] = 13640, - ["Enchant Bracer - Spirit"] = 13642, - ["Enchant Boots - Lesser Stamina"] = 13644, - ["Enchant Bracer - Lesser Deflection"] = 13646, - ["Enchant Bracer - Stamina"] = 13648, - ["Enchant Weapon - Lesser Beastslayer"] = 13653, - ["Enchant Weapon - Lesser Elemental Slayer"] = 13655, - ["Enchant Cloak - Fire Resistance"] = 13657, - ["Enchant Shield - Spirit"] = 13659, - ["Enchant Bracer - Strength"] = 13661, - ["Enchant Chest - Greater Mana"] = 13663, - ["Enchant Boots - Lesser Spirit"] = 13687, - ["Enchant Shield - Lesser Block"] = 13689, - ["Enchant Weapon - Striking"] = 13693, - ["Enchant 2H Weapon - Impact"] = 13695, - ["Enchant Gloves - Skinning"] = 13698, - ["Enchant Chest - Lesser Stats"] = 13700, - ["Runed Truesilver Rod"] = 13702, - ["Enchant Cloak - Greater Defense"] = 13746, - ["Enchant Cloak - Resistance"] = 13794, - ["Enchant Gloves - Agility"] = 13815, - ["Enchant Shield - Stamina"] = 13817, - ["Enchant Bracer - Intellect"] = 13822, - ["Enchant Boots - Stamina"] = 13836, - ["Enchant Gloves - Advanced Mining"] = 13841, - ["Enchant Bracer - Greater Spirit"] = 13846, - ["Enchant Chest - Superior Health"] = 13858, - ["Enchant Gloves - Advanced Herbalism"] = 13868, - ["Enchant Cloak - Lesser Agility"] = 13882, - ["Enchant Gloves - Strength"] = 13887, - ["Enchant Boots - Minor Speed"] = 13890, - ["Enchant Weapon - Fiery Weapon"] = 13898, - ["Enchant Shield - Greater Spirit"] = 13905, - ["Enchant Weapon - Demonslaying"] = 13915, - ["Enchant Chest - Superior Mana"] = 13917, - ["Enchant Bracer - Deflection"] = 13931, - ["Enchant Shield - Frost Resistance"] = 13933, - ["Enchant Boots - Agility"] = 13935, - ["Enchant 2H Weapon - Greater Impact"] = 13937, - ["Enchant Bracer - Greater Strength"] = 13939, - ["Enchant Chest - Stats"] = 13941, - ["Enchant Weapon - Greater Striking"] = 13943, - ["Enchant Bracer - Greater Stamina"] = 13945, - ["Enchant Gloves - Riding Skill"] = 13947, - ["Enchant Gloves - Minor Haste"] = 13948, - ["Lesser Magic Wand"] = 14293, - ["Greater Magic Wand"] = 14807, - ["Lesser Mystic Wand"] = 14809, - ["Greater Mystic Wand"] = 14810, - ["Smoking Heart of the Mountain"] = 15596, - ["Enchanted Leather"] = 17181, - ["Enchant Bracer - Greater Intellect"] = 20008, - ["Enchant Bracer - Superior Spirit"] = 20009, - ["Enchant Bracer - Superior Strength"] = 20010, - ["Enchant Bracer - Superior Stamina"] = 20011, - ["Enchant Gloves - Greater Agility"] = 20012, - ["Enchant Gloves - Greater Strength"] = 20013, - ["Enchant Cloak - Greater Resistance"] = 20014, - ["Enchant Cloak - Superior Defense"] = 20015, - ["Enchant Shield - Vitality"] = 20016, - ["Enchant Shield - Greater Stamina"] = 20017, - ["Enchant Boots - Greater Stamina"] = 20020, - ["Enchant Boots - Greater Agility"] = 20023, - ["Enchant Boots - Spirit"] = 20024, - ["Enchant Chest - Greater Stats"] = 20025, - ["Enchant Chest - Major Health"] = 20026, - ["Enchant Chest - Major Mana"] = 20028, - ["Enchant Weapon - Icy Chill"] = 20029, - ["Enchant 2H Weapon - Superior Impact"] = 20030, - ["Enchant Weapon - Superior Striking"] = 20031, - ["Enchant Weapon - Lifestealing"] = 20032, - ["Enchant Weapon - Unholy Weapon"] = 20033, - ["Enchant Weapon - Crusader"] = 20034, - ["Enchant 2H Weapon - Major Spirit"] = 20035, - ["Enchant 2H Weapon - Major Intellect"] = 20036, - ["Runed Arcanite Rod"] = 20051, - ["Enchant Weapon - Winter's Might"] = 21931, - ["Enchant Weapon - Spellpower"] = 22749, - ["Enchant Weapon - Healing Power"] = 22750, - ["Enchant Weapon - Strength"] = 23799, - ["Enchant Weapon - Agility"] = 23800, - ["Enchant Bracer - Mana Regeneration"] = 23801, - ["Enchant Bracer - Healing Power"] = 23802, - ["Enchant Weapon - Mighty Spirit"] = 23803, - ["Enchant Weapon - Mighty Intellect"] = 23804, - ["Enchant Gloves - Threat"] = 25072, - ["Enchant Gloves - Shadow Power"] = 25073, - ["Enchant Gloves - Frost Power"] = 25074, - ["Enchant Gloves - Fire Power"] = 25078, - ["Enchant Gloves - Healing Power"] = 25079, - ["Enchant Gloves - Superior Agility"] = 25080, - ["Enchant Cloak - Greater Fire Resistance"] = 25081, - ["Enchant Cloak - Greater Nature Resistance"] = 25082, - ["Enchant Cloak - Stealth"] = 25083, - ["Enchant Cloak - Subtlety"] = 25084, - ["Enchant Cloak - Dodge"] = 25086, - ["Minor Wizard Oil"] = 25124, - ["Minor Mana Oil"] = 25125, - ["Lesser Wizard Oil"] = 25126, - ["Lesser Mana Oil"] = 25127, - ["Wizard Oil"] = 25128, - ["Brilliant Wizard Oil"] = 25129, - ["Brilliant Mana Oil"] = 25130, - ["Enchant 2H Weapon - Agility"] = 27837, - ["Enchant Bracer - Brawn"] = 27899, - ["Enchant Bracer - Stats"] = 27905, - ["Enchant Bracer - Major Defense"] = 27906, - ["Enchant Bracer - Superior Healing"] = 27911, - ["Enchant Bracer - Restore Mana Prime"] = 27913, - ["Enchant Bracer - Fortitude"] = 27914, - ["Enchant Bracer - Spellpower"] = 27917, - ["Enchant Ring - Striking"] = 27920, - ["Enchant Ring - Spellpower"] = 27924, - ["Enchant Ring - Healing Power"] = 27926, - ["Enchant Ring - Stats"] = 27927, - ["Enchant Shield - Tough Shield"] = 27944, - ["Enchant Shield - Intellect"] = 27945, - ["Enchant Shield - Shield Block"] = 27946, - ["Enchant Shield - Resistance"] = 27947, - ["Enchant Boots - Vitality"] = 27948, - ["Enchant Boots - Fortitude"] = 27950, - ["Enchant Boots - Dexterity"] = 27951, - ["Enchant Boots - Surefooted"] = 27954, - ["Enchant Chest - Exceptional Health"] = 27957, - ["Enchant Chest - Exceptional Mana"] = 27958, - ["Enchant Chest - Exceptional Stats"] = 27960, - ["Enchant Cloak - Major Armor"] = 27961, - ["Enchant Cloak - Major Resistance"] = 27962, - ["Enchant Weapon - Major Striking"] = 27967, - ["Enchant Weapon - Major Intellect"] = 27968, - ["Enchant 2H Weapon - Savagery"] = 27971, - ["Enchant Weapon - Potency"] = 27972, - ["Enchant Weapon - Major Spellpower"] = 27975, - ["Enchant 2H Weapon - Major Agility"] = 27977, - ["Enchant Weapon - Sunfire"] = 27981, - ["Enchant Weapon - Soulfrost"] = 27982, - ["Enchant Weapon - Mongoose"] = 27984, - ["Enchant Weapon - Spellsurge"] = 28003, - ["Enchant Weapon - Battlemaster"] = 28004, - ["Superior Mana Oil"] = 28016, - ["Superior Wizard Oil"] = 28019, - ["Arcane Dust"] = 28021, - ["Large Prismatic Shard"] = 28022, - ["Prismatic Sphere"] = 28027, - ["Void Sphere"] = 28028, - ["Runed Fel Iron Rod"] = 32664, - ["Runed Adamantite Rod"] = 32665, - ["Runed Eternium Rod"] = 32667, - ["Enchant Chest - Major Spirit"] = 33990, - ["Enchant Chest - Restore Mana Prime"] = 33991, - ["Enchant Chest - Major Resilience"] = 33992, - ["Enchant Gloves - Blasting"] = 33993, - ["Enchant Gloves - Precise Strikes"] = 33994, - ["Enchant Gloves - Major Strength"] = 33995, - ["Enchant Gloves - Assault"] = 33996, - ["Enchant Gloves - Major Spellpower"] = 33997, - ["Enchant Gloves - Major Healing"] = 33999, - ["Enchant Bracer - Major Intellect"] = 34001, - ["Enchant Bracer - Assault"] = 34002, - ["Enchant Cloak - Spell Penetration"] = 34003, - ["Enchant Cloak - Greater Agility"] = 34004, - ["Enchant Cloak - Greater Arcane Resistance"] = 34005, - ["Enchant Cloak - Greater Shadow Resistance"] = 34006, - ["Enchant Boots - Cat's Swiftness"] = 34007, - ["Enchant Boots - Boar's Speed"] = 34008, - ["Enchant Shield - Major Stamina"] = 34009, - ["Enchant Weapon - Major Healing"] = 34010, - ["Nexus Transformation"] = 42613, - ["Small Prismatic Shard"] = 42615, - ["Enchant Weapon - Greater Agility"] = 42620, - ["Enchant Weapon - Executioner"] = 42974, - ["Enchant Shield - Resilience"] = 44383, - ["Enchant Cloak - Superior Frost Resistance"] = 44483, - ["Enchant Gloves - Expertise"] = 44484, - ["Enchant Gloves - Precision"] = 44488, - ["Enchant Shield - Defense"] = 44489, - ["Enchant Chest - Mighty Health"] = 44492, - ["Enchant Cloak - Superior Nature Resistance"] = 44494, - ["Enchant Cloak - Superior Agility"] = 44500, - ["Enchant Gloves - Gatherer"] = 44506, - ["Enchant Boots - Greater Spirit"] = 44508, - ["Enchant Chest - Greater Mana Restoration"] = 44509, - ["Enchant Weapon - Exceptional Spirit"] = 44510, - ["Enchant Gloves - Greater Assault"] = 44513, - ["Enchant Weapon - Icebreaker"] = 44524, - ["Enchant Boots - Greater Fortitude"] = 44528, - ["Enchant Gloves - Major Agility"] = 44529, - ["Enchant Bracers - Exceptional Intellect"] = 44555, - ["Enchant Cloak - Superior Fire Resistance"] = 44556, - ["Enchant Bracers - Greater Assault"] = 44575, - ["Enchant Weapon - Lifeward"] = 44576, - ["Enchant Cloak - Spell Piercing"] = 44582, - ["Enchant Boots - Greater Vitality"] = 44584, - ["Enchant Chest - Exceptional Resilience"] = 44588, - ["Enchant Boots - Superior Agility"] = 44589, - ["Enchant Cloak - Superior Shadow Resistance"] = 44590, - ["Enchant Cloak - Titanweave"] = 44591, - ["Enchant Gloves - Exceptional Spellpower"] = 44592, - ["Enchant Bracers - Major Spirit"] = 44593, - ["Enchant 2H Weapon - Scourgebane"] = 44595, - ["Enchant Cloak - Superior Arcane Resistance"] = 44596, - ["Enchant Bracers - Expertise"] = 44598, - ["Enchant Gloves - Greater Blasting"] = 44612, - ["Enchant Bracers - Greater Stats"] = 44616, - ["Enchant Weapon - Giant Slayer"] = 44621, - ["Enchant Chest - Super Stats"] = 44623, - ["Enchant Gloves - Armsman"] = 44625, - ["Enchant Weapon - Exceptional Spellpower"] = 44629, - ["Enchant 2H Weapon - Greater Savagery"] = 44630, - ["Enchant Cloak - Shadow Armor"] = 44631, - ["Enchant Weapon - Exceptional Agility"] = 44633, - ["Enchant Bracers - Greater Spellpower"] = 44635, - ["Enchant Ring - Greater Spellpower"] = 44636, - ["Enchant Ring - Assault"] = 44645, - ["Void Shatter"] = 45765, - ["Enchant Weapon - Deathfrost"] = 46578, - ["Enchant Chest - Defense"] = 46594, - ["Enchant Cloak - Steelweave"] = 47051, - ["Enchant Cloak - Mighty Armor"] = 47672, - ["Enchant Chest - Greater Defense"] = 47766, - ["Enchant Cloak - Greater Speed"] = 47898, - ["Enchant Cloak - Wisdom"] = 47899, - ["Enchant Chest - Super Health"] = 47900, - ["Enchant Boots - Tuskarr's Vitality"] = 47901, - ["Enchant Weapon - Accuracy"] = 59619, - ["Enchant Weapon - Berserking"] = 59621, - ["Enchant Weapon - Black Magic"] = 59625, - ["Enchant Ring - Stamina"] = 59636, - ["Enchant Boots - Assault"] = 60606, - ["Enchant Cloak - Speed"] = 60609, - ["Enchant Bracers - Striking"] = 60616, - ["Runed Titanium Rod"] = 60619, - ["Enchant Weapon - Greater Potency"] = 60621, - ["Enchant Boots - Icewalker"] = 60623, - ["Enchant Shield - Greater Intellect"] = 60653, - ["Enchant Cloak - Major Agility"] = 60663, - ["Enchant Gloves - Crusher"] = 60668, - ["Enchant 2H Weapon - Massacre"] = 60691, - ["Enchant Chest - Powerful Stats"] = 60692, - ["Enchant Weapon - Superior Potency"] = 60707, - ["Enchant Weapon - Mighty Spellpower"] = 60714, - ["Enchant Boots - Greater Assault"] = 60763, - ["Enchant Bracers - Superior Spellpower"] = 60767, - ["Enchant Bracers - Major Stamina"] = 62256, - ["Enchant Weapon - Titanguard"] = 62257, - ["Enchant Staff - Greater Spellpower"] = 62948, - ["Enchant Staff - Spellpower"] = 62959, - ["Enchant Boots - Lesser Accuracy"] = 63746, - ["Enchant Weapon - Blade Ward"] = 64441, - ["Enchant Weapon - Blood Draining"] = 64579, - ["Abyssal Shatter"] = 69412, - ["Enchant Gloves - Angler"] = 71692, - - - --- Engineering - ["Engineering"] = 4036, - ["Rough Blasting Powder"] = 3918, - ["Rough Dynamite"] = 3919, - ["Crafted Light Shot"] = 3920, - ["Handful of Copper Bolts"] = 3922, - ["Rough Copper Bomb"] = 3923, - ["Copper Tube"] = 3924, - ["Rough Boomstick"] = 3925, - ["Copper Modulator"] = 3926, - ["Mechanical Squirrel Box"] = 3928, - ["Coarse Blasting Powder"] = 3929, - ["Crafted Heavy Shot"] = 3930, - ["Coarse Dynamite"] = 3931, - ["Target Dummy"] = 3932, - ["Small Seaforium Charge"] = 3933, - ["Flying Tiger Goggles"] = 3934, - ["Deadly Blunderbuss"] = 3936, - ["Large Copper Bomb"] = 3937, - ["Bronze Tube"] = 3938, - ["Lovingly Crafted Boomstick"] = 3939, - ["Shadow Goggles"] = 3940, - ["Small Bronze Bomb"] = 3941, - ["Flame Deflector"] = 3944, - ["Heavy Blasting Powder"] = 3945, - ["Heavy Dynamite"] = 3946, - ["Crafted Solid Shot"] = 3947, - ["Silver-plated Shotgun"] = 3949, - ["Big Bronze Bomb"] = 3950, - ["Minor Recombobulator"] = 3952, - ["Bronze Framework"] = 3953, - ["Moonsight Rifle"] = 3954, - ["Explosive Sheep"] = 3955, - ["Green Tinted Goggles"] = 3956, - ["Ice Deflector"] = 3957, - ["Iron Strut"] = 3958, - ["Discombobulator Ray"] = 3959, - ["Portable Bronze Mortar"] = 3960, - ["Gyrochronatom"] = 3961, - ["Iron Grenade"] = 3962, - ["Compact Harvest Reaper Kit"] = 3963, - ["Advanced Target Dummy"] = 3965, - ["Craftsman's Monocle"] = 3966, - ["Big Iron Bomb"] = 3967, - ["Goblin Land Mine"] = 3968, - ["Mechanical Dragonling"] = 3969, - ["Gnomish Cloaking Device"] = 3971, - ["Large Seaforium Charge"] = 3972, - ["Silver Contact"] = 3973, - ["Crude Scope"] = 3977, - ["Standard Scope"] = 3978, - ["Accurate Scope"] = 3979, - ["Ornate Spyglass"] = 6458, - ["Arclight Spanner"] = 7430, - ["Flash Bomb"] = 8243, - ["Practice Lock"] = 8334, - ["EZ-Thro Dynamite"] = 8339, - ["Goblin Rocket Boots"] = 8895, - ["Gnomish Universal Remote"] = 9269, - ["Aquadynamic Fish Attractor"] = 9271, - ["Goblin Jumper Cables"] = 9273, - ["Gold Power Core"] = 12584, - ["Solid Blasting Powder"] = 12585, - ["Solid Dynamite"] = 12586, - ["Bright-Eye Goggles"] = 12587, - ["Mithril Tube"] = 12589, - ["Gyromatic Micro-Adjustor"] = 12590, - ["Fire Goggles"] = 12594, - ["Mithril Blunderbuss"] = 12595, - ["Hi-Impact Mithril Slugs"] = 12596, - ["Deadly Scope"] = 12597, - ["Mithril Casing"] = 12599, - ["Mithril Frag Bomb"] = 12603, - ["Catseye Ultra Goggles"] = 12607, - ["Mithril Heavy-bore Rifle"] = 12614, - ["Spellpower Goggles Xtreme"] = 12615, - ["Parachute Cloak"] = 12616, - ["Deepdive Helmet"] = 12617, - ["Rose Colored Goggles"] = 12618, - ["Hi-Explosive Bomb"] = 12619, - ["Sniper Scope"] = 12620, - ["Mithril Gyro-Shot"] = 12621, - ["Green Lens"] = 12622, - ["Mithril Mechanical Dragonling"] = 12624, - ["Goblin Rocket Fuel Recipe"] = 12715, - ["Goblin Mortar"] = 12716, - ["Goblin Mining Helmet"] = 12717, - ["Goblin Construction Helmet"] = 12718, - ["Goblin \"Boom\" Box"] = 12720, - ["Goblin Radio"] = 12722, - ["The Big One"] = 12754, - ["Goblin Bomb Dispenser"] = 12755, - ["Goblin Rocket Helmet"] = 12758, - ["Gnomish Death Ray"] = 12759, - ["Goblin Sapper Charge"] = 12760, - ["Inlaid Mithril Cylinder Plans"] = 12895, - ["Gnomish Goggles"] = 12897, - ["Gnomish Shrink Ray"] = 12899, - ["Mobile Alarm"] = 12900, - ["Gnomish Net-o-Matic Projector"] = 12902, - ["Gnomish Harm Prevention Belt"] = 12903, - ["Gnomish Ham Radio"] = 12904, - ["Gnomish Rocket Boots"] = 12905, - ["Gnomish Battle Chicken"] = 12906, - ["Gnomish Mind Control Cap"] = 12907, - ["Goblin Dragon Gun"] = 12908, - ["The Mortar: Reloaded"] = 13240, - ["Mechanical Repair Kit"] = 15255, - ["Pet Bombling"] = 15628, - ["Lil' Smoky"] = 15633, - ["Salt Shaker"] = 19567, - ["Dense Blasting Powder"] = 19788, - ["Thorium Grenade"] = 19790, - ["Thorium Widget"] = 19791, - ["Thorium Rifle"] = 19792, - ["Lifelike Mechanical Toad"] = 19793, - ["Spellpower Goggles Xtreme Plus"] = 19794, - ["Thorium Tube"] = 19795, - ["Dark Iron Rifle"] = 19796, - ["Dark Iron Bomb"] = 19799, - ["Thorium Shells"] = 19800, - ["Masterwork Target Dummy"] = 19814, - ["Delicate Arcanite Converter"] = 19815, - ["Voice Amplification Modulator"] = 19819, - ["Master Engineer's Goggles"] = 19825, - ["Arcanite Dragonling"] = 19830, - ["Arcane Bomb"] = 19831, - ["Flawless Arcanite Rifle"] = 19833, - ["Snowmaster 9000"] = 21940, - ["Field Repair Bot 74A"] = 22704, - ["Biznicks 247x128 Accurascope"] = 22793, - ["Core Marksman Rifle"] = 22795, - ["Force Reactive Disk"] = 22797, - ["Red Firework"] = 23066, - ["Blue Firework"] = 23067, - ["Green Firework"] = 23068, - ["EZ-Thro Dynamite II"] = 23069, - ["Dense Dynamite"] = 23070, - ["Gyrofreeze Ice Reflector"] = 23077, - ["Goblin Jumper Cables XL"] = 23078, - ["Major Recombobulator"] = 23079, - ["Powerful Seaforium Charge"] = 23080, - ["Hyper-Radiant Flame Reflector"] = 23081, - ["Ultra-Flash Shadow Reflector"] = 23082, - ["Gnomish Alarm-o-Bot"] = 23096, - ["World Enlarger"] = 23129, - ["Dimensional Ripper - Everlook"] = 23486, - ["Ultrasafe Transporter - Gadgetzan"] = 23489, - ["Snake Burst Firework"] = 23507, - ["Bloodvine Goggles"] = 24356, - ["Bloodvine Lens"] = 24357, - ["Tranquil Mechanical Yeti"] = 26011, - ["Small Blue Rocket"] = 26416, - ["Small Green Rocket"] = 26417, - ["Small Red Rocket"] = 26418, - ["Large Blue Rocket"] = 26420, - ["Large Green Rocket"] = 26421, - ["Large Red Rocket"] = 26422, - ["Blue Rocket Cluster"] = 26423, - ["Green Rocket Cluster"] = 26424, - ["Red Rocket Cluster"] = 26425, - ["Large Blue Rocket Cluster"] = 26426, - ["Large Green Rocket Cluster"] = 26427, - ["Large Red Rocket Cluster"] = 26428, - ["Firework Launcher"] = 26442, - ["Firework Cluster Launcher"] = 26443, - ["Steam Tonk Controller"] = 28327, - ["Elemental Blasting Powder"] = 30303, - ["Fel Iron Casing"] = 30304, - ["Handful of Fel Iron Bolts"] = 30305, - ["Adamantite Frame"] = 30306, - ["Hardened Adamantite Tube"] = 30307, - ["Khorium Power Core"] = 30308, - ["Felsteel Stabilizer"] = 30309, - ["Fel Iron Bomb"] = 30310, - ["Adamantite Grenade"] = 30311, - ["Fel Iron Musket"] = 30312, - ["Adamantite Rifle"] = 30313, - ["Felsteel Boomstick"] = 30314, - ["Ornate Khorium Rifle"] = 30315, - ["Cogspinner Goggles"] = 30316, - ["Power Amplification Goggles"] = 30317, - ["Ultra-Spectropic Detection Goggles"] = 30318, - ["Hyper-Vision Goggles"] = 30325, - ["Adamantite Scope"] = 30329, - ["Khorium Scope"] = 30332, - ["Stabilized Eternium Scope"] = 30334, - ["Crashin' Thrashin' Robot"] = 30337, - ["Red Smoke Flare"] = 30342, - ["Blue Smoke Flare"] = 30343, - ["Green Smoke Flare"] = 30344, - ["Fel Iron Shells"] = 30346, - ["Adamantite Shell Machine"] = 30347, - ["Fel Iron Toolbox"] = 30348, - ["Titanium Toolbox"] = 30349, - ["Elemental Seaforium Charge"] = 30547, - ["Critter Enlarger"] = 30549, - ["Healing Potion Injector"] = 30551, - ["Mana Potion Injector"] = 30552, - ["Rocket Boots Xtreme"] = 30556, - ["The Bigger One"] = 30558, - ["Super Sapper Charge"] = 30560, - ["Goblin Tonk Controller"] = 30561, - ["Goblin Rocket Launcher"] = 30563, - ["Foreman's Enchanted Helmet"] = 30565, - ["Foreman's Reinforced Helmet"] = 30566, - ["Gnomish Flame Turret"] = 30568, - ["Gnomish Poultryizer"] = 30569, - ["Nigh-Invulnerability Belt"] = 30570, - ["Gnomish Tonk Controller"] = 30573, - ["Gnomish Power Goggles"] = 30574, - ["Gnomish Battle Goggles"] = 30575, - ["Purple Smoke Flare"] = 32814, - ["Dimensional Ripper - Area 52"] = 36954, - ["Ultrasafe Transporter - Toshley's Station"] = 36955, - ["Fused Wiring"] = 39895, - ["Icy Blasting Primers"] = 39971, - ["Frost Grenades"] = 39973, - ["Furious Gizmatic Goggles"] = 40274, - ["Gyro-balanced Khorium Destroyer"] = 41307, - ["Justicebringer 2000 Specs"] = 41311, - ["Tankatronic Goggles"] = 41312, - ["Surestrike Goggles v2.0"] = 41314, - ["Gadgetstorm Goggles"] = 41315, - ["Living Replicator Specs"] = 41316, - ["Deathblow X11 Goggles"] = 41317, - ["Wonderheal XT40 Shades"] = 41318, - ["Magnified Moon Specs"] = 41319, - ["Destruction Holo-gogs"] = 41320, - ["Powerheal 4000 Lens"] = 41321, - ["Adamantite Arrow Maker"] = 43676, - ["Flying Machine"] = 44155, - ["Turbo-Charged Flying Machine"] = 44157, - ["Field Repair Bot 110G"] = 44391, - ["Wonderheal XT68 Shades"] = 46106, - ["Justicebringer 3000 Specs"] = 46107, - ["Powerheal 9000 Lens"] = 46108, - ["Hyper-Magnified Moon Specs"] = 46109, - ["Primal-Attuned Goggles"] = 46110, - ["Annihilator Holo-Gogs"] = 46111, - ["Lightning Etched Specs"] = 46112, - ["Surestrike Goggles v3.0"] = 46113, - ["Mayhem Projection Goggles"] = 46114, - ["Hard Khorium Goggles"] = 46115, - ["Quad Deathblow X44 Goggles"] = 46116, - ["Rocket Boots Xtreme Lite"] = 46697, - ["Mark \"S\" Boomstick"] = 54353, - ["Personal Electromagnetic Pulse Generator"] = 54736, - ["Frag Belt"] = 54793, - ["Hand-Mounted Pyro Rocket"] = 54998, - ["Hyperspeed Accelerators"] = 54999, - ["Flexweave Underlay"] = 55002, - ["Nitro Boosts"] = 55016, - ["Scrapbot Construction Kit"] = 55252, - ["Handful of Cobalt Bolts"] = 56349, - ["Hammer Pick"] = 56459, - ["Cobalt Frag Bomb"] = 56460, - ["Bladed Pickaxe"] = 56461, - ["Gnomish Army Knife"] = 56462, - ["Explosive Decoy"] = 56463, - ["Overcharged Capacitor"] = 56464, - ["Sonic Booster"] = 56466, - ["Noise Machine"] = 56467, - ["Box of Bombs"] = 56468, - ["Gnomish Lightning Generator"] = 56469, - ["Sun Scope"] = 56470, - ["Froststeel Tube"] = 56471, - ["MOLL-E"] = 56472, - ["Gnomish X-Ray Specs"] = 56473, - ["Mammoth Cutters"] = 56474, - ["Saronite Razorheads"] = 56475, - ["Healing Injector Kit"] = 56476, - ["Mana Injector Kit"] = 56477, - ["Heartseeker Scope"] = 56478, - ["Armor Plated Combat Shotgun"] = 56479, - ["Armored Titanium Goggles"] = 56480, - ["Weakness Spectralizers"] = 56481, - ["Charged Titanium Specs"] = 56483, - ["Visage Liquification Goggles"] = 56484, - ["Greensight Gogs"] = 56486, - ["Electroflux Sight Enhancers"] = 56487, - ["Global Thermal Sapper Charge"] = 56514, - ["Truesight Ice Blinders"] = 56574, - ["Mechano-hog"] = 60866, - ["Mekgineer's Chopper"] = 60867, - ["Nesingwary 4000"] = 60874, - ["Diamond-cut Refractor Scope"] = 61471, - ["Mechanized Snow Goggles"] = 61483, - ["Unbreakable Healing Amplifiers"] = 62271, - ["High-powered Flashlight"] = 63750, - ["Springy Arachnoweave"] = 63765, - ["Reticulated Armor Webbing"] = 63770, - ["Goblin Beam Welder"] = 67326, - ["Dimensional Folder: K3"] = 67790, - ["Mind Amplification Dish"] = 67839, - ["Wormhole Generator: Northrend"] = 67920, - ["Jeeves"] = 68067, - ["Shatter Rounds"] = 72952, - ["Iceblade Arrow"] = 72953, - - - --- Inscription - ["Inscription"] = 45357, - ["Scroll of Stamina"] = 45382, - ["Scroll of Intellect"] = 48114, - ["Scroll of Spirit"] = 48116, - ["Glyph of Entangling Roots"] = 48121, - ["Mysterious Tarot"] = 48247, - ["Scroll of Recall"] = 48248, - ["Scroll of Intellect II"] = 50598, - ["Scroll of Intellect III"] = 50599, - ["Scroll of Intellect IV"] = 50600, - ["Scroll of Intellect V"] = 50601, - ["Scroll of Intellect VI"] = 50602, - ["Scroll of Intellect VII"] = 50603, - ["Scroll of Intellect VIII"] = 50604, - ["Scroll of Spirit II"] = 50605, - ["Scroll of Spirit III"] = 50606, - ["Scroll of Spirit IV"] = 50607, - ["Scroll of Spirit V"] = 50608, - ["Scroll of Spirit VI"] = 50609, - ["Scroll of Spirit VII"] = 50610, - ["Scroll of Spirit VIII"] = 50611, - ["Scroll of Stamina II"] = 50612, - ["Scroll of Stamina III"] = 50614, - ["Scroll of Stamina IV"] = 50616, - ["Scroll of Stamina V"] = 50617, - ["Scroll of Stamina VI"] = 50618, - ["Scroll of Stamina VII"] = 50619, - ["Scroll of Stamina VIII"] = 50620, - ["Ivory Ink"] = 52738, - ["Armor Vellum"] = 52739, - ["Weapon Vellum"] = 52840, - ["Moonglow Ink"] = 52843, - ["Midnight Ink"] = 53462, - ["Glyph of Frenzied Regeneration"] = 56943, - ["Glyph of Growl"] = 56944, - ["Glyph of Healing Touch"] = 56945, - ["Glyph of Hurricane"] = 56946, - ["Glyph of Innervate"] = 56947, - ["Glyph of Insect Swarm"] = 56948, - ["Glyph of Lifebloom"] = 56949, - ["Glyph of Mangle"] = 56950, - ["Glyph of Moonfire"] = 56951, - ["Glyph of Rake"] = 56952, - ["Glyph of Rebirth"] = 56953, - ["Glyph of Regrowth"] = 56954, - ["Glyph of Rejuvenation"] = 56955, - ["Glyph of Rip"] = 56956, - ["Glyph of Shred"] = 56957, - ["Glyph of Starfall"] = 56958, - ["Glyph of Starfire"] = 56959, - ["Glyph of Swiftmend"] = 56960, - ["Glyph of Maul"] = 56961, - ["Glyph of Wrath"] = 56963, - ["Glyph of Typhoon"] = 56965, - ["Glyph of Arcane Explosion"] = 56968, - ["Glyph of Arcane Missiles"] = 56971, - ["Glyph of Arcane Power"] = 56972, - ["Glyph of Blink"] = 56973, - ["Glyph of Evocation"] = 56974, - ["Glyph of Fireball"] = 56975, - ["Glyph of Frost Nova"] = 56976, - ["Glyph of Frostbolt"] = 56977, - ["Glyph of Ice Armor"] = 56978, - ["Glyph of Ice Block"] = 56979, - ["Glyph of Ice Lance"] = 56980, - ["Glyph of Icy Veins"] = 56981, - ["Glyph of Scorch"] = 56982, - ["Glyph of Invisibility"] = 56983, - ["Glyph of Mage Armor"] = 56984, - ["Glyph of Mana Gem"] = 56985, - ["Glyph of Molten Armor"] = 56986, - ["Glyph of Polymorph"] = 56987, - ["Glyph of Remove Curse"] = 56988, - ["Glyph of Water Elemental"] = 56989, - ["Glyph of Blast Wave"] = 56990, - ["Glyph of Arcane Blast"] = 56991, - ["Glyph of Aimed Shot"] = 56994, - ["Glyph of Arcane Shot"] = 56995, - ["Glyph of the Beast"] = 56996, - ["Glyph of Mending"] = 56997, - ["Glyph of Aspect of the Viper"] = 56998, - ["Glyph of Bestial Wrath"] = 56999, - ["Glyph of Deterrence"] = 57000, - ["Glyph of Disengage"] = 57001, - ["Glyph of Freezing Trap"] = 57002, - ["Glyph of Frost Trap"] = 57003, - ["Glyph of Hunter's Mark"] = 57004, - ["Glyph of Immolation Trap"] = 57005, - ["Glyph of the Hawk"] = 57006, - ["Glyph of Multi-Shot"] = 57007, - ["Glyph of Rapid Fire"] = 57008, - ["Glyph of Serpent Sting"] = 57009, - ["Glyph of Snake Trap"] = 57010, - ["Glyph of Steady Shot"] = 57011, - ["Glyph of Trueshot Aura"] = 57012, - ["Glyph of Volley"] = 57013, - ["Glyph of Wyvern Sting"] = 57014, - ["Glyph of Avenger's Shield"] = 57019, - ["Glyph of Cleansing"] = 57020, - ["Glyph of Avenging Wrath"] = 57021, - ["Glyph of Spiritual Attunement"] = 57022, - ["Glyph of Consecration"] = 57023, - ["Glyph of Crusader Strike"] = 57024, - ["Glyph of Exorcism"] = 57025, - ["Glyph of Flash of Light"] = 57026, - ["Glyph of Hammer of Justice"] = 57027, - ["Glyph of Hammer of Wrath"] = 57028, - ["Glyph of Holy Light"] = 57029, - ["Glyph of Judgement"] = 57030, - ["Glyph of Divinity"] = 57031, - ["Glyph of Righteous Defense"] = 57032, - ["Glyph of Seal of Command"] = 57033, - ["Glyph of Seal of Light"] = 57034, - ["Glyph of Seal of Wisdom"] = 57035, - ["Glyph of Turn Evil"] = 57036, - ["Glyph of Adrenaline Rush"] = 57112, - ["Glyph of Ambush"] = 57113, - ["Glyph of Backstab"] = 57114, - ["Glyph of Blade Flurry"] = 57115, - ["Glyph of Crippling Poison"] = 57116, - ["Glyph of Deadly Throw"] = 57117, - ["Glyph of Evasion"] = 57119, - ["Glyph of Eviscerate"] = 57120, - ["Glyph of Expose Armor"] = 57121, - ["Glyph of Feint"] = 57122, - ["Glyph of Garrote"] = 57123, - ["Glyph of Ghostly Strike"] = 57124, - ["Glyph of Gouge"] = 57125, - ["Glyph of Hemorrhage"] = 57126, - ["Glyph of Preparation"] = 57127, - ["Glyph of Rupture"] = 57128, - ["Glyph of Sap"] = 57129, - ["Glyph of Vigor"] = 57130, - ["Glyph of Sinister Strike"] = 57131, - ["Glyph of Slice and Dice"] = 57132, - ["Glyph of Sprint"] = 57133, - ["Glyph of Barbaric Insults"] = 57151, - ["Glyph of Blocking"] = 57152, - ["Glyph of Bloodthirst"] = 57153, - ["Glyph of Cleaving"] = 57154, - ["Glyph of Devastate"] = 57155, - ["Glyph of Execution"] = 57156, - ["Glyph of Hamstring"] = 57157, - ["Glyph of Heroic Strike"] = 57158, - ["Glyph of Intervene"] = 57159, - ["Glyph of Mortal Strike"] = 57160, - ["Glyph of Overpower"] = 57161, - ["Glyph of Rapid Charge"] = 57162, - ["Glyph of Rending"] = 57163, - ["Glyph of Resonating Power"] = 57164, - ["Glyph of Revenge"] = 57165, - ["Glyph of Last Stand"] = 57166, - ["Glyph of Sunder Armor"] = 57167, - ["Glyph of Sweeping Strikes"] = 57168, - ["Glyph of Taunt"] = 57169, - ["Glyph of Victory Rush"] = 57170, - ["Glyph of Whirlwind"] = 57172, - ["Glyph of Circle of Healing"] = 57181, - ["Glyph of Dispel Magic"] = 57183, - ["Glyph of Fade"] = 57184, - ["Glyph of Fear Ward"] = 57185, - ["Glyph of Flash Heal"] = 57186, - ["Glyph of Holy Nova"] = 57187, - ["Glyph of Inner Fire"] = 57188, - ["Glyph of Lightwell"] = 57189, - ["Glyph of Mass Dispel"] = 57190, - ["Glyph of Mind Control"] = 57191, - ["Glyph of Shadow Word: Pain"] = 57192, - ["Glyph of Shadow"] = 57193, - ["Glyph of Power Word: Shield"] = 57194, - ["Glyph of Prayer of Healing"] = 57195, - ["Glyph of Psychic Scream"] = 57196, - ["Glyph of Renew"] = 57197, - ["Glyph of Scourge Imprisonment"] = 57198, - ["Glyph of Shadow Word: Death"] = 57199, - ["Glyph of Mind Flay"] = 57200, - ["Glyph of Smite"] = 57201, - ["Glyph of Spirit of Redemption"] = 57202, - ["Glyph of Anti-Magic Shell"] = 57207, - ["Glyph of Heart Strike"] = 57208, - ["Glyph of Blood Tap"] = 57209, - ["Glyph of Bone Shield"] = 57210, - ["Glyph of Chains of Ice"] = 57211, - ["Glyph of Dark Command"] = 57212, - ["Glyph of Death Grip"] = 57213, - ["Glyph of Death and Decay"] = 57214, - ["Glyph of Death's Embrace"] = 57215, - ["Glyph of Frost Strike"] = 57216, - ["Glyph of Horn of Winter"] = 57217, - ["Glyph of Icebound Fortitude"] = 57218, - ["Glyph of Icy Touch"] = 57219, - ["Glyph of Obliterate"] = 57220, - ["Glyph of Plague Strike"] = 57221, - ["Glyph of the Ghoul"] = 57222, - ["Glyph of Rune Strike"] = 57223, - ["Glyph of Scourge Strike"] = 57224, - ["Glyph of Strangulate"] = 57225, - ["Glyph of Unbreakable Armor"] = 57226, - ["Glyph of Vampiric Blood"] = 57227, - ["Glyph of Raise Dead"] = 57228, - ["Glyph of Corpse Explosion"] = 57229, - ["Glyph of Pestilence"] = 57230, - ["Death Knight Glyph 25"] = 57231, - ["Glyph of Chain Heal"] = 57232, - ["Glyph of Chain Lightning"] = 57233, - ["Glyph of Lava"] = 57234, - ["Glyph of Shocking"] = 57235, - ["Glyph of Earthliving Weapon"] = 57236, - ["Glyph of Fire Elemental Totem"] = 57237, - ["Glyph of Fire Nova"] = 57238, - ["Glyph of Flame Shock"] = 57239, - ["Glyph of Flametongue Weapon"] = 57240, - ["Glyph of Frost Shock"] = 57241, - ["Glyph of Healing Stream Totem"] = 57242, - ["Glyph of Healing Wave"] = 57243, - ["Glyph of Lesser Healing Wave"] = 57244, - ["Glyph of Lightning Bolt"] = 57245, - ["Glyph of Lightning Shield"] = 57246, - ["Glyph of Mana Tide Totem"] = 57247, - ["Glyph of Stormstrike"] = 57248, - ["Glyph of Lava Lash"] = 57249, - ["Glyph of Elemental Mastery"] = 57250, - ["Glyph of Water Mastery"] = 57251, - ["Glyph of Windfury Weapon"] = 57252, - ["Glyph of Thunderstorm"] = 57253, - ["Glyph of Incinerate"] = 57257, - ["Glyph of Conflagrate"] = 57258, - ["Glyph of Corruption"] = 57259, - ["Glyph of Curse of Agony"] = 57260, - ["Glyph of Death Coil"] = 57261, - ["Glyph of Fear"] = 57262, - ["Glyph of Felguard"] = 57263, - ["Glyph of Felhunter"] = 57264, - ["Glyph of Health Funnel"] = 57265, - ["Glyph of Healthstone"] = 57266, - ["Glyph of Howl of Terror"] = 57267, - ["Glyph of Immolate"] = 57268, - ["Glyph of Imp"] = 57269, - ["Glyph of Searing Pain"] = 57270, - ["Glyph of Shadow Bolt"] = 57271, - ["Glyph of Shadowburn"] = 57272, - ["Glyph of Siphon Life"] = 57273, - ["Glyph of Soulstone"] = 57274, - ["Glyph of Succubus"] = 57275, - ["Glyph of Unstable Affliction"] = 57276, - ["Glyph of Voidwalker"] = 57277, - ["Hunter's Ink"] = 57703, - ["Lion's Ink"] = 57704, - ["Dawnstar Ink"] = 57706, - ["Jadefire Ink"] = 57707, - ["Royal Ink"] = 57708, - ["Celestial Ink"] = 57709, - ["Fiery Ink"] = 57710, - ["Shimmering Ink"] = 57711, - ["Ink of the Sky"] = 57712, - ["Ethereal Ink"] = 57713, - ["Darkflame Ink"] = 57714, - ["Ink of the Sea"] = 57715, - ["Snowfall Ink"] = 57716, - ["Glyph of Fire Blast"] = 57719, - ["Glyph of Aquatic Form"] = 58286, - ["Glyph of Challenging Roar"] = 58287, - ["Glyph of Unburdened Rebirth"] = 58288, - ["Glyph of Thorns"] = 58289, - ["Glyph of the Wild"] = 58296, - ["Glyph of the Pack"] = 58297, - ["Glyph of Scare Beast"] = 58298, - ["Glyph of Revive Pet"] = 58299, - ["Glyph of Possessed Strength"] = 58300, - ["Glyph of Mend Pet"] = 58301, - ["Glyph of Feign Death"] = 58302, - ["Glyph of Arcane Intellect"] = 58303, - ["Glyph of Fire Ward"] = 58305, - ["Glyph of Frost Armor"] = 58306, - ["Glyph of Frost Ward"] = 58307, - ["Glyph of Slow Fall"] = 58308, - ["Glyph of the Penguin"] = 58310, - ["Glyph of Blessing of Kings"] = 58311, - ["Glyph of Blessing of Wisdom"] = 58312, - ["Glyph of Lay on Hands"] = 58313, - ["Glyph of Blessing of Might"] = 58314, - ["Glyph of Sense Undead"] = 58315, - ["Glyph of the Wise"] = 58316, - ["Glyph of Fading"] = 58317, - ["Glyph of Fortitude"] = 58318, - ["Glyph of Levitate"] = 58319, - ["Glyph of Shackle Undead"] = 58320, - ["Glyph of Shadow Protection"] = 58321, - ["Glyph of Shadowfiend"] = 58322, - ["Glyph of Blurred Speed"] = 58323, - ["Glyph of Distract"] = 58324, - ["Glyph of Pick Lock"] = 58325, - ["Glyph of Pick Pocket"] = 58326, - ["Glyph of Safe Fall"] = 58327, - ["Glyph of Vanish"] = 58328, - ["Glyph of Astral Recall"] = 58329, - ["Glyph of Renewed Life"] = 58330, - ["Glyph of Water Breathing"] = 58331, - ["Glyph of Water Shield"] = 58332, - ["Glyph of Water Walking"] = 58333, - ["Glyph of Unending Breath"] = 58336, - ["Glyph of Drain Soul"] = 58337, - ["Glyph of Curse of Exhaustion"] = 58338, - ["Glyph of Enslave Demon"] = 58339, - ["Glyph of Kilrogg"] = 58340, - ["Glyph of Souls"] = 58341, - ["Glyph of Battle"] = 58342, - ["Glyph of Bloodrage"] = 58343, - ["Glyph of Charge"] = 58344, - ["Glyph of Mocking Blow"] = 58345, - ["Glyph of Thunder Clap"] = 58346, - ["Glyph of Enduring Victory"] = 58347, - ["Scroll of Agility"] = 58472, - ["Scroll of Agility II"] = 58473, - ["Scroll of Agility III"] = 58476, - ["Scroll of Agility IV"] = 58478, - ["Scroll of Agility V"] = 58480, - ["Scroll of Agility VI"] = 58481, - ["Scroll of Agility VII"] = 58482, - ["Scroll of Agility VIII"] = 58483, - ["Scroll of Strength"] = 58484, - ["Scroll of Strength II"] = 58485, - ["Scroll of Strength III"] = 58486, - ["Scroll of Strength IV"] = 58487, - ["Scroll of Strength V"] = 58488, - ["Scroll of Strength VI"] = 58489, - ["Scroll of Strength VII"] = 58490, - ["Scroll of Strength VIII"] = 58491, - ["Mystic Tome"] = 58565, - ["Glyph of Dash"] = 59315, - ["Glyph of Ghost Wolf"] = 59326, - ["Glyph of Rune Tap"] = 59338, - ["Glyph of Blood Strike"] = 59339, - ["Glyph of Death Strike"] = 59340, - ["Certificate of Ownership"] = 59387, - ["Tome of the Dawn"] = 59475, - ["Book of Survival"] = 59478, - ["Strange Tarot"] = 59480, - ["Tome of Kings"] = 59484, - ["Royal Guide of Escape Routes"] = 59486, - ["Arcane Tarot"] = 59487, - ["Weapon Vellum II"] = 59488, - ["Fire Eater's Guide"] = 59489, - ["Book of Stars"] = 59490, - ["Shadowy Tarot"] = 59491, - ["Stormbound Tome"] = 59493, - ["Manual of Clouds"] = 59494, - ["Hellfire Tome"] = 59495, - ["Book of Clever Tricks"] = 59496, - ["Iron-bound Tome"] = 59497, - ["Faces of Doom"] = 59498, - ["Armor Vellum II"] = 59499, - ["Armor Vellum III"] = 59500, - ["Weapon Vellum III"] = 59501, - ["Darkmoon Card"] = 59502, - ["Greater Darkmoon Card"] = 59503, - ["Darkmoon Card of the North"] = 59504, - ["Glyph of Holy Wrath"] = 59559, - ["Glyph of Seal of Righteousness"] = 59560, - ["Glyph of Seal of Vengeance"] = 59561, - ["Scroll of Recall II"] = 60336, - ["Scroll of Recall III"] = 60337, - ["Master's Inscription of the Axe"] = 61117, - ["Master's Inscription of the Crag"] = 61118, - ["Master's Inscription of the Pinnacle"] = 61119, - ["Master's Inscription of the Storm"] = 61120, - ["Northrend Inscription Research"] = 61177, - ["Minor Inscription Research"] = 61288, - ["Glyph of Frostfire"] = 61677, - ["Glyph of Focus"] = 62162, - ["Rituals of the New Moon"] = 64051, - ["Twilight Tome"] = 64053, - ["Glyph of Raptor Strike"] = 64246, - ["Glyph of Stoneclaw Totem"] = 64247, - ["Glyph of Life Tap"] = 64248, - ["Glyph of Scatter Shot"] = 64249, - ["Glyph of Soul Link"] = 64250, - ["Glyph of Salvation"] = 64251, - ["Glyph of Shield Wall"] = 64252, - ["Glyph of Explosive Trap"] = 64253, - ["Glyph of Holy Shock"] = 64254, - ["Glyph of Vigilance"] = 64255, - ["Glyph of Barkskin"] = 64256, - ["Glyph of Ice Barrier"] = 64257, - ["Glyph of Monsoon"] = 64258, - ["Glyph of Pain Suppression"] = 64259, - ["Glyph of Mutilate"] = 64260, - ["Glyph of Earth Shield"] = 64261, - ["Glyph of Totem of Wrath"] = 64262, - ["Glyph of Dark Death"] = 64266, - ["Glyph of Disease"] = 64267, - ["Glyph of Berserk"] = 64268, - ["Glyph of Wild Growth"] = 64270, - ["Glyph of Chimera Shot"] = 64271, - ["Glyph of Explosive Shot"] = 64273, - ["Glyph of Deep Freeze"] = 64274, - ["Glyph of Living Bomb"] = 64275, - ["Glyph of Arcane Barrage"] = 64276, - ["Glyph of Beacon of Light"] = 64277, - ["Glyph of Hammer of the Righteous"] = 64278, - ["Glyph of Divine Storm"] = 64279, - ["Glyph of Dispersion"] = 64280, - ["Glyph of Guardian Spirit"] = 64281, - ["Glyph of Penance"] = 64282, - ["Glyph of Hymn of Hope"] = 64283, - ["Glyph of Hunger for Blood"] = 64284, - ["Glyph of Killing Spree"] = 64285, - ["Glyph of Shadow Dance"] = 64286, - ["Glyph of Thunder"] = 64287, - ["Glyph of Feral Spirit"] = 64288, - ["Glyph of Riptide"] = 64289, - ["Glyph of Haunt"] = 64291, - ["Glyph of Chaos Bolt"] = 64294, - ["Glyph of Bladestorm"] = 64295, - ["Glyph of Shockwave"] = 64296, - ["Glyph of Dancing Rune Weapon"] = 64297, - ["Glyph of Hungering Cold"] = 64298, - ["Glyph of Unholy Blight"] = 64299, - ["Glyph of Howling Blast"] = 64300, - ["Glyph of Spell Reflection"] = 64302, - ["Glyph of Cloak of Shadows"] = 64303, - ["Glyph of Kill Shot"] = 64304, - ["Glyph of Divine Plea"] = 64305, - ["Glyph of Savage Roar"] = 64307, - ["Glyph of Shield of Righteousness"] = 64308, - ["Glyph of Mind Sear"] = 64309, - ["Glyph of Tricks of the Trade"] = 64310, - ["Glyph of Shadowflame"] = 64311, - ["Glyph of Enraged Regeneration"] = 64312, - ["Glyph of Nourish"] = 64313, - ["Glyph of Mirror Image"] = 64314, - ["Glyph of Fan of Knives"] = 64315, - ["Glyph of Hex"] = 64316, - ["Glyph of Demonic Circle"] = 64317, - ["Glyph of Metamorphosis"] = 64318, - ["Glyph of Survival Instincts"] = 65245, - ["Glyph of Claw"] = 67600, - ["Glyph of Command"] = 68166, - ["Runescroll of Fortitude"] = 69385, - ["Glyph of Rapid Rejuvenation"] = 71015, - ["Glyph of Eternal Water"] = 71101, - ["Glyph of Quick Decay"] = 71102, - - - --- Jewelcrafting - ["Jewelcrafting"] = 25229, - ["Delicate Copper Wire"] = 25255, - ["Bronze Setting"] = 25278, - ["Elegant Silver Ring"] = 25280, - ["Inlaid Malachite Ring"] = 25283, - ["Simple Pearl Ring"] = 25284, - ["Gloom Band"] = 25287, - ["Heavy Silver Ring"] = 25305, - ["Ring of Silver Might"] = 25317, - ["Ring of Twilight Shadows"] = 25318, - ["Heavy Golden Necklace of Battle"] = 25320, - ["Moonsoul Crown"] = 25321, - ["Wicked Moonstone Ring"] = 25323, - ["Amulet of the Moon"] = 25339, - ["Solid Bronze Ring"] = 25490, - ["Braided Copper Ring"] = 25493, - ["Barbaric Iron Collar"] = 25498, - ["Pendant of the Agate Shield"] = 25610, - ["Heavy Iron Knuckles"] = 25612, - ["Golden Dragon Ring"] = 25613, - ["Silver Rose Pendant"] = 25614, - ["Mithril Filigree"] = 25615, - ["Blazing Citrine Ring"] = 25617, - ["Jade Pendant of Blasting"] = 25618, - ["The Jade Eye"] = 25619, - ["Engraved Truesilver Ring"] = 25620, - ["Citrine Ring of Rapid Healing"] = 25621, - ["Citrine Pendant of Golden Healing"] = 25622, - ["Figurine - Jade Owl"] = 26872, - ["Figurine - Golden Hare"] = 26873, - ["Aquamarine Signet"] = 26874, - ["Figurine - Black Pearl Panther"] = 26875, - ["Aquamarine Pendant of the Warrior"] = 26876, - ["Ruby Crown of Restoration"] = 26878, - ["Thorium Setting"] = 26880, - ["Figurine - Truesilver Crab"] = 26881, - ["Figurine - Truesilver Boar"] = 26882, - ["Ruby Pendant of Fire"] = 26883, - ["Truesilver Healing Ring"] = 26885, - ["The Aquamarine Ward"] = 26887, - ["Gem Studded Band"] = 26896, - ["Opal Necklace of Impact"] = 26897, - ["Figurine - Ruby Serpent"] = 26900, - ["Simple Opal Ring"] = 26902, - ["Sapphire Signet"] = 26903, - ["Emerald Crown of Destruction"] = 26906, - ["Onslaught Ring"] = 26907, - ["Sapphire Pendant of Winter Night"] = 26908, - ["Figurine - Emerald Owl"] = 26909, - ["Ring of Bitter Shadows"] = 26910, - ["Living Emerald Pendant"] = 26911, - ["Figurine - Black Diamond Crab"] = 26912, - ["Figurine - Dark Iron Scorpid"] = 26914, - ["Necklace of the Diamond Tower"] = 26915, - ["Band of Natural Fire"] = 26916, - ["Arcanite Sword Pendant"] = 26918, - ["Blood Crown"] = 26920, - ["Woven Copper Ring"] = 26925, - ["Heavy Copper Ring"] = 26926, - ["Thick Bronze Necklace"] = 26927, - ["Ornate Tigerseye Necklace"] = 26928, - ["Teardrop Blood Garnet"] = 28903, - ["Bold Blood Garnet"] = 28905, - ["Runed Blood Garnet"] = 28906, - ["Delicate Blood Garnet"] = 28907, - ["Inscribed Flame Spessarite"] = 28910, - ["Luminous Flame Spessarite"] = 28912, - ["Glinting Flame Spessarite"] = 28914, - ["Potent Flame Spessarite"] = 28915, - ["Radiant Deep Peridot"] = 28916, - ["Jagged Deep Peridot"] = 28917, - ["Enduring Deep Peridot"] = 28918, - ["Dazzling Deep Peridot"] = 28924, - ["Glowing Shadow Draenite"] = 28925, - ["Royal Shadow Draenite"] = 28927, - ["Shifting Shadow Draenite"] = 28933, - ["Sovereign Shadow Draenite"] = 28936, - ["Brilliant Golden Draenite"] = 28938, - ["Gleaming Golden Draenite"] = 28944, - ["Thick Golden Draenite"] = 28947, - ["Rigid Golden Draenite"] = 28948, - ["Solid Azure Moonstone"] = 28950, - ["Sparkling Azure Moonstone"] = 28953, - ["Stormy Azure Moonstone"] = 28955, - ["Lustrous Azure Moonstone"] = 28957, - ["Fel Iron Blood Ring"] = 31048, - ["Golden Draenite Ring"] = 31049, - ["Azure Moonstone Ring"] = 31050, - ["Thick Adamantite Necklace"] = 31051, - ["Heavy Adamantite Ring"] = 31052, - ["Khorium Band of Shadows"] = 31053, - ["Khorium Band of Frost"] = 31054, - ["Khorium Inferno Band"] = 31055, - ["Khorium Band of Leaves"] = 31056, - ["Arcane Khorium Band"] = 31057, - ["Heavy Felsteel Ring"] = 31058, - ["Delicate Eternium Ring"] = 31060, - ["Blazing Eternium Band"] = 31061, - ["Pendant of Frozen Flame"] = 31062, - ["Pendant of Thawing"] = 31063, - ["Pendant of Withering"] = 31064, - ["Pendant of Shadow's End"] = 31065, - ["Pendant of the Null Rune"] = 31066, - ["Thick Felsteel Necklace"] = 31067, - ["Living Ruby Pendant"] = 31068, - ["Braided Eternium Chain"] = 31070, - ["Eye of the Night"] = 31071, - ["Embrace of the Dawn"] = 31072, - ["Chain of the Twilight Owl"] = 31076, - ["Coronet of Verdant Flame"] = 31077, - ["Circlet of Arcane Might"] = 31078, - ["Figurine - Felsteel Boar"] = 31079, - ["Figurine - Dawnstone Crab"] = 31080, - ["Figurine - Living Ruby Serpent"] = 31081, - ["Figurine - Talasite Owl"] = 31082, - ["Figurine - Nightseye Panther"] = 31083, - ["Bold Living Ruby"] = 31084, - ["Delicate Living Ruby"] = 31085, - ["Teardrop Living Ruby"] = 31087, - ["Runed Living Ruby"] = 31088, - ["Bright Living Ruby"] = 31089, - ["Subtle Living Ruby"] = 31090, - ["Flashing Living Ruby"] = 31091, - ["Solid Star of Elune"] = 31092, - ["Lustrous Star of Elune"] = 31094, - ["Stormy Star of Elune"] = 31095, - ["Brilliant Dawnstone"] = 31096, - ["Smooth Dawnstone"] = 31097, - ["Rigid Dawnstone"] = 31098, - ["Gleaming Dawnstone"] = 31099, - ["Thick Dawnstone"] = 31100, - ["Mystic Dawnstone"] = 31101, - ["Sovereign Nightseye"] = 31102, - ["Shifting Nightseye"] = 31103, - ["Glowing Nightseye"] = 31104, - ["Royal Nightseye"] = 31105, - ["Inscribed Noble Topaz"] = 31106, - ["Potent Noble Topaz"] = 31107, - ["Luminous Noble Topaz"] = 31108, - ["Glinting Noble Topaz"] = 31109, - ["Enduring Talasite"] = 31110, - ["Radiant Talasite"] = 31111, - ["Dazzling Talasite"] = 31112, - ["Jagged Talasite"] = 31113, - ["Sparkling Star of Elune"] = 31149, - ["Malachite Pendant"] = 32178, - ["Tigerseye Band"] = 32179, - ["Rough Stone Statue"] = 32259, - ["Coarse Stone Statue"] = 32801, - ["Heavy Stone Statue"] = 32807, - ["Solid Stone Statue"] = 32808, - ["Dense Stone Statue"] = 32809, - ["Primal Stone Statue"] = 32810, - ["Powerful Earthstorm Diamond"] = 32866, - ["Bracing Earthstorm Diamond"] = 32867, - ["Tenacious Earthstorm Diamond"] = 32868, - ["Brutal Earthstorm Diamond"] = 32869, - ["Insightful Earthstorm Diamond"] = 32870, - ["Destructive Skyfire Diamond"] = 32871, - ["Mystical Skyfire Diamond"] = 32872, - ["Swift Skyfire Diamond"] = 32873, - ["Enigmatic Skyfire Diamond"] = 32874, - ["Smooth Golden Draenite"] = 34069, - ["Bright Blood Garnet"] = 34590, - ["Golden Ring of Power"] = 34955, - ["Truesilver Commander's Ring"] = 34959, - ["Glowing Thorium Band"] = 34960, - ["Emerald Lion Ring"] = 34961, - ["Brilliant Necklace"] = 36523, - ["Heavy Jade Ring"] = 36524, - ["Red Ring of Destruction"] = 36525, - ["Diamond Focus Ring"] = 36526, - ["Bronze Band of Force"] = 37818, - ["Ring of Arcane Shielding"] = 37855, - ["Mercurial Adamantite"] = 38068, - ["Bronze Torc"] = 38175, - ["The Frozen Eye"] = 38503, - ["The Natural Ward"] = 38504, - ["Great Golden Draenite"] = 39451, - ["Great Dawnstone"] = 39452, - ["Balanced Shadow Draenite"] = 39455, - ["Infused Shadow Draenite"] = 39458, - ["Infused Nightseye"] = 39462, - ["Balanced Nightseye"] = 39463, - ["Veiled Flame Spessarite"] = 39466, - ["Wicked Flame Spessarite"] = 39467, - ["Veiled Noble Topaz"] = 39470, - ["Wicked Noble Topaz"] = 39471, - ["Bold Crimson Spinel"] = 39705, - ["Delicate Crimson Spinel"] = 39706, - ["Teardrop Crimson Spinel"] = 39710, - ["Runed Crimson Spinel"] = 39711, - ["Bright Crimson Spinel"] = 39712, - ["Subtle Crimson Spinel"] = 39713, - ["Flashing Crimson Spinel"] = 39714, - ["Solid Empyrean Sapphire"] = 39715, - ["Sparkling Empyrean Sapphire"] = 39716, - ["Lustrous Empyrean Sapphire"] = 39717, - ["Stormy Empyrean Sapphire"] = 39718, - ["Brilliant Lionseye"] = 39719, - ["Smooth Lionseye"] = 39720, - ["Rigid Lionseye"] = 39721, - ["Gleaming Lionseye"] = 39722, - ["Thick Lionseye"] = 39723, - ["Mystic Lionseye"] = 39724, - ["Great Lionseye"] = 39725, - ["Sovereign Shadowsong Amethyst"] = 39727, - ["Shifting Shadowsong Amethyst"] = 39728, - ["Balanced Shadowsong Amethyst"] = 39729, - ["Infused Shadowsong Amethyst"] = 39730, - ["Glowing Shadowsong Amethyst"] = 39731, - ["Royal Shadowsong Amethyst"] = 39732, - ["Inscribed Pyrestone"] = 39733, - ["Potent Pyrestone"] = 39734, - ["Luminous Pyrestone"] = 39735, - ["Glinting Pyrestone"] = 39736, - ["Veiled Pyrestone"] = 39737, - ["Wicked Pyrestone"] = 39738, - ["Enduring Seaspray Emerald"] = 39739, - ["Radiant Seaspray Emerald"] = 39740, - ["Dazzling Seaspray Emerald"] = 39741, - ["Jagged Seaspray Emerald"] = 39742, - ["Relentless Earthstorm Diamond"] = 39961, - ["Thundering Skyfire Diamond"] = 39963, - ["Necklace of the Deep"] = 40514, - ["Brilliant Pearl Band"] = 41414, - ["The Black Pearl"] = 41415, - ["Crown of the Sea Witch"] = 41418, - ["Purified Jaggal Pearl"] = 41420, - ["Purified Shadow Pearl"] = 41429, - ["Don Julio's Heart"] = 42558, - ["Kailee's Rose"] = 42588, - ["Crimson Sun"] = 42589, - ["Falling Star"] = 42590, - ["Stone of Blades"] = 42591, - ["Blood of Amber"] = 42592, - ["Facet of Eternity"] = 42593, - ["Steady Talasite"] = 43493, - ["Chaotic Skyfire Diamond"] = 44794, - ["Loop of Forged Power"] = 46122, - ["Ring of Flowing Life"] = 46123, - ["Hard Khorium Band"] = 46124, - ["Pendant of Sunfire"] = 46125, - ["Amulet of Flowing Life"] = 46126, - ["Hard Khorium Choker"] = 46127, - ["Quick Dawnstone"] = 46403, - ["Reckless Noble Topaz"] = 46404, - ["Forceful Talasite"] = 46405, - ["Eternal Earthstorm Diamond"] = 46597, - ["Ember Skyfire Diamond"] = 46601, - ["Figurine - Empyrean Tortoise"] = 46775, - ["Figurine - Khorium Boar"] = 46776, - ["Figurine - Crimson Serpent"] = 46777, - ["Figurine - Shadowsong Panther"] = 46778, - ["Figurine - Seaspray Albatross"] = 46779, - ["Regal Nightseye"] = 46803, - ["Forceful Seaspray Emerald"] = 47053, - ["Steady Seaspray Emerald"] = 47054, - ["Reckless Pyrestone"] = 47055, - ["Quick Lionseye"] = 47056, - ["Brilliant Glass"] = 47280, - ["Purified Shadowsong Amethyst"] = 48789, - ["Bold Scarlet Ruby"] = 53830, - ["Bold Bloodstone"] = 53831, - ["Delicate Bloodstone"] = 53832, - ["Runed Bloodstone"] = 53834, - ["Bright Bloodstone"] = 53835, - ["Subtle Bloodstone"] = 53843, - ["Flashing Bloodstone"] = 53844, - ["Fractured Bloodstone"] = 53845, - ["Brilliant Sun Crystal"] = 53852, - ["Smooth Sun Crystal"] = 53853, - ["Rigid Sun Crystal"] = 53854, - ["Thick Sun Crystal"] = 53855, - ["Quick Sun Crystal"] = 53856, - ["Mystic Sun Crystal"] = 53857, - ["Sovereign Shadow Crystal"] = 53859, - ["Shifting Shadow Crystal"] = 53860, - ["Tenuous Shadow Crystal"] = 53861, - ["Glowing Shadow Crystal"] = 53862, - ["Purified Shadow Crystal"] = 53863, - ["Royal Shadow Crystal"] = 53864, - ["Mysterious Shadow Crystal"] = 53865, - ["Balanced Shadow Crystal"] = 53866, - ["Infused Shadow Crystal"] = 53867, - ["Regal Shadow Crystal"] = 53868, - ["Defender's Shadow Crystal"] = 53869, - ["Puissant Shadow Crystal"] = 53870, - ["Guardian's Shadow Crystal"] = 53871, - ["Inscribed Huge Citrine"] = 53872, - ["Etched Huge Citrine"] = 53873, - ["Champion's Huge Citrine"] = 53874, - ["Resplendent Huge Citrine"] = 53875, - ["Fierce Huge Citrine"] = 53876, - ["Deadly Huge Citrine"] = 53877, - ["Glinting Huge Citrine"] = 53878, - ["Lucent Huge Citrine"] = 53879, - ["Deft Huge Citrine"] = 53880, - ["Luminous Huge Citrine"] = 53881, - ["Potent Huge Citrine"] = 53882, - ["Veiled Huge Citrine"] = 53883, - ["Durable Huge Citrine"] = 53884, - ["Reckless Huge Citrine"] = 53885, - ["Wicked Huge Citrine"] = 53886, - ["Pristine Huge Citrine"] = 53887, - ["Empowered Huge Citrine"] = 53888, - ["Stark Huge Citrine"] = 53889, - ["Stalwart Huge Citrine"] = 53890, - ["Glimmering Huge Citrine"] = 53891, - ["Accurate Huge Citrine"] = 53892, - ["Resolute Huge Citrine"] = 53893, - ["Timeless Dark Jade"] = 53894, - ["Jagged Dark Jade"] = 53916, - ["Vivid Dark Jade"] = 53917, - ["Enduring Dark Jade"] = 53918, - ["Steady Dark Jade"] = 53919, - ["Forceful Dark Jade"] = 53920, - ["Seer's Dark Jade"] = 53921, - ["Misty Dark Jade"] = 53922, - ["Shining Dark Jade"] = 53923, - ["Turbid Dark Jade"] = 53924, - ["Intricate Dark Jade"] = 53925, - ["Dazzling Dark Jade"] = 53926, - ["Sundered Dark Jade"] = 53927, - ["Lambent Dark Jade"] = 53928, - ["Opaque Dark Jade"] = 53929, - ["Energized Dark Jade"] = 53930, - ["Radiant Dark Jade"] = 53931, - ["Tense Dark Jade"] = 53932, - ["Shattered Dark Jade"] = 53933, - ["Solid Chalcedony"] = 53934, - ["Sparkling Chalcedony"] = 53940, - ["Lustrous Chalcedony"] = 53941, - ["Stormy Chalcedony"] = 53943, - ["Delicate Scarlet Ruby"] = 53945, - ["Runed Scarlet Ruby"] = 53946, - ["Bright Scarlet Ruby"] = 53947, - ["Subtle Scarlet Ruby"] = 53948, - ["Flashing Scarlet Ruby"] = 53949, - ["Fractured Scarlet Ruby"] = 53950, - ["Precise Scarlet Ruby"] = 53951, - ["Solid Sky Sapphire"] = 53952, - ["Sparkling Sky Sapphire"] = 53953, - ["Lustrous Sky Sapphire"] = 53954, - ["Stormy Sky Sapphire"] = 53955, - ["Brilliant Autumn's Glow"] = 53956, - ["Smooth Autumn's Glow"] = 53957, - ["Rigid Autumn's Glow"] = 53958, - ["Thick Autumn's Glow"] = 53959, - ["Mystic Autumn's Glow"] = 53960, - ["Quick Autumn's Glow"] = 53961, - ["Sovereign Twilight Opal"] = 53962, - ["Shifting Twilight Opal"] = 53963, - ["Tenuous Twilight Opal"] = 53964, - ["Glowing Twilight Opal"] = 53965, - ["Purified Twilight Opal"] = 53966, - ["Royal Twilight Opal"] = 53967, - ["Mysterious Twilight Opal"] = 53968, - ["Balanced Twilight Opal"] = 53969, - ["Infused Twilight Opal"] = 53970, - ["Regal Twilight Opal"] = 53971, - ["Defender's Twilight Opal"] = 53972, - ["Puissant Twilight Opal"] = 53973, - ["Guardian's Twilight Opal"] = 53974, - ["Inscribed Monarch Topaz"] = 53975, - ["Etched Monarch Topaz"] = 53976, - ["Champion's Monarch Topaz"] = 53977, - ["Resplendent Monarch Topaz"] = 53978, - ["Deadly Monarch Topaz"] = 53979, - ["Glinting Monarch Topaz"] = 53980, - ["Lucent Monarch Topaz"] = 53981, - ["Deft Monarch Topaz"] = 53982, - ["Luminous Monarch Topaz"] = 53983, - ["Potent Monarch Topaz"] = 53984, - ["Veiled Monarch Topaz"] = 53985, - ["Durable Monarch Topaz"] = 53986, - ["Reckless Monarch Topaz"] = 53987, - ["Wicked Monarch Topaz"] = 53988, - ["Pristine Monarch Topaz"] = 53989, - ["Empowered Monarch Topaz"] = 53990, - ["Stark Monarch Topaz"] = 53991, - ["Stalwart Monarch Topaz"] = 53992, - ["Glimmering Monarch Topaz"] = 53993, - ["Accurate Monarch Topaz"] = 53994, - ["Timeless Forest Emerald"] = 53995, - ["Jagged Forest Emerald"] = 53996, - ["Vivid Forest Emerald"] = 53997, - ["Enduring Forest Emerald"] = 53998, - ["Steady Forest Emerald"] = 54000, - ["Forceful Forest Emerald"] = 54001, - ["Seer's Forest Emerald"] = 54002, - ["Misty Forest Emerald"] = 54003, - ["Shining Forest Emerald"] = 54004, - ["Turbid Forest Emerald"] = 54005, - ["Intricate Forest Emerald"] = 54006, - ["Dazzling Forest Emerald"] = 54007, - ["Sundered Forest Emerald"] = 54008, - ["Lambent Forest Emerald"] = 54009, - ["Opaque Forest Emerald"] = 54010, - ["Energized Forest Emerald"] = 54011, - ["Radiant Forest Emerald"] = 54012, - ["Tense Forest Emerald"] = 54013, - ["Shattered Forest Emerald"] = 54014, - ["Precise Bloodstone"] = 54017, - ["Fierce Monarch Topaz"] = 54019, - ["Resolute Monarch Topaz"] = 54023, - ["Effulgent Skyflare Diamond"] = 55384, - ["Tireless Skyflare Diamond"] = 55386, - ["Forlorn Skyflare Diamond"] = 55387, - ["Impassive Skyflare Diamond"] = 55388, - ["Chaotic Skyflare Diamond"] = 55389, - ["Destructive Skyflare Diamond"] = 55390, - ["Ember Skyflare Diamond"] = 55392, - ["Enigmatic Skyflare Diamond"] = 55393, - ["Swift Skyflare Diamond"] = 55394, - ["Thundering Skyflare Diamond"] = 55395, - ["Insightful Earthsiege Diamond"] = 55396, - ["Bracing Earthsiege Diamond"] = 55397, - ["Eternal Earthsiege Diamond"] = 55398, - ["Powerful Earthsiege Diamond"] = 55399, - ["Relentless Earthsiege Diamond"] = 55400, - ["Austere Earthsiege Diamond"] = 55401, - ["Persistent Earthsiege Diamond"] = 55402, - ["Trenchant Earthsiege Diamond"] = 55403, - ["Invigorating Earthsiege Diamond"] = 55404, - ["Beaming Earthsiege Diamond"] = 55405, - ["Revitalizing Skyflare Diamond"] = 55407, - ["Bold Dragon's Eye"] = 56049, - ["Delicate Dragon's Eye"] = 56052, - ["Runed Dragon's Eye"] = 56053, - ["Bright Dragon's Eye"] = 56054, - ["Subtle Dragon's Eye"] = 56055, - ["Flashing Dragon's Eye"] = 56056, - ["Brilliant Dragon's Eye"] = 56074, - ["Fractured Dragon's Eye"] = 56076, - ["Lustrous Dragon's Eye"] = 56077, - ["Mystic Dragon's Eye"] = 56079, - ["Precise Dragon's Eye"] = 56081, - ["Quick Dragon's Eye"] = 56083, - ["Rigid Dragon's Eye"] = 56084, - ["Smooth Dragon's Eye"] = 56085, - ["Solid Dragon's Eye"] = 56086, - ["Sparkling Dragon's Eye"] = 56087, - ["Stormy Dragon's Eye"] = 56088, - ["Thick Dragon's Eye"] = 56089, - ["Bloodstone Band"] = 56193, - ["Sun Rock Ring"] = 56194, - ["Jade Dagger Pendant"] = 56195, - ["Blood Sun Necklace"] = 56196, - ["Dream Signet"] = 56197, - ["Ruby Hare"] = 56199, - ["Twilight Serpent"] = 56201, - ["Sapphire Owl"] = 56202, - ["Emerald Boar"] = 56203, - ["Dark Jade Focusing Lens"] = 56205, - ["Shadow Crystal Focusing Lens"] = 56206, - ["Shadow Jade Focusing Lens"] = 56208, - ["Titanium Impact Band"] = 56496, - ["Titanium Earthguard Ring"] = 56497, - ["Titanium Spellshock Ring"] = 56498, - ["Titanium Impact Choker"] = 56499, - ["Titanium Earthguard Chain"] = 56500, - ["Titanium Spellshock Necklace"] = 56501, - ["Enchanted Pearl"] = 56530, - ["Enchanted Tear"] = 56531, - ["Crystal Citrine Necklace"] = 58141, - ["Crystal Chalcedony Amulet"] = 58142, - ["Earthshadow Ring"] = 58143, - ["Jade Ring of Slaying"] = 58144, - ["Stoneguard Band"] = 58145, - ["Shadowmight Ring"] = 58146, - ["Ring of Earthen Might"] = 58147, - ["Ring of Scarlet Shadows"] = 58148, - ["Windfire Band"] = 58149, - ["Ring of Northern Tears"] = 58150, - ["Savage Titanium Ring"] = 58492, - ["Savage Titanium Band"] = 58507, - ["Titanium Frostguard Ring"] = 58954, - ["Monarch Crab"] = 59759, - ["Icy Prism"] = 62242, - ["Prismatic Black Diamond"] = 62941, - ["Amulet of Truesight"] = 63743, - ["Emerald Choker"] = 64725, - ["Sky Sapphire Amulet"] = 64726, - ["Runed Mana Band"] = 64727, - ["Scarlet Signet"] = 64728, - ["Enduring Eye of Zul"] = 66338, - ["Steady Eye of Zul"] = 66428, - ["Vivid Eye of Zul"] = 66429, - ["Dazzling Eye of Zul"] = 66430, - ["Jagged Eye of Zul"] = 66431, - ["Timeless Eye of Zul"] = 66432, - ["Seer's Eye of Zul"] = 66433, - ["Forceful Eye of Zul"] = 66434, - ["Misty Eye of Zul"] = 66435, - ["Sundered Eye of Zul"] = 66436, - ["Shining Eye of Zul"] = 66437, - ["Tense Eye of Zul"] = 66438, - ["Lambent Eye of Zul"] = 66439, - ["Intricate Eye of Zul"] = 66440, - ["Radiant Eye of Zul"] = 66441, - ["Energized Eye of Zul"] = 66442, - ["Shattered Eye of Zul"] = 66443, - ["Opaque Eye of Zul"] = 66444, - ["Turbid Eye of Zul"] = 66445, - ["Runed Cardinal Ruby"] = 66446, - ["Bold Cardinal Ruby"] = 66447, - ["Delicate Cardinal Ruby"] = 66448, - ["Bright Cardinal Ruby"] = 66449, - ["Precise Cardinal Ruby"] = 66450, - ["Fractured Cardinal Ruby"] = 66451, - ["Subtle Cardinal Ruby"] = 66452, - ["Flashing Cardinal Ruby"] = 66453, - ["Solid Majestic Zircon"] = 66497, - ["Sparkling Majestic Zircon"] = 66498, - ["Stormy Majestic Zircon"] = 66499, - ["Lustrous Majestic Zircon"] = 66500, - ["Rigid King's Amber"] = 66501, - ["Smooth King's Amber"] = 66502, - ["Brilliant King's Amber"] = 66503, - ["Thick King's Amber"] = 66504, - ["Mystic King's Amber"] = 66505, - ["Quick King's Amber"] = 66506, - ["Balanced Dreadstone"] = 66553, - ["Sovereign Dreadstone"] = 66554, - ["Glowing Dreadstone"] = 66555, - ["Purified Dreadstone"] = 66556, - ["Shifting Dreadstone"] = 66557, - ["Royal Dreadstone"] = 66558, - ["Regal Dreadstone"] = 66559, - ["Defender's Dreadstone"] = 66560, - ["Guardian's Dreadstone"] = 66561, - ["Mysterious Dreadstone"] = 66562, - ["Puissant Dreadstone"] = 66563, - ["Infused Dreadstone"] = 66564, - ["Tenuous Dreadstone"] = 66565, - ["Luminous Ametrine"] = 66566, - ["Inscribed Ametrine"] = 66567, - ["Deadly Ametrine"] = 66568, - ["Potent Ametrine"] = 66569, - ["Veiled Ametrine"] = 66570, - ["Durable Ametrine"] = 66571, - ["Etched Ametrine"] = 66572, - ["Pristine Ametrine"] = 66573, - ["Reckless Ametrine"] = 66574, - ["Glinting Ametrine"] = 66575, - ["Accurate Ametrine"] = 66576, - ["Wicked Ametrine"] = 66577, - ["Glimmering Ametrine"] = 66578, - ["Champion's Ametrine"] = 66579, - ["Empowered Ametrine"] = 66580, - ["Stalwart Ametrine"] = 66581, - ["Resplendent Ametrine"] = 66582, - ["Fierce Ametrine"] = 66583, - ["Deft Ametrine"] = 66584, - ["Lucent Ametrine"] = 66585, - ["Resolute Ametrine"] = 66586, - ["Stark Ametrine"] = 66587, - ["Nightmare Tear"] = 68253, - - - --- Leatherworking - ["Leatherworking"] = 2108, - ["Handstitched Leather Boots"] = 2149, - ["Light Armor Kit"] = 2152, - ["Handstitched Leather Pants"] = 2153, - ["Fine Leather Boots"] = 2158, - ["Fine Leather Cloak"] = 2159, - ["Embossed Leather Vest"] = 2160, - ["Embossed Leather Boots"] = 2161, - ["Embossed Leather Cloak"] = 2162, - ["White Leather Jerkin"] = 2163, - ["Fine Leather Gloves"] = 2164, - ["Medium Armor Kit"] = 2165, - ["Toughened Leather Armor"] = 2166, - ["Dark Leather Boots"] = 2167, - ["Dark Leather Cloak"] = 2168, - ["Dark Leather Tunic"] = 2169, - ["Light Leather"] = 2881, - ["Handstitched Leather Belt"] = 3753, - ["Embossed Leather Gloves"] = 3756, - ["Embossed Leather Pants"] = 3759, - ["Hillman's Cloak"] = 3760, - ["Fine Leather Tunic"] = 3761, - ["Hillman's Leather Vest"] = 3762, - ["Fine Leather Belt"] = 3763, - ["Hillman's Leather Gloves"] = 3764, - ["Dark Leather Gloves"] = 3765, - ["Dark Leather Belt"] = 3766, - ["Hillman's Belt"] = 3767, - ["Hillman's Shoulders"] = 3768, - ["Dark Leather Shoulders"] = 3769, - ["Toughened Leather Gloves"] = 3770, - ["Barbaric Gloves"] = 3771, - ["Green Leather Armor"] = 3772, - ["Guardian Armor"] = 3773, - ["Green Leather Belt"] = 3774, - ["Guardian Belt"] = 3775, - ["Green Leather Bracers"] = 3776, - ["Guardian Leather Bracers"] = 3777, - ["Gem-studded Leather Belt"] = 3778, - ["Barbaric Belt"] = 3779, - ["Heavy Armor Kit"] = 3780, - ["Cured Light Hide"] = 3816, - ["Cured Medium Hide"] = 3817, - ["Cured Heavy Hide"] = 3818, - ["Raptor Hide Harness"] = 4096, - ["Raptor Hide Belt"] = 4097, - ["Kodo Hide Bag"] = 5244, - ["Barbaric Harness"] = 6661, - ["Murloc Scale Belt"] = 6702, - ["Murloc Scale Breastplate"] = 6703, - ["Thick Murloc Armor"] = 6704, - ["Murloc Scale Bracers"] = 6705, - ["Handstitched Leather Vest"] = 7126, - ["Fine Leather Pants"] = 7133, - ["Dark Leather Pants"] = 7135, - ["Guardian Pants"] = 7147, - ["Barbaric Leggings"] = 7149, - ["Barbaric Shoulders"] = 7151, - ["Guardian Cloak"] = 7153, - ["Guardian Gloves"] = 7156, - ["Deviate Scale Cloak"] = 7953, - ["Deviate Scale Gloves"] = 7954, - ["Deviate Scale Belt"] = 7955, - ["Moonglow Vest"] = 8322, - ["Handstitched Leather Cloak"] = 9058, - ["Handstitched Leather Bracers"] = 9059, - ["Light Leather Quiver"] = 9060, - ["Small Leather Ammo Pouch"] = 9062, - ["Rugged Leather Pants"] = 9064, - ["Light Leather Bracers"] = 9065, - ["Light Leather Pants"] = 9068, - ["Black Whelp Cloak"] = 9070, - ["Red Whelp Gloves"] = 9072, - ["Nimble Leather Gloves"] = 9074, - ["Fletcher's Gloves"] = 9145, - ["Herbalist's Gloves"] = 9146, - ["Earthen Leather Shoulders"] = 9147, - ["Pilferer's Gloves"] = 9148, - ["Heavy Earthen Gloves"] = 9149, - ["Heavy Quiver"] = 9193, - ["Heavy Leather Ammo Pouch"] = 9194, - ["Dusky Leather Leggings"] = 9195, - ["Dusky Leather Armor"] = 9196, - ["Green Whelp Armor"] = 9197, - ["Frost Leather Cloak"] = 9198, - ["Dusky Bracers"] = 9201, - ["Green Whelp Bracers"] = 9202, - ["Dusky Belt"] = 9206, - ["Dusky Boots"] = 9207, - ["Swift Boots"] = 9208, - ["Cured Thick Hide"] = 10482, - ["Thick Armor Kit"] = 10487, - ["Comfortable Leather Hat"] = 10490, - ["Nightscape Tunic"] = 10499, - ["Nightscape Headband"] = 10507, - ["Turtle Scale Gloves"] = 10509, - ["Turtle Scale Breastplate"] = 10511, - ["Nightscape Shoulders"] = 10516, - ["Turtle Scale Bracers"] = 10518, - ["Big Voodoo Robe"] = 10520, - ["Tough Scorpid Breastplate"] = 10525, - ["Wild Leather Shoulders"] = 10529, - ["Big Voodoo Mask"] = 10531, - ["Tough Scorpid Bracers"] = 10533, - ["Tough Scorpid Gloves"] = 10542, - ["Wild Leather Vest"] = 10544, - ["Wild Leather Helmet"] = 10546, - ["Nightscape Pants"] = 10548, - ["Nightscape Cloak"] = 10550, - ["Turtle Scale Helm"] = 10552, - ["Tough Scorpid Boots"] = 10554, - ["Turtle Scale Leggings"] = 10556, - ["Nightscape Boots"] = 10558, - ["Big Voodoo Pants"] = 10560, - ["Big Voodoo Cloak"] = 10562, - ["Tough Scorpid Shoulders"] = 10564, - ["Wild Leather Boots"] = 10566, - ["Tough Scorpid Leggings"] = 10568, - ["Tough Scorpid Helm"] = 10570, - ["Wild Leather Leggings"] = 10572, - ["Wild Leather Cloak"] = 10574, - ["Dragonscale Gauntlets"] = 10619, - ["Wolfshead Helm"] = 10621, - ["Gauntlets of the Sea"] = 10630, - ["Helm of Fire"] = 10632, - ["Feathered Breastplate"] = 10647, - ["Dragonscale Breastplate"] = 10650, - ["Quickdraw Quiver"] = 14930, - ["Thick Leather Ammo Pouch"] = 14932, - ["Cured Rugged Hide"] = 19047, - ["Heavy Scorpid Bracers"] = 19048, - ["Wicked Leather Gauntlets"] = 19049, - ["Green Dragonscale Breastplate"] = 19050, - ["Heavy Scorpid Vest"] = 19051, - ["Wicked Leather Bracers"] = 19052, - ["Chimeric Gloves"] = 19053, - ["Red Dragonscale Breastplate"] = 19054, - ["Runic Leather Gauntlets"] = 19055, - ["Rugged Armor Kit"] = 19058, - ["Volcanic Leggings"] = 19059, - ["Green Dragonscale Leggings"] = 19060, - ["Living Shoulders"] = 19061, - ["Ironfeather Shoulders"] = 19062, - ["Chimeric Boots"] = 19063, - ["Heavy Scorpid Gauntlets"] = 19064, - ["Runic Leather Bracers"] = 19065, - ["Frostsaber Boots"] = 19066, - ["Stormshroud Pants"] = 19067, - ["Warbear Harness"] = 19068, - ["Heavy Scorpid Belt"] = 19070, - ["Wicked Leather Headband"] = 19071, - ["Runic Leather Belt"] = 19072, - ["Chimeric Leggings"] = 19073, - ["Frostsaber Leggings"] = 19074, - ["Heavy Scorpid Leggings"] = 19075, - ["Volcanic Breastplate"] = 19076, - ["Blue Dragonscale Breastplate"] = 19077, - ["Living Leggings"] = 19078, - ["Stormshroud Armor"] = 19079, - ["Warbear Woolies"] = 19080, - ["Chimeric Vest"] = 19081, - ["Runic Leather Headband"] = 19082, - ["Wicked Leather Pants"] = 19083, - ["Devilsaur Gauntlets"] = 19084, - ["Black Dragonscale Breastplate"] = 19085, - ["Ironfeather Breastplate"] = 19086, - ["Frostsaber Gloves"] = 19087, - ["Heavy Scorpid Helm"] = 19088, - ["Blue Dragonscale Shoulders"] = 19089, - ["Stormshroud Shoulders"] = 19090, - ["Runic Leather Pants"] = 19091, - ["Wicked Leather Belt"] = 19092, - ["Onyxia Scale Cloak"] = 19093, - ["Black Dragonscale Shoulders"] = 19094, - ["Living Breastplate"] = 19095, - ["Devilsaur Leggings"] = 19097, - ["Wicked Leather Armor"] = 19098, - ["Heavy Scorpid Shoulders"] = 19100, - ["Volcanic Shoulders"] = 19101, - ["Runic Leather Armor"] = 19102, - ["Runic Leather Shoulders"] = 19103, - ["Frostsaber Tunic"] = 19104, - ["Onyxia Scale Breastplate"] = 19106, - ["Black Dragonscale Leggings"] = 19107, - ["Medium Leather"] = 20648, - ["Heavy Leather"] = 20649, - ["Thick Leather"] = 20650, - ["Corehound Boots"] = 20853, - ["Molten Helm"] = 20854, - ["Black Dragonscale Boots"] = 20855, - ["Gloves of the Greatfather"] = 21943, - ["Rugged Leather"] = 22331, - ["Shadowskin Gloves"] = 22711, - ["Core Armor Kit"] = 22727, - ["Girdle of Insight"] = 22921, - ["Mongoose Boots"] = 22922, - ["Swift Flight Bracers"] = 22923, - ["Chromatic Cloak"] = 22926, - ["Hide of the Wild"] = 22927, - ["Shifting Cloak"] = 22928, - ["Heavy Leather Ball"] = 23190, - ["Barbaric Bracers"] = 23399, - ["Might of the Timbermaw"] = 23703, - ["Timbermaw Brawlers"] = 23704, - ["Dawn Treaders"] = 23705, - ["Golden Mantle of the Dawn"] = 23706, - ["Lava Belt"] = 23707, - ["Chromatic Gauntlets"] = 23708, - ["Corehound Belt"] = 23709, - ["Molten Belt"] = 23710, - ["Primal Batskin Jerkin"] = 24121, - ["Primal Batskin Gloves"] = 24122, - ["Primal Batskin Bracers"] = 24123, - ["Blood Tiger Breastplate"] = 24124, - ["Blood Tiger Shoulders"] = 24125, - ["Blue Dragonscale Leggings"] = 24654, - ["Green Dragonscale Gauntlets"] = 24655, - ["Dreamscale Breastplate"] = 24703, - ["Spitfire Bracers"] = 24846, - ["Spitfire Gauntlets"] = 24847, - ["Spitfire Breastplate"] = 24848, - ["Sandstalker Bracers"] = 24849, - ["Sandstalker Gauntlets"] = 24850, - ["Sandstalker Breastplate"] = 24851, - ["Black Whelp Tunic"] = 24940, - ["Stormshroud Gloves"] = 26279, - ["Polar Tunic"] = 28219, - ["Polar Gloves"] = 28220, - ["Polar Bracers"] = 28221, - ["Icy Scale Breastplate"] = 28222, - ["Icy Scale Gauntlets"] = 28223, - ["Icy Scale Bracers"] = 28224, - ["Bramblewood Helm"] = 28472, - ["Bramblewood Boots"] = 28473, - ["Bramblewood Belt"] = 28474, - ["Knothide Leather"] = 32454, - ["Heavy Knothide Leather"] = 32455, - ["Knothide Armor Kit"] = 32456, - ["Vindicator's Armor Kit"] = 32457, - ["Magister's Armor Kit"] = 32458, - ["Riding Crop"] = 32461, - ["Felscale Gloves"] = 32462, - ["Felscale Boots"] = 32463, - ["Felscale Pants"] = 32464, - ["Felscale Breastplate"] = 32465, - ["Scaled Draenic Pants"] = 32466, - ["Scaled Draenic Gloves"] = 32467, - ["Scaled Draenic Vest"] = 32468, - ["Scaled Draenic Boots"] = 32469, - ["Thick Draenic Gloves"] = 32470, - ["Thick Draenic Pants"] = 32471, - ["Thick Draenic Boots"] = 32472, - ["Thick Draenic Vest"] = 32473, - ["Wild Draenish Boots"] = 32478, - ["Wild Draenish Gloves"] = 32479, - ["Wild Draenish Leggings"] = 32480, - ["Wild Draenish Vest"] = 32481, - ["Comfortable Insoles"] = 32482, - ["Stylin' Purple Hat"] = 32485, - ["Stylin' Adventure Hat"] = 32487, - ["Stylin' Crimson Hat"] = 32488, - ["Stylin' Jungle Hat"] = 32489, - ["Fel Leather Gloves"] = 32490, - ["Fel Leather Boots"] = 32493, - ["Fel Leather Leggings"] = 32494, - ["Heavy Clefthoof Vest"] = 32495, - ["Heavy Clefthoof Leggings"] = 32496, - ["Heavy Clefthoof Boots"] = 32497, - ["Felstalker Belt"] = 32498, - ["Felstalker Bracer"] = 32499, - ["Felstalker Breastplate"] = 32500, - ["Netherfury Belt"] = 32501, - ["Netherfury Leggings"] = 32502, - ["Netherfury Boots"] = 32503, - ["Shadow Armor Kit"] = 35520, - ["Flame Armor Kit"] = 35521, - ["Frost Armor Kit"] = 35522, - ["Nature Armor Kit"] = 35523, - ["Arcane Armor Kit"] = 35524, - ["Enchanted Felscale Leggings"] = 35525, - ["Enchanted Felscale Gloves"] = 35526, - ["Enchanted Felscale Boots"] = 35527, - ["Flamescale Boots"] = 35528, - ["Flamescale Leggings"] = 35529, - ["Reinforced Mining Bag"] = 35530, - ["Flamescale Belt"] = 35531, - ["Enchanted Clefthoof Leggings"] = 35532, - ["Enchanted Clefthoof Gloves"] = 35533, - ["Enchanted Clefthoof Boots"] = 35534, - ["Blastguard Pants"] = 35535, - ["Blastguard Boots"] = 35536, - ["Blastguard Belt"] = 35537, - ["Drums of Panic"] = 35538, - ["Drums of Restoration"] = 35539, - ["Drums of War"] = 35540, - ["Drums of Battle"] = 35543, - ["Drums of Speed"] = 35544, - ["Cobrahide Leg Armor"] = 35549, - ["Nethercobra Leg Armor"] = 35554, - ["Clefthide Leg Armor"] = 35555, - ["Nethercleft Leg Armor"] = 35557, - ["Cobrascale Hood"] = 35558, - ["Cobrascale Gloves"] = 35559, - ["Windscale Hood"] = 35560, - ["Hood of Primal Life"] = 35561, - ["Gloves of the Living Touch"] = 35562, - ["Windslayer Wraps"] = 35563, - ["Living Dragonscale Helm"] = 35564, - ["Earthen Netherscale Boots"] = 35567, - ["Windstrike Gloves"] = 35568, - ["Netherdrake Helm"] = 35572, - ["Netherdrake Gloves"] = 35573, - ["Thick Netherscale Breastplate"] = 35574, - ["Ebon Netherscale Breastplate"] = 35575, - ["Ebon Netherscale Belt"] = 35576, - ["Ebon Netherscale Bracers"] = 35577, - ["Netherstrike Breastplate"] = 35580, - ["Netherstrike Belt"] = 35582, - ["Netherstrike Bracers"] = 35584, - ["Windhawk Hauberk"] = 35585, - ["Windhawk Belt"] = 35587, - ["Windhawk Bracers"] = 35588, - ["Primalstrike Vest"] = 35589, - ["Primalstrike Belt"] = 35590, - ["Primalstrike Bracers"] = 35591, - ["Blackstorm Leggings"] = 36074, - ["Wildfeather Leggings"] = 36075, - ["Dragonstrike Leggings"] = 36076, - ["Primalstorm Breastplate"] = 36077, - ["Living Crystal Breastplate"] = 36078, - ["Golden Dragonstrike Breastplate"] = 36079, - ["Belt of Natural Power"] = 36349, - ["Belt of Deep Shadow"] = 36351, - ["Belt of the Black Eagle"] = 36352, - ["Monsoon Belt"] = 36353, - ["Boots of Natural Grace"] = 36355, - ["Boots of Utter Darkness"] = 36357, - ["Boots of the Crimson Hawk"] = 36358, - ["Hurricane Boots"] = 36359, - ["Boots of Shackled Souls"] = 39997, - ["Greaves of Shackled Souls"] = 40001, - ["Waistguard of Shackled Souls"] = 40002, - ["Redeemed Soul Moccasins"] = 40003, - ["Redeemed Soul Wristguards"] = 40004, - ["Redeemed Soul Legguards"] = 40005, - ["Redeemed Soul Cinch"] = 40006, - ["Bracers of Renewed Life"] = 41156, - ["Shoulderpads of Renewed Life"] = 41157, - ["Swiftstrike Bracers"] = 41158, - ["Swiftstrike Shoulders"] = 41160, - ["Bindings of Lightning Reflexes"] = 41161, - ["Shoulders of Lightning Reflexes"] = 41162, - ["Living Earth Bindings"] = 41163, - ["Living Earth Shoulders"] = 41164, - ["Cloak of Darkness"] = 42546, - ["Shadowprowler's Chestguard"] = 42731, - ["Knothide Ammo Pouch"] = 44343, - ["Knothide Quiver"] = 44344, - ["Quiver of a Thousand Feathers"] = 44359, - ["Netherscale Ammo Pouch"] = 44768, - ["Glove Reinforcements"] = 44770, - ["Winter Boots"] = 44953, - ["Heavy Knothide Armor Kit"] = 44970, - ["Leatherworker's Satchel"] = 45100, - ["Bag of Many Hides"] = 45117, - ["Leather Gauntlets of the Sun"] = 46132, - ["Fletcher's Gloves of the Phoenix"] = 46133, - ["Gloves of Immortal Dusk"] = 46134, - ["Sun-Drenched Scale Gloves"] = 46135, - ["Leather Chestguard of the Sun"] = 46136, - ["Embrace of the Phoenix"] = 46137, - ["Carapace of Sun and Shadow"] = 46138, - ["Sun-Drenched Scale Chestguard"] = 46139, - ["Heavy Borean Leather"] = 50936, - ["Iceborne Chestguard"] = 50938, - ["Iceborne Leggings"] = 50939, - ["Iceborne Shoulderpads"] = 50940, - ["Iceborne Gloves"] = 50941, - ["Iceborne Boots"] = 50942, - ["Iceborne Belt"] = 50943, - ["Arctic Chestpiece"] = 50944, - ["Arctic Leggings"] = 50945, - ["Arctic Shoulderpads"] = 50946, - ["Arctic Gloves"] = 50947, - ["Arctic Boots"] = 50948, - ["Arctic Belt"] = 50949, - ["Frostscale Chestguard"] = 50950, - ["Frostscale Leggings"] = 50951, - ["Frostscale Shoulders"] = 50952, - ["Frostscale Gloves"] = 50953, - ["Frostscale Boots"] = 50954, - ["Frostscale Belt"] = 50955, - ["Nerubian Chestguard"] = 50956, - ["Nerubian Legguards"] = 50957, - ["Nerubian Shoulders"] = 50958, - ["Nerubian Gloves"] = 50959, - ["Nerubian Boots"] = 50960, - ["Nerubian Belt"] = 50961, - ["Borean Armor Kit"] = 50962, - ["Heavy Borean Armor Kit"] = 50963, - ["Jormungar Leg Armor"] = 50964, - ["Frosthide Leg Armor"] = 50965, - ["Nerubian Leg Armor"] = 50966, - ["Icescale Leg Armor"] = 50967, - ["Trapper's Traveling Pack"] = 50970, - ["Mammoth Mining Bag"] = 50971, - ["Black Chitinguard Boots"] = 51568, - ["Dark Arctic Leggings"] = 51569, - ["Dark Arctic Chestpiece"] = 51570, - ["Arctic Wristguards"] = 51571, - ["Arctic Helm"] = 51572, - ["Bracers of Shackled Souls"] = 52733, - ["Cloak of Tormented Skies"] = 55199, - ["Bracers of Deflection"] = 55243, - ["Fur Lining - Attack Power"] = 57683, - ["Fur Lining - Stamina"] = 57690, - ["Fur Lining - Spell Power"] = 57691, - ["Fur Lining - Fire Resist"] = 57692, - ["Fur Lining - Frost Resist"] = 57694, - ["Fur Lining - Shadow Resist"] = 57696, - ["Fur Lining - Nature Resist"] = 57699, - ["Fur Lining - Arcane Resist"] = 57701, - ["Jormungar Leg Reinforcements"] = 60583, - ["Nerubian Leg Reinforcements"] = 60584, - ["Frostscale Bracers"] = 60599, - ["Frostscale Helm"] = 60600, - ["Dark Frostscale Leggings"] = 60601, - ["Dark Frostscale Breastplate"] = 60604, - ["Dragonstompers"] = 60605, - ["Iceborne Wristguards"] = 60607, - ["Iceborne Helm"] = 60608, - ["Dark Iceborne Leggings"] = 60611, - ["Dark Iceborne Chestguard"] = 60613, - ["Bugsquashers"] = 60620, - ["Nerubian Bracers"] = 60622, - ["Nerubian Helm"] = 60624, - ["Dark Nerubian Leggings"] = 60627, - ["Dark Nerubian Chestpiece"] = 60629, - ["Scaled Icewalkers"] = 60630, - ["Cloak of Harsh Winds"] = 60631, - ["Ice Striker's Cloak"] = 60637, - ["Durable Nerubhide Cape"] = 60640, - ["Pack of Endless Pockets"] = 60643, - ["Dragonscale Ammo Pouch"] = 60645, - ["Nerubian Reinforced Quiver"] = 60647, - ["Razorstrike Breastplate"] = 60649, - ["Virulent Spaulders"] = 60651, - ["Eaglebane Bracers"] = 60652, - ["Nightshock Hood"] = 60655, - ["Nightshock Girdle"] = 60658, - ["Leggings of Visceral Strikes"] = 60660, - ["Seafoam Gauntlets"] = 60665, - ["Jormscale Footpads"] = 60666, - ["Wildscale Breastplate"] = 60669, - ["Purehorn Spaulders"] = 60671, - ["Eviscerator's Facemask"] = 60697, - ["Eviscerator's Shoulderpads"] = 60702, - ["Eviscerator's Chestguard"] = 60703, - ["Eviscerator's Bindings"] = 60704, - ["Eviscerator's Gauntlets"] = 60705, - ["Eviscerator's Waistguard"] = 60706, - ["Eviscerator's Legguards"] = 60711, - ["Eviscerator's Treads"] = 60712, - ["Overcast Headguard"] = 60715, - ["Overcast Spaulders"] = 60716, - ["Overcast Chestguard"] = 60718, - ["Overcast Bracers"] = 60720, - ["Overcast Handwraps"] = 60721, - ["Overcast Belt"] = 60723, - ["Overcast Leggings"] = 60725, - ["Overcast Boots"] = 60727, - ["Swiftarrow Helm"] = 60728, - ["Swiftarrow Shoulderguards"] = 60729, - ["Swiftarrow Hauberk"] = 60730, - ["Swiftarrow Bracers"] = 60731, - ["Swiftarrow Gauntlets"] = 60732, - ["Swiftarrow Belt"] = 60734, - ["Swiftarrow Leggings"] = 60735, - ["Swiftarrow Boots"] = 60737, - ["Stormhide Crown"] = 60743, - ["Stormhide Shoulders"] = 60746, - ["Stormhide Hauberk"] = 60747, - ["Stormhide Wristguards"] = 60748, - ["Stormhide Grips"] = 60749, - ["Stormhide Belt"] = 60750, - ["Stormhide Legguards"] = 60751, - ["Stormhide Stompers"] = 60752, - ["Giantmaim Legguards"] = 60754, - ["Giantmaim Bracers"] = 60755, - ["Revenant's Breastplate"] = 60756, - ["Revenant's Treads"] = 60757, - ["Trollwoven Spaulders"] = 60758, - ["Trollwoven Girdle"] = 60759, - ["Earthgiving Legguards"] = 60760, - ["Earthgiving Boots"] = 60761, - ["Polar Vest"] = 60996, - ["Polar Cord"] = 60997, - ["Polar Boots"] = 60998, - ["Icy Scale Chestguard"] = 60999, - ["Icy Scale Belt"] = 61000, - ["Icy Scale Boots"] = 61002, - ["Windripper Boots"] = 62176, - ["Windripper Leggings"] = 62177, - ["Earthen Leg Armor"] = 62448, - ["Belt of Dragons"] = 63194, - ["Boots of Living Scale"] = 63195, - ["Blue Belt of Chaos"] = 63196, - ["Lightning Grounded Boots"] = 63197, - ["Death-warmed Belt"] = 63198, - ["Footpads of Silence"] = 63199, - ["Belt of Arctic Life"] = 63200, - ["Boots of Wintry Endurance"] = 63201, - ["Borean Leather"] = 64661, - ["Ensorcelled Nerubian Breastplate"] = 67136, - ["Black Chitin Bracers"] = 67137, - ["Crusader's Dragonscale Breastplate"] = 67138, - ["Bracers of Swift Death"] = 67139, - ["Lunar Eclipse Robes"] = 67140, - ["Moonshadow Armguards"] = 67141, - ["Knightbane Carapace"] = 67142, - ["Crusader's Dragonscale Bracers"] = 67143, - ["Drums of Forgotten Kings"] = 69386, - ["Drums of the Wild"] = 69388, - ["Legwraps of Unleashed Nature"] = 70554, - ["Blessed Cenarion Boots"] = 70555, - ["Bladeborn Leggings"] = 70556, - ["Footpads of Impending Death"] = 70557, - ["Lightning-Infused Leggings"] = 70558, - ["Earthsoul Boots"] = 70559, - ["Draconic Bonesplinter Legguards"] = 70560, - ["Rock-Steady Treads"] = 70561, - - - --- Tailoring - ["Tailoring"] = 3908, - ["Brown Linen Vest"] = 2385, - ["Linen Boots"] = 2386, - ["Linen Cloak"] = 2387, - ["Red Linen Robe"] = 2389, - ["Red Linen Shirt"] = 2392, - ["White Linen Shirt"] = 2393, - ["Blue Linen Shirt"] = 2394, - ["Barbaric Linen Vest"] = 2395, - ["Green Linen Shirt"] = 2396, - ["Reinforced Linen Cape"] = 2397, - ["Green Woolen Vest"] = 2399, - ["Woolen Boots"] = 2401, - ["Woolen Cape"] = 2402, - ["Gray Woolen Robe"] = 2403, - ["Gray Woolen Shirt"] = 2406, - ["Bolt of Linen Cloth"] = 2963, - ["Bolt of Woolen Cloth"] = 2964, - ["Linen Bag"] = 3755, - ["Woolen Bag"] = 3757, - ["Green Woolen Bag"] = 3758, - ["Small Silk Pack"] = 3813, - ["Bolt of Silk Cloth"] = 3839, - ["Heavy Linen Gloves"] = 3840, - ["Green Linen Bracers"] = 3841, - ["Handstitched Linen Britches"] = 3842, - ["Heavy Woolen Gloves"] = 3843, - ["Heavy Woolen Cloak"] = 3844, - ["Soft-soled Linen Boots"] = 3845, - ["Red Woolen Boots"] = 3847, - ["Double-stitched Woolen Shoulders"] = 3848, - ["Reinforced Woolen Shoulders"] = 3849, - ["Heavy Woolen Pants"] = 3850, - ["Phoenix Pants"] = 3851, - ["Gloves of Meditation"] = 3852, - ["Azure Silk Gloves"] = 3854, - ["Spidersilk Boots"] = 3855, - ["Spider Silk Slippers"] = 3856, - ["Enchanter's Cowl"] = 3857, - ["Shadow Hood"] = 3858, - ["Azure Silk Vest"] = 3859, - ["Boots of the Enchanter"] = 3860, - ["Long Silken Cloak"] = 3861, - ["Icy Cloak"] = 3862, - ["Spider Belt"] = 3863, - ["Star Belt"] = 3864, - ["Bolt of Mageweave"] = 3865, - ["Stylish Red Shirt"] = 3866, - ["Phoenix Gloves"] = 3868, - ["Bright Yellow Shirt"] = 3869, - ["Dark Silk Shirt"] = 3870, - ["Formal White Shirt"] = 3871, - ["Rich Purple Silk Shirt"] = 3872, - ["Black Swashbuckler's Shirt"] = 3873, - ["Brown Linen Pants"] = 3914, - ["Brown Linen Shirt"] = 3915, - ["Pearl-clasped Cloak"] = 6521, - ["Red Linen Bag"] = 6686, - ["Red Woolen Bag"] = 6688, - ["Lesser Wizard's Robe"] = 6690, - ["Robes of Arcana"] = 6692, - ["Green Silk Pack"] = 6693, - ["Black Silk Pack"] = 6695, - ["Brown Linen Robe"] = 7623, - ["White Linen Robe"] = 7624, - ["Red Linen Vest"] = 7629, - ["Blue Linen Vest"] = 7630, - ["Blue Linen Robe"] = 7633, - ["Green Woolen Robe"] = 7636, - ["Blue Overalls"] = 7639, - ["Greater Adept's Robe"] = 7643, - ["Stylish Blue Shirt"] = 7892, - ["Stylish Green Shirt"] = 7893, - ["Simple Dress"] = 8465, - ["White Woolen Dress"] = 8467, - ["White Swashbuckler's Shirt"] = 8483, - ["Red Swashbuckler's Shirt"] = 8489, - ["Azure Silk Pants"] = 8758, - ["Azure Silk Hood"] = 8760, - ["Silk Headband"] = 8762, - ["Earthen Vest"] = 8764, - ["Azure Silk Belt"] = 8766, - ["Robe of Power"] = 8770, - ["Crimson Silk Belt"] = 8772, - ["Green Silken Shoulders"] = 8774, - ["Linen Belt"] = 8776, - ["Boots of Darkness"] = 8778, - ["Hands of Darkness"] = 8780, - ["Truefaith Gloves"] = 8782, - ["Green Silk Armor"] = 8784, - ["Azure Silk Cloak"] = 8786, - ["Crimson Silk Cloak"] = 8789, - ["Crimson Silk Vest"] = 8791, - ["Crimson Silk Shoulders"] = 8793, - ["Azure Shoulders"] = 8795, - ["Earthen Silk Belt"] = 8797, - ["Crimson Silk Pantaloons"] = 8799, - ["Crimson Silk Robe"] = 8802, - ["Crimson Silk Gloves"] = 8804, - ["Simple Linen Pants"] = 12044, - ["Simple Linen Boots"] = 12045, - ["Simple Kilt"] = 12046, - ["Colorful Kilt"] = 12047, - ["Black Mageweave Vest"] = 12048, - ["Black Mageweave Leggings"] = 12049, - ["Black Mageweave Robe"] = 12050, - ["Shadoweave Pants"] = 12052, - ["Black Mageweave Gloves"] = 12053, - ["Shadoweave Robe"] = 12055, - ["Red Mageweave Vest"] = 12056, - ["White Bandit Mask"] = 12059, - ["Red Mageweave Pants"] = 12060, - ["Orange Mageweave Shirt"] = 12061, - ["Stormcloth Pants"] = 12062, - ["Stormcloth Gloves"] = 12063, - ["Orange Martial Shirt"] = 12064, - ["Mageweave Bag"] = 12065, - ["Red Mageweave Gloves"] = 12066, - ["Dreamweave Gloves"] = 12067, - ["Stormcloth Vest"] = 12068, - ["Cindercloth Robe"] = 12069, - ["Dreamweave Vest"] = 12070, - ["Shadoweave Gloves"] = 12071, - ["Black Mageweave Headband"] = 12072, - ["Black Mageweave Boots"] = 12073, - ["Black Mageweave Shoulders"] = 12074, - ["Lavender Mageweave Shirt"] = 12075, - ["Shadoweave Shoulders"] = 12076, - ["Simple Black Dress"] = 12077, - ["Red Mageweave Shoulders"] = 12078, - ["Red Mageweave Bag"] = 12079, - ["Pink Mageweave Shirt"] = 12080, - ["Admiral's Hat"] = 12081, - ["Shadoweave Boots"] = 12082, - ["Stormcloth Headband"] = 12083, - ["Red Mageweave Headband"] = 12084, - ["Tuxedo Shirt"] = 12085, - ["Shadoweave Mask"] = 12086, - ["Stormcloth Shoulders"] = 12087, - ["Cindercloth Boots"] = 12088, - ["Tuxedo Pants"] = 12089, - ["Stormcloth Boots"] = 12090, - ["White Wedding Dress"] = 12091, - ["Dreamweave Circlet"] = 12092, - ["Tuxedo Jacket"] = 12093, - ["Bolt of Runecloth"] = 18401, - ["Runecloth Belt"] = 18402, - ["Frostweave Tunic"] = 18403, - ["Frostweave Robe"] = 18404, - ["Runecloth Bag"] = 18405, - ["Runecloth Robe"] = 18406, - ["Runecloth Tunic"] = 18407, - ["Cindercloth Vest"] = 18408, - ["Runecloth Cloak"] = 18409, - ["Ghostweave Belt"] = 18410, - ["Frostweave Gloves"] = 18411, - ["Cindercloth Gloves"] = 18412, - ["Ghostweave Gloves"] = 18413, - ["Brightcloth Robe"] = 18414, - ["Brightcloth Gloves"] = 18415, - ["Ghostweave Vest"] = 18416, - ["Runecloth Gloves"] = 18417, - ["Cindercloth Cloak"] = 18418, - ["Felcloth Pants"] = 18419, - ["Brightcloth Cloak"] = 18420, - ["Wizardweave Leggings"] = 18421, - ["Cloak of Fire"] = 18422, - ["Runecloth Boots"] = 18423, - ["Frostweave Pants"] = 18424, - ["Cindercloth Pants"] = 18434, - ["Robe of Winter Night"] = 18436, - ["Felcloth Boots"] = 18437, - ["Runecloth Pants"] = 18438, - ["Brightcloth Pants"] = 18439, - ["Mooncloth Leggings"] = 18440, - ["Ghostweave Pants"] = 18441, - ["Felcloth Hood"] = 18442, - ["Runecloth Headband"] = 18444, - ["Mooncloth Bag"] = 18445, - ["Wizardweave Robe"] = 18446, - ["Mooncloth Vest"] = 18447, - ["Mooncloth Shoulders"] = 18448, - ["Runecloth Shoulders"] = 18449, - ["Wizardweave Turban"] = 18450, - ["Felcloth Robe"] = 18451, - ["Mooncloth Circlet"] = 18452, - ["Felcloth Shoulders"] = 18453, - ["Gloves of Spell Mastery"] = 18454, - ["Bottomless Bag"] = 18455, - ["Truefaith Vestments"] = 18456, - ["Robe of the Archmage"] = 18457, - ["Robe of the Void"] = 18458, - ["Mooncloth"] = 18560, - ["Mooncloth Boots"] = 19435, - ["Flarecore Mantle"] = 20848, - ["Flarecore Gloves"] = 20849, - ["Green Holiday Shirt"] = 21945, - ["Flarecore Wraps"] = 22759, - ["Gordok Ogre Suit"] = 22813, - ["Belt of the Archmage"] = 22866, - ["Felcloth Gloves"] = 22867, - ["Inferno Gloves"] = 22868, - ["Mooncloth Gloves"] = 22869, - ["Cloak of Warding"] = 22870, - ["Mooncloth Robe"] = 22902, - ["Wisdom of the Timbermaw"] = 23662, - ["Mantle of the Timbermaw"] = 23663, - ["Argent Boots"] = 23664, - ["Argent Shoulders"] = 23665, - ["Flarecore Robe"] = 23666, - ["Flarecore Leggings"] = 23667, - ["Bloodvine Vest"] = 24091, - ["Bloodvine Leggings"] = 24092, - ["Bloodvine Boots"] = 24093, - ["Runed Stygian Leggings"] = 24901, - ["Runed Stygian Belt"] = 24902, - ["Runed Stygian Boots"] = 24903, - ["Soul Pouch"] = 26085, - ["Felcloth Bag"] = 26086, - ["Core Felcloth Bag"] = 26087, - ["Festival Dress"] = 26403, - ["Festive Red Pant Suit"] = 26407, - ["Bolt of Netherweave"] = 26745, - ["Netherweave Bag"] = 26746, - ["Bolt of Imbued Netherweave"] = 26747, - ["Imbued Netherweave Bag"] = 26749, - ["Bolt of Soulcloth"] = 26750, - ["Primal Mooncloth"] = 26751, - ["Spellfire Belt"] = 26752, - ["Spellfire Gloves"] = 26753, - ["Spellfire Robe"] = 26754, - ["Spellfire Bag"] = 26755, - ["Frozen Shadoweave Shoulders"] = 26756, - ["Frozen Shadoweave Boots"] = 26757, - ["Frozen Shadoweave Robe"] = 26758, - ["Ebon Shadowbag"] = 26759, - ["Primal Mooncloth Belt"] = 26760, - ["Primal Mooncloth Shoulders"] = 26761, - ["Primal Mooncloth Robe"] = 26762, - ["Primal Mooncloth Bag"] = 26763, - ["Netherweave Bracers"] = 26764, - ["Netherweave Belt"] = 26765, - ["Netherweave Gloves"] = 26770, - ["Netherweave Pants"] = 26771, - ["Netherweave Boots"] = 26772, - ["Netherweave Robe"] = 26773, - ["Netherweave Tunic"] = 26774, - ["Imbued Netherweave Pants"] = 26775, - ["Imbued Netherweave Boots"] = 26776, - ["Imbued Netherweave Robe"] = 26777, - ["Imbued Netherweave Tunic"] = 26778, - ["Soulcloth Gloves"] = 26779, - ["Soulcloth Shoulders"] = 26780, - ["Soulcloth Vest"] = 26781, - ["Arcanoweave Bracers"] = 26782, - ["Arcanoweave Boots"] = 26783, - ["Arcanoweave Robe"] = 26784, - ["Enchanted Mageweave Pouch"] = 27658, - ["Enchanted Runecloth Bag"] = 27659, - ["Big Bag of Enchantment"] = 27660, - ["Cenarion Herb Bag"] = 27724, - ["Satchel of Cenarius"] = 27725, - ["Glacial Gloves"] = 28205, - ["Glacial Vest"] = 28207, - ["Glacial Cloak"] = 28208, - ["Glacial Wrists"] = 28209, - ["Gaea's Embrace"] = 28210, - ["Sylvan Vest"] = 28480, - ["Sylvan Crown"] = 28481, - ["Sylvan Shoulders"] = 28482, - ["Spellcloth"] = 31373, - ["Mystic Spellthread"] = 31430, - ["Silver Spellthread"] = 31431, - ["Runic Spellthread"] = 31432, - ["Golden Spellthread"] = 31433, - ["Unyielding Bracers"] = 31434, - ["Bracers of Havok"] = 31435, - ["Blackstrike Bracers"] = 31437, - ["Cloak of the Black Void"] = 31438, - ["Cloak of Eternity"] = 31440, - ["White Remedy Cape"] = 31441, - ["Unyielding Girdle"] = 31442, - ["Girdle of Ruination"] = 31443, - ["Black Belt of Knowledge"] = 31444, - ["Resolute Cape"] = 31448, - ["Vengeance Wrap"] = 31449, - ["Manaweave Cloak"] = 31450, - ["Whitemend Pants"] = 31451, - ["Spellstrike Pants"] = 31452, - ["Battlecast Pants"] = 31453, - ["Whitemend Hood"] = 31454, - ["Spellstrike Hood"] = 31455, - ["Battlecast Hood"] = 31456, - ["Bag of Jewels"] = 31459, - ["Netherweave Net"] = 31460, - ["Heavy Netherweave Net"] = 31461, - ["Belt of Blasting"] = 36315, - ["Belt of the Long Road"] = 36316, - ["Boots of Blasting"] = 36317, - ["Boots of the Long Road"] = 36318, - ["Netherflame Robe"] = 36665, - ["Netherflame Belt"] = 36667, - ["Netherflame Boots"] = 36668, - ["Lifeblood Leggings"] = 36669, - ["Lifeblood Belt"] = 36670, - ["Lifeblood Bracers"] = 36672, - ["Shadowcloth"] = 36686, - ["Cloak of Arcane Evasion"] = 37873, - ["Flameheart Bracers"] = 37882, - ["Flameheart Gloves"] = 37883, - ["Flameheart Vest"] = 37884, - ["Soulguard Slippers"] = 40020, - ["Soulguard Bracers"] = 40021, - ["Soulguard Leggings"] = 40023, - ["Soulguard Girdle"] = 40024, - ["Night's End"] = 40060, - ["Bracers of Nimble Thought"] = 41205, - ["Mantle of Nimble Thought"] = 41206, - ["Swiftheal Wraps"] = 41207, - ["Swiftheal Mantle"] = 41208, - ["Green Winter Clothes"] = 44950, - ["Red Winter Clothes"] = 44958, - ["Sunfire Handwraps"] = 46128, - ["Hands of Eternal Light"] = 46129, - ["Sunfire Robe"] = 46130, - ["Robe of Eternal Light"] = 46131, - ["Dress Shoes"] = 49677, - ["Mycah's Botanical Bag"] = 50194, - ["Haliscan Jacket"] = 50644, - ["Haliscan Pantaloons"] = 50647, - ["Lightweave Embroidery"] = 55642, - ["Darkglow Embroidery"] = 55769, - ["Swordguard Embroidery"] = 55777, - ["Frostweave Net"] = 55898, - ["Bolt of Frostweave"] = 55899, - ["Bolt of Imbued Frostweave"] = 55900, - ["Duskweave Leggings"] = 55901, - ["Frostwoven Shoulders"] = 55902, - ["Frostwoven Robe"] = 55903, - ["Frostwoven Gloves"] = 55904, - ["Frostwoven Boots"] = 55906, - ["Frostwoven Cowl"] = 55907, - ["Frostwoven Belt"] = 55908, - ["Mystic Frostwoven Shoulders"] = 55910, - ["Mystic Frostwoven Robe"] = 55911, - ["Mystic Frostwoven Wristwraps"] = 55913, - ["Duskweave Belt"] = 55914, - ["Duskweave Cowl"] = 55919, - ["Duskweave Wristwraps"] = 55920, - ["Duskweave Robe"] = 55921, - ["Duskweave Gloves"] = 55922, - ["Duskweave Shoulders"] = 55923, - ["Black Duskweave Leggings"] = 55925, - ["Black Duskweave Robe"] = 55941, - ["Black Duskweave Wristwraps"] = 55943, - ["Red Lumberjack Shirt"] = 55993, - ["Blue Lumberjack Shirt"] = 55994, - ["Yellow Lumberjack Shirt"] = 55995, - ["Green Lumberjack Shirt"] = 55996, - ["Red Workman's Shirt"] = 55997, - ["Blue Workman's Shirt"] = 55998, - ["Rustic Workman's Shirt"] = 55999, - ["Green Workman's Shirt"] = 56000, - ["Moonshroud"] = 56001, - ["Ebonweave"] = 56002, - ["Spellweave"] = 56003, - ["Abyssal Bag"] = 56004, - ["Glacial Bag"] = 56005, - ["Mysterious Bag"] = 56006, - ["Frostweave Bag"] = 56007, - ["Shining Spellthread"] = 56008, - ["Brilliant Spellthread"] = 56009, - ["Azure Spellthread"] = 56010, - ["Sapphire Spellthread"] = 56011, - ["Cloak of the Moon"] = 56014, - ["Cloak of Frozen Spirits"] = 56015, - ["Wispcloak"] = 56016, - ["Deathchill Cloak"] = 56017, - ["Hat of Wintry Doom"] = 56018, - ["Silky Iceshard Boots"] = 56019, - ["Deep Frozen Cord"] = 56020, - ["Frostmoon Pants"] = 56021, - ["Light Blessed Mittens"] = 56022, - ["Aurora Slippers"] = 56023, - ["Moonshroud Robe"] = 56024, - ["Moonshroud Gloves"] = 56025, - ["Ebonweave Robe"] = 56026, - ["Ebonweave Gloves"] = 56027, - ["Spellweave Robe"] = 56028, - ["Spellweave Gloves"] = 56029, - ["Frostwoven Leggings"] = 56030, - ["Frostwoven Wristwraps"] = 56031, - ["Master's Spellthread"] = 56034, - ["Sanctified Spellthread"] = 56039, - ["Duskweave Boots"] = 56048, - ["Frostsavage Belt"] = 59582, - ["Frostsavage Bracers"] = 59583, - ["Frostsavage Shoulders"] = 59584, - ["Frostsavage Boots"] = 59585, - ["Frostsavage Gloves"] = 59586, - ["Frostsavage Robe"] = 59587, - ["Frostsavage Leggings"] = 59588, - ["Frostsavage Cowl"] = 59589, - ["Flying Carpet"] = 60969, - ["Magnificent Flying Carpet"] = 60971, - ["Glacial Waistband"] = 60990, - ["Glacial Robe"] = 60993, - ["Glacial Slippers"] = 60994, - ["Sash of Ancient Power"] = 63203, - ["Spellslinger's Slippers"] = 63204, - ["Cord of the White Dawn"] = 63205, - ["Savior's Slippers"] = 63206, - ["Spidersilk Drape"] = 63742, - ["Emerald Bag"] = 63924, - ["Frostguard Drape"] = 64729, - ["Cloak of Crimson Snow"] = 64730, - ["Royal Moonshroud Robe"] = 67144, - ["Bejeweled Wizard's Bracers"] = 67145, - ["Merlin's Robe"] = 67146, - ["Royal Moonshroud Bracers"] = 67147, - ["Leggings of Woven Death"] = 70550, - ["Deathfrost Boots"] = 70551, - ["Lightweave Leggings"] = 70552, - ["Sandals of Consecration"] = 70553, - ["Frosty Flying Carpet"] = 75597, - - - --- Mining - ["Smelt Copper"] = 2657, - ["Smelt Silver"] = 2658, - ["Smelt Bronze"] = 2659, - ["Smelt Tin"] = 3304, - ["Smelt Iron"] = 3307, - ["Smelt Gold"] = 3308, - ["Smelt Steel"] = 3569, - ["Smelt Mithril"] = 10097, - ["Smelt Truesilver"] = 10098, - ["Smelt Dark Iron"] = 14891, - ["Smelt Thorium"] = 16153, - ["Smelt Elementium"] = 22967, - ["Smelt Fel Iron"] = 29356, - ["Smelt Adamantite"] = 29358, - ["Smelt Eternium"] = 29359, - ["Smelt Felsteel"] = 29360, - ["Smelt Khorium"] = 29361, - ["Smelt Hardened Adamantite"] = 29686, - ["Earth Shatter"] = 35750, - ["Fire Sunder"] = 35751, - ["Smelt Hardened Khorium"] = 46353, - ["Smelt Cobalt"] = 49252, - ["Smelt Saronite"] = 49258, - ["Smelt Titansteel"] = 55208, - ["Smelt Titanium"] = 55211, - ["Enchanted Thorium"] = 70524, - - - --- Cooking - ["Cooking"] = 2550, - ["Charred Wolf Meat"] = 2538, - ["Spiced Wolf Meat"] = 2539, - ["Roasted Boar Meat"] = 2540, - ["Coyote Steak"] = 2541, - ["Goretusk Liver Pie"] = 2542, - ["Westfall Stew"] = 2543, - ["Crab Cake"] = 2544, - ["Cooked Crab Claw"] = 2545, - ["Dry Pork Ribs"] = 2546, - ["Redridge Goulash"] = 2547, - ["Succulent Pork Ribs"] = 2548, - ["Seasoned Wolf Kabob"] = 2549, - ["Beer Basted Boar Ribs"] = 2795, - ["Crocolisk Steak"] = 3370, - ["Blood Sausage"] = 3371, - ["Murloc Fin Soup"] = 3372, - ["Crocolisk Gumbo"] = 3373, - ["Curiously Tasty Omelet"] = 3376, - ["Gooey Spider Cake"] = 3377, - ["Big Bear Steak"] = 3397, - ["Hot Lion Chops"] = 3398, - ["Tasty Lion Steak"] = 3399, - ["Soothing Turtle Bisque"] = 3400, - ["Barbecued Buzzard Wing"] = 4094, - ["Kaldorei Spider Kabob"] = 6412, - ["Scorpid Surprise"] = 6413, - ["Roasted Kodo Meat"] = 6414, - ["Fillet of Frenzy"] = 6415, - ["Strider Stew"] = 6416, - ["Dig Rat Stew"] = 6417, - ["Crispy Lizard Tail"] = 6418, - ["Lean Venison"] = 6419, - ["Boiled Clams"] = 6499, - ["Goblin Deviled Clams"] = 6500, - ["Clam Chowder"] = 6501, - ["Giant Clam Scorcho"] = 7213, - ["Brilliant Smallfish"] = 7751, - ["Slitherskin Mackerel"] = 7752, - ["Longjaw Mud Snapper"] = 7753, - ["Loch Frenzy Delight"] = 7754, - ["Bristle Whisker Catfish"] = 7755, - ["Rainbow Fin Albacore"] = 7827, - ["Rockscale Cod"] = 7828, - ["Savory Deviate Delight"] = 8238, - ["Herb Baked Egg"] = 8604, - ["Smoked Bear Meat"] = 8607, - ["Thistle Tea"] = 9513, - ["Goldthorn Tea"] = 13028, - ["Lean Wolf Steak"] = 15853, - ["Roast Raptor"] = 15855, - ["Hot Wolf Ribs"] = 15856, - ["Jungle Stew"] = 15861, - ["Carrion Surprise"] = 15863, - ["Mystery Stew"] = 15865, - ["Dragonbreath Chili"] = 15906, - ["Heavy Kodo Stew"] = 15910, - ["Spiced Chili Crab"] = 15915, - ["Monster Omelet"] = 15933, - ["Crispy Bat Wing"] = 15935, - ["Spotted Yellowtail"] = 18238, - ["Cooked Glossy Mightfish"] = 18239, - ["Grilled Squid"] = 18240, - ["Filet of Redgill"] = 18241, - ["Hot Smoked Bass"] = 18242, - ["Nightfin Soup"] = 18243, - ["Poached Sunscale Salmon"] = 18244, - ["Lobster Stew"] = 18245, - ["Mightfish Steak"] = 18246, - ["Baked Salmon"] = 18247, - ["Undermine Clam Chowder"] = 20626, - ["Mithril Head Trout"] = 20916, - ["Gingerbread Cookie"] = 21143, - ["Egg Nog"] = 21144, - ["Spider Sausage"] = 21175, - ["Tender Wolf Steak"] = 22480, - ["Runn Tum Tuber Surprise"] = 22761, - ["Heavy Crocolisk Stew"] = 24418, - ["Smoked Desert Dumplings"] = 24801, - ["Dirge's Kickin' Chimaerok Chops"] = 25659, - ["Smoked Sagefish"] = 25704, - ["Sagefish Delight"] = 25954, - ["Crunchy Spider Surprise"] = 28267, - ["Lynx Steak"] = 33276, - ["Roasted Moongraze Tenderloin"] = 33277, - ["Bat Bites"] = 33278, - ["Buzzard Bites"] = 33279, - ["Ravager Dog"] = 33284, - ["Sporeling Snack"] = 33285, - ["Blackened Basilisk"] = 33286, - ["Roasted Clefthoof"] = 33287, - ["Warp Burger"] = 33288, - ["Talbuk Steak"] = 33289, - ["Blackened Trout"] = 33290, - ["Feltail Delight"] = 33291, - ["Blackened Sporefish"] = 33292, - ["Grilled Mudfish"] = 33293, - ["Poached Bluefish"] = 33294, - ["Golden Fish Sticks"] = 33295, - ["Spicy Crawdad"] = 33296, - ["Clam Bar"] = 36210, - ["Spice Bread"] = 37836, - ["Mok'Nathal Shortribs"] = 38867, - ["Crunchy Serpent"] = 38868, - ["Stewed Trout"] = 42296, - ["Fisherman's Feast"] = 42302, - ["Hot Buttered Trout"] = 42305, - ["Skullfish Soup"] = 43707, - ["Stormchops"] = 43758, - ["Broiled Bloodfin"] = 43761, - ["Spicy Hot Talbuk"] = 43765, - ["Kibler's Bits"] = 43772, - ["Delicious Chocolate Cake"] = 43779, - ["Hot Apple Cider"] = 45022, - ["Mammoth Meal"] = 45549, - ["Shoveltusk Steak"] = 45550, - ["Worm Delight"] = 45551, - ["Roasted Worg"] = 45552, - ["Rhino Dogs"] = 45553, - ["Great Feast"] = 45554, - ["Mega Mammoth Meal"] = 45555, - ["Tender Shoveltusk Steak"] = 45556, - ["Spiced Worm Burger"] = 45557, - ["Very Burnt Worg"] = 45558, - ["Mighty Rhino Dogs"] = 45559, - ["Smoked Rockfin"] = 45560, - ["Grilled Bonescale"] = 45561, - ["Sauteed Goby"] = 45562, - ["Grilled Sculpin"] = 45563, - ["Smoked Salmon"] = 45564, - ["Poached Nettlefish"] = 45565, - ["Pickled Fangtooth"] = 45566, - ["Poached Northern Sculpin"] = 45567, - ["Firecracker Salmon"] = 45568, - ["Baked Manta Ray"] = 45569, - ["Imperial Manta Steak"] = 45570, - ["Spicy Blue Nettlefish"] = 45571, - ["Captain Rumsey's Lager"] = 45695, - ["Charred Bear Kabobs"] = 46684, - ["Juicy Bear Burger"] = 46688, - ["Kungaloosh"] = 53056, - ["Northern Stew"] = 57421, - ["Fish Feast"] = 57423, - ["Spicy Fried Herring"] = 57433, - ["Rhinolicious Wormsteak"] = 57434, - ["Critter Bites"] = 57435, - ["Hearty Rhino"] = 57436, - ["Snapper Extreme"] = 57437, - ["Blackened Worg Steak"] = 57438, - ["Cuttlesteak"] = 57439, - ["Spiced Mammoth Treats"] = 57440, - ["Blackened Dragonfin"] = 57441, - ["Dragonfin Filet"] = 57442, - ["Tracker Snacks"] = 57443, - ["Dalaran Clam Chowder"] = 58065, - ["Tasty Cupcake"] = 58512, - ["Last Week's Mammoth"] = 58521, - ["Bad Clams"] = 58523, - ["Haunted Herring"] = 58525, - ["Gigantic Feast"] = 58527, - ["Small Feast"] = 58528, - ["Worg Tartare"] = 62350, - ["Clamlette Magnifique"] = 64054, - ["Black Jelly"] = 64358, - ["Bread of the Dead"] = 65454, - ["Candied Sweet Potato"] = 66034, - ["Cranberry Chutney"] = 66035, - ["Pumpkin Pie"] = 66036, - ["Slow-Roasted Turkey"] = 66037, - ["Spice Bread Stuffing"] = 66038, - - - --- First Aid - ["First Aid"] = 3273, - ["Linen Bandage"] = 3275, - ["Heavy Linen Bandage"] = 3276, - ["Wool Bandage"] = 3277, - ["Heavy Wool Bandage"] = 3278, - ["Anti-Venom"] = 7394, - ["Silk Bandage"] = 7928, - ["Heavy Silk Bandage"] = 7929, - ["Strong Anti-Venom"] = 7935, - ["Mageweave Bandage"] = 10840, - ["Heavy Mageweave Bandage"] = 10841, - ["Runecloth Bandage"] = 18629, - ["Heavy Runecloth Bandage"] = 18630, - ["Powerful Anti-Venom"] = 23787, - ["Netherweave Bandage"] = 27032, - ["Heavy Netherweave Bandage"] = 27033, - ["Frostweave Bandage"] = 45545, - ["Heavy Frostweave Bandage"] = 45546 -} diff --git a/TradeSkillMaster_Crafting/Modules/Sync.lua b/TradeSkillMaster_Crafting/Modules/Sync.lua index c366c9c..a4a80a9 100644 --- a/TradeSkillMaster_Crafting/Modules/Sync.lua +++ b/TradeSkillMaster_Crafting/Modules/Sync.lua @@ -27,7 +27,7 @@ function Sync:BroadcastTradeSkillData(timerUp) return end local player = UnitName("player") - local playerTradeSkills = TSM.db.factionrealm.tradeSkills[player] + local playerTradeSkills = TSM.db.realm.tradeSkills[player] if not playerTradeSkills then return end local packet = {tradeSkills={}, accountKey=TSMAPI.Sync:GetAccountKey()} @@ -42,7 +42,7 @@ end function Sync:ProcessTradeSkills(data) for key, link in pairs(data.tradeSkills) do local player, tradeSkill = ("~"):split(key) - if not (TSM.db.factionrealm.tradeSkills[player] and TSM.db.factionrealm.tradeSkills[player][tradeSkill] and TSM.db.factionrealm.tradeSkills[player][tradeSkill].link == link) then + if not (TSM.db.realm.tradeSkills[player] and TSM.db.realm.tradeSkills[player][tradeSkill] and TSM.db.realm.tradeSkills[player][tradeSkill].link == link) then tinsert(syncQueue, {link=link, accountKey=data.accountKey, player=player}) end end diff --git a/TradeSkillMaster_Crafting/Modules/Util.lua b/TradeSkillMaster_Crafting/Modules/Util.lua index 340cbd4..9fe2fb3 100644 --- a/TradeSkillMaster_Crafting/Modules/Util.lua +++ b/TradeSkillMaster_Crafting/Modules/Util.lua @@ -102,38 +102,14 @@ function Util:ScanCurrentProfession() if itemID and spellID then local lNum, hNum = GetTradeSkillNumMade(index) local numMade = floor(((lNum or 1) + (hNum or 1))/2) - local hasCD = select(2, GetTradeSkillCooldown(index)) and true or nil + local hasCD = GetSpellBaseCooldown(spellID) > 0 and 1 or nil local mats = {} if currentTradeSkill == TSM.enchantingName and strfind(itemLink, "enchant:") then - -- mats[VELLUM_ID] = 1 - -- local name = TSMAPI:GetSafeItemInfo(VELLUM_ID) or (GetLocale() == "enUS" and "Enchanting Vellum") or nil - -- TSM.db.factionrealm.mats[VELLUM_ID] = TSM.db.factionrealm.mats[VELLUM_ID] or {} - -- TSM.db.factionrealm.mats[VELLUM_ID].name = TSM.db.factionrealm.mats[VELLUM_ID].name or name local VellumString = "item:"..TSM.VellumInfo[spellID]..":0:0:0:0:0:0" - - - - -- -- Get Cheapest vellum, lower vellum types can be replaced by III - -- local velName - -- if TSM.VellumInfo[spellID] then - -- velName = GetItemInfo(TSM.VellumInfo[spellID]) - -- end - -- if (velName ~= nil) and (not strfind(velName, "III")) then - -- local VellumReplacePrice = TSM.Cost:GetMatCost(VellumString) - - -- if strfind(GetSpellInfo(spellID), "Weapon") or strfind(GetSpellInfo(spellID), "Staff")then - -- if VellumReplacePrice > TSM.Cost:GetMatCost("item:43146:0:0:0:0:0:0") then VellumString = "item:43146:0:0:0:0:0:0" end - -- else - -- if VellumReplacePrice > TSM.Cost:GetMatCost("item:43145:0:0:0:0:0:0") then VellumString = "item:4314:0:0:0:0:0:0" end - -- end - -- end - - - mats[VellumString] = 1 local name = TSMAPI:GetSafeItemInfo(VellumString) or nil - TSM.db.factionrealm.mats[VellumString] = TSM.db.factionrealm.mats[VellumString] or {} - TSM.db.factionrealm.mats[VellumString].name = TSM.db.factionrealm.mats[VellumString].name or name + TSM.db.realm.mats[VellumString] = TSM.db.realm.mats[VellumString] or {} + TSM.db.realm.mats[VellumString].name = TSM.db.realm.mats[VellumString].name or name numMade = 1 end @@ -154,15 +130,15 @@ function Util:ScanCurrentProfession() end mats[matID] = quantity - TSM.db.factionrealm.mats[matID] = TSM.db.factionrealm.mats[matID] or {} - TSM.db.factionrealm.mats[matID].name = TSM.db.factionrealm.mats[matID].name or name + TSM.db.realm.mats[matID] = TSM.db.realm.mats[matID] or {} + TSM.db.realm.mats[matID].name = TSM.db.realm.mats[matID].name or name end if isValid then - local players = TSM.db.factionrealm.crafts[spellID] and TSM.db.factionrealm.crafts[spellID].players or {} + local players = TSM.db.realm.crafts[spellID] and TSM.db.realm.crafts[spellID].players or {} players[playerName] = true - local queued = TSM.db.factionrealm.crafts[spellID] and TSM.db.factionrealm.crafts[spellID].queued or 0 - local intermediateQueued = TSM.db.factionrealm.crafts[spellID] and TSM.db.factionrealm.crafts[spellID].intermediateQueued or nil + local queued = TSM.db.realm.crafts[spellID] and TSM.db.realm.crafts[spellID].queued or 0 + local intermediateQueued = TSM.db.realm.crafts[spellID] and TSM.db.realm.crafts[spellID].intermediateQueued or nil newCrafts[spellID] = {name=craftName, itemID=itemID, mats=mats, hasCD=hasCD, numResult=numMade, queued=queued, intermediateQueued=intermediateQueued, players=players, profession=currentTradeSkill} if not usedItems[itemID] then usedItems[itemID] = true @@ -182,7 +158,7 @@ function Util:ScanCurrentProfession() end -- search for and remove any spells that we can't craft anymore - for spellID, data in pairs(TSM.db.factionrealm.crafts) do + for spellID, data in pairs(TSM.db.realm.crafts) do if data.profession == currentTradeSkill then local hasCrafters = false for player in pairs(data.players) do @@ -193,14 +169,14 @@ function Util:ScanCurrentProfession() end if not hasCrafters then - TSM.db.factionrealm.crafts[spellID] = nil + TSM.db.realm.crafts[spellID] = nil end end end -- save the new craft info for spellID, data in pairs(newCrafts) do - TSM.db.factionrealm.crafts[spellID] = data + TSM.db.realm.crafts[spellID] = data end TSM.CraftingGUI:PromptPresetGroups(currentTradeSkill, presetGroupInfo) --Bugged, asks after every login. Not saving prompt result between sessions. Either saving or loading bug (works fine on /reload though). end @@ -251,40 +227,15 @@ function Util.ScanSyncedProfessionThread(self) if itemID and spellID then local lNum, hNum = GetTradeSkillNumMade(index) local numMade = floor(((lNum or 1) + (hNum or 1))/2) - local hasCD = select(2, GetTradeSkillCooldown(index)) and true or nil + local hasCD = GetSpellBaseCooldown(spellID) > 0 and 1 or nil local mats = {} if currentTradeSkill == TSM.enchantingName and strfind(itemLink, "enchant:") then - -- mats[VELLUM_ID] = 1 - -- local name = TSMAPI:GetSafeItemInfo(VELLUM_ID) or (GetLocale() == "enUS" and "Enchanting Vellum") or nil - -- TSM.db.factionrealm.mats[VELLUM_ID] = TSM.db.factionrealm.mats[VELLUM_ID] or {} - -- TSM.db.factionrealm.mats[VELLUM_ID].name = TSM.db.factionrealm.mats[VELLUM_ID].name or name - local VellumString = "item:"..TSM.VellumInfo[spellID]..":0:0:0:0:0:0" - - - - -- -- Get Cheapest vellum, lower vellum types can be replaced by III - -- local velName - -- if TSM.VellumInfo[spellID] then - -- velName = GetItemInfo(TSM.VellumInfo[spellID]) - -- end - -- if (velName ~= nil) and (not strfind(velName, "III")) then - -- local VellumReplacePrice = TSM.Cost:GetMatCost(VellumString) - -- if strfind(GetSpellInfo(spellID), "Weapon") or strfind(GetSpellInfo(spellID), "Staff")then - -- if VellumReplacePrice > TSM.Cost:GetMatCost("item:43146:0:0:0:0:0:0") then VellumString = "item:43146:0:0:0:0:0:0" end - -- else - -- if VellumReplacePrice > TSM.Cost:GetMatCost("item:43145:0:0:0:0:0:0") then VellumString = "item:4314:0:0:0:0:0:0" end - -- end - -- end - - - - mats[VellumString] = 1 local name = TSMAPI:GetSafeItemInfo(VellumString) or nil - TSM.db.factionrealm.mats[VellumString] = TSM.db.factionrealm.mats[VellumString] or {} - TSM.db.factionrealm.mats[VellumString].name = TSM.db.factionrealm.mats[VellumString].name or name + TSM.db.realm.mats[VellumString] = TSM.db.realm.mats[VellumString] or {} + TSM.db.realm.mats[VellumString].name = TSM.db.realm.mats[VellumString].name or name numMade = 1 end @@ -305,15 +256,15 @@ function Util.ScanSyncedProfessionThread(self) end mats[matID] = quantity - TSM.db.factionrealm.mats[matID] = TSM.db.factionrealm.mats[matID] or {} - TSM.db.factionrealm.mats[matID].name = TSM.db.factionrealm.mats[matID].name or name + TSM.db.realm.mats[matID] = TSM.db.realm.mats[matID] or {} + TSM.db.realm.mats[matID].name = TSM.db.realm.mats[matID].name or name end if isValid then - local players = TSM.db.factionrealm.crafts[spellID] and TSM.db.factionrealm.crafts[spellID].players or {} + local players = TSM.db.realm.crafts[spellID] and TSM.db.realm.crafts[spellID].players or {} players[playerName] = true - local queued = TSM.db.factionrealm.crafts[spellID] and TSM.db.factionrealm.crafts[spellID].queued or 0 - local intermediateQueued = TSM.db.factionrealm.crafts[spellID] and TSM.db.factionrealm.crafts[spellID].intermediateQueued or nil + local queued = TSM.db.realm.crafts[spellID] and TSM.db.realm.crafts[spellID].queued or 0 + local intermediateQueued = TSM.db.realm.crafts[spellID] and TSM.db.realm.crafts[spellID].intermediateQueued or nil newCrafts[spellID] = {name=craftName, itemID=itemID, mats=mats, hasCD=hasCD, numResult=numMade, queued=queued, intermediateQueued=intermediateQueued, players=players, profession=currentTradeSkill} end end @@ -323,7 +274,7 @@ function Util.ScanSyncedProfessionThread(self) end -- search for and remove any spells that we can't craft anymore - for spellID, data in pairs(TSM.db.factionrealm.crafts) do + for spellID, data in pairs(TSM.db.realm.crafts) do if data.profession == currentTradeSkill then local hasCrafters = false for player in pairs(data.players) do @@ -334,23 +285,23 @@ function Util.ScanSyncedProfessionThread(self) end if not hasCrafters then - TSM.db.factionrealm.crafts[spellID] = nil + TSM.db.realm.crafts[spellID] = nil end end end -- save the new craft info for spellID, data in pairs(newCrafts) do - TSM.db.factionrealm.crafts[spellID] = data + TSM.db.realm.crafts[spellID] = data end local playerName = select(2, IsTradeSkillLinked()) local skillName, level, maxLevel = GetTradeSkillLine() - TSM.db.factionrealm.tradeSkills[playerName] = TSM.db.factionrealm.tradeSkills[playerName] or {} - TSM.db.factionrealm.tradeSkills[playerName][skillName] = TSM.db.factionrealm.tradeSkills[playerName][skillName] or {} - TSM.db.factionrealm.tradeSkills[playerName][skillName].link = TSM.isSyncing.link - TSM.db.factionrealm.tradeSkills[playerName][skillName].accountKey = TSM.isSyncing.accountKey - TSM.db.factionrealm.tradeSkills[playerName][skillName].level = level - TSM.db.factionrealm.tradeSkills[playerName][skillName].maxLevel = maxLevel + TSM.db.realm.tradeSkills[playerName] = TSM.db.realm.tradeSkills[playerName] or {} + TSM.db.realm.tradeSkills[playerName][skillName] = TSM.db.realm.tradeSkills[playerName][skillName] or {} + TSM.db.realm.tradeSkills[playerName][skillName].link = TSM.isSyncing.link + TSM.db.realm.tradeSkills[playerName][skillName].accountKey = TSM.isSyncing.accountKey + TSM.db.realm.tradeSkills[playerName][skillName].level = level + TSM.db.realm.tradeSkills[playerName][skillName].maxLevel = maxLevel end function Util:GetSpellID(index) diff --git a/TradeSkillMaster_Crafting/Modules/VellumInfo.lua b/TradeSkillMaster_Crafting/Modules/VellumInfo.lua index 19dc6a2..681bc92 100644 --- a/TradeSkillMaster_Crafting/Modules/VellumInfo.lua +++ b/TradeSkillMaster_Crafting/Modules/VellumInfo.lua @@ -2,262 +2,311 @@ local TSM = select(2, ...) TSM.VellumInfo = { -[7418] = 38682, -[7420] = 38682, -[7426] = 38682, -[7428] = 38682, -[7443] = 38682, -[7454] = 38682, -[7457] = 38682, -[7745] = 39349, -[7748] = 38682, -[7766] = 38682, -[7771] = 38682, -[7776] = 38682, -[7779] = 38682, -[7782] = 38682, -[7786] = 39349, -[7788] = 39349, -[7793] = 39349, -[7857] = 38682, -[7859] = 38682, -[7861] = 38682, -[7863] = 38682, -[7867] = 38682, -[13378] = 38682, -[13380] = 39349, -[13419] = 38682, -[13421] = 38682, -[13464] = 38682, -[13485] = 38682, -[13501] = 38682, -[13503] = 39349, -[13522] = 38682, -[13529] = 39349, -[13536] = 38682, -[13538] = 38682, -[13607] = 38682, -[13612] = 38682, -[13617] = 38682, -[13620] = 38682, -[13622] = 38682, -[13626] = 38682, -[13631] = 38682, -[13635] = 38682, -[13637] = 38682, -[13640] = 38682, -[13642] = 38682, -[13644] = 38682, -[13646] = 38682, -[13648] = 38682, -[13653] = 39349, -[13655] = 39349, -[13657] = 38682, -[13659] = 38682, -[13661] = 38682, -[13663] = 38682, -[13687] = 38682, -[13689] = 38682, -[13693] = 39349, -[13695] = 39349, -[13698] = 38682, -[13700] = 38682, -[13746] = 38682, -[13794] = 38682, -[13815] = 38682, -[13817] = 38682, -[13822] = 38682, -[13836] = 38682, -[13841] = 38682, -[13846] = 38682, -[13858] = 38682, -[13868] = 38682, -[13882] = 38682, -[13887] = 38682, -[13890] = 38682, -[13898] = 39349, -[13905] = 38682, -[13915] = 39349, -[13917] = 38682, -[13931] = 38682, -[13933] = 38682, -[13935] = 38682, -[13937] = 39349, -[13939] = 38682, -[13941] = 38682, -[13943] = 39349, -[13945] = 38682, -[13947] = 38682, -[13948] = 38682, -[20008] = 38682, -[20009] = 38682, -[20010] = 38682, -[20011] = 38682, -[20012] = 38682, -[20013] = 38682, -[20014] = 38682, -[20015] = 38682, -[20016] = 38682, -[20017] = 38682, -[20020] = 38682, -[20023] = 38682, -[20024] = 38682, -[20025] = 38682, -[20026] = 38682, -[20028] = 38682, -[20029] = 39349, -[20030] = 39349, -[20031] = 39349, -[20032] = 39349, -[20033] = 39349, -[20034] = 39349, -[20035] = 39349, -[20036] = 39349, -[21931] = 39349, -[22749] = 39349, -[22750] = 39349, -[23799] = 39349, -[23800] = 39349, -[23801] = 38682, -[23802] = 38682, -[23803] = 39349, -[23804] = 39349, -[25072] = 38682, -[25073] = 38682, -[25074] = 38682, -[25078] = 38682, -[25079] = 38682, -[25080] = 38682, -[25081] = 38682, -[25082] = 38682, -[25083] = 38682, -[25084] = 38682, -[25086] = 37602, -[27837] = 39349, -[27899] = 37602, -[27905] = 37602, -[27906] = 37602, -[27911] = 37602, -[27913] = 37602, -[27914] = 37602, -[27917] = 37602, -[27944] = 37602, -[27945] = 37602, -[27946] = 37602, -[27947] = 37602, -[27948] = 37602, -[27950] = 37602, -[27951] = 37602, -[27954] = 37602, -[27957] = 37602, -[27958] = 43145, -[27960] = 37602, -[27961] = 37602, -[27962] = 37602, -[27967] = 39350, -[27968] = 39350, -[27971] = 39350, -[27972] = 39350, -[27975] = 39350, -[27977] = 39350, -[27981] = 39350, -[27982] = 39350, -[27984] = 39350, -[28003] = 39350, -[28004] = 39350, -[33990] = 37602, -[33991] = 37602, -[33992] = 37602, -[33993] = 37602, -[33994] = 37602, -[33995] = 37602, -[33996] = 37602, -[33997] = 37602, -[33999] = 37602, -[34001] = 37602, -[34002] = 37602, -[34003] = 37602, -[34004] = 37602, -[34005] = 37602, -[34006] = 37602, -[34007] = 37602, -[34008] = 37602, -[34009] = 37602, -[34010] = 39350, -[42620] = 39350, -[42974] = 43146, -[44383] = 37602, -[44483] = 43145, -[44484] = 43145, -[44488] = 43145, -[44489] = 43145, -[44492] = 43145, -[44494] = 43145, -[44500] = 43145, -[44506] = 43145, -[44508] = 43145, -[44509] = 43145, -[44510] = 43146, -[44513] = 43145, -[44524] = 43146, -[44528] = 43145, -[44529] = 43145, -[44555] = 43145, -[44556] = 43145, -[44575] = 43145, -[44576] = 43146, -[44582] = 43145, -[44584] = 43145, -[44588] = 43145, -[44589] = 43145, -[44590] = 43145, -[44591] = 43145, -[44592] = 43145, -[44593] = 43145, -[44595] = 43146, -[44596] = 43145, -[44598] = 43145, -[44612] = 43145, -[44616] = 43145, -[44621] = 43146, -[44623] = 43145, -[44625] = 43145, -[44629] = 43146, -[44630] = 43146, -[44631] = 43145, -[44633] = 43146, -[44635] = 43145, -[46578] = 43146, -[46594] = 37602, -[47051] = 37602, -[47672] = 43145, -[47766] = 43145, -[47898] = 43145, -[47899] = 43145, -[47900] = 43145, -[47901] = 43145, -[59619] = 43146, -[59621] = 43146, -[59625] = 43146, -[60606] = 43145, -[60609] = 43145, -[60616] = 43145, -[60621] = 43146, -[60623] = 43145, -[60653] = 43145, -[60663] = 43145, -[60668] = 43145, -[60691] = 43146, -[60692] = 43145, -[60707] = 43146, -[60714] = 43146, -[60763] = 43145, -[60767] = 43145, -[62256] = 43145, -[62257] = 43146, -[62948] = 43146, -[62959] = 43146, -[63746] = 38682, -[64441] = 39349, -[64579] = 39349, -[71692] = 38682} \ No newline at end of file +[7418] = 52510, +[7420] = 52510, +[7426] = 52510, +[7428] = 52510, +[7443] = 52510, +[7454] = 52510, +[7457] = 52510, +[7745] = 52511, +[7748] = 52510, +[7766] = 52510, +[7771] = 52510, +[7776] = 52510, +[7779] = 52510, +[7782] = 52510, +[7786] = 52511, +[7788] = 52511, +[7793] = 52511, +[7857] = 52510, +[7859] = 52510, +[7861] = 52510, +[7863] = 52510, +[7867] = 52510, +[13378] = 52510, +[13380] = 52511, +[13419] = 52510, +[13421] = 52510, +[13464] = 52510, +[13485] = 52510, +[13501] = 52510, +[13503] = 52511, +[13522] = 52510, +[13529] = 52511, +[13536] = 52510, +[13538] = 52510, +[13607] = 52510, +[13612] = 52510, +[13617] = 52510, +[13620] = 52510, +[13622] = 52510, +[13626] = 52510, +[13631] = 52510, +[13635] = 52510, +[13637] = 52510, +[13640] = 52510, +[13642] = 52510, +[13644] = 52510, +[13646] = 52510, +[13648] = 52510, +[13653] = 52511, +[13655] = 52511, +[13657] = 52510, +[13659] = 52510, +[13661] = 52510, +[13663] = 52510, +[13687] = 52510, +[13689] = 52510, +[13693] = 52511, +[13695] = 52511, +[13698] = 52510, +[13700] = 52510, +[13746] = 52510, +[13794] = 52510, +[13815] = 52510, +[13817] = 52510, +[13822] = 52510, +[13836] = 52510, +[13841] = 52510, +[13846] = 52510, +[13858] = 52510, +[13868] = 52510, +[13882] = 52510, +[13887] = 52510, +[13890] = 52510, +[13898] = 52511, +[13905] = 52510, +[13915] = 52511, +[13917] = 52510, +[13931] = 52510, +[13933] = 52510, +[13935] = 52510, +[13937] = 52511, +[13939] = 52510, +[13941] = 52510, +[13943] = 52511, +[13945] = 52510, +[13947] = 52510, +[13948] = 52510, +[20008] = 52510, +[20009] = 52510, +[20010] = 52510, +[20011] = 52510, +[20012] = 52510, +[20013] = 52510, +[20014] = 52510, +[20015] = 52510, +[20016] = 52510, +[20017] = 52510, +[20020] = 52510, +[20023] = 52510, +[20024] = 52510, +[20025] = 52510, +[20026] = 52510, +[20028] = 52510, +[20029] = 52511, +[20030] = 52511, +[20031] = 52511, +[20032] = 52511, +[20033] = 52511, +[20034] = 52511, +[20035] = 52511, +[20036] = 52511, +[21931] = 52511, +[22749] = 52511, +[22750] = 52511, +[23799] = 52511, +[23800] = 52511, +[23801] = 52510, +[23802] = 52510, +[23803] = 52511, +[23804] = 52511, +[25072] = 52510, +[25073] = 52510, +[25074] = 52510, +[25078] = 52510, +[25079] = 52510, +[25080] = 52510, +[25081] = 52510, +[25082] = 52510, +[25083] = 52510, +[25084] = 52510, +[25086] = 52510, +[27837] = 52511, +[27899] = 52510, +[27905] = 52510, +[27906] = 52510, +[27911] = 52510, +[27913] = 52510, +[27914] = 52510, +[27917] = 52510, +[27944] = 52510, +[27945] = 52510, +[27946] = 52510, +[27947] = 52510, +[27948] = 52510, +[27950] = 52510, +[27951] = 52510, +[27954] = 52510, +[27957] = 52510, +[27958] = 52510, +[27960] = 52510, +[27961] = 52510, +[27962] = 52510, +[27967] = 52511, +[27968] = 52511, +[27971] = 52511, +[27972] = 52511, +[27975] = 52511, +[27977] = 52511, +[27981] = 52511, +[27982] = 52511, +[27984] = 52511, +[28003] = 52511, +[28004] = 52511, +[33990] = 52510, +[33991] = 52510, +[33992] = 52510, +[33993] = 52510, +[33994] = 52510, +[33995] = 52510, +[33996] = 52510, +[33997] = 52510, +[33999] = 52510, +[34001] = 52510, +[34002] = 52510, +[34003] = 52510, +[34004] = 52510, +[34005] = 52510, +[34006] = 52510, +[34007] = 52510, +[34008] = 52510, +[34009] = 52510, +[34010] = 52511, +[42620] = 52511, +[42974] = 52511, +[44383] = 52510, +[44483] = 52510, +[44484] = 52510, +[44488] = 52510, +[44489] = 52510, +[44492] = 52510, +[44494] = 52510, +[44500] = 52510, +[44506] = 52510, +[44508] = 52510, +[44509] = 52510, +[44510] = 52511, +[44513] = 52510, +[44524] = 52511, +[44528] = 52510, +[44529] = 52510, +[44555] = 52510, +[44556] = 52510, +[44575] = 52510, +[44576] = 52511, +[44582] = 52510, +[44584] = 52510, +[44588] = 52510, +[44589] = 52510, +[44590] = 52510, +[44591] = 52510, +[44592] = 52510, +[44593] = 52510, +[44595] = 52511, +[44596] = 52510, +[44598] = 52510, +[44612] = 52510, +[44616] = 52510, +[44621] = 52511, +[44623] = 52510, +[44625] = 52510, +[44629] = 52511, +[44630] = 52511, +[44631] = 52510, +[44633] = 52511, +[44635] = 52510, +[46578] = 52511, +[46594] = 52510, +[47051] = 52510, +[47672] = 52510, +[47766] = 52510, +[47898] = 52510, +[47899] = 52510, +[47900] = 52510, +[47901] = 52510, +[59619] = 52511, +[59621] = 52511, +[59625] = 52511, +[60606] = 52510, +[60609] = 52510, +[60616] = 52510, +[60621] = 52511, +[60623] = 52510, +[60653] = 52510, +[60663] = 52510, +[60668] = 52510, +[60691] = 52511, +[60692] = 52510, +[60707] = 52511, +[60714] = 52511, +[60763] = 52510, +[60767] = 52510, +[62256] = 52510, +[62257] = 52511, +[62948] = 52511, +[62959] = 52511, +[63746] = 52510, +[64441] = 52511, +[64579] = 52511, +[71692] = 52510, +[968676] = 52511, +[968677] = 52511, +[968678] = 52511, +[968679] = 52511, +[968680] = 52511, +[968681] = 52511, +[968682] = 52511, +[968683] = 52511, +[968684] = 52511, +[968685] = 52511, +[968686] = 52511, +[968687] = 52511, +[968688] = 52511, +[968689] = 52511, +[968690] = 52511, +[968691] = 52511, +[968692] = 52511, +[968693] = 52511, +[968694] = 52511, +[968695] = 52511, +[968696] = 52511, +[968697] = 52511, +[968698] = 52511, +[968699] = 52511, +[968700] = 52511, +[968701] = 52511, +[968702] = 52511, +[968770] = 52511, +[968771] = 52511, +[1968677] = 52511, +[1968678] = 52511, +[1968680] = 52511, +[1968681] = 52511, +[1968683] = 52511, +[1968684] = 52511, +[1968686] = 52511, +[1968687] = 52511, +[1968689] = 52511, +[1968690] = 52511, +[1968692] = 52511, +[1968693] = 52511, +[1968695] = 52511, +[1968696] = 52511, +[1968698] = 52511, +[1968699] = 52511, +[1968701] = 52511, +[1968702] = 52511, +[1968770] = 52511, +[1968771] = 52511} diff --git a/TradeSkillMaster_Crafting/TradeSkillMaster_Crafting.lua b/TradeSkillMaster_Crafting/TradeSkillMaster_Crafting.lua index 3051775..59db69a 100644 --- a/TradeSkillMaster_Crafting/TradeSkillMaster_Crafting.lua +++ b/TradeSkillMaster_Crafting/TradeSkillMaster_Crafting.lua @@ -30,7 +30,7 @@ local savedDBDefaults = { showingDefaultFrame = nil, matsInTooltip = true, }, - factionrealm = { + realm = { tradeSkills = {}, crafts = {}, mats = {}, @@ -56,78 +56,30 @@ function TSM:OnEnable() TSM:RegisterModule() -- fix vellum issue - for spellid, data in pairs(TSM.db.factionrealm.crafts) do + for spellid, data in pairs(TSM.db.realm.crafts) do for itemString in pairs(data.mats) do - -- if itemString == "item:38682" then - -- TSM.db.factionrealm.crafts[spellid].mats["item:38682:0:0:0:0:0:0"] = 1 - if itemString == "item:43146" then - TSM.db.factionrealm.crafts[spellid].mats["item:43146:0:0:0:0:0:0"] = 1 - TSM.db.factionrealm.crafts[spellid].mats[itemString] = nil - elseif itemString == "item:43145" then - TSM.db.factionrealm.crafts[spellid].mats["item:43145:0:0:0:0:0:0"] = 1 - TSM.db.factionrealm.crafts[spellid].mats[itemString] = nil - elseif itemString == "item:39350" then - TSM.db.factionrealm.crafts[spellid].mats["item:39350:0:0:0:0:0:0"] = 1 - TSM.db.factionrealm.crafts[spellid].mats[itemString] = nil - elseif itemString == "item:37602" then - TSM.db.factionrealm.crafts[spellid].mats["item:37602:0:0:0:0:0:0"] = 1 - TSM.db.factionrealm.crafts[spellid].mats[itemString] = nil - elseif itemString == "item:39349" then - TSM.db.factionrealm.crafts[spellid].mats["item:39349:0:0:0:0:0:0"] = 1 - TSM.db.factionrealm.crafts[spellid].mats[itemString] = nil - elseif itemString == "item:38682" then - TSM.db.factionrealm.crafts[spellid].mats["item:38682:0:0:0:0:0:0"] = 1 - TSM.db.factionrealm.crafts[spellid].mats[itemString] = nil + if itemString == "item:52510" then + TSM.db.realm.crafts[spellid].mats["item:52510:0:0:0:0:0:0"] = 1 + TSM.db.realm.crafts[spellid].mats[itemString] = nil + elseif itemString == "item:52511" then + TSM.db.realm.crafts[spellid].mats["item:52511:0:0:0:0:0:0"] = 1 + TSM.db.realm.crafts[spellid].mats[itemString] = nil end end end - -- if TSM.db.factionrealm.mats["item:38682"] then - -- local name = TSMAPI:GetSafeItemInfo("item:38682:0:0:0:0:0:0") or (GetLocale() == "enUS" and "Enchanting Vellum") or nil - -- TSM.db.factionrealm.mats["item:38682:0:0:0:0:0:0"] = {} - -- TSM.db.factionrealm.mats["item:38682:0:0:0:0:0:0"].name = name - -- TSM.db.factionrealm.mats["item:38682"] = nil - -- end - if TSM.db.factionrealm.mats["item:43146"] then - local name = TSMAPI:GetSafeItemInfo("item:43146:0:0:0:0:0:0") or nil - TSM.db.factionrealm.mats["item:43146:0:0:0:0:0:0"] = {} - TSM.db.factionrealm.mats["item:43146:0:0:0:0:0:0"].name = name - TSM.db.factionrealm.mats["item:43146"] = nil + -- if currently casting a spell, keep track of the id + TSM.currentspell = nil + if TSM.db.realm.mats["item:52510"] then + local name = TSMAPI:GetSafeItemInfo("item:52510:0:0:0:0:0:0") or nil + TSM.db.realm.mats["item:52510:0:0:0:0:0:0"] = {} + TSM.db.realm.mats["item:52510:0:0:0:0:0:0"].name = name + TSM.db.realm.mats["item:52510"] = nil end - if TSM.db.factionrealm.mats["item:43145"] then - local name = TSMAPI:GetSafeItemInfo("item:43145:0:0:0:0:0:0") or nil - TSM.db.factionrealm.mats["item:43145:0:0:0:0:0:0"] = {} - TSM.db.factionrealm.mats["item:43145:0:0:0:0:0:0"].name = name - TSM.db.factionrealm.mats["item:43145"] = nil - end - if TSM.db.factionrealm.mats["item:39350"] then - local name = TSMAPI:GetSafeItemInfo("item:39350:0:0:0:0:0:0") or nil - TSM.db.factionrealm.mats["item:39350:0:0:0:0:0:0"] = {} - TSM.db.factionrealm.mats["item:39350:0:0:0:0:0:0"].name = name - TSM.db.factionrealm.mats["item:39350"] = nil - end - if TSM.db.factionrealm.mats["item:39350"] then - local name = TSMAPI:GetSafeItemInfo("item:39350:0:0:0:0:0:0") or nil - TSM.db.factionrealm.mats["item:39350:0:0:0:0:0:0"] = {} - TSM.db.factionrealm.mats["item:39350:0:0:0:0:0:0"].name = name - TSM.db.factionrealm.mats["item:39350"] = nil - end - if TSM.db.factionrealm.mats["item:37602"] then - local name = TSMAPI:GetSafeItemInfo("item:37602:0:0:0:0:0:0") or nil - TSM.db.factionrealm.mats["item:37602:0:0:0:0:0:0"] = {} - TSM.db.factionrealm.mats["item:37602:0:0:0:0:0:0"].name = name - TSM.db.factionrealm.mats["item:37602"] = nil - end - if TSM.db.factionrealm.mats["item:39349"] then - local name = TSMAPI:GetSafeItemInfo("item:39349:0:0:0:0:0:0") or nil - TSM.db.factionrealm.mats["item:39349:0:0:0:0:0:0"] = {} - TSM.db.factionrealm.mats["item:39349:0:0:0:0:0:0"].name = name - TSM.db.factionrealm.mats["item:39349"] = nil - end - if TSM.db.factionrealm.mats["item:38682"] then - local name = TSMAPI:GetSafeItemInfo("item:38682:0:0:0:0:0:0") or nil - TSM.db.factionrealm.mats["item:38682:0:0:0:0:0:0"] = {} - TSM.db.factionrealm.mats["item:38682:0:0:0:0:0:0"].name = name - TSM.db.factionrealm.mats["item:38682"] = nil + if TSM.db.realm.mats["item:52511"] then + local name = TSMAPI:GetSafeItemInfo("item:52511:0:0:0:0:0:0") or nil + TSM.db.realm.mats["item:52511:0:0:0:0:0:0"] = {} + TSM.db.realm.mats["item:52511:0:0:0:0:0:0"].name = name + TSM.db.realm.mats["item:52511"] = nil end local func, err = TSMAPI:ParseCustomPrice(TSM.db.global.defaultCraftPriceMethod, "crafting") @@ -176,7 +128,7 @@ TSM.operationDefaults = { minProfit = 1000000, craftPriceMethod = nil, ignorePlayer = {}, - ignoreFactionrealm = {}, + ignorerealm = {}, relationships = {}, } @@ -233,38 +185,11 @@ function TSM:GetTooltip(itemString) tinsert(text, { left = " " .. L["Crafting Cost"], right = format("%s", costText) }) end - if TSM.db.global.matsInTooltip and TSM.db.factionrealm.crafts[spellID] then - for matItemString, matQuantity in pairs(TSM.db.factionrealm.crafts[spellID].mats) do + if TSM.db.global.matsInTooltip and TSM.db.realm.crafts[spellID] then + for matItemString, matQuantity in pairs(TSM.db.realm.crafts[spellID].mats) do local name, _, quality = TSMAPI:GetSafeItemInfo(matItemString) if name then - local mat = TSM.db.factionrealm.mats[matItemString] - - - - -- Get Cheapest vellum, lower vellum types can be replaced by III - local velName - if strfind(name, "Vellum") then - velName = name - end - if (velName ~= nil) and (not strfind(velName, "III")) then - local VellumReplacePrice = TSM.Cost:GetMatCost(matItemString) - - if strfind(velName, "Weapon Vellum") then - if VellumReplacePrice > TSM.Cost:GetMatCost("item:43146:0:0:0:0:0:0") then - matItemString = "item:43146:0:0:0:0:0:0" - name = TSMAPI:GetSafeItemInfo(matItemString) - end - else - if VellumReplacePrice > TSM.Cost:GetMatCost("item:43145:0:0:0:0:0:0") then - matItemString = "item:43145:0:0:0:0:0:0" - name = TSMAPI:GetSafeItemInfo(matItemString) - end - end - end - - - - + local mat = TSM.db.realm.mats[matItemString] if mat then local cost = TSM:GetCustomPrice(mat.customValue or TSM.db.global.defaultMatCostMethod, matItemString) if cost then @@ -292,7 +217,7 @@ function TSM:GetTooltip(itemString) end end if TSM.db.global.materialTooltip then - local mat = TSM.db.factionrealm.mats[itemString] + local mat = TSM.db.realm.mats[itemString] if mat then local cost = TSM:GetCustomPrice(mat.customValue or TSM.db.global.defaultMatCostMethod, itemString) if cost then @@ -322,9 +247,9 @@ function TSM:GetCraftingCost(link) TSM:UpdateCraftReverseLookup() local _, cost = TSM.Cost:GetLowestCraftPrices(itemString) if cost then - TSM.db.factionrealm.craftingCostCache[itemString] = cost + TSM.db.realm.craftingCostCache[itemString] = cost end - return TSM.db.factionrealm.craftingCostCache[itemString] + return TSM.db.realm.craftingCostCache[itemString] end function TSM:GetCraftingMatCost(link) @@ -342,7 +267,7 @@ function TSM:UpdateCraftReverseLookup() reverseLookupUpdate = time() TSM.craftReverseLookup = {} - for spellID, data in pairs(TSM.db.factionrealm.crafts) do + for spellID, data in pairs(TSM.db.realm.crafts) do TSM.craftReverseLookup[data.itemID] = TSM.craftReverseLookup[data.itemID] or {} tinsert(TSM.craftReverseLookup[data.itemID], spellID) end @@ -355,7 +280,7 @@ end function TSM:getCDCrafts() local crafts = {} - for spellID, data in pairs(TSM.db.factionrealm.crafts) do + for spellID, data in pairs(TSM.db.realm.crafts) do if data.hasCD then crafts[spellID] = data.name end @@ -392,7 +317,7 @@ function TSM:RestockHelp(link) -- check that this item is craftable TSM:UpdateCraftReverseLookup() local spellID = TSM.craftReverseLookup[itemString] and TSM.craftReverseLookup[itemString][1] - if not spellID or not TSM.db.factionrealm.crafts[spellID] then + if not spellID or not TSM.db.realm.crafts[spellID] then return print("You don't know how to craft this item.") end diff --git a/TradeSkillMaster_ItemTracker/Modules/config.lua b/TradeSkillMaster_ItemTracker/Modules/config.lua index 64b3c9b..4785268 100644 --- a/TradeSkillMaster_ItemTracker/Modules/config.lua +++ b/TradeSkillMaster_ItemTracker/Modules/config.lua @@ -130,7 +130,7 @@ function Config:LoadInventoryViewer(container) filters.characters[name] = true end for name in pairs(TSM.guilds) do - if not TSM.db.factionrealm.ignoreGuilds[name] then + if not TSM.db.realm.ignoreGuilds[name] then guildList[name] = name filters.guilds[name] = true end @@ -315,12 +315,12 @@ function Config:LoadOptions(container) { type = "Dropdown", label = L["Guilds (Guild Banks) to Ignore:"], - value = TSM.db.factionrealm.ignoreGuilds, + value = TSM.db.realm.ignoreGuilds, list = guildList, relativeWidth = 0.49, multiselect = true, callback = function(_, _, key, value) - TSM.db.factionrealm.ignoreGuilds[key] = value + TSM.db.realm.ignoreGuilds[key] = value end, tooltip = L["Select guilds to ingore in ItemTracker. Inventory will still be tracked but not displayed or taken into consideration by Itemtracker."], }, diff --git a/TradeSkillMaster_ItemTracker/TradeSkillMaster_ItemTracker.lua b/TradeSkillMaster_ItemTracker/TradeSkillMaster_ItemTracker.lua index f503ece..feb64cb 100644 --- a/TradeSkillMaster_ItemTracker/TradeSkillMaster_ItemTracker.lua +++ b/TradeSkillMaster_ItemTracker/TradeSkillMaster_ItemTracker.lua @@ -19,7 +19,7 @@ local savedDBDefaults = { }, -- data that is stored per realm/faction combination - factionrealm = { + realm = { characters = {}, guilds = {}, ignoreGuilds = {}, @@ -58,13 +58,13 @@ function TSM:OnInitialize() -- load the saved variables table into TSM.db TSM.db = LibStub:GetLibrary("AceDB-3.0"):New("TradeSkillMaster_ItemTrackerDB", savedDBDefaults, true) - TSM.characters = TSM.db.factionrealm.characters - TSM.guilds = TSM.db.factionrealm.guilds + TSM.characters = TSM.db.realm.characters + TSM.guilds = TSM.db.realm.guilds -- handle connected realms for characters local connectedRealms = TSMAPI.GetConnectedRealms and TSMAPI:GetConnectedRealms() or {} for _, realm in ipairs(connectedRealms) do - local connectedRealmData = TSM.db.sv.factionrealm[TSM.db.keys.faction.." - "..realm] + local connectedRealmData = TSM.db.sv.realm[TSM.db.keys.faction.." - "..realm] if connectedRealmData and connectedRealmData.characters then for player, data in pairs(connectedRealmData.characters) do TSM.characters[player.."-"..realm] = data @@ -193,7 +193,7 @@ function TSM:GetTooltip(itemString) end for name, data in pairs(TSM.guilds) do - if not TSM.db.factionrealm.ignoreGuilds[name] then + if not TSM.db.realm.ignoreGuilds[name] then local gbank = data.items[itemString] or 0 grandTotal = grandTotal + gbank @@ -214,25 +214,25 @@ function TSM:GetTooltip(itemString) end function TSM:OnTSMDBShutdown() - TSM.db.factionrealm.characters = {} + TSM.db.realm.characters = {} local faction = TSM.db.keys.faction for name, playerData in pairs(TSM.characters) do local player, realm = ("-"):split(name) if realm and realm ~= "" then - local factionrealm = faction.." - "..realm - for key, data in pairs(TSM.db.sv.factionrealm) do - if key == factionrealm then + local realm = faction.." - "..realm + for key, data in pairs(TSM.db.sv.realm) do + if key == realm then data[player] = playerData break end end else - TSM.db.factionrealm.characters[player] = playerData + TSM.db.realm.characters[player] = playerData end end -- not yet handling guilds for connected realms - TSM.db.factionrealm.guilds = TSM.guilds + TSM.db.realm.guilds = TSM.guilds end function TSM:UpdatePlayerLookup() @@ -281,7 +281,7 @@ end function TSM:GetGuildBank(guild) guild = guild or TSM.CURRENT_GUILD - if not guild or not TSM.guilds[guild] or TSM.db.factionrealm.ignoreGuilds[guild] then return end + if not guild or not TSM.guilds[guild] or TSM.db.realm.ignoreGuilds[guild] then return end return TSM.guilds[guild].items end @@ -313,7 +313,7 @@ end function TSM:GetGuildTotal(itemString) local guildTotal = 0 for guild, data in pairs(TSM.guilds) do - if not TSM.db.factionrealm.ignoreGuilds[guild] then + if not TSM.db.realm.ignoreGuilds[guild] then guildTotal = guildTotal + (data.items[itemString] or 0) end end @@ -333,7 +333,7 @@ function TSM:GetPlayerGuildTotal(itemString, player) player = TSM.playerLookup[player] or player if not player or not TSM.characters[player] then return end local guild = TSM.characters[player].guild - if not guild or not TSM.guilds[guild] or TSM.db.factionrealm.ignoreGuilds[guild] then return end + if not guild or not TSM.guilds[guild] or TSM.db.realm.ignoreGuilds[guild] then return end return TSM.guilds[guild].items[itemString] end diff --git a/TradeSkillMaster_Mailing/Modules/Other.lua b/TradeSkillMaster_Mailing/Modules/Other.lua index 52e01a4..d2515a1 100644 --- a/TradeSkillMaster_Mailing/Modules/Other.lua +++ b/TradeSkillMaster_Mailing/Modules/Other.lua @@ -57,16 +57,16 @@ function private:CreateDisenchantBox(frame) targetBox:SetPoint("TOPLEFT", targetBoxLabel, "TOPRIGHT", 5, 0) targetBox:SetPoint("TOPRIGHT", -5, -30) targetBox:SetHeight(20) - targetBox:SetText(TSM.db.factionrealm.deMailTarget) + targetBox:SetText(TSM.db.realm.deMailTarget) targetBox:SetScript("OnEnterPressed", function(self) - TSM.db.factionrealm.deMailTarget = self:GetText():trim() + TSM.db.realm.deMailTarget = self:GetText():trim() self:ClearFocus() frame.btn:Update() end) targetBox.tooltip = L["Enter name of the character disenchantable greens should be sent to."].."\n\n"..TSM.SPELLING_WARNING local function OnClick() - local target = TSM.db.factionrealm.deMailTarget + local target = TSM.db.realm.deMailTarget if target == "" then return end local items = {} local hasItems @@ -94,9 +94,9 @@ function private:CreateDisenchantBox(frame) btn:SetScript("OnClick", OnClick) btn.tooltip = L["Click this button to send all disenchantable greens in your bags to the specified character."] btn.Update = function(self) - if TSM.db.factionrealm.deMailTarget ~= "" then + if TSM.db.realm.deMailTarget ~= "" then self:Enable() - self:SetText(format(L["Send Disenchantable Greens to %s"], TSM.db.factionrealm.deMailTarget)) + self:SetText(format(L["Send Disenchantable Greens to %s"], TSM.db.realm.deMailTarget)) else self:Disable() self:SetText(L["No Target Player"]) diff --git a/TradeSkillMaster_Mailing/TradeSkillMaster_Mailing.lua b/TradeSkillMaster_Mailing/TradeSkillMaster_Mailing.lua index 87317fd..8a1eb91 100644 --- a/TradeSkillMaster_Mailing/TradeSkillMaster_Mailing.lua +++ b/TradeSkillMaster_Mailing/TradeSkillMaster_Mailing.lua @@ -31,7 +31,7 @@ local savedDBDefaults = { showReloadBtn = true, keepMailSpace = 0, }, - factionrealm = { + realm = { deMailTarget = "", mailTargets = {}, mailItems = {}, @@ -75,7 +75,7 @@ TSM.operationDefaults = { restockGBank = nil, keepQty = 0, ignorePlayer = {}, - ignoreFactionrealm = {}, + ignorerealm = {}, relationships = {}, } diff --git a/TradeSkillMaster_Shopping/TradeSkillMaster_Shopping.lua b/TradeSkillMaster_Shopping/TradeSkillMaster_Shopping.lua index ebc5c3b..39571ad 100644 --- a/TradeSkillMaster_Shopping/TradeSkillMaster_Shopping.lua +++ b/TradeSkillMaster_Shopping/TradeSkillMaster_Shopping.lua @@ -71,7 +71,7 @@ TSM.operationDefaults = { evenStacks = nil, showAboveMaxPrice = nil, ignorePlayer = {}, - ignoreFactionrealm = {}, + ignorerealm = {}, relationships = {}, } diff --git a/TradeSkillMaster_Warehousing/Modules/data.lua b/TradeSkillMaster_Warehousing/Modules/data.lua index 33c2db9..d8079af 100644 --- a/TradeSkillMaster_Warehousing/Modules/data.lua +++ b/TradeSkillMaster_Warehousing/Modules/data.lua @@ -39,7 +39,7 @@ function data:getEmptyRestoreGroup(container, isGuildBank) grp[i] = q * -1 -- convert to negative number for TSMAPI:MoveItems restore[i] = q -- for the restore bagstate end - TSM.db.factionrealm.BagState = restore + TSM.db.realm.BagState = restore return grp end diff --git a/TradeSkillMaster_Warehousing/Modules/move.lua b/TradeSkillMaster_Warehousing/Modules/move.lua index 5e03535..d72b332 100644 --- a/TradeSkillMaster_Warehousing/Modules/move.lua +++ b/TradeSkillMaster_Warehousing/Modules/move.lua @@ -46,7 +46,7 @@ function move:EmptyRestore(dest, restore) end if restore then - moveItems = TSM.db.factionrealm.BagState + moveItems = TSM.db.realm.BagState else local srcTable = move:getContainerTable("bags") moveItems = TSM.data:getEmptyRestoreGroup(srcTable, isGuildBank) @@ -58,7 +58,7 @@ function move:EmptyRestore(dest, restore) TSM:Print(L["Preparing to Move"]) TSMAPI:MoveItems(moveItems, TSM.PrintMsg, true) if restore then - TSM.db.factionrealm.BagState = {} + TSM.db.realm.BagState = {} end end end diff --git a/TradeSkillMaster_Warehousing/TradeSkillMaster_Warehousing.lua b/TradeSkillMaster_Warehousing/TradeSkillMaster_Warehousing.lua index a666d7b..02ba19b 100644 --- a/TradeSkillMaster_Warehousing/TradeSkillMaster_Warehousing.lua +++ b/TradeSkillMaster_Warehousing/TradeSkillMaster_Warehousing.lua @@ -26,7 +26,7 @@ local savedDBDefaults = { }, -- data that is stored per realm/faction combination - factionrealm = { + realm = { BagState = {}, }, @@ -51,9 +51,9 @@ function TSM:OnEnable() -- register the module with TSM TSM:RegisterModule() - if TSM.db.factionrealm.WarehousingGroups then -- remove old 1.x data on first load of 2.0 - for key in pairs(TSM.db.factionrealm) do - TSM.db.factionrealm[key] = nil + if TSM.db.realm.WarehousingGroups then -- remove old 1.x data on first load of 2.0 + for key in pairs(TSM.db.realm) do + TSM.db.realm[key] = nil end end @@ -107,7 +107,7 @@ TSM.operationDefaults = { stackSize = 5, stackSizeEnabled = nil, ignorePlayer = {}, - ignoreFactionrealm = {}, + ignorerealm = {}, relationships = {}, } @@ -178,8 +178,8 @@ function TSM:IsOperationIgnored(operationName) TSMAPI:UpdateOperation("Warehousing", operationName) local operation = TSM.operations[operationName] if not operation then return end - local playerKey = UnitName("player").." - "..TSM.db.keys.factionrealm - return operation.ignorePlayer[playerKey] or operation.ignoreFactionrealm[TSM.db.keys.factionrealm] + local playerKey = UnitName("player").." - "..TSM.db.keys.realm + return operation.ignorePlayer[playerKey] or operation.ignorerealm[TSM.db.keys.realm] end function TSM:toggleBankUI()