Compare commits

...

42 Commits

Author SHA1 Message Date
4a1d004502 Prepare for release 2022-10-25 21:27:01 -05:00
a775f7af33 Fix buttons not working on 10.0 2022-09-23 11:07:37 -05:00
3a9db4082a Fix hiding when you unlearn the last profession 2022-09-22 21:37:16 -05:00
59b1cafee3 Respond to gaining/losing a Breakable skill
The mod now reacts by adding or removing the Breakable button row when the player gains or loses an appropriate skill or profession. So if you train Enchanting, a disenchant bar will be added and if you unlearn it it will go away, for example.
2022-09-22 21:18:06 -05:00
a27b2a7301 Update to latest packager example 2022-09-22 11:01:34 -05:00
8abe349758 Add Wago packaging support 2022-09-22 10:54:28 -05:00
4cb1d01204 Add license 2022-09-22 10:54:13 -05:00
016cc6f226 Improve picked lockbox ui update reliability 2022-09-14 23:16:20 -05:00
f71b527f71 Update changelog, tweak option description 2022-09-12 13:17:49 -05:00
a65674510e Add option to always show Enchanting breakables
If the user really wants to bypass the level check (or the mod is misbehaving), this allows them to show everything.
2022-09-12 13:14:24 -05:00
41592a7c76 Make WowVer checks into local named vars 2022-09-12 12:59:48 -05:00
62c8db483e Remove debug print 2022-09-12 12:59:22 -05:00
abf769bf9d Show disenchants if skill level can't be determined 2022-09-11 11:31:57 -05:00
9bd5541f81 Update changelog 2022-09-11 00:13:16 -05:00
80e495f707 Attempt to fix enchant level detection on Wrath
This only works if the player hasn't collapsed the Professions section of their skill UI, and if LibBabble-Inventory's translation is correct for this in all cases, but it's the only method I've found so far that works for Wrath. The other option is to show everything as disenchantable, but I don't like that.
2022-09-11 00:12:30 -05:00
3257ce5645 Package for Wrath, update TOCs 2022-09-04 14:01:25 -05:00
93739030f4 Update TOCs 2022-06-01 08:34:15 -05:00
70fa098fc3 Update TOCs and changelog 2022-03-23 20:54:07 -05:00
154da46002 Add some 9.1/9.2 breakables 2022-03-23 20:53:31 -05:00
0779f4c5ae Update TOCs 2021-11-11 12:58:39 -06:00
6d3bef90c0 Update TOC for 9.1 2021-06-28 13:03:10 -05:00
abfc519084 Add option to hide during pet battles, by request 2021-06-14 23:03:32 -05:00
4c4f48d5d9 Update with latest community packager changes for BC-Classic 2021-05-14 21:36:40 -05:00
1798e824b4 Classic-BC support 2021-05-09 17:21:52 -05:00
481793c8ff Fix an issue when IsArtifactRelicItem is not defined 2021-04-09 21:13:30 -05:00
7f53ef3d90 Update changelog 2021-04-09 20:55:50 -05:00
4dce99e2ab Add option to suppress tooltips by request 2021-04-09 20:53:27 -05:00
92a4758371 Update Classic TOC 2021-03-23 12:14:55 -05:00
e01b0cdd78 Update Classic TOC 2021-03-23 12:14:05 -05:00
e764d54642 Update TOC to 9.0.5 2021-03-22 21:47:08 -05:00
6ab9d09140 Update changelog 2020-11-29 11:50:15 -06:00
5a760da5ac Update TOC to latest 2020-11-29 11:49:14 -06:00
592621cf4e Enable nolib creation 2020-10-23 15:32:15 -05:00
82a97f4e05 Tweak toc for community packager 2020-10-23 15:31:08 -05:00
3273a5d7ce Add github workflow for packaging with the community packager 2020-10-13 09:16:50 -05:00
433a1f4660 Setup compatibility with the community packager 2020-10-13 09:04:41 -05:00
67c8c85978 Version bump for 9.0 2020-10-09 09:37:36 -05:00
806666937f Add Shadowlands herbs, ores, and lockboxes 2020-10-09 09:21:59 -05:00
aeaac05586 Corrected changelog 2020-01-14 20:08:51 -06:00
8553efb4a6 Updated TOC to 8.3 2020-01-14 20:07:35 -06:00
0c89d98639 Fixes for Classic
This causes all items to display as disenchantable whether you have the skill for it or not. I have not yet found the correct way to access the player's Enchanting profession level to check against item level for disenchant validity.
2019-09-09 17:10:37 -05:00
4d0b368ba6 Added 8.2's lockbox 2019-08-12 09:17:44 -05:00
7 changed files with 453 additions and 57 deletions

