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.

96 lines
3.2 KiB

local PA = _G.ProjectAzilroka
if PA.Retail then return end
local LC = PA:NewModule('LootConfirm', 'AceEvent-3.0')
PA.LC, _G.LootConfirm = LC, LC
LC.Title = PA.ACL['|cFF16C3F2Loot|r |cFFFFFFFFConfirm|r']
LC.Description = PA.ACL['Confirms Loot for Solo/Groups (Need/Greed)']
LC.Authors = 'Azilroka'
LC.isEnabled = false
local tonumber = tonumber
local strmatch = strmatch
local GetLootRollItemInfo = GetLootRollItemInfo
local GetLootRollItemLink = GetLootRollItemLink
local ConfirmLootRoll = ConfirmLootRoll
local GetNumLootItems = GetNumLootItems
local ConfirmLootSlot = ConfirmLootSlot
local RollOnLoot = RollOnLoot
function LC:Confirm(event, ...)
if event == 'CONFIRM_LOOT_ROLL' then
local arg1, arg2 = ...
ConfirmLootRoll(arg1, arg2)
elseif event == 'LOOT_OPENED' or event == 'LOOT_BIND_CONFIRM' then
for slot = 1, GetNumLootItems() do
ConfirmLootSlot(slot)
end
end
end
-- LOOT_ROLL_TYPE_PASS, LOOT_ROLL_TYPE_NEED
-- texture, item, quantity, currencyID, quality, locked, isQuestItem, questId, isActive = GetLootSlotInfo(slot);
function LC:START_LOOT_ROLL(_, rollID)
if not (LC.db.Disenchant or LC.db.Greed) then return end
local texture, name, _, quality, bop, canNeed, canGreed, canDisenchant = GetLootRollItemInfo(rollID)
local itemLink = GetLootRollItemLink(rollID)
local itemID = tonumber(strmatch(itemLink, 'item:(%d+)'))
if canDisenchant and LC.db.Disenchant then
RollOnLoot(rollID, _G.LOOT_ROLL_TYPE_DISENCHANT)
elseif canGreed and LC.db.Greed then
RollOnLoot(rollID, _G.LOOT_ROLL_TYPE_GREED)
end
end
function LC:GetOptions()
local LootConfirm = PA.ACH:Group(LC.Title, LC.Description, nil, nil, function(info) return LC.db[info[#info]] end)
PA.Options.args.LootConfirm = LootConfirm
LootConfirm.args.Description = PA.ACH:Description(LC.Description, 0)
LootConfirm.args.Enable = PA.ACH:Toggle(PA.ACL['Enable'], nil, 1, nil, nil, nil, nil, function(info, value) LC.db[info[#info]] = value if not LC.isEnabled then LC:Initialize() else _G.StaticPopup_Show('PROJECTAZILROKA_RL') end end)
LootConfirm.args.General = PA.ACH:Group(PA.ACL['General'], nil, 2)
LootConfirm.args.General.inline = true
LootConfirm.args.General.args.AutoRoll = PA.ACH:Description(PA.ACL['If Disenchant and Greed is selected. It will always try to Disenchant first.'], 0, 'large')
LootConfirm.args.General.args.Disenchant = PA.ACH:Toggle(PA.ACL['Auto Disenchant'], nil, 1)
LootConfirm.args.General.args.Greed = PA.ACH:Toggle(PA.ACL['Auto Greed'], nil, 2)
LootConfirm.args.AuthorHeader = PA.ACH:Header(PA.ACL['Authors:'], -2)
LootConfirm.args.Authors = PA.ACH:Description(LC.Authors, -1, 'large')
end
function LC:BuildProfile()
PA.Defaults.profile.LootConfirm = {
Enable = false,
Greed = false,
Disenchant = false,
}
end
function LC:UpdateSettings()
LC.db = PA.db.LootConfirm
end
function LC:Initialize()
LC:UpdateSettings()
if LC.db.Enable ~= true then
return
end
LC.isEnabled = true
_G.UIParent:UnregisterEvent('LOOT_BIND_CONFIRM')
_G.UIParent:UnregisterEvent('CONFIRM_LOOT_ROLL')
LC:RegisterEvent('CONFIRM_LOOT_ROLL', 'Confirm')
LC:RegisterEvent('LOOT_OPENED', 'Confirm')
LC:RegisterEvent('LOOT_BIND_CONFIRM', 'Confirm')
LC:RegisterEvent('START_LOOT_ROLL')
end