维护提醒

BWIKI 全站将于 9 月 3 日(全天)进行维护,期间无法编辑任何页面或发布新的评论。

全站通知:

模块:Quests

来自星露谷物语维基
跳到导航 跳到搜索
[ 创建 | 刷新 ]文档页面
当前模块文档缺失,需要扩充。
local Helper = require("Module:Helper")

-- Module:Quests
local p = {}
local questData = Helper.LazyLoad("Module:Quests/data")

-- Helper function to split text
local function splitText(text, delimiter)
    local result = {}
    for match in (text..delimiter):gmatch("(.-)"..delimiter) do
        table.insert(result, match)
    end
    return result
end

-- Helper function to format links
local function formatLinks(text, ...)
    local args = {...}
    for i = 1, #args, 2 do
        local displayText = args[i]
        local linkTarget = args[i + 1] or displayText
        if linkTarget == displayText then
            text = text:gsub(displayText, "[[".. displayText .. "]]")
        else
            text = text:gsub(displayText, "[[" .. linkTarget .. "|" .. displayText .. "]]")
        end
    end
    return text
end

-- Function to get quest name
function p.getQuestName(frame)
    local questId = frame.args[1]
    local questInfo = questData[questId]
    if questInfo then
        local parts = splitText(questInfo, "/")
        return formatLinks(parts[2], unpackParams(frame.args[2]))
    end
    return ""
end

-- Function to get quest description
function p.getQuestDescription(frame)
    local questId = frame.args[1]
    local questInfo = questData[questId]
    if questInfo then
        local parts = splitText(questInfo, "/")
        return formatLinks(parts[3], unpackParams(frame.args[2]))
    end
    return ""
end

-- Function to get quest objective
function p.getQuestObjective(frame)
    local questId = frame.args[1]
    local questInfo = questData[questId]
    if questInfo then
        local parts = splitText(questInfo, "/")
        return formatLinks(parts[4], unpackParams(frame.args[2]))
    end
    return ""
end

-- Function to get quest reward text with extra processing
function p.getQuestRewardText(frame)
    local questId = frame.args[1]
    local rewardText = ""
    local questInfo = questData[questId]
    if questInfo then
        local parts = splitText(questInfo, "/")
        if #parts == 10 then
            rewardText = parts[#parts]
        end
        -- 清理 # 和 $ 字符
        rewardText = rewardText:gsub("#", ""):gsub("%$[a-zA-Z]", ""):gsub("@", "<玩家名>")
    end
    return rewardText
end

-- Modified unpackParams function
function unpackParams(argString)
    local result = {}
    if argString then
        local params = splitText(argString, ",")
        for _, param in ipairs(params) do
            table.insert(result, param)
        end
    end
    return unpack(result)
end

return p