Module:SkillCost

local p = {} local cargo = mw.ext.cargo local HeroUtil = require 'Module:HeroUtil' local List = require 'Module:ListUtil' local getArgs = require 'Module:Arguments'.getArgs local escq = require 'Module:EscQ'.main1

-- Looks at all the heroes passed in and checks their rarity and skill rarity unlock. function p._determineCost(skill, scategory) if scategory == 'weapon' then local queryResult = cargo.query('WeaponEvolutions', 'BaseWeapon', {			where = ("EvolvesInto='%s'"):format(escq(skill)),			groupBy = 'BaseWeapon',			limit = 10,		}) local preEvolved = queryResult[1] and queryResult[1].BaseWeapon or '' skill = preEvolved ~= '' and preEvolved or skill end

local heroesWithSkill = cargo.query(		'Units,UnitSkills',		'Units._pageName=page,IFNULL(defaultRarity,6)=default,IFNULL(unlockRarity,6)=unlock', {			where = ("skill='%s' AND IFNULL(Properties__full,) NOT LIKE '%%story%%' AND IFNULL(Properties__full,) NOT LIKE '%%enemy%%'"):format(escq(skill)),			join = 'Units.WikiName=UnitSkills.WikiName',			groupBy = 'Units._pageName',			limit = 1000,		}) local avail = HeroUtil.getLowestRarities {current = true} for _, v in ipairs(heroesWithSkill) do		v.minRarity = avail[v.page] and avail[v.page]:bounds or 6 v.unlock = math.min(tonumber(v.default), tonumber(v.unlock)) end

-- Skills all available at lower rarities = Low Investment if List.any(heroesWithSkill, function (v) return v.minRarity <= 4 and v.unlock <= 4 end) then return 'medium' end -- Skills only available at 5* Only Rarity Unlock = Medium Investment if List.any(heroesWithSkill, function (v) return v.minRarity <= 4 and v.unlock <= 5 end) then return 'high' end -- Skills only available at 5* Only Rarity = High Investment if List.any(heroesWithSkill, function (v) return v.minRarity <= 5 and v.unlock <= 5 end) then return 'veryhigh' end return 'N/A' end

function p.determineCost(frame) local args = getArgs(frame) return p._determineCost(args[1], args[2]) end

return p