Compare commits

...

36 Commits
1.3.2 ... 1.4

Author SHA1 Message Date
b086d499b8 Updated TOC to 7.0 2016-07-18 12:03:29 -05:00
66b0de8074 Added mailmap to unify author info 2016-05-30 11:24:49 -05:00
62a949cd10 Updated Compatible-With to 7.0 2016-05-30 01:44:52 -05:00
8f50b7f75f - TOC bump for 6.2 2015-06-27 22:11:54 -05:00
3f0637641a - Clear the tooltip when we receive a new item and we recently clicked a breakables button. This isn't ideal since we could be clearing out a tooltip that should stay or clearing out a tooltip not related to our mod, but it's probably better than keeping a stale tooltip around for something like a disenchant when the user hasn't moved the mouse away from the button since breaking something. 2015-06-27 22:11:20 -05:00
6d5d518a8b - Moved compatible-with to 5.x from 4.x 2015-02-25 22:49:45 -06:00
d2895bed6a - TOC bump for 6.1 2015-02-24 17:18:02 -06:00
d2154a350a - Actually fixed True Iron Ore showing up as prospectable. 2014-12-29 17:16:02 -06:00
a41810c663 - Hide garrison follower armor items by hiding any item that doesn't come back with an equip slot. Hopefully doesn't produce any false positives. 2014-12-26 15:22:52 -06:00
da5e9500f8 - Block True Iron Ore from showing up as millable. 2014-12-18 10:40:58 -06:00
53704888fa Disabled global "herb"-type item acceptance since it, as expected, flags false positives. Instead we're whitelisting WoD herbs by item id. 2014-11-22 02:37:20 -06:00
db1819c49f Now considering all items with sub-type "Herb" to be millable. Again. I'm sure it won't cause any problems. Nope. 2014-11-16 15:34:28 -06:00
fb83c4db4a - Added check for the "Herb" keyword on a tooltip line for millable items since apparently WoD herbs don't say "Millable". Cool. 2014-11-14 16:22:13 -06:00
33e52dc2f6 - Switched from LibButtonFacade to Masque. (ticket #20) 2014-11-08 01:07:57 -06:00
74e54e9537 - Added MoP lockbox/junkbox that I apparently missed before now. 2014-10-14 12:56:51 -05:00
abea50f496 Updated TOC to patch 6.0 2014-10-13 01:41:47 -05:00
2a8bbfcda6 - TOC update for 5.4 2013-09-10 14:50:26 +00:00
b970542bfe - Make sure to update the breakables list whenever a tracked tradeskill is updated in case we can then break down new items (right now, that's only enchanting). 2013-07-30 01:45:37 +00:00
8edeeed9e1 - Removed debug print added in last commit.
- Added option to hide tabards from the list of breakables. (ticket #16)
2013-07-27 17:43:06 +00:00
7c19e414e7 - Only display items the player is capable of disenchanting. 2013-07-27 16:39:18 +00:00
4e65efadff - Suppress account-bound and bnet-account-bound items when "show soulbound items" is unchecked. 2013-07-26 05:40:43 +00:00
fea232d8ae - Fixed GetEnchantingLevel() to work without requiring the user to open his/her professions window first. This isn't used yet; committing the fixed function to work on later. 2013-07-18 21:29:35 +00:00
993b99e7be - Search the first 15 lines instead of the first 5 lines for the "Soulbound" descriptor since apparently item cards have gotten stupidly long these days. 2013-05-30 21:49:45 +00:00
0442d560d5 - Added lockboxes to the pickable items list. (ticket #17) 2013-05-30 21:24:38 +00:00
e5968d9441 - Updated TOC for 5.3 2013-05-23 19:49:27 +00:00
814e0ca54f - 5.2 TOC update 2013-03-06 18:08:31 +00:00
610f1559fe - TOC increased for 5.1 2012-11-28 01:41:03 +00:00
140502e508 - Added MoP junkboxes.
- Removed optimization that was trivially excluding items whose type/sub-type didn't match expected since MoP ore/herbs aren't categorized properly.
2012-11-11 19:46:58 +00:00
302478f872 - Added X-Compatible-With 40300. 2012-08-27 19:06:10 +00:00
a1263947f0 - Updated TOC for 5.0. 2012-08-27 17:52:08 +00:00
1e45bfe622 - 4.3 toc update 2011-11-29 19:39:09 +00:00
26d83c425b - 4.2 toc update 2011-06-28 15:08:37 +00:00
8e6867ed44 - toc update 2011-04-27 00:49:05 +00:00
a9f1b24563 - drycoded fix to ticket #10: look through the first 5 lines of the tooltip to find "millable" or "prospectable" instead of requiring it to be on line 2 2011-01-31 21:13:56 +00:00
a20c5fe54f - moved LibButtonFacade's Group:Skin call from :OnInitialize() to :OnEnable(). apparently OnInitialize is too soon and causes the custom skin to get overwritten. (ticket #9) 2011-01-03 05:47:44 +00:00
e22f4ef334 - added tracking for rogue junkboxes (obtained via 'pick pocket'). clicking the junkbox will automatically unlock it
- shortened the delay for processing items after a BAG_UPDATE to 1 second (from 1.5)
- fixed herbs, ore, and disenchanting to update breakable item counts immediately upon the next BAG_UPDATE instead of throttling
2011-01-02 07:07:52 +00:00
5 changed files with 346 additions and 49 deletions

3
.mailmap Normal file
View File

@ -0,0 +1,3 @@
parnic <parnic@parnic.com> Parnic <chris@parnic.com>
parnic <parnic@parnic.com> Chris Pickett <cpickett@perniciousgames.com>
parnic <parnic@parnic.com> root <root@parnic.com>

View File

@ -34,4 +34,3 @@ externals:
libs/LibBabble-Inventory-3.0:
url: svn://svn.wowace.com/wow/libbabble-inventory-3-0/mainline/trunk
tag: latest
libs/LibButtonFacade: svn://svn.wowace.com/wow/buttonfacade/mainline/trunk/Libs/LibButtonFacade

View File

@ -1,7 +1,7 @@
local L = LibStub("AceLocale-3.0"):GetLocale("Breakables", false)
Breakables = LibStub("AceAddon-3.0"):NewAddon("Breakables", "AceConsole-3.0", "AceEvent-3.0")
local babbleInv = LibStub("LibBabble-Inventory-3.0"):GetLookupTable()
local LBF = LibStub("LibButtonFacade", true)
local LBF = LibStub("Masque", true)
local lbfGroup
@ -10,6 +10,20 @@ local MillingItemSubType = babbleInv["Herb"]
local MillingItemSecondarySubType = babbleInv["Other"]
local CanMill = false
local AdditionalMillableItems = {
-- WoD herbs
109124,
109125,
109126,
109127,
109128,
109129,
}
local UnProspectableItems = {
109119, -- WoD True Iron Ore
}
local ProspectingId = 31252
local ProspectingItemSubType = babbleInv["Metal & Stone"]
local CanProspect = false
@ -17,9 +31,42 @@ local CanProspect = false
local DisenchantId = 13262
local DisenchantTypes = {babbleInv["Armor"], babbleInv["Weapon"]}
local CanDisenchant = false
local EnchantingProfessionId = 333
local PickLockId = 1804
local PickableItems = {
16882, -- battered junkbox
16883, -- worn junkbox
16884, -- sturdy junkbox
16885, -- heavy junkbox
29569, -- strong junkbox
43575, -- reinforced junkbox
63349, -- flame-scarred junkbox
88165, -- vine-cracked junkbox
106895, -- iron-bound junkbox
4632, -- ornate bronze lockbox
4633, -- heavy bronze lockbox
4634, -- iron lockbox
4636, -- strong iron lockbox
4637, -- steel lockbox
4638, -- reinforced steel lockbox
5758, -- mithril lockbox
5759, -- throium lockbox
5760, -- eternium lockbox
31952, -- khorium lockbox
43622, -- froststeel lockbox
43624, -- titanium lockbox
45986, -- tiny titanium lockbox
68729, -- elementium lockbox
88567, -- ghost iron lockbox
116920, -- true steel lockbox
}
local CanPickLock = false
-- item rarity must meet or surpass this to be considered for disenchantability (is that a word?)
local RARITY_UNCOMMON = 2
local RARITY_RARE = 3
local RARITY_EPIC = 4
local RARITY_HEIRLOOM = 7
local IDX_LINK = 1
@ -33,12 +80,14 @@ local IDX_LEVEL = 8
local IDX_BREAKABLETYPE = 9
local IDX_SOULBOUND = 10
local IDX_NAME = 11
local IDX_RARITY = 12
local BREAKABLE_HERB = 1
local BREAKABLE_ORE = 2
local BREAKABLE_DE = 3
local BREAKABLE_PICK = 4
local BagUpdateCheckDelay = 1.5
local BagUpdateCheckDelay = 1.0
local nextCheck = {}
for i=0,NUM_BAG_SLOTS do
nextCheck[i] = -1
@ -50,7 +99,7 @@ local _G = _G
local validGrowDirections = {L["Left"], L["Right"], L["Up"], L["Down"]}
-- can be 1 or 2
-- can be 1, 2, or 3 (in the case of a rogue with pick lock)
local numEligibleProfessions = 0
Breakables.optionsFrame = {}
@ -91,21 +140,9 @@ function Breakables:OnInitialize()
end
self:InitLDB()
if LBF then
LBF:RegisterSkinCallback("Breakables", self.ButtonFacadeCallback, self)
lbfGroup = LBF:Group("Breakables")
if lbfGroup then
lbfGroup:Skin(self.settings.SkinID,
self.settings.Gloss,
self.settings.Backdrop,
self.settings.Colors)
end
end
end
function Breakables:ButtonFacadeCallback(SkinID, Gloss, Backdrop, Group, Button, Colors)
function Breakables:ButtonFacadeCallback(Group, SkinID, Gloss, Backdrop, Colors, Disabled)
if not Group then
self.settings.SkinID = SkinID
self.settings.Gloss = Gloss
@ -140,13 +177,25 @@ function Breakables:OnEnable()
CanMill = IsUsableSpell(GetSpellInfo(MillingId))
CanProspect = IsUsableSpell(GetSpellInfo(ProspectingId))
CanDisenchant = IsUsableSpell(GetSpellInfo(DisenchantId))
CanPickLock = IsUsableSpell(GetSpellInfo(PickLockId))
self.EnchantingLevel = 0
LibStub("AceConfig-3.0"):RegisterOptionsTable("Breakables", self:GetOptions(), "breakables")
self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Breakables")
if LBF then
LBF:Register("Breakables", self.ButtonFacadeCallback, self)
lbfGroup = LBF:Group("Breakables")
if lbfGroup then
lbfGroup:ReSkin()
end
end
self:RegisterEvents()
if CanMill or CanProspect or CanDisenchant then
if CanMill or CanProspect or CanDisenchant or CanPickLock then
if CanMill then
numEligibleProfessions = numEligibleProfessions + 1
end
@ -155,6 +204,10 @@ function Breakables:OnEnable()
end
if CanDisenchant then
numEligibleProfessions = numEligibleProfessions + 1
self:GetEnchantingLevel()
end
if CanPickLock then
numEligibleProfessions = numEligibleProfessions + 1
end
self:CreateButtonFrame()
@ -199,6 +252,10 @@ function Breakables:RegisterEvents()
if CanDisenchant then
self:RegisterEvent("TRADE_SKILL_UPDATE", "OnTradeSkillUpdate")
end
if CanPickLock then
self:RegisterEvent("CHAT_MSG_OPENING", "OnBagItemLockPicked")
end
end
function Breakables:OnDisable()
@ -214,6 +271,7 @@ function Breakables:OnItemReceived(event, bag)
if self.justClicked then
self:FindBreakables()
self.justClicked = false
self:OnLeaveProfessionButton()
elseif not bag or bag >= 0 then
nextCheck[bag] = GetTime() + BagUpdateCheckDelay
end
@ -253,14 +311,31 @@ end
function Breakables:OnTradeSkillUpdate()
self:GetEnchantingLevel()
self:FindBreakables()
end
function Breakables:OnBagItemLockPicked()
nextCheck[1] = GetTime() + BagUpdateCheckDelay
end
function Breakables:FindLevelOfProfessionIndex(idx)
if idx ~= nil then
local name, texture, rank, maxRank, numSpells, spelloffset, skillLine = GetProfessionInfo(idx)
return skillLine, rank
end
end
function Breakables:GetEnchantingLevel()
local skillName, skillType, numAvailable, isExpanded = GetTradeSkillInfo(1)
local prof1, prof2 = GetProfessions()
if skillName == "Enchant" then
local _, rank, maxRank = GetTradeSkillLine()
self.settings.EnchantingLevel = rank
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
end
@ -436,6 +511,22 @@ function Breakables:GetOptions()
end,
order = 21,
}
opts.args.hideTabards = {
type = "toggle",
name = L["Hide Tabards"],
desc = L["Whether or not to hide tabards from the disenchantable items list."],
get = function(info)
return self.settings.hideTabards
end,
set = function(info, v)
self.settings.hideTabards = v
if info.uiType == "cmd" then
print("|cff33ff99Breakables|r: set |cffffff78hideTabards|r to " .. tostring(self.settings.hideTabards))
end
self:FindBreakables()
end,
order = 22,
}
end
return opts
@ -463,6 +554,8 @@ function Breakables:CreateButtonFrame()
frame.type = BREAKABLE_DE
elseif CanProspect and (i == 1 or self.buttonFrame[1].type ~= BREAKABLE_ORE) then
frame.type = BREAKABLE_ORE
elseif CanPickLock and (i == 1 or self.buttonFrame[1].type ~= BREAKABLE_PICK) then
frame.type = BREAKABLE_PICK
end
if frame.type then
@ -513,7 +606,10 @@ function Breakables:CreateButtonFrame()
end
function Breakables:GetSpellIdFromProfessionButton(btn)
return (btn.type == BREAKABLE_HERB and MillingId) or (btn.type == BREAKABLE_ORE and ProspectingId) or DisenchantId
return (btn.type == BREAKABLE_HERB and MillingId)
or (btn.type == BREAKABLE_ORE and ProspectingId)
or (btn.type == BREAKABLE_DE and DisenchantId)
or PickLockId
end
function Breakables:ApplyScale()
@ -599,8 +695,10 @@ function Breakables:FindBreakables(bag)
end
if foundBreakables[i][IDX_BREAKABLETYPE] == self.buttonFrame[j].type and numBreakableStacks[j] < self.settings.maxBreakablesToShow then
local isDisenchantable = self:BreakableIsDisenchantable(foundBreakables[i][IDX_TYPE], foundBreakables[i][IDX_LEVEL])
if (CanDisenchant and isDisenchantable) or foundBreakables[i][IDX_COUNT] >= 5 then
local isDisenchantable = self:BreakableIsDisenchantable(foundBreakables[i][IDX_TYPE], foundBreakables[i][IDX_LEVEL], foundBreakables[i][IDX_RARITY])
local isLockedItem = foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_PICK
if (CanDisenchant and isDisenchantable) or (CanPickLock and isLockedItem) or (foundBreakables[i][IDX_COUNT] >= 5) then
numBreakableStacks[j] = numBreakableStacks[j] + 1
local btnIdx = numBreakableStacks[j]
@ -652,12 +750,30 @@ function Breakables:FindBreakables(bag)
btn:SetPoint(attachFrom, btnIdx == 1 and self.buttonFrame[j] or self.breakableButtons[j][btnIdx - 1], attachTo)
if not isDisenchantable then
btn.text:SetText(foundBreakables[i][IDX_COUNT].." ("..(floor(foundBreakables[i][IDX_COUNT]/5))..")")
local appendText = ""
if not isLockedItem then
appendText = " ("..(floor(foundBreakables[i][IDX_COUNT]/5))..")"
end
btn.text:SetText(foundBreakables[i][IDX_COUNT] .. appendText)
end
local BreakableAbilityName = GetSpellInfo((foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_HERB and MillingId) or (foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_ORE and ProspectingId) or DisenchantId)
local BreakableAbilityName = GetSpellInfo((foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_HERB and MillingId)
or (foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_ORE and ProspectingId)
or (foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_DE and DisenchantId)
or PickLockId)
btn:SetAttribute("spell", BreakableAbilityName)
btn:SetAttribute("target-item", foundBreakables[i][IDX_NAME])
if isLockedItem then
btn:SetAttribute("target-item")
btn:SetAttribute("target-bag", foundBreakables[i][IDX_BAG])
btn:SetAttribute("target-slot", foundBreakables[i][IDX_SLOT])
else
btn:SetAttribute("target-item", foundBreakables[i][IDX_NAME])
btn:SetAttribute("target-bag")
btn:SetAttribute("target-slot")
end
if lbfGroup then
btn.icon:SetTexture(foundBreakables[i][IDX_TEXTURE])
else
@ -672,9 +788,13 @@ function Breakables:FindBreakables(bag)
if not btn.OnLeaveFunc then
btn.OnLeaveFunc = function() self:OnLeaveBreakableButton() end
end
if not btn.PostClickedFunc then
btn.PostClickedFunc = function(this) self:PostClickedBreakableButton(this) end
end
btn:SetScript("OnEnter", btn.OnEnterFunc)
btn:SetScript("OnLeave", btn.OnLeaveFunc)
btn:SetScript("PostClick", btn.PostClickedFunc)
btn:Show()
end
@ -729,6 +849,12 @@ function Breakables:OnLeaveBreakableButton()
GameTooltip:Hide()
end
function Breakables:PostClickedBreakableButton(this)
if this.type == BREAKABLE_HERB or this.type == BREAKABLE_ORE or this.type == BREAKABLE_DE then
self.justClicked = true
end
end
function Breakables:FindBreakablesInBag(bagId)
local foundBreakables = {}
local i=1
@ -759,18 +885,21 @@ function Breakables:FindBreakablesInSlot(bagId, slotId)
local texture, itemCount, locked, quality, readable = GetContainerItemInfo(bagId, slotId)
if texture then
local itemLink = GetContainerItemLink(bagId, slotId)
local itemName, _, itemRarity, itemLevel, _, itemType, itemSubType, _, _, itemTexture = GetItemInfo(itemLink)
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) then
and self:BreakableIsDisenchantable(itemType, itemLevel, itemRarity) then
local i = 1
local soulbound = false
for i=1,5 do
if _G["BreakablesTooltipTextLeft"..i]:GetText() == ITEM_SOULBOUND then
soulbound = true
break
for i=1,15 do
if _G["BreakablesTooltipTextLeft"..i] then
local textLine = _G["BreakablesTooltipTextLeft"..i]:GetText()
if textLine == ITEM_SOULBOUND or textLine == ITEM_ACCOUNTBOUND or textLine == ITEM_BNETACCOUNTBOUND then
soulbound = true
break
end
end
end
@ -778,29 +907,113 @@ function Breakables:FindBreakablesInSlot(bagId, slotId)
if self.settings.hideEqManagerItems then
isInEquipmentSet = self:IsInEquipmentSet(self:GetItemIdFromLink(itemLink))
end
local shouldHideThisItem = self.settings.hideEqManagerItems and isInEquipmentSet
local isTabard = false
if self.settings.hideTabards then
isTabard = equipSlot == "INVTYPE_TABARD"
end
local shouldHideThisItem = (self.settings.hideEqManagerItems and isInEquipmentSet) or (self.settings.hideTabards and isTabard)
or equipSlot == nil or equipSlot == ""
if (not soulbound or self.settings.showSoulbound) and not shouldHideThisItem then
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_DE, soulbound, itemName}
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_DE, soulbound, itemName, itemRarity}
else
return nil
end
end
local extraInfo = BreakablesTooltipTextLeft2:GetText()
if CanMill and (itemSubType == MillingItemSubType or itemSubType == MillingItemSecondarySubType) and extraInfo == ITEM_MILLABLE then
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_HERB, false, itemName}
local idx = 1
local millable = false
local prospectable = false
for idx=1,5 do
if _G["BreakablesTooltipTextLeft"..idx] then
if _G["BreakablesTooltipTextLeft"..idx]:GetText() == ITEM_MILLABLE then
millable = true
break
elseif _G["BreakablesTooltipTextLeft"..idx]:GetText() == ITEM_PROSPECTABLE then
prospectable = true
break
end
end
end
if CanProspect and itemSubType == ProspectingItemSubType and extraInfo == ITEM_PROSPECTABLE then
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_ORE, false, itemName}
local itemId = self:GetItemIdFromLink(itemLink)
if CanMill and not millable then
for i=1,#AdditionalMillableItems do
if AdditionalMillableItems[i] == itemId then
millable = true
end
end
end
if CanProspect and prospectable then
for i=1,#UnProspectableItems do
if UnProspectableItems[i] == itemId then
prospectable = false
end
end
end
if CanMill --[[and (itemSubType == MillingItemSubType or itemSubType == MillingItemSecondarySubType)]] and millable then
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_HERB, false, itemName, itemRarity}
end
if CanProspect --[[and itemSubType == ProspectingItemSubType]] and prospectable then
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_ORE, false, itemName, itemRarity}
end
if CanPickLock and self:ItemIsPickable(itemId) and self:ItemIsLocked(bagId, slotId) then
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_PICK, false, itemName, itemRarity}
end
end
return nil
end
function Breakables:ItemIsPickable(itemId)
for i=1,#PickableItems do
if PickableItems[i] == itemId then
return true
end
end
return nil
end
do
local regions = {}
local tooltipBuffer = CreateFrame("GameTooltip","tooltipBuffer",nil,"GameTooltipTemplate")
tooltipBuffer:SetOwner(WorldFrame, "ANCHOR_NONE")
local function makeTable(t, ...)
wipe(t)
for i = 1, select("#", ...) do
t[i] = select(i, ...)
end
end
function Breakables:ItemIsLocked(bagId, slotId)
tooltipBuffer:ClearLines()
tooltipBuffer:SetBagItem(bagId, slotId)
-- Grab all regions, stuff em into our table
makeTable(regions, tooltipBuffer:GetRegions())
-- Convert FontStrings to strings, replace anything else with ""
for i=1, #regions do
local region = regions[i]
if region:GetObjectType() == "FontString" then
if region:GetText() == LOCKED then
return true
end
end
end
return false
end
end
function Breakables:IsInEquipmentSet(itemId)
for setIdx=1, GetNumEquipmentSets() do
local set = GetEquipmentSetInfo(setIdx)
@ -848,11 +1061,93 @@ function Breakables:SortBreakables(foundBreakables)
end
end
function Breakables:BreakableIsDisenchantable(itemType, itemLevel)
function Breakables:BreakableIsDisenchantable(itemType, itemLevel, itemRarity)
for i=1,#DisenchantTypes do
if DisenchantTypes[i] == itemType then
-- todo: figure out if the iLevel works with our enchanting skill level.
-- formula (from http://www.wowwiki.com/Disenchanting): 5*ceiling(iLevel,5)-100
-- this is awful. is there an easier way? taken from www.wowpedia.org/Disenchanting
if itemRarity == RARITY_UNCOMMON then
if itemLevel <= 20 then
return self.EnchantingLevel >= 1
elseif itemLevel <= 25 then
return self.EnchantingLevel >= 25
elseif itemLevel <= 30 then
return self.EnchantingLevel >= 50
elseif itemLevel <= 35 then
return self.EnchantingLevel >= 75
elseif itemLevel <= 40 then
return self.EnchantingLevel >= 100
elseif itemLevel <= 45 then
return self.EnchantingLevel >= 125
elseif itemLevel <= 50 then
return self.EnchantingLevel >= 150
elseif itemLevel <= 55 then
return self.EnchantingLevel >= 175
elseif itemLevel <= 60 then
return self.EnchantingLevel >= 200
elseif itemLevel <= 99 then
return self.EnchantingLevel >= 225
elseif itemLevel <= 120 then
return self.EnchantingLevel >= 275
elseif itemLevel <= 150 then
return self.EnchantingLevel >= 325
elseif itemLevel <= 182 then
return self.EnchantingLevel >= 350
elseif itemLevel <= 318 then
return self.EnchantingLevel >= 425
elseif itemLevel <= 437 then
return self.EnchantingLevel >= 475
else
return self.EnchantingLevel >= 475
end
elseif itemRarity == RARITY_RARE then
if itemLevel <= 25 then
return self.EnchantingLevel >= 25
elseif itemLevel <= 30 then
return self.EnchantingLevel >= 50
elseif itemLevel <= 35 then
return self.EnchantingLevel >= 75
elseif itemLevel <= 40 then
return self.EnchantingLevel >= 100
elseif itemLevel <= 45 then
return self.EnchantingLevel >= 125
elseif itemLevel <= 50 then
return self.EnchantingLevel >= 150
elseif itemLevel <= 55 then
return self.EnchantingLevel >= 175
elseif itemLevel <= 60 then
return self.EnchantingLevel >= 200
elseif itemLevel <= 97 then
return self.EnchantingLevel >= 225
elseif itemLevel <= 115 then
return self.EnchantingLevel >= 275
elseif itemLevel <= 200 then
return self.EnchantingLevel >= 325
elseif itemLevel <= 346 then
return self.EnchantingLevel >= 450
elseif itemLevel <= 424 then
return self.EnchantingLevel >= 525
elseif itemLevel <= 463 then
return self.EnchantingLevel >= 550
else
return self.EnchantingLevel >= 550
end
elseif itemRarity == RARITY_EPIC then
if itemLevel <= 95 then
return self.EnchantingLevel >= 225
elseif itemLevel <= 164 then
return self.EnchantingLevel >= 300
elseif itemLevel <= 277 then
return self.EnchantingLevel >= 375
elseif itemLevel <= 416 then
return self.EnchantingLevel >= 475
elseif itemLevel <= 575 then
return self.EnchantingLevel >= 575
else
return self.EnchantingLevel >= 575
end
else
return false
end
return true
end
end

View File

@ -1,11 +1,12 @@
## Interface: 40000
## Interface: 70000
## 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@)
## SavedVariables: BreakablesDB
## OptionalDeps: Ace3, LibBabble-Inventory-3.0, ButtonFacade
## OptionalDeps: Ace3, LibBabble-Inventory-3.0, Masque
## X-Compatible-With: 60200
#@no-lib-strip@
embeds.xml
@ -14,4 +15,4 @@ embeds.xml
LibDataBroker-1.1.lua
loc\loc.xml
Breakables.lua
Breakables.lua

View File

@ -10,5 +10,4 @@
<Include file="libs\AceEvent-3.0\AceEvent-3.0.xml"/>
<Include file="libs\AceLocale-3.0\AceLocale-3.0.xml"/>
<Include file="libs\LibBabble-Inventory-3.0\lib.xml"/>
<Include file="libs\LibButtonFacade\LibButtonFacade.xml"/>
</Ui>