缺氧 wiki 编辑团队提示:注册账号并登录后体验更佳,且可通过参数设置定制优化您的浏览体验!

该站点为镜像站点,如果你想帮助这个由玩家志愿编辑的 wiki 站点,请前往原站点参与编辑,
同时欢迎加入编辑讨论群 851803695 与其他编辑者一起参与建设!

全站通知:

模块:科技点

来自缺氧WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

本模块用于计算给定等级的科技所需的科技点。 数据出自游戏代码 Database.Techs.Techs(ResourceSet)

文档

程序包项

科技点.tech_points(so, lv, type)函数
计算所需科技点。
参数
so 是否为眼冒金星科技。(布尔
lv 科技的等级(在第几列,从 1 开始)。(数字
type 科技点的种类。(字符串
返回:所需的科技点数量,0则为不需要。(数字

用法示例

{{#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