BreakFree
Double-tap Space to break free when grabbed during Q-triggered tumble in R.E.P.O.BreakFree
如果你很讨厌被人抓着不放手,那你非常需要这个模组。毕竟在 R.E.P.O. 里被队友、敌人或某个过分热情的物理抓取爱好者拎来拎去时,保持一点点个人空间是非常合理的诉求。
功能概览
BreakFree 是一个轻量级 BepInEx + Harmony 模组,用来在特定倒地状态下给玩家一个“别碰我,我要起来了”的按钮组合:
- 仅在你通过
Q主动触发 tumble / 倒地状态后生效。 - 当其他玩家正在抓取你时,允许你在短时间内双击空格强制挣脱。
- 挣脱会走游戏原版释放和站起流程,尽量减少对原版行为的打扰。
- 提供诊断日志,方便判断模组有没有加载、检测到倒地、检测到抓取,以及有没有成功发送释放请求。
使用方法
- 在游戏中按
Q主动倒地。 - 如果其他玩家抓住了你,不要慌,也不要在语音里开始吟唱古老咒语。
- 在 2 秒内双击空格。
- 模组会强制释放抓取者,并请求游戏原版站起流程。
简单说:Q 倒地 → 被抓 → Space Space → “谢谢,不约。”
运作流程
BreakFree 通过 Harmony patch 监听并补充 PlayerTumble 的原版逻辑,核心流程如下:
- Patch
PlayerTumble.Update:在玩家更新 tumble 状态时检查当前是否符合挣脱条件。 - Patch
PlayerTumble.TumbleSetRPC:追踪通过 RPC 同步来的 tumble 状态,特别是多人游戏中非房主客户端可能拿不到完整本地输入标记的情况。 - 使用
isTumbling判断玩家是否仍处于 tumble / 倒地状态。 - 使用
isPlayerInputTriggered或模组记录的 RPC tracking 判断这次倒地是否来自玩家按Q主动触发。 - 使用
playerGrabbing判断是否存在其他玩家正在抓取当前玩家。 - 当检测到 2 秒内双击空格后,对符合条件的抓取者调用原版
ReleaseObjectRPC释放抓取。 - 成功释放后调用
TumbleRequest(false, true),让游戏继续走原版TumbleStop/ 站起流程。
也就是说,这个模组不是凭空把你弹射出去,而是尽量沿用原版 RPC 和站起路径:只是帮你更有礼貌、更坚决地说一句“放手”。
配置
BepInEx 会在配置目录生成:
BepInEx/config/com.breakfree.repo.breakfree.cfg
可用配置:
[Diagnostics] EnableDiagnostics:是否启用诊断日志,默认true。
如果你觉得控制台里 [break free] 的碎碎念太多,可以把它改成 false。重要警告和错误仍会尽量保留。
安装
Thunderstore / r2modman
推荐使用 Thunderstore 或 r2modman 安装。选择安装 BreakFree 后,启动带 BepInEx 的 R.E.P.O. 即可。
手动安装
如果你喜欢手动操作,也可以这样安装:
-
确保已经安装适用于 R.E.P.O. 的 BepInExPack。
-
创建目录:
BepInEx/plugins/BreakFree/ -
将
BreakFree.dll放入该目录:BepInEx/plugins/BreakFree/BreakFree.dll -
启动游戏。
日志排查
如果模组看起来没有工作,请在 BepInEx 控制台或日志文件中搜索:
[break free]
常见可用信息包括:
- Harmony patch 是否成功应用。
- FieldRef / 私有字段访问是否初始化成功。
- 是否观察到
TumbleSetRPC。 - 是否记录到第一次空格。
- 是否检测到双击空格。
- 是否调用了释放抓取者的 RPC。
- 是否请求了原版站起流程。
如果只有插件 loaded,但完全没有 [break free] 日志,请检查配置里的 EnableDiagnostics 是否被关闭,并确认你安装的是最新构建的 BreakFree.dll。
兼容性 / 注意事项
- 多人游戏建议所有玩家都安装本模组。
- 模组已尽量按原版 RPC 路径实现释放和站起,但不同游戏版本仍可能改动内部字段或流程,因此每个 R.E.P.O. 版本都建议实际验证。
- 本模组主要针对
Q主动倒地后被玩家抓取的场景,不保证覆盖所有被抓、被拖、被物理学制裁的奇妙情况。
祝你挣脱顺利。愿所有过度热情的抓取者都能学会边界感。
