From d91242f99d2e8f89f9e14b6afeeb83b0e4c8b374 Mon Sep 17 00:00:00 2001 From: "M. David" Date: Thu, 18 Aug 2022 23:52:07 +0200 Subject: [PATCH] Fix small issues in loot and vendor --- LegionWA/AutoVendor/Event.lua | 29 ----------------------------- LegionWA/AutoVendor/Init.lua | 32 ++++++++++++++++++++++---------- LegionWA/NewAutoLoot/Init.lua | 2 +- 3 files changed, 23 insertions(+), 40 deletions(-) diff --git a/LegionWA/AutoVendor/Event.lua b/LegionWA/AutoVendor/Event.lua index b253c33..b2c0651 100644 --- a/LegionWA/AutoVendor/Event.lua +++ b/LegionWA/AutoVendor/Event.lua @@ -7,36 +7,7 @@ function(allstates, e) for container = 0, 4 do for slot = 1, GetContainerNumSlots(container) do aura_env.filterService:run(container, slot) - local link = select(7, GetContainerItemInfo(container, slot)) - if link then - local name = GetItemInfo(link) - local rarity = select(3, GetItemInfo(link)) - local ilvl = select(4, GetItemInfo(link)) or 0 - local type = select(6, GetItemInfo(link)) - local price = select(11, GetItemInfo(link)) - if price and price > 0 then - if aura_env.sellWhitelist[name] ~= 1 then - if rarity == 0 then - aura_env.toSell[#aura_env.toSell + 1] = {["container"] = container, ["slot"] = slot} - elseif (type == "Armor" or type == "Weapon") and ilvl < 350 then - aura_env.toSell[#aura_env.toSell + 1] = {["container"] = container, ["slot"] = slot} - end - end - end - end end end - - aura_env.ticker = C_Timer.NewTicker(0.15, function() - if aura_env.toSell[1] then - UseContainerItem(aura_env.toSell[1].c, aura_env.toSell[1].s) - table.remove(aura_env.toSell, 1) - else - aura_env.ticker:Cancel() - end - if j >= GetContainerNumSlots(i) then i = i + 1 - j = 1 end - if i >= 4 then aura_env.ticker:Cancel() end - end) return true end diff --git a/LegionWA/AutoVendor/Init.lua b/LegionWA/AutoVendor/Init.lua index 42ebc7f..d39f339 100644 --- a/LegionWA/AutoVendor/Init.lua +++ b/LegionWA/AutoVendor/Init.lua @@ -1,12 +1,11 @@ -local debug = true +local debug = false local iconDisplayDuration = 3 local function getItemLink(container, slot) - aura_env.debugLog("getItemLink", container, slot) return select(7, GetContainerItemInfo(container, slot)) end local function getItemQuantity(container, slot) - + return select(2, GetContainerItemInfo(container, slot)) end local function getItemName(container, slot) return select(1, GetItemInfo(getItemLink(container, slot))) @@ -60,7 +59,16 @@ local gearFilter = { aura_env.debugLog("Gear filter; container = " .. container .. ", slot = " .. slot) local itemLevel = getItemLevel(container, slot) local itemBindType = getBindType(container, slot) - if (itemLevel and itemBindType and itemLevel < ilvlThreshold and (itemBindType == 1 or self.sellBoe)) then + local itemType = getItemType(container, slot) + local itemEquipLoc = getItemEquipLocation(container, slot) + if (itemType and itemEquipLoc and + (itemType == "Armor" + or itemType == "Weapon" + or itemEquipLoc == "INVTYPE_FINGER" + or itemEquipLoc == "INVTYPE_TRINKET" + or itemEquipLoc == "INVTYPE_CLOAK" + or itemEquipLoc == "INVTYPE_NECK") + and itemLevel and itemBindType and itemLevel < self.ilvlThreshold and (itemBindType == 1 or self.sellBoe)) then aura_env.debugLog("Gear filter pass") return true end @@ -69,13 +77,13 @@ local gearFilter = { } local function doSell(container, slot) - local itemIcon = getItemIcon(slot) - local itemName = getItemName(slot) - local itemQuantity = getItemQuantity(slot) - local itemQuality = getItemQuality(slot) + local itemIcon = getItemIcon(container, slot) + local itemName = getItemName(container, slot) + local itemQuantity = getItemQuantity(container, slot) + local itemQuality = getItemQuality(container, slot) aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) - local nameWithColor = "[" .. aura_env.qualityColors[itemQuality + 1] .. itemName .. "]\124r" + local nameWithColor = aura_env.qualityColors[itemQuality + 1] .. "[" .. itemName .. "]\124r" local nameWithQuantity = nameWithColor .. " x" .. itemQuantity aura_env.debugLog("Assigning name" .. nameWithQuantity) @@ -94,7 +102,7 @@ local function doSell(container, slot) duration = iconDisplayDuration, autoHide = true, } - + UseContainerItem(container, slot) end @@ -107,6 +115,10 @@ aura_env.filterService = { slotsToLoot = {}, run = function(self, container, slot) aura_env.debugLog("Filtering item in container = " .. container .. ", slot = " .. slot .. "...") + if (not getItemLink(container, slot)) then + aura_env.debugLog("Slot empty") + return + end for k, filter in pairs(self.filters) do if (filter:filter(container, slot)) then doSell(container, slot) diff --git a/LegionWA/NewAutoLoot/Init.lua b/LegionWA/NewAutoLoot/Init.lua index a1f7533..439d228 100644 --- a/LegionWA/NewAutoLoot/Init.lua +++ b/LegionWA/NewAutoLoot/Init.lua @@ -46,7 +46,7 @@ local doLoot = function(slot) local itemQuality = getItemQuality(slot) aura_env.debugLog("Drawing icon for " .. itemName .. " with quality " .. itemQuality) - local nameWithColor = "[" .. aura_env.qualityColors[itemQuality + 1] .. itemName .. "]\124r" + local nameWithColor = aura_env.qualityColors[itemQuality + 1] .. "[" .. itemName .. "]\124r" local nameWithQuantity = nameWithColor .. " x" .. itemQuantity aura_env.debugLog("Assigning name" .. nameWithQuantity)