Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
EasyGear
[AI-generated] Raises item durability (worn equipment too: helmet/chest/legs/cape). Repairs gear when you use a workbench, plus optional auto-repair on entering a station. Also lets you swap gear while running. Client-only.
By s6652289
| Last updated | 5 days ago |
| Total downloads | 130 |
| Total rating | 0 |
| Categories | Mods AI Generated |
| Dependency string | s6652289-EasyGear-1.0.3 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2350README
EasyGear
AI 生成声明:本模组由 AI 智能体(WorkBuddy)在用户的明确需求与逐项验收下编写; 功能设计、真机测试与发布决定均由用户主导。
装备维护。 从 EasyQoL 按功能用途拆分而来,纯客户端模组。
1.0.2(2026-09-17)新增:跑步时也能切换武器 / 工具(解除原版限制)。 原版奔跑时会每帧清空「装备动作队列」,导致带抽拿动画的武器/工具按数字键后 动作被取消、看起来完全没反应。现可正常切换。
1.0.1(2026-09-17)修复:耐久倍率(武器 / 工具 / 盾)此前完全不生效。 根因是拆分时
ObjectDB.Awake/ZNetScene.Awake两个挂载点漏在了 EasyVitals, 导致本模组的耐久改写函数成了死代码。详见CHANGELOG.md。1.0.3(2026-09-17)修复:耐久倍率对身上穿的护甲(头盔 / 胸甲 / 裤子 / 披风)无效。 护甲不走
m_useDurabilityDrain,而是Player.DamageArmorDurability里直接把伤害值 从耐久里减掉(硬编码,不读任何倍率)。现单独挂了一个补丁按「伤害 ÷ 倍率」重算。详见CHANGELOG.md。
功能(4 项)
| # | 功能 | 默认 | 配置节 |
|---|---|---|---|
| 1 | 武器 / 工具 / 弓 / 盾 耐久 + 穿戴中的护甲(头盔/胸甲/裤子/披风) | 5 倍(LossReduction) | 1 - Item Durability |
| 2 | 锤子「范围修理」 | 半径 30 米 | 2 - Area Repair |
| 3 | 进站自动修理 | 开(含背包,150 ms/件) | 3 - Auto Repair At Station |
| 4 | 跑步时也能切换武器 / 工具 | 开 | 4 - Equip While Running |
角色/玩法数值(重量 / 食物 / 药水 / 地图 / Boss 之力 / Rested / 装备减速)在 EasyVitals。
配置
BepInEx/config/easygear.client.only.cfg
1 - Item Durability→Mode三选一:LossReduction(默认)= 耐久消耗 ÷ 倍率。装备明显更耐用,但物品提示里的数字下降很慢。MaxDurability= 耐久上限 × 倍率。提示里一眼可见;已有装备需要先用锤子修一次才会满。Both= 两者都做(寿命约 ×25,慎用)。
2 - Area Repair→Verbose默认 true(沿用原 EasyQoL 的实机配置): 每次范围修理在日志里记一行修好了几个部件。3 - Auto Repair At Station→IntervalMilliseconds是逐件修理的间隔(默认 150); 装备多的时候能看清耐久条一根根回满。填0= 一瞬间全满。4 - Equip While Running→Enabled:关掉即完全回到原版(跑步时切不动装备)。
⚠️ 改完必须重启游戏(BepInEx 只在插件 Awake 读一次配置)。
实现要点
- 耐久 —— 两条代码路径,必须分别处理:
- 武器 / 工具 / 弓 / 盾 / 放置:
ObjectDBprefab 数据改写 (ObjectDB.Awake+ZNetScene.Awake兜底),把SharedData.m_useDurabilityDrain原值 ÷ 倍率、幂等。 - 穿戴中的护甲(头盔 / 胸甲 / 裤子 / 披风):不走上面那个字段。
Player.DamageArmorDurability(HitData)里是把伤害值直接从耐久减掉(硬编码), 所以改共享数据对它无效。本模组另挂一个补丁:Prefix记下扣前耐久、Postfix按Max(0, 扣前值 − 伤害/倍率)重算被扣的那件。 ⚠️ 必须从HitData重新取原始伤害 —— 原版的Mathf.Max(0, …)会先把负值 clamp 到 0、 真实伤害量就丢了;拿"已扣量"去除以倍率会导致"伤害大于剩余耐久时少扣", 极端情况下护甲会趋近于永不损坏。
- 武器 / 工具 / 弓 / 盾 / 放置:
- 范围修理:
Player.Repair的 postfix —— 以鼠标指向的部件为中心,把半径内所有WearNTear也修一遍。 带防重入标记;Repair()自身会跳过已满耐久/冷却中的部件,所以不会重复计。 - 进站自动修理:
InventoryGui.Show的 prefix 记下「调用前界面是否已可见」, 只有【不可见 → 可见】且activeGroup == 3(制造页)才算「刚打开」;逐件修理走协程带节奏。 身上穿戴的那批走游戏原版修理函数,所以涨熟练度、修理特效、「已修复 xxx」提示 与手动点修理按钮完全一致;原版修理本来就免费,所以不消耗材料。 - 跑步可切换装备:
Player.CheckRun(每帧)的 prefix/postfix 只用来打一个"正在 CheckRun 内"的标记;Humanoid.ClearActionQueue的 prefix 在该标记为真、且实例确实在奔跑(Character.IsRunning())时 跳过这次清空。攻击 / 跳跃 / 翻滚触发的清空不受影响。 双保险设计:即使标记意外卡住,非奔跑状态也不会误跳过。
联机
纯客户端。 主机、其他玩家都不需要装。
不声明 NetworkCompatibilityAttribute,不引用 Jotunn,不内嵌 ServerSync / CCS。