生物追逐控制

生物追逐控制

设置每个生物追逐你的距离和持续时间:最大追逐距离、放弃时间,以及视觉和听觉范围。Boss和驯服的动物除外,你可以单独放过特定生物。数值由服务器决定,管理员在游戏内修改。

MobChaseControl


全局设置怪物追击你的距离和时长。Boss 不受影响。


在我自己的服务器上,我最终对怪物要么追了几米就放弃、要么根据刷出时的设定追你半张地图这件事感到厌烦。有些模组会逐个改写生物属性,但我想要两个滑块控制一切——而且从服务器端设置,无需每个玩家都去改自己的配置。


设置


选项 含义
MaxChaseDistance 怪物失去目标的距离(米)。-1 保留对应生物的原始值,0 表示无限。默认 60。
GiveUpTime 未察觉到目标多少秒后放弃。原版为 30。-1 表示保持不变。
ViewRangeMultiplier 所有怪物视野范围的倍率。1 = 原版。
HearRangeMultiplier 听觉范围的倍率。
ExcludeBosses 默认开启。Boss 保持其正常行为。
ExcludeTamed 已驯服的动物不受影响,这样你的狼还能继续跟着你。
ExcludedPrefabs 保持原样的单个生物列表,用逗号分隔,例如 Greydwarf,Neck,Boar

更改立即生效,包括已经刷出的怪物。无需重启。


服务器与客户端


这点经常引起困惑,所以先说清楚:在 Valheim 中,生物 AI 是在当前拥有该生物的客户端上计算的,而不是在服务器上。因此每个玩家都必须安装该 DLL,否则怪物会根据附近是谁而表现出不同的行为。


数值仍然来自同一处。服务器将其配置发送给所有已连接的玩家,玩家本地文件被忽略,ConfigurationManager 中的字段被锁定。你只需维护服务器上的文件。


adminlist.txt 中的任何人都可以在游戏运行时通过 ConfigurationManager 更改变数值。更改会发送到服务器,服务器会自行验证发送者身份,将其保存到自己的配置中并分发给所有人。被拒绝的尝试会记录在日志中。


在单人游戏或作为主机时,你自己的文件照常生效。


安装


需要 BepInEx:


  1. MobChaseControl.dll 放入 BepInEx\plugins\
  2. 启动一次,BepInEx\config\flo.mobchasecontrol.cfg 就会出现
  3. 调整数值

服务器上同样如此。并且记住:你的队友也需要该 DLL。


兼容性


挂接 MonsterAI.Awake,并通过 Transpiler 挂接 MonsterAI.UpdateTarget。按 Prefab 工作,而不是通过固定生物列表,因此内容模组的怪物会自动包含在内。


该模组会记住它上次为某个生物设置的值。如果之后另一个模组改动了同一个生物,它会放手,而不是在下次刷新时覆盖。这样应该能解决与调整特定生物视野或听觉的模组之间的冲突。


我在自己的专用服务器上与 50 多个模组一起运行。


已知限制


  • 如果游戏补丁大幅重写追击逻辑,Transpiler 将找不到它的模式。这时日志中会出现一行记录,放弃时间保持 30 秒,其余部分继续工作。
  • 其他模组有意修改的生物会被故意保持原样。

发现 Bug?请在评论中反馈,最好附上 LogOutput.log 中的相关片段。




在我自己的服务器上,我最终对怪物要么追了几步就放弃、要么根据刷出时的设定追你半张地图这件事感到厌烦。有些模组会逐个改写生物属性,但我想要两个滑块控制一切——而且从服务器端设置,无需每个玩家都去改自己的配置。


设置


选项 作用
MaxChaseDistance 怪物放弃目标的距离(米)。-1 保留对应生物的原始值,0 表示无限。默认 60。
GiveUpTime 未察觉到目标多少秒后放弃。原版为 30。-1 表示保持不变。
ViewRangeMultiplier 所有怪物视野范围的倍率。1 为原版。
HearRangeMultiplier 听觉范围的倍率。
ExcludeBosses 默认开启。Boss 保持其正常行为。
ExcludeTamed 已驯服的动物会被跳过,这样你的狼还能继续跟着你。
ExcludedPrefabs 保持原样的生物列表,用逗号分隔,例如 Greydwarf,Neck,Boar

更改立即生效,包括已经刷出的怪物。无需重启。


服务器与客户端


这点经常让人困惑,所以先说清楚:在 Valheim 中,生物 AI 是在当前拥有该生物的客户端上运行的,而不是在服务器上。因此每个玩家都必须安装该 DLL,否则怪物会根据附近是谁而表现出不同的行为。


数值仍然来自同一处。服务器将其配置发送给所有已连接的玩家,玩家本地文件被忽略,ConfigurationManager 中的字段被锁定。你只需维护服务器上的文件。


adminlist.txt 中的任何人都可以在游戏运行时通过 ConfigurationManager 更改变数值。更改会发送到服务器,服务器会自行验证发送者身份,将其保存到自己的配置中并分发给所有人。被拒绝的尝试会显示在日志中。


在单人游戏或本地作为主机时,你自己的文件照常生效。


安装


需要 BepInEx:


  1. MobChaseControl.dll 放入 BepInEx\plugins\
  2. 启动一次,BepInEx\config\flo.mobchasecontrol.cfg 就会出现
  3. 调整数值

服务器上同样如此。并且记住:你的玩家也需要该 DLL。


兼容性


挂接 MonsterAI.Awake,并通过 Transpiler 挂接 MonsterAI.UpdateTarget。按 Prefab 工作,而不是通过硬编码的生物列表,因此内容模组的怪物会自动包含在内。


该模组会记住它上次写入某个生物的值。如果之后另一个模组改动了同一个生物,它会放手,而不是在下次刷新时覆盖。这样应该能解决与调整特定生物视野或听觉的模组之间的冲突。


我在自己的专用服务器上与 50 多个其他模组一起运行。


已知限制


  • 如果游戏补丁重写追击逻辑,Transpiler 将找不到它的模式。你会在日志中看到一行记录,放弃时间保持 30 秒,其余部分继续工作。
  • 其他模组有意修改的生物会被故意保持原样。

发现 Bug?请在评论中反馈,最好附上 LogOutput.log 中的相关部分。