Files
wow-weakauras/Complete Projects/Legion/Autoloot.lua

699 lines
26 KiB
Lua

--LOOT_READY MERCHANT_SHOW QUEST_POI_UPDATE QUEST_DETAIL QUEST_COMPLETE QUEST_GREETING QUEST_PROGRESS GOSSIP_SHOW SCRAPPING_MACHINE_SHOW MERCHANT_CLOSED EQUIP_BIND_CONFIRM
function(e)
local aura_env = aura_env
if e == "LOOT_READY" then --Auto Loot
local slot = 1
local lootinfo = GetLootInfo()
for k, v in pairs(lootinfo) do
if v.locked == false then
local link = GetLootSlotLink(slot)
local looted = false
if not link then link = GetLootSlotLink(slot) end
if aura_env.filter[1] == true and (v.item:match("%d+ Gold") or v.item:match("%d+ Silver") or v.item:match("%d+ Copper")) then
LootSlot(slot)
if aura_env.debug == true then
print("loot 1 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[2] == true and link:match("Azerite") then
LootSlot(slot)
if aura_env.debug == true then
print("loot 2 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[3] == true and v.item:match("War Resources") then
LootSlot(slot)
if aura_env.debug == true then
print("loot 3 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[4] == true and v.item:match("Residuum") then
LootSlot(slot)
if aura_env.debug == true then
print("loot 4 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[5] == true and v.item:match("Manapearl") then
LootSlot(slot)
if aura_env.debug == true then
print("loot 5 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
end
if link then
local icon = v.texture
local id = link:match("item:(%d+):")
if not WeakAurasSaved.CustomTrash.IconDatabase[v.item] and v.item and icon then
WeakAurasSaved.CustomTrash.IconDatabase[v.item] = icon
print("Adding ", v.item, " to the icon database")
end
if not WeakAurasSaved.CustomTrash.IDDatabase[v.item] and v.item and id then
WeakAurasSaved.CustomTrash.IDDatabase[v.item] = id
print("Adding ", v.item, " to the id database")
end
local type = select(6, GetItemInfo(link)) or ""
local subtype = select(7, GetItemInfo(link)) or ""
local ilvl = select(4, GetItemInfo(link)) or 0
local equip = select(9, GetItemInfo(link))
if aura_env.filter[6] == true and (select(7, GetItemInfo(link)) or 0) == "Mount" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 6 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[7] == true and ilvl > aura_env.ilvlFilter then
LootSlot(slot)
if aura_env.debug == true then
print("loot 7 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[8] == true and (select(7, GetItemInfo(link)) or 0) == "Herb" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 8 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[9] == true and (select(7, GetItemInfo(link)) or 0) == "Cooking" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 9 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[10] == true and (select(7, GetItemInfo(link)) or 0) == "Cloth" and type == "Tradeskill" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 10 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[11] == true and (select(7, GetItemInfo(link)) or 0) == "Metal & Stone" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 11 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[12] == true and (select(11, GetItemInfo(link)) or 0) > aura_env.goldFilter and v.quality == 0 then
LootSlot(slot)
if aura_env.debug == true then
print("loot 12 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[13] == true and v.quality > 1 and v.quality < 4 and type ~= "Weapon" and type ~= "Armor" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 13 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[14] == true and v.isQuestItem == true then
LootSlot(slot)
if aura_env.debug == true then
print("loot 14 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[15] == true and v.quality == 0 then
LootSlot(slot)
if aura_env.debug == true then
print("loot 15 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[16] == true and aura_env.whitelist[v.item] then
LootSlot(slot)
if aura_env.debug == true then
print("loot 16 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[17] == true and type == "Quest" and subtype == "Quest" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 17 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[21] == true and type == "Consumable" and subtype == "Other" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 21 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
else
if type == "Weapon" or type == "Armor" then
if aura_env.filter[18] == true and aura_env.skills[select(3, UnitClass("player"))][subtype] == 1 and v.quality > 2 then
LootSlot(slot)
if aura_env.debug == true then
print("loot 18 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
elseif aura_env.filter[19] == true and (equip == "INVTYPE_FINGER" or equip == "INVTYPE_TRINKET" or equip == "INVTYPE_CLOAK" or equip == "INVTYPE_NECK") and v.quality > 2 then
LootSlot(slot)
if aura_env.debug == true then
print("loot 19 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
end
elseif aura_env.filter[20] == true and type == "Miscellaneous" then
if subtype == "Mount" then
LootSlot(slot)
if aura_env.debug == true then
print("loot 20 ", v.item, type, subtype)
end
if link then
WeakAuras.ScanEvents("ADD_ITEM_SHOW", link, v.quantity)
end
end
end
end
end
slot = slot + 1
end
end
CloseLoot()
elseif e == "EQUIP_BIND_CONFIRM" then
StaticPopup1Button1:Click()
elseif e == "SCRAPPING_MACHINE_SHOW" then
for i = 0, 4 do
for j = 1, GetContainerNumSlots(i) do
local link = select(7, GetContainerItemInfo(i, j))
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 equip = select(9, GetItemInfo(link)) or ""
local price = select(11, GetItemInfo(link))
if aura_env.sellWhitelist[name] ~= 1 then
if name and rarity and ilvl and type and equip and price then
if (type == "Armor" or type == "Weapon") and rarity <= 3 and aura_env.getequipID(equip) then
UseContainerItem(i, j)
elseif rarity > 3 and aura_env.getequipID(equip) then
if equip ~= "INVTYPE_FINGER" then
local eqID = aura_env.getequipID(equip)
local elink = GetInventoryItemLink("player", eqID)
local eilvl = select(4, GetItemInfo(elink)) or 0
if eilvl > ilvl + 5 then
print("Scrapping " .. link .. "over " .. eilvl - ilvl .. " ilvl difference from " .. elink)
UseContainerItem(i, j)
end
elseif equip == "INVTYPE_FINGER" then
local eqID1, eqID2 = 11, 12
local elink1, elink2 = GetInventoryItemLink("player", eqID1), GetInventoryItemLink("player", eqID2)
local eilvl1, eilvl2 = select(4, GetItemInfo(elink1)) or 0, select(4, GetItemInfo(elink2)) or 0
if eilvl1 > ilvl + 5 then
print("Scrapping " .. link .. " over " .. eilvl1 - ilvl .. " ilvl difference from " .. elink1)
UseContainerItem(i, j)
elseif eilvl2 > ilvl + 5 then
print("Scrapping " .. link .. " over " .. eilvl2 - ilvl .. " ilvl difference from " .. elink2)
UseContainerItem(i, j)
end
end
end
end
end
end
end
end
elseif e == "MERCHANT_SHOW" then --Sell grey and white wepaon
if CanMerchantRepair() == true then RepairAllItems() end
local i, j = 0, 1
for c = 0, 4 do
for s = 1, GetContainerNumSlots(c) do
local link = select(7, GetContainerItemInfo(c, s))
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] = {["c"] = c, ["s"] = s}
elseif (type == "Armor" or type == "Weapon") and ilvl < 350 then
aura_env.toSell[#aura_env.toSell + 1] = {["c"] = c, ["s"] = s}
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)
elseif e == "MERCHANT_CLOSED" then
if aura_env.ticker then aura_env.ticker:Cancel() end
aura_env.toSell = {}
elseif e == "QUEST_POI_UPDATE" then
CloseGossip()
elseif e == "QUEST_DETAIL" then
AcceptQuest()
elseif e == "QUEST_COMPLETE" then
if GetNumQuestChoices() <= 1 then
GetQuestReward(1)
end
elseif e == "GOSSIP_SHOW" then
local quests = GetNumGossipAvailableQuests()
local complquests = GetNumGossipActiveQuests()
local opt = GetNumGossipOptions()
if complquests > 0 and opt == 0 then
for i = 1, complquests do
SelectGossipActiveQuest(i)
end
end
if quests > 0 and opt == 0 then
SelectGossipAvailableQuest(1)
end
if opt == 1 and quests + complquests == 0 then
SelectGossipOption(1)
end
elseif e == "QUEST_GREETING" then
local quests = GetNumGossipAvailableQuests()
local complquests = GetNumGossipActiveQuests()
if complquests > 0 then
for i = 1, complquests do
SelectActiveQuest(1)
end
end
if quests > 0 then
SelectAvailableQuest(1)
end
elseif e == "QUEST_PROGRESS" then
if IsQuestCompletable(i) then
CompleteQuest()
end
end
end
--INIT
aura_env.debug = true
aura_env.filter = {
[1] = true, --Gold
[2] = true, --Azerite
[3] = true, --War resources
[4] = true, --Residuum
[5] = true, --Manapearls
[6] = true, --Mounts
[7] = true, --High ilvl
[8] = true, --Herbs
[9] = false, --Cooking
[10] = false, --Cloth
[11] = true, --Metal & Stone
[12] = true, --Gold filter greys
[13] = true, -- >1 && <4 quality items, no gear
[14] = true, --Quest items
[15] = false, --All greys
[16] = true, --Whitelist
[17] = true, --Quest items (different filter)
[18] = true, --Class aproperiate >2 items
[19] = true, --Jewelery >2 quality
[20] = true, --Additional mount filter
[21] = true, --Tradeskill // Elemental
}
aura_env.ilvlFilter = 940
aura_env.goldFilter = 500000
aura_env.whitelist = {
["Pygmy Suckerfish"] = 1,
["Drakkari Offerings"] = 1,
["Deepcoral Pod"] = 1,
["Hardened Spring"] = 1,
["Machined Gear Assembly"] = 1,
["Tempered Plating"] = 1,
["Hefty Glimmershell"] = 1,
["Fresh Meat"] = 1,
["Wood"] = 1,
["Blood of Sargeras"] = 1,
["Primal Sargerite"] = 1,
}
aura_env.sellWhitelist = {
["Blacksmith Hammer"] = 1,
["Endless Tincture of Renewed Combat"] = 1,
["Mr. Munchykins"] = 1,
["Arclight Spanner"] = 1,
["Runeblade of Baron Rivendare"] = 1,
}
aura_env.toSell = {}
aura_env.getequipID = function(equip)
if equip == "INVTYPE_HEAD" then return 1
elseif equip == "INVTYPE_NECK" then return 2
elseif equip == "INVTYPE_SHOULDER" then return 3
elseif equip == "INVTYPE_BODY" then return 4
elseif equip == "INVTYPE_CHEST" or equip == "INVTYPE_ROBE" then return 5
elseif equip == "INVTYPE_WAIST" then return 6
elseif equip == "INVTYPE_LEGS" then return 7
elseif equip == "INVTYPE_FEET" then return 8
elseif equip == "INVTYPE_WRIST" then return 9
elseif equip == "INVTYPE_HAND" then return 10
elseif equip == "INVTYPE_CLOAK" then return 15
elseif equip == "INVTYPE_WEAPON" or equip == "INVTYPE_WEAPONMAINHAND" or equip == "INVTYPE_2HWEAPON" then return 16
elseif equip == "INVTYPE_SHIELD" then return 17
else return nil 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,
},
}