Module:Icons
From Melvor Idle
Documentation for this module may be created at Module:Icons/doc
--You can't generate Templates from within Lua due to the loading order, so instead copying the Icon functionality into a module so it can be pulled elsewhere.
--Should function very similarly to how Template:Icon works
local p = {}
--Extension overrides for items that have non-svg images
local extOverrides = {
["Crown of Rhaelyx"] = "png",
["Jewel of Rhaelyx"] = "png",
["Circlet of Rhaelyx"] = "png",
["Charge Stone of Rhaelyx"] = "png",
["Mysterious Stone"] = "png",
["Aeris Godsword"] = "png",
["Ragnar Godsword"] = "png",
["Terran Godsword"] = "png",
["Glacia Godsword"] = "png",
["Cloudburst Staff"] = "png",
["Earth Layered Shield"] = "png",
}
local Shared= require("Module:Shared")
function p.Icon(frame)
local args = frame.args ~= nil and frame.args or frame
local link = args[1]
local text = args[2]
local type = args.type
local ext = args.ext ~= nil and args.ext or 'svg'
local notext = args.notext ~= nil and args.notext ~= ''
local nolink = args.nolink ~= nil and args.nolink ~= ''
local menu = args.menu ~= nil and args.menu ~= ''
local imgSize = args.size ~= nil and args.size or 25
local qty = args.qty
local img = link
--MANUAL OVERRIDES
if link == 'Melee' then
img = 'Combat'
elseif link == 'Spider (lv. 51)' then
img = 'Spider'
elseif link == 'Spider (lv. 52)' then
img = 'Spider2'
elseif link == 'Spider' then
link = 'Spider (lv. 51)'
elseif link == 'Spider2' then
link = 'Spider (lv. 52)'
end
if extOverrides[img] ~= nil then ext = extOverrides[img] end
local result = '[[File:'..img
if type ~= nil and type ~= '' then result = result..'_('..type..')' end
result = result..'.'..ext..'|'..tostring(imgSize)..'px'
if not (nolink and notext) then result = result..'|link='..link end
result = result..']]'
if qty ~= nil and qty ~= '' then result = result..' '..Shared.formatnum(qty) end
if not notext then
if nolink then
if text ~= nil and text ~= '' then
result = result..' '..text
else
result = result..' '..link
end
else
result = result..' [['..link
if text ~= nil and text ~= '' then
result = result..'|'..text
end
result = result..']]'
end
end
result = '<span style="display:inline-block">'..result..'</span>'
if menu then
result = '{| class="articletable" style="display:inline-block;vertical-align:middle;"\r\n|-\r\n|'..result
result = result..'\r\n|}'
end
return result
end
function p._SkillReq(skill, level)
local result = '[[File:'..skill..'_(skill).svg|25px|link='..skill..']]'
result = result.." '''"..level.."'''"
result = '<span style="display:inline-block">'..result..'</span>'
return result
end
function p.SkillReq(frame)
local args = frame.args ~= nil and frame.args or frame
local skill = args[1]
local level = tonumber(args[2])
return p._SkillReq(skill, level)
end
function p.GP(amt, maxamt)
local result = '[[File:Coins.svg|25px|link=Coins]]'
result = result..' '..Shared.formatnum(amt)
if maxamt ~= nil then result = result..' - '..Shared.formatnum(maxamt) end
result = '<span style="display:inline-block">'..result..'</span>'
return result
end
return p