local p = {}
local getArgs = require('Module:Arguments').getArgs
function p._main(args, frame)
local name = args[1] or args.name or "欧皇"
local level = tonumber(args[2] or args.level or 1)
local rank = args.rank
local off = args.off
local link = args.link
local color = args.color
level = math.max(1, math.min(40, math.floor(level)))
local bgColor, borderColor, fontColor
if level >= 1 and level <= 4 then
bgColor = "RGB(92,150,142)"
elseif level >= 5 and level <= 8 then
bgColor = "RGB(93,123,158)"
elseif level >= 9 and level <= 12 then
bgColor = "RGB(141,124,166)"
elseif level >= 13 and level <= 16 then
bgColor = "RGB(190,102,134)"
elseif level >= 17 and level <= 20 then
bgColor = "RGB(199,157,36)"
elseif level >= 21 and level <= 24 then
bgColor = "linear-gradient(45deg, rgb(26, 84, 75), rgb(82, 157, 146))"
borderColor = "rgb(103, 232, 255)"
fontColor = "rgb(65, 73, 104)"
elseif level >= 25 and level <= 28 then
bgColor = "linear-gradient(45deg, rgb(6, 21, 76), rgb(104, 136, 241))"
borderColor = "rgb(103, 232, 255)"
fontColor = "rgb(65, 73, 104)"
elseif level >= 29 and level <= 32 then
bgColor = "linear-gradient(45deg, rgb(45, 8, 85), rgb(157, 155, 255))"
borderColor = "rgb(255, 232, 84)"
fontColor = "rgb(45, 8, 85)"
elseif level >= 33 and level <= 36 then
bgColor = "linear-gradient(45deg, rgb(122, 4, 35), rgb(233, 134, 187))"
borderColor = "rgb(255, 130, 199)"
fontColor = "rgb(184, 76, 119)"
elseif level >= 37 and level <= 40 then
bgColor = "linear-gradient(45deg, rgb(255, 107, 21), rgb(253, 205, 150))"
borderColor = "rgb(253, 228, 101)"
fontColor = "rgb(253, 137, 26)"
else
bgColor = "RGB(92,150,142)"
end
if rank == "舰长" then
borderColor = "rgb(103, 232, 255)"
elseif rank == "提督" or rank == "总督" then
borderColor = "rgb(255, 232, 84)"
end
if off then
bgColor = "rgb(192, 192, 192)"
fontColor = "rgb(192, 192, 192)"
end
if color then
bgColor = color
end
if not borderColor then
borderColor = bgColor
end
if not fontColor then
fontColor = bgColor
end
local medalGuard = rank and "medal-guard" or ""
local medalDeco = ""
if rank then
local fileTitle = "File:粉丝勋章 " .. rank .. ".png"
medalDeco = frame:preprocess('{{#img:|class=medal-deco|src={{filepath:' .. fileTitle .. '}}}}')
end
local outerSpan = string.format(
'<span class="fans-medal-item %s" style="border-color: %s;">',
medalGuard, borderColor
)
local innerSpan = string.format(
'<span class="fans-medal-label %s" style="background: %s;">',
medalGuard, bgColor
)
if medalDeco ~= "" then
innerSpan = innerSpan .. '<span>' .. medalDeco .. '</span>'
end
innerSpan = innerSpan .. string.format(
'<span class="fans-medal-content">-%s-</span></span>',
name
)
local levelSpan = string.format(
'<span class="fans-medal-level" style="color: %s;">%d</span>',
fontColor, level
)
local result
if link then
result = string.format(
'%s[[%s|%s%s]]</span>',
outerSpan, link, innerSpan, levelSpan
)
else
result = string.format(
'%s%s%s</span>',
outerSpan, innerSpan, levelSpan
)
end
return result
end
function p.main(frame)
local args = getArgs(frame, {
parentFirst = true,
})
return p._main(args, frame)
end
return p