游戏版本 756039
首页 › 游戏机制 › 腐烂与保鲜

腐烂与保鲜 Perishability

机制食物保鲜 又名 保鲜又名 腐败又名 变质

带有腐烂组件的食物会随时间从新鲜变为变质,再变为腐烂。温度、容器、潮湿和地面环境会改变腐烂速度;冰箱等保鲜容器能降低倍率,但不会让普通食物永久停止腐烂。

概述

腐烂组件由 scripts/components/perishable.lua 管理。它以剩余腐烂时间与初始腐烂时间的比例计算状态,并给物品添加 fresh、stale 或 spoiled 标签。状态阈值为:剩余比例 ≥ 50% 时新鲜;低于该值且 > 20% 时变质;≤ 20% 时腐烂。腐烂时间耗尽后执行物品自己的 perishfn,必要时替换为另一个 prefab。

腐烂速度

每次更新会把剩余时间减少 dt × modifier。倍率由环境与容器共同决定,之后还会乘全局倍率和物品自身倍率。常见影响如下:

  • 放在地面上:1.5 倍;
  • 放在带保鲜组件的容器中:使用该容器提供的倍率;
  • 普通冰箱标签:0.5 倍;
  • 物品潮湿:再乘 1.3;
  • 环境温度低于 0:再乘 0.75;
  • 环境温度高于 70:再乘 1.25;
  • 物品处于冻结状态且满足冻结条件时,可使用 0 倍冻结倍率。

倍率小于 1 表示腐烂变慢,大于 1 表示变快。多个倍率通常相乘,而不是简单相加。

新鲜度对食物的影响

食物的腐烂状态会影响食用收益。edible.lua 中,变质食物的饥饿和生命收益分别乘以 stale_hunger 与 stale_health;腐烂食物分别乘以 spoiled_hunger 与 spoiled_health。默认值为:变质饥饿倍率 0.667、变质生命倍率 0.333;腐烂饥饿倍率 0.5、腐烂生命倍率 0。部分角色或食物可以通过 eater 组件覆盖这些倍率,不能把默认值当作所有角色的最终收益。普通规则下,变质会使原本为正的理智收益归零;腐烂会把原本非负的理智收益改为 -10。原本为负的收益不按这条规则替换;忽略腐败或能处理腐败食物的进食者另有分支。

保鲜建议

需要长期存放时,把食物放进冰箱而不是直接丢在地上,并尽量避免淋雨或潮湿。夏季高温会加快腐烂;冬季通常减慢腐烂,但冻结状态、容器标签和特殊保鲜组件可能改变实际结果。堆叠物品合并时,组件会按数量和剩余时间计算混合后的剩余时间,因此不要把新鲜度差异很大的同类食物随意合并。

代码参考

  • scripts/components/perishable.lua:Update、onpercent、StartPerishing、Perish
  • scripts/components/edible.lua:GetHunger、GetHealth、GetSanity
  • scripts/tuning.lua:PERISH_*、STALE_FOOD_*、SPOILED_FOOD_* 常量

相关条目

冰箱肉丸饥饿

版本记录

  • 首次收录:build 756039;正文编写:build 756039;核对至:build 756039

依据源码:scripts/components/perishable.lua scripts/components/edible.lua scripts/tuning.lua