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

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

全站通知:

模块:表格/流星掉落效果

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

此模块的文档可以在模块:表格/流星掉落效果/doc创建

-- Module:表格/流星掉落效果
local p = {}
local fstr = mw.ustring.format -- shortcut for formattig a string
local getArgs = require('Module:Dev/Arguments').getArgs
local tb = require([[Module:表格]])
local po = require([[Module:Po]]).po
local utils = require([[Module:Utils]])
local cData = mw.loadData([[Module:Data/Comets]])

local function getCometName(itemData)
    if itemData.Name ~= nil then
        local name = po(itemData.Name)
        if not utils.isDefaultT(itemData.Name, name) then
            return fstr("{{物品|%s}}", name)
        end
    end
    return fstr("<code>%s</code>", itemData.Id)
end

-- test by: = p._main({})
function p._main(itemData, comet)
    local out = {}

    table.insert(out, getCometName(itemData))
    -- 流速
    table.insert(out, fstr("%s ↔ %s", utils.float2str(comet.spawnVelocity.x), utils.float2str(comet.spawnVelocity.y)))
    -- 掉落角度
    table.insert(out, fstr("%s ↔ %s", utils.float2str(comet.spawnAngle.x), utils.float2str(comet.spawnAngle.y)))
    -- 被击落后的掉落物
    if comet.lootOnDestroyedByMissile ~= nil then
        local lootSet = {}
        for _, loot in ipairs(comet.lootOnDestroyedByMissile) do
            local lootOld = lootSet[loot]
            if lootOld ~= nil then
                lootSet[loot] = lootOld + 1
            else
                lootSet[loot] = 1
            end
        end
        local loots = {}
        for entityId, num in pairs(lootSet) do
            local name = utils.getEntry(entityId)
            if name ~= nil then
                table.insert(loots, fstr("{{物品|%s}} x%s", name, utils.float2str(num)))
            end
        end
        table.insert(out, table.concat(loots, "<br/>"))
    else
        table.insert(out, "")
    end
    -- 抵达后创生物
    if comet.craterPrefabs ~= nil then
        local craterSet = {}
        for _, crater in ipairs(comet.craterPrefabs) do
            local lootOld = craterSet[crater]
            if lootOld ~= nil then
                craterSet[crater] = lootOld + 1
            else
                craterSet[crater] = 1
            end
        end
        local craters = {}
        for entityId, num in pairs(craterSet) do
            local name = utils.getEntry(entityId)
            if name ~= nil then
                table.insert(craters, fstr("{{物品|%s}} x%s", name, utils.float2str(num)))
            end
        end
        table.insert(out, table.concat(craters, "<br/>"))
    else
        table.insert(out, "")
    end

    return out
end

-- test by: = p.main({})
function p.main(frame)
    local args = getArgs(frame)
    local infos = {}

    local dlc = args.dlc
    for cometId, cometData in pairs(cData) do
        if cometData.comet ~= nil then
            local info = p._main(cometData, cometData.comet)
            table.insert(infos, info)
        end
    end

    -- mw.logObject(infos)
    return tb.table(infos, args)
end

return p