Add getItemSubclassId function and artifactPowerFilter

This commit is contained in:
2024-03-03 20:14:08 +01:00
parent 47c0a5bf54
commit e4b02d4d68

View File

@@ -36,6 +36,7 @@ local function getItemLevel(slot)
local itemLink = getItemLink(slot) local itemLink = getItemLink(slot)
return select(4, GetItemInfo(itemLink)) return select(4, GetItemInfo(itemLink))
end end
---The vendor price in copper, or 0 for items that cannot be sold ---The vendor price in copper, or 0 for items that cannot be sold
---@param slot number ---@param slot number
---@return number ---@return number
@@ -46,6 +47,13 @@ local function getItemValue(slot)
end end
---@param slot number ---@param slot number
---@return 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) local function getItemQuantity(slot)
if slot == nil then return 0 end if slot == nil then return 0 end
return select(3, GetLootSlotInfo(slot)) return select(3, GetLootSlotInfo(slot))
@@ -79,25 +87,6 @@ local function getBindType(slot)
return select(14, GetItemInfo(itemLink)) return select(14, GetItemInfo(itemLink))
end 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 ---@class Filter
---@field enabled boolean ---@field enabled boolean
---@field requires table<string, fun(slot: number): string|number|boolean> | nil ---@field requires table<string, fun(slot: number): string|number|boolean> | nil
@@ -349,6 +338,17 @@ local boeFilter = Filter.new(true,
end end
return false return false
end) 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 = { -- local azeriteFilter = {
-- enabled = true, -- enabled = true,
@@ -370,21 +370,22 @@ local boeFilter = Filter.new(true,
---@type table<Filter> ---@type table<Filter>
local filters = { local filters = {
goldFilter,
orderResourcesFilter,
mountFilter,
ilvlFilter,
professionFilter,
valueFilter,
greyValueFilter,
questItemFilter,
classGearFilter,
arguniteFilter,
ancientManaFilter, ancientManaFilter,
reicpeFilter, arguniteFilter,
artifactPowerFilter,
bloodhunerQuarryFilter,
bloodOfSargerasFilter, bloodOfSargerasFilter,
boeFilter, boeFilter,
bloodhunerQuarryFilter, classGearFilter,
goldFilter,
greyValueFilter,
ilvlFilter,
mountFilter,
orderResourcesFilter,
professionFilter,
questItemFilter,
reicpeFilter,
valueFilter,
} }
---@class FilterService ---@class FilterService
@@ -405,9 +406,29 @@ aura_env.FilterService = {
aura_env.FilterService.doLoot(slotsToLoot) aura_env.FilterService.doLoot(slotsToLoot)
end, end,
---@param slots table<number>
---@return nil
doLoot = function(slots) doLoot = function(slots)
for i = #slots, 1, -1 do 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
end end
} }