From ca8785aa28bb81318bf94c6958c2a0af17ca903c Mon Sep 17 00:00:00 2001 From: Anch Date: Fri, 3 Nov 2023 19:22:57 +1300 Subject: [PATCH] Disenchanting frame now shows what mats you should get from disenchanting an item --- ProfessionMenu/ProfessionMenu.lua | 2 +- ProfessionMenu/ProfessionMenu.toc | 2 +- ProfessionMenu/ProfessionMenuInventory.lua | 104 +++++++++++++++++++-- 3 files changed, 96 insertions(+), 12 deletions(-) diff --git a/ProfessionMenu/ProfessionMenu.lua b/ProfessionMenu/ProfessionMenu.lua index 30fad0e..47eb3ee 100644 --- a/ProfessionMenu/ProfessionMenu.lua +++ b/ProfessionMenu/ProfessionMenu.lua @@ -194,7 +194,7 @@ end local items = { {1777028, "Summon Thermal Anvil"}, -- thermal anvil {1904514, "Summon Sanguine Workbench"}, -- sanguine workbench vanity - {1904515}, + {1904515}, -- sanguine workbench soulbound } -- deletes item from players inventory if value 2 in the items table is set diff --git a/ProfessionMenu/ProfessionMenu.toc b/ProfessionMenu/ProfessionMenu.toc index 023fe85..da8c0e9 100644 --- a/ProfessionMenu/ProfessionMenu.toc +++ b/ProfessionMenu/ProfessionMenu.toc @@ -7,6 +7,6 @@ ## X-Category: Profession ## X-OptionsFrame: ProfessionMenuOptionsFrame ## DefaultState: enabled -## Version: 1.3 +## Version: 1.4 embeds.xml diff --git a/ProfessionMenu/ProfessionMenuInventory.lua b/ProfessionMenu/ProfessionMenuInventory.lua index 82c33f4..8f834cc 100644 --- a/ProfessionMenu/ProfessionMenuInventory.lua +++ b/ProfessionMenu/ProfessionMenuInventory.lua @@ -1,7 +1,7 @@ local PM = LibStub("AceAddon-3.0"):GetAddon("ProfessionMenu") local dewdrop = AceLibrary("Dewdrop-2.0") local mainframe = CreateFrame("FRAME", "ProfessionMenuExtractFrame", UIParent,"UIPanelDialogTemplate") - mainframe:SetSize(460,508) + mainframe:SetSize(640,508) mainframe:SetPoint("CENTER",0,0) mainframe:EnableMouse(true) mainframe:SetMovable(true) @@ -37,6 +37,79 @@ PM.FilterList = { } } +local enchantingMats = { + ["Commen"] = { + -- Classic Mats + {itemLevel = {5,15}, dust = {10940, " 1-3"}, Essence = {10938, " 1-2"}}, + {itemLevel = {16,20},dust = {10940, " 2-5"}, Essence = {10939, " 1-2"}}, + {itemLevel = {21,25},dust = {10940, " 2-5"}, Essence = {10998, " 1-2"}}, + {itemLevel = {26,30},dust = {11083, " 1-3"}, Essence = {11082, " 1-2"}}, + {itemLevel = {31,35},dust = {11083, " 2-5"}, Essence = {11134, " 1-2"}}, + {itemLevel = {36,40},dust = {11137, " 1-3"}, Essence = {11135, " 1-2"}}, + {itemLevel = {41,45},dust = {11137, " 2-5"}, Essence = {11174, " 1-2"}}, + {itemLevel = {46,50},dust = {11176, " 1-3"}, Essence = {11175, " 1-2"}}, + {itemLevel = {51,55},dust = {11176, " 2-5"}, Essence = {16202, " 1-2"}}, + {itemLevel = {56,60},dust = {16204, " 1-3"}, Essence = {16203, " 1-2"}}, + {itemLevel = {61,65},dust = {16204, " 2-5"}, Essence = {16203, " 1-3"}}, + -- TBC Mats + {itemLevel = {80,99},dust = {22445, " 1-3"}, Essence = {22447, " 1-3"}}, + {itemLevel = {100,120},dust = {22445, " 2-5"}, Essence = {22446, " 1-2"}}, + -- Wrath Mats + {itemLevel = {130,151},dust = {34054, " 2-3"}, Essence = {34056, " 1-2"}}, + {itemLevel = {152,200},dust = {34054, " 4-7"}, Essence = {34055, " 1-2"}}, + }, + ["Rare"] = { + -- Classic Mats + {itemLevel = {16,25}, Shard = 10978}, + {itemLevel = {26,30}, Shard = 11084}, + {itemLevel = {31,35}, Shard = 11138}, + {itemLevel = {36,40}, Shard = 11139}, + {itemLevel = {41,45}, Shard = 11177}, + {itemLevel = {46,50}, Shard = 11178}, + {itemLevel = {51,55}, Shard = 14343}, + {itemLevel = {56,65}, Shard = 14344}, + -- TBC Mats + {itemLevel = {80,99}, Shard = 22448}, + {itemLevel = {100,120}, Shard = 22449}, + -- Wrath Mats + {itemLevel = {130,151}, Shard = 34053}, + {itemLevel = {152,200}, Shard = 34052}, + }, + ["Epic"] = { + {itemLevel = {56,80}, Crystal = 20725}, + -- TBC Mats + {itemLevel = {95,164}, Crystal = 22450}, + -- Wrath Mats + {itemLevel = {165,264}, Crystal = 34057}, + } +} + +local function GetPosibleMats(quality, itemLevel) + if quality == 2 then + for _, mat in ipairs (enchantingMats.Commen) do + if itemLevel >= mat.itemLevel[1] and itemLevel <= mat.itemLevel[2] then + local itemLink = select(2,GetItemInfo(mat.dust[1]))..mat.dust[2] + local itemLink2 = select(2,GetItemInfo(mat.Essence[1]))..mat.Essence[2] + return itemLink, itemLink2 + end + end + elseif quality == 3 then + for _, mat in ipairs (enchantingMats.Rare) do + if itemLevel >= mat.itemLevel[1] and itemLevel <= mat.itemLevel[2] then + local itemLink = select(2,GetItemInfo(mat.Shard)) + return itemLink + end + end + elseif quality == 4 then + for _, mat in ipairs (enchantingMats.Epic) do + if itemLevel >= mat.itemLevel[1] and itemLevel <= mat.itemLevel[2] then + local itemLink = select(2,GetItemInfo(mat.Crystal)) + return itemLink + end + end + end +end + local InventoryTypes = { ["Weapon"] = true, ["Armor"] = true @@ -77,9 +150,9 @@ function PM:SearchBags() local quality,_,_,link = select(4,GetContainerItemInfo(bagID,slotID)) local itemID = GetContainerItemID(bagID,slotID) if link and not PM.db.ItemBlacklist[itemID] then - local itemType = select(6,GetItemInfo(itemID)) + local itemLevel, _, itemType = select(4,GetItemInfo(itemID)) if not filterCheck(quality, bagID, slotID) and InventoryTypes[itemType] then - tinsert(inventoryItems,{bagID,slotID,link,quality}) + tinsert(inventoryItems,{bagID,slotID,link,quality,itemLevel}) end end end @@ -173,8 +246,8 @@ local MAX_ROWS = 25 -- How many rows can be shown at once? local scrollFrame = CreateFrame("Frame", "ProfessionMenu_DE_ScrollFrame", ProfessionMenuExtractFrame) scrollFrame:EnableMouse(true) - scrollFrame:SetSize(420, ROW_HEIGHT * MAX_ROWS + 16) - scrollFrame:SetPoint("TOPLEFT",20,-42) + scrollFrame:SetSize(mainframe:GetWidth()-40, ROW_HEIGHT * MAX_ROWS + 16) + scrollFrame:SetPoint("TOP",0,-42) scrollFrame:SetBackdrop({ bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16, edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16, @@ -190,7 +263,14 @@ function ProfessionMenu_InventroyScrollFrameUpdate() scrollFrame.rows[i]:SetHighlightTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight", "ADD") if value <= maxValue then local row = scrollFrame.rows[i] + local text1, text2 = GetPosibleMats(inventoryItems[value][4], inventoryItems[value][5]) row.Text:SetText(inventoryItems[value][3]) + row.Text1:SetText(text1) + if text2 then + row.Text2:SetText(text2) + else + row.Text2:SetText("") + end row.link = inventoryItems[value][3] row.bag = inventoryItems[value][1] row.slot = inventoryItems[value][2] @@ -221,12 +301,17 @@ local rows = setmetatable({}, { __index = function(t, i) row:SetSize(405, ROW_HEIGHT) row:SetNormalFontObject(GameFontHighlightLeft) row.Text = row:CreateFontString("$parentRow"..i.."Text","OVERLAY","GameFontNormal") - row.Text:SetSize(260, ROW_HEIGHT) + row.Text:SetSize(230, ROW_HEIGHT) row.Text:SetPoint("LEFT",row) row.Text:SetJustifyH("LEFT") - row:SetScript("OnMouseDown", function() - PM:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED") - end) + row.Text1 = row:CreateFontString("$parentRow"..i.."Text1","OVERLAY","GameFontNormal") + row.Text1:SetSize(180, ROW_HEIGHT) + row.Text1:SetPoint("LEFT",row,230,0) + row.Text1:SetJustifyH("LEFT") + row.Text2 = row:CreateFontString("$parentRow"..i.."Text2","OVERLAY","GameFontNormal") + row.Text2:SetSize(180, ROW_HEIGHT) + row.Text2:SetPoint("LEFT",row,390,0) + row.Text2:SetJustifyH("LEFT") row:SetScript("OnEnter", function(self) ItemTemplate_OnEnter(self) end) @@ -236,7 +321,6 @@ local rows = setmetatable({}, { __index = function(t, i) else row:SetPoint("TOPLEFT", scrollFrame.rows[i-1], "BOTTOMLEFT") end - rawset(t, i, row) return row end })