饥饿 Hunger
饥饿是角色三维之一。角色会持续消耗饥饿值;降到 0 后不再继续扣饥饿,而是按饥饿伤害率持续损失生命,因此应在归零前进食。
概述
饥饿组件由 scripts/components/hunger.lua 管理。角色的当前值会被限制在 0 与最大值之间;进食、某些效果和外部脚本可以增加饥饿,消耗则由角色的饥饿速率决定。以
威尔逊为例,最大饥饿为 150,基础消耗速率为 0.156/秒。
数值与状态
饥饿百分比 = 当前饥饿 ÷ 最大饥饿。游戏一天为 480 秒。组件每秒更新一次,周期来自 hunger.lua 的 UPDATE_PERIOD = 1。饥饿值尚未达到下限时,正常消耗量为:
hungerrate × dt × burnrate × burnratemodifiers
其中角色的 hungerrate 可由角色设定,burnrate 是旧式倍率,burnratemodifiers 是可叠加的修正列表。组件可以暂停和恢复消耗;暂停时不会执行周期扣减。只要当前饥饿尚未达到下限,就按上述公式消耗;达到下限后进入饥饿状态。
饥饿归零后的效果
当饥饿降到下限,组件发送 startstarving 事件并进入饥饿状态。此后每次消耗更新不再减少饥饿,而是对生命执行饥饿伤害;默认伤害为 hurtrate × dt,伤害来源标记为 hunger。以
威尔逊为例,饥饿伤害率由 150 ÷ 120 得出。重新获得正数饥饿后会发送 stopstarving 事件。无敌或传送状态下,普通 DoDelta 不会改变饥饿。
恢复与实用建议
优先食用
肉丸等能稳定恢复饥饿的食物;料理的具体恢复量以页面中的烹饪卡和最新快照为准。不要等到饥饿归零才进食:归零后生命会持续下降,且睡眠、战斗或采集期间可能来不及处理。角色、装备和技能可能改变最大值、消耗倍率或食物收益,不能直接套用威尔逊的数值。
代码参考
scripts/components/hunger.lua:GetPercent、SetCurrent、DoDelta、DoDec、Pause、Resumescripts/prefabs/player_common.lua:玩家饥饿最大值、消耗率和饥饿伤害率的初始化scripts/tuning.lua:玩家饥饿与饥饿伤害相关常量