缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!
该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!
模块:科技点
本模块用于计算给定等级的科技所需的科技点。 数据出自游戏代码 Database.Techs.Techs(ResourceSet)
文档
程序包项
用法示例
{{#invoke: 科技点|main|so=1|lv=1|type=basic}}
15
-- Module: 科技点
--- 本模块用于计算给定等级的科技所需的科技点。数据出自游戏代码 Database.Techs.Techs(ResourceSet)
local p = {}
local fstr = mw.ustring.format -- shortcut for formattig a string
local getArgs = require('Module:Dev/Arguments').getArgs
local yesno = require('Module:Dev/Yesno')
local base = {
{["basic"] = 15}, --
{["basic"] = 20}, --
{["basic"] = 30, ["advanced"] = 20}, --
{["basic"] = 35, ["advanced"] = 30}, --
{["basic"] = 40, ["advanced"] = 50}, --
{["basic"] = 50, ["advanced"] = 70}, --
{["basic"] = 70, ["advanced"] = 100}, --
{["basic"] = 70, ["advanced"] = 100, ["space"] = 200},
{["basic"] = 70, ["advanced"] = 100, ["space"] = 400},
{["basic"] = 70, ["advanced"] = 100, ["space"] = 800},
{["basic"] = 70, ["advanced"] = 100, ["space"] = 1600}
}
local dlc1 = {
{["basic"] = 15}, --
{["basic"] = 20}, --
{["basic"] = 30, ["advanced"] = 20}, --
{["basic"] = 35, ["advanced"] = 30},
{["basic"] = 40, ["advanced"] = 50, ["orbital"] = 0, ["nuclear"] = 20},
{["basic"] = 50, ["advanced"] = 70, ["orbital"] = 30, ["nuclear"] = 40},
{["basic"] = 70, ["advanced"] = 100, ["orbital"] = 250, ["nuclear"] = 370},
{["basic"] = 100, ["advanced"] = 130, ["orbital"] = 400, ["nuclear"] = 435},
{["basic"] = 100, ["advanced"] = 130, ["orbital"] = 600},
{["basic"] = 100, ["advanced"] = 130, ["orbital"] = 800},
{["basic"] = 100, ["advanced"] = 130, ["orbital"] = 1600}
}
--- 计算所需科技点。
-- @function p.tech_points
-- @param {boolean} so 是否为眼冒金星科技。
-- @param {number} lv 科技的等级(在第几列,从 1 开始)。
-- @param {string} type 科技点的种类。
-- @return {number} 所需的科技点数量,0则为不需要。
-- test by: = p.tech_points({so=1, lv=5, type='basic'})
function p.tech_points(args)
local data = yesno(args.so) and dlc1 or base
local game_name = yesno(args.so) and '眼冒金星' or '本体游戏'
if args.type == nil then return error("参数 type 必填") end
local lv = tonumber(args.lv)
if lv == nil then return error("参数 lv 为必填数字") end
if lv < 1 or lv > #data then
error(fstr("%s科技的 lv 必须在 1 到 %d 之间", game_name, #data))
end
return data[lv][args.type] or 0
end
function p.main(frame) return p.tech_points(getArgs(frame)) end
return p