From 4bd9ccc53a049972f96d845e13325d9e27dbeee4 Mon Sep 17 00:00:00 2001 From: Salikh Gurgenidze Date: Sun, 4 Jan 2026 04:13:48 +0400 Subject: [PATCH] feat: BoE category --- Core/Utils.lua | 19 +++++++++++++++++-- Guda.toc | 2 +- UI/FrameHelpers.lua | 2 +- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/Core/Utils.lua b/Core/Utils.lua index f0b2bcb..ac7fe13 100644 --- a/Core/Utils.lua +++ b/Core/Utils.lua @@ -574,16 +574,31 @@ function Utils:GetItemPreferredContainer(itemLink) end -- Check if an item is "Binds when equipped" by scanning its tooltip -function Utils:IsBindOnEquip(bagID, slotID) +-- For bank items, use itemLink since SetBagItem may not work for bank slots +function Utils:IsBindOnEquip(bagID, slotID, itemLink) if not bagID or not slotID then return false end local tooltip = GetScanTooltip() if not tooltip then return false end tooltip:ClearLines() + + -- Try SetBagItem first (works for regular bags and bank when open) tooltip:SetBagItem(bagID, slotID) - + local numLines = tooltip:NumLines() + + -- If no lines and we have itemLink, try SetHyperlink with itemString as fallback + if (not numLines or numLines == 0) and itemLink then + -- Extract itemString from link (format: item:12345:0:0:0...) + local _, _, itemString = string.find(itemLink, "(item:%d+:%d+:%d+:%d+)") + if itemString then + tooltip:ClearLines() + tooltip:SetHyperlink(itemString) + numLines = tooltip:NumLines() + end + end + if not numLines or numLines == 0 then return false end -- Check tooltip lines for "Binds when equipped" diff --git a/Guda.toc b/Guda.toc index a7c193b..46acea5 100644 --- a/Guda.toc +++ b/Guda.toc @@ -2,7 +2,7 @@ ## Title: Guda ## Notes: All-in-one bag and bank addon for World of Warcraft 1.12.1 (Turtle WoW) ## Author: Vati -## Version: 1.5.4 +## Version: 1.5.5 ## SavedVariables: Guda_DB ## SavedVariablesPerCharacter: Guda_CharDB diff --git a/UI/FrameHelpers.lua b/UI/FrameHelpers.lua index 51e15fb..230fbc2 100644 --- a/UI/FrameHelpers.lua +++ b/UI/FrameHelpers.lua @@ -82,7 +82,7 @@ function Guda_CategorizeItem(itemData, bagID, slotID, categories, specialItems, -- Priority 6: BoE Equipment (Armor/Weapons that bind when equipped) if (itemData.class == "Weapon" or itemData.class == "Armor") and not isOtherChar then - local isBoE = addon.Modules.Utils:IsBindOnEquip(bagID, slotID) + local isBoE = addon.Modules.Utils:IsBindOnEquip(bagID, slotID, itemData.link) if isBoE then table.insert(categories["BoE"], {bagID = bagID, slotID = slotID, itemData = itemData}) else