feedback5: DESIGN §25.22 covers the community reports too (header, intro, 25.22.1–8 in order), §25.23 the Japanese, Korean and Traditional Chinese interfaces, the §25 intro list and decisions of 2026-10-07
This commit is contained in:
1 parent
b942ff2e71
commit
f24d2a9016
1 file changed
+143
-84
+143
-84
@@ -47,7 +47,9 @@ language is a file in the language folder) → §25.20; the last stream of that
|
||||
谢拉格 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; and, before the release, four GitHub reports of round 19 (a stunned or frozen enemy blocked by contact, #232; the
|
||||
round-start banner of an eliminated player or a spectator seat, #236; 干员调配 without its game data, #173; the official
|
||||
result box and battle-over sounds of the approved PR #112, #235) → §25.22.
|
||||
result box and battle-over sounds of the approved PR #112, #235) and four community reports of 2026-10-07 (the
|
||||
5-阿戈尔 revive order, an enemy's attack clip after its strike and the 鸭爵 swap's re-stealth, 蕾缪安's S3, the 整备区
|
||||
layers pinned) → §25.22; the Japanese, Korean and Traditional Chinese interfaces → §25.23.
|
||||
|
||||
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);
|
||||
@@ -66,7 +68,10 @@ Traditional Chinese ship with the official game texts and fallback UIs — the T
|
||||
(§25.20); 乌尔比安 knocked
|
||||
out during his S3 comes back on his deployment tile, a deliberate deviation from PRTS's "where it fell" (§25.17.3);
|
||||
烛煌's 绝处重燃 before 坚固维式重锤's lock and the official tier cap of 寻呼模块 / 简易通讯机 kept as they are (§25.21.1,
|
||||
§25.21.10).
|
||||
§25.21.10); 0.2.0 held for round 19's four reports and four more community reports (§25.22); the 5-阿戈尔
|
||||
battle-start revives by board position, replacing §24.3's knock-out order for that batch (§25.22.5); the 鸭爵 swap's
|
||||
流泪小子 hides again 1 s after a block ends (§25.22.6); the three new interfaces completed — zh-TW converted, ja / ko
|
||||
machine-translated with the official terms, marked as such (§25.23).
|
||||
|
||||
### 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`
|
||||
|
||||
@@ -1859,10 +1864,16 @@ are.
|
||||
and an 进阶 set; and the pair counts once toward the 3 members.
|
||||
- Pinned: `test/content/feedback5-cb1-pins.test.js`.
|
||||
|
||||
### 25.22 GitHub round 19, fixed before the release (the owner's decision of 2026-10-07) — `sim/ai.js updateEnemy`, `ui/gameLogic/phases.js`, `screens/game.js`, `screens/loadout.js`, `match/settle.js`, `match/views.js`, `ui/components.js ResultDialog`
|
||||
### 25.22 GitHub round 19 and the community reports of 2026-10-07, fixed before the release (the owner's decisions of 2026-10-07) — `sim/ai.js updateEnemy` / `enemyAttack`, `ui/gameLogic/phases.js`, `screens/game.js`, `screens/loadout.js`, `match/settle.js`, `match/views.js`, `ui/components.js ResultDialog`, `content/bonds/core.js egirReviveScan`, `content/enemies/helpers.js`, `kits/ops/chess_char_6_01-lemuen.js`
|
||||
|
||||
The owner held 0.2.0 for the new GitHub reports of 2026-10-06 (#214–#251, triaged in round 19): the four real ones are fixed
|
||||
here, each reproduced first; the rest were answered (not a bug, already fixed in 0.2.0, or left for 0.2.1).
|
||||
The owner held 0.2.0 for the new GitHub reports of 2026-10-06 (#214–#251, triaged in round 19) and then for four more
|
||||
community reports relayed on 2026-10-07. Each was reproduced first. Real and fixed: a stunned or frozen enemy blocked by
|
||||
contact (#232, §25.22.1), the round-start banner of an eliminated player or a spectator seat (#236, §25.22.2), 干员调配
|
||||
without its game data (#173, §25.22.3), the official result box and battle-over sounds of the approved PR #112 (#235,
|
||||
§25.22.4), the 5-阿戈尔 batch revive by board position (§25.22.5), an enemy finishing its attack clip after a strike
|
||||
(§25.22.6, with the owner's 1 s re-stealth for the 鸭爵 swap's 流泪小子, a deliberate deviation), and 蕾缪安's S3 that
|
||||
waits for targets (§25.22.8). Official as it was: 拉普兰德's and 赫默's layers from the 整备区 (§25.22.7). The rest of
|
||||
round 19 was answered (not a bug, already fixed in 0.2.0, or left for 0.2.1).
|
||||
|
||||
#### 25.22.1 GitHub #232 「再部署之后的干员无法阻挡破隐被冰冻的隐身怪」 (@ccyl; the repro and the cause by @kukiC): a stunned or frozen enemy is blocked by contact — `sim/ai.js updateEnemy`
|
||||
|
||||
@@ -1947,6 +1958,7 @@ here, each reproduced first; the rest were answered (not a bug, already fixed in
|
||||
- Golden: unchanged (client only). Tests: `test/ui/feedback5-loadout-data-missing.test.js` (4, all fail on the parent:
|
||||
the tab's files, the refusals, the screen's guard order, the message in Chinese and English); loadout, loadout-stats,
|
||||
module-trait, moduleIcons, diy-ui and standin-ui tests pass unchanged.
|
||||
|
||||
#### 25.22.4 「提问:联防结算播报没了」 (GitHub #235; PR #112 by @Convey123, approved, never merged): the official 「作战结束」 box and the three BATTLEOVER sounds at settlement — `match/settle.js`, `match/views.js`, `ui/gameLogic/phases.js`, `ui/components.js ResultDialog`, `screens/game.js`
|
||||
|
||||
- **Seen**: 0.1.4 and 0.2.0 have no result box and never play the battle-over sounds. A co-op 联防 round run to SETTLE
|
||||
@@ -1981,85 +1993,6 @@ here, each reproduced first; the rest were answered (not a bug, already fixed in
|
||||
settled, no result ticker, gone in the next phase), SP_E2E `test/ui/resultbox.e2e.test.js` (3, mock variants
|
||||
`unite[,through][,helper|,dead]`). Docs: PLAYING.md §1 / §5, design/network.md, design/client.md, design/match.md.
|
||||
|
||||
#### 25.22.8 Community report 「蕾缪安3技能范围里没人好像会自动结束」 (relayed by the owner): 蕾缪安's S3 waits with its bullets while nothing is in her range — `kits/ops/chess_char_6_01-lemuen.js`, `render/fx/locks.js`
|
||||
|
||||
- **Seen** (a script on the parent 0255afd: S3 cast with 5 bullets, the locked enemy killed by someone else after 2
|
||||
locks, another enemy alive outside her range): the skill ended at the next lock tick
|
||||
(1.00 s, `skillEnd` reason `ammo`), 3 bullets thrown away, 2 shells; an enemy that came into her range 3 s later found
|
||||
it over. A locked walker leaving her range ended it the same way (4 locks, 1 bullet thrown away). In golden the elite
|
||||
蕾缪安 of roster-018 ended three of her five casts early (2 / 6, 5 / 9 and 6 / 9 bullets left).
|
||||
- **Official**: the skill text 「每0.5秒消耗1发子弹依次锁定敌人……攻击装有5发弹药,打完后结束(可随时停止技能)」: an ammo
|
||||
skill ends when its bullets are spent or when the player stops it. PRTS 卫戍协议/帮助 §作战阶段 技能操作: 「可执行的技能
|
||||
操作包括开启/关闭技能,通常不会自动关闭技能」 — the only automatic close is 玛露希尔's 召唤使魔; 蕾缪安's S3 is on the
|
||||
basic strategy. The client (charpack char_4193_lemuen, battle/buff_template_data.json): the S3 mode's lock is an attack
|
||||
that needs a target (`_minTargetNum` 1, `_allowNoTarget` 0, cooldown `aim_interval`); the skill buff `lemuen_s_3`
|
||||
switches to the S3_End mode (the bombardment) on `ON_BUFF_FINISH` only, and nothing ends it for want of a target. PRTS
|
||||
S3 note: a mark follows its target and stays where the target left.
|
||||
- **Cause**: the kit's lock tick ended the skill when `pickLock` found nobody and anyone had been locked —
|
||||
`if (!e) { if (m.lemLocks.length) skill.end('ammo'); return; }` (chess_char_6_01-lemuen.js:169 on the parent), there
|
||||
since the initial import with no decision behind it.
|
||||
- **Now**: with nothing to lock the skill waits, bullets and locks kept — the marks follow their enemies (out of her range
|
||||
too) or stay where they left — with its lock ready: the next enemy that comes into her range (or is 通缉) is locked on
|
||||
the next tick, then every `aim_interval` s. The skill ends when the bullets are spent and the shells fall on every mark
|
||||
in lock order, as before. While it waits she gains no SP (a running ammo skill holds it, as before); knocked out or
|
||||
withdrawn, no bombardment (unchanged); a battle that ends meanwhile ends without shells (nothing left to hit). The S3
|
||||
`lock` fx carry `hold`: render/fx/locks.js keeps such a reticle while the shooter's view has the skill bit (UF.SKILL)
|
||||
and counts its LOCK_T (5 game s) from the skill's end — without it the reticles faded 5 s into a wait. S2's aim lock
|
||||
(no `hold`) keeps its timeout.
|
||||
- Unchanged and noted: the client lock's 0.1 s pre-delay is not modelled (the lock lands on its tick, as before).
|
||||
- Seen on the way, not changed (S2, not this report): 归乡邀约 spends a bullet on every normal attack (5 of its 6 gone in
|
||||
8 s of attacks on an enemy that is not 通缉), while PRTS's S2 note says only the aimed snipe at a 通缉 target spends one
|
||||
(「若目标为被通缉状态,则攻击改为消耗1发弹药的瞄准狙击,否则不消耗弹药」) — left to the owner: fixed, S2 would hold its
|
||||
buff until 通缉 enemies come, a large change.
|
||||
- Golden: 3 scenarios — traced on both trees with an instrumented copy (SkillRuntime start / end logged, the round's
|
||||
fields and the carried SP); in each the first divergence is an S3 the parent ended with bullets left and nothing in her
|
||||
range:
|
||||
- roster-018: the elite 蕾缪安's first S3 (7.63 s) ended at 9.63 s with 2 of 6 bullets left; now the 6th goes at
|
||||
12.00 s (first differing snapshot window 0–10 s).
|
||||
- boss-boss_3-pair: her second S3 (27.8 s) ended at 30.3 s with 4 of 9 left; now all 9 by 34.43 s (window 30–40 s); the
|
||||
boss now falls at 199.53 s (before: `forced` at the 200 s cap with 145080 HP left).
|
||||
- coop2-NORMAL-14-standins: ai_0's 蕾缪安 (her own kit) — in round 11's battle her S3 ended at 17.2 s (6 of 8 left) and
|
||||
77.97 s (7 of 9); now all bullets are spent and the third cast does not come, so she enters the round's 联防 with
|
||||
25.96 SP instead of 10.27, casts S3 there and kills one more of h_0's leaked enemies: h_0 loses 1 LP less (rounds
|
||||
11–12 LP 18 → 19, 8 → 9; lpLost 30 → 29; ai_0 kills +1, dmgDealt +288).
|
||||
- bonds, standins and diy unchanged.
|
||||
- Tests: `test/sim/feedback5-lemuen-s3-wait.test.js` (3: the killed target and the walker who leaves fail on the parent —
|
||||
the skill ended —; the battle that ends while she waits passes on both), `test/render/fxproj.test.js` +1 (a held lock
|
||||
stays while the shooter's skill bit is on, then LOCK_T after; an unheld one times out — fails on the parent's
|
||||
renderer); `test/content/kits_t6.test.js`, `kits_alt_t6.test.js`, `test/sim/feedback3-ammo-bar.test.js` pass unchanged.
|
||||
#### 25.22.7 「小拉和赫默有概率在备战区叠不上叙拉古和远见」 (community report, relayed by the owner on 2026-10-07): not a bug — 拉普兰德 stacks from the 整备区 when 【叙拉古】 is active, 赫默's trait works only deployed (official data) — no code change; `docs/PLAYING.md` §6
|
||||
|
||||
- **Seen**: 「有的时候在备战区的干员不能100%叠层…小拉和赫默有概率在备战区叠不上叙拉古和远见」. 备战区 is the players' word
|
||||
for the 整备区 (community guides: 「远见奇迹干员不需要了就放备战区」). Reproduced through the match paths: a matrix of 26
|
||||
cases (the 整备区, the board, the 临时整备区; bought before / after the refresh, two copies, an elite merged this round, a
|
||||
full hand, a 机变 round, a pending reward, the shop frozen, a free refresh, a reconnect, a bot), and 115 whole matches
|
||||
(60 solo, 40 co-op, 15 co-op with client-run combat; a random human and the bots) checked against an oracle written
|
||||
from the official text: 11 951 refreshes and 3 640 round starts, no difference. Every case without layers is one of
|
||||
four rules, nothing random: (1) 【叙拉古】 is inactive — it counts different 叙拉古 deployed, and 拉普兰德 on the bench is
|
||||
not one of the three (普罗旺斯 + 德克萨斯 deployed, her in the 整备区: 2/3); (2) her trait fires on the first manual
|
||||
refresh she sees each round, so a refresh made while 叙拉古 is inactive spends it — deploying the third 叙拉古 and
|
||||
refreshing again adds nothing until the next round (in the random matches 440 of the 675 first refreshes a bench
|
||||
拉普兰德 saw were of this kind, the other 235 stacked); (3) in the 临时整备区 she neither fires nor counts, and fires on
|
||||
her first refresh once a free slot pulls her into the 整备区; (4) 赫默 in the 整备区 never fires, 远见 active or not
|
||||
(204 such round starts).
|
||||
- **Official**: garrison_123 「<刷新时>若为本回合首次主动刷新,使已激活的【叙拉古】层数+4,此干员在整备区时也有效」 (elite +8, no
|
||||
condition key); 叙拉古 activeCondition BOARD (「在场」). garrison_80 「<进入休整期时>使自身已激活的盟约层数+2」 (elite +4) has
|
||||
no such clause, and its blackboard carries conditionkey `character_target_inboard`: deployed only. In the act2autochess
|
||||
garrison table every 进入休整期时 / 休整期结束时 / 刷新时 trait that works in the 整备区 says so and has no condition key —
|
||||
拉普兰德 123, 调香师 81, 波登可 102, 琳琅诗怀雅 98 (「若已激活【炎】/【投资人】此特质在整备区也有效」); every other one is
|
||||
`character_target_inboard`, or a row / tile-in-front condition only a deployed operator meets. 远见's
|
||||
「整备区的【远见】干员也可用于激活盟约」 counts bench members for the bond; it moves no trait to the bench. The in-game tips
|
||||
name the overflow 「临时整备区」 apart from the 整备区 (「处于临时整备区的调度资源,在进入下一回合后会自动销毁」).
|
||||
- **Now**: unchanged. Prep traits run for deployed operators and, unless `character_target_inboard`, for the 10 整备区
|
||||
slots (`effectsMeta.js _garrisons`), never for the 临时整备区 (§21.1, like the 远见 / 奇迹 / 投资人 count). PLAYING.md §6
|
||||
now says where a 特质 works, that 「使已激活的…」 needs the bond active, and what 拉普兰德's refresh needs.
|
||||
- [ASSUMED] (unchanged since §21.1): a refresh made while 叙拉古 is inactive spends her trait for the round (the literal
|
||||
「若为本回合首次主动刷新」, counted per copy); the 临时整备区 is not the 整备区; a free refresh is a manual refresh. Open for
|
||||
the owner: fire on her first refresh with 叙拉古 active instead — no source either way.
|
||||
- Golden: unchanged (no code change). Tests: `test/match/feedback5-bench-traits.test.js` (6 pins: the official data rule;
|
||||
+4 / +8 in the 整备区 with the hand full, the shop frozen, a free refresh, a reward pending, a reconnect, in a 机变 round,
|
||||
for a bot; the inactive bond and the spent refresh; the 临时整备区; a copy bought after the first refresh and 普罗旺斯's
|
||||
free refresh; 赫默 deployed vs in the 整备区).
|
||||
#### 25.22.5 「阿戈尔盟约的二阶复活逻辑应该有些bug」 (a community report the owner relayed on 2026-10-07, two screenshots not yet seen): the 5-阿戈尔 revives of the battle-start devour's knock-outs go by board position once the devour is over — `content/bonds/core.js installEgir` (`egirReviveScan`, `egirStart`)
|
||||
|
||||
- **Seen**: the player's model of the official game: 「原作里是第一步给所有鱼加盟约的血量,第二步是开始一个个大鱼吃小鱼,
|
||||
@@ -2122,6 +2055,7 @@ here, each reproduced first; the rest were answered (not a bug, already fixed in
|
||||
`build-data --offline`; only `tiers[0]` / `tiers[2]` / `algorithm[3]` / `assumed[0]` changed — the stale assumption
|
||||
「5000 physical 流失 ignores DEF and shields」, wrong since 0.1.1, gave way to the scan reading), DESIGN §5's `death` row
|
||||
(design/engine.md), docs/SIM.md (`death` hook), the core.js comments; §24.3's title points here.
|
||||
|
||||
#### 25.22.6 「ai的鸭爵分队真的好阴…哭狗瞬间隐匿没有后摇马上就到下一格干员的脸上秒抬手秒晕」 (community report of 2026-10-07) and GitHub #214 「鸭爵技能生成的泪眼汪汪没有反隐直接一路顺畅走进蓝门」 (@FrogThai; PR #243 by @TsangAsuna declined): an enemy finishes its attack clip after its block ends — `sim/ai.js enemyAttack`, `sim/battle/displacement.js displace`
|
||||
|
||||
- **Seen**: 泪眼汪汪 / 哭狗 / 隐匿狗 is 流泪小子 (`enemy_2034_sythef_2`, 「唯唯诺诺的佩洛」 — no enemy is named 泪眼汪汪), the
|
||||
@@ -2188,3 +2122,128 @@ here, each reproduced first; the rest were answered (not a bug, already fixed in
|
||||
ends in a victory instead of a defeat; the other 282 scenarios are unchanged. Tests:
|
||||
`test/content/feedback5-duck-restealth.test.js` (3; the swap's 1 s and the band path fail before it, the 0 s guard
|
||||
for the same enemy elsewhere passes on both).
|
||||
|
||||
#### 25.22.7 「小拉和赫默有概率在备战区叠不上叙拉古和远见」 (community report, relayed by the owner on 2026-10-07): not a bug — 拉普兰德 stacks from the 整备区 when 【叙拉古】 is active, 赫默's trait works only deployed (official data) — no code change; `docs/PLAYING.md` §6
|
||||
|
||||
- **Seen**: 「有的时候在备战区的干员不能100%叠层…小拉和赫默有概率在备战区叠不上叙拉古和远见」. 备战区 is the players' word
|
||||
for the 整备区 (community guides: 「远见奇迹干员不需要了就放备战区」). Reproduced through the match paths: a matrix of 26
|
||||
cases (the 整备区, the board, the 临时整备区; bought before / after the refresh, two copies, an elite merged this round, a
|
||||
full hand, a 机变 round, a pending reward, the shop frozen, a free refresh, a reconnect, a bot), and 115 whole matches
|
||||
(60 solo, 40 co-op, 15 co-op with client-run combat; a random human and the bots) checked against an oracle written
|
||||
from the official text: 11 951 refreshes and 3 640 round starts, no difference. Every case without layers is one of
|
||||
four rules, nothing random: (1) 【叙拉古】 is inactive — it counts different 叙拉古 deployed, and 拉普兰德 on the bench is
|
||||
not one of the three (普罗旺斯 + 德克萨斯 deployed, her in the 整备区: 2/3); (2) her trait fires on the first manual
|
||||
refresh she sees each round, so a refresh made while 叙拉古 is inactive spends it — deploying the third 叙拉古 and
|
||||
refreshing again adds nothing until the next round (in the random matches 440 of the 675 first refreshes a bench
|
||||
拉普兰德 saw were of this kind, the other 235 stacked); (3) in the 临时整备区 she neither fires nor counts, and fires on
|
||||
her first refresh once a free slot pulls her into the 整备区; (4) 赫默 in the 整备区 never fires, 远见 active or not
|
||||
(204 such round starts).
|
||||
- **Official**: garrison_123 「<刷新时>若为本回合首次主动刷新,使已激活的【叙拉古】层数+4,此干员在整备区时也有效」 (elite +8, no
|
||||
condition key); 叙拉古 activeCondition BOARD (「在场」). garrison_80 「<进入休整期时>使自身已激活的盟约层数+2」 (elite +4) has
|
||||
no such clause, and its blackboard carries conditionkey `character_target_inboard`: deployed only. In the act2autochess
|
||||
garrison table every 进入休整期时 / 休整期结束时 / 刷新时 trait that works in the 整备区 says so and has no condition key —
|
||||
拉普兰德 123, 调香师 81, 波登可 102, 琳琅诗怀雅 98 (「若已激活【炎】/【投资人】此特质在整备区也有效」); every other one is
|
||||
`character_target_inboard`, or a row / tile-in-front condition only a deployed operator meets. 远见's
|
||||
「整备区的【远见】干员也可用于激活盟约」 counts bench members for the bond; it moves no trait to the bench. The in-game tips
|
||||
name the overflow 「临时整备区」 apart from the 整备区 (「处于临时整备区的调度资源,在进入下一回合后会自动销毁」).
|
||||
- **Now**: unchanged. Prep traits run for deployed operators and, unless `character_target_inboard`, for the 10 整备区
|
||||
slots (`effectsMeta.js _garrisons`), never for the 临时整备区 (§21.1, like the 远见 / 奇迹 / 投资人 count). PLAYING.md §6
|
||||
now says where a 特质 works, that 「使已激活的…」 needs the bond active, and what 拉普兰德's refresh needs.
|
||||
- [ASSUMED] (unchanged since §21.1): a refresh made while 叙拉古 is inactive spends her trait for the round (the literal
|
||||
「若为本回合首次主动刷新」, counted per copy); the 临时整备区 is not the 整备区; a free refresh is a manual refresh. Open for
|
||||
the owner: fire on her first refresh with 叙拉古 active instead — no source either way.
|
||||
- Golden: unchanged (no code change). Tests: `test/match/feedback5-bench-traits.test.js` (6 pins: the official data rule;
|
||||
+4 / +8 in the 整备区 with the hand full, the shop frozen, a free refresh, a reward pending, a reconnect, in a 机变 round,
|
||||
for a bot; the inactive bond and the spent refresh; the 临时整备区; a copy bought after the first refresh and 普罗旺斯's
|
||||
free refresh; 赫默 deployed vs in the 整备区).
|
||||
|
||||
#### 25.22.8 Community report 「蕾缪安3技能范围里没人好像会自动结束」 (relayed by the owner): 蕾缪安's S3 waits with its bullets while nothing is in her range — `kits/ops/chess_char_6_01-lemuen.js`, `render/fx/locks.js`
|
||||
|
||||
- **Seen** (a script on the parent 0255afd: S3 cast with 5 bullets, the locked enemy killed by someone else after 2
|
||||
locks, another enemy alive outside her range): the skill ended at the next lock tick
|
||||
(1.00 s, `skillEnd` reason `ammo`), 3 bullets thrown away, 2 shells; an enemy that came into her range 3 s later found
|
||||
it over. A locked walker leaving her range ended it the same way (4 locks, 1 bullet thrown away). In golden the elite
|
||||
蕾缪安 of roster-018 ended three of her five casts early (2 / 6, 5 / 9 and 6 / 9 bullets left).
|
||||
- **Official**: the skill text 「每0.5秒消耗1发子弹依次锁定敌人……攻击装有5发弹药,打完后结束(可随时停止技能)」: an ammo
|
||||
skill ends when its bullets are spent or when the player stops it. PRTS 卫戍协议/帮助 §作战阶段 技能操作: 「可执行的技能
|
||||
操作包括开启/关闭技能,通常不会自动关闭技能」 — the only automatic close is 玛露希尔's 召唤使魔; 蕾缪安's S3 is on the
|
||||
basic strategy. The client (charpack char_4193_lemuen, battle/buff_template_data.json): the S3 mode's lock is an attack
|
||||
that needs a target (`_minTargetNum` 1, `_allowNoTarget` 0, cooldown `aim_interval`); the skill buff `lemuen_s_3`
|
||||
switches to the S3_End mode (the bombardment) on `ON_BUFF_FINISH` only, and nothing ends it for want of a target. PRTS
|
||||
S3 note: a mark follows its target and stays where the target left.
|
||||
- **Cause**: the kit's lock tick ended the skill when `pickLock` found nobody and anyone had been locked —
|
||||
`if (!e) { if (m.lemLocks.length) skill.end('ammo'); return; }` (chess_char_6_01-lemuen.js:169 on the parent), there
|
||||
since the initial import with no decision behind it.
|
||||
- **Now**: with nothing to lock the skill waits, bullets and locks kept — the marks follow their enemies (out of her range
|
||||
too) or stay where they left — with its lock ready: the next enemy that comes into her range (or is 通缉) is locked on
|
||||
the next tick, then every `aim_interval` s. The skill ends when the bullets are spent and the shells fall on every mark
|
||||
in lock order, as before. While it waits she gains no SP (a running ammo skill holds it, as before); knocked out or
|
||||
withdrawn, no bombardment (unchanged); a battle that ends meanwhile ends without shells (nothing left to hit). The S3
|
||||
`lock` fx carry `hold`: render/fx/locks.js keeps such a reticle while the shooter's view has the skill bit (UF.SKILL)
|
||||
and counts its LOCK_T (5 game s) from the skill's end — without it the reticles faded 5 s into a wait. S2's aim lock
|
||||
(no `hold`) keeps its timeout.
|
||||
- Unchanged and noted: the client lock's 0.1 s pre-delay is not modelled (the lock lands on its tick, as before).
|
||||
- Seen on the way, not changed (S2, not this report): 归乡邀约 spends a bullet on every normal attack (5 of its 6 gone in
|
||||
8 s of attacks on an enemy that is not 通缉), while PRTS's S2 note says only the aimed snipe at a 通缉 target spends one
|
||||
(「若目标为被通缉状态,则攻击改为消耗1发弹药的瞄准狙击,否则不消耗弹药」) — left to the owner: fixed, S2 would hold its
|
||||
buff until 通缉 enemies come, a large change.
|
||||
- Golden: 3 scenarios — traced on both trees with an instrumented copy (SkillRuntime start / end logged, the round's
|
||||
fields and the carried SP); in each the first divergence is an S3 the parent ended with bullets left and nothing in her
|
||||
range:
|
||||
- roster-018: the elite 蕾缪安's first S3 (7.63 s) ended at 9.63 s with 2 of 6 bullets left; now the 6th goes at
|
||||
12.00 s (first differing snapshot window 0–10 s).
|
||||
- boss-boss_3-pair: her second S3 (27.8 s) ended at 30.3 s with 4 of 9 left; now all 9 by 34.43 s (window 30–40 s); the
|
||||
boss now falls at 199.53 s (before: `forced` at the 200 s cap with 145080 HP left).
|
||||
- coop2-NORMAL-14-standins: ai_0's 蕾缪安 (her own kit) — in round 11's battle her S3 ended at 17.2 s (6 of 8 left) and
|
||||
77.97 s (7 of 9); now all bullets are spent and the third cast does not come, so she enters the round's 联防 with
|
||||
25.96 SP instead of 10.27, casts S3 there and kills one more of h_0's leaked enemies: h_0 loses 1 LP less (rounds
|
||||
11–12 LP 18 → 19, 8 → 9; lpLost 30 → 29; ai_0 kills +1, dmgDealt +288).
|
||||
- bonds, standins and diy unchanged.
|
||||
- Tests: `test/sim/feedback5-lemuen-s3-wait.test.js` (3: the killed target and the walker who leaves fail on the parent —
|
||||
the skill ended —; the battle that ends while she waits passes on both), `test/render/fxproj.test.js` +1 (a held lock
|
||||
stays while the shooter's skill bit is on, then LOCK_T after; an unheld one times out — fails on the parent's
|
||||
renderer); `test/content/kits_t6.test.js`, `kits_alt_t6.test.js`, `test/sim/feedback3-ammo-bar.test.js` pass unchanged.
|
||||
|
||||
### 25.23 The Japanese, Korean and Traditional Chinese interfaces (UI-JA, UI-KO, UI-TW; the owner's decision of 2026-10-07) — `public/i18n/ja.json`, `ko.json`, `zh-TW.json`, `shared/packs.js`, `shared/i18nPacks.js`, `shared/i18n.js`, `public/js/ui/lang.js machineTranslationNote`, `public/js/ui/settings.js`, `tools/build-i18n.mjs` (`untranslated: 'native'`, `nativeCharset`), `data/i18n/*.json`, `public/css/theme.css` (`--cjk-faces`, `:lang()`), `public/js/screens/lobby.js`, docs/I18N.md, docs/PACKS.md
|
||||
|
||||
- **Seen**: the owner tested 0.2.0 — 「新版本日语韩语繁体中文实测切换没有生效,只有中文英文生效」. The switch worked (the game texts
|
||||
changed: 能天使 → エクシア / 엑시아, 陈 → 陳), but §25.20 had shipped the three packs with a `_meta` and no interface
|
||||
strings, so ja / ko showed the English interface and zh-TW the Simplified Chinese one — every title, button and menu.
|
||||
**Decision** (the owner's, 2026-10-07): complete all three interfaces for 0.2.0 — zh-TW converted from the Simplified
|
||||
Chinese (Taiwan usage), ja / ko translated with the official JP / KR game terms, marked as machine translation,
|
||||
corrections from the community welcome.
|
||||
- **Now**: every msgid of `en.json` in all three packs (`node tools/i18n.mjs check ja ko zh-TW --strict`: 1028 used, 1028
|
||||
translated, 0 errors), each `complete: true`.
|
||||
- zh-TW: OpenCC (cn → twp, Taiwan phrases; a tool run outside the repository, no dependency), then the TW client's own
|
||||
word where it differs (97 terms from the TW tables walked beside the zh ones — 调度中心 stays 調度中心, not twp's
|
||||
排程中心; 刷新 → 更新; 重装 → 重裝), then a manual pass over the whole pack (只 / 隻, 重新整理 only for a page reload,
|
||||
廣告攔截擴充功能 where twp's 外掛 reads as "cheat"). Its fallback stays the Simplified Chinese (the owner's
|
||||
「繁中缺的字回落到简中」).
|
||||
- ja: a 93-term glossary from the JP client data (単独演算 / 連合演算, 管理センター, 整備エリア, 防衛支援, 最終防衛段階,
|
||||
標準 / 逆境 / 死地 / 究極; the mode's JP title 堅守協定:盟約), then a translation of every msgid in short UI Japanese;
|
||||
eight strings shortened after a screenshot pass (the title-screen name field, the hotkey row, the room's ready lines,
|
||||
the emote button …).
|
||||
- ko: a 102-term glossary from the KR client data (위수 협의: 맹약, 독립 / 동맹 시뮬레이션, 보급센터, 정비 구역, 연합 방어,
|
||||
표준 / 험지 / 극한 / 초월), 합니다체 like the KR client's tips; one hotkey label shortened.
|
||||
- The mark: `_meta.machineTranslated: true`, a new optional manifest field (docs/PACKS.md; shared/packs.js validates it
|
||||
as a boolean and copies it into the pack index entry like `complete`); 设置 shows 「当前语言的界面文字为机器翻译,可能不够
|
||||
准确,欢迎在 GitHub 上指正。」 under the language switch when the current pack has it (ui/lang.js
|
||||
`machineTranslationNote`).
|
||||
- The game texts the JP client writes exactly like the Chinese (炎, 不屈, 助力, 速射手 …) were dropped by build-i18n as
|
||||
untranslated ('same'), so the Japanese interface showed the bonds 炎 / 不屈 / 助力 by their English names. ja's test is
|
||||
now 'native': a text identical to the Chinese is the client's own when every Han character of it appears in the
|
||||
client's translated texts (`nativeCharset`); one with a character the client never writes (甄选干员) is still
|
||||
untranslated. data/i18n/ja.json 96.5 % → 97.5 % (bonds 100 %); ko.json and zh-TW.json rebuilt for the UI packs'
|
||||
emote names (ko 97.5 %, zh-TW 91.2 %).
|
||||
- The CJK font stack follows `<html lang>` (`--cjk-faces`; `:root:lang(ja / ko / zh-TW)`): Japanese kanji, Traditional
|
||||
Chinese and Hangul take their own faces instead of the Simplified Chinese glyph forms. The lobby's difficulty lines
|
||||
drop the JP bullet ・ like the Chinese ·.
|
||||
- Known limits (for later): the remake's composed stage names (战场#01 …) have no Japanese / Korean / Traditional
|
||||
wording in data/i18n, so ja / ko show the English name and zh-TW the Simplified one where the stage name comes from the
|
||||
data; 冻结 is one msgid for the shop button and the frozen status (Korean 동결 for both; the official status word is
|
||||
빙결 — a context key would split them).
|
||||
- Tests: `test/i18n-packs.test.js` (the field, its warning, the shipped manifests, the note shown / hidden),
|
||||
`test/i18n-data.test.js` (the 'native' test, the shipped ja names 炎 / 不屈 / 助力), `test/ui/i18n.e2e.test.js` (SP_E2E;
|
||||
reads its expected strings from the pack files and checks the note), `test/i18n.test.js` (placeholders of every pack).
|
||||
Screenshots of every screen in each language (title, settings, lobby, room, 干员调配, briefing, band draft, prep,
|
||||
combat, results) were checked by each stream.
|
||||
Reference in new issue
Block a user