58
.github/workflows/release.yml vendored Normal file
View File

@ -0,0 +1,58 @@
# description of this workflow, can be anything you want
name: Package and release
# we need to let GitHub know _when_ we want to release, typically only when we create a new tag.
# this will target only tags, and not all pushes to the master branch.
# this part can be heavily customized to your liking, like targeting only tags that match a certain word,
# other branches or even pullrequests.
on:
push:
tags:
- '**'
# a workflow is built up as jobs, and within these jobs are steps
jobs:
# "release" is a job, you can name it anything you want
release:
# we can run our steps on pretty much anything, but the "ubuntu-latest" image is a safe bet
runs-on: ubuntu-latest
# specify the environment variables used by the packager, matching the secrets from the project on GitHub
env:
CF_API_KEY: ${{ secrets.CF_API_KEY }}
WOWI_API_TOKEN: ${{ secrets.WOWI_API_TOKEN }}
WAGO_API_TOKEN: ${{ secrets.WAGO_API_TOKEN }}
GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} # "GITHUB_TOKEN" is a secret always provided to the workflow
# for your own token, the name cannot start with "GITHUB_"
# "steps" holds a list of all the steps needed to package and release our AddOn
steps:
# we first have to clone the AddOn project, this is a required step
- name: Clone project
uses: actions/checkout@v3
with:
fetch-depth: 0 # gets git history for changelogs
# once cloned, we just run the GitHub Action for the packager project
- name: Package and release
uses: BigWigsMods/packager@v2
# another example where we supply additional arguments, this example is specifically to release
# for the Classic version of the game
- name: Package and release for Classic
uses: BigWigsMods/packager@v2
with:
args: -g classic -w 0
- name: Package and release for TBC
uses: BigWigsMods/packager@v2
with:
args: -g bcc -w 0
- name: Package and release for Wrath
uses: BigWigsMods/packager@v2
with:
args: -g wrath -w 0

View File

@ -39,3 +39,5 @@ ignore:
- readme.md
manual-changelog: changelog.txt
enable-nolib-creation: yes

View File

