全站通知:

模块:GiftTastes

来自星露谷物语维基
跳到导航 跳到搜索

当前模块用于模板:GiftsByItem自动生成物品的送礼表格。

[ 查看 | 编辑 | 历史 | 刷新 ]上述文档的内容来自模块:GiftTastes/doc
local Helper = require("Module:Helper")
local GiftData = Helper.LazyLoad('Module:GiftTastes/Data')
local GiftsByItem = require("Module:GiftsByItem")

local p = {}

-- 生成完整的礼物喜好表格
-- =p.generateGiftTable{args={"防风草"}}
function p.generateGiftTable(frame)
    local itemName = frame.args[1] or frame:getParent().args[1] or mw.title.getCurrentTitle().text
    
    if not itemName or itemName == "" then
        return ""
    end
    
    local item = GiftData[itemName]
    if not item then
        return ""
    end
    
    local hasPreferences = false
    for _, category in ipairs({"最爱", "喜欢", "一般", "不喜欢", "讨厌"}) do
        if item[category] then
            local count = 0
            for i, _ in pairs(item[category]) do
                if type(i) == "number" and i > 0 then
                    count = count + 1
                end
            end
            
            if count > 0 then
                hasPreferences = true
                break
            end
        end
    end
    
    if not hasPreferences then
        return ""
    end
    
    local result = {}
    
    -- 开始构建表格
    table.insert(result, '<table class="wikitable roundedborder">')
    table.insert(result, '<tr>')
    table.insert(result, '<th colspan="2">收到' .. itemName .. '后</th>')
    table.insert(result, '</tr>')
    
    if item["最爱"] then
        local npcList = {}
        for i, npc in pairs(item["最爱"]) do
            if type(i) == "number" and i > 0 then
                table.insert(npcList, npc)
            end
        end
        
        if #npcList > 0 then
            local loveList = table.concat(npcList, ",")
            local points = "+80"
            if itemName == "星之果茶" then
                points = "+250"
            end
            
            local mockFrame = {args = {[1] = loveList}}
            local processedList = GiftsByItem.ts(mockFrame)
            
            table.insert(result, '<tr>')
            table.insert(result, '<th><span class="no-wrap">最爱</span><br><span style="font-size:smaller;">' .. points .. '</span></th>')
            table.insert(result, '<td>' .. processedList .. '</td>')
            table.insert(result, '</tr>')
        end
    end
    
    if item["喜欢"] then
        local npcList = {}
        for i, npc in pairs(item["喜欢"]) do
            if type(i) == "number" and i > 0 then
                table.insert(npcList, npc)
            end
        end
        
        if #npcList > 0 then
            local likeList = table.concat(npcList, ",")
            
            local mockFrame = {args = {[1] = likeList}}
            local processedList = GiftsByItem.ts(mockFrame)
            
            table.insert(result, '<tr>')
            table.insert(result, '<th><span class="no-wrap">喜欢</span><br><span style="font-size:smaller;">+45</span></th>')
            table.insert(result, '<td>' .. processedList .. '</td>')
            table.insert(result, '</tr>')
        end
    end

    if item["一般"] then
        local npcList = {}
        for i, npc in pairs(item["一般"]) do
            if type(i) == "number" and i > 0 then
                table.insert(npcList, npc)
            end
        end
        
        if #npcList > 0 then
            local neutralList = table.concat(npcList, ",")
            
            local mockFrame = {args = {[1] = neutralList}}
            local processedList = GiftsByItem.ts(mockFrame)
            
            table.insert(result, '<tr>')
            table.insert(result, '<th><span class="no-wrap">普通</span><br><span style="font-size:smaller;">+20</span></th>')
            table.insert(result, '<td>' .. processedList .. '</td>')
            table.insert(result, '</tr>')
        end
    end
    
    if item["不喜欢"] then
        local npcList = {}
        for i, npc in pairs(item["不喜欢"]) do
            if type(i) == "number" and i > 0 then
                table.insert(npcList, npc)
            end
        end
        
        if #npcList > 0 then
            local dislikeList = table.concat(npcList, ",")
            
            local mockFrame = {args = {[1] = dislikeList}}
            local processedList = GiftsByItem.ts(mockFrame)
            
            table.insert(result, '<tr>')
            table.insert(result, '<th><span class="no-wrap">不喜欢</span><br><span style="font-size:smaller;">-20</span></th>')
            table.insert(result, '<td>' .. processedList .. '</td>')
            table.insert(result, '</tr>')
        end
    end
    
    if item["讨厌"] then
        local npcList = {}
        for i, npc in pairs(item["讨厌"]) do
            if type(i) == "number" and i > 0 then
                table.insert(npcList, npc)
            end
        end
        
        if #npcList > 0 then
            local hateList = table.concat(npcList, ",")
            
            local mockFrame = {args = {[1] = hateList}}
            local processedList = GiftsByItem.ts(mockFrame)
            
            table.insert(result, '<tr>')
            table.insert(result, '<th><span class="no-wrap">讨厌</span><br><span style="font-size:smaller;">-40</span></th>')
            table.insert(result, '<td>' .. processedList .. '</td>')
            table.insert(result, '</tr>')
        end
    end
    
    table.insert(result, '</table>')
    
    return table.concat(result, '\n')
end

return p