feedback7: merge fb7-render — #382 赤刃明霄陈 S3 sword-qi drawn (sim chen3Wave fx), #381 enemy attack recovery held in interpolation, #380 push / pull slide (corpse stays where pushed; same-step kills finish the slide), #384 eye masks, 香槟炸弹 HP bar hidden, #246 an unwound attack plays its whole clip

- Conflicts with the merged fb7-hud (both added display-only snapshot lists): server/sim/battle/events.js, types/core.js,
  public/js/render/interp.js, docs/SIM.md, docs/design/network.md — union of ammo / wolves / neg and stand / standCut.
- Grok review: MERGE AFTER FIXES — the HIGH finding (same-step push kill) fixed on the branch (7a33bc7e).
- Golden: diy-073 / diy-074 (fx counts only; union OK); broad node --test 5442 (5441 pass, 0 fail, 1 skipped); lint 0
  errors; typecheck.
This commit is contained in:
sganggs committed 2026-10-08 20:51:11 +08:00
commit cf98f4c3f8
27 files changed
+1812 -53

No files matched your search

+5 -1
View File
@@ -104,7 +104,9 @@
/**
* `snapshot()` (SIM §9). On the wire this object is the payload of `b.snap`,
* and `t` is sent as `gt` because the frame's `t` is the message type (DESIGN §8.2).
* `dp` is one number. `down`, `elem`, `ammo`, `wolves` and `neg` are omitted when empty.
* `dp` is one number. `down`, `elem`, `ammo`, `wolves`, `neg`, `stand` and `standCut` are omitted when empty: `stand`
* [id, until] = the game time an enemy's attack recovery ends, `standCut` [id, at] = the latest time it was cut or
* ignored (enemies in the snapshot's death window included).
*
* @typedef {Object} FieldSnapshot
* @property {string} fieldId
@@ -120,6 +122,8 @@
* @property {CountSnap[]} [ammo]
* @property {CountSnap[]} [wolves]
* @property {NegSnap[]} [neg]
* @property {[number, number][]} [stand]
* @property {[number, number][]} [standCut]
*/
/**