Module:DishInfo
跳转到导航
跳转到搜索
可在Module:DishInfo/doc创建此模块的帮助文档
local p = {}
local MODULE = "Module:"
local preparedfoods = require(MODULE .. "Scripts/preparedfoods.lua")
local preparedfoods_warly = require(MODULE .. "Scripts/preparedfoods_warly.lua")
local preparednonfoods = require(MODULE .. "Scripts/preparednonfoods.lua")
local PORTABLE_COOK_POT_TIME_MULTIPLIER = .8
local SECONDS_PRE_COOK_TIME = 20
local SECONDS_PER_MIN = 60
local MINUTES_PER_DAY = 8
local DAYS_PER_YEAR = 70
local function timeToString(timeNum)
local cur = timeNum
if (cur < SECONDS_PER_MIN) then
return cur % 1 == 0 and
string.format("%d 秒", cur)
or string.format("%.2f 秒", cur)
end
cur = cur / SECONDS_PER_MIN
if (cur < MINUTES_PER_DAY) then
return cur % 1 == 0 and
string.format("%d 分", cur)
or string.format("%.2f 分", cur)
end
cur = cur / MINUTES_PER_DAY
if (cur < DAYS_PER_YEAR) then
return cur % 1 == 0 and
string.format("%d 天", cur)
or string.format("%.2f 天", cur)
end
cur = cur / DAYS_PER_YEAR
return cur % 1 == 0 and
string.format("%d 分", cur)
or string.format("%.2f 分", cur) -- 有生之年应该不会遇到需要做一年的饭吧。
end
function p.itemInfoBox(frame)
local itemName = frame.args[1]:lower()
local foodData = preparedfoods[itemName] or preparednonfoods[itemName]
local isWarlyFood = false
if (not foodData) then
foodData = preparedfoods_warly[itemName]
isWarlyFood = not not foodData
end
if not foodData then
return error("Unknown dish prefab: " .. tostring(itemName) .. ", check your input, or ask User:Sodiumaluminate for update module")
end
--[[
function CookbookPageCrockPot:_GetSideEffectString(recipe_def)
return recipe_def.oneat_desc
or (recipe_def.temperature ~= nil and recipe_def.temperature > 0) and STRINGS.UI.COOKBOOK.FOOD_EFFECTS_HOT_FOOD
or (recipe_def.temperature ~= nil and recipe_def.temperature < 0) and STRINGS.UI.COOKBOOK.FOOD_EFFECTS_COLD_FOOD
or STRINGS.UI.COOKBOOK.FOOD_EFFECTS_NONE
end
]]
local perk = foodData.oneat_desc
or (foodData.temperature ~= nil and foodData.temperature > 0) and "让身体变暖"
or (foodData.temperature ~= nil and foodData.temperature < 0) and "为身体降温"
or nil
if (frame.args.perk and #frame.args.perk > 0) then
perk = frame.args.perk
end
return frame:expandTemplate({
title = "Item Infobox",
args = {
name = frame:expandTemplate({ title = "Po", args = { "STRINGS.NAMES." .. itemName:upper() } }), -- todo: 砍一层调用栈
stack = "40",
spawnCode = itemName,
hpRestored = tostring(foodData.health or 0),
hungerRestored = tostring(foodData.hunger or 0),
sanityRestored = tostring(foodData.sanity or 0),
spoil = timeToString(foodData.perishtime) or "不会腐烂",
cookedBy = isWarlyFood
and frame:expandTemplate({ title = "便携烹饪锅" })
or "任意" .. frame:expandTemplate({ title = "烹饪锅" }),
cooktime = isWarlyFood
--感谢盛哥(space.bilibili.com/42328131)给出的建议~ (前后文:https://discord.com/channels/347760782924185600/347813932938821633/1103960968968552480)
and timeToString(foodData.cooktime * SECONDS_PRE_COOK_TIME * PORTABLE_COOK_POT_TIME_MULTIPLIER) .. " (" .. timeToString(foodData.cooktime * SECONDS_PRE_COOK_TIME) .. " * 0.8)"
or timeToString(foodData.cooktime * SECONDS_PRE_COOK_TIME),
image = "[[File:" .. frame:expandTemplate({ title = "Po", args = { "STRINGS.NAMES." .. itemName:upper(), "en" } }) .. ".png|64px]]", -- todo: 砍一层调用栈
imagewidth = "64px",
priority = tostring(foodData.priority or 0),
perk = perk
}
})
end
return p