mirror of
https://github.com/parnic/breakables.git
synced 2025-06-17 01:41:51 -05:00
Compare commits
18 Commits
Author | SHA1 | Date | |
---|---|---|---|
80bf120abf | |||
d902f864db | |||
9a4c7ddf82 | |||
8bd14cd525 | |||
b086d499b8 | |||
66b0de8074 | |||
62a949cd10 | |||
8f50b7f75f | |||
3f0637641a | |||
6d5d518a8b | |||
d2895bed6a | |||
d2154a350a | |||
a41810c663 | |||
da5e9500f8 | |||
53704888fa | |||
db1819c49f | |||
fb83c4db4a | |||
33e52dc2f6 |
3
.mailmap
Normal file
3
.mailmap
Normal 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>
|
1
.pkgmeta
1
.pkgmeta
@ -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
|
||||
|
114
Breakables.lua
114
Breakables.lua
@ -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,52 @@ local MillingItemSubType = babbleInv["Herb"]
|
||||
local MillingItemSecondarySubType = babbleInv["Other"]
|
||||
local CanMill = false
|
||||
|
||||
local AdditionalMillableItems = {
|
||||
-- WoD herbs
|
||||
109124,
|
||||
109125,
|
||||
109126,
|
||||
109127,
|
||||
109128,
|
||||
109129,
|
||||
-- Legion herbs
|
||||
124101,
|
||||
124102,
|
||||
124103,
|
||||
124104,
|
||||
124105,
|
||||
124106,
|
||||
128304,
|
||||
}
|
||||
|
||||
local AdditionalProspectableItems = {
|
||||
-- Legion ore
|
||||
123918,
|
||||
123919,
|
||||
}
|
||||
|
||||
local MassMilling = {
|
||||
-- wod
|
||||
[109124] = 190381,
|
||||
[109125] = 190382,
|
||||
[109126] = 190383,
|
||||
[109127] = 190384,
|
||||
[109128] = 190385,
|
||||
[109129] = 190386,
|
||||
-- legion
|
||||
[124101] = 209658,
|
||||
[124102] = 209659,
|
||||
[124103] = 209660,
|
||||
[124104] = 209661,
|
||||
[124105] = 209662,
|
||||
[124106] = 209664,
|
||||
[128304] = 210116,
|
||||
}
|
||||
|
||||
local UnProspectableItems = {
|
||||
109119, -- WoD True Iron Ore
|
||||
}
|
||||
|
||||
local ProspectingId = 31252
|
||||
local ProspectingItemSubType = babbleInv["Metal & Stone"]
|
||||
local CanProspect = false
|
||||
@ -128,7 +174,7 @@ function Breakables:OnInitialize()
|
||||
self:InitLDB()
|
||||
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
|
||||
@ -171,14 +217,11 @@ function Breakables:OnEnable()
|
||||
self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("Breakables")
|
||||
|
||||
if LBF then
|
||||
LBF:RegisterSkinCallback("Breakables", self.ButtonFacadeCallback, self)
|
||||
LBF:Register("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)
|
||||
lbfGroup:ReSkin()
|
||||
end
|
||||
end
|
||||
|
||||
@ -260,6 +303,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
|
||||
@ -566,7 +610,7 @@ function Breakables:CreateButtonFrame()
|
||||
frame:SetScript("OnMouseUp", frame.OnMouseUpFunc)
|
||||
frame:SetClampedToScreen(true)
|
||||
|
||||
local spellName, _, texture = GetSpellInfo(self:GetSpellIdFromProfessionButton(frame))
|
||||
local spellName, _, texture = GetSpellInfo(self:GetSpellIdFromProfessionButton(frame.type))
|
||||
|
||||
frame:SetAttribute("type1", "spell")
|
||||
frame:SetAttribute("spell1", spellName)
|
||||
@ -593,10 +637,16 @@ function Breakables:CreateButtonFrame()
|
||||
end
|
||||
end
|
||||
|
||||
function Breakables:GetSpellIdFromProfessionButton(btn)
|
||||
return (btn.type == BREAKABLE_HERB and MillingId)
|
||||
or (btn.type == BREAKABLE_ORE and ProspectingId)
|
||||
or (btn.type == BREAKABLE_DE and DisenchantId)
|
||||
function Breakables:GetSpellIdFromProfessionButton(itemType, itemId)
|
||||
if itemType == BREAKABLE_HERB and itemId ~= nil then
|
||||
if MassMilling[itemId] ~= nil and IsSpellKnown(MassMilling[itemId]) then
|
||||
return MassMilling[itemId]
|
||||
end
|
||||
end
|
||||
|
||||
return (itemType == BREAKABLE_HERB and MillingId)
|
||||
or (itemType == BREAKABLE_ORE and ProspectingId)
|
||||
or (itemType == BREAKABLE_DE and DisenchantId)
|
||||
or PickLockId
|
||||
end
|
||||
|
||||
@ -746,10 +796,11 @@ function Breakables:FindBreakables(bag)
|
||||
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 (foundBreakables[i][IDX_BREAKABLETYPE] == BREAKABLE_DE and DisenchantId)
|
||||
or PickLockId)
|
||||
local BreakableAbilityName = GetSpellInfo(self:GetSpellIdFromProfessionButton(foundBreakables[i][IDX_BREAKABLETYPE], self:GetItemIdFromLink(foundBreakables[i][IDX_LINK])))
|
||||
--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)
|
||||
|
||||
if isLockedItem then
|
||||
@ -813,7 +864,7 @@ end
|
||||
|
||||
function Breakables:OnEnterProfessionButton(btn)
|
||||
GameTooltip:SetOwner(btn, "ANCHOR_BOTTOMLEFT")
|
||||
GameTooltip:SetSpellByID(self:GetSpellIdFromProfessionButton(btn))
|
||||
GameTooltip:SetSpellByID(self:GetSpellIdFromProfessionButton(btn.type))
|
||||
|
||||
GameTooltip:AddLine(" ")
|
||||
GameTooltip:AddLine(L["Hold shift and left-click to drag the Breakables bar around."], 1, 1, 1, 1)
|
||||
@ -902,6 +953,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 == ""
|
||||
|
||||
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}
|
||||
@ -925,6 +977,32 @@ function Breakables:FindBreakablesInSlot(bagId, slotId)
|
||||
end
|
||||
end
|
||||
|
||||
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 then
|
||||
if not prospectable then
|
||||
for i=1,#AdditionalProspectableItems do
|
||||
if AdditionalProspectableItems[i] == itemId then
|
||||
prospectable = true
|
||||
end
|
||||
end
|
||||
end
|
||||
if prospectable then
|
||||
for i=1,#UnProspectableItems do
|
||||
if UnProspectableItems[i] == itemId then
|
||||
prospectable = false
|
||||
end
|
||||
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
|
||||
@ -933,7 +1011,7 @@ function Breakables:FindBreakablesInSlot(bagId, slotId)
|
||||
return {itemLink, itemCount, itemType, itemTexture, bagId, slotId, itemSubType, itemLevel, BREAKABLE_ORE, false, itemName, itemRarity}
|
||||
end
|
||||
|
||||
if CanPickLock and self:ItemIsPickable(self:GetItemIdFromLink(itemLink)) and self:ItemIsLocked(bagId, slotId) then
|
||||
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
|
||||
|
@ -1,12 +1,12 @@
|
||||
## Interface: 60000
|
||||
## 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
|
||||
## X-Compatible-With: 40300
|
||||
## OptionalDeps: Ace3, LibBabble-Inventory-3.0, Masque
|
||||
## X-Compatible-With: 60200
|
||||
|
||||
#@no-lib-strip@
|
||||
embeds.xml
|
||||
@ -15,4 +15,4 @@ embeds.xml
|
||||
LibDataBroker-1.1.lua
|
||||
loc\loc.xml
|
||||
|
||||
Breakables.lua
|
||||
Breakables.lua
|
||||
|
@ -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>
|
Reference in New Issue
Block a user