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

99 lines
8.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DESIGN §28 — 0.2.3
Part of [DESIGN.md](../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 克莱门莎](https://prts.wiki/w/克莱门莎) 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.
### 28.2 New modules — 黍「好时节」and 乌尔比安「前路」
- **Sources:** [PRTS 黍](https://prts.wiki/w/黍), [PRTS 乌尔比安](https://prts.wiki/w/乌尔比安), 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.5 远牙's granted trait on substitute switches — #415 / PR #429
Ported from [PR #429](https://github.com/sganggs/Stronghold-Protocol/pull/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](https://github.com/sganggs/Stronghold-Protocol/pull/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.