Files
ark-stronghold-protocol/docs/history/0.2.3.md
T

15 KiB
Raw Blame History

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.js covers 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_table and battle_equip_table from 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.