@ -5,7 +5,40 @@ local LBF = LibStub("Masque", true)
local lbfGroup
local IsArtifactRelicItem = IsArtifactRelicItem
if not IsArtifactRelicItem then
IsArtifactRelicItem = function()
return false
end
end
local WowVer = select(4, GetBuildInfo())
local IsClassic = false
local IsClassicBC = false
local IsClassicWrath = false
if GetClassicExpansionLevel then
IsClassic = GetClassicExpansionLevel() == 0
IsClassicBC = GetClassicExpansionLevel() == 1
IsClassicWrath = GetClassicExpansionLevel() == 2
else
IsClassic = WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_CLASSIC
IsClassicBC = false
IsClassicWrath = false
if WOW_PROJECT_ID and WOW_PROJECT_ID == WOW_PROJECT_BURNING_CRUSADE_CLASSIC then
if not LE_EXPANSION_LEVEL_CURRENT or LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_BURNING_CRUSADE then
IsClassicBC = true
elseif LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_WRATH_OF_THE_LICH_KING then
IsClassicWrath = true
end
elseif WOW_PROJECT_WRATH_CLASSIC and WOW_PROJECT_ID == WOW_PROJECT_WRATH_CLASSIC then
IsClassicWrath = true
end
end
local ShouldHookTradeskillUpdate = WowVer < 80000
local ShouldShowTabardControls = WowVer >= 80000
local UseNonNativeEqManagerChecks = WowVer < 80000
local IgnoreEnchantingSkillLevelForDisenchant = WowVer >= 80000
local MillingId = 51005
local MillingItemSubType = babbleInv["Herb"]
@ -38,6 +71,14 @@ local AdditionalMillableItems = {
152510,
152511,
168487,
-- Shadowlands herbs
168586, -- rising glory
168589, -- marrowroot
170554, -- vigil's torch
168583, -- widowbloom
169701, -- death blossom
171315, -- nightshade
187699, -- first flower, 9.2.0
}
local AdditionalProspectableItems = {
@ -50,6 +91,14 @@ local AdditionalProspectableItems = {
152513,
152579,
168185,
-- Shadowlands ore
171828, -- laestrite
171833, -- elethium
171829, -- solenium
171830, -- oxxein
171831, -- phaedrum
171832, -- sinvyr
187700, -- progenium ore, 9.2.0
}
local MassMilling = {
@ -69,6 +118,14 @@ local MassMilling = {
[124106] = 209664,
[128304] = 210116,
[151565] = 247861,
-- shadowlands
[168586] = 311417,
[168589] = 311416,
[170554] = 311414,
[168583] = 311415,
[169701] = 311413,
[171315] = 311418,
[187699] = 359490,
}
local HerbCombineItems = {
@ -86,6 +143,13 @@ local HerbCombineItems = {
109627, -- starflower petal
109628, -- nagrand arrowbloom petal
109629, -- talador orchid petal
-- shadowlands
169550, -- rising glory petal
168591, -- marrowroot petal
169699, -- vigil's torch petal
169698, -- widowbloom petal
169700, -- death blossom petal
169697, -- nightshade petal
}
local UnProspectableItems = {
@ -143,6 +207,13 @@ local PickableItems = {
88567, -- ghost iron lockbox
116920, -- true steel lockbox
121331, -- leystone lockbox
169475, -- barnacled lockbox
-- shadowlands
179311, -- venthyr
180532, -- maldraxxi
180533, -- kyrian
180522, -- night fae
186161, -- stygian lockbox, 9.1.0
}
local CanPickLock = false
@ -172,6 +243,7 @@ local BREAKABLE_PICK = 4
local BREAKABLE_COMBINE = 5
local BagUpdateCheckDelay = 0.1
local PickLockFinishedDelay = 1
local nextCheck = {}
for i=0,NUM_BAG_SLOTS do
nextCheck[i] = -1
@ -190,6 +262,10 @@ local showingTooltip = nil
Breakables.optionsFrame = {}
Breakables.justClicked = false
Breakables.justClickedBag = -1
Breakables.justClickedSlot = -1
Breakables.justPickedBag = -1
Breakables.justPickedSlot = -1
function Breakables:OnInitialize()
self.defaults = {
@ -202,10 +278,13 @@ function Breakables:OnInitialize()
hideEqManagerItems = true,
hide = false,
hideInCombat = false,
hideInPetBattle = true,
buttonScale = 1,
fontSize = 11,
growDirection = 2,
ignoreList = {},
showTooltipForBreakables = true,
showTooltipForProfession = true,
}
}
self.db = LibStub("AceDB-3.0"):New("BreakablesDB", self.defaults, true)
@ -260,12 +339,28 @@ function Breakables:InitLDB()
end
end
function Breakables:OnEnable()
function Breakables:SetCapabilities()
CanMill = IsUsableSpell(GetSpellInfo(MillingId))
CanProspect = IsUsableSpell(GetSpellInfo(ProspectingId))
CanDisenchant = IsUsableSpell(GetSpellInfo(DisenchantId))
CanPickLock = IsUsableSpell(GetSpellInfo(PickLockId))
end
function Breakables:OnSpellsChanged()
local couldMill = CanMill
local couldProspect = CanProspect
local couldDisenchant = CanDisenchant
local couldPick = CanPickLock
self:SetCapabilities()
if couldMill ~= CanMill or couldProspect ~= CanProspect or couldDisenchant ~= CanDisenchant or couldPick ~= CanPickLock then
self:SetupButtons()
end
end
function Breakables:OnEnable()
self:SetCapabilities()
self.EnchantingLevel = 0
LibStub("AceConfig-3.0"):RegisterOptionsTable("Breakables", self:GetOptions(), "breakables")
@ -282,7 +377,16 @@ function Breakables:OnEnable()
self:RegisterEvents()
if CanMill or CanProspect or CanDisenchant or CanPickLock then
self:SetupButtons()
end
local canBreakSomething = function()
return CanMill or CanProspect or CanDisenchant or CanPickLock
end
function Breakables:SetupButtons()
numEligibleProfessions = 0
if canBreakSomething() then
if CanMill then
numEligibleProfessions = numEligibleProfessions + 1
end
@ -308,7 +412,7 @@ function Breakables:OnEnable()
end
self.frame:SetScript("OnUpdate", self.frame.OnUpdateFunc)
else
self:UnregisterAllEvents()
self:CreateButtonFrame()
end
end
@ -337,13 +441,17 @@ function Breakables:RegisterEvents()
self:RegisterEvent("PLAYER_REGEN_ENABLED", "OnLeaveCombat")
self:RegisterEvent("MODIFIER_STATE_CHANGED", "FindBreakables")
self:RegisterEvent("SPELLS_CHANGED", "OnSpellsChanged")
if CanDisenchant and WowVer < 80000 then
if ShouldHookTradeskillUpdate then
self:RegisterEvent("TRADE_SKILL_UPDATE", "OnTradeSkillUpdate")
end
if CanPickLock then
self:RegisterEvent("CHAT_MSG_OPENING", "OnBagItemLockPicked")
self:RegisterEvent("UNIT_SPELLCAST_SUCCEEDED", "OnSpellCastSucceeded")
if UnitCanPetBattle then
self:RegisterEvent("PET_BATTLE_OPENING_START", "PetBattleStarted")
self:RegisterEvent("PET_BATTLE_OVER", "PetBattleEnded")
end
end
@ -405,12 +513,34 @@ function Breakables:OnLeaveCombat()
end
function Breakables:OnTradeSkillUpdate()
if not CanDisenchant then
return
end
self:GetEnchantingLevel()
self:FindBreakables()
end
function Breakables:OnBagItemLockPicked()
function Breakables:OnSpellCastSucceeded(evt, unit, guid, spell)
if spell ~= PickLockId or not CanPickLock then
return
end
self.justPickedBag = self.justClickedBag
self.justPickedSlot = self.justClickedSlot
self:FindBreakables()
nextCheck[0] = GetTime() + PickLockFinishedDelay
end
function Breakables:PetBattleStarted()
if self.settings.hideInPetBattle then
self:ToggleButtonFrameVisibility(false)
end
end
function Breakables:PetBattleEnded()
self:ToggleButtonFrameVisibility(true)
end
function Breakables:FindLevelOfProfessionIndex(idx)
@ -421,15 +551,25 @@ function Breakables:FindLevelOfProfessionIndex(idx)
end
function Breakables:GetEnchantingLevel()
local prof1, prof2 = GetProfessions()
if GetProfessions then
local prof1, prof2 = GetProfessions()
local skillId, rank = self:FindLevelOfProfessionIndex(prof1)
if skillId ~= nil and skillId == EnchantingProfessionId then
self.EnchantingLevel = rank
else
skillId, rank = self:FindLevelOfProfessionIndex(prof2)
local skillId, rank = self:FindLevelOfProfessionIndex(prof1)
if skillId ~= nil and skillId == EnchantingProfessionId then
self.EnchantingLevel = rank
else
skillId, rank = self:FindLevelOfProfessionIndex(prof2)
if skillId ~= nil and skillId == EnchantingProfessionId then
self.EnchantingLevel = rank
end
end
elseif GetSkillLineInfo then
for i=1,100 do
local skillName, header, isExpanded, skillRank, numTempPoints, skillModifier, skillMaxRank, isAbandonable, stepCost, rankCost, minLevel, skillCostType = GetSkillLineInfo(i)
if skillName == babbleInv["Enchanting"] then
self.EnchantingLevel = skillRank
break
end
end
end
end
@ -590,6 +730,36 @@ function Breakables:GetOptions()
end,
order = 7,
},
showTooltipForBreakables = {
type = "toggle",
name = L["Show tooltip on breakables"],
desc = L["Whether or not to show an item tooltip when hovering over a breakable item button."],
get = function(info)
return self.settings.showTooltipForBreakables
end,
set = function(info, v)
self.settings.showTooltipForBreakables = v
if info.uiType == "cmd" then
print("|cff33ff99Breakables|r: set |cffffff78showTooltipForBreakables|r to " .. tostring(self.settings.showTooltipForBreakables))
end
end,
order = 8,
},
showTooltipForProfession = {
type = "toggle",
name = L["Show tooltip on profession"],
desc = L["Whether or not to show an item tooltip when hovering over a profession button on the Breakables bar."],
get = function(info)
return self.settings.showTooltipForProfession
end,
set = function(info, v)
self.settings.showTooltipForProfession = v
if info.uiType == "cmd" then
print("|cff33ff99Breakables|r: set |cffffff78showTooltipForProfession|r to " .. tostring(self.settings.showTooltipForProfession))
end
end,
order = 9,
},
ignoreList = {
type = 'multiselect',
name = L["Ignore list"],
@ -623,26 +793,29 @@ function Breakables:GetOptions()
hidden = function() return not IsIgnoringAnything() end,
order = 31,
},
showSoulbound = {
type = "toggle",
name = L["Show soulbound items"],
desc = L["Whether or not to display soulbound items as breakables."],
get = function(info)
return self.settings.showSoulbound
end,
set = function(info, v)
self.settings.showSoulbound = v
if info.uiType == "cmd" then
print("|cff33ff99Breakables|r: set |cffffff78showSoulbound|r to " .. tostring(self.settings.showSoulbound))
end
self:FindBreakables()
end,
hidden = function()
return not CanDisenchant
end,
order = 20,
},
},
}
if CanDisenchant then
opts.args.showSoulbound = {
type = "toggle",
name = L["Show soulbound items"],
desc = L["Whether or not to display soulbound items as breakables."],
get = function(info)
return self.settings.showSoulbound
end,
set = function(info, v)
self.settings.showSoulbound = v
if info.uiType == "cmd" then
print("|cff33ff99Breakables|r: set |cffffff78showSoulbound|r to " .. tostring(self.settings.showSoulbound))
end
self:FindBreakables()
end,
order = 20,
}
if GetNumEquipmentSets or C_EquipmentSet then
opts.args.hideEqManagerItems = {
type = "toggle",
name = L["Hide Eq. Mgr items"],
@ -658,10 +831,13 @@ function Breakables:GetOptions()
self:FindBreakables()
end,
hidden = function()
return not self.settings.showSoulbound
return not CanDisenchant and not self.settings.showSoulbound
end,
order = 21,
}
end
if ShouldShowTabardControls then
opts.args.hideTabards = {
type = "toggle",
name = L["Hide Tabards"],
@ -680,6 +856,43 @@ function Breakables:GetOptions()
}
end
if not IgnoreEnchantingSkillLevelForDisenchant then
opts.args.ignoreEnchantingSkillLevel = {
type = "toggle",
name = L["Ignore Enchanting skill level"],
desc = L["Whether or not items should be shown when Breakables thinks you don't have the appropriate skill level to disenchant it."],
get = function(info)
return self.settings.ignoreEnchantingSkillLevel
end,
set = function(info, v)
self.settings.ignoreEnchantingSkillLevel = v
self:FindBreakables()
if info.uiType == "cmd" then
print("|cff33ff99Breakables|r: set |cffffff78ignoreEnchantingSkillLevel|r to " .. tostring(self.settings.ignoreEnchantingSkillLevel))
end
end,
order = 10,
}
end
if UnitCanPetBattle then
opts.args.hideInPetBattle = {
type = "toggle",
name = L["Hide during pet battles"],
desc = L["Whether or not to hide the breakables bar when you enter a pet battle."],
get = function(info)
return self.settings.hideInPetBattle
end,
set = function(info, v)
self.settings.hideInPetBattle = v
if info.uiType == "cmd" then
print("|cff33ff99Breakables|r: set |cffffff78hideInPetBattle|r to " .. tostring(self.settings.hideInPetBattle))
end
end,
order = 3.5,
}
end
return opts
end
@ -692,6 +905,11 @@ function Breakables:CreateButtonFrame()
self.buttonFrame = {}
end
for i=numEligibleProfessions+1,#self.buttonFrame do
self.buttonFrame[i]:ClearAllPoints()
self.buttonFrame[i]:Hide()
end
for i=1,numEligibleProfessions do
if not self.buttonFrame[i] then
self.buttonFrame[i] = CreateFrame("Button", "BREAKABLES_BUTTON_FRAME"..i, self.frame, "SecureActionButtonTemplate")
@ -714,7 +932,7 @@ function Breakables:CreateButtonFrame()
frame:SetHeight(buttonSize)
frame:EnableMouse(true)
frame:RegisterForClicks("LeftButtonUp")
frame:RegisterForClicks("LeftButtonUp", "LeftButtonDown")
if not frame.OnMouseDownFunc then
frame.OnMouseDownFunc = function(frame) self:OnMouseDown(frame) end
@ -822,6 +1040,10 @@ function Breakables:FindBreakables(bag)
return
end
if not canBreakSomething() then
return
end
if self.bCombat then
self.bPendingUpdate = true
return
@ -884,7 +1106,7 @@ function Breakables:FindBreakables(bag)
btn:SetWidth(buttonSize)
btn:SetHeight(buttonSize)
btn:EnableMouse(true)
btn:RegisterForClicks("AnyUp")
btn:RegisterForClicks("LeftButtonUp", "LeftButtonDown")
btn:SetAttribute("type1", "spell")
@ -1006,7 +1228,7 @@ end
function Breakables:OnEnterProfessionButton(btn)
local spellId = self:GetSpellIdFromProfessionButton(btn.type)
if spellId then
if spellId and self.settings.showTooltipForProfession then
GameTooltip:SetOwner(btn, "ANCHOR_BOTTOMLEFT")
GameTooltip:SetSpellByID(spellId)
@ -1021,23 +1243,30 @@ function Breakables:OnLeaveProfessionButton()
end
function Breakables:OnEnterBreakableButton(this)
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT")
GameTooltip:SetBagItem(this.bag, this.slot)
if self.settings.showTooltipForBreakables then
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT")
GameTooltip:SetBagItem(this.bag, this.slot)
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
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
end
function Breakables:OnLeaveBreakableButton()
GameTooltip:Hide()
showingTooltip = nil
if showingTooltip then
GameTooltip:Hide()
showingTooltip = nil
end
end
function Breakables:PostClickedBreakableButton(this)
self.justClickedBag = this.bag
self.justClickedSlot = this.slot
if this.type == BREAKABLE_HERB or this.type == BREAKABLE_ORE or this.type == BREAKABLE_DE or this.type == BREAKABLE_COMBINE then
self.justClicked = true
end
@ -1051,12 +1280,17 @@ function Breakables:FindBreakablesInBag(bagId)
for slotId=1,GetContainerNumSlots(bagId) do
local found = self:FindBreakablesInSlot(bagId, slotId)
if found then
local addedToExisting = self:MergeBreakables(found, foundBreakables)
if bagId ~= self.justPickedBag or slotId ~= self.justPickedSlot then
local addedToExisting = self:MergeBreakables(found, foundBreakables)
if not addedToExisting then
foundBreakables[i] = found
i = i + 1
if not addedToExisting then
foundBreakables[i] = found
i = i + 1
end
end
elseif bagId == self.justPickedBag and slotId == self.justPickedSlot then
self.justPickedBag = -1
self.justPickedSlot = -1
end
end
end
@ -1232,7 +1466,7 @@ do
end
function Breakables:IsInEquipmentSet(itemId)
if WowVer < 80000 then
if UseNonNativeEqManagerChecks and GetNumEquipmentSets then
for setIdx=1, GetNumEquipmentSets() do
local set = GetEquipmentSetInfo(setIdx)
local itemArray = GetEquipmentSetItemIDs(set)
@ -1243,7 +1477,7 @@ function Breakables:IsInEquipmentSet(itemId)
end
end
end
else
elseif C_EquipmentSet then
local sets = C_EquipmentSet.GetEquipmentSetIDs()
for k, v in ipairs(sets) do
local itemArray = C_EquipmentSet.GetItemIDs(v)
@ -1297,8 +1531,17 @@ end
function Breakables:BreakableIsDisenchantable(itemType, itemLevel, itemRarity, itemLink, itemId)
for i=1,#DisenchantTypes do
if DisenchantTypes[i] == itemType or IsArtifactRelicItem(itemLink) then
-- temp hack for bfa until disenchant item level scales are identified
if WowVer >= 80000 then
-- bfa+ no longer has skill level requirements for disenchanting
if IgnoreEnchantingSkillLevelForDisenchant then
return true
end
if self.settings.ignoreEnchantingSkillLevel then
return true
end
-- if we couldn't figure out the player's enchanting skill level, err on the side of showing stuff
if self.EnchantingLevel == 0 then
return true
end

