Module:Minion/Templates

local string, table = require('Module:String'), require('Module:Table') local minionData = mw.loadData('Module:Minion/Data')

local function to(a, b)	local arrow = '➜' return ('%s%s%s'):format(a, arrow, b) end

local function slots local ret = {} table.each(table.keys(minionData), function(name)		local stats = minionData[name].stats		local description = 		table.merge(description, table.deepCopy(minionData[name].abilities or {}, true))		local max = table.length(stats)		local max_ = string._toRoman(max)		for i, v in ipairs(stats) do			local desc = table.concat(table.map(description, function (d)				if (i >= d.req) then return d[1] end			end), '//')			if (v.tba and v.storage) then				table.push(ret, { name, string._toRoman(i), desc, v.tba, v.storage, id = '{o} Minion {0}' })			end		end		local f, l = stats[1], stats[max]		if (f.tba and f.storage and l.tba and l.storage) then			local desc = table.concat(table.map(description, function (d)				return d[1]			end), '//')			table.push(ret, { name, to('I', max_), desc, to(f.tba, l.tba), to(f.storage, l.storage), id = '{o} Minion', name = '{o} Minion', image = '{o} Minion ' .. max_ })		end	end) return ret end

local function recipes local ret = {} table.each(table.keys(minionData), function(name)		local stats = minionData[name].stats		for i, v in ipairs(stats) do			local c = v.crafting			if c then				local this = ('%s Minion %s'):format(name, string._toRoman(i))				local item = ('%s,%s'):format(c.item, c.num)				local base = c.base or ('%s Minion %s'):format(name, string._toRoman(i - 1))				table.push(ret, { this, item, base, c.B3 or item })			end		end	end) return ret end

return { slots = slots, recipes = recipes, }