饥荒食谱代码解析 教你看懂食谱代码公式

时间:2016-01-30 09:07:57 来源:当游网 作者:当游网 编辑:rawsyww 字体大小:

饥荒中,玩家可以通过看代码来了解自己版本中的最新食谱,而不用等上几天才能在网上找到最新的食谱。下面,小编就来分享一下饥荒食谱代码解析,有兴趣的玩家一起来看看吧。

饥荒食谱代码1

劣势大概有两个:第一代码是英文的,看懂大概需要初中英语水平,有些菜的名字要与汉化版对应起来可能有点难度;第二相比起方便的工具和网页,代码并没有友好的用户界面,略有点枯燥。

找到代码文件。以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两边的东西用括号括起来了。

太妃糖

taffy =

{

test = function(cooker, names, tags) return tags.sweetener and tags.sweetener >= 3 and not tags.meat end,

priority = 10,

foodtype = "VEGGIE",

health = -TUNING.HEALING_SMALL,

hunger = TUNING.CALORIES_SMALL*2,

perishtime = TUNING.PERISH_SLOW,

sanity = TUNING.SANITY_MED,

cooktime = 2,

tags = {"honeyed}

},

这个公式里面有tags.sweetener >= 3,意味着甜度大于等于3。整个公式是说:甜度大于等于3,且不能有肉(not tags.meat)。那么这里就要用到之前cooking.lua里面的数据了。在cooking.lua里面搜索sweetener,找到唯一一行:

AddIngredientValues({"honey", "honeycomb}, {sweetener=1}, true)

意味着蜂蜜和蜂房都可以提供1甜度。那么我们就知道,至少需要三个蜂蜜或蜂房。当然,拿蜂房做菜非常的奢侈。

另外要注意太妃糖里面health = -TUNING.HEALING_SMALL,这一行。注意等号后面的那个负号,意味着吃太妃糖要损血,减少的血量是HEALING_SMALL,具体值可以在tuning.lua里面查询。

茄子饭/茄子煲/茄子杂烩之类的名字

stuffedeggplant =

{

test = function(cooker, names, tags) return (names.eggplant or names.eggplant_cooked) and tags.veggie and tags.veggie > 1 end,

priority = 1,

foodtype = "VEGGIE",

health = TUNING.HEALING_SMALL,

hunger = TUNING.CALORIES_LARGE,

perishtime = TUNING.PERISH_SLOW,

sanity = TUNING.SANITY_TINY,

temperature = TUNING.HOT_FOOD_BONUS_TEMP,

temperatureduration = TUNING.FOOD_TEMP_BRIEF,

cooktime = 2,

},

这里面出现了稀有的温度属性

temperature = TUNING.HOT_FOOD_BONUS_TEMP,

temperatureduration = TUNING.FOOD_TEMP_BRIEF,

temperature是温度影响,HOT_FOOD_BONUS_TEMP,可以在tuning.lua里面搜到是40,显然吃这个会让角色体温升高。相对的还有COLD_FOOD_BONUS_TEMP=-40,意思也不用我说了吧。

temperatureduration是温度持续时间,可以在tuning.lua里面搜到FOOD_TEMP_BRIEF = 5。当然数值越长,持续越久。由于没有装显示体温的mod,也无力测试具体数值,有兴趣的话大家可以自己试试。

鱼排

fishsticks =

{

test = function(cooker, names, tags) return tags.fish and names.twigs and (tags.inedible and tags.inedible <= 1) end,

priority = 10,

foodtype = "MEAT",

health = TUNING.HEALING_LARGE,

hunger = TUNING.CALORIES_LARGE,

perishtime = TUNING.PERISH_MED,

sanity = TUNING.SANITY_TINY,

cooktime = 2,

tags = {"catfood}

},

公式里面出现了tags.inedible,inedible在这里可以解释为“不可食度”,唯一具有该度的就是树枝(twigs)。tags.inedible and tags.inedible <= 1就是说有不可食度大于0,不大于1。整个公式是说:有鱼(tags.fish),有树枝(names.twigs),且不可食度大于0,不大于1。再简单点讲就是有鱼,有且仅有一个树枝。

下面一条tags = {"catfood},应该与RoG DLC中的猫相关。

SW里面的咖啡

coffee =

{

test = function(cooker, names, tags) return names.coffeebeans_cooked and (names.coffeebeans_cooked == 4 or (names.coffeebeans_cooked == 3 and (tags.dairy or tags.sweetener))) end,

priority = 30,

foodtype = "VEGGIE",

health = TUNING.HEALING_SMALL,

hunger = TUNING.CALORIES_TINY,

perishtime = TUNING.PERISH_MED,

sanity = -TUNING.SANITY_TINY,

caffeinedelta = TUNING.CAFFEINE_FOOD_BONUS_SPEED,

caffeineduration = TUNING.FOOD_SPEED_LONG,

cooktime = 0.5,

},

相信看到这里的人应该能看懂公式了:4个烤咖啡豆或者3烤咖啡豆加一奶制品或蜂蜜。

下面比较特殊的两行

caffeinedelta = TUNING.CAFFEINE_FOOD_BONUS_SPEED,

caffeineduration = TUNING.FOOD_SPEED_LONG,

咖啡的效果在于加速,caffeinedelta为增加的速度量

tuning.lua中有:

CAFFEINE_FOOD_BONUS_SPEED = 5, -- player base speed plus this, 6 is normal walk speed

好心的程序员用注释告诉我们,普通行走速度为6,喝了咖啡再加5,将近翻倍。

然后持续时间caffeineduration = FOOD_SPEED_LONG = total_day_time / 2,喝咖啡加速效果持续半天。

以上就是饥荒游戏中食谱代码的解析了,希望对玩家们有所帮助。

下载地址

0

收藏
稿件举报
分享至:

一路疾驰

游戏类型: 体育竞技
开发发行: Alawar Premium
游戏语言: 简体中文
国家地区: 大陆
发行时间: 2021-10-21
整理时间: 2021-10-19
游戏标签:

猜你喜欢

同类排行榜