feedback5: merge CB1 — community reports (bonds / strategies / items): a pair of colds on an enemy becomes the freeze and leaves no cold (the 谢拉格 wind no longer freezes for good), a 复活 (埃芒加德's 命结之秘, M3茧甲) is a knock-out and an immediate free redeploy where the operator lies (砾's and 瑕光's 被击倒时 / 部署时 layers fire), 佩佩's special refresh is paid, the result card hides the layers of 调和 / 协防干员 / 独行 / 绝技, the 炎佑 keeps off 外勤医疗's slot, 凯瑟琳's 定向投放 offers every shop item; 烛煌's 绝处重燃 before the hammer's lock and the 寻呼模块 / 简易通讯机 tier cap kept as they are (the owner's decisions of 2026-10-07); §25.15 → §25.21 (§25.15 is the shortcuts'); golden: vs feedback5 CB1's own rules — roster-005/009/010/012/014/015/016/018/026/029/031/033/036/040/042/046/047/049, bond-egirShip-high, bond-indomShip-low, bond-kjeragShip-high, bond-maniShip-high, bond-raidShip-low, bond-steadShip-high, bond-suntShip-low, boss-boss_2/3/4/6-pair, hidden-boss_8/9/10-pair, standin-07, matches solo-FUNNY-1, solo-NORMAL-1, solo-HARD-1, solo-ABYSS-1, coop3-ABYSS-5, coop4-FUNNY-6, coop4-ABYSS-7; vs CB1 what feedback5 changed since its base (CB2, CB3, CB4, CB5) plus roster-014
Conflicts resolved by hand: - server/sim/content/items/battle.js: CB3 had extended `revivedInPlace` (an in-place 复活 restarts a deploy-timed skill, item 44); CB1 replaced the in-place revive by PRTS's form — `reviveNow`, a `death` hook that redeploys the operator at once, free, where it lies — and removed `revivedInPlace`. CB1's side is kept: its redeploy resets the skill, so an `activateOnDeploy` skill starts anew by itself; CB3's tests (test/sim/feedback5-raid-revive.test.js: the jump at once after M3茧甲 / 埃芒加德, the window back to full, 砾's fresh barrier) pass on it unchanged. Their header, bonds_core's comment, DESIGN §25.17.5 say so. - docs/SIM.md, docs/design/engine.md: CB1's `fatal` rows (the 复活 are `death` hooks now); the `death` rows also say a deploy-timed skill starts anew (§25.17.5). - data/choices.json: no conflict; `node tools/build-data.mjs --offline` on the merged tree rewrites all 15 data files byte-identically, and the JSON compare with feedback5 shows only pools.pool_equip_kathe.maxTier removed (CB1). - docs/history/0.2.0.md: CB1's section renumbered §25.21 (its §25.15.1–10 and two self-citations; no citation of it elsewhere), placed last; the owner's decisions of 2026-10-07 on items 5 and 45 recorded there, in the intro and in the two pin tests' headers (feedback5-blaze-hammer, feedback5-cb1-pins). Golden: solo-FUNNY-1 (outside CB1's list) has 6 埃芒加德 revives and 85 freezes on feedback5's path (instrumented). roster-014 differs from CB1's own digest by 玛恩纳's 无动于衷: CB3's rule (every enemy damage instance) answers the 萨卡兹枯朽战车's pollution that hits a 卡西米尔 operator in CB1's timeline — with that counter limited to attacks the merged roster-014 equals CB1's digest exactly (checked). Gate: non-browser suites 5021 / 5021, npm run golden ok, test/golden.test.js 9 / 9, lint 0 errors, check:imports ok, typecheck ok.
This commit is contained in:
commit
9ca52ba798
39 files changed
+1433
-861
No files matched your search
+133
-5
@@ -10,7 +10,7 @@ after review with its golden scenarios named: R1–R6 (refactor, tooling), W5A (
|
||||
K1–K3 / W5N (补位), W5H / W5K / O1–O24 (自选编队 and its operator kits), W5I / W5S (languages, phases 1 and 2), W5C /
|
||||
W5E / W5F / W5J / W5L (fidelity, wave 1), WE1 / WE2 (the follow-ups the kit waves reported), W5M, W5R and the feedback4
|
||||
merges (the 0.1.4 ports), W5V (the owner's items of 2026-10-06), W5U (packaging), W5T (the docs), W5Y (round 18:
|
||||
three GitHub issues and three community PRs), W5AA and CB2 / CB3 / CB4 / CB5 (the community reports of 2026-10-06), W5AC
|
||||
three GitHub issues and three community PRs), W5AA and CB1–CB5 (the community reports of 2026-10-06), W5AC
|
||||
(rebindable shortcuts) and W5AD (language packs). Each rule was checked against the official data and PRTS; anything no
|
||||
source backs is marked [ASSUMED].
|
||||
The normative sections were rewritten with the streams: §0 (the DIY slots), §2 (the layout), §5.5 (the enemy damage
|
||||
@@ -42,7 +42,9 @@ reproduced) → §25.18; CB5, match flow and UI (a module's 特性追加 line af
|
||||
the upgrade, an eliminated player following a player through every round, the boss field and its leader in a watcher's
|
||||
boss prep, the pair together in the boss prep with the official green frames; PRs #189 / #191 reused, not merged; the
|
||||
battle-history and hotkey requests left to the owner) → §25.19; language packs, the first type of content packs (a
|
||||
language is a file in the language folder) → §25.20.
|
||||
language is a file in the language folder) → §25.20; the last stream of that batch, CB1, bonds, strategies and items (the
|
||||
谢拉格 wind's endless freeze, 埃芒加德's and M3茧甲's 复活 as a knock-out and a free redeploy, 佩佩's paid refresh, the 炎佑 on
|
||||
the medic's slot, 凯瑟琳's offer, the hidden layers on the result card; the official behaviours pinned) → §25.21.
|
||||
|
||||
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);
|
||||
@@ -56,7 +58,8 @@ 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).
|
||||
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).
|
||||
|
||||
### 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`
|
||||
|
||||
@@ -1283,7 +1286,7 @@ question for the owner.
|
||||
-solo; matches solo-FUNNY-1 / -2, coop4-ABYSS-7, coop2-ABYSS-10-boosted; diy-051. Tests:
|
||||
`test/sim/feedback5-counters-any-damage.test.js`. Docs: docs/SIM.md (re-entrancy rule).
|
||||
|
||||
#### 25.17.5 「突袭盟约的干员如果带被动技能,复活之后不会立马突袭出去,还要等突袭CD」 (item 44): an in-place 复活 starts a deploy-timed skill again — `content/items/battle.js revivedInPlace`
|
||||
#### 25.17.5 「突袭盟约的干员如果带被动技能,复活之后不会立马突袭出去,还要等突袭CD」 (item 44): a 复活 starts a deploy-timed skill again — `content/items/battle.js revivedInPlace` (since the CB1 merge `reviveNow`)
|
||||
|
||||
- **Seen**: 缄默德克萨斯 (S3) revived by M3茧甲 or 埃芒加德 with nothing in range jumped 10.00 s later; after 不屈's real
|
||||
redeploy 0.23 s later. After a timed redeploy every passive member already jumped at once (measured for 宴, 缄默德克萨斯,
|
||||
@@ -1295,7 +1298,10 @@ question for the owner.
|
||||
- **Now**: `revivedInPlace` also restarts an `activateOnDeploy` skill on the next tick — anew when its window had ended,
|
||||
back to its full duration when it still ran — so the member jumps at once; 砾 gets a fresh barrier, 缄默德克萨斯 a new
|
||||
sword rain. The SP reset and the other 部署时 effects of PRTS's form stay unmodelled (§21.21).
|
||||
- [ASSUMED]: none beyond §21.21's in-place form.
|
||||
- **At the merge with CB1** (§25.21.3): CB1 models PRTS's form itself — the 复活 is a knock-out and an immediate free
|
||||
redeploy (`reviveNow`), whose skill reset starts a deploy-timed skill anew — so `revivedInPlace` and its restart were
|
||||
dropped; this item's tests (the jump at once, the window back to full, 砾's fresh barrier) pass on that model.
|
||||
- [ASSUMED]: none (§21.21's in-place form is gone with CB1).
|
||||
- Golden: 1 scenario — roster-012 (the elite 缄默德克萨斯 revived in place three times). Tests:
|
||||
`test/sim/feedback5-raid-revive.test.js`. Docs: docs/SIM.md, DESIGN §5.4 (design/engine.md, the `fatal` hook).
|
||||
|
||||
@@ -1704,3 +1710,125 @@ one commit with its tests; two open community PRs were reused without merging th
|
||||
not, the generated index), `test/ui/i18n.e2e.test.js` (`SP_E2E=1`: a pack file and a pack folder dropped in while the
|
||||
server runs show in the menu and switch, English filling the gaps; a removed pack sends the stored choice back to
|
||||
Chinese); `test/i18n.test.js`, `test/i18n-data.test.js`, `test/i18n-server.test.js` unchanged and green.
|
||||
|
||||
### 25.21 Community reports of 2026-10-06, stream CB1: bonds, strategies, items — `sim/battle/status.js applyStatus` (cold), `content/items/battle.js reviveNow`, `content/bands/battle.js` (埃芒加德), `content/bands/meta.js` (佩佩), `content/tokens.js airTile`, `screens/result.js resultBonds`, `tools/build-data.mjs` (pool_equip_kathe)
|
||||
|
||||
Fifteen of the owner's community reports of 2026-10-06 (items 5, 7, 8, 9 / 37, 15, 20, 21, 23, 25, 41, 42, 43, 45, 49,
|
||||
50 of the list). Each was reproduced on this tree with a script, checked against the official data (bonds.json,
|
||||
items.json, the client's buff templates), PRTS (卫戍协议:盟约 下半/PRTS盟约记录 and its 备注, 术语释义, 特殊机制) and the
|
||||
earlier decisions. Seven were real and are fixed in six commits (7 and 8 share one; golden named in each); five are the
|
||||
official behaviour (four pinned by tests); three could not be reproduced and need the reporters' cases; two questions
|
||||
went to the owner (the order of §25.21.1, a fallback in §25.21.10) — the owner's decision of 2026-10-07 kept both as they
|
||||
are.
|
||||
|
||||
#### 25.21.1 「维多利亚的锁血锤和烛煌的锁血只生效了一个」: both work, one after the other — no change
|
||||
|
||||
- **Measured**: 烛煌 (elite) carrying 坚固维式重锤, a lethal hit every 2 s: 倒地 at the first (绝处重燃, a kit `fatal` saver
|
||||
−50), the hammer's lock at the hit that breaks the 6000 barrier while she is 倒地 (`PRIO_REVIVE` −100), death 8 s later;
|
||||
without the hammer she falls at the second. The 蒸汽之心 path (another operator's hammer) behaves the same.
|
||||
- **Why it looks like one**: PRTS 备注 「不处于【重燃】状态下,受到足以致命的伤害时,可触发此天赋效果,次数不限」 — the talent takes
|
||||
every lethal hit outside 【重燃】, so the lock only ever shows when she is killed while 倒地. The order — kits' savers before
|
||||
the consumable 不死 — is the documented [ASSUMED] (§21.21, §22.7's 余烬): the official talent fires on
|
||||
ON_BEFORE_TRY_SET_HP_ZERO (buff template blaze2_t_2) and the autochess hammer's template is not in the client's buff
|
||||
data, so no source gives an order. Asked whether the lock should take her first lethal hit instead, **the owner kept the
|
||||
order** (the owner's decision of 2026-10-07): 绝处重燃 first, then the lock.
|
||||
- Golden: unchanged. Pinned: `test/content/feedback5-blaze-hammer.test.js`.
|
||||
|
||||
#### 25.21.2 「谢拉格盟约冰冻时间没有随层数正确成长」 and 「…被在无法被任何干员攻击到的地方永控」: a pair of colds becomes the freeze — `sim/battle/status.js applyStatus`
|
||||
|
||||
- **Seen**: the 6-member wind (every 25 s, 寒冷 20 + 0.1 × layers s) froze an enemy for the rest of the battle from 51 layers
|
||||
on, wherever it stood (at the gate too), and never below: measured, 60 layers → frozen from 50 s to the end; 40 → never.
|
||||
- **Official**: PRTS 术语释义 寒冷 「友方寒冷始终需要两两一对产生友方冻结,持续时间取双方之中最高」; 异常效果 COLD
|
||||
「在特定条件下转变为冻结」 — the pair turns into one freeze (a lone 友方 cold on a frozen enemy needs a partner, unlike the
|
||||
敌方 rule 「…施加的敌方寒冷会变为敌方冻结」).
|
||||
- **Cause**: the second cold froze for max(remaining, incoming) (§23.27) and the older cold stayed on, extended to the same
|
||||
length, so the next cold before it ran out — the next gust — froze again.
|
||||
- **Now**: on an enemy the pair becomes the freeze and no cold is left; on an operator (敌方寒冷) the old rule stays. The wind
|
||||
alone freezes 20 + 0.1 × L s of every 50 s from 51 layers (60 → 26 s, 200 → 40 s, all of it from 300).
|
||||
- [ASSUMED]: a paired cold emits no `statusApplied` 'cold' (the freeze does).
|
||||
- Golden: every scenario where a second cold met a cold enemy (the commit lists 35). Tests:
|
||||
`test/sim/feedback5-kjerag-cold.test.js`; `feedback3-cold-freeze` and 灵知 S2 (`kits_t4`) updated. Docs: docs/SIM.md
|
||||
(`cold`), DESIGN §5 (design/engine.md).
|
||||
|
||||
#### 25.21.3 「卡西米尔和艾芒加德策略似乎有BUG:像砾和瑕光这种死亡和部署的叠层效果…无法触发」: a 复活 is a knock-out and a free redeploy — `content/items/battle.js reviveNow`, `content/bands/battle.js`, `content/bonds/core.js installEgir`
|
||||
|
||||
- **Seen**: with 埃芒加德's 命结之秘, 砾 (<部署时> 卡西米尔 +1, <被击倒时> 不屈 +2) gained nothing from his first three
|
||||
knock-outs and stacked only on the 4th, real death; 瑕光's <部署时> +4 never fired on a revive.
|
||||
- **Official**: PRTS 埃芒加德 (and M3茧甲, 阿戈尔) 备注 「“复活”的实现方式为:受益者因移动之外的原因退场时下次部署的再部署时间和
|
||||
费用归零」 — the operator is knocked out and redeployed at once.
|
||||
- **Cause**: both 复活 were `fatal` savers that kept the unit standing (a known simplification, §21.20's "not done"): no
|
||||
`death`, no `deploy`.
|
||||
- **Now**: `reviveNow`, a `death` hook (M3茧甲 `PRIO_RESPAWN` 13, 埃芒加德 `PRIO_BAND_REVIVE` 12, ahead of 阿戈尔 5 at 11 and
|
||||
不屈 at 10): the knock-out stands (被击倒时 effects, 克莱门莎, 卡莱莎, 不屈's +5 SP …) and the operator redeploys where it
|
||||
lies, free (full HP, SP reset, 部署时 effects, the 卡西米尔 deployment ATK, a new 坚固 lock — `revivedInPlace` is gone).
|
||||
The ctx carries `revivedBy`, so 阿戈尔 5 does not count that knock-out as the member's first (the owner's decision of
|
||||
2026-10-05, unchanged).
|
||||
- [ASSUMED]: a revive whose tile is taken spends nothing (as 阿戈尔 5); with both, M3茧甲 answers first (as before).
|
||||
- Golden: the battles with M3茧甲 or 埃芒加德 whose operators fell (11, the commit lists them). Tests:
|
||||
`test/content/feedback5-revive-redeploy.test.js`; bands / bonds_core / feedback1f-hammer / op_lessng / op_zuole /
|
||||
docs-consistency updated. Docs: docs/SIM.md (`fatal`, `death`), DESIGN §5 (design/engine.md), docs/PLAYING.md, research 04.
|
||||
|
||||
#### 25.21.4 「局内划掉被ban的盟约的实际效果有问题:只在标准模拟中生效」: the drawn bonds are the same in every difficulty — no change
|
||||
|
||||
- **Measured**: the drawn set D — 0 core + 1 add-on in 标准, 3 + 4 in 险境 / 绝境 / 终极 — removes only the operators whose
|
||||
every bond is in it (23–25 banned, none in the pool); each drawn bond keeps 2–10 members through their other bond, 标准's
|
||||
one included. Only 标准 also has the mode's static list (the official modeDataDict inactiveBondIdList, 10 bonds that never
|
||||
activate, §21.7).
|
||||
- **Official**: 帮助 「…以及不完整的盟约与不会进入调配池的干员」, the briefing badge 「部分盟约所含干员阵容不完整」, the
|
||||
strategies' 「在<X>部分干员缺席时体验可能不完整」 (research 01 A2). The briefing legend already says it.
|
||||
|
||||
#### 25.21.5 「佩佩策略的特殊刷新也是要花钱的,不是免费」: the special refresh is paid — `content/bands/meta.js`
|
||||
|
||||
- **Seen**: reaching shop level 2 / 4 / 6 granted a free refresh; the special one cost 0.
|
||||
- **Official**: 博学多通 「获得1次特殊刷新」 names no 免费 (德克萨斯's trait 「获得1次免费刷新」 does); the blackboard's `price`
|
||||
0 had been read as its price.
|
||||
- **Now**: the level-up marks the next manual refresh special — the usual refresh price, the chess slots filled with
|
||||
<萨尔贡> first. [ASSUMED] `cnt` / `price` 0 change nothing. Golden: unchanged. Test: `test/content/bands.test.js`.
|
||||
|
||||
#### 25.21.6 「独行这种盟约是不能叠层的」: they stack, the game never shows them — `screens/result.js resultBonds`
|
||||
|
||||
- **Official**: PRTS 盟约记录's header 「下述盟约中部分盟约不会显示叠加层数,但是叠加层数的特质/策略/装备等效果仍然对其生效」 — the
|
||||
four bonds.json `noStack` bonds (调和, 协防干员, 独行, 绝技) take layers like every other (GitHub #139's answer, 0.1.4
|
||||
PR #66); their effects do not read them. The report asks for what the game does not do.
|
||||
- **Now**: the one place still printing the hidden count — the result card (「独行 24」, ranked by it) — shows no number and
|
||||
does not rank by it, as the bond strip since PR #66. Golden: unchanged. Test: `test/ui/feedback5-result-bonds.test.js`.
|
||||
Docs: docs/PLAYING.md (层数), research 02 §2.2.
|
||||
|
||||
#### 25.21.7 「Touch策略给的医疗干员会跟炎盟约的炎祐冲突,无法同时出场」: the 炎佑 keeps off the map-character slot — `content/tokens.js airTile`
|
||||
|
||||
- **Seen** (every season map): on 战场#08 涨潮控制 (always) and 战场#07 排气格栅 (the second 炎佑 of 9 炎) the 外勤医疗 medic /
|
||||
Touch never stood.
|
||||
- **Cause**: both spawn at battle start; the 炎佑's tile (void tiles nearest the half's centre) took (10, 2), the medic's
|
||||
stage slot (stages.json `mapChars`), first. The 联防 maps have no predefined medic in the official levels: none there.
|
||||
- **Now**: `airTile` holds the map characters' positions. Golden: unchanged. Test: `test/content/feedback5-yanyou-touch.test.js`.
|
||||
|
||||
#### 25.21.8 Not reproduced — 「炎祐能错误的被空中单位阻挡」 (item 25), 「选pith策略的时候阿戈尔在联防时会出现加成被清空」 (item 41), 「源石溶剂在干员血量满的时候没生效」 (item 42) — no change
|
||||
|
||||
- 25: the 炎佑 never blocks (block 0) and is never blocked (only enemies are block candidates), as PRTS 特殊机制 我方单位
|
||||
「敌人类我方单位不会被角色类单位阻挡」; it hovers on the top-aggro enemy, and an unblocked ranged enemy — a flyer included —
|
||||
stands for each attack (GitHub #58), so a flyer shooting it looks held.
|
||||
- 41: Pith's 盟约·辅助干员 (调和) with four 阿戈尔 (5 with 调和's +1): the same 阿戈尔 HP bonus in the normal battle and in 联防,
|
||||
one or two helpers, either half; the 联防 input is the normal one plus the round's layers, HP ratio, SP and 倒地.
|
||||
- 42: from full HP the drain ticks 60 / s and ATK +40 % holds. Noted for the owner: the official `periodic_damage` template
|
||||
has `_ignoreForSp: true` (no 受击 SP), while §21.12 lets it charge 受击回复 SP.
|
||||
- The reporters' cases (operators, items, screenshots) are needed.
|
||||
|
||||
#### 25.21.9 「凯瑟琳装备池没有超出商店等级的装备」: the 凯瑟琳 offer is every shop item — `tools/build-data.mjs`
|
||||
|
||||
- **Seen**: the 1 → 2 upgrade offered tiers I–II only (40 seeds: 55 × I, 65 × II).
|
||||
- **Official**: the pool is server-side; the players' first-hand account 「原版凯瑟琳1升2都能有6本装备」.
|
||||
- **Now**: `pool_equip_kathe` is every shop-eligible item, uniform [ASSUMED] (40 seeds: I 9 … VI 24); data/choices.json
|
||||
rebuilt offline (only that pool's `maxTier` gone). Golden: coop4-ABYSS-7. Test: `test/match/feedback5-cathy-pool.test.js`.
|
||||
|
||||
#### 25.21.10 The official behaviour, pinned — 「寻呼模块和电话对干员缪尔赛思用不会给缪尔赛思」 (item 45), 「炎祐能吃到掉血道具的效果」 (item 49), 「两个空弦转职阿戈尔…最后面的空弦不能吃前面的空弦」 (item 50) — no change
|
||||
|
||||
- 45: 「电话」 is 简易通讯机 (its phone icon; 备注 「获得的干员等阶不高于当前调度中心等级」), like 寻呼模块 「(不高于当前调度中心
|
||||
等级)」. 缪尔赛思's only bond is 调和, whose only operator in the pool is her, tier VI: below shop level 6 nothing qualifies
|
||||
and the item is used up (as 拟态物质 at the copy cap, §25.13.1); at 6 she comes. Offered a fallback to any tier when
|
||||
nothing qualifies (what the reporter expects), **the owner kept the official cap** (the owner's decision of 2026-10-07).
|
||||
- 49: PRTS 源石溶剂 备注 「携带后,全场范围内的所有敌人类我方单位也会获得此装备的“每秒受到60真实伤害”效果」 — the 炎佑 is one
|
||||
(600 HP in 10 s, no ATK bonus).
|
||||
- 50: two operators made 阿戈尔 by 变形同构体 + 阿戈尔重刃 (two 空弦, 空弦 + 哈洛德) devour like any others, through the real
|
||||
intents too (+3 layers, ATK, block). Two NORMAL copies of one item merge (the official rule), so two 空弦 need a normal
|
||||
and an 进阶 set; and the pair counts once toward the 3 members.
|
||||
- Pinned: `test/content/feedback5-cb1-pins.test.js`.
|
||||
Reference in new issue
Block a user