使用BepInEx;
使用BepInEx.Configuration;
使用HarmonyLib;
使用UnityEngine;
使用 System.Linq;
使用 System.Collections.Generic;
超重且被锁定时恢复耐力
{
[BepInPlugin("innocreator.regenstamina", "超重且被瞄准时恢复耐力", "3.0")]
[BepInProcess("valheim.exe")]
超重且被瞄准时恢复体力
{
public static ConfigEntry<int> nexusID;
public static ConfigEntry<bool> showDebugMessages;
public static ConfigEntry<float> playerCarryWeight;
public static ConfigEntry<float> targetScanRange;
// 用于修补方法的 Harmony 实例
private readonly Harmony harmony = new Harmony("innocreator.regenstamina");
唤醒
{
// 绑定配置项
nexusID = Config.Bind<int>("General", "nexusID", 2703, "用于追踪更新的Nexus ID。");
showDebugMessages = Config.Bind<bool>("General", "showDebugMessages", false, "显示脚本调试消息。");
playerCarryWeight = Config.Bind<float>("Options", "playerCarryWeight", 300f, "玩家基础负重。");
targetScanRange = Config.Bind<float>("Options", "targetScanRange", 30f, "目标扫描范围。");
// 修补此程序集中所有标记了 Harmony 特性的方法
harmony.PatchAll();
}
// HarmonyPatch 特性指定对 Player 类的 OnTargeted 方法的补丁
[HarmonyPatch(typeof(Player), nameof(Player.OnTargeted))]
超重且被指定目标时恢复耐力_被指定目标时
{
// 前缀方法在原方法执行之前被调用
static void Prefix()
{
// 获取游戏中的所有玩家列表
List<Player> _playersList = Player.GetAllPlayers();
// 选择列表中的第一个玩家
_playerOneList = _playersList[0];
// 根据玩家 ID 获取玩家引用
玩家 _playerOneReference = Player.GetPlayer(_playerOneList.GetPlayerID());
// 检查玩家引用是否存在
如果(!_playerOneReference)
返回;
// 获取游戏中所有符合特定条件的潜在目标列表
var potentialTargets = Character.GetAllCharacters().Where(target =>
!target.IsDead() &&
!target.IsTamed() &&
!target.IsPlayer() &&
(int)target.GetFaction() != 0 &&
Vector3.Distance(_playerOneReference.GetCenterPoint(), target.GetCenterPoint()) > 0 &&
Vector3.Distance(_playerOneReference.GetCenterPoint(), target.GetCenterPoint()) < targetScanRange.Value);
// 如果玩家被锁定且负重过度,则增加其最大负重
如果(潜在目标数量大于0且玩家一引用被选中且玩家一引用处于负重状态)
{
如果(showDebugMessages.Value)
Debug.Log($"innoCreator 已锁定目标: {_playerOneReference.IsTargeted()}, 名称: {potentialTargets.FirstOrDefault().name}, 距离: {Vector3.Distance(_playerOneReference.GetCenterPoint(), potentialTargets.FirstOrDefault().GetCenterPoint())}, 数量: {potentialTargets.Count()}");
_playerOneReference.m_maxCarryWeight = 9999;
返回;
}
// 如果玩家的最大负重尚未设置为增加后的值,则返回
若(_playerOneReference.m_maxCarryWeight 不等于 9999)
返回;
// 如果玩家未被选为目标或没有潜在目标,则将最大负重设置为默认值
如果 (!_playerOneReference.IsTargeted() || potentialTargets.Count() < 1)
{
如果启用了调试信息
Debug.Log("innoCreator OnTargeted 重置权重");
_playerOneReference.m_maxCarryWeight = playerCarryWeight.Value;
返回;
}
}
}
// HarmonyPatch 特性指定了对 Player 类的 UseStamina 方法的补丁
[和谐补丁(typeof(玩家), nameof(玩家.使用耐力))]
超重且被瞄准时恢复体力的_消耗体力
{
// 前缀方法在原方法执行前调用
static void Prefix()
{
// 获取游戏中的所有玩家列表
List<Player> _playersList = Player.GetAllPlayers();
// 选择列表中的第一个玩家
玩家 _playerOneList = _playersList[0];
// 根据玩家ID获取玩家引用
玩家 _playerOneReference = Player.GetPlayer(_playerOneList.GetPlayerID());
// 检查玩家引用是否存在
如果(!_playerOneReference)
返回;
// 如果玩家的最大负重尚未设置为增加后的数值,则返回
if (_playerOneReference.m_maxCarryWeight != 9999)
返回;
// 如果玩家未被选中,将最大负重设置为配置值
if (!_playerOneReference.IsTargeted())
{
如果(显示调试信息.值)
Debug.Log("innoCreator UseStamina 1 Reset Weight");
_playerOneReference.m_maxCarryWeight = playerCarryWeight.Value;
返回;
}
// 获取游戏中所有符合特定条件的潜在目标列表
var potentialTargets = Character.GetAllCharacters().Where(target =>
!target.IsDead() &&
!target.IsTamed() &&
!target.IsPlayer() &&
(int)target.GetFaction() != 0 &&
Vector3.Distance(_playerOneReference.GetCenterPoint(), target.GetCenterPoint()) > 0 &&
Vector3.Distance(_playerOneReference.GetCenterPoint(), target.GetCenterPoint()) < targetScanRange.Value);
如果目标不存在,将最大负重设置为配置值
如果(潜在目标.数量() < 1)
{
如果(showDebugMessages.Value)
Debug.Log("innoCreator UseStamina 2 重置权重");
_playerOneReference.m_maxCarryWeight = playerCarryWeight.Value;
返回;
}
}
}
}
}

修改前置工具
2026-09-12 14:33:53
修改前置工具

史诗战利品
randyknapp2026-09-09 21:20:10
为英灵神殿添加战利品掉落、魔法物品和附魔。

制作 建造 熔炼 烹饪 燃料 从容器中取出
aedenthorn2025-06-30 08:34:14
让你在制作、建造、使用熔炉和窑炉、添加燃料、烹饪食物等时,可以使用附近容器中的资源。

种植一切
Advize2025-09-09 11:15:37
重写了bkeyes93的种植增强模组。允许你的种植者种植浆果丛、蓟、蒲公英、蘑菇、此前无法获取的树种以及其他装饰性植物。还包括许多其他杂项功能(详见

无限制传送门
frostedplaything4102023-09-02 17:39:40
无限制传送门是一个客户端模组,允许玩家通过传送门传送任何物品。该模组提供广泛的自定义选项,让玩家能够控制物品限制、移除限制,

农场格子
Sarcenzzz2023-06-14 11:38:34
允许所有通过种植器种下的植物自动对齐并放置在网格中,确保它们有足够的生长空间。

更好的UI
MKMasa2021-04-15 09:19:42
这个模组对游戏界面做了一些细微的调整。你可以编辑并选择想要启用的更新内容。

更好的射箭
Ishid42026-09-10 16:16:51
为弓术玩法添加了许多功能和改动,包括全新的箭袋系统、可回收的箭矢、更精准的瞄准以及逼真的箭矢物理效果。