diff --git a/LegionWA/AutoLoot/Init.lua b/LegionWA/AutoLoot/Init.lua index fa84c91..b9b6b68 100644 --- a/LegionWA/AutoLoot/Init.lua +++ b/LegionWA/AutoLoot/Init.lua @@ -36,6 +36,7 @@ local function getItemLevel(slot) local itemLink = getItemLink(slot) return select(4, GetItemInfo(itemLink)) end + ---The vendor price in copper, or 0 for items that cannot be sold ---@param slot number ---@return number @@ -46,6 +47,13 @@ local function getItemValue(slot) end ---@param slot number ---@return number +local function getItemSubclassId(slot) + if slot == nil then return 0 end + local itemLink = getItemLink(slot) + return select(13, GetItemInfo(itemLink)) +end +---@param slot number +---@return number local function getItemQuantity(slot) if slot == nil then return 0 end return select(3, GetLootSlotInfo(slot)) @@ -79,25 +87,6 @@ local function getBindType(slot) return select(14, GetItemInfo(itemLink)) end - ----@param slot number ----@return nil -local doLoot = function(slot) - LootSlot(slot) - - local itemIcon = getItemIcon(slot) or 134400 - local itemName = getItemName(slot) or "Unknown" - itemName = itemName:gsub("\n", ", ") - local itemQuality = getItemQuality(slot) or 0 - - if not WeakAurasSaved.Cyka.ItemCache[itemName] then - WeakAurasSaved.Cyka.ItemCache[itemName] = { - icon = itemIcon, - quality = itemQuality, - } - end -end - ---@class Filter ---@field enabled boolean ---@field requires table | nil @@ -349,6 +338,17 @@ local boeFilter = Filter.new(true, end return false end) +local artifactPowerFilter = Filter.new(true, { + ["type"] = getItemType, + ["subtype"] = getItemSubtype, + ["subclassid"] = getItemSubclassId +}, function(slot, provided) + ---@cast provided { type: string, subtype: string, subclassid: number } + if provided.type == "Consumable" and provided.subtype == "Other" and provided.subclassid == 8 then + return true + end + return false +end) -- local azeriteFilter = { -- enabled = true, @@ -370,21 +370,22 @@ local boeFilter = Filter.new(true, ---@type table local filters = { - goldFilter, - orderResourcesFilter, - mountFilter, - ilvlFilter, - professionFilter, - valueFilter, - greyValueFilter, - questItemFilter, - classGearFilter, - arguniteFilter, ancientManaFilter, - reicpeFilter, + arguniteFilter, + artifactPowerFilter, + bloodhunerQuarryFilter, bloodOfSargerasFilter, boeFilter, - bloodhunerQuarryFilter, + classGearFilter, + goldFilter, + greyValueFilter, + ilvlFilter, + mountFilter, + orderResourcesFilter, + professionFilter, + questItemFilter, + reicpeFilter, + valueFilter, } ---@class FilterService @@ -405,9 +406,29 @@ aura_env.FilterService = { aura_env.FilterService.doLoot(slotsToLoot) end, + ---@param slots table + ---@return nil doLoot = function(slots) for i = #slots, 1, -1 do - doLoot(slots[i]) + aura_env.FilterService.lootslot(slots[i]) + end + end, + + ---@param slot number + ---@return nil + lootslot = function(slot) + LootSlot(slot) + + local itemIcon = getItemIcon(slot) or 134400 + local itemName = getItemName(slot) or "Unknown" + itemName = itemName:gsub("\n", ", ") + local itemQuality = getItemQuality(slot) or 0 + + if not WeakAurasSaved.Cyka.ItemCache[itemName] then + WeakAurasSaved.Cyka.ItemCache[itemName] = { + icon = itemIcon, + quality = itemQuality, + } end end }