饥荒食谱代码解析 教你看懂食谱代码公式
作者:075玩 来源:互联网 2023-11-16 07:10:02
饥荒中,玩家可以通过看代码来了解自己版本中的最新食谱,而不用等上几天才能在网上找到最新的食谱。下面,小编就来分享一下饥荒食谱代码解析,有兴趣的玩家一起来看看吧。
劣势大概有两个:第一代码是英文的,看懂大概需要初中英语水平,有些菜的名字要与汉化版对应起来可能有点难度;第二相比起方便的工具和网页,代码并没有友好的用户界面,略有点枯燥。
找到代码文件。以SW为例:进入游戏安装文件夹,依次进入:data -> DLC0002 -> scripts
食谱相关代码文件主要有三个。首先在其中找到cooking.lua,用记事本打开。这里面记录的是基本食物的度数属性。在记事本中搜索“AddIngredientValues”,找到它第一次出现的地方。目前版本大家应该都是:
local fruits = {"pomegranate", "dragonfruit", "cave_banana}
AddIngredientValues(fruits, {fruit=1}, true)
从以上这两行开始,直到最后一行AddIngredientValues出现的位置,之间的内容都是我们关心的食物属性。这两行的意思是:
定义fruits为石榴(pomegranate)、火龙果(dragonfruit)、香蕉(cave_banana),所有fruits里面的食物都有1的果度(即fruit=1)
例如
AddIngredientValues({"durian}, {fruit=1, monster=1}, true)
这一行是说,榴莲(durian)拥有1果度(fruit=1)以及1怪兽度(monster=1)。
以“--”开头的一行代码是注释,它们不影响游戏,比如:
-- AddIngredientValues({"seeds}, {seed=1}, true)
这一行加了注释,所以跟游戏无关。从这一行可以看出,制作方本来想让种子也能进锅,但是后来由于某些原因放弃了。
至此就解释了怎么看cooking.lua文件。这些度数起何作用,就要看下一个文件:preparedfoods.lua。
在同样的位置,我们找到preparedfoods.lua文件,同样用记事本打开。这个文件就比较明了了,在local foods之后的大括号里面的,就是我们要的所有菜谱。除了SW的所有新增菜品,还包括原版就有的肉丸等等。
以这道菜为例:butterflymuffin,中文翻译大概是蝴蝶蛋糕、蝴蝶玛芬之类,反正就是有个蝴蝶的那道菜,这是原版菜之一。
butterflymuffin =
{
test = function(cooker, names, tags) return names.butterflywings and not tags.meat and tags.veggie end,
priority = 1,
weight = 1,
foodtype = "VEGGIE",
health = TUNING.HEALING_MED,
hunger = TUNING.CALORIES_LARGE,
perishtime = TUNING.PERISH_SLOW,
sanity = TUNING.SANITY_TINY,
cooktime = 2,
}
test这行,return后面,end之前的内容(names.butterflywings and not tags.meat and tags.veggie)就是就是合成公式。这个公式是说:需要蝴蝶翅膀(names.butterflywings)、不能有肉类(not tags.meat)、需要有菜类(tags.veggie)。每个and隔开两个要求,not是说不能有,注意not的运算优先级要高于and。
后面每一行的解释:
priority优先度,如果食材适用于烹饪两个及以上的菜,则选择优先度高的。如果优先级相同,则结果随机,每种结果是等可能的。
weight重量?我并没有搞懂,但是只有butterflymuffin有这个属性,总之也不是关注的重点。
foodtype决定烹饪结果的种类,应该是用来判断维京女能不能吃该食物的。
跳过四行,cooktime决定烹饪时间。
回到前面,health决定回复的血量,hunger决定饱食度,perishtime决定腐烂时间,sanity决定回复SAN量。然而它们都没有明确写出来,这就需要我们找第三个文件:tuning.lua。
也是在该文件夹,打开tuning.lua。
比如我们之前看到health = TUNING.HEALING_MED,这一行,要想知道TUNING.HEALING_MED是多少,这时候我们就在tuning.lua里面搜索“HEALING_MED”。于是我们搜到这一行:
HEALING_MED = 20,
很明显butterflymuffin具有补血20点的属性。下面的SAN值回复也是类似。
而饱食度的表示方法稍微复杂一些:
搜索CALORIES_LARGE,找到了
CALORIES_LARGE = calories_per_day/2, -- cooked meat
意味着它的饱食度回复量是calories_per_day的二分之一(记得“--”之后的是注释,不用管它)。
calories_per_day又是多少?再搜索一下,就找到:
local calories_per_day = 75
这就简单了,75/2=37.5,就是饱食度回复量。
腐烂时间:
PERISH_SLOW = 15*total_day_time*perish_warp,
也就是15天腐烂,其他的也类似。
现在回到preparedfoods.lua,接下来选取部分菜谱,继续解释公式计算方法和一些稀有的菜品属性。蛙腿三明治:
frogglebunwich =
{
test = function(cooker, names, tags) return (names.froglegs or names.froglegs_cooked) and tags.veggie end,
priority = 1,
foodtype = "MEAT",
health = TUNING.HEALING_MED,
hunger = TUNING.CALORIES_LARGE,
perishtime = TUNING.PERISH_SLOW,
sanity = TUNING.SANITY_TINY,
cooktime = 2,
},
这个的公式里面出现了"or",意味着至少要取生蛙腿(froglegs)或熟蛙腿(froglegs_cooked)中的一个。整个公式是说:有蛙腿(生或熟)且有蔬菜(tags.veggie)。运算优先级:not > and > or,这里为了先算or,就把or两边的东西用括号括起来了。
- 上一篇:三国志13重臣特性有哪些 重臣特性解说攻略
- 下一篇:返回列表
- 本类推荐
- 本类排行
- 热门软件
- 热门标签
steelseries engine 3(赛睿engine3)官方版 engine 3(赛睿engine3)官方版
惠普HP LaserJet Ultra M106w打印机驱动 LaserJet Ultra M106w打印机驱动
惠普HP LaserJet 5100打印机驱动 LaserJet 5100打印机驱动
惠普HP LaserJet 1000打印机驱动 LaserJet 1000打印机驱动
惠普HP LaserJet 5200打印机驱动 LaserJet 5200打印机驱动
惠普HP LaserJet 1020打印机驱动 LaserJet 1020打印机驱动
戴尔Dell B2360d打印机驱动 B2360d打印机驱动
戴尔Dell 1130打印机驱动 1130打印机驱动