Module:Enchantment

local loader = require('Module:Loader') local string, table, yesno = loader.require('String', 'Table', 'Yesno') local enchData = loader.require('Enchantment/Data')

local p = {} local unknownDisplay = '&r&f&l???&r'

--- -- Generates table for Module:Inventory slot/Templates --- function p.getEnchantedBooksTemplate local function toDoubleTable(v) local t = type(v) == 'table' and table.deepCopy(v, true) or {v} t = type(t[1]) == 'table' and t or {t} return t	end local function toTable(v) local t = type(v) == 'table' and table.deepCopy(v, true) or {v} return t	end local ret = { id = 'Enchanted Book ($o)' } for enchname, value in pairs(enchData) do		local g_desc, ultimate = value.desc or unknownDisplay, value.isUltimate local variables, costTbl, rarityTbl = toDoubleTable(value.vars), toTable(value.cost), toTable(value.rarity) for tier = 1, value.max, 1 do			local name, arabicname, link, displayname, warning, cost, requirement, rarity local desc = g_desc name = ('%s %s'):format(enchname, string._toRoman(tier)) arabicname = ('%s %s'):format(enchname, tier) link = ('%sEnchantment#%s'):format(ultimate and 'Ultimate ' or '', mw.uri.anchorEncode(enchname)) displayname = (ultimate and '&d&l' or '&9') .. (name) for i, var in ipairs(variables) do				desc = desc:gsub(('{%d}'):format(i-1), var[tier] or unknownDisplay) end desc = desc:gsub('{%d}', unknownDisplay) warning = ultimate and '&cYou can only have 1 Ultimate/Enchantment on an item!//' or '' cost = costTbl[tier] or unknownDisplay requirement = (tonumber(value.req) or 0) > 0 and ('&cRequires Enchanting %d to/apply.//'):format(tonumber(value.req)) or '' rarity = rarityTbl[tier] or 'common' table.push(ret, {name, link, displayname, desc, warning, cost, requirement, r = rarity}) table.push(ret, {arabicname, link, displayname, desc, warning, cost, requirement, r = rarity}) end end return ret end

return p