米斯特利亚Wiki正在建设中,本WIKI编辑权限开放!

全站通知:

模块:Quest

来自米斯特利亚WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

此模块的文档可以在模块:Quest/doc创建

local QuestData = require('模块:Quest/Data')
local Items = require('模块:Items')

local p = {}
local questTypeMap = {
    story_quest = "主线任务",
    fetch_quest = "委托任务",
    tali_challenges = "厨艺挑战",
    heart_quest = "好感任务",
    crown_quest = "王室委托"
}
local itemQuestCache = {}

function p._findQuestByItem(itemId)
    local id = Items._id(itemId)
    if not QuestData[id] then
        return nil
    end
    return QuestData[id]
end

function p.renderQuestsByItem(frame)
    local itemId = frame.args[1]
    local questTable = p._findQuestByItem(itemId)
    if not questTable then
        return nil
    end

    local args = {}
    for _, quest in pairs(questTable) do
        table.insert(args, p._renderQuest(quest))
    end
    mw.log("render is")
    mw.logObject(args)

    local moduleName = frame.args[2] or "任务/表"
    return frame:expandTemplate{
        title = moduleName,
        args = args
    }
end

function p._renderQuest(quest, tmpName)
    local frame = mw.getCurrentFrame()

    local itemTable = {}
    for itemId, itemCount in pairs(quest.items) do
        local itemName = Items._name(itemId)
        local itemRend = frame:expandTemplate{
            title = '物品',
            args = {
                itemName,
                itemCount
            }
        }
        table.insert(itemTable, itemRend)
    end

    local args = {
        ["任务类型"] = questTypeMap[quest.questType],
        ["任务名字"] = quest.quest,
        ["任务需求"] = table.concat(itemTable, "")
    }

    local moduleName = tmpName or "任务/行"
    local questRend = frame:expandTemplate{
        title = moduleName,
        args = args
    }
    return questRend
end

--[[
local frame = mw.getCurrentFrame()
frame.args = {"ore_copper"}
local r = p.renderQuestsByItem(frame)
mw.logObject(r)
]]--
return p