Module:EnchantmentList
Jump to navigation
Jump to search
local p = {} local data_module_names = { item = 'Module:Items/data', enchantment = 'Module:Enchantment/data', craftaug = 'Module:CraftingAugmenting/data', } local loaded_data_modules = {} function p.loadData(data_type) local module_name = data_module_names[data_type] if loaded_data_modules[module_name] == nil then loaded_data_modules[module_name] = mw.loadData(module_name) end return loaded_data_modules[module_name] end local function getItem(id) return p.loadData("item")[tostring(id)] end local function getEnchantment(id) return p.loadData("enchantment")[tostring(id)] end local function getCraftAug(id) return p.loadData("craftaug")[tostring(id)] end local function fullUrl(url) local newUrl = url if url:sub(1,5) == "https" then return newUrl end if url:sub(1,1) ~= "/" then newUrl = "/" .. newUrl end newUrl = "https://www.play.idlescape.com" .. newUrl return newUrl end local function icon(name, url, word) local s = fullUrl(url) s = "[[" .. name .. "|<img src=\"" .. s s = s .. "\" alt=\"" .. name .. "\" width=\"20\">" if word then s = s .. name end s = s .. "]]" return s end local function addSeparator(num) return tostring(tonumber(num)):reverse():gsub("(%d%d%d)","%1,"):gsub(",(%-?)$","%1"):reverse() end local function contains (tab, val) for index, value in ipairs(tab) do if value == val then return true end end return false end local function createRow(item) local s = "" s = s .. "<tr>" s = s .. "<td>" -- Image and Name s = s .. icon(item.name, item.itemImage, 1) s = s .. "</td>" s = s .. "<td>" -- Slot if item.categories then for index, val in pairs(item.categories) do s = s .. val .. ", " end s = s:sub(1, -3) end s = s .. "</td>" s = s .. "<td>" -- Level if item.level then s = s .. item.level end s = s .. "</td>" s = s .. "<td>" -- Silver Amount local craft = getCraftAug(item.id) if craft and craft.scrollcrafting and craft.scrollcrafting["111"] then s = s .. craft.scrollcrafting["111"] end s = s .. "</td>" s = s .. "<td>" -- Rune Amount if craft and craft.scrollcrafting then local skip = false for index, val in pairs(craft.scrollcrafting) do if skip == false and index >= "510" and index <= "519" then s = s .. val skip = true end end end s = s .. "</td>" s = s .. "<td>" -- Rune Type if craft and craft.scrollcrafting then local remove = false for index, val in pairs(craft.scrollcrafting) do if index >= "510" and index <= "519" then local ing = getItem(index) s = s .. ing.name s = s:sub(1, -6) .. ", " remove = true end end if remove then s = s:sub(1, -3) end end s = s .. "</td>" s = s .. "<td>" if item.enchantmentID then local enchant = getEnchantment(item.enchantmentID) s = s .. enchant.desc end s = s .. "</td>" s = s .. "</tr>" return s end local function createTable(slot, skill) local s = "" s = s .. "<table class=\"wikitable sortable hover-highlight jqery-tablesorter mw-collapsible -mw-made-collapsible\">" s = s .. "<tr>" s = s .. "<th class=\"headerSort\">" s = s .. "<img src=\"https://play.idlescape.com/images/enchanting/enchanted_scroll.png\" alt=\"Scrollcrafting\" width=\"40px\" height=\"40px\">" s = s .. "Scroll" s = s .. "</th>" s = s .. "<th class=\"headerSort\">" s = s .. "Slot" s = s .. "</th>" s = s .. "<th class=\"headerSort\">" s = s .. "Level" s = s .. "</th>" s = s .. "<th class=\"headerSort\">" s = s .. "Silver Amount" s = s .. "</th>" s = s .. "<th class=\"headerSort\">" s = s .. "Rune Amount" s = s .. "</th>" s = s .. "<th class=\"headerSort\">" s = s .. "Runes" s = s .. "</th>" s = s .. "<th class=\"headerSort\">" s = s .. "Effect per scroll" s = s .. "</th>" s = s .. "</tr>" for key, item in pairs(p.loadData('item')) do if item.class == "enchanted-scroll" then if slot and item.categories then if contains(item.categories, slot) then if (item.name ~= "Scroll of the Soul Wisdom") then s = s .. createRow(item) end end elseif skill and item.tags then if contains(item.tags, skill) then s = s .. createRow(item) end end end end s = s .. "</table>" return s end function p.list(frame) local args = frame:getParent().args return p._list(args) end function p._list(args) local slot local skill if args.slot then slot = args.slot elseif args.skill then skill = args.skill else slot = args[1] end return createTable(slot, skill) end return p