0.2.5-dev: merge claude/036-touch

# Conflicts:
#	CHANGELOG.md
#	docs/history/0.2.5.md
This commit is contained in:
sganggs committed 2026-10-12 15:00:10 +08:00
commit a8ff5e7c1d
22 files changed
+294 -59

No files matched your search

+50
View File
@@ -414,3 +414,53 @@ Tests: `test/render/board3d-scene.test.js` (the scene table against data/stages.
layout shared by scenes.py and load.js, sub-graphic groups, RGBM decode, the loader with a fake store, BoardScene
with a stub renderer: scene on / areas / fallback). `test/scene-assets.test.js` (setup's scene step, the full plan
ships extracted scene files, the lite plan ships none, git ignores the bundles).
### 30.17 Prepared 外勤医疗 target order and preparation inspection
PR #523 by @YinqiMargatroid, continuing #451. PR #451 made 预备干员-医疗 visible in preparation and left its initial
aggro order unchanged. The owner decided on 2026-10-12 to take both halves of this report as the author describes them.
The retained team grant in §30.14 is unchanged: a confirmed Touch selection still supplies the medic after the holder
is eliminated or leaves.
In the recording [卫戍协议](https://b23.tv/RQLI8WS), the right-side 联防 board at 19:13 has Touch and 哈洛德 inside the
same flying 守墓石像's attack range when it locks its target, and the attack selects 哈洛德. The 17:01 preparation
frame shows 哈洛德 with no equipment, and his position makes him the right player's first ordinary deployment under
the current column scan. The 19:36 clip supplies another targeting comparison. [PRTS 卫戍协议/帮助](https://prts.wiki/w/卫戍协议/帮助)
gives the column order and places operators before summons; [PRTS 作战机制](https://prts.wiki/w/作战机制) gives 索敌 as
blocker, then special priority, then 仇恨, then earliest appearance. These observations support an effective priority
earlier than ordinary operators for the prepared 外勤医疗 slot. They do not expose the official unit identity or the
exact deployment counter.
The battle sim still creates the selected map-character variant at `battleStart`, after the board deployment.
[ASSUMED] The prepared slot keeps an earlier effective targeting order whether it stays 预备干员-医疗 or is replaced
by Touch. Only `aggroSeq` receives a negative pre-initial value (`i - chars.length` across every prepared character
on the field); `deploySeq` remains the actual spawn's identity for deployment hooks and scheduled effects. `0` is not
used, because `aggroCmp` treats a falsy `aggroSeq` as `deploySeq`. [ASSUMED] When several players have prepared slots,
their relative order follows the existing player iteration, the same way other initial placements do. A map character
spawned ad hoc after battle start, without `preBattleAggroSeq`, keeps ordinary summon order. Redeploy and device
spawn still assign `aggroSeq` from the new `deploySeq`. The flying 守墓石像 tests check both variants at target-lock
time, a right-side 联防 Touch ahead of the left medic and behind no ordinary operator, and the higher-taunt exception.
The further recording [准备阶段](https://b23.tv/4JXAp12) at 0:17 shows 预备干员-医疗 selected, with its detail card and
attack range visible before combat. This shows an inspection affordance. It does not establish that the official game
already simulates the medic as a combat entity during preparation. The client lets the existing read-only preparation
view open its operator-style card and board-space range by tap, including on the mirrored boss half and in the flat
fallback renderer. The original board-space record is kept for the card; only the rendered view is transformed. The
preview stays immovable and is not sold or retreated. The battle creation point is unchanged. The same click path
accepts another map-character variant if one is included in `prepMapChars`.
Normative lines: SIM.md §1 and §2 (`aggroSeq`, `spawnToken` `preBattleAggroSeq`), design/engine.md §5.5, design/client.md
Interactions, design/network.md preparation state. Tests: `test/content/bands.test.js`, `test/content/tokens_devices.test.js`,
`test/ui/inspect-range.test.js`, `test/ui/playtest6_summons.test.js`, `test/render/browser.test.js` (needs `RENDER_E2E=1`).
`npm run golden:update` recomputed all 287 scenarios against the preceding 0.2.5 candidate. No scenario was added or
removed. Only `coop2-NORMAL-14-standins` moved. Its human seat holds `band_amedic`, so the team grant places the
prepared map character on both fields; the earlier `aggroSeq` changes who those enemies strike, and the later bond
and combat totals follow. The match stays a round-14 victory with team LP 31. The partner (`band_chiave`) first
differs at round 11: activated layers 149 → 161, with 拉特兰 5 → 11 and 精准 24 → 30 in that settle row. Round 12
continues the same layer gap (191 → 206). The human settle row first differs at round 13: kills 21 → 22, leaks
36 → 35. Final human totals: kills 272 → 273, leaks 44 → 43, damage dealt 2,564,165 → 2,565,610, boss damage
193,091 → 189,876. Partner boss damage 586,909 → 590,124, damage dealt 3,838,927 → 3,843,408, activated layers
267 → 282; final bonds move 奥术 27 → 30, 拉特兰 17 → 23 and 精准 53 → 59. This scenario was not among the 45 that
already differed from 0.2.4 (§30.9, §30.16), so the release-relative total is now 46. The other 286 digests match
the preceding candidate.