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 配置中定义独立的公式,覆盖全局公式。

相关条目