You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

93 lines
3.4 KiB

4 years ago
-- ------------------------------------------------------------------------------ --
-- TradeSkillMaster_Destroying --
-- http://www.curse.com/addons/wow/tradeskillmaster_destroying --
-- --
-- A TradeSkillMaster Addon (http://tradeskillmaster.com) --
-- All Rights Reserved* - Detailed license information included with addon. --
-- ------------------------------------------------------------------------------ --
-- register this file with Ace Libraries
local TSM = select(2, ...)
TSM = LibStub("AceAddon-3.0"):NewAddon(TSM, "TSM_Destroying", "AceConsole-3.0")
local L = LibStub("AceLocale-3.0"):GetLocale("TradeSkillMaster_Destroying") -- loads the localization table
--Professions--
TSM.spells = {
milling = 51005,
prospect = 31252,
disenchant = 13262,
}
local savedDBDefaults = {
global = {
history = {},
ignore = {},
autoStack = true,
autoShow = true,
timeFormat = "ago",
deMaxQuality = 3,
logDays = 3,
includeSoulbound = false,
},
}
-- Called once the player has loaded WOW.
function TSM:OnInitialize()
-- create shortcuts to all the modules
for moduleName, module in pairs(TSM.modules) do
TSM[moduleName] = module
end
-- load the savedDB into TSM.db
TSM.db = LibStub:GetLibrary("AceDB-3.0"):New("AscensionTSM_DestroyingDB", savedDBDefaults, true)
4 years ago
-- register this module with TSM
TSM:RegisterModule()
end
-- registers this module with TSM by first setting all fields and then calling TSMAPI:NewModule().
function TSM:RegisterModule()
TSM.icons = {
{side="module", desc="Destroying", slashCommand = "destroying", callback="Options:Load", icon="Interface\\Icons\\INV_Gizmo_RocketBoot_Destroyed_02"},
}
TSM.slashCommands = {
{key="destroy", label=L["Opens the Destroying frame if there's stuff in your bags to be destroyed."], callback="GUI:ShowFrame"},
}
TSMAPI:NewModule(TSM)
end
-- determines if an item is millable or prospectable
local scanTooltip
local destroyCache = {}
function TSM:IsDestroyable(bag, slot, itemString)
if destroyCache[itemString] then
return unpack(destroyCache[itemString])
end
local _, link, quality, _, _, iType = TSMAPI:GetSafeItemInfo(itemString)
local WEAPON, ARMOR = GetAuctionItemClasses()
if itemString and not TSMAPI.DisenchantingData.notDisenchantable[itemString] and (iType == ARMOR or iType == WEAPON) and (quality >= 2 and quality <= TSM.db.global.deMaxQuality) then
destroyCache[itemString] = {IsSpellKnown(TSM.spells.disenchant) and GetSpellInfo(TSM.spells.disenchant), 1}
return unpack(destroyCache[itemString])
end
if not scanTooltip then
scanTooltip = CreateFrame("GameTooltip", "TSMDestroyScanTooltip", UIParent, "GameTooltipTemplate")
scanTooltip:SetOwner(UIParent, "ANCHOR_NONE")
end
scanTooltip:ClearLines()
scanTooltip:SetBagItem(bag, slot)
for i=1, scanTooltip:NumLines() do
local text = _G["TSMDestroyScanTooltipTextLeft"..i] and _G["TSMDestroyScanTooltipTextLeft"..i]:GetText()
if text == ITEM_MILLABLE then
destroyCache[itemString] = {IsSpellKnown(TSM.spells.milling) and GetSpellInfo(TSM.spells.milling), 5}
break
elseif text == ITEM_PROSPECTABLE then
destroyCache[itemString] = {IsSpellKnown(TSM.spells.prospect) and GetSpellInfo(TSM.spells.prospect), 5}
break
end
end
return unpack(destroyCache[itemString] or {})
end