feedback5 WAC: docs for the rebindable shortcuts — PLAYING §11 (the shortcut list and how to change it), README 操作 (Q / X added, the settings named), DESIGN §10 (design/client.md), §25.15, I18N's stale hotkey-line example

Golden unchanged (docs only).
This commit is contained in:
sganggs committed 2026-10-07 01:56:25 +08:00
1 parent f2bec76176
commit f1df0d359d
5 files changed
+53 -5

No files matched your search

+1 -1
View File
@@ -162,7 +162,7 @@ npm start # 启动服务器:http://localhost:3000
| 出售 / 撤退 / 销毁装备 | 点击单位所在的格子 → 底部按钮「出售 +1」「撤退」;也可以把棋盘上的干员拖回整备区撤退。整备区里的装备与法术只能「销毁」,已配发的装备锁定在干员身上(干员出售或合成精锐时退回整备区) |
| 装备 | 把装备拖到干员所在的格子上(每人 2 件;满了会弹出替换窗口,被替换的一件会被销毁);法术拖到地块上并选方向 |
| 查看详情 | 右键或长按单位 / 卡牌(属性为实时数值,高于基础值为绿色、低于为红色) |
| 快捷键 | `R` 刷新 · `F` 冻结 · `D` 升级 · `Space` 准备就绪 · `Esc` 取消 / 关闭 |
| 快捷键 | `R` 刷新 · `F` 冻结 · `D` 升级 · `Q` 撤退 / `X` 出售选中的干员 · `Space` 准备就绪 · `Esc` 取消 / 关闭;除 `Esc` 外都可以在「设置 → 快捷键」里改成别的键([玩法指南 §11](docs/PLAYING.md#11-快捷键)) |
| 方向轮盘键盘操作 | 方向键预览 · `Enter` 确认 · `Esc` 取消 |
| 暂停(独立模拟) | 作战中(含最终攻势 / 隐秘核心)点顶栏的「暂停」或按 `Space`,再点「继续作战」(或 `Space`)继续;同盟模拟的作战不能暂停 |
| 表情 | 左下角「交流」,左右滑动(或方向键)换主题,冷却 1 秒 |
+2 -2
View File
@@ -76,8 +76,8 @@ the official EN terms of the game (the EN client's own wording, e.g. its tips an
`x.length` → `n`, else its position), nested strings in params included; adds the import. Module-level literals get
`N_()` and are listed for a manual `t()` where they are shown; compared literals, object keys, string-method
arguments, `console.*` and `Error` messages are left alone; a text run with a child that is not a plain value is split
into its static pieces. **Review the diff**: join fragments into whole sentences where it reads better (the settings
hotkey line is an example), check module-level tables.
into its static pieces. **Review the diff**: join fragments into whole sentences where it reads better (the settings'
one-line hotkey hint, before the 快捷键 section replaced it, was an example), check module-level tables.
- `seed --from <map.json> [--all] [--write]` — fills `en.json` from a flat `{ msgid: English }` map for the msgids the
code uses (`--all`: also the literals not wrapped yet, under the msgid the codemod will give them).
+19 -1
View File
@@ -2,7 +2,7 @@
「卫戍协议:盟约」是自走棋 + 塔防:休整期在调度中心招募干员、摆阵、配装备,作战期干员自动部署并迎击从红门涌来的敌人,漏过去的敌人扣目标生命值(LP)。同盟模拟中 1–4 人**合作**(没有 PvP),撑到第 14 回合打倒敌方领袖即胜利。
本文数值来自官方数据表(`data/config.json` 等)与 [research](research/00-INDEX.md);游戏内左下角 📖「玩法说明」有官方教程图(随素材一起下载;没下载到时显示文字要点)。操作方式见 [README · 操作](../README.md#操作)。
本文数值来自官方数据表(`data/config.json` 等)与 [research](research/00-INDEX.md);游戏内左下角 📖「玩法说明」有官方教程图(随素材一起下载;没下载到时显示文字要点)。操作方式见 [README · 操作](../README.md#操作),键盘快捷键和修改方法见 [§11](#11-快捷键)。
界面语言:默认中文;标题画面右上角或「设置」里可切换 **中文 / English**(会记住选择,不用刷新)。英文的干员、技能、盟约、装备、敌人等游戏文本取自官方英文服数据,界面文字全部有英文;切到英文后仍显示中文的只有玩家名字(人机的名字也是)、多轮悬赏改写过的「接下来两场作战」说明,以及官方英文服还没有的游戏文本(部分自选干员和较新的模组);「玩法说明」的教程图是官方的中文图片,标题有英文(docs/I18N.md)。
@@ -148,3 +148,21 @@
- 层数到 999 就满了,多余的叠层没有用,可以把资源转去别的盟约。
- 领袖战注意**限伤**:单次 30 万以上的伤害会被整次作废。盟约叠到 999 层后,再叠加额外的伤害倍率(例如 999 层谢拉格再点亮奥术)反而可能让大招打出 0 伤害;队友的奥术等减益也会放大你的伤害。
- **橙色围栏围起的地块**(官方「围墙」)可以部署干员,敌人走不进去:站在里面的干员照常攻击自己攻击范围内的敌人(摆放时选好朝向,让攻击范围对着敌人走的路),但**挡不住地面敌人**(被推、拉到围栏边的敌人也不会被它阻挡),也很少挨打——多数重装干员的手动技能要受到伤害才释放,在里面可能一直不放(深巡的二技能是例外,攻击范围内有敌人就会释放);只打自己脚下一格的干员(如角峰)在里面打不到任何敌人。
## 11. 快捷键
有键盘时可以用快捷键(下表是默认按键)。在输入框里打字时快捷键不起作用,弹窗或「玩法说明」打开时也不起作用;「本局信息 / 敌方情报」打开时只有 `Esc`(关闭它)有效。
| 默认按键 | 作用 |
|---|---|
| `R` | 刷新商店 |
| `F` | 冻结 / 解冻商店 |
| `D` | 升级调度中心 |
| `Q` | 撤退选中的棋盘干员(回到整备区) |
| `X` | 出售选中的干员 |
| `Space` | 准备就绪 / 取消准备;独立模拟的作战中暂停 / 继续 |
| `Esc` | 取消 / 关闭:依次关闭表情面板、敌人预览、盟约浮层、详情卡、本局信息 / 敌方情报(固定,不能修改) |
刷新、冻结、升级、撤退、出售和准备只在休整期有效,撤退 / 出售要先点选一名干员。方向轮盘(方向键预览、`Enter` 确认、`Esc` 取消)、「玩法说明」和「干员调配」的翻页键是这些界面自己的按键,不能修改。
**修改快捷键**:标题画面右上角或对局左下角的「设置」→「快捷键」。点一下要改的按键(只用键盘时按 Tab 移到它上面再按 Enter),出现「按下新按键…」后按新的键;按 `Esc` 取消,设置窗口不会关闭。可以用字母、数字、空格、标点符号键和 Delete / Insert / Home / End / PageUp / PageDown;`Esc`、`Tab`、`Enter`、方向键和 F1–F12 留给界面使用,也不能搭配 Ctrl / Alt / ⌘。新按键已被另一个快捷键使用时两者互换,列表下方会写明(例如把「撤退选中干员」改成 `X`,「出售选中干员」就换成原来的 `Q`)。「恢复默认」改回上表的按键。修改立即生效,商店栏、准备按钮和单位底部「撤退 / 出售」按钮上显示的按键也跟着变;设置和音量等一起保存在当前浏览器里(换浏览器或清除网站数据后回到默认)。按键按键帽上印的字符识别(AZERTY 等键盘按印着的字母),俄文等非拉丁布局按键位识别。手机等纯触屏设备要连接键盘才能用快捷键,设置里的快捷键列表默认折叠。
+1 -1
View File
@@ -43,7 +43,7 @@ Screens: **Title** (season art backdrop, 开始 → nickname), **Lobby** (独立
A bond the mode never activates (标准: official `inactiveBondIdList`) reads 本局禁用 on shop / reward cards (struck through), detail chips and the popup — no 在场 count, no 当前效果 (§21.7); a strategy built around one carries a 本局禁用 tag and note in the strategy draft and stays selectable (bands.json `bondIds`, §21.26).
Interactions (research 09 §1.2 / §5, which supersede the first draft): shop card, upgrade and 机变 card are two-tap (select → confirm, §18.2) — a tap anywhere on the card, its confirm strip included, is the card's tap (shop cards have no ⓘ corner; the armed bar sits above the detail card; a shop card that cannot be bought right now opens its detail on tap, §20.7); a press / drop goes by the tile under the pointer (§18.1); drag bench↔board — a legal board drop (also onto the piece's own tile) opens the 4-direction deploy wheel (swipe UP/RIGHT/DOWN/LEFT with the rotated range striped orange; release in the centre, ✕ 点击取消 or Esc cancels); tap a unit's tile ⇒ underframe with **出售 +N** (and **撤退** on the board; items/Arts in the hand / temp: **销毁** — equipped items are locked, §6.2) plus its rotated range; no drag-to-sell; drag an item onto a unit's tile ⇒ equip that unit (both slots used ⇒ the replace dialog `ui/equipReplace.js` shows the incoming and the two equipped items; the player picks the one to replace — it is destroyed — `g.equip replaceUid`; cancel changes nothing); Arts are dropped on a tile and get the direction step; right-click or long-press ⇒ detail (or a tap on a shop card while the bar is locked); `R` refresh, `F` freeze, `D` level-up, `Space` ready (in a solo battle: pause / resume, §14 Solo pause). All actions optimistic-free: UI waits for server state (latency is small).
Interactions (research 09 §1.2 / §5, which supersede the first draft): shop card, upgrade and 机变 card are two-tap (select → confirm, §18.2) — a tap anywhere on the card, its confirm strip included, is the card's tap (shop cards have no ⓘ corner; the armed bar sits above the detail card; a shop card that cannot be bought right now opens its detail on tap, §20.7); a press / drop goes by the tile under the pointer (§18.1); drag bench↔board — a legal board drop (also onto the piece's own tile) opens the 4-direction deploy wheel (swipe UP/RIGHT/DOWN/LEFT with the rotated range striped orange; release in the centre, ✕ 点击取消 or Esc cancels); tap a unit's tile ⇒ underframe with **出售 +N** (and **撤退** on the board; items/Arts in the hand / temp: **销毁** — equipped items are locked, §6.2) plus its rotated range; no drag-to-sell; drag an item onto a unit's tile ⇒ equip that unit (both slots used ⇒ the replace dialog `ui/equipReplace.js` shows the incoming and the two equipped items; the player picks the one to replace — it is destroyed — `g.equip replaceUid`; cancel changes nothing); Arts are dropped on a tile and get the direction step; right-click or long-press ⇒ detail (or a tap on a shop card while the bar is locked); keyboard shortcuts — the defaults, which each player rebinds in 设置 → 快捷键 (`ui/gameLogic/shortcuts.js`, saved with the settings; §25.15) — `R` refresh, `F` freeze, `D` level-up, `Q` retreat / `X` sell the selected operator, `Space` ready (in a solo battle: pause / resume, §14 Solo pause); `Esc` closes (fixed); none acts while a text field has the focus or a dialog is open. All actions optimistic-free: UI waits for server state (latency is small).
Audio: autochess BGM per phase, UI SFX (buy/sell/refresh/level/merge/ready/timer), per-unit attack/hit SFX (throttled; an impact plays for a hostile attack's phys / arts / true damage only, never an operator's skill-mode file for a normal attack, ≤ 2 copies of one battle sound — §18.4), boss music in R14/15.
+30
View File
@@ -1062,3 +1062,33 @@ fixed (W5AA's commits name every golden scenario moved); two were already fixed
bounty 使徒 whose seeds leaked sent every seed into 联防 carrying the card — 15 of 16 re-entries paid it again — which
is the report; on this tree only the 使徒's own leak carries it.
- Golden: unchanged. Pinned: `test/sim/feedback5-community-pins.test.js`.
### 25.15 Rebindable shortcuts (W5AC; the community request 「快捷键可不可以自己设置」, the owner's decision of 2026-10-07) — `ui/gameLogic/shortcuts.js`, `ui/gameLogic/settings.js sanitizeSettings`, `ui/settings.js` (`HotkeySection`, `hotkeyLabelOf`), `screens/game.js`, `ui/facingWheel.js`
- **Asked**: players wanted to choose their own keys.
- **Before**: R 刷新, F 冻结, D 升级, Q 撤退 / X 出售 the selected operator (PR #114, 0.1.4), Space 准备就绪 (in a solo battle:
pause / resume) and Esc (close) were fixed in `shortcutFor`; the shop bar, the ready / pause button and the
underframe drew them as fixed text, the facing wheel swallowed Space and `KeyR` / `KeyF` / `KeyD`. No camera, speed or
panel keys exist; the other keys are the dialogs', the guide's, 干员调配's and the facing wheel's own (Esc, Enter, the
arrows, paging), listed with the shortcuts in docs/PLAYING.md §11. Nothing official to follow: the shortcuts are the
remake's.
- **Now**: the settings (localStorage `sp.pref.settings`) hold `keys`, action → `KeyboardEvent.code`; the defaults are the
keys of 0.1.4, so nothing changes for a player who never opens the section. `sanitizeSettings` keeps each saved key
that may be a shortcut and gives any other its default; not a map, or two actions on one key, gives the defaults. One
lookup, `actionForKey` — the action of the character typed (the keycap: AZERTY, Dvorak), else of the physical key (a
Russian layout, an IME), the 0.1.4 `code === 'KeyR' || key === 'r'` match generalised and identical for the defaults —
serves `shortcutFor(e, keys)` in game.js and the facing wheel's `facingSwallows`; the modifier, text-field, repeat and
overlay guards are unchanged. The key hints read `hotkeyLabelOf`. 设置 → 快捷键 (the one SettingsModal, in a match and
on the title screen): each action with its key; a click — or Enter on the focused key — waits, the next key binds;
Esc cancels and the dialog stays open, Tab leaves; a key held with Ctrl / Alt / ⌘ or one the interface keeps (Esc,
Tab, Enter, the arrows, F1–F12) is refused and the wait goes on; a key another action has is swapped (that action takes
the old key) and the line under the list names both; 恢复默认. Bindable: A–Z, 0–9, Space, the punctuation keys, Delete,
Insert, Home, End, PageUp, PageDown; Esc stays fixed. On a touch-only device the section says the keys need a
keyboard and folds the list; under 768 px it is one column.
- [ASSUMED]: a conflict swaps rather than refuses (the request names neither, a swap never leaves an action without a
key); Esc and the dialogs' own keys stay fixed; the bindable set; no modifier combinations (no shortcut used one).
- Golden: unchanged (client UI only). Tests: `test/ui/feedback5-hotkeys.test.js` (the map, sanitising, conflicts, the
lookup equal to 0.1.4 for the defaults on four layouts, capture, handlers and hints with a rebound key),
`test/ui/gameLogic.test.js` (sanitizeSettings), `test/ui/hotkeys.e2e.test.js` (SP_E2E=1: 撤退 rebound to W with the
keyboard only in the mock match — Q then does nothing, W retreats, the choice survives a reload; phone width). Docs:
docs/PLAYING.md §11, README 操作, DESIGN §10 (design/client.md).