s6652289-EasyGear icon

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.

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-5.4.2350 icon
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.2350

README

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 DurabilityMode 三选一:
    • LossReduction(默认)= 耐久消耗 ÷ 倍率。装备明显更耐用,但物品提示里的数字下降很慢。
    • MaxDurability = 耐久上限 × 倍率。提示里一眼可见;已有装备需要先用锤子修一次才会满
    • Both = 两者都做(寿命约 ×25,慎用)。
  • 2 - Area RepairVerbose 默认 true(沿用原 EasyQoL 的实机配置): 每次范围修理在日志里记一行修好了几个部件。
  • 3 - Auto Repair At StationIntervalMilliseconds 是逐件修理的间隔(默认 150); 装备多的时候能看清耐久条一根根回满。填 0 = 一瞬间全满。
  • 4 - Equip While RunningEnabled:关掉即完全回到原版(跑步时切不动装备)。

⚠️ 改完必须重启游戏(BepInEx 只在插件 Awake 读一次配置)。

实现要点

  • 耐久 —— 两条代码路径,必须分别处理
    • 武器 / 工具 / 弓 / 盾 / 放置ObjectDB prefab 数据改写 (ObjectDB.Awake + ZNetScene.Awake 兜底),把 SharedData.m_useDurabilityDrain 原值 ÷ 倍率、幂等。
    • 穿戴中的护甲(头盔 / 胸甲 / 裤子 / 披风):不走上面那个字段Player.DamageArmorDurability(HitData) 里是把伤害值直接从耐久减掉(硬编码), 所以改共享数据对它无效。本模组另挂一个补丁:Prefix 记下扣前耐久、 PostfixMax(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。