Files
SoundGame/docs/design/16-dungeon-voice-ids.md
T
xsl ee5d4d2544 feat(playbook): 26 号交互手册全量落地——剩余 12 款深度重构 + 语音全量重制
storyline/escape/simon 首批之后的推广收官:15 款全部按 26 号模式运行
(发言权/回执/三档提示/迷茫接管/手势阶梯/断点复述),旧「双击重听/格挡/
菜单确认」等反模式口径全线废除,开场零规则念白(首句即动手)。

游戏层(12 款):rpg(格挡=前摇窗口内再单击)/ rhythm / space / radio /
dungeon / abyss / detective / cipher / teahouse / keeper / bridge /
hunt(联机切片):
- 每款 game.js 接引擎六模块 + makeInputPipeline(doubleTapWindow:0);
  四向玩法类 swipeCore + 长按帮助;双击是玩法的(space 护盾 / hunt
  旋风斩)按手势阶梯阶段 3 分档恢复双击窗口(doubletapCore)
- 每款 playtest 重写:玩法断言 + §6.2 乱点机器人(无声操作 / 被动
  原句重复 / 打断失败 = 0);15 款 3900+ 断言全绿
- 12 份 docs/design/26-apply-*.md 施工单 + tools/voice_lines_26/
  台词清单 + voice-ids 文档同步 + 转写会话剧本按新口径重写

引擎层(web/engine/,6 处修复):pipeline 增 doubletapCore;novice
teachLine 带 voice/ 前缀(此前教学句被静默丢弃);confusion.record
前置到新手门(锁定手势的乱点也计信号);InvalidHints 播完恢复解释前
状态(根治孤儿 BUSY);WaitPoint takeover(2) 台账去重;台账只在
speak 真正播出时登记。遗留引擎债登记 roadmap §3.1。

语音资产:台词表合并(新增 ~250 系统句 / 改 ~50 旧口径 / 删 ~110
废止句;合并器 tools/merge_voice_lines_26.py + 引用校验器
tools/validate_voice_refs.py),GPU 重录 1536 wav → 4204 ogg/m4a
落地,check_all_assets + validate_voice_refs 双绿;键盘变体同步扩表。

大厅/文档:15 款统一新交互口径(「新交互」徽标退役);README /
HANDOVER / rpg README 旧口径修正;roadmap P0-P3 置完成。
2026-10-02 12:33:20 +08:00

