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.
SpexSoftlockFix
修复供奉暴露小脑后误伤 SPEX 被赶出计算交易所导致的软锁,并把暴露小脑返还给最初提交的玩家。 | Fixes the SPEX ejection soft-lock in the Computational Exchange and refunds the Exposed Cerebellum to the player who offered it.
| Last updated | 15 hours ago |
| Total downloads | 3 |
| Total rating | 0 |
| Categories | Server-side Mods AI Generated |
| Dependency string | SlightDust-SpexSoftlockFix-0.1.3 |
| Dependants | 0 other packages depend on this package |
This mod requires the following mods to function
bbepis-BepInExPack
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.2121README
SPEX Softlock Fix
修复《雨中冒险 2》合金意念 DLC 里的一个软锁:在计算交易所供奉「暴露小脑」开启解密传送门后,如果误伤 SPEX 被赶出交易所,这一局就再也进不去神经圣所。
软锁是怎么发生的
- 供奉台
SolusVendorShrineController.HandleGivenItem收到MasterCore(暴露小脑)时,会RemoveItemPermanent永久删除它、把台子切到Disabled,并让状态机进入SolusWebPortalSequence打开解密传送门。 - SPEX 本体(
EntityStates.SolusVendor)受到伤害超过阈值会进入StealItem:随机偷走道具,并在OnExit里激活场景中的KickOutOfShop,把所有人赶出交易所,同时永久禁用自己。 - 结果是:小脑被消耗、台子关闭、SPEX 哑火。重新进入交易所时既没有小脑可交,也没有门可走。
修复内容
| 配置项 | 默认 | 作用 |
|---|---|---|
Server.PreventSpexAnger |
true |
拦截 SetStateOnHurt.SetPain()(仅当对象带 SolusVendorController)与 SolusVendorMainState.CanExecuteSkill(),SPEX 不会进入偷取状态,也就不会触发赶人。 |
Server.RefundExposedCerebellum |
true |
记录真正交出暴露小脑的玩家;一旦 StealItem.OnExit 发生(被赶出),若该玩家背包里既没有暴露小脑也没有加密小脑,就补发一个。 |
Server.AnnounceRefund |
true |
补发时向全队广播一条提示。 |
补发只给最初提交供奉的那名玩家,不是房主、也不是现场随机玩家;多人局里别人乱开枪导致被赶,物品仍回到提交者身上。补发前会检查背包,已有小脑时不会重复发放。
与同类 mod 的关系
社区里已经有一个做同一件事的 mod:NoSpexKickout(作者 Jeffdev,2025-11-19 发布)。它同样能阻止 SPEX 把人赶出计算交易所,但实现和覆盖范围不同:
- 它把
StealItem.FixedUpdate整个替换成空函数。StealItem状态仍然会被进入,导致 SPEX 卡在这个状态里出不来:主状态SolusVendorMainState停止运行,OnEnter里创建的ItemStealController永远悬空。 - 它只做“阻断”,不处理已经发生的情况——如果小脑已经被消耗、人已经被赶出去,它救不回来。
- 该项目未开源:包内没有 LICENSE,也没有源码仓库链接,只能通过反编译查看实现。
本 mod 的差异:拦截发生在进入 StealItem 之前,SPEX 状态机保持正常;额外的补发逻辑可以修复已经中招的局;仅依赖 BepInExPack;源码公开。
两个 mod 都能阻止赶人,不要同时安装,没有意义。
安装(r2modman)
- 打开 r2modman,选择 Risk of Rain 2 配置。
- Online 页搜索
SPEX Softlock Fix(Thunderstore 上传后可用);或 Settings → Import local mod 选择下载到的 zip。 - 点击 Start modded 启动。
多人游戏中只需房主安装即可生效,逻辑全部是服务端判定。
兼容性
- 只挂钩 SPEX 专用的类/方法,不影响其他敌人的硬直、冰冻、嘲讽。
SetPain是通用方法,但 Prefix 第一行就判断对象是否带SolusVendorController,其他单位直接走原逻辑。- DLC 更新若改动相关类名,补丁会失效而不是崩溃;日志里能看到四条 Harmony 挂载记录。
- 配置项说明为中英双语;补发提示会跟随游戏语言(中文界面显示中文,其他语言显示英文)。
已知限制
- 补发按本局记录,只有在同一局里亲自供奉过暴露小脑才会触发。
- 玩家断线重连会换
CharacterMaster,记录随之失效(这种情况不补发)。 - 开启
PreventSpexAnger后,SPEX 不会再有「被打就偷东西并赶人」的反应,这是有意的行为变更。
构建
需要 .NET SDK 与游戏目录下的 RoR2.dll / BepInEx 5 + HarmonyX:
dotnet build -c Release
dotnet build -c Release -p:GameDir="<游戏目录>" -p:BepInExCoreDir="<profile>\BepInEx\core"
英文说明见 README_EN.md。
许可证
本项目以 GNU General Public License v3.0 or later(GPL-3.0-or-later) 发布,完整条款见 LICENSE。
你可以自由使用、修改和再分发,但分发修改版时需要同样以 GPL 授权并提供源码。