# 26-apply · 《盲航》重构施工单(26 号文档落地) > 设计单正文见 04-space-rebuild.md 附录 C,本文是施工记录。交互规则权威: > [26-audio-interaction-playbook.md](26-audio-interaction-playbook.md)(施工口径 > [00-global-ux.md](00-global-ux.md))。台词增量见 > [04-space-voice-ids.md](04-space-voice-ids.md) R6 节与 `tools/voice_lines_26/space.md`。 ## 1. 实现接线(状态 → Floor 态、等待点、接线面) | 游戏状态(phase) | Floor 态 | 等待点 | 说明 | |---|---|---|---| | `drill` 指令在播 | SPEAKING(**critical**) | — | 手势一律 busy 回执(不跳句、不打断);指令 ≤3s | | `drill` 演练陨石悬置 | YOUR_TURN | `d1_left`~`d4_down`(04 §0.5 表:full=指令句、short=`d_short_*`、静默 6s/15s、L2 只认该方向、L3=onDemo 演示拨开) | whoosh 即威胁声;帮助=长按不闭窗 | | `playing` | **ACTION**(`enterAction()`,不起等待声) | 无(刷怪节奏即状态声) | 玩法语音走游戏层语音队列(见 §2) | | `playing` 归因/里程碑/护盾在播 | SPEAKING(经队列) | 无 | 滑动打断并闪避;tap 跳句 | | `over` 结算链 | SPEAKING(成绩链 content → 承诺段 critical) | 链播完 `yieldTurn(settle)` | settle:tap=再飞,down(阶段 2)=菜单,长按/双击=重听 | | `menu` | SPEAKING → YOUR_TURN | `menu`(tap/left/right) | 左右滑换项报名、单击确认、长按重听菜单说明 | | `ask` / `reopen` | SPEAKING → YOUR_TURN | `ask`(tap/up)、`reopen`(tap/right) | 回访者「点一下出发」;断点「继续/重开」 | | `leaving` | SPEAKING(确认句) | — | 播完或 2.5s 看门狗跳大厅 | 构造暴露:`this.receipts / floor / confusion / invalidHints / ladder`; `invalidHints.bind(floor)`;`confusion.onConfused → _takeover`(对局三级接管); `onGesture` 返回 `ok|hold|invalid|silent-ok`;`stateName()`;`invalidHint(state,g)`; `PIPELINE_OPTS = { swipeCore: true, longpressCore: true }`;`DT_CORE`(双击窗口分档快照)。 index.html:`makeInputPipeline` 接线;`ladder.stage() >= 3` 时默认双击窗口 + `doubletapCore: true`(双击=护盾),否则 `{ doubleTapWindow: 0 }`(双击折算 tap)。 visibilitychange:隐藏 `game.stop()`(自动存档);回前台 `game.start()` 走断点复述。 **对局语音队列(`_say`/`_pumpVoice`,26 §4.6 优先级 + R5-2 保留)**:一条链一条链播。 `interrupt`(dir 呼喊)= 生存优先,立刻顶断当前链,被顶断的 `defend` 包 (hit_*、hit_last、protect_end)整链重排一次;`defend`(归因)排在呼喊后、内容前; 其余(里程碑/护盾/教学/帮助)FIFO;`protect` 包去重(上一句在播即跳过 + 30s 台账)。 玩家手势打断链 = 该包作废(原则 5)。26 号 §6.2 的「打断失败」指标由 ACTION 态直通 + 呼喊豁免保证。 ## 2. 与 04 号文档的偏差记录 1. **演练指令/纠错/带过链全部 critical**:04 §0.4 矩阵列「演练指令 critical 行」的 长按格写「帮助」,引擎 critical 对所有手势一律 busy(floor.js 语义),无法豁免 单一手势。指令 ≤3s,事后长按立即可用。取舍理由:流程驱动句被打断会卡死演练 (onDone 不触发 → 不 spawn),critical 是唯一稳妥解。 2. **round2 R2「hit_last 在播期间呼喊抑制」简化为「hit_last 一并走防顶断登记」**: Floor 单链模型下抑制呼喊会饿死生存信息(逼近最短 2.0s);hit_last(defend) 被呼喊顶断后整链重排一次,保证完整送达,语义等价且更简单。 3. **演练陨石 spawn 不再同窗播 dir 呼喊**:04 §2 流程表无此件(指令刚说过方向, 语音先、音效后不叠)。实战呼喊保留(round4 R1 反应窗口起点不动)。 4. **双击窗口分档在页面加载时快照**(`DT_CORE = ladder.stage() >= 3`):会话中途 跨过阶段 3 的玩家本会话双击仍折算 tap(attach 不可热换),下局页面重进生效。 5. **新手锁血的归因说 hit_