44 KiB
DESIGN §28 — 0.2.3
Part of DESIGN.md (the index; section numbers are global).
28. New content and community fixes
This chapter describes the development version, not a published release. Numerical content is rebuilt from
CN client 2.7.81, ArknightsGameData commit 17759cc8cdf37388414145d16262a3a06f3ab25e (2026-10-08),
with mechanism notes from PRTS checked on 2026-10-09. Launch-day descriptions may receive corrections.
28.1 克莱门莎 — sim/content/kits/ops/op-clemnt.js
- Source: PRTS 克莱门莎 and the official character, skill and range tables.
The non-collaboration 6★ roster gains Clementia (
char_4231_clemnt), a 本源近卫: 72 DIY operators, 89 backup units including stand-ins, 259 selectable forms. All three skills are selectable in the existing tier-5 / tier-6 DIY slots at their existing skill-rank rules; potential and cultivation follow the player's settings. She has no launch module. Her bonds follow the existing faction mapping, including 阿戈尔. - Talents: each physical hit independently rolls 生死定夺's pre-DEF ATK multiplier; an enemy with current DEF below its initial DEF uses the higher probability. 习得性防御 reduces physical / Arts damage from the forward half-plane (including its boundary) or an enemy she blocks; 海怪 uses its separate reduction. Both talents take their potential-sensitive values from the generated data.
- S1: the charged attack applies its ATK scale and inflicts 侵蚀损伤 proportional to actual HP damage. S2: the cabin travels forwards at 2 tiles/s, up to 3 tiles, carrying up to 15 ground enemies with a total weight of 8. Its collision square is 1.1 × 1.1. Impassable terrain stops it; self-bound / teleport-immune units cannot ride. Its actual stopping position becomes a radius-1.5 vortex that can affect air, slows by 70%, and each second deals 200 erosion damage plus the skill's physical damage. Erosion follows the engine's normal resistance, burst cooldown and mode-leader immunity rules. Ordinary skill attacks hit their main ground target and up to four neighbours.
- S3: attacks select up to three ground enemies and add erosion based on actual HP damage without spending ammunition. A selectable ground enemy's erosion burst anywhere in the current battle marks it for 1 s. The closest mark consumes one of 10 bombardments: three physical + elemental hits in the target tile's five-tile cross. A tile with an outstanding projectile cannot be selected again for 5 s. Values are taken from the skill rank, not inferred from the final rank's description.
- [ASSUMED], pending PRTS confirmation: S2 ordinary splash radius 1.5 and stable spawn-order tie breaks; 放逐 presently prevents walking, attacking and blocking while keeping the passenger damageable; cabin movement updates every sim tick, stops 0.4 tiles before an impassable edge, and the vortex ends with S2. S3's first impact is 0.5 s after launch, the others 1 s apart; launched projectiles finish after skill end. These are local kit assumptions, not changes to displacement or targeting rules for other operators.
- Tests:
test/content/op_clemnt.test.jscovers available forms, potential, crit probabilities, directional defence, S1 cadence, S2 capacity / immunity / terrain / air vortex / target cap, and S3 ammo / global marks / mixed damage. Golden changes and the final integration verification are recorded below once complete.
Clementia S3 currently uses the shared blast visual as an explicit [ASSUMED] placeholder;
this preserves the previous fallback appearance, not a claim to reproduce her official effect assets.
28.2 New modules — 黍「好时节」and 乌尔比安「前路」
- Sources: PRTS 黍, PRTS 乌尔比安, official
uniequip_tableandbattle_equip_tablefrom the same CN revision. Regenerating data adds GUA-Y (uniequip_003_shu) and CRU-Y (uniequip_003_ulpia) to their existing forms, including the anchor's module lookup. The day's new 5★ operators stay outside the established non-collaboration 6★ DIY pool. - 黍: GUA-Y's trait gives 15% damage reduction. The upgraded 天有四时 takes the improved HP / ASPD / four-Sui squad bonuses from the module blackboard. Satisfying at least two of the three conditions grants the separate additional ATK bonus (3% / 5% at module levels 2 / 3); it expires when the conditions stop holding.
- 乌尔比安: CRU-Y increases damage to an enemy blocked by any ally by 10%. Its upgraded talent also counts another 深海猎人's credited kills (including delayed hits after that hunter leaves) while 乌尔比安 is deployed, shares the module's specified HP / ATK proportion, and adds one block at 9 stacks. Potential's extra maximum stack is retained. The mode's tier-5 elite form still uses module level 1; support for upgraded talent blackboards does not change that established rule.
- Tests:
test/content/new-modules-023.test.js, plus existing 黍 and tier-5 kit cases. The level-3 talent fixture is sourced from the official module blackboard; it is not exposed as a new tier-5 loadout.
Content verification checkpoint
The new content's targeted tests passed 16/16; existing Shu / tier-5 coverage passed 120/120. An independent
interaction pass checked retreat cleanup, sleeping passengers, a real rebirth enemy, hit-count life,
post-retreat bombardments and delayed hunter kill credit. It found and corrected vortex-position rounding,
an unsupported elemental-resistance bypass and an unnecessary on-field check on the credited hunter.
All 285 golden scenarios were regenerated: only roster and diy changed, (roster-019, roster-038, diy-059–diy-140), because the added module expands
loadout coverage and the added DIY operator / Shu module expand and regroup the DIY scenarios. bonds,
fields, matches and standins remained byte-identical. Full integration and browser checks follow separately.
28.3 Clipboard export inside dialogs — #433
Reported by @RushFTK: exporting settings over an insecure/LAN connection focused the language selector and
reported success without copying the export. The fallback textarea was appended outside the active dialog,
whose focus trap redirected selection before execCommand('copy').
ui/clipboard.js now selects its temporary textarea inside the active dialog/guide, validates focus and the
whole selection before copying, and always removes it and restores focus, including after exceptions.
The secure Clipboard API remains first choice; a failed fallback returns false for the existing manual-copy UI.
Shared invite/loadout copying uses the same helper. Device tests passed 16/16; independent interaction probes
passed 12/12. The real nested-dialog regression is included in test/ui/modal.e2e.test.js for integration testing.
28.4 蕾缪安's wanted range also triggers skills — #428
Reported by @CurlyZhu. Marked enemies' tiles extended normal targeting, but were absent from the skill's
initial trigger range: full SP could sit idle while she attacked a remote wanted enemy. Her kit now registers
those tiles through the existing addTriggerRange contract, retaining target selectability and operation cooldown.
PRTS 蕾缪安 also clarifies that a new detection timer needs a selectable target,
a timer already attached continues while sleeping within detection range, and the source leaving clears its
timers and marks. Each source now tracks its own progress; one Lemuen leaving does not erase another's marks.
The focused 12 tests cover all three skills, cross-player detection in a joint field, sleep/wake, multiple sources,
redeployment (including immediate range cleanup before the next attack) and the existing S3 waiting/late-bombardment behavior. Independent review passed after fixing that cleanup.
Golden: all 285 scenarios recomputed. roster-016/018/035/036/045, boss-boss_1/3/5/7-pair,
hidden-boss_9-pair and solo-HARD-9-boosted move because wanted marks now drive skill casts and
source-owned detection/cleanup; allies and kill timing consequently change. Bonds, stand-ins and DIY are unchanged.
28.5 远牙's granted trait on substitute switches — #415 / PR #429
Ported from PR #429 by @CXUtk; reported and
original-mode interaction confirmed by @rosexxxp. The official activity table supplies the amounts:
garrison_148_a/b grants garrison_108_a/b, +4/+8 to active 卡西米尔 and 精准, capped at 24/48 per battle.
Only that granted trait additionally listens to dollSwap, in both directions, through the existing gain function.
Deployment and switches share the original cap, active-bond checks and grant deduplication. Other deployment
traits keep their existing triggers. The 7 regression cases cover both real dollkeepers, natural and S2 returns,
shared caps, duplicate grant holders, inactive bonds and unrelated timed windows.
28.6 Asset download visibility — PR #421
Ported from PR #421 by @LimitlessHPPK.
The asset resolver records every planned leaf with no alternative on disk as droppedLeaves in its report;
the terminal prints a bounded summary. --strict / SP_ASSETS_STRICT=1 returns exit 1 for those omissions.
The default remains a warning, and the existing manifest shrink guard remains in force. Strict mode changes
the outcome code; it is not a transaction and does not roll back a manifest already written. Temporary test
assets are cleaned up after each case. This is an opt-in tool check, not an added packaging requirement.
28.7 Korean wording and contribution template — PRs #414 / #432
PR #414 by @D-Roote improves 292 existing Korean
interface strings. Only its message values are ported; later keys and the pack's translation metadata remain.
PR #432 by @Xinglan233 supplies a contribution
checklist covering the problem, source evidence, assumptions, actual checks and golden changes. The template
is installed at .github/pull_request_template.md, the default template location, so GitHub can offer it
without a named-template query parameter. No gameplay rules change.
28.8 Stop recalculating held Spine poses — PR #434
Ported from PR #434 by @Cloudnyco. A finished, non-looping, unmixed death pose or frozen model can reuse its posed skeleton and cached pixels while its clock advances. First poses, new clips, tint changes, mixing, multiple tracks, pending wind-ups / closing clips, clipping switches, dirty textures and zoom rescaling still update. Redeployment resumes normal animation. Redeploy countdown labels share rasterized textures keyed by text, colour and resolution; late web fonts refresh them in place. The 64 targeted renderer tests passed. The author's performance measurements are not reproduced here; real Pixi checks are part of the integration pass. No battle rule or golden result is intentionally changed.
Real Chrome verification additionally renders one actual Spine death against continual forced updates through mixing and the held final frame (40 pixel comparisons over 600 frames), checks revival and the actor clock under the held-update policy, and reloads Bender after a shared label was rasterised. The label updates in place and DPR variants stay separate. This verifies correctness on that model; it is not a new performance benchmark or a full-roster pixel claim.
28.9 Preserve facing during pushes and pulls — #418 / PR #427
Ported from PR #427 by @YinqiMargatroid.
Successful pushes/pulls mark their displacement events keepFacing so the renderer retains pre-hit facing
while waiting for the endpoint snapshot and throughout the slide. Raw displacement and explicit
keepFacing: false retain the old directional behavior. Position, distance and unbalance time are unchanged.
The contributor's source clips and their limitations are retained in research 13; those observations were not
independently replayed for this port. [ASSUMED] other push sources and pulls against the target's old facing
share the examples' display behavior; the drag template alone cannot establish that engine rule.
Tests cover real push/pull skill paths, default/override metadata, snapshot reversal, and an earlier attack
arriving after slide prestart in either field direction. Golden metadata deliberately omits the display flag.
28.10 Charged guardian heals and mixed-skill activation — #406
Reported by @ChengCC0101. 塞雷娅 / 黍 S1 previously required an enemy to supply the attack that their charged heal
replaces. PRTS 塞雷娅 and 黍 describe an eligible ally at
half HP or below, with the normal attack cadence. updateAlly now checks this alternate target after its cooldown
and control/disarm checks; an enemy is unnecessary. An invalid pending heal still returns its charge. This corrects
the enemy requirement inferred in historical §27.31; that earlier conclusion is superseded.
PRTS 凯尔希·思衡托 S2 can attack enemies and heal allies. Its automatic activation now accepts either target kind on its expanded range, under the existing player-approved range strategy and operation cooldown. S1/S3 keep their existing trigger rules. This addresses the healing/activation parts of #406; the separate fatal-hit/silence report still needs an independently justified damage-order fix.
Verification: 104 targeted tests pass. Independent interaction review found and verified fixes for a one-frame cadence delay and premature charge use while disarmed; normal/100-ASPD intervals are exactly 1.2/0.6 s. Sleep, silence, no-heal targets, charge refunds, cooperative healing and S2 target selectability remain covered.
Golden: all 285 scenarios recomputed; diy-059, diy-133 change because
charged heals now act without enemy targets and S2 can open for enemies. Other scenarios remain byte-identical.
28.11 Integration checks for the expanded roster
The fixed roster assertions now include 72 owned DIY operators, 259 forms, 192 voiced operators and 2688 Japanese lines; the official-table comparison still checks every potential, skill and module. Clementia adds one 阿戈尔 pick. The official EN overlay has no launch-day Clementia talents yet: overall coverage remains ≥97%, with the measured talent floor explicitly updated to 94.9%; untranslated text keeps its Chinese fallback. The old Saria no-enemy assertion is corrected to require actual healing, and development builds retain the standard top-of-README notice.
§28.12 浏览器验收退出时释放自有日志管道
完整浏览器验收中,真实对局与观战的断言已经全部通过,但 Chrome 的崩溃报告/更新辅助进程继承了日志管道,测试进程仍在等待读取结束。共用测试客户端现在在浏览器子进程明确退出后释放它的 stdio;关闭失败、子进程仍活着时不关闭管道,也不操作其他浏览器进程。游戏运行时代码与战斗规则不变。
新增真实子进程继承 stderr 的回归,以及关闭失败/信号退出的边界检查;验收要求原异常文件单独重跑并确认正常结束。首轮异常与复测结果分别保留在本轮验收记录中。
同一轮的版本重连测试在刻意停服时,Chrome 可能报告连接拒绝、连接重置或未连接的 socket。测试只在主动停服至恢复握手的窗口内排除这些已知传输日志;正常运行期间仍检查它们,脚本异常始终保留,所有版本指纹、重连及换局刷新断言不变。
28.13 Special targets respect DEFAULT attack timing — #438–440
Seen: 死芒's normal attack reaches enemies blocked by his own summons, but S1/S2 did not open for those targets.
The earlier 蕾缪安 fix also registered a per-tick trigger, allowing an early cast before her attack countdown elapsed.
The PRTS mode help describes DEFAULT activation at the next ordinary attack.
addTriggerRange now accepts attackOnly; both operators use it, while existing summon-area triggers retain their
per-tick behavior. Only live owned summons / wanted marks contribute selectable targets. S2's actual link range is
unchanged. PR #438 by @YinqiMargatroid addresses the same wanted-target symptom; the existing registration API is
extended instead of introducing a second targeting flag. SIM.md and design/engine.md contain the current contract.
Tests: real summoned-bone blocking, S1/S2 and united fields, attack countdown, sleep/ownership, wanted-target S1–S3, plus existing 令 / 麦哲伦 trigger regressions. The combined operator checks pass 27 tests; the additional area-trigger and champagne controls also pass. Golden movement is recorded below.
28.14 Interface text size — #435 / PR #446
Adapted from @7eLaryn: four persisted text sizes use --t without changing the rem layout root. All shipped language
packs retain their current translations. Added the missing explanatory note and fixed English XL settings overflow:
segmented controls and header actions wrap within their available width. Long briefing alliance labels size and wrap
with their cards instead of overlapping neighboring names. Default sm preserves the previous sizes.
Tests: settings / text-unit checks, phone landscape growth and unchanged board/canvas/shop geometry, reload persistence, and XL settings in Chinese, English, Japanese, Korean and Traditional Chinese. The first multilingual check exposed English overflow; the corrected browser suite passes. Current behavior is in design/client.md and PLAYING.md.
28.15 Cooperative card purchasing — PR #407
维护者 2026-10-10 审核后同意保留。此前未获明确批准,本次审核追认仅适用于本节已有功能;以后新增功能必须先取得维护者明确同意。
Adapted from @IceCodeNew. [ASSUMED] A tier V/VI shared-pool card matching another living teammate's active opening bond receives one 18-point buying-score penalty. It is a soft preference, not reserved stock; normal/elite and DIY stock semantics remain unchanged. Humans and bots receive the same cooperation. This does not add persona presets.
Tests: 14 targeted bot tests; 40-seed solo:HARD and coop4:HARD before/after benchmark is part of integration evidence. The comparison includes the special-target timing changes of §28.13, so it must not be interpreted as an isolated measurement of the purchasing heuristic. Current rule: design/match.md §6.6 and its follow-up contract.
28.16 AI teammate emotes — PR #444
维护者 2026-10-10 审核后同意保留。此前未获明确批准,本次审核追认仅适用于本节已有功能;以后新增功能必须先取得维护者明确同意。
Event wiring from @DDDarkstar, with corrected dispatch semantics. [ASSUMED] Cosmetic reactions are enabled only in
mixed human/AI matches, under the existing emote whitelist and cooldown; SP_BOT_EMOTES=0 disables all hooks.
Responses skip cooling bots and stop after one reply. MVP uses this round's kills and damage, with stable order for
ties; settlement reacts once per round. Only the third chess merge reacts, then resets for the next round. A gift uses
its source playerId rather than a display-name heuristic. No RNG, gameplay decisions or timers are introduced.
Tests cover whitelist/cooldown, no human impersonation or recursive AI reply, pure-AI silence, round statistics, settlement/merge limits, gift identities, the disable switch and actual emote/acquisition hooks. README, META.md and design/match.md document the switch and boundary.
28.17 Active skill attack and impact sounds — PR #410
Adapted from @Convey123's updated PR. The current official audio_data.json gives 司霆惊蛰 mode attack banks and
赤刃明霄陈 S3 separate swing/impact banks. The generator adds per-slot attacks / hits, each with its own optional
attackMix / hitMix. It preserves the selected bank's chance and volume rather than applying the normal attack's
mix. A late impact keeps the mode at launch; an end before spawn cancels a pending start. Snapshot restoration and
ordinary-mode fallback remain supported. JP voices and current roster assets survive regeneration.
[ASSUMED] Where no activation sound names the mode, slot 1/2/3 is inferred as d/h/s. Bank selection prefers START to ON and then plain/numeric order; this approximates an ability graph and is not independently established for every operator. Mixed-letter banks are rejected. Instant effects that emit no normal attack event remain outside this mechanism. ASSETS.md and design/client.md specify the manifest/runtime contract.
Tests: 85 audio, manifest, official-mix and JP-voice checks, including independent mode gain, delayed impacts, end-before-spawn, late join and field reset. Regeneration is additive; no existing manifest leaf was removed. Four unresolved upstream candidate icon/avatar leaves still make strict asset fetching report failure; they are not new sound failures or deletions of existing entries. Packaging must retain this limitation visibly.
28.18 Per-operator voice language — #436
Roster details and selected DIY cards offer 中文 / 日本語 / 跟随全局. Settings persist a sanitized charId map locally; normal/elite/DIY forms of that charId share the choice. Existing profiles migrate to an empty map, so global language continues to apply. Deleting an override restores the current global choice. Missing Japanese slots / files keep the existing Chinese fallback. No room protocol or exported combat-loadout data changes.
Tests cover malformed/inherited entries, persistence, changing the global default, deleting an override and fallback; a real phone-sized browser changes the control, reloads and resets it. Current contract: design/client.md / PLAYING.md.
28.19 Browser installation — PR #413
维护者 2026-10-10 审核后同意保留。此前未获明确批准,本次审核追认仅适用于本节已有功能;以后新增功能必须先取得维护者明确同意。
Based on @Cromemadnd's proposal, with a one-use install controller. Buttons appear only after a browser install offer;
standalone/fullscreen and installed sessions hide them. Accept, dismiss, failure and duplicate clicks all consume the
same offer once. See the prompt API
and installability requirements.
The 2026-10-10 icon revision replaces the previous mint rook with an original, season-independent fortress / shield
and defended square. Its neutral grey palette and geometry use no official logos, artwork, icons or fonts and no
Alliance lettering or seasonal insignia. public/icons/app.svg is the master; tools/export-app-icons.py exports
192/512 px any and separate opaque maskable PNGs (the mark stays inside the central 40%-radius safe circle),
16/32/48 px PNG / ICO favicons and a 180 px Apple touch icon. All ship outside optional game art, including lite
packages. See ASSETS.md for the source, reproduction command and originality statement.
No service worker or offline cache is installed; the server is still required.
The lobby keeps Settings immediately before How to Play even when the optional install/recovery buttons appear;
the full browser run caught and corrected an initial insertion between that established pair.
The settings-entry check tests the absent board-style/background-music option labels, allowing the text-size help
to explain that the board keeps its scale.
Tests: offer lifecycle/disposal, decoded PNG dimensions / opacity / maskable safe zone, favicon references and packaging inclusion. The initial feature also had real Chrome manifest and installability checks, and a synthetic dismissed offer through the actual button. Initial incognito rejection was a test-environment limitation; the real installability check runs in Chrome's ordinary temporary profile. Native OS installation itself is not performed. The icon revision is verified offline; browser / OS validation of these replacement assets is deferred to the follow-up review environment (this sandbox cannot listen on a port).
28.20 Recover a closed local match window — #431
Reproduced with an idle window retaining its own session while a second match window closes. The title/lobby now lists local saved match seats using bounded metadata beside the existing recent-token ring. Explicit selection asks live tabs to claim the chosen token again before adopting it (same-document reconnect since §28.27). An active tab is never deliberately replaced; names/IP are not authentication. Missing BroadcastChannel refuses recovery. A server-generated replacement token or leaving clears obsolete metadata. The initial feature changed no server API; §28.27 later adds optional hello guards and keeps startup on the tab's own identity.
Tests: live tab protection, closed-tab recovery, simultaneous claim arbitration, no channel/unknown id, malformed storage and expired metadata; a real two-window browser restores the identical server playerId and room after closing the match tab. The existing identity/static suite also passes. Current contract: design/client.md and network.md.
28.21 Unanimous opening reroll — #77 / PR #408
维护者 2026-10-10 审核后同意保留。此前未获明确批准,本次审核追认仅适用于本节已有功能;以后新增功能必须先取得维护者明确同意。
Adapted from @Siornya, excluding the unrelated result-screen redesign. [ASSUMED] This remake feature is host-proposed, requires every connected human's consent, and pauses confirmation while voting. Bots/spectators do not vote; autoplay humans still do. Single-human matches refresh immediately. Refusal, cancellation, disconnect or leave restores the old setup and remaining confirmation time. Success preserves room/seats/settings, resets Ready and restarts the full normal timer; fixed stages/bans remain fixed. The random result may repeat.
A dedicated seed-derived reroll stream does not advance the original shop/draft/meta streams. A 300 ms anti-burst guard, setup revision and vote id reject stale actions. Opening data and every player's DIY stock are prepared before any mutation; a forced failure on the second player's stock leaves all previous state intact. Current contracts are in META.md, design/match.md, design/network.md and PLAYING.md; all four translation packs have the new messages.
Tests: 13 match checks including real four-player sockets, permission/spectator checks, cancellation/disconnect, reconnect, last-second and queued-Ready timers, outdated messages, one human with bots, fixed rules, fuzzed requests and transactional failure. Final browser/integration validation supplements these targeted checks.
28.22 Late-loading deployment animation — part of PR #416
@Cromemadnd's proposal exposed a real missing case: onDeploy arrived before the model, so Start was never played. The view now retains elapsed game time until the model arrives and continues the existing clip at that point. A clip already over is not restarted; an intervening attack/death cancels the pending entrance. Existing Front/Back transfer and single-source deployment audio remain unchanged. The proposed repeated phase/purchase sound sequence is not part of this fix: its timing and duplication need separate visual evidence.
Tests: delayed load, simulation rate, load after clip end, attack/death supersession, destroyed view and existing UnitView behavior, 48 checks passing. No simulation/golden change from this visual fix.
28.23 Follow-up golden movement
Recomputed all 285 scenarios from the integrated code; never copied PR baselines. The DEFAULT cadence correction moves
roster-016, roster-035, roster-036, roster-045; paired fields boss-boss_1-pair, boss-boss_3-pair,
boss-boss_5-pair, boss-boss_7-pair, hidden-boss_9-pair; and match solo-HARD-9-boosted. 死芒's added activation
condition moves diy-132. coop2-NORMAL-14-standins includes both cooperative purchasing and the corrected simulation.
The pulse queue correction of §28.24 additionally moves hidden-boss_10-solo. The bonds and standins families are unchanged. Cosmetic emotes, preferences, installation and opening rerolls that
are not requested do not intentionally alter those games. The validation record lists any outcome flips and measured
benchmark changes; the independent final review remains pending.
28.24 Echo / counter recursion found by the cooperative benchmark
The 40-seed benchmark exposed existing hook-depth errors in co-op seeds 3 and 29, plus seed 14 after the purchasing change. In all three, “余音” damage pulses and 刺玫 / 泡泡 counters synchronously called each other. A scaled echo can have 67 hit-count HP; the generic 32-hook guard cut off effects before the legitimate chain finished. The same chain could also enter another hit while zero HP was waiting for death bookkeeping.
PRTS “余音” establishes the hit-count and damage-pulse behavior. [ASSUMED] The exact nested ordering is not documented: each echo now queues recursively earned pulses and resolves them FIFO in the same call, after the current pulse finishes. Every earned pulse retains its attack value, including the lethal hit's pulse. No extra tick, RNG draw, global hook-depth increase or arbitrary pulse suppression is introduced. Death prevents further counter targeting normally. This local scheduling choice needs final fidelity review.
Tests use real elite 刺玫 and 泡泡 against 67-hit echoes: all 67 pulses resolve, the echo dies, no engine error is logged, and the queue clears. Both tests fail against the previous implementation. Together with the existing enemy/boss and 刺玫 healing suites, 273 tests pass. The benchmark now writes actual diagnostic messages beside nonzero error counts, so failures cannot be mistaken for ordinary performance results. Recomputed golden and final benchmark results are recorded with the candidate; do not reuse the earlier, erroneous benchmark as a clean result.
28.25 Community feedback of 2026-10-10
The current development candidate was checked against thirteen reports, including feedback explicitly describing 0.2.1. Sources: PRTS mode strategies, alliance/item notes, 吟游者 branch notes, 假想敌:铳, the cached official enemy and activity tables, and the owner's supplied 克莱门莎 official showcase. The multiplayer 50-second setting is the owner's explicit official-play requirement.
| Report | Verified result / change |
|---|---|
| 1. Lethal hammer/sailor stun after 不屈 | Fixed. Enemy normal attacks snapshot target deployments before damage. The subsequent periodic stun cannot affect a replacement deployment created during that strike. A surviving target is still stunned normally. Covers both hammer variants (third strike) and both dock sailors (fourth strike). |
| 2. Opening strategy time | Multiplayer picks now have 50 seconds each, including skips; the header and per-turn deadline remain one clock. Solo and single-human matches remain untimed. Regenerated config.json from the builder. |
| 3. Fartooth + dollkeepers | Already fixed in §28.1. Existing actual Kazemaru and Specter alter swap/return tests pass, including active-bond gating, caps and repeated swaps. |
| 4. Gavial S2 pulls final boss | Not reproduced. Both tier-4 and tier-5 S2 implementations use the shared pull API, which rejects boss-pool leaders. New actual-S2 tests hit a final boss without moving it and additionally reject exaggerated pull force. |
| 5. Clementia strategy gains inactive Aegir | Fixed. PRTS explicitly requires activation; the former requireActive: false and its old test contradicted that note. An inactive bond now gains nothing; an active one gains the knocked-out member's tier, still disabled in unite/boss battles. This is the strategy, separate from the new playable operator. |
| 6. Pith/Aegir ATK in 0.2.1 | No confirmed current defect. Devoured ATK is atkFinal, added after an operator's own ATK percentages, then scaled by independent multipliers; existing numeric tests check this order. The report lacks the full lineup, skill/equipment state and exact unrounded stats, so 5340 versus “about 6040” alone cannot establish a discrepancy. |
| 7. Stunned bards stop regeneration | Fixed for the default trait and Skadi alter's custom continuous trait. Aura refresh requires being on-field, not being able to act. Stun still blocks attacks/skill use, and leaving stops the aura. |
| 8. Stationary redeployment loses Raid | Current code grants the ATK/HP bonus to the deployment made by Raid's relocation. Ordinary redeployment clears it; the existing passive-skill revive tests do jump promptly when their conditions hold. PRTS's “期间” does not settle whether an ordinary stationary redeploy should retain it. Preserve this rule pending an official comparison of that exact case. |
| 9. Gun boss “90% reduction absent” | The official value is damage ×0.2 (80% reduction), already implemented. Fixed an actual coverage gap: PRTS includes another gun as well as springs in the condition. Also refresh on hit so the first hit and immediate companion removal cannot see an outdated aura. |
| 10. Compass/tea +3 bypasses SP lock | Fixed. PRTS says all 黄沙罗盘 SP bypasses 阻回. A documented ignoreLock option permits the first-end refund and combo gift during noSp or a running skill, including the caster. Ordinary SP gifts still obey both locks. |
| 11. Dobermann whip random bounty | Already implemented as a private three-choice selection (§27). Existing choice and reconnect tests pass. A timer/bot can still resolve an unanswered choice automatically. |
| 12. Lemuen ammo does not gain layers | Not reproduced with real S3 consumption, normal and elite. Each ten bullets grants +2/+4 to each active named bond when at least three own operators share the row. Two actual casts cross that threshold and gain the expected layers. The existing garrison tests also cover fewer than three in the row. |
| 13. Sudden simplified view | The message is emitted for any renderer startup failure, including import timeout, not exclusively unsupported hardware. Reworded it to describe the failure and offer reload. The prior mount-cancellation/late-disposal fix remains; the report alone does not identify this user's browser failure. No forced persistent 2D preference is written. |
The new same-strike revival, bard and SP-lock regressions fail seven checks against the pre-change simulation and pass after these fixes. The additional band and boss tests exercise inactive activation and same-tick reduction. The validation record accompanying the candidate lists full CI, browser recovery and golden results.
The official showcase was reviewed in talent/S1, S2 and S3 segments. S2 shows a moving cabin then a stationary vortex, including the second battlefield demonstration. S3's repeated bombardments agree with the documented three-hit, one-second pulse interval. Crownslayer's supporting skill and smoke are visible in the later S3 segment and are not attributed to Clementia. Edited footage does not settle the absolute first-bomb offset, S2 splash radius, or all exile status rules; the existing marked assumptions remain. No visual resemblance is used as proof of extra immunity.
Full golden regeneration covers all 285 scenarios. Four digests intentionally move relative to the preceding candidate:
roster-008: 崇高牺牲 no longer grants 18 阿戈尔 layers while inactive; combat damage and kills are unchanged.boss-boss_4-solo: the bard's regeneration continues during stun, changing healing, subsequent attacks and snapshots.hidden-boss_9-pair: 铳's reduction is checked for the first hit/current companions; boss HP left changes 2,992,115 → 2,992,511.standin-07: hammer stuns no longer cross the immediate revival deployment provided by M3茧甲; kills 9 → 10, counted leaks 71 → 70, with corresponding combat/RNG/snapshot differences.
No scenario's ending reason changes. The bonds, matches and DIY families are byte-identical to the preceding golden files. The 50-second setting and fallback-message change do not alter battle rules in those digests.
28.26 Further community reports: deployment, air targets and champagne
Five reports were checked against the current candidate and PRTS on 2026-10-10. Reports without an operator, phase or enemy identity remain bounded by the scenarios actually tested.
| Report | Evidence and result |
|---|---|
| Deployment skill counts down before combat | Not reproduced in the battle lifecycle or real match prep-stat path. Constructing a battle does not deploy units; starting it activates deployment skills. Prep previews start their own battle for initial stats, never step it, send no SP/skill timer and cannot spend the next battle's duration. Tests cover 予愿安洁莉娜 S1 and repeated prep previews with 缄默德克萨斯. This does not identify the unspecified UI/phase in the report. |
| 赤刃明霄陈 will not open S3 against flyers | Reproduced and fixed. ACTIVE_RANGE checked her ground-only normal-attack profile, although the sword wave can hit air (PRTS). S3 now registers air-capable targeting on its expanded attack grid. Normal swings remain ground-only; operation cooldown, stealth/sleep selectability and stun still apply. [ASSUMED] The auto-cast region follows the existing expanded-grid policy, including permanent range extension, rather than the wave's whole future route. This is an automation choice, not a claim about the official mode's automatic-cast rule. |
| Rear player's 蕾缪安 does not open S3 on front player's targets | Already handled by §28.4/§28.13. Added normal/elite united-field cases with the second player's 蕾缪安 and the first player's distant Laterano operator: the real wanted timer completes, S3 starts automatically, locks that enemy and spends ammo. The existing all-skill tests retain attack cadence and selectability. |
| 琳琅诗怀雅 S2 immediately creates a bottle on deployment | Expected. PRTS identifies S2 as passive, deployment with S1/S2 as skill activation, and her talent as granting a coin on activation. The first bomb spends that coin without waiting for a merchant payment. No new SP cooldown is added. Existing throw-animation timing remains an assumption. |
| 莎草 shields a champagne bomb | Not reproduced on the current candidate, which already gives bombs 禁疗 under the maintainer's earlier decision. Both skills actually heal/shield an adjacent operator but never chain to the bomb produced by 琳琅诗怀雅. PRTS 莎草 also excludes 禁疗 from S2's main-target selection. |
| 予愿安洁莉娜 dies to splash while airborne | All three skills avoid ordinary ground 控潮术师 splash while airborne and take it after landing. A 萨卡兹悖谬暴虐兵长 splash explicitly ignoring target selectability still damages her, as expected. 起飞's 对地规避 is a selectability effect, not immunity to every damage source (PRTS 异常效果, 暴虐兵长). Without the reported enemy's identity these checks cannot settle that particular encounter. No global immunity change. |
All 285 golden scenarios were regenerated and verified. Only diy-074 moves: the mixed 陈 loadout against
flying enemies now starts four previously idle S3 activations and emits sword-wave effects. Damage rises
142376 → 163563; changed combat/target timing moves kills 21 → 18 and leaks 96 → 99, with the same 223.83 s
clear time and end reason. All other 284 scenarios, including the five other golden families, are unchanged.
The focused checks cover all four tier/elite forms, selectability/control/cooldown boundaries, actual casts,
healing chains and enemy splash. Full CI passes: 5879 tests, 5876 passed, 0 failed, 3 skipped; setup, smoke, lint,
imports and typecheck pass. This round changes no production UI and does not rerun the opt-in browser suites.
28.27 Cabin capacity and local recovery races — #431
- Observed: 克莱门莎 S2 removed the carry buff from dead, hidden, uncarryable or unreachable passengers but retained them in the passenger list and weight budget. Two weight-3 riders blocked a replacement after one died; a dead zero-weight rider still occupied one of the 15 slots; a dead weight-4 rider retained four budget points.
- Now: after moving the cabin, release invalid passengers and return each one's current weight before either boarding limit is checked that tick. Remaining passengers keep their order and movement. This corrects bookkeeping under the existing S2 rules and official blackboard limits (sources in §28.1); no new gameplay assumption is added.
- Observed (#431): a recovery attempt with a smaller tab id could claim a token while its owner was refreshing or still initializing. The original page then fell back to another recent identity, or erased its own token.
- Now: startup with a session token chooses only that token or null and answers ownership queries immediately. The first server welcome for a token stamps its ownership; reload/reconnect preserves that stamp. Earlier welcome wins a conflict, a live document wins an equal-stamp duplicate, and tab id resolves remaining ties. Explicit recovery keeps its choice only in memory and reconnects in the same document; only welcome persists it. An original owner returning cancels the lower-priority choice, including a later welcomed holder's reconnect. Nicknames and IPs remain irrelevant to identity; a refused recovery retains the previous nickname until its own welcome.
- In-flight handshake: a hello can reach the server after another connection's welcome. Optional
hello.noReplacemakes shared candidates refuse a currently connected seat;hello.claimAtlets the server refuse an established holder with a later welcome stamp. Refusal isSESSION_IN_USE, before rebinding or closing the incumbent socket. Normal same-stamp reconnects and older clients remain accepted. These are local ownership hints, not authentication; the bearer token remains the authority. A revoked hello's stale welcome is ignored before going online, flushing queued actions or notifying listeners, and retries use a new socket. Reconnect-window duration is unchanged. - Regression coverage:
op_clemnt.test.jsadds same-tick replacement for death / hidden / self-bound / teleport immunity / failed path, the 15-slot and weight-4 probes, and a changed current weight. The eight regressions fail before the fix and pass after it.client-static.test.jscovers live / reload / mid-init, no fallback identity, welcome-only persistence, earlier-welcome priority and a welcome arriving during init. The real-browser recovery test holds a refreshing owner's initialization open while another page clicks recovery and checks both server identities and live sockets; closed-window recovery also checks that welcome arrives without a page reload.client-identity-handshake.test.jscontrols delayed hellos / welcomes through the real client and server handlers, including a later holder's buffered reconnect, same-stamp reconnect, stale-welcome action suppression and validation. - Golden: all 285 scenarios regenerated. Only
diy-135moves: releasing S2 capacity permits more later carries (teleport events 572 → 630), changing movement, attack/heal timing and RNG consumption. Clear time 194.33 → 198.03 s; outcome remainscleared, 150/150 kills, zero leaks, one allied death and zero errors. The other 284 scenarios and theroster,bonds,fields,matches,standinsfamilies are unchanged. - Contracts updated: design/engine.md, SIM.md (cabin), design/client.md, design/network.md, META.md and PLAYING.md (local identity recovery and handshake).