RFFPlus
Standalone merged mod: ReverseFriendlyFire reflect (host) + TeammatesIgnoreBullets immunity, now also enforced on the host-authoritative damage path. Hot-reloadable via config. No Hikaria_Core / The Archive needed.RFFPlus — ReverseFriendlyFire Plus (Standalone)
合并版独立插件:反伤(主机权威)+ 玩家子弹免伤(任何端),全部参数支持 config 配置文件热重载。
本插件不依赖
Hikaria_Core与The_Archive_UNSTABLE_TEST_ONLY(两者的旧版本已从 Thunderstore 下架,导致原 MOD 无法安装)——本插件只依赖 BepInExPack_GTFO 本体,开箱即用。
功能
免伤模式(任何端生效)
- 玩家(含哨戒炮)的子弹不再对玩家造成伤害
- 带来源过滤:只有伤害来源是「玩家」才拦截,敌人伤害完全不受影响
- 哨戒炮开火期间无条件拦截,炮台友伤 100% 覆盖
- 主机安装时保护全队:在主机权威的伤害结算路径上生效(
Dam_PlayerDamageBase/Local.ReceiveBulletDamage), 且不依赖反伤开关——只要「启用玩家子弹免伤」打开,队友与主机本人被玩家子弹命中都不掉血 - 客机安装时保护自己的开火(沿用命中解析点
Dam_PlayerDamageLimb.BulletDamage拦截)
反伤模式(主机权威)
- 队友被友方子弹打中时:实际承伤 = 原始伤害 × 友伤倍率;开枪者被反噬 = 原始伤害 × 反伤倍率
- 「反伤致死」可开关:反噬足以耗尽血量时直接击倒开枪者
- 哨戒炮的友伤归属到「放置者」
- 该模式与 1.0.2 行为完全一致(含
友伤倍率仍在反伤开关之内)
配置(热重载)
配置文件:BepInEx/config/RFFPlus.cfg
游戏运行中直接用记事本改这个文件并保存,立即生效,无需重启游戏(内置 FileSystemWatcher + 防抖自动 Reload)。
| 分区 | 配置项 | 默认 | 说明 |
|---|---|---|---|
| 免伤模式 (任何端生效) | 启用玩家子弹免伤 | true | 关掉后恢复原版友伤 |
| 反伤模式 (主机生效) | 启用友伤反伤 | true | 反伤总开关(关闭后仍可单独使用免伤模式) |
| 反伤模式 (主机生效) | 友伤倍率 | 0 | 被队友打到的承伤倍率,0=不掉血(仅在反伤开关打开时参与计算) |
| 反伤模式 (主机生效) | 反伤倍率 | 1 | 开枪者被反噬的倍率 |
| 反伤模式 (主机生效) | 反伤致死 | true | 反伤耗尽血量时直接击倒开枪者 |
| 诊断 (排查用) | 输出诊断日志 | false | 记录 [RFFPlus][diag] 拦截点与结论;默认关闭,排查时临时打开 |
想"只关友伤、不要反噬":把「启用友伤反伤」设为
false、保持「启用玩家子弹免伤」为true即可 —— 这是 1.0.3 修好的组合(1.0.2 下该组合不生效)。
安装
把 BepInEx/plugins/RFFPlus/RFFPlus.dll 放进 GTFO 游戏目录(或 r2modman 的 profile)的 BepInEx/plugins/RFFPlus/ 下即可。
排查日志
需要定位"为什么队友还是掉血"时,把 [诊断 (排查用)] 输出诊断日志 改成 true(默认关闭,避免刷屏),然后看 BepInEx/LogOutput.log:
[RFFPlus][diag] receive point=base|local verdict=immunity-blocked ...→ 主机权威路径拦截成功[RFFPlus][diag] receive ... verdict=immunity-blocked:sentry→ 哨戒炮友伤被拦[RFFPlus][diag] receive ... verdict=passthrough:not-player→ 敌人子弹(放行,符合预期)[RFFPlus][diag] receive ... verdict=passthrough:immunity-off→ 免伤开关关闭(等同原版)[RFFPlus][diag] receive ... verdict=reflect-applied reflected=…→ 反伤模式生效[RFFPlus][diag] limb verdict=immunity-blocked master=False→ 客机侧保护自己的开火
致谢 / 参考
本插件在以下优秀 MOD 的思路上重构而来,感谢原作者:
- Hikaria (Mamizu1028) — ReverseFriendlyFire 反伤逻辑参考(伤害缩放 + 主机 SendSetHealth/SendSetDead 反噬 + 哨戒炮归属放置者)
- Localia — TeammatesIgnoreBullets 客机免伤思路参考(Dam_PlayerDamageLimb.BulletDamage 拦截点)
- AuriRex — The Archive 框架(理解 GTFO IL2CPP 伤害链路的参考)
- BepInEx 团队与 GTFO 模组社区
与原版的差异
| 项 | 原 RFF 1.2.0 | RFFPlus 1.0.3 |
|---|---|---|
| 依赖 | Hikaria_Core 0.0.7(已下架)+ The Archive fork(UNSTABLE) | 仅 BepInExPack_GTFO |
| 主机免伤 | 无(只做反伤) | 有(主机权威路径拦截,独立于反伤开关) |
| 客机免伤 | 无 | 有(带来源过滤,敌人伤害零误伤) |
| 哨戒炮免伤 | 依赖来源判定 | 开火期无条件拦截(命中解析点 + 权威路径) |
| 敌人子弹安全性 | 来源无条件强转 PlayerAgent,存在崩溃隐患 | TryCast 判型,敌人子弹零风险 |
| 热重载 | The Archive 设置界面 | 任意文本编辑器改 cfg 即时生效 |
| 诊断日志 | 无 | [RFFPlus][diag] 可开关(1.0.3 新增) |
反馈与开黑
- 问题反馈与功能建议:https://qingju.me
- 玩家开黑语音频道:小黑盒语音
- 频道直链:https://chat.xiaoheihe.cn/in1wpsjd
