mirror of
https://github.com/parnic/breakables.git
synced 2025-06-17 01:41:51 -05:00
Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
575f2843aa | |||
2e4b7e413c | |||
db9fb7627b |
@ -81,6 +81,7 @@ local OreCombineItems = {
|
||||
-- MoP
|
||||
97512, -- ghost iron nugget
|
||||
97546, -- kyparite fragment
|
||||
90407, -- sparkling shard
|
||||
-- WoD
|
||||
109991, -- true iron nugget
|
||||
109992, -- blackrock fragment
|
||||
@ -408,6 +409,19 @@ function Breakables:GetEnchantingLevel()
|
||||
end
|
||||
end
|
||||
|
||||
local function GetIgnoreListOptions()
|
||||
local ret = {}
|
||||
|
||||
if Breakables.settings.ignoreList ~= nil then
|
||||
for k,v in pairs(Breakables.settings.ignoreList) do
|
||||
local name, _, _, _, _, _, _, _, _, texture = GetItemInfo(k)
|
||||
ret[k] = ("|T%s:0|t %s"):format(texture, name)
|
||||
end
|
||||
end
|
||||
|
||||
return ret
|
||||
end
|
||||
|
||||
function Breakables:GetOptions()
|
||||
local opts = {
|
||||
name = L["Breakables"],
|
||||
@ -541,6 +555,50 @@ function Breakables:GetOptions()
|
||||
end,
|
||||
order = 7,
|
||||
},
|
||||
ignoreList = {
|
||||
type = 'multiselect',
|
||||
name = L["Ignore list"],
|
||||
desc = L["Items that have been right-clicked to exclude from the breakable list. Un-check the box to remove the item from the ignore list."],
|
||||
get = function(info, key)
|
||||
return true
|
||||
end,
|
||||
set = function(info, key)
|
||||
Breakables.settings.ignoreList[key] = nil
|
||||
Breakables:FindBreakables()
|
||||
end,
|
||||
confirm = function()
|
||||
return L["Are you sure you want to remove this item from the ignore list?"]
|
||||
end,
|
||||
values = GetIgnoreListOptions,
|
||||
order = 30,
|
||||
},
|
||||
clearIgnoreList = {
|
||||
type = 'execute',
|
||||
func = function()
|
||||
for k,v in pairs(Breakables.settings.ignoreList) do
|
||||
Breakables.settings.ignoreList[k] = nil
|
||||
end
|
||||
Breakables:FindBreakables()
|
||||
end,
|
||||
name = L["Clear ignore list"],
|
||||
confirm = function()
|
||||
return L["Are you sure you want to clear the ignore list?"]
|
||||
end,
|
||||
disabled = function()
|
||||
if Breakables.settings.ignoreList == nil then
|
||||
return true
|
||||
end
|
||||
|
||||
for k,v in pairs(Breakables.settings.ignoreList) do
|
||||
if v ~= nil then
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
end,
|
||||
order = 31,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@ -727,6 +785,18 @@ function Breakables:OnMouseUp(frame)
|
||||
self.settings.buttonFrameTop[frameNum] = frame:GetTop()
|
||||
end
|
||||
|
||||
local function IgnoreFunc(self, button)
|
||||
if button == "RightButton" and not InCombatLockdown() then
|
||||
if Breakables.settings.ignoreList == nil then
|
||||
Breakables.settings.ignoreList = {}
|
||||
end
|
||||
|
||||
Breakables.settings.ignoreList[self.itemId] = true
|
||||
Breakables:FindBreakables()
|
||||
LibStub("AceConfigRegistry-3.0"):NotifyChange("Breakables")
|
||||
end
|
||||
end
|
||||
|
||||
function Breakables:FindBreakables(bag)
|
||||
if self.settings.hide then
|
||||
return
|
||||
@ -774,7 +844,7 @@ function Breakables:FindBreakables(bag)
|
||||
end
|
||||
|
||||
if (foundBreakables[i][IDX_BREAKABLETYPE] == self.buttonFrame[j].type or (foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_COMBINE and foundBreakables[i][IDX_COUNT] >= 10)) and numBreakableStacks[j] < self.settings.maxBreakablesToShow then
|
||||
local isDisenchantable = self:BreakableIsDisenchantable(foundBreakables[i][IDX_TYPE], foundBreakables[i][IDX_LEVEL], foundBreakables[i][IDX_RARITY])
|
||||
local isDisenchantable = self:BreakableIsDisenchantable(foundBreakables[i][IDX_TYPE], foundBreakables[i][IDX_LEVEL], foundBreakables[i][IDX_RARITY], foundBreakables[i][IDX_LINK])
|
||||
local isLockedItem = foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_PICK
|
||||
|
||||
if (CanDisenchant and isDisenchantable) or (CanPickLock and isLockedItem) or (foundBreakables[i][IDX_COUNT] >= 5) then
|
||||
@ -796,7 +866,7 @@ function Breakables:FindBreakables(bag)
|
||||
btn:EnableMouse(true)
|
||||
btn:RegisterForClicks("AnyUp")
|
||||
|
||||
btn:SetAttribute("type", "spell")
|
||||
btn:SetAttribute("type1", "spell")
|
||||
|
||||
if not btn.text then
|
||||
btn.text = btn:CreateFontString()
|
||||
@ -804,11 +874,15 @@ function Breakables:FindBreakables(bag)
|
||||
end
|
||||
btn.text:SetFont(NumberFont_Outline_Med:GetFont(), self.settings.fontSize, "OUTLINE")
|
||||
|
||||
btn:HookScript("OnClick", IgnoreFunc)
|
||||
|
||||
if lbfGroup then
|
||||
lbfGroup:AddButton(btn)
|
||||
end
|
||||
end
|
||||
|
||||
btn.itemId = self:GetItemIdFromLink(foundBreakables[i][IDX_LINK])
|
||||
|
||||
local attachFrom = "LEFT"
|
||||
local attachTo = "RIGHT"
|
||||
if self.settings.growDirection then
|
||||
@ -847,13 +921,13 @@ function Breakables:FindBreakables(bag)
|
||||
--or (foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_DE and DisenchantId)
|
||||
--or PickLockId)
|
||||
if BreakableAbilityName then
|
||||
btn:SetAttribute("type", "spell")
|
||||
btn:SetAttribute("type1", "spell")
|
||||
btn:SetAttribute("spell", BreakableAbilityName)
|
||||
|
||||
btn:SetAttribute("target-bag", foundBreakables[i][IDX_BAG])
|
||||
btn:SetAttribute("target-slot", foundBreakables[i][IDX_SLOT])
|
||||
else
|
||||
btn:SetAttribute("type", "item")
|
||||
btn:SetAttribute("type1", "item")
|
||||
btn:SetAttribute("item", "item:" .. self:GetItemIdFromLink(foundBreakables[i][IDX_LINK]))
|
||||
end
|
||||
|
||||
@ -932,6 +1006,8 @@ function Breakables:OnEnterBreakableButton(this)
|
||||
|
||||
GameTooltip:AddLine(" ")
|
||||
GameTooltip:AddLine(L["You can click on this button to break this item without having to click on the profession button first."], 1, 1, 1, 1)
|
||||
GameTooltip:AddLine(" ")
|
||||
GameTooltip:AddLine(L["You can right-click on this button to ignore this item. Items can be unignored from the options screen."], 1, 1, 1, 1)
|
||||
GameTooltip:Show()
|
||||
showingTooltip = this
|
||||
end
|
||||
@ -977,12 +1053,16 @@ function Breakables:FindBreakablesInSlot(bagId, slotId)
|
||||
local texture, itemCount, locked, quality, readable = GetContainerItemInfo(bagId, slotId)
|
||||
if texture then
|
||||
local itemLink = GetContainerItemLink(bagId, slotId)
|
||||
if self.settings.ignoreList and self.settings.ignoreList[self:GetItemIdFromLink(itemLink)] then
|
||||
return nil
|
||||
end
|
||||
|
||||
local itemName, _, itemRarity, itemLevel, _, itemType, itemSubType, _, equipSlot, itemTexture, vendorPrice = GetItemInfo(itemLink)
|
||||
|
||||
self.myTooltip:SetBagItem(bagId, slotId)
|
||||
|
||||
if CanDisenchant and itemRarity and itemRarity >= RARITY_UNCOMMON and itemRarity < RARITY_HEIRLOOM
|
||||
and self:BreakableIsDisenchantable(itemType, itemLevel, itemRarity) then
|
||||
and self:BreakableIsDisenchantable(itemType, itemLevel, itemRarity, itemLink) then
|
||||
local i = 1
|
||||
local soulbound = false
|
||||
for i=1,15 do
|
||||
@ -1006,7 +1086,7 @@ function Breakables:FindBreakablesInSlot(bagId, slotId)
|
||||
end
|
||||
|
||||
local shouldHideThisItem = (self.settings.hideEqManagerItems and isInEquipmentSet) or (self.settings.hideTabards and isTabard)
|
||||
or equipSlot == nil or equipSlot == ""
|
||||
or equipSlot == nil or (equipSlot == "" and not IsArtifactRelicItem(itemLink))
|
||||
|
||||
if (not soulbound or self.settings.showSoulbound) and not shouldHideThisItem then
|
||||
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_DE, soulbound, itemName, itemRarity}
|
||||
@ -1183,9 +1263,9 @@ function Breakables:SortBreakables(foundBreakables)
|
||||
end
|
||||
end
|
||||
|
||||
function Breakables:BreakableIsDisenchantable(itemType, itemLevel, itemRarity)
|
||||
function Breakables:BreakableIsDisenchantable(itemType, itemLevel, itemRarity, itemLink)
|
||||
for i=1,#DisenchantTypes do
|
||||
if DisenchantTypes[i] == itemType then
|
||||
if DisenchantTypes[i] == itemType or IsArtifactRelicItem(itemLink) then
|
||||
-- account for WoD and higher no longer needing specific ilvl. numbers from http://wow.gamepedia.com/Item_level
|
||||
if (itemRarity == RARITY_UNCOMMON and itemLevel >= 483)
|
||||
or (itemRarity == RARITY_RARE and itemLevel >= 515)
|
||||
|
@ -1,3 +1,8 @@
|
||||
v1.4.6:
|
||||
- Added MoP Sparkling Shard as a combinable object.
|
||||
- Added support for registering artifact relics as disenchantable.
|
||||
- Added an ignore feature so certain items can be set to never show up as breakable.
|
||||
|
||||
v1.4.5:
|
||||
- Updated TOC for 7.1
|
||||
|
||||
|
Reference in New Issue
Block a user