View File

@ -1,12 +1,23 @@
## Interface: 80200
## Interface: 100000
## Interface-Retail: 100000
## Interface-Classic: 11403
## Interface-BCC: 20504
## Interface-Wrath: 30400
## Author: Parnic
## Name: Breakables
## Title: Breakables |cff7fff7f-Ace3-|r
## Notes: Tracks herbs/ore/items that can be broken into component pieces
## Version: @project-version@ (Revision: @project-revision@)
#@debug@
## Version: development
#@end-debug@
#@non-debug@
# ## Version: @project-version@
#@end-non-debug@
## SavedVariables: BreakablesDB
## OptionalDeps: Ace3, LibBabble-Inventory-3.0, Masque
## X-Compatible-With: 70300
## X-Curse-Project-ID: 16629
## X-WoWI-ID: 17929
## X-Wago-ID: rkGrlA6y
#@no-lib-strip@
embeds.xml

21
LICENSE Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 parnic
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -1,3 +1,65 @@
v1.9.0:
- Handle gaining and losing a Breakable skill without requiring a UI reload
- Update TOC, fix button clicking bug for 10.0
v1.8.7:
- Improve reliability of UI updates after picking lockboxes. There's no good game event for "locked item opened", so this uses some best-guess heuristics to make it function as expected in most cases.
v1.8.6:
- Improve enchanting level detection for Wrath Classic
- Add option to ignore enchanting skill level for showing disenchantable items
v1.8.5:
- Wrath Classic compatibility
- Updated TOCs
v1.8.4:
- Updated TOCs
v1.8.3:
- Updated TOCs, added 9.1 and 9.2 herbs, ore, and lockboxes
v1.8.2:
- Updated TOCs for 9.1.5, Classic, and BCC
v1.8.1:
- Updated TOC for 9.1
v1.8.0:
- Classic-BC support
- Added option to hide during pet battles, by request.
v1.7.4:
- Fix an issue when IsArtifactRelicItem is not defined
v1.7.3:
- Add option to suppress tooltips by request
- Updated Classic TOC to 1.13.6
v1.7.2:
- Updated TOC for 9.0.5
v1.7.1:
- Updated TOC to latest
v1.7.0:
- Added Shadowlands herbs, ore, and lockboxes
- Updated TOC for 9.0
v1.6.4:
- Updated TOC for 8.3
v1.6.3:
- (Classic) Made all items display as disenchantable whether you have the skill for it or not. I have not yet found the correct way to access the player's Enchanting profession level to check against item level for disenchant validity.
v1.6.2:
- Added 8.2's lockboxes
v1.6.1:
- Added patch 8.2's new herb and ore

View File

@ -14,7 +14,6 @@ Typing */brk* will open the configuration settings (or you can get to it from Bl
* **Max number to display**: this controls the highest number of items that you will see next to your profession button. If this is 5 but you have 10 breakable items in your bags, you will only see 5 at a time.
* **Show soulbound items**: aimed at enchanters, this controls whether or not you will see items that are soulbound as breakable items or not.
### **Known issues**
* If you have more than 5 of a breakable item but split into stacks all smaller than 5, the game will say you do not have enough items to break. The default UI now has a built-in button to compress stacks that should solve this issue.
* If you know Mass Milling for a specific type of herb, the current alpha will try to use this ability and fail. I am in the process of leveling a scribe up high enough to debug this problem.