feedback5 CB2: DESIGN §25.16 — the community reports of 2026-10-06 of stream CB2 (healers, summons, timers): 12, 18, 33, 34, 26, 14 fixed; 11, 13, 31, 32 answered with the evidence; design/network.md notes the countdown summons' snapshot hp

This commit is contained in:
sganggs committed 2026-10-07 02:36:06 +08:00
1 parent f1e462ef62
commit 97105cbfad
2 files changed
+101 -2

No files matched your search

+1 -1
View File
@@ -23,7 +23,7 @@ S→C:
- NOTE: game time in `b.snap`/`b.ev` is carried as **`gt`** (the frame's `t` is the message type).
- Active finite zero-SP timed skills display `sp=timeLeft`, `spMax=duration` and `UF.SKILL`; after end they display
`0/0`. Snapshot display capacity does not change runtime SP/cost.
- `b.snap` — `{ fieldId, gt, units: [[id, x, y, hp, maxHp, sp, spMax, flags, anim]] , dp, killed, total, down?, elem? }` 20 Hz. Optional, only when non-empty (§18.3): `down: [[id, respawnAt (game s), respawnTime (s), state, row, col]]` — knocked-out operators waiting to redeploy, `state` 0 counting | 1 timer done, waiting for DP | 2 timer done, its tile taken — a safeguard, no ally deploys there (sim/constants.js `DOWN_STATE`); `row, col` = the tile it lies on and comes back on (§21.24); `elem: [[id, element, fill, cooldownEnd (game s), cooldown (s)]]` — the one gauge a unit shows: the fullest (ties by the official element id 神经 < 侵蚀 < 灼燃 < 凋亡), fill with 2 decimals rounded DOWN and kept at 0.01–0.99 outside a burst (§20.8); during a 爆发冷却 the bursting element with fill 1 and the cooldown numbers (else 0, 0)
- `b.snap` — `{ fieldId, gt, units: [[id, x, y, hp, maxHp, sp, spMax, flags, anim]] , dp, killed, total, down?, elem? }` 20 Hz (a countdown summon's `hp` is maxHp × the share of its life left, §25.16.5). Optional, only when non-empty (§18.3): `down: [[id, respawnAt (game s), respawnTime (s), state, row, col]]` — knocked-out operators waiting to redeploy, `state` 0 counting | 1 timer done, waiting for DP | 2 timer done, its tile taken — a safeguard, no ally deploys there (sim/constants.js `DOWN_STATE`); `row, col` = the tile it lies on and comes back on (§21.24); `elem: [[id, element, fill, cooldownEnd (game s), cooldown (s)]]` — the one gauge a unit shows: the fullest (ties by the official element id 神经 < 侵蚀 < 灼燃 < 凋亡), fill with 2 decimals rounded DOWN and kept at 0.01–0.99 outside a burst (§20.8); during a 爆发冷却 the bursting element with fill 1 and the cooldown numbers (else 0, 0)
- `b.ev` — `{ fieldId, ev: [ ... ] }` event tuples: `['spawn', UnitInfo]`, `['atk', srcId, tgtId, projKind]`, `['dmg', tgtId, amount, type]`, `['heal', tgtId, amount]`, `['skill', id, on:0|1]`, `['die', id, reason]` (reason `'killed'`, `'retreat'`, `'expired'` …; only `'killed'` plays an operator's knock-down sound), `['status', id, key, on]`, `['fx', kind, x, y, extra]` (`'hitCap' {id, n}` = a cancelled 限伤 hit, drawn as nothing, §20.12; `extra.form` = the unit's model form from then on (an enemy's mode, a 傀儡师's 替身 §22.11) — `shared/protocol.js fxForm`, state like a spawn: never dropped by the client, §21.4), `['layer', playerId, bondId, n]`, `['bounty', playerId, coins]`, `['deploy', id]`
- `m.toast {kind, text}` · `m.ticker {text, id, type, priority, playerId}` (the strip plays the highest priority first, §21.10) · `m.emote {playerId, id}` · `m.result {...}`
- `m.unitStats {seq, round, units: [unitStatsEntry]}` — the answer to `g.unitStats` (`seq` echoed): every own board operator / summon by uid with `{id, uid, defId, hp, alive, maxHp, atk, def, res, interval, blockCnt, moveSpeed, range?, base: {…same}}` (shared/protocol.js `unitStatsEntry`; `range` = an ally's live range grid, facing RIGHT, never a target-selection grid, §21.16) as its next battle starts (§18.5)
+100 -1
View File
@@ -25,7 +25,10 @@ settled (泥岩's 闭锁; 忍冬, 深靛, 阿) → §25.11; release packaging an
with no Spine model) → §25.12; round 18 — 拟态物质 at the copy cap (GitHub #207), 华法琳's 7 / 14 (GitHub #175, PR #192),
a merged elite 拉普兰德 as a new one (GitHub #169), the leader pool per player alive (PR #209), the flying lift and two
model quirks (PR #211) → §25.13; the community reports of 2026-10-06 (the 孤岛风云 prisoners drawn freed, 忍冬's trigger, a
bounty burned to death by the 活性源石, 枯朽之种 paying a bounty) → §25.14.
bounty burned to death by the 活性源石, 枯朽之种 paying a bounty) → §25.14; the second batch of community reports of
2026-10-06, stream CB2 (healers, summons, timers: 刺玫's S2 heals, 琳琅诗怀雅 healing herself and her 破财消灾 cost after a
redeploy, 赫默's drone at full SP, the countdown summons' 无敌 / 禁疗 / timer bar, stacked alchemy zones; the chain heal,
DoT damage, 伺夜's 狼影 and the 吟游者 trait answered) → §25.16.
Decisions of the owner: 2026-10-04 — the server stays on plain `node:http` + `ws`, no web framework (§25.1);
2026-10-05 — the 补位 plan (§25.3); the 自选编队 rules, the collab operators out of the pool, ISW-A refused (§25.4);
@@ -1062,3 +1065,99 @@ 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.16 Community reports of 2026-10-06, stream CB2: healers, summons, timers — `kits/ops/chess_char_1_06-vendla.js`, `chess_char_3_04-swire2.js`, `chess_char_2_02-silent.js`, `content/tokens.js COUNTDOWN_SUMMONS / startCountdown`, `sim/snapshot.js unitTuple`, `render/fx/zones.js zoneAlpha`
The owner's second collection of community reports (2026-10-06/07) was split over five streams; CB2 took the healers,
the summons and the timers (items 11, 12, 13, 14, 18, 26, 31, 32, 33, 34 of the list). Each was reproduced on the 0.2.0
tree with a script first (on the v0.1.4 sources too where the report could be older), then checked against the official
data — the local client's battle prefabs (charpack, token and skill prefabs, projectiles; abnormal flag ids per PRTS 异常
效果: 5 无敌, 7 禁疗), ArknightsGameData's buff templates, skill_table / character_table, PRTS (备注 included) — and the
earlier decisions. Six were real and are fixed, one commit each with its golden scenarios named; four are answered with
the evidence.
#### 25.16.1 「刺玫开技能(装备源石药剂)之后不能治疗」 (item 12): only the S2 counter's trait heal goes to her protégé — `kits/ops/chess_char_1_06-vendla.js`
- **Seen**: during 荆藤庇荫 every trait heal went to the protégé, usually at full HP — a 源石溶剂 carrier drained from 1017 to
297 HP over the skill with all eight heals spent on a 9000 / 9000 ally.
- **Official**: 「该角色受到攻击时刺玫对目标造成攻击力20%的法术伤害并仅对该角色触发刺玫特性」 (en "…and activates her Trait on the
ally"); the client buff `vendla_tr` heals through the selector S2TraitHealRange (the `vendla_s_2` holder) only for a
damage whose modifier carries the key `vendla_s_2` — the counter, `vendla_s_2[extra_damage]` — else through
TraitHealRange (`_excludeOwner` 0, 禁疗 excluded).
- **Now**: the counter's damage names the protégé (`traitAlly`); every other damage she deals heals the lowest-HP ally of
her range, herself included, skill running or not.
- Golden: roster-001 / 002, bond-deputShip-low / -high, bond-suntShip-high, bond-victoriaShip-low / -high, the bot matches
solo-FUNNY-2, coop2-NORMAL-3, coop3-ABYSS-5, coop4-FUNNY-6, coop4-ABYSS-7. Tests:
`test/content/feedback5-vendla-heal.test.js`.
#### 25.16.2 「琳琅诗怀雅不会治疗自己」 (item 18): S1 仗义疏财 heals her own tile too — `kits/ops/chess_char_3_04-swire2.js`
- **Official**: the client charpack (char_1033_swire2, mode S1, ability HealAlly) selects with range x-4 — the 3×3 with her
own tile —, ally side, `_excludeOwner` 0, max HP ratio 0.7, one target. **Cause**: the kit skipped her and kept
Chebyshev distance 1 only. **Now**: the lowest HP ratio below 70 % of the 3×3, herself included (her own 禁疗 still
stops it); the owner's cadence of 2026-10-04 is unchanged.
- Golden: roster-027. Tests: `test/content/feedback5-swire2-self-heal.test.js`.
#### 25.16.3 「进入联防阶段琳琅诗怀雅所需的复活费用应该重置,正常对局中死亡之后再部署复活费用也应该重置」 (item 33): 破财消灾 restarts at 5 DP with every deployment — `kits/ops/chess_char_3_04-swire2.js`
- **Official**: PRTS 破财消灾 备注 「再部署时重置本天赋费用消耗」; the client buff `swire2_t_2` doubles the `cost` of its own
blackboard, rebuilt when she is deployed. **Cause**: the kit kept its save count for the whole battle (5 → 10 → 20 across
a redeploy). **Now**: reset at each of her deployments (battle start, redeploy, 突袭 再部署); a 联防 field is a battle of
its own, so it always started at 5 (pinned).
- Golden: roster-008 (a cheaper save after a redeploy), roster-049 (snapshots only). Tests:
`test/content/feedback5-swire2-revive-cost.test.js`.
#### 25.16.4 「赫默的无人机在2技能好了之后应该秒放」 (item 34): S2 医疗无人机 casts at full SP — `kits/ops/chess_char_2_02-silent.js`
- **Seen**: S2 full at 26 s and no cast while nobody was hurt; the drone came only once an ally in her range was injured.
- **Official**: the client skill `skchr_silent_2` (AUTO) has no `_trigger`, `_allowNoTarget` 1, `_checkHasTargetBeforeDoCast`
0 and a RechargeToken action — no cast condition; `_stopSpWhenTokenIsFull` 1 = PRTS S2 备注 「库存达到上限后赫默获得阻回,
直到库存被消耗为止」.
- **Now**: trigger SP_FULL — the placed drone takes its tile the moment S2 is ready; 阻回 (`noSp`) while her stock is full.
- Golden: roster-003 / 005, bond-visiShip-low / -high. Tests: `test/content/feedback5-silent-drone.test.js`.
#### 25.16.5 「赫默的无人机、浊心斯卡蒂的海嗣等这种召唤物不会受到外来伤害(包括源石地板),也不会被干员治疗,血量随时间减少」 (item 26): the countdown summons — `content/tokens.js COUNTDOWN_SUMMONS / startCountdown`, `sim/snapshot.js unitTuple`, `sim/units.js` (`countdown`), the kits of 浊心斯卡蒂, 温蒂, 莱伊, 鸿雪, 酒神
- **Seen**: a 海嗣 on 活性源石 lost 70 of its 100 HP every second; a hurt drone drew every medic's heals and the 吟游者
regeneration; their bars were plain HP.
- **Official / sources**: PRTS 斯卡蒂的海嗣 备注 「持有禁疗、无敌」; the token prefabs give 海嗣 and 沙地兽 the abnormal flags 5 +
7, 工程蓄水炮 7; their lives are suicide buffs (`suicide_after_buff`, the drone's `skcom_withdraw`). The report describes
the official mode: no outside damage, no heal, a bar that runs down like a timer and the summon gone when it is empty.
- **Now**: the summons that "不会受到攻击" and leave after a fixed time — 医疗探机 (10 s), 诅咒娃娃 (15 s), 斯卡蒂的海嗣 (25 / 30
s) and the 自选 工程蓄水炮 (20 s), 沙地兽 (25 s), “打字机” (25 s), 本能的召唤 (10 s) — hold 无敌 + 禁疗 from each deployment
(`startCountdown`, called where each lifetime is scheduled) and the snapshot's hp is maxHp × the share of the life left
(`unit.countdown`). The sim HP stays full, so no selector sees a low-HP summon. Summons that block and are attacked
(沙之碑, 战术装备, “小自在”, 结构性原理, 狼群 …) keep real HP.
- [ASSUMED]: 无敌 + 禁疗 for the four whose base prefabs carry no flag (医疗探机, 诅咒娃娃, “打字机”, 本能的召唤), and the bar as
a display of the time left — from the report; no HP-drain node exists in the client data.
- Golden: snapshot hashes only (the bar): roster-003 / 016 / 018 / 035 / 045 / 046, bond-visiShip-low / -high,
boss-boss_1 / 3 / 5 / 7-pair, unite-1; gameplay too: roster-005 (medics no longer heal the drone), roster-037 and
hidden-boss_9-pair (a 海嗣 / drone under damage stays up). Tests: `test/sim/feedback5-countdown-summons.test.js`. Docs:
docs/SIM.md (token pieces), docs/PLAYING.md.
#### 25.16.6 「炼金师分支干员的炼金单元等范围持续性技能特效太亮(尤其是多层叠加以后)」 (item 14): stacked areas stay readable — `render/fx/zones.js zone / zoneAlpha`, `render/fx/simfx.js`, `kits/ops/chess_char_5_15-thorn2.js`
- **Cause**: 引星棘刺 S2's drifting unit was re-sent every second and drawn as a new additive zone for the rest of its life —
up to twelve layers on one spot; overlapping units (锡人's charges, several alchemists) added up the same way.
- **Now**: the fx carries `key` and the client moves / resizes that one zone; a persistent area (> 3 real s) is drawn at
0.16 / 0.5 (disc / edge) and ÷ √n among the n persistent areas overlapping it; short bursts and telegraphs unchanged.
- Golden: unchanged. Tests: `test/render/feedback5-zone-stack.test.js` (node; no browser suite draws zones).
#### 25.16.7 Answered with the evidence: items 11, 13, 31, 32 — no change
- **11 「链愈师…只能从周身8格里的干员开始,最远不会跳出攻击范围,…即使后续跳跃干员满血也会按照规则顺序跳跃」**: the x-4 jump
around the last one healed and full-HP allies jumped in order are 0.2.0's WE1 (§25.7.6; on v0.1.4 a full-HP ally was
never jumped). The main target is the lowest-HP ally of the whole attack range y-2 (PRTS 分支特性信息), and the client's
chain selector (`projectile_chr_papyrs`: `_rangeId` x-4 around the hit, `_maxTarget` 3) has no attack-range bound, so a
jump may leave the range — not implemented.
- **13 「有的持续造成伤害类的技能无伤害(如炼金师分支干员的炼金单元)」**: not reproduced — every DoT skill of the pool and of
the 自选 operators deals damage once its condition is met (a sweep with two layouts; on two real stages 锡人 S1 / S2 and
引星棘刺 S2 / S3 deal 13 000–134 000, the same on v0.1.4). The only zero is the hidden 锡人 record chess_char_1_16 (never
in the shop) whose kit lacks S1. The stacked, over-bright zones (item 14) are the likely cause of the impression.
- **31 「伺夜的召唤物随时间增长的狼影最高能叠三只(即在新的狼影恢复前能受到三次致命伤害才死亡)」**: what the sim does (kit pack
and placed piece, this tree and v0.1.4): 2 狼影 at deployment, 3 after 25 s, lethal hits 3 → 2 → 1 at full HP, the third
into the 战术点形态 — PRTS 狼群 备注. Pinned by `test/content/tokens_devices.test.js`, `kits_alt_t3.test.js`.
- **32 「吟游者的特性能恢复战术家的召唤物、不屈者分支干员的血量…(但赫默的无人机、浊心斯卡蒂的海嗣这种的血量不可以恢复)」**: the
trait is 生命回复速度, which 禁疗 and 无法被友方治疗 do not stop (§25.6.8): 狼群 440 → 532 and 斥罪 1480 → 1618 HP in 3 s
under 魔王 (pinned by `test/content/feedback5-regen.test.js`); 孤立 units stay out (PRTS 孤立). The countdown summons
cannot be refilled since §25.16.5.