全站通知:
模块:GiftTastes
刷
历
编
跳到导航
跳到搜索
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