feedback5: 乌尔比安 knocked out while his S3 has moved him lies and redeploys on his deployment tile, not on the anchor tile — the owner's decision of 2026-10-07 on community report 28 「乌尔比安3技能期间死亡会留在3技能位移后的位置复活,应回到初始部署位复活」, a deliberate deviation from PRTS's "where it fell" for this 【移动】 only; golden: unchanged (the corpus moves him 23 times and knocks him out 6 times, never while moved)

- server/sim/units.js `downAtHome` (false), cleared by every deployment (battle/deploy.js _deploy).
- kits/ops/chess_char_5_05-ulpia.js sets it once the S3 【移动】 has put him on the anchor tile; onEnd clears it when the
  skill ends with him standing (the 【返回】); knocked out, it stays for the body.
- sim/battle/tiles.js _layBody: a unit holding it lies on its home tile (his board placement, where the 从不混淆的方向
  stood) when that tile is in the rect and free — else where it fell [ASSUMED], the PRTS exception's one attempt; the
  timed redeploy, 不屈's and CB1's 复活 (M3茧甲 / 埃芒加德: at once, free) all come back there (restTile), b.snap
  `down` names it. Every other moved operator (a 突袭 jump, other kits' 【移动】) keeps "where it fell".
- Test: test/sim/feedback5-ulpia-revive-home.test.js (3) — knocked out during S3 he lies at home, the anchor tile free,
  and redeploys there; revived at home by M3茧甲; control: after the 【返回】 and for a 突袭 member the PRTS rule holds. The
  first two fail on the parent (he lay and stood up on (10,7)); the third fails there only on the missing field.
- Docs: DESIGN §25.17.3 (the decision, marked as the owner's deviation; the §25 intro's decisions of 2026-10-07),
  docs/SIM.md §1, DESIGN §5 (design/engine.md DP / knocked-out line), docs/PLAYING.md 作战 row.

Gate: non-browser suites 5024 / 5024, npm run golden ok, test/golden.test.js 9 / 9, lint 0 errors, check:imports ok,
typecheck ok.
This commit is contained in:
sganggs committed 2026-10-07 04:04:41 +08:00
1 parent 9ca52ba798
commit 9738bb829a
9 files changed
+128 -14

No files matched your search

+21 -7
View File
@@ -34,7 +34,7 @@ second batch of community reports of 2026-10-06, one section per stream: CB2, he
CB3, operator kits and triggers (砾's double hit, 乌尔比安's S3 landing behind the 联防 red gate, the 「受到攻击时」
counters on every enemy damage instance, a 突袭 member's jump after an in-place 复活, 银灰's sound; 铃兰's trigger,
琳琅诗怀雅's champagne, the 突袭 玛恩纳, 归溟幽灵鲨 devoured and 荒芜拉普兰德 / 叙拉古 already answered; 乌尔比安's revive
tile a question) → §25.17; CB4, enemies, bosses, waves, movement (the 突袭 landing on the 临时整备区 row and the
tile on his deployment tile, the owner's deviation) → §25.17; CB4, enemies, bosses, waves, movement (the 突袭 landing on the 临时整备区 row and the
other half of the 联防 map, a silenced 萨卡兹枯朽战士's death pollution, 萨卡兹穿刺手's speed after a stun and its first
hit, 自制投石机 blocked on the 排气格栅; the briefing types' 7–9 waves, 新硎's 断刃, a freed prisoner in 联防 and 鸭爵's two
swaps in one wave already answered; the moving leaders' routes checked; 野鬃, 锏's pulls, 昆图斯's footprint and the leaders' attack rate not
@@ -58,8 +58,10 @@ lock (§25.13.2); a newly merged elite 拉普兰德 counts as a new 拉普兰德
alive at the fight's start, adopting PR #209 and replacing 「保持固定血量」 (§25.13.4); flying units at 1.3 tiles and the two
model quirks of PR #211 (§25.13.5); the bounty pays whenever its enemy dies (relayed with the community
reports, §25.14.3); 2026-10-07 — the in-match shortcuts rebindable in 设置 (§25.15); a language is a file in the
language folder, and the language pack is the first type of a general content-pack mechanism (§25.20); 烛煌's 绝处重燃
before 坚固维式重锤's lock and the official tier cap of 寻呼模块 / 简易通讯机 kept as they are (§25.21.1, §25.21.10).
language folder, and the language pack is the first type of a general content-pack mechanism (§25.20); 乌尔比安 knocked
out during his S3 comes back on his deployment tile, a deliberate deviation from PRTS's "where it fell" (§25.17.3);
烛煌's 绝处重燃 before 坚固维式重锤's lock and the official tier cap of 寻呼模块 / 简易通讯机 kept as they are (§25.21.1,
§25.21.10).
### 25.1 Refactor and tooling: the big files split, golden results, lint, types, import boundaries (refactor plan; owner's decision of 2026-10-04: no web framework) — `server/http/`, `server/match/match/`, `server/match/player/`, `server/sim/battle/`, `content/enemies/`, `kits/ops/`, `public/js/ui/gameLogic/`, `render/fx/`, `render/app/`, `screens/game/`, `tools/golden.mjs`, `tools/check-imports.mjs`, `eslint.config.js`, `jsconfig.json`
@@ -1218,7 +1220,7 @@ on the 0.2.0 tree with a script first (where the report could be older, on the v
against the official data (character_table, skill_table, activity_table → act2autochess, audio_data, ArknightsGameData's
buff templates, the local client's charpacks and skill prefabs) and PRTS (备注 included). Five are real and fixed, one
commit each with its golden scenarios named; five were already answered or are not bugs (pinned by tests); one is a
question for the owner.
question for the owner (settled on 2026-10-07: §25.17.3).
#### 25.17.1 「砾的平A是比较特殊的双判,是两次50%伤害倍率(不是攻击倍率)」 (item 16.5): two instances of 50 % 伤害倍率 per normal attack — `sim/ai.js resolveHit`, `sim/professions.js` (`hitDmgMul`), `kits/ops/chess_char_2_12-gravel.js`
@@ -1252,7 +1254,7 @@ question for the owner.
`test/sim/feedback5-ulpia-own-board.test.js`; `test/sim/facing-invariance.test.js` counts every tile of its open field
as the player's own (a board-position rule, like the deployment order it already avoids).
#### 25.17.3 「乌尔比安3技能期间死亡会留在3技能位移后的位置复活,应回到初始部署位复活」 (item 28): the sources say where he fell — a question for the owner, no change
#### 25.17.3 「乌尔比安3技能期间死亡会留在3技能位移后的位置复活,应回到初始部署位复活」 (item 28): back to his deployment tile — the owner's decision of 2026-10-07, a deliberate deviation from the sources — `kits/ops/chess_char_5_05-ulpia.js`, `sim/battle/tiles.js _layBody`, `sim/units.js downAtHome`
- **Checked**: knocked out during S3 he lies on the landing tile and comes back there — the rule of every operator moved
off its board tile since 0.1.1 (§21.24, `Battle._layBody`): PRTS 卫戍协议/帮助 「原地留下一个“倒地干员”…自动部署至该位置」,
@@ -1260,8 +1262,20 @@ question for the owner.
landing tile. PRTS 乌尔比安 S3 备注 ④ (the 【返回】 at the skill's end) says nothing of a knock-out, and the client's S3
templates (`ulpia_s3_*`: the 【移动】 respawn clips and flags) carry no other rule. With §25.17.2 he can no longer fall
behind the red gate.
- **Question for the owner**: keep "where he fell" (the sources) or send him back to his deployment tile (the report)?
- Golden: unchanged.
- **Decision**: asked whether to keep "where he fell" (the sources) or send him back to his deployment tile (the report),
the owner chose the deployment tile (the owner's decision of 2026-10-07) — **a deliberate deviation** from PRTS's rule,
for his S3 only: every other operator moved off its tile (a 突袭 jump, the 【移动】 of other kits) still lies and comes
back where it fell.
- **Now**: his kit sets `Unit.downAtHome` once the S3 【移动】 has put him on the anchor tile; the 【返回】 (the skill over
with him standing) and every deployment clear it. Knocked out while it holds, `Battle._layBody` lays him on his home
tile — his deployment tile, where the 从不混淆的方向 stood (gone with the skill) — and he redeploys there (timed, 不屈, or at
once by CB1's 复活, §25.21.3); b.snap `down` names that tile, so the client draws him there.
- [ASSUMED]: his deployment tile taken (a unit or another body on it) → where he fell, the one attempt of the PRTS
exception above; a 突袭 member's jump tile before the S3 is not his deployment tile (his board home is).
- Golden: unchanged — the corpus moves him 23 times (roster-015, four solo boss fields) and knocks him out 6 times,
never while moved (instrumented). Tests: `test/sim/feedback5-ulpia-revive-home.test.js` (3: knocked out during S3 he
lies and redeploys at home, revived at home by M3茧甲 — both fail before —, and the control: after the 【返回】 and for a
突袭 member the PRTS rule holds). Docs: docs/SIM.md §1, DESIGN §5 (design/engine.md), docs/PLAYING.md.
#### 25.17.4 「退行的潮涌者的攻击无法触发菲莱2技能的受击反击(排查其他类似技能的干员)」 (item 30): the 「受到攻击时」 counters answer every damage instance from an enemy — `kits/shared/tier1.js byEnemyAttack`, `kits/ops/chess_char_3_06-philae.js` and the kits below