866 lines
27 KiB
Lua
866 lines
27 KiB
Lua
local debug = false
|
|
if not WeakAurasSaved then WeakAurasSaved = {} end
|
|
if not WeakAurasSaved.Cyka then WeakAurasSaved.Cyka = {} end
|
|
if not WeakAurasSaved.Cyka.ItemCache then WeakAurasSaved.Cyka.ItemCache = {} end
|
|
|
|
---@param slot number
|
|
---@return string, string|nil
|
|
local function getItemLink(slot)
|
|
if slot == nil then return "", string.format("Slot can not be nil") end
|
|
local link = GetLootSlotLink(slot)
|
|
if link == nil then return "", string.format("GetLootSlotLink returned nil for slot %d", slot) end
|
|
return link, nil
|
|
end
|
|
---@param slot number
|
|
---@return string, string|nil
|
|
local function getItemName(slot)
|
|
if slot == nil then return "", string.format("Slot can not be null") end
|
|
return select(2, GetLootSlotInfo(slot)), nil
|
|
end
|
|
---@param slot number
|
|
---@return string, string|nil
|
|
local function getItemType(slot)
|
|
if slot == nil then return "", string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return "", err end
|
|
return select(6, GetItemInfo(itemLink)), nil
|
|
end
|
|
---@param slot number
|
|
---@return string, string|nil
|
|
local function getItemSubtype(slot)
|
|
if slot == nil then return "", string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return "", err end
|
|
return select(7, GetItemInfo(itemLink)), nil
|
|
end
|
|
---@param slot number
|
|
---@return number, string|nil
|
|
local function getItemLevel(slot)
|
|
if slot == nil then return 0, string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return 0, err end
|
|
return select(4, GetItemInfo(itemLink)), nil
|
|
end
|
|
|
|
---The vendor price in copper, or 0 for items that cannot be sold
|
|
---@param slot number
|
|
---@return number, string|nil
|
|
local function getItemValue(slot)
|
|
if slot == nil then return 0, string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return 0, err end
|
|
return select(11, GetItemInfo(itemLink)), nil
|
|
end
|
|
---@param slot number
|
|
---@return number, string|nil
|
|
local function getItemSubclassId(slot)
|
|
if slot == nil then return 0, string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return 0, err end
|
|
return select(13, GetItemInfo(itemLink)), nil
|
|
end
|
|
---@param slot number
|
|
---@return number, string|nil
|
|
local function getItemQuantity(slot)
|
|
if slot == nil then return 0, string.format("Slot can not be nil") end
|
|
return select(3, GetLootSlotInfo(slot)), nil
|
|
end
|
|
---@param slot number
|
|
---@return Enum.ItemQuality, string|nil
|
|
local function getItemQuality(slot)
|
|
if slot == nil then return 0, string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return 0, err end
|
|
return select(3, GetItemInfo(itemLink)), nil
|
|
end
|
|
---@param slot number
|
|
---@return string, string|nil
|
|
local function getItemEquipLocation(slot)
|
|
if slot == nil then return "", string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return "", err end
|
|
return select(9, GetItemInfo(itemLink)), nil
|
|
end
|
|
---@param slot number
|
|
---@return number, string|nil
|
|
local function getItemIcon(slot)
|
|
if slot == nil then return 134400, string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return 134400, err end
|
|
return select(10, GetItemInfo(itemLink)), nil
|
|
end
|
|
---@param slot number
|
|
---@return number, string|nil
|
|
local function getBindType(slot)
|
|
if slot == nil then return 0, string.format("Slot can not be nil") end
|
|
local itemLink, err = getItemLink(slot)
|
|
if err then return 0, err end
|
|
return select(14, GetItemInfo(itemLink)), nil
|
|
end
|
|
|
|
---@class Filter
|
|
---@field enabled boolean
|
|
---@field requires table<string, fun(slot: number): string|number|boolean> | nil
|
|
---@field filter fun(slot: number, provided: table<string, string|number|boolean>): boolean
|
|
Filter = {
|
|
---@param enabled boolean
|
|
---@param requires table<string, fun(slot: number): string|number|boolean> | nil
|
|
---@param filter fun(slot: number, provided: table<string, string|number|boolean>): boolean
|
|
---@return Filter
|
|
new = function(enabled, requires, filter)
|
|
local self = setmetatable({}, {
|
|
__index = Filter
|
|
})
|
|
self.enabled = enabled
|
|
self.requires = requires
|
|
self.filter = filter
|
|
return self
|
|
end,
|
|
|
|
---@param self Filter
|
|
---@param slot number
|
|
---@return boolean, string|nil
|
|
Run = function(self, slot)
|
|
---@type table<string, string|number|boolean>
|
|
local provided = {}
|
|
if self.requires then
|
|
for k, v in pairs(self.requires) do
|
|
local res, err = v(slot)
|
|
if err ~= nil then
|
|
if debug then print(err) end
|
|
else
|
|
provided[k] = res
|
|
end
|
|
end
|
|
end
|
|
local res, err = self.filter(slot, provided)
|
|
if err ~= nil then
|
|
if debug then print(err) end
|
|
end
|
|
return res, nil
|
|
end
|
|
}
|
|
|
|
local goldFilter = Filter.new(true,
|
|
{ ["name"] = getItemName },
|
|
function(slot, provided)
|
|
---@cast provided { name: string }
|
|
if string.find(provided.name, "Gold") or
|
|
string.find(provided.name, "Silver") or
|
|
string.find(provided.name, "Copper") then
|
|
if debug then print(string.format("Gold filter pass for %s", provided.name)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Gold filter fail for %s", provided.name)) end
|
|
return false
|
|
end)
|
|
local orderResourcesFilter = Filter.new(true,
|
|
{ ["name"] = getItemName },
|
|
function(slot, provided)
|
|
---@cast provided { name: string }
|
|
if string.find(provided.name, "Order Resources") then
|
|
if debug then print(string.format("Order resource filter pass for %s", provided.name)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Order resource filter fail for %s", provided.name)) end
|
|
return false
|
|
end)
|
|
local mountFilter = Filter.new(true,
|
|
{ ["type"] = getItemType },
|
|
function(slot, provided)
|
|
---@cast provided { type: string }
|
|
if provided.type == "Mount" then
|
|
if debug then print(string.format("Mount filter pass for type %s", provided.type)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Mount filter fail for type %s", provided.type)) end
|
|
return false
|
|
end)
|
|
local ilvlFilter = Filter.new(true,
|
|
{ ["ilvl"] = getItemLevel },
|
|
function(slot, provided)
|
|
---@cast provided { ilvl: number }
|
|
if provided.ilvl and provided.ilvl > 800 then
|
|
if debug then print(string.format("ilvl filter pass for ilvl %d", provided.ilvl)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("ilvl filter fail for ilvl %d", provided.ilvl)) end
|
|
return false
|
|
end)
|
|
local professionFilter = Filter.new(true,
|
|
{
|
|
["type"] = getItemType,
|
|
["subtype"] = getItemSubtype
|
|
},
|
|
function(slot, provided)
|
|
---@cast provided { type: string, subtype: string }
|
|
|
|
local enabled = {
|
|
["Herb"] = true,
|
|
["Leather"] = true,
|
|
["Cloth"] = true,
|
|
["Ore"] = false,
|
|
["Cooking"] = true,
|
|
["Inscription"] = true,
|
|
["Enchanting"] = true,
|
|
}
|
|
|
|
if provided.type == "Tradeskill" then
|
|
if enabled[provided.subtype] then
|
|
if debug then print(string.format("Profession filter pass for type %s", provided.type)) end
|
|
return true
|
|
end
|
|
end
|
|
if debug then print(string.format("Profession filter fail for type %s", provided.type)) end
|
|
return false
|
|
end)
|
|
local valueFilter = Filter.new(true,
|
|
{
|
|
["value"] = getItemValue,
|
|
["quantity"] = getItemQuality
|
|
},
|
|
function(slot, provided)
|
|
---@cast provided { value: number, quantity: number }
|
|
|
|
local valueThreshold = 35 * 100 * 100
|
|
local applyValueTostack = false
|
|
|
|
local value = provided.value
|
|
if applyValueTostack then value = value * provided.quantity end
|
|
|
|
if value > valueThreshold then
|
|
if debug then print(string.format("Value filter pass for value %d", value)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Value filter fail for value %d", value)) end
|
|
return false
|
|
end)
|
|
local greyValueFilter = Filter.new(true,
|
|
{
|
|
["quality"] = getItemQuality,
|
|
["value"] = getItemValue,
|
|
["quantity"] = getItemQuantity
|
|
},
|
|
function(slot, provided)
|
|
---@cast provided { quality: number, value: number, quantity: number }
|
|
|
|
local valueThreshold = 4 * 100 * 100
|
|
local applyValueTostack = false
|
|
|
|
if provided.quality == 0 then
|
|
local value = provided.value
|
|
if applyValueTostack then value = value * provided.quantity end
|
|
|
|
if value > valueThreshold then
|
|
if debug then
|
|
print(string.format("Grey value filter pass for value %d of %s quality items", value,
|
|
provided.quality))
|
|
end
|
|
return true
|
|
end
|
|
end
|
|
if debug then
|
|
print(string.format("Grey value filter fail for value %d of %s quality items", provided.value,
|
|
provided.quality))
|
|
end
|
|
return false
|
|
end)
|
|
local questItemFilter = Filter.new(true,
|
|
{
|
|
["type"] = getItemType,
|
|
["subtype"] = getItemSubtype
|
|
},
|
|
function(slot, provided)
|
|
---@cast provided { type: string, subtype: string }
|
|
if provided.type == "Quest" and provided.subtype == "Quest" then
|
|
if debug then
|
|
print(string.format("Quest item filter pass for type %s and subtype", provided.type,
|
|
provided.subtype))
|
|
end
|
|
return true
|
|
end
|
|
if debug then
|
|
print(string.format("Quest item filter fail for type %s and subtype", provided.type,
|
|
provided.subtype))
|
|
end
|
|
return false
|
|
end)
|
|
local classGearFilter = Filter.new(true,
|
|
{
|
|
["ilvl"] = getItemLevel,
|
|
["quality"] = getItemQuality,
|
|
["type"] = getItemType,
|
|
["subtype"] = getItemSubtype,
|
|
["equiploc"] = getItemEquipLocation
|
|
},
|
|
function(slot, provided)
|
|
---@cast provided { ilvl: number, quality: number, type: string, subtype: string, equiploc: string }
|
|
|
|
local ilvlThreshold = 800
|
|
local qualityThreshold = 2
|
|
|
|
local isEquippable = aura_env.skills[select(3, UnitClass("player"))][provided.subtype] == 1
|
|
|
|
if isEquippable and provided.ilvl > ilvlThreshold and provided.quality > qualityThreshold then
|
|
if debug then
|
|
print(string.format("Class gear filter pass for ilvl %d and quality %d", provided.ilvl,
|
|
provided.quality))
|
|
end
|
|
return true
|
|
end
|
|
if debug then
|
|
print(string.format("Class gear filter fail for ilvl %d and quality %d", provided.ilvl,
|
|
provided.quality))
|
|
end
|
|
return false
|
|
end)
|
|
local arguniteFilter = Filter.new(true,
|
|
{
|
|
["name"] = getItemName,
|
|
["quality"] = getItemQuality
|
|
},
|
|
function(slot, provided)
|
|
---@cast provided { name: string, quality: number }
|
|
if string.find(provided.name, "Argunite") and provided.quality > 1 then
|
|
if debug then
|
|
print(string.format("Argunite filter pass for %s and quality %d", provided.name,
|
|
provided.quality))
|
|
end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Argunite filter fail for %s and quality %d", provided.name, provided.quality)) end
|
|
return false
|
|
end)
|
|
local ancientManaFilter = Filter.new(true,
|
|
{ ["name"] = getItemName },
|
|
function(slot, provided)
|
|
---@cast provided { name: string }
|
|
if string.find(provided.name, "Ancient Mana") then
|
|
if debug then print(string.format("Ancient Mana filter pass for %s", provided.name)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Ancient Mana filter fail for %s", provided.name)) end
|
|
return false
|
|
end)
|
|
local reicpeFilter = Filter.new(false,
|
|
{ ["name"] = getItemName },
|
|
function(slot, provided)
|
|
---@cast provided { name: string }
|
|
if string.find(provided.name, "Recipe") or string.find(provided.name, "Technique") then
|
|
if debug then print(string.format("Recipe filter pass for %s", provided.name)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Recipe filter fail for %s", provided.name)) end
|
|
return false
|
|
end)
|
|
local bloodOfSargerasFilter = Filter.new(true,
|
|
{ ["name"] = getItemName },
|
|
function(slot, provided)
|
|
---@cast provided { name: string }
|
|
if provided.name == "Blood of Sargeras" then
|
|
if debug then print(string.format("Blood of Sargeras filter pass for %s", provided.name)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Blood of Sargeras filter fail for %s", provided.name)) end
|
|
return false
|
|
end)
|
|
local bloodhunerQuarryFilter = Filter.new(true,
|
|
{ ["name"] = getItemName },
|
|
function(slot, provided)
|
|
---@cast provided { name: string }
|
|
if provided.name == "Bloodhunter's Quarry" then
|
|
if debug then print(string.format("Bloodhunter's Quarry filter pass for %s", provided.name)) end
|
|
return true
|
|
end
|
|
if debug then print(string.format("Bloodhunter's Quarry filter fail for %s", provided.name)) end
|
|
return false
|
|
end)
|
|
local boeFilter = Filter.new(true,
|
|
{
|
|
["ilvl"] = getItemLevel,
|
|
["type"] = getItemType,
|
|
["quality"] = getItemQuality,
|
|
["equiploc"] = getItemEquipLocation,
|
|
["bindtype"] = getBindType
|
|
},
|
|
function(slot, provided)
|
|
---@cast provided { ilvl: number, type: string, quality: number, equiploc: string, bindtype: number }
|
|
|
|
local ilvlThreshold = 800
|
|
local qualityThreshold = 1
|
|
|
|
local itemType = provided.type
|
|
local itemEquipLoc = provided.equiploc
|
|
if (itemType == "Armor"
|
|
or itemType == "Weapon"
|
|
or itemEquipLoc == "INVTYPE_FINGER"
|
|
or itemEquipLoc == "INVTYPE_TRINKET"
|
|
or itemEquipLoc == "INVTYPE_CLOAK"
|
|
or itemEquipLoc == "INVTYPE_NECK") then
|
|
local itemLevel = provided.ilvl
|
|
local itemQuality = provided.quality
|
|
local bindType = provided.bindtype
|
|
|
|
if itemLevel > ilvlThreshold and itemQuality > qualityThreshold and bindType == 1 then
|
|
if debug then print(string.format("BoE filter pass for ilvl %d and quality %d", itemLevel, itemQuality)) end
|
|
return true
|
|
end
|
|
end
|
|
if debug then print(string.format("BoE filter fail for ilvl %d and quality %d", provided.ilvl, provided.quality)) end
|
|
return false
|
|
end)
|
|
local artifactPowerFilter = Filter.new(true, {
|
|
["type"] = getItemType,
|
|
["subtype"] = getItemSubtype,
|
|
["subclassid"] = getItemSubclassId,
|
|
["value"] = getItemValue
|
|
}, function(slot, provided)
|
|
---@cast provided { type: string, subtype: string, subclassid: number, value: number }
|
|
if provided.value == 0 and provided.type == "Consumable" and provided.subtype == "Other" and provided.subclassid == 8 then
|
|
if debug then
|
|
print(string.format("Artifact power filter pass for type %s and subtype %s and subclassid %d with value %d",
|
|
provided.type, provided.subtype, provided.subclassid, provided.value))
|
|
end
|
|
return true
|
|
end
|
|
if debug then
|
|
print(string.format("Artifact power filter fail for type %s and subtype %s and subclassid %d with value %d",
|
|
provided.type, provided.subtype, provided.subclassid, provided.value))
|
|
end
|
|
return false
|
|
end)
|
|
|
|
-- [09:19 AM] Dump: value=GetItemInfo("Elemental Pebbles")
|
|
-- [09:19 AM] [1]="Elemental Pebbles",
|
|
-- [09:19 AM] [2]="|cff9d9d9d|Hitem:132217::::::::110:72::::::|h[Elemental Pebbles]|h|r",
|
|
-- [09:19 AM] [3]=0,
|
|
-- [09:19 AM] [4]=100,
|
|
-- [09:19 AM] [5]=1,
|
|
-- [09:19 AM] [6]="Consumable",
|
|
-- [09:19 AM] [7]="Other",
|
|
-- [09:19 AM] [8]=20,
|
|
-- [09:19 AM] [9]="",
|
|
-- [09:19 AM] [10]=135234,
|
|
-- [09:19 AM] [11]=27075,
|
|
-- [09:19 AM] [12]=0,
|
|
-- [09:19 AM] [13]=8,
|
|
-- [09:19 AM] [14]=0,
|
|
-- [09:19 AM] [15]=0,
|
|
-- [09:19 AM] [17]=false
|
|
|
|
GetItemInfo("Brief History of the Ages")
|
|
|
|
-- [09:19 AM] Dump: value=GetItemInfo("Brief History of the Ages")
|
|
-- [09:19 AM] [1]="Brief History of the Ages",
|
|
-- [09:19 AM] [2]="|cffa335ee|Hitem:138782::::::::110:72::::::|h[Brief History of the Ages]|h|r",
|
|
-- [09:19 AM] [3]=4,
|
|
-- [09:19 AM] [4]=110,
|
|
-- [09:19 AM] [5]=0,
|
|
-- [09:19 AM] [6]="Consumable",
|
|
-- [09:19 AM] [7]="Other",
|
|
-- [09:19 AM] [8]=200,
|
|
-- [09:19 AM] [9]="",
|
|
-- [09:19 AM] [10]=134946,
|
|
-- [09:19 AM] [11]=0,
|
|
-- [09:19 AM] [12]=0,
|
|
-- [09:19 AM] [13]=8,
|
|
-- [09:19 AM] [14]=1,
|
|
-- [09:19 AM] [15]=6,
|
|
-- [09:19 AM] [17]=false
|
|
|
|
-- local azeriteFilter = {
|
|
-- enabled = true,
|
|
-- ilvlThreshold = 800,
|
|
-- qualityThreshold = 2,
|
|
-- filter = function(self, slot)
|
|
-- if self.enabled the
|
|
-- local itemType = getItemType(slot)
|
|
-- local itemSubtype = getItemSubtype(slot)
|
|
-- local itemQuality = getItemQuality(slot)
|
|
-- if itemType and itemSubtype and itemQuality and itemType == "Consumable" and itemSubtype == "Other" and itemQuality > 1 the
|
|
-- return true
|
|
-- en
|
|
-- tostring(itemType) .. " " .. tostring(itemSubtype) .. " " .. tostring(itemQuality))
|
|
-- end
|
|
-- end
|
|
-- }
|
|
|
|
|
|
---@type table<Filter>
|
|
local filters = {
|
|
ancientManaFilter,
|
|
arguniteFilter,
|
|
artifactPowerFilter,
|
|
bloodhunerQuarryFilter,
|
|
bloodOfSargerasFilter,
|
|
boeFilter,
|
|
classGearFilter,
|
|
goldFilter,
|
|
greyValueFilter,
|
|
ilvlFilter,
|
|
mountFilter,
|
|
orderResourcesFilter,
|
|
professionFilter,
|
|
questItemFilter,
|
|
reicpeFilter,
|
|
valueFilter,
|
|
}
|
|
|
|
---@class FilterService
|
|
aura_env.FilterService = {
|
|
---@param lootInfo table<number>
|
|
Run = function(lootInfo)
|
|
---@type table<number>
|
|
local slotsToLoot = {}
|
|
for slot, item in pairs(lootInfo) do
|
|
for _, filter in pairs(filters) do
|
|
if filter:Run(slot) then
|
|
slotsToLoot[#slotsToLoot + 1] = slot
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
aura_env.FilterService.doLoot(slotsToLoot)
|
|
end,
|
|
|
|
---@param slots table<number>
|
|
---@return nil
|
|
doLoot = function(slots)
|
|
for i = #slots, 1, -1 do
|
|
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
|
|
}
|
|
|
|
aura_env.skills = {
|
|
--Warrior
|
|
[1] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 0,
|
|
["Mail"] = 0,
|
|
["Plate"] = 1,
|
|
["Shields"] = 1,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 1,
|
|
["Bows"] = 1,
|
|
["Guns"] = 1,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 1,
|
|
["Polearms"] = 1,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 1,
|
|
["Warglaives"] = 1,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 1,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 1,
|
|
["Wands"] = 0,
|
|
},
|
|
--Paladin
|
|
[2] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 0,
|
|
["Mail"] = 0,
|
|
["Plate"] = 1,
|
|
["Shields"] = 1,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 1,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 1,
|
|
["Polearms"] = 1,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 1,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 0,
|
|
["Fist Weapons"] = 0,
|
|
["Daggers"] = 0,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 0,
|
|
},
|
|
--Hunter
|
|
[3] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 0,
|
|
["Mail"] = 1,
|
|
["Plate"] = 0,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 1,
|
|
["Bows"] = 1,
|
|
["Guns"] = 1,
|
|
["One-Handed Maces"] = 0,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 1,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 1,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 1,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 1,
|
|
["Wands"] = 0,
|
|
},
|
|
--Rogue
|
|
[4] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 1,
|
|
["Mail"] = 0,
|
|
["Plate"] = 0,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 0,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 0,
|
|
["Fist Weapons"] = 1,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 0,
|
|
},
|
|
--Priest
|
|
[5] = {
|
|
--Armor Skills
|
|
["Cloth"] = 1,
|
|
["Leather"] = 0,
|
|
["Mail"] = 0,
|
|
["Plate"] = 0,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 0,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 0,
|
|
["One-Handed Swords"] = 0,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 0,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 1,
|
|
},
|
|
--Death Knight
|
|
[6] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 0,
|
|
["Mail"] = 0,
|
|
["Plate"] = 1,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 1,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 1,
|
|
["Polearms"] = 1,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 1,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 0,
|
|
["Fist Weapons"] = 0,
|
|
["Daggers"] = 0,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 0,
|
|
},
|
|
--Shaman
|
|
[7] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 0,
|
|
["Mail"] = 1,
|
|
["Plate"] = 0,
|
|
["Shields"] = 1,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 0,
|
|
["One-Handed Swords"] = 0,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 1,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 0,
|
|
},
|
|
--Mage
|
|
[8] = {
|
|
--Armor Skills
|
|
["Cloth"] = 1,
|
|
["Leather"] = 0,
|
|
["Mail"] = 0,
|
|
["Plate"] = 0,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 0,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 0,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 0,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 0,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 1,
|
|
},
|
|
--Warlock
|
|
[9] = {
|
|
--Armor Skills
|
|
["Cloth"] = 1,
|
|
["Leather"] = 0,
|
|
["Mail"] = 0,
|
|
["Plate"] = 0,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 0,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 0,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 0,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 0,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 1,
|
|
},
|
|
--Monk
|
|
[10] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 1,
|
|
["Mail"] = 0,
|
|
["Plate"] = 1,
|
|
["Shields"] = 1,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 1,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 1,
|
|
["Daggers"] = 0,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 0,
|
|
},
|
|
--Druid
|
|
[11] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 1,
|
|
["Mail"] = 0,
|
|
["Plate"] = 0,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 0,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 1,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 1,
|
|
["One-Handed Swords"] = 0,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 0,
|
|
["Staves"] = 1,
|
|
["Fist Weapons"] = 1,
|
|
["Daggers"] = 1,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 0,
|
|
},
|
|
--Demon Hunter
|
|
[12] = {
|
|
--Armor Skills
|
|
["Cloth"] = 0,
|
|
["Leather"] = 1,
|
|
["Mail"] = 0,
|
|
["Plate"] = 0,
|
|
["Shields"] = 0,
|
|
--Weapon Skills
|
|
["One-Handed Axes"] = 1,
|
|
["Two-Handed Axes"] = 0,
|
|
["Bows"] = 0,
|
|
["Guns"] = 0,
|
|
["One-Handed Maces"] = 0,
|
|
["Two-Handed Maces"] = 0,
|
|
["Polearms"] = 0,
|
|
["One-Handed Swords"] = 1,
|
|
["Two-Handed Swords"] = 0,
|
|
["Warglaives"] = 1,
|
|
["Staves"] = 0,
|
|
["Fist Weapons"] = 1,
|
|
["Daggers"] = 0,
|
|
["Crossbows"] = 0,
|
|
["Wands"] = 0,
|
|
},
|
|
}
|
|
aura_env.qualityColors = {
|
|
"\124cff9d9d9d", -- Poor
|
|
"\124cffffffff", -- Common
|
|
"\124cff1eff00", -- Uncommon
|
|
"\124cff0070dd", -- Rare
|
|
"\124cffa335ee", -- Epic
|
|
"\124cffff8000", -- Legendary
|
|
"\124cffe6cc80", -- Artifact
|
|
"\124cff00ccff", -- Heirloom
|
|
}
|