Diminishing Returns(递减收益)
基本信息
| 属性 | 值 |
|---|---|
| 类型 | 食物修正机制 |
| 触发方式 | AppleCore FoodEvent.GetPlayerFoodValues 事件 |
| 引擎 | EvalEx 表达式解析器 |
功能
SpiceOfLife 的核心机制。当玩家重复食用相同或相似的食物时,食物的饱食度和饱和度会被动态降低,从而鼓励玩家多样化饮食。
修正系数通过表达式公式计算,应用于 AppleCore 的 FoodValues(饱食度和饱和度修正值)。
默认公式
MAX(0, (1 - count/12))^MIN(8, food_hunger_value)
含义:最近食用相同食物的次数越多,修正系数越低。基础历史长度为 12,超出后最旧的食物被移除。
可用变量
| 变量 | 说明 |
|---|---|
count |
该食物(或所属食物组)在历史中被食用的次数 |
hunger_count |
该食物(或所属食物组)在历史中恢复的饥饿值总和(1 饥饿 = 半格) |
saturation_count |
该食物(或所属食物组)在历史中提供的饱和度总和 |
max_history_length |
食物历史最大长度 |
cur_history_length |
当前食物历史长度 |
food_hunger_value |
食物的基础饥饿恢复值(1 = 半格) |
food_saturation_mod |
食物的基础饱和度修正值 |
cur_hunger |
玩家当前饥饿值(20 = 满) |
cur_saturation |
玩家当前饱和度 |
total_food_eaten |
玩家历史中所有食物的食用总次数 |
food_group_count |
该食物所属的食物组数量 |
distinct_food_groups_eaten |
当前食物历史中不同食物组的数量 |
total_food_groups |
已启用的食物组总数 |
exact_count |
不考虑食物组,该食物在历史中的精确食用次数 |
配置项
| 配置项 | 默认值 | 说明 |
|---|---|---|
food.modifier.enabled |
true |
总开关 |
food.history.length |
12 |
食物历史最大长度 |
food.modifier.formula |
见上方 | 修正公式 |
affect.food.hunger.values |
true |
是否影响饥饿值 |
affect.food.saturation.modifiers |
false |
是否影响饱和度修正 |
use.hunger.restored.for.food.history.length |
false |
按饥饿值而非食物数量计算历史长度 |
use.food.groups.as.whitelists |
false |
非食物组内的食物是否被排除 |
食物组自定义公式
每个食物组可以在 JSON 配置中定义独立的公式,覆盖全局公式。
相关条目
- Food Journal - 查看食物历史
- Lunch Box - 食物容器
- Extra Hearts - 里程碑额外心形