EasyVitals
[AI-generated] Character values: item weight x0.25, food/potion duration x5, map x3, boss power x2, rested x3, 5s resting, -2% gear penalty, full food effect. Client-only, no server sync.EasyVitals
AI 生成声明:本模组由 AI 智能体(WorkBuddy)在用户的明确需求与逐项验收下编写; 功能设计、真机测试与发布决定均由用户主导。
角色与玩法数值。 从 EasyQoL 按功能用途拆分而来,纯客户端模组。
功能(9 项)
| # | 功能 | 默认 | 配置节 |
|---|---|---|---|
| 1 | 物品重量倍率 | 0.25(原版 25%) | 1 - Item Weight |
| 2 | 食物持续时间倍率 | 5 倍 | 2 - Food Duration |
| 3 | 药水 / 消耗品效果时长 | 5 倍(自动跳过「冷却」类效果) | 3 - Potion Duration |
| 4 | 地图探索揭示半径 | 3 倍 | 4 - Map Discovery |
| 5 | 遗忘之力(Boss power)时长 | 2 倍(20 分钟冷却不变) | 5 - Boss Power Duration |
| 6 | Rested 增益时长 | 3 倍 | 6 - Rested Duration |
| 7 | 「休息好了」等待时间 | 5 秒(原版 20 秒) | 7 - Resting Time |
| 8 | 装备移动速度惩罚统一 | -2% | 8 - Equipment Speed |
| 9 | 食物效果保持满值 | 开 | 9 - Food Full Effect |
装备维护那一组(耐久 / 范围修理 / 进站自动修理)不在本模组,见 EasyGear。
配置
BepInEx/config/easyvitals.client.only.cfg
⚠️ 改完必须重启游戏 —— BepInEx 只在插件 Awake 读一次配置,游戏内手改还会被内存旧值覆盖。
实现要点
- 1 / 2 / 3 / 8 走
ObjectDBprefab 数据改写(挂在ObjectDB.Awake,ZNetScene.Awake兜底)。 用「原值 × 倍率」重算,所以重复调用是幂等的。 - 4 走
Minimap.Explore的 prefix(放大揭示半径参数)。 - 6 / 7 在
db.m_StatusEffects里按 类型(SE_Rested/SE_Cozy)判定,不按名字 —— 因为这两个的 prefab 名与类名对不上(SE_Cozy的 prefab 叫SE_Resting)。 - 9 走
Player.GetTotalFoodValue的 postfix,把Pow(剩余比例, 0.3)衰减掉的部分补回去。
⚠️ 不要改 SE_Rested.m_ttl —— Player.UpdateBaseValue 每次都会重算它
(m_ttl = m_baseTTL + (舒适度-1) × m_TTLPerComfortLevel),改了会被立刻覆盖。
本模组改的是那两个「源字段」,所以任何舒适度都是准确的 N 倍。
联机
纯客户端。 主机、其他玩家都不需要装。
不声明 NetworkCompatibilityAttribute,不引用 Jotunn,不内嵌 ServerSync / CCS。


