模块:GiftsByItem
来自星露谷物语扩展百科
更多操作
描述
当前模块用于物品的人物喜好列表的生成,能够根据导出的数据进行全自动的格式化、排序和输出。
人物按照一定的逻辑排序,此外还对排版显示上进行了一定的优化。
如果该模块存在任何问题,请在{{GiftsByItem}}对应的讨论页中反馈。
模块使用的数据见模块:GiftsByItem/data,相关数据是通过由中文社区维护的模组导出的,相关代码见 Github 仓库中的 GetNPCGiftTastes 部分。
[ 查看 | 编辑 | 历史 | 刷新 ]上述文档的内容来自模块:GiftsByItem/doc。
local Vanilla = require("模块:GiftsByItem")
local p = {}
-- SVE 新增人物
local newVillagers = {
["Lance"] = "兰斯", ["Magnus"] = "马格努斯", ["Marlon"] = "马龙",
["Martin"] = "马丁", ["Morgan"] = "摩根", ["Morris"] = "莫里斯",
["Olivia"] = "奥利维亚", ["Andy"] = "安迪", ["Scarlett"] = "斯嘉丽",
["Sophia"] = "索菲娅", ["Susan"] = "苏珊", ["Victor"] = "维克多",
["Henchman"] = "仆从", ["Claire"] = "克莱尔", ["Gunther"] = "冈瑟",
["Apples"] = "苹果"
}
local orderAdditions = {
"索菲娅", "维克多", "克莱尔", "马丁", "安迪", "苏珊", "奥利维亚", "兰斯", "斯嘉丽", "莫里斯", "马龙", "冈瑟", "仆从", "马格努斯", "摩根", "苹果"
}
-- 翻译映射表合并
local function createTranslationMap()
local combined = {}
-- 原版翻译
for k, v in pairs(Vanilla.translation) do
combined[k] = v
end
-- SVE 翻译
for k, v in pairs(newVillagers) do
combined[k] = v
end
return combined
end
-- 排序顺序合并
local function createNewOrder()
local combined = {}
-- 原版顺序
for _, name in ipairs(Vanilla.predefinedOrder) do
table.insert(combined, name)
end
-- SVE 顺序
for _, name in ipairs(orderAdditions) do
table.insert(combined, name)
end
return combined
end
-- 创建 SVE 的数据
local newTranslationMap = createTranslationMap()
local newOrder = createNewOrder()
-- 生成 SVE 的反向映射和索引
local sveOriginal = {}
for en, zh in pairs(newTranslationMap) do
sveOriginal[zh] = en
end
local newOrderIndex = {}
for i, name in ipairs(newOrder) do
newOrderIndex[name] = i
end
-- SVE 的主函数
function p.tssve(frame)
local villagerlist = frame.args[1]
return Vanilla.processVillagers(villagerlist, newTranslationMap, newOrderIndex, sveOriginal, "SVE")
end
-- 导出原版模块的函数供其他地方使用
p.base = Vanilla
return p