318 lines
22 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 16b · 《回声地窟》语音台词表(voice ids,录音依据)
> **26 号对齐(资产清单,不是交互宪法)**
> - 交互与新手手势以 [26-audio-interaction-playbook.md](26-audio-interaction-playbook.md) 和对应游戏正文为准;本作深度改造设计单见 [26-apply-dungeon.md](26-apply-dungeon.md)。
> - 本表是 TTS id 事实源的**登记副本**(生成以 `tools/gen_voice_dual.py` 为准;26 号改造替换稿见 `tools/voice_lines_26/dungeon.md`:新增 35 / 修改 4 / 删除 25 / 键盘变体 44,127 → 137 句)。下方 A~M 组为 26 号前登记底表,增量以文末「26 号同步」三节为准。
> - 写作:指令 ≤12 字,短句档 ≤6 字,叙事 ≤25 字,状态查询 ≤20 字;每句标 `critical` / `content` / `hint` / `feedback`。游戏主动提示不得原样重复(30s 台账);主动重听前加「再说一遍:」。
> - 键盘变体:新手期回车当空格(单击)。删除「按回车=重听/确认」类旧口径,阶段 3 解锁双击后才按回车重听。
> - 通用系统句与 storyline 文案逐字一致(sys_first_tap / sys_turn_teach / sys_say_again / sys_unlock_*)。多音字:「重听」一律作「重新听」。
> **给音频总监的录制说明**
> - **全部旁白,无 NPC**:本作怪物不说话,无角色音(主设计 §1/§9.3)。125 句双性别。**female = Serena,male = Uncle_Fu**(沿用 R1 分配惯例)。落 `web/dungeon/audio/voice/female|male/<id>.{ogg,m4a}`。
> - female instruct 常量:`平静清晰的女声,像探窟向导,沉稳可信`
> - male instruct 常量:`低沉醇厚的男声,像探窟向导,沉稳有力`
> - 两常量全表统一(含教学/战斗/结算),禁止句级变体。
> - 数字规避:层数(7 句)/血量(4 档)/金币(4 档)/面朝(4 句)/威胁(4 句)/战利(3 档)/死因(3 档)/元进度(3 档)全部分档整句,无运行时拼接。
> - 多音字自查:全表无「血」「重(chóng/zhòng 歧义句)」「爪」「挨」「壳」「栅」;「重听」一律写「重新听」;「重新」为规范 sanctioned 常用词(sys_menu_help / sys_menu_restart)保留。「回声回来越快」已去掉助词「得」。余留风险 2 处已标注:`btl_bat` 的「蝠」(读 fú,试听异常则整句改「盲眼蝙蝠扑了过来」);`unlock_potion` 的「行囊」(xíng náng 固定词,试听确认)。R3 新句自查:`gold_some`(带回来一点,不多——无多音字风险);`tut_flee_hold`(想逃跑,按住别松手——无风险)。
> - 向导/卡关通道句(gd_*、stair_*、nav_*):trigger 见表;接线纪律按 14 号文档——watchdog/纠错句 idle-only、onceKey 同局限次、向导插播一律 queue:true;开发轮次须将本表 gd_* 条目登记进 14 号文档增补。
> - 管线:`tools/gen_voice_dual.py` 照录(--game dungeon);生成后 `--convert` 落盘 + `tools/check_all_assets.py` 终检(双格式配对、双性别集合一致)。
## A 组 · 序章/标题(旁白 ×4)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `intro_1` | 你在黑暗中醒来。这里是回声地窟。 | 新周目开场 1 |
| `intro_2` | 伸手不见五指,声音就是你的眼睛。 | 新周目开场 2 |
| `sys_continue_ask` | 检测到探窟记录。单击继续,右滑重新开始。 | 有存档进游戏(TITLE) |
| `sys_new_run` | 新的探窟,开始了。 | 新周目开始 |
## T 组 · 教学演练 DRILL(旁白 ×20)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `tut_d0` | 先学会用耳朵看。单击,发出声波脉冲。 | D1 前(首次脉冲引导) |
| `tut_echo_come` | 听,回声回来了。 | D1 首次回声后 |
| `tut_front_rule` | 回声回来越快,墙就越近。 | D2(正前距离规则) |
| `tut_side_rule` | 两侧的回声,发闷是墙,空旷是通路。 | D3(侧向规则) |
| `tut_walk` | 按住屏幕不放,你就往前走。 | D4 |
| `tut_turn` | 左滑右滑,可以转身。 | D5 |
| `tut_replay` | 双击,再发一次脉冲,不要钱。 | D6(重发免费) |
| `tut_status` | 上滑,随时听自己的状态。 | D7 |
| `tut_menu` | 下滑,打开菜单。 | D7 |
| `tut_mob` | 前面有东西!放心,它伤不到你。 | D8 遭遇教学怪前(真话:ATK0) |
| `tut_parry` | 听到它的动静,双击格挡。 | D8 前摇前 |
| `tut_parry_ok` | 挡住了! | D8 格挡成功(成功只给新短句) |
| `tut_parry_miss` | 没挡住也别怕,它伤不到你。 | D8 格挡失败 |
| `tut_attack` | 现在单击,挥拳打它。 | D8 你的回合 |
| `tut_kill` | 打中了,就是这样。 | D8 击杀 |
| `tut_flee_hold` | 想逃跑,按住别松手。 | R3:战斗长按未满 900ms 松手(取消逃跑)时的区分提示,每场 1 次 |
| `tut_stairs` | 铁器的回声,就是下潜的楼梯。 | D9 |
| `tut_stairs_on` | 楼梯就在脚下。单击,下潜。 | 首次踏上楼梯格 |
| `tut_done` | 教学完了。地窟很深,小心走。 | DRILL 完成 |
| `tut_skip` | 已跳过教学。单击脉冲,先听听四周。 | 下滑跳过教学 |
## S 组 · 系统/菜单/状态(旁白 ×36)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `sys_saved` | 进度已保存。 | 存档写入后 |
| `sys_menu` | 菜单。单击切换,双击确认。 | 下滑呼出菜单 |
| `sys_menu_resume` | 返回探索。 | 菜单项 |
| `sys_menu_save` | 保存并回大厅。 | 菜单项 |
| `sys_menu_help` | 重新听帮助。 | 菜单项 |
| `sys_menu_restart` | 重新开始本周目。 | 菜单项 |
| `help_explore` | 单击脉冲,按住前进,左右滑转身。双击再听,上滑状态,下滑菜单。 | 帮助(探索) |
| `help_battle` | 敌人前摇声响时双击格挡,单击挥击。打不过就按住屏幕逃跑。 | 帮助(战斗) |
| `settings_hint` | 音色、语速、背景音乐,请回大厅修改。 | 菜单内 |
| `st_floor_1` | 这是第一层。 | 上滑状态链 / 进层 |
| `st_floor_2` | 这是第二层。 | 同上 |
| `st_floor_3` | 这是第三层。 | 同上 |
| `st_floor_4` | 这是第四层。 | 同上 |
| `st_floor_5` | 这是第五层。 | 同上 |
| `st_floor_6` | 这是第六层。 | 同上 |
| `st_floor_7` | 这是第七层。 | 同上 |
| `st_hp_1` | 你毫发无损。 | 血量 >75% |
| `st_hp_2` | 你受了点伤。 | 50~75% |
| `st_hp_3` | 你伤势不轻。 | 25~50% |
| `st_hp_4` | 你命悬一线。 | ≤25%(danger earcon + warning 震,降档才播) |
| `st_gold_1` | 口袋空空。 | 元进度总金币 =0(R3 起 band0 专用:真的一枚没有) |
| `gold_some` | 带回来一点,不多。 | R3 E1-2:金币档 1(0<金<50)真话句——上滑状态链 / SETTLE / TITLE 三处共用(修「捡到金币→口袋空空」谎报) |
| `st_gold_2` | 有些积蓄。 | 50~200 |
| `st_gold_3` | 收获可观。 | 200~600 |
| `st_gold_4` | 腰包鼓鼓。 | >600 |
| `st_face_e` | 你面朝东。 | 上滑状态链(绝对方位) |
| `st_face_s` | 你面朝南。 | 同上 |
| `st_face_w` | 你面朝西。 | 同上 |
| `st_face_n` | 你面朝北。 | 同上 |
| `st_threat_none` | 附近很安静。 | 上滑威胁段(相对方位,只报左右) |
| `st_threat_left` | 左边有脚步声。 | 左侧 5 格内有怪 |
| `st_threat_right` | 右边有脚步声。 | 右侧 5 格内有怪 |
| `st_threat_both` | 两边都有动静。 | 两侧皆有 |
| `st_best_1` | 你还没到过第三层。 | TITLE 元进度·最深层数档 1 |
| `st_best_2` | 你最远到过中层。 | 档 2(最深 3-5 层;R3 措辞加「最远」——live P3:防误读为"本局到过",已重录) |
| `st_best_3` | 你到过最深层。 | 档 3(最深 ≥6 层) |
## E 组 · 探索事件(旁白 ×9)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `evt_coin_1` | 捡到几枚金币。 | 金币堆·小 |
| `evt_coin_2` | 捡到一小把金币。 | 金币堆·中 |
| `evt_coin_3` | 捡到一大袋金币。 | 金币堆·大 |
| `evt_potion` | 一瓶药水,收进腰带。 | 拾取药水(腰带空) |
| `evt_potion_full` | 腰带满了,药水留在原地。 | 已有药再拾(药不消失) |
| `evt_weapon` | 捡到更快的短刃,出手更狠了。 | 武器掉落(自动装备) |
| `evt_armor` | 换上更硬的护甲,更抗打了。 | 护甲掉落(自动装备) |
| `evt_stairs_lock` | 楼梯被大东西堵住了,先赢它。 | 窟主未清时踏上楼梯格 |
| `evt_descend` | 你顺着楼梯,往下潜。 | 下潜(DESCEND) |
## B 组 · 战斗(旁白 ×30)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `btl_bat` | 盲眼蝠扑了过来! | 遭遇盲眼蝠 |
| `btl_rat` | 窟鼠窜了出来! | 遭遇窟鼠 |
| `btl_mush` | 蘑菇怪拦住了你! | 遭遇蘑菇怪 |
| `btl_crab` | 窟主石甲蟹,就在你面前。 | 遭遇窟主(L3) |
| `btl_crawler` | 绕行者贴上来了,小心背后! | 遭遇绕行者(教学绕位威胁) |
| `btl_spider` | 洞蛛落地了! | 遭遇洞蛛 |
| `btl_leech` | 窟主腐沼蟒,挡住了楼梯。 | 遭遇窟主(L6) |
| `btl_guard` | 石像卫醒了! | 遭遇石像卫 |
| `btl_king` | 窟中之王,就在深处。 | 遭遇终 Boss(L7) |
| `btl_parried` | 挡下了大半! | 格挡成功(减伤 80%) |
| `btl_behind` | 它在你背后,转身再挡。 | 未面对攻击源挨打(归因真话) |
| `btl_swish` | 挥空了,它不在你面前。 | 挥击落空(归因真话) |
| `btl_no_turn` | 它贴着你不放,不用转身。 | 缠斗怪时转身(每场 1 次,之后仅 error 震) |
| `btl_kill` | 它倒下了。 | 击杀 |
| `btl_loot_1` | 战利不多。 | 战利档 1 |
| `btl_loot_2` | 小有收获。 | 战利档 2 |
| `btl_loot_3` | 大有收获。 | 战利档 3 |
| `btl_lvup` | 你的拳脚更利落了。 | 每击杀 4 只攻击升档 |
| `btl_flee` | 你甩掉了它,被抓了一下。 | 逃跑成功(真话:撤退挨一下) |
| `btl_flee_boss` | 退路塌了,跑不掉! | Boss 战逃跑拒绝(真话) |
| `btl_half_crab` | 石甲蟹的甲裂了! | 窟主半血(阶段转换信号) |
| `btl_half_leech` | 腐沼蟒暴怒了! | 窟主半血 |
| `btl_half_king` | 王怒了,脚步更重了! | 终 Boss 半血(二阶段) |
| `die_intro` | 你倒下了。 | 死亡链首句 |
| `die_cause_1` | 你被小怪拖垮了。 | 死因:普通怪连续失血(真话) |
| `die_cause_2` | 你没挡住那记重击。 | 死因:重击未格挡(真话) |
| `die_cause_3` | 你背后的偷袭,要了命。 | 死因:背刺(真话) |
| `die_adv_1` | 下次,前摇声响时就双击。 | 建议:全程格挡数为 0 |
| `die_adv_2` | 打不过,就按住屏幕逃跑。 | 建议:逃跑 0 次且死于连续战 |
| `die_adv_3` | 身后有动静,先转身。 | 建议:死于背刺 |
## G 组 · 卡关/看门狗/纠错(旁白 ×14)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `gd_pulse` | 单击脉冲,听听四周。 | 探索看门狗第 1 级(10s,full 档,idle-only) |
| `gd_turn` | 轮到你了。单击挥击。 | 战斗回合看门狗第 1 级(15s) |
| `gd_invalid` | 这个操作在这里用不上。 | 无效手势纠错(onceKey 同局限 1 次,之后仅 error 震) |
| `stair_hint_a` | 找找铁器的回声,那是楼梯。 | 卡关 L1 暗示(60s,楼梯未找到) |
| `stair_hint_b` | 楼梯有大东西守着,先赢它。 | 卡关 L1 暗示(窟主未清) |
| `stair_dir_e` | 楼梯在东边。 | 卡关 L2 明示(120s,绝对方位) |
| `stair_dir_s` | 楼梯在南边。 | 同上 |
| `stair_dir_w` | 楼梯在西边。 | 同上 |
| `stair_dir_n` | 楼梯在北边。 | 同上 |
| `nav_e` | 往东。 | 卡关 L3 带路(180s,导航模式逐步播) |
| `nav_s` | 往南。 | 同上 |
| `nav_w` | 往西。 | 同上 |
| `nav_n` | 往北。 | 同上 |
| `nav_done` | 到了,就是这里。 | 带路抵达楼梯 |
## M 组 · 结算/元进度(旁白 ×14)
| id | 台词全文 | 触发/语境 |
|---|---|---|
| `meta_gold_1` | 这趟没带回什么。 | 死亡/通关结算·金币入账档 1 |
| `meta_gold_2` | 这趟带回一些金币。 | 档 2 |
| `meta_gold_3` | 这趟满载而归。 | 档 3 |
| `settle_stronger` | 下个周目,你会更强。 | 结算钩子句(开环) |
| `settle_win_1` | 你捧起了地窟之心,通关了! | 通关 1 |
| `settle_win_2` | 黑暗的尽头,是光。 | 通关 2 |
| `settle_again` | 单击,再探一次。 | 结算尾(重开入口 ≤2s) |
| `unlock_lead` | 攒够了新的遗产。 | 新周目开场·有新解锁时 |
| `unlock_potion` | 解锁行囊药,开局自带一瓶。 | 遗产播报(90 金) |
| `unlock_vigor` | 解锁体魄,起始更强壮。 | 遗产播报(150 金) |
| `unlock_veil` | 解锁护符,每层头一下减半。 | 遗产播报(220 金) |
| `unlock_echo` | 解锁回声强化,侧向听得更远。 | 遗产播报(300 金) |
| `unlock_blade` | 解锁武器,开局带着短刃。 | 遗产播报(450 金) |
| `unlock_none` | 金币还不够,继续攒。 | TITLE 元进度·距下一解锁尚远 |
---
## 26 号同步 · 新增(35 句;`tools/voice_lines_26/dungeon.md` §1)
| id | 文案 | 类别 | 触发/语境 |
|---|---|---|---|
| `d0_new` | 黑暗。点一下,听回声。 | critical | D0 开场首句(§4.10 第一句即动手) |
| `sys_first_tap` | 点一下屏幕。 | critical | TITLE 无档询问句(与 storyline 逐字一致) |
| `sys_first_tap_short` | 点一下。 | hint | TITLE / 教学等待点短句档 |
| `sys_turn_teach` | 听到这个声音,就是轮到你了。 | content | D1→D2 交话轮状态教学 |
| `sys_say_again` | 再说一遍: | hint | 主动重听前缀(阶段 3 双击重听) |
| `sys_unlock_down` | 向下滑,可以打开菜单。 | content | 阶梯 2 解锁教学(ladder.teachLine) |
| `sys_unlock_dt` | 没听清,就双击,再听一遍。 | content | 阶梯 3 解锁教学(ladder.teachLine) |
| `tut_praise` | 对。 | feedback | 教学做对肯定(原则 11,≤4 字) |
| `tut_move` | 朝前,滑一下。 | content | D2 前进教学 |
| `tut_side_move` | 向左滑,转身走。 | content | D3 侧移转向教学 |
| `tut_coin` | 房里有金币,走过去捡。 | content | D4 自由拾取教学 |
| `tut_help_hold` | 迷路了,按住屏幕。 | content | D5 长按问路教学 |
| `tut_parry_tap` | 听到动静,单击格挡。 | content | D6 前摇单击格挡教学 |
| `hint_swipe` | 滑一下。 | hint | 教学等待点/接管 L1 短句 |
| `btl_turn_short` | 点一下,打。 | hint | 战斗等待点短句档 |
| `wall` | 那边是墙。 | feedback | 首次撞墙归因(整局一次) |
| `wall_dir_front` | 墙就在正前。 | feedback | 撞墙方位真话·前(每方向一次) |
| `wall_dir_left` | 墙在左手边。 | feedback | 撞墙方位真话·左 |
| `wall_dir_right` | 墙在右手边。 | feedback | 撞墙方位真话·右 |
| `wall_dir_back` | 墙在身后。 | feedback | 撞墙方位真话·后 |
| `inv_pulse` | 回声还没回来,稍等。 | feedback | 脉冲冷却期单击(状态×手势一次) |
| `inv_title` | 标题页,点一下就行。 | feedback | TITLE 意外滑动 |
| `inv_settle` | 结算完,点一下再来。 | feedback | SETTLE 意外滑动 |
| `inv_drill` | 先照我说的做。 | feedback | 教学步骤外手势 |
| `inv_tel` | 格挡只要单击。 | feedback | 前摇窗内长按/上下滑 |
| `inv_menu_locked` | 菜单,玩完一局解锁。 | feedback | 阶段 2 前下滑开菜单 |
| `menu_open` | 菜单。 | content | 菜单呼出(后接首项报名) |
| `menu_help` | 左右滑换项,单击确认。 | hint | 菜单说明/重听 |
| `menu_restart_confirm` | 重开就丢了这局。再点一次。 | feedback | 重开二次确认(原则 6) |
| `sys_only_up` | 现在,只要向上滑。 | feedback | 迷茫 L2 只放行·上 |
| `sys_only_down` | 现在,只要向下滑。 | feedback | 迷茫 L2 只放行·下 |
| `sys_only_left` | 现在,只要向左滑。 | feedback | 迷茫 L2 只放行·左 |
| `sys_only_right` | 现在,只要向右滑。 | feedback | 迷茫 L2 只放行·右 |
| `sys_demo` | 听我做一次。 | feedback | 迷茫 L3 演示前缀 |
| `sys_now_you` | 现在,你来。 | feedback | 迷茫 L3 演示交回 |
## 26 号同步 · 修改(4 句;id 不变整句替换)
| id | 新文案 | 旧文案(废止口径) |
|---|---|---|
| `help_explore` | 四向滑动走路,单击脉冲,长按问路。 | 单击脉冲,按住前进,左右滑转身。双击再听,上滑状态,下滑菜单。 |
| `help_battle` | 听到动静单击格挡;轮到你,单击挥击。下滑逃跑。 | 敌人前摇声响时双击格挡,单击挥击。打不过就按住屏幕逃跑。 |
| `die_adv_1` | 下次,前摇声响时就单击。 | 下次,前摇声响时就双击。 |
| `die_adv_2` | 打不过,就向下滑逃跑。 | 打不过,就按住屏幕逃跑。 |
## 26 号同步 · 删除(25 句;convert 后删音频)
`intro_1` `intro_2`(开场规则念白,§4.10 反模式);`tut_d0`(→ d0_new);`tut_echo_come`
(D1 由 tut_praise + tut_front_rule 承担);`tut_side_rule`(侧墙做中学:撞墙归因当场教);
`tut_walk`(长按=前进废);`tut_turn`(转身并入侧移);`tut_replay`(双击免冷却重播废);
`tut_status`(上滑=状态废);`tut_menu`(对局下滑=后退);`tut_parry`(双击格挡废 →
tut_parry_tap);`tut_flee_hold`(长按逃跑废 → 下滑);`sys_menu`(单击切换/双击确认废 →
menu_open + menu_help);`sys_menu_resume`(新菜单无「返回探索」项);`gd_pulse`
(探索等待声由环境承担);`gd_invalid`(回执 + inv_* 覆盖);`nav_e` `nav_s` `nav_w`
`nav_n` `nav_done`(导航改 stair_dir_* + sys_only_*);`st_gold_1..4`(旧上滑状态链废,
金位由 meta_gold_* + gold_some 承担)。
---
**合计(26 号后):沿用 98 + 修改 4 + 新增 35 = 137 句 ×2 性别 = 274 条音频**(×2 格式
= 548 文件;无 NPC 平铺件)。
死亡结算链 = `die_intro → die_cause_X → die_adv_Y → st_floor_N(复用)→ meta_gold_X(band1 且金>0 时为 gold_some)→ settle_stronger → settle_again`;
通关链 = `settle_win_1 → settle_win_2 → meta_gold_X(同上)→ unlock 段 → settle_again`;
局面复述链/长按帮助链 = `st_floor_N → [st_hp_X if 伤] → st_face_X → 楼梯方位句(stair_dir_* / stair_hint_b / btl_king)`。
主设计触发逻辑对照 [16-dungeon.md](16-dungeon.md) §4-§11;施工单 [26-apply-dungeon.md](26-apply-dungeon.md);
替换稿 `tools/voice_lines_26/dungeon.md`。
---
## 键盘变体(key,P1 输入平权路线 a,26 号后 44 句)
「生效输入模式=键盘」(settings.input=key,或 auto 且键盘在跟/纯桌面初始判定,
web/engine/gesture.js inputMode())时,引擎 voice 候选链前置加载
`web/dungeon/audio/voice/<gender>/key/<id>.{ogg,m4a}`,变体缺失回退主资产——触屏措辞零改动。
>
> 措辞规范(02-input-parity.md §4.3 路线 a + P1 裁定):向左滑→按左方向键(四向同理,
> WASD 不进台词);单击/轻触屏幕→按空格;双击→按回车;按住/长按→按住空格;
> 复合短语(左右滑→左右方向键、滑动→方向键)按语义等价展开;只改操作词,其余
> 内容一字不动,不新增「重」类多音字。26 号替换稿(44 句全表)见
> `tools/voice_lines_26/dungeon.md` §4,与 `tools/gen_voice_dual.py` 的
> `KEY_LINES["dungeon"]` 逐字一致(两表一致铁律:改一处必改另一处)。
> 资产:×2 性别 = 44×2 条、×2 格式 = 44×4 文件;管线 `gen_voice_dual.py --only-variants`
> 生成 → `--convert` 落盘,终检 `tools/check_all_assets.py`(key 两性别一致且 ⊆ 主集)。
| id | 键盘台词全文(触屏原句见本表上方对应 id / 26 号同步节) |
|---|---|
| `d0_new` | 黑暗。按一下空格,听回声。 |
| `sys_first_tap` | 按空格。 |
| `sys_first_tap_short` | 按一下空格。 |
| `sys_turn_teach` | 听到这个声音,就是轮到你了。 |
| `sys_say_again` | 再说一遍: |
| `sys_unlock_down` | 按下方向键,可以打开菜单。 |
| `sys_unlock_dt` | 没听清,就按回车,再听一遍。 |
| `sys_continue_ask` | 检测到探窟记录。按空格继续,右方向键重新开始。 |
| `tut_move` | 朝前,按上方向键。 |
| `tut_side_move` | 按左方向键,转身走。 |
| `tut_coin` | 房里有金币,走过去捡。 |
| `tut_help_hold` | 迷路了,按住空格。 |
| `tut_parry_tap` | 听到动静,按空格格挡。 |
| `tut_stairs_on` | 楼梯就在脚下。按空格,下潜。 |
| `tut_attack` | 现在按空格,挥拳打它。 |
| `hint_swipe` | 按方向键。 |
| `btl_turn_short` | 按空格,打。 |
| `wall_dir_front` | 墙就在正前。 |
| `wall_dir_left` | 墙在左手边。 |
| `wall_dir_right` | 墙在右手边。 |
| `wall_dir_back` | 墙在身后。 |
| `inv_pulse` | 回声还没回来,稍等。 |
| `inv_title` | 标题页,按空格就行。 |
| `inv_settle` | 结算完,按空格再来。 |
| `inv_drill` | 先照我说的做。 |
| `inv_tel` | 格挡只要按空格。 |
| `inv_menu_locked` | 菜单,玩完一局解锁。 |
| `menu_help` | 左右方向键换项,按空格确认。 |
| `menu_restart_confirm` | 重开就丢了这局。再按一次。 |
| `sys_only_up` | 现在,只要按上方向键。 |
| `sys_only_down` | 现在,只要按下方向键。 |
| `sys_only_left` | 现在,只要按左方向键。 |
| `sys_only_right` | 现在,只要按右方向键。 |
| `sys_demo` | 听我做一次。 |
| `sys_now_you` | 现在,你来。 |
| `help_explore` | 方向键走路,按空格发脉冲,按住空格问路。 |
| `help_battle` | 听到动静按空格格挡;轮到你,按空格挥击。下方向键逃跑。 |
| `die_adv_1` | 下次,前摇声响时就按空格。 |
| `die_adv_2` | 打不过,就按下方向键逃跑。 |
| `settle_again` | 按空格,再探一次。 |
| `gd_turn` | 轮到你了。按空格挥击。 |
| `tut_kill` | 打中了,就是这样。 |
| `tut_done` | 教学完了。地窟很深,小心走。 |
| `tut_skip` | 已跳过教学。按空格发脉冲,先听听四周。 |