Add getItemSubclassId function and artifactPowerFilter
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user