潮湿 Moisture
潮湿值是角色与物品受到雨水、水面和其他水源影响时使用的状态值。角色潮湿会降低理智并使体温更容易下降;防雨装备可按防水率减少降雨带来的潮湿,完全防水时不会因降雨增加潮湿。
概述
角色的潮湿状态由 components/moisture.lua 管理,数值会被限制在 0 至 100。组件把数值划分为 100 个单位对应的 100 / 100 的比例,并在界面上按 numSegs 个水滴显示;源码中的 numSegs 是局部组件参数,页面只使用“水滴分段”描述,不把它当作独立数值规则。
进入“潮湿”状态的判定使用回差:潮湿值达到 35 时变湿,降到 15 时变干;处于两个阈值之间时,iswet 状态保持不变。角色组件本身的 wet 标记则在水滴分段达到湿润判定时更新。
增长来源
雨水与天气
角色每次更新的潮湿变化率由降水率、防水率和外部修正共同决定。下雨时,降水率经过平滑曲线换算为潮湿增长率,再乘以 1 - 防水率;防水率达到 1 时,降雨增长率为零。处于遮蔽区域时,还会把遮蔽提供的防水率计入计算。若实体拥有雨水免疫组件,则该增长率直接为零。
components/weather.lua 与 components/caveweather.lua 都维护世界湿度,并区分无降水、雨、雪和月亮冰雹等降水类型。降雨会推动世界湿度上升;降水停止后,天气系统按照当前湿度和环境温度计算干燥。对于角色自身,Moisture:GetMoistureRate 的直接条件是世界状态 israining,因此源码没有确认“下雪必然按降雨规则增加角色潮湿”;雪对世界湿度、积雪和融化的影响属于天气系统的另一套逻辑。
水面与水池
角色持有漂浮物,或角色处于洗澡池状态时,潮湿增长率直接取组件的最大潮湿增长率。物品漂浮在海面时,其目标物品潮湿度取 100;75 是进入海面时使用的初始湿度,而不是持续漂浮时的上限。
其他外部来源
组件允许外部系统添加潮湿速率修正,也支持除湿器按当前速率和经过时间吸收潮湿。海浪、划船失败、雪球融化、气球和其他交互可以通过事件或组件接口直接改变潮湿;具体物品的增湿量应以对应页面的事实数据为准。
下降与干燥
不再产生正向潮湿时,组件会计算干燥率。下雨期间只要潮湿增长率为正,干燥率就被设为零;停止下雨后,干燥率由以下因素叠加并限制在组件的允许范围内:
- 基础干燥率;
- 外部加热器强度;
- 本地环境温度,接近源码中的最佳干燥温度时更有利于干燥;
- 当前潮湿值,源码使用指数曲线使干燥项随潮湿度变化。
角色潮湿低于水滴分段阈值时,使用较低的玩家温度干燥项;潮湿达到该分段阈值后,使用更高的干燥项。睡袋如果提供干燥率,则睡眠期间直接使用睡袋的干燥率。强制干燥来源存在时,组件把潮湿设为零并停止正常更新;来源移除后才恢复更新。
对理智与体温的影响
理智
components/sanity.lua 将潮湿造成的理智变化作为一项连续惩罚加入理智重算:
潮湿理智变化 = easing.inSine(当前潮湿, 0, -0.0556, 潮湿上限)
因此潮湿越高,理智损失越接近最大惩罚 -3.33;源码没有把它实现为达到“变湿”阈值后才开始扣理智。拥有免除潮湿惩罚的角色或状态时,该项可以被跳过。
湿的可装备物品还会改变其理智恢复属性:Equippable:GetDapperness 在物品变湿且未要求忽略湿度时,加入 -0.1。这与角色本身的潮湿理智惩罚是两条独立管线。
体温
components/temperature.lua 把潮湿作为体温目标值的一项负修正:
潮湿体温修正 = -lerp(0, 30, 当前潮湿百分比)
满潮湿时最多降低 30 的体温目标修正;潮湿越低,修正越小。它不是直接造成寒冷伤害,而是让体温更新更偏向较低目标。防雨装备的保温属性和潮湿修正仍分别由装备的保温组件与角色潮湿组件计算。
湿物品与保鲜
物品使用 components/inventoryitemmoisture.lua 保存自己的潮湿度,范围同样是 0 至 100。物品的目标潮湿度取决于所处环境:
- 漂浮在海面时,目标值为
100; - 无所有者的暴露物品在下雨时跟随世界湿度;
- 放在暴露容器中时,会沿容器链追溯到暴露根节点;
- 由角色携带时,通常跟随角色潮湿度;
- 放在未暴露容器中时,目标值为零。
物品向更高目标潮湿度变化时,按组件中的增长速度追赶;向更低目标潮湿度变化时,按更快的干燥速度下降。物品达到 35 会标记为湿,降到 15 会标记为干,中间区间不会立即翻转标记。
湿物品会影响其他系统。例如,可腐烂物品在湿润状态下会把腐烂速率乘以 1.3;角色手持的工具在足够潮湿、工具本身也湿且没有强力握持标签时,攻击或工作可能触发掉落判定,最高概率由 15% 提供。
防雨装备
防雨装备通过 waterproofer 组件向装备栏提供防水率,装备栏会把各装备的防水率相加;达到 1 时视为完全防水。防水率同时影响角色因降雨增加潮湿的速度,也会让暴露物品继承到较低的湿度。
常见装备包括:
雨衣(雨衣):源码中的 waterproofer使用默认的完全防水效果,并提供60的冬季保温;耐久使用4800初始化。配方:
雨帽(雨帽):帽子变体使用 0.7的防水率,并有燃料耐久;配方:
多件防雨装备的防水率可以叠加,但最终降雨计算以完全防水为上限。防雨装备不等于绝对不会接触所有水源:水面、洗澡池以及直接事件增湿仍由对应代码路径处理。
代码参考
scripts/components/moisture.lua:潮湿上限、湿润判定、降雨增湿、干燥、强制干燥与更新循环。scripts/components/weather.lua:地表降水、世界湿度、雨雪状态与湿度变化。scripts/components/caveweather.lua:洞穴天气中的湿度与降水逻辑。scripts/components/sanity.lua:潮湿对理智的连续惩罚。scripts/components/temperature.lua:潮湿对体温目标的修正。scripts/components/inventoryitemmoisture.lua:物品湿度、暴露环境和湿润回差。scripts/components/inventory.lua、scripts/components/waterproofer.lua:装备栏防水率汇总与防水组件。scripts/components/perishable.lua:湿物品对腐烂速率的影响。scripts/prefabs/raincoat.lua、scripts/prefabs/hats.lua:雨衣与雨帽的防水、保温和耐久配置。