--- autopass.lua Contains everything related to autopassing -- @author Potdisc -- Create Date : 23/9/2016 --- Never autopass these armor types. -- @table autopassOverride local autopassOverride = { "INVTYPE_CLOAK", } --- Classes that should autopass a subtype. -- @table autopassTable local autopassTable = { ["Cloth"] = {"WARRIOR", "DEATHKNIGHT", "PALADIN", "DRUID", "MONK", "ROGUE", "HUNTER", "SHAMAN", "DEMONHUNTER"}, ["Leather"] = {"WARRIOR", "DEATHKNIGHT", "PALADIN", "HUNTER", "SHAMAN", "PRIEST", "MAGE", "WARLOCK"}, ["Mail"] = {"WARRIOR", "DEATHKNIGHT", "PALADIN", "DRUID", "MONK", "ROGUE", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Plate"] = {"DRUID", "MONK", "ROGUE", "HUNTER", "SHAMAN", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Shields"] = {"DEATHKNIGHT", "DRUID", "MONK", "ROGUE", "HUNTER","PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Bows"] = {"DEATHKNIGHT", "PALADIN", "DRUID", "MONK", "SHAMAN", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Crossbows"] = {"DEATHKNIGHT", "PALADIN", "DRUID", "MONK", "SHAMAN", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Daggers"] = {"WARRIOR", "DEATHKNIGHT", "PALADIN", "DRUID", "MONK", "HUNTER", }, ["Guns"] = {"DEATHKNIGHT", "PALADIN", "DRUID", "MONK","SHAMAN", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Fist Weapons"] = {"DEATHKNIGHT", "PALADIN", "PRIEST", "MAGE", "WARLOCK"}, ["One-Handed Axes"] = {"DRUID", "ROGUE", "PRIEST", "MAGE", "WARLOCK"}, ["One-Handed Maces"] = {"HUNTER", "MAGE", "WARLOCK"}, ["One-Handed Swords"] = {"DRUID", "SHAMAN", "PRIEST",}, ["Polearms"] = {"ROGUE", "SHAMAN", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Staves"] = {"WARRIOR", "DEATHKNIGHT", "PALADIN", "ROGUE", "DEMONHUNTER"}, ["Two-Handed Axes"] = {"DRUID", "ROGUE", "MONK", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Two-Handed Maces"] = {"MONK", "ROGUE", "HUNTER", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Two-Handed Swords"] = {"DRUID", "MONK", "ROGUE", "SHAMAN", "PRIEST", "MAGE", "WARLOCK", "DEMONHUNTER"}, ["Wands"] = {"WARRIOR", "DEATHKNIGHT", "PALADIN", "DRUID", "MONK", "ROGUE", "HUNTER", "SHAMAN", "DEMONHUNTER"}, ["Warglaives"] = {"WARRIOR", "DEATHKNIGHT", "PALADIN", "DRUID", "MONK", "ROGUE", "PRIEST", "MAGE", "WARLOCK", "HUNTER", "SHAMAN",} } --- Types of relics. Thanks to xmyno for the list. -- NOTE I'm not sure if the return from C_ArtifactUI.GetRelicInfoByItemID() is localized -- @table relicTypes local relicTypes = { BLOOD = 'Blood', SHADOW = 'Shadow', IRON = 'Iron', FROST = 'Frost', FIRE = 'Fire', FEL = 'Fel', ARCANE = 'Arcane', LIFE = 'Life', STORM = 'Wind', -- Great job Blizzard -.- HOLY = 'Holy' } --- The type of relic each class can use -- @table relics local relics = { DEATHKNIGHT = {relicTypes.BLOOD, relicTypes.SHADOW,relicTypes.IRON, relicTypes.FROST, relicTypes.FIRE }, DEMONHUNTER = {relicTypes.FEL, relicTypes.SHADOW,relicTypes.IRON, relicTypes.ARCANE}, DRUID = {relicTypes.ARCANE,relicTypes.LIFE, relicTypes.FIRE, relicTypes.BLOOD, relicTypes.FROST}, HUNTER = {relicTypes.STORM, relicTypes.ARCANE,relicTypes.IRON, relicTypes.BLOOD, relicTypes.LIFE}, MAGE = {relicTypes.ARCANE,relicTypes.FROST, relicTypes.FIRE}, MONK = {relicTypes.LIFE, relicTypes.STORM, relicTypes.IRON, relicTypes.FROST}, PALADIN = {relicTypes.HOLY, relicTypes.LIFE, relicTypes.FIRE, relicTypes.IRON, relicTypes.ARCANE}, PRIEST = {relicTypes.HOLY, relicTypes.SHADOW,relicTypes.LIFE, relicTypes.BLOOD}, ROGUE = {relicTypes.SHADOW,relicTypes.IRON, relicTypes.BLOOD, relicTypes.STORM, relicTypes.FEL}, SHAMAN = {relicTypes.STORM, relicTypes.FROST, relicTypes.FIRE, relicTypes.IRON, relicTypes.LIFE}, WARLOCK = {relicTypes.SHADOW,relicTypes.BLOOD, relicTypes.FIRE, relicTypes.FEL}, WARRIOR = {relicTypes.IRON, relicTypes.BLOOD, relicTypes.SHADOW,relicTypes.FIRE, relicTypes.STORM}, } --- Checks if the player should autopass on a given item. -- All params are supplied by the lootTable from the ML. -- @usage -- -- Check if the item in session 1 should be auto passed: -- local dat = lootTable[1] -- Shortening -- local boolean = RCLootCouncil:AutoPassCheck(dat.subType, dat.equipLoc, dat.link, dat.token, dat.relic) --@return true if the player should autopass the given item. function RCLootCouncil:AutoPassCheck(subType, equipLoc, link, isToken, isRelic) print(self.playerClass) if not tContains(autopassOverride, equipLoc) then if isRelic or (equipLoc == "" and subType == self.db.global.localizedSubTypes["Artifact Relic"]) then if isRelic then -- New in v2.3+ self:DebugLog("NewRelicAutopassCheck", link, isRelic) return not tContains(relics[self.playerClass], isRelic) else local id = self:GetItemIDFromLink(link) local type = select(3, C_ArtifactUI.GetRelicInfoByItemID(id)) self:DebugLog("RelicAutopassCheck", type, id) -- If the type exists in the table, then the player can use it, so we need to negate it return not tContains(relics[self.playerClass], type) end elseif subType and autopassTable[self.db.global.localizedSubTypes[subType]] then return tContains(autopassTable[self.db.global.localizedSubTypes[subType]], self.playerClass) end -- The item wasn't a type we check for, but it might be a token local id = type(link) == "number" and link or self:GetItemIDFromLink(link) -- Convert to id if needed if isToken or RCTokenClasses[id] then -- It's a token return not tContains(RCTokenClasses[id], self.playerClass) end end return false end