缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!
该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!
全站通知:
模块:信息框/间歇泉
刷
历
编
< 模块:信息框
跳到导航
跳到搜索
local infobox = require([[Module:信息框]])
local fstr = mw.ustring.format
local utils = require("Module:Utils")
local p = {}
local innerNodes = {
{
tag = 'image',
source = '图片',
children = {
{
tag = 'caption',
source = '图片说明'
}
}
},
{
tag = 'data',
source = 'ID',
label = 'ID'
},
{
tag = 'data',
source = '尺寸',
label = '尺寸'
},
{
tag = 'data',
source = '装饰',
label = '[[File:图标_装饰.png|16px|link=]] 装饰'
},
{
tag = 'data',
source = '最大压力',
label = '最大压力'
},
{
tag = 'data',
source = '产物描述',
label = '产物'
},
{
tag = 'group',
header = '调谐',
attr = {collapse = 'open'},
children = {
{
tag = 'data',
source = '调谐消耗',
label = '消耗'
},
{
tag = 'data',
source = '调谐效果',
label = '效果'
},
}
},
{
tag = 'group',
header = '<abbr title = "98% 的此类间歇泉产率在下列范围内">产量计算</abbr>',
attr = {collapse = 'open'},
children = {
{
tag = 'data',
source = '喷发期产率',
label = '<abbr title = "一个喷发期的产率区间">喷发期产率</abbr>'
},
{
tag = 'data',
source = '活跃期产率',
label = '<abbr title = "一个活跃期的产率区间">活跃期产率</abbr>'
},
{
tag = 'data',
source = '全周期产率',
label = '<abbr title = "一个完整活跃周期(包括活跃期和休眠期)的产率区间">全周期产率</abbr>'
},
{
tag = 'data',
source = '喷发期产量',
label = '<abbr title = "一个喷发期的总产量">喷发期产量</abbr>'
},
{
tag = 'data',
source = '活跃期产量',
label = '<abbr title = "一个活跃期的总产量">活跃期产量</abbr>'
},
}
},
{
tag = 'group',
header = '间歇泉参数配置',
attr = {collapse = 'closed'},
children = {
{
tag = 'data',
source = '间歇泉类型ID',
label = '间歇泉类型ID'
},
{
tag = 'data',
source = '活跃期平均产率',
label = '<abbr title = "活跃期(包括多个喷发周期)的平均产率范围">活跃期平均产率</abbr>'
},
{
tag = 'data',
source = '喷发周期时长',
label = '<abbr title = "一个完整的喷发周期(包括喷发期和闲置)的时长">喷发周期时长</abbr>'
},
{
tag = 'data',
source = '喷发期占比',
label = '<abbr title = "表示喷发期占整个喷发周期的百分比">喷发期占比</abbr>'
},
{
tag = 'data',
source = '活跃周期时长',
label = '<abbr title = "一个完整的活跃周期(包括活跃期和休眠期)的时长">活跃周期时长</abbr>'
},
{
tag = 'data',
source = '活跃期占比',
label = '<abbr title = "表示活跃期占整个活跃周期的百分比">活跃期占比</abbr>'
},
}
},
{
tag = 'group',
header = '构成',
attr = {collapse = 'closed'},
children = {
{
tag = 'data',
source = '元素',
label = '主要元素'
},
{
tag = 'data',
source = '质量',
label = '质量'
},
{
tag = 'data',
source = '初始温度',
label = '初始温度'
}
}
},
}
-- test: = p.infoboxContent{['活跃周期时长'] = 3200, ['喷发期产率'] = 5}
function p.infoboxContent(args)
args['尺寸'] = "宽 " .. tostring(args['宽度']) .. " 高 " .. tostring(args['高度'])
args['产物描述'] = (args['产物温度'] and fstr("%s 的", args['产物温度']) or "") .. (args['产物'] or "")
.. (args['病菌数量'] and args['病菌类型'] and fstr("\n(含 %s 个%s)", args['病菌数量'], args['病菌类型']) or "")
args['调谐效果'] = (args['产量加成'] and fstr("* 产量:%s\n", args['产量加成']) or "") ..
(args['产物温度加成'] and fstr("* 产物温度:%s\n", args['产物温度加成']) or "") ..
(args['调谐持续时间'] and fstr("* <abbr title = '只计喷发时间'>持续时间</abbr>:%s", args['调谐持续时间']) or "")
if args['装饰值'] ~= nil and args['装饰半径'] ~= nil then
args['装饰'] = fstr("%s(范围:%s 格)", tostring(args['装饰值']), tostring(args['装饰半径']))
end
if args['活跃期最小平均产率'] ~= nil and args['活跃期最大平均产率'] ~= nil then
args['活跃期平均产率'] = fstr("%s ~ %s 千克/周期 ", utils.float2str(args['活跃期最小平均产率']),
utils.float2str(args['活跃期最大平均产率']))
end
if args['最小喷发周期'] ~= nil and args['最大喷发周期'] ~= nil then
args['喷发周期时长'] = fstr("%s ~ %s 秒 ", utils.float2str(args['最小喷发周期']),
utils.float2str(args['最大喷发周期']))
end
if args['喷发期最小占比'] ~= nil and args['喷发期最大占比'] ~= nil then
args['喷发期占比'] = fstr("%s%% ~ %s%% ", utils.float2str(args['喷发期最小占比'] * 100),
utils.float2str(args['喷发期最大占比'] * 100))
end
if args['最小活跃周期'] ~= nil and args['最大活跃周期'] ~= nil then
args['活跃周期时长'] = fstr("%s ~ %s 周期 ", utils.float2str(args['最小活跃周期'] / 600),
utils.float2str(args['最大活跃周期'] / 600))
end
if args['活跃期最小占比'] ~= nil and args['活跃期最大占比'] ~= nil then
args['活跃期占比'] = fstr("%s%% ~ %s%% ", utils.float2str(args['活跃期最小占比'] * 100),
utils.float2str(args['活跃期最大占比'] * 100))
end
if args['喷发期最小产率'] ~= nil and args['喷发期最大产率'] ~= nil then
args['喷发期产率'] = fstr("%s ~ %s 千克/秒 ", utils.float2str(args['喷发期最小产率'], 2),
utils.float2str(args['喷发期最大产率'], 2))
end
if args['活跃期最小产率'] ~= nil and args['活跃期最大产率'] ~= nil then
args['活跃期产率'] = fstr("%s ~ %s 千克/秒 ", utils.float2str(args['活跃期最小产率'], 2),
utils.float2str(args['活跃期最大产率'], 2))
end
if args['全周期最小产率'] ~= nil and args['全周期最大产率'] ~= nil then
args['全周期产率'] = fstr("%s ~ %s 千克/秒 ", utils.float2str(args['全周期最小产率'], 2),
utils.float2str(args['全周期最大产率'], 2))
end
if args['喷发期最小产量'] ~= nil and args['喷发期最大产量'] ~= nil then
args['喷发期产量'] = fstr("%s ~ %s ", utils.kg2str(args['喷发期最小产量'], 2),
utils.kg2str(args['喷发期最大产量'], 2))
end
if args['活跃期最小产量'] ~= nil and args['活跃期最大产量'] ~= nil then
args['活跃期产量'] = fstr("%s ~ %s ", utils.kg2str(args['活跃期最小产量'], 2),
utils.kg2str(args['活跃期最大产量'], 2))
end
local generated = {}
for _, n in ipairs(innerNodes) do
local child = infobox.genNode(n, args)
if child ~= nil then
table.insert(generated, child)
end
end
return generated
end
function p.main(title, data, raw)
local contentNodes = nil
if #data == 1 then
contentNodes = p.infoboxContent(data[1].data)
else
local panelData = {}
for _, pData in ipairs(data) do
table.insert(panelData, {
label = pData.label,
content = p.infoboxContent(pData.data)
})
end
contentNodes = {
infobox.panel(panelData)
}
end
return infobox.infobox(title, contentNodes, raw, 'geyser')
end
function p.demo(frame)
local getArgs = require('Module:Dev/Arguments').getArgs
local args = getArgs(frame)
return p.main(args['标题'], {
{
data = args
}
}, args.raw)
end
return p