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 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 = toTable(value.vars), toTable(value.cost), toTable(value.rarity) for tier = 1, value.max, 1 do			local name, namestyl, warning, cost, requirement, rarity local desc = g_desc name = ('%s %s'):format(enchname, string._toRoman(tier)) arabicname = ('%s %s'):format(enchname, tier) displayname = (ultimate and '&7&l' or '&9') .. (name) for i, var in ipairs(variables) do				desc = g_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, mw.uri.anchorEncode(enchname), displayname, desc, warning, cost, requirement, r = rarity}) table.push(ret, {arabicname, mw.uri.anchorEncode(enchname), displayname, desc, warning, cost, requirement, r = rarity}) end end return ret end

return p