2.4 KiB
2.4 KiB
RPG 战斗确定性结束流程
更新时间:2026-04-26
背景
旧战斗单行为 PRD 允许在逃跑成功或战斗结束后再触发一次剧情推理。新的运行时规则改为:战斗过程与战斗结果都不再请求剧情推理,所有胜负出口都由确定性状态与固定选项驱动。
落地规则
- 战斗中的
battle_attack_basic / battle_use_skill / battle_recover_breath / inventory_use / battle_escape_breakout只结算数值、血量、冷却、物品与战斗状态,不再请求generateNextStep或 Rustgenerate_action_story_payload的战斗推理。 - 玩家血量小于等于 0 时,先展示死亡动画;三秒后复活到当前世界的第一个场景第一幕。
- 复活状态必须清理战斗、遭遇、NPC 交互、战斗特效、当前 NPC 战斗结果,并把生命与灵力恢复到最大值。
- 战斗胜利或切磋结束时,弹出固定选项:
- 若当前场景仍有下一幕:只显示“继续前进”,并把下一幕运行时状态与可用选项挂到
deferredRuntimeState / deferredOptions,点击后只揭开下一幕选项,不触发剧情推理。 - 若当前场景已是最后一幕:显示可前往的其他场景选项,每个选项透传
runtimePayload.targetSceneId。
- 若当前场景仍有下一幕:只显示“继续前进”,并把下一幕运行时状态与可用选项挂到
- “继续前进”和“前往其他场景”都是本地状态推进,不展示额外说明面板,不把规则描述写入 UI。
工程落点
src/hooks/rpg-runtime-story/postBattleFlow.ts- 生成死亡复活状态。
- 生成战斗胜利后的固定
StoryMoment。 - 解析下一幕或其他场景选项。
src/hooks/rpg-runtime-story/storyChoiceContinuation.ts- 本地 fallback 胜利分支不再调用
generateStoryForState(...)。 - 玩家死亡分支播放死亡态并延迟复活。
- 本地 fallback 胜利分支不再调用
src/hooks/rpg-runtime-story/storyChoiceRuntime.ts- 服务端 runtime action 回包若是战斗死亡或胜利,同样覆盖为固定流程。
server-rs/crates/api-server/src/runtime_story/compat/ai.rs- 战斗 outcome 不再触发 reasoned story payload。
验收
- 战斗中普通攻击、技能、恢复、物品、逃跑不会触发剧情推理。
- 玩家被打到 0 血时先播放死亡动画,约三秒后复活到第一个场景第一幕。
- 战斗胜利后只出现“继续前进”;最后一幕后出现其他场景入口。
- 服务端 runtime action 与本地 fallback 两条链表现一致。