Files
Genarrative/docs/audits/RPG_REVIVE_CONTINUE_FLOW_FIX_2026-04-28.md
高物 a9febe7678
Some checks failed
CI / verify (push) Has been cancelled
1
2026-04-28 10:57:40 +08:00

2.0 KiB

RPG 复活后继续冒险链路修复记录 2026-04-28

问题现象

RPG 运行态里,角色在战斗死亡并复活后,面板会显示一个“继续前进”入口。

此前这一步只有 story_continue_adventure 控制项,没有同步挂出复活后首场景应该展示的 deferredOptions。因此玩家点击继续后,系统会把它当作一次普通剧情续推入口,而不是单纯展示“复活后的下一批可选动作”。

在带有场景章节主 NPC 的自定义世界里,这会让玩家看起来像是“刚复活就直接和对面主 NPC 聊天”,造成复活后第一拍体验被主 NPC 对话链抢走。

根因结论

根因不在 NPC 聊天函数本身,而在死亡复活链没有沿用 story_continue_adventure -> deferredOptions 的延迟展示协议。

  • 战后胜利链已经使用 story_continue_adventure + deferredOptions
  • 死亡复活链此前只保留了 story_continue_adventure
  • 结果是“继续前进”点击后无法走纯展示分支,只能落回普通续推

本次修复

本次在 src/hooks/rpg-runtime-story/postBattleFlow.ts 与复活调用链中补齐:

  • buildDeathStory(...) 现在支持在复活文案上同步挂出 deferredOptions
  • 这些 deferredOptions 复用 buildFallbackStoryForState(...) 产出的复活后可用入口
  • 点击“继续前进”时只揭示这些入口,不再额外触发一次普通剧情推演

当前行为规则

角色死亡复活后:

  1. 先显示“你在战斗中倒下,随后重新醒来”
  2. 面板只展示一个 story_continue_adventure
  3. 点击后展示复活后首场景已有的后续动作
  4. 不应直接自动推进到主 NPC 聊天执行态

回归覆盖

已补两条测试:

  • src/hooks/rpg-runtime-story/choiceActions.test.ts
    • 覆盖本地战斗失败后的复活链
  • src/hooks/rpg-runtime-story/storyChoiceRuntime.test.ts
    • 覆盖服务端战斗失败后的复活链

两条测试都要求复活文案返回:

  • story_continue_adventure
  • 非空 deferredOptions