蟑螂不是现在 - 重制版

蟑螂不是现在 - 重制版

蟑螂不再在过场动画中抢镜,也不会走进你的剑斗中。当场景开始时(除非她是场景的一部分)以及在战斗中,她会退出镜头。

[size=6][b]Roach, Not Now[/b][/size]

“留在这里。别插手——无论发生什么。”

Roach 显然理解成了:“明白。我就站到他脸正前方。”

你懂的。一段严肃、感人的过场动画开始了……然后半屏都是马的鼻子。战斗打响了……Roach 却停在你和那只你正要砍的水鬼之间。

这个模组礼貌地请她退后一步——至于退多远,由你决定。

[size=5][b]功能[/b][/size]

🎬 过场动画与对话 当场景开始且 Roach 距离近于过场距离时,她会悄悄被移动到该距离之外、镜头后方、一个她确实能站立的的安全位置。如果场景播放中她又溜回过场舒适区内,她只会自己走开——不会二次传送,不会突然闪现。

🐴 Roach 有戏份的场景 上马动画、她参与其中的任务场景……游戏会告诉模组哪些角色属于该场景。如果 Roach 是其中之一,她会完全不受干扰,直到场景结束。

⚔️ 战斗 步行战斗时 Roach 踏入战斗舒适区?她会小跑回战斗退避距离。不会太远——你吹口哨时她仍就在附近。

🧘 不涉及的情况

  • 骑乘时什么都不会发生——模组甚至不会运行。
  • 口哨与原版完全一致。
  • 其他马匹、NPC 和任务不受影响。
  • 加载存档后的最初几秒内什么都不会发生(游戏在加载时会短暂报告“过场动画”——不会有意外传送)。

[size=5][b]设置[/b][/size] 选项 → 模组 → Roach, Not Now——更改即时生效,无需重新加载。

  • 过场动画:将 Roach 移出镜头 — 开 — 开启或关闭整个过场动画功能。
  • 过场动画:距离 — 35 米(20 – 60) — 场景开始时 Roach 被送出的距离。仅当她近于此距离时才会被移动。
  • 过场动画:舒适区 — 15 米(5 – 30) — 场景期间,若她回到此距离内,她会自行走开。
  • 战斗:Roach 退避 — 开 — 开启或关闭战斗功能。
  • 战斗:舒适区 — 10 米(4 – 20) — 战斗中,若她靠近至此距离内,她会退避。
  • 战斗:退避距离 — 15 米(6 – 36) — 她退避时走出的距离。

模组会自动保持数值合理(舒适区始终小于她被送出的距离)。 默认值在首次启动时自动设置。

[size=5][b]常见问题[/b][/size]

  • 我仍然在广角镜头的远景中看到 Roach。 调高过场动画:距离。
  • 战斗后 Roach 离得太远。 调低战斗:退避距离。
  • 我喜欢战斗中她待在附近。 关闭战斗:Roach 退避——过场动画功能仍会继续工作。
  • 我看不到菜单。 5.00 补丁存在一个 bug:当模组菜单超过 10 个时会出现。安装 Mod Settings Menu Fix。
  • 能在现有存档上使用吗/我能移除它吗? 都可以。不会向你的存档写入任何内容。

[size=5][b]兼容性[/b][/size]

  • 为**《巫师 3 重制版》(5.00 补丁)**构建。
  • 仅使用注解(@wrapMethod、@addMethod、@addField):不替换任何原版脚本,无需 Script Merger,可与替换 r4Player.ws / playerWitcher.ws 的模组共存。
  • 可能与让 Roach 保持靠近或在玩家身旁生成她的模组冲突(例如 Annoying Horse、Roach is Punctual)——它们想让她靠近,而这个模组想让她让开。

[size=5][b]安装[/b][/size]

  • Vortex: 通过模组管理器下载,完成。
  • 手动: 将压缩包解压到游戏文件夹(The Witcher 3\)。你应该得到 Mods\modRoachNotNow\ 和 bin\config\r4game\user_config_matrix\pc\modRoachNotNow.xml。
  • 卸载: 删除这两项。

[size=5][b]翻译[/b][/size] 菜单提供英语和法语;其他语言显示英语。想让它支持你的语言?在评论区贴出翻译好的 8 行文本,我会添加并注明出处。

[spoiler] 技术细节(给好奇的人和模组作者)

  • 钩子: W3HorseComponent.ShouldTickInIdle(),在无人骑乘马匹(Idle 状态)时每帧调用——骑乘时零开销。每 0.2 秒检查一次,仅限玩家马匹(playerHorse 标签)。每 2 秒重新读取设置。
  • 场景检测: theGame.IsDialogOrCutscenePlaying()。如果 IsInNonGameplayCutscene() 或 IsInGameplayScene() 为 true,Roach 被视为场景的一部分 → 直到场景结束不干预。如果模组被暂停(例如你正在骑乘),下一个场景始终被视为新场景。
  • 过场移动: 每个场景一次 TeleportWithRotation,传送到镜头后方 NavigationFindSafeSpot 点(尝试 0°、±45°、±90°;若未找到有效位置则不做任何操作)。之后仅使用 ActionMoveAwayFromNodeAsync(步行)。
  • 战斗: 在舒适区内使用 ActionMoveAwayFromNodeAsync(player, distance, run),最多每 2 秒一次。
  • 加载保护: 加载存档后最初 5 秒内看到的场景会被忽略。
  • 当 Roach 死亡或处于任务控制的骑乘状态(GetQuestRiderOverride())时忽略她。
  • 通过隐藏的设置版本变量在首次启动时写入默认值。 [/spoiler]

[size=5][b]已知限制[/b][/size]

  • 战斗中,Roach 自身的恐慌 AI 偶尔会覆盖“退避”指令。
  • 非常广的过场镜头仍可能捕捉到她在远景中(调高距离)。

[size=5][b]致谢与许可[/b][/size]

  • 感谢 WolvenKit 和 w3strings-rust 项目记录了字符串文件格式。
  • 主图:CD PROJEKT RED 官方《巫师 3》美术作品。
  • 使用代码、制作补丁、变体或翻译:请随意,只需注明出处。请不要重新上传模组本身。