feedback5: 阿戈尔's devour block count checked for 水月 (伏击客, base block 0) and converted members (community report of 2026-10-07) — not reproduced: he takes every marked unit's block and blocks with it, the prep card shows it; face to face the second member marks nothing back (PRTS 「不会向…“已将标记付与自身的单位”付与自身标记」); pin tests test/content/feedback5-egir-block.test.js, CHANGELOG 核实后不是问题, §25.22.10; golden unchanged (tests and docs)
This commit is contained in:
1 parent
caee1dbed9
commit
1ca769ba16
3 files changed
+58
-1
No files matched your search
@@ -136,6 +136,7 @@
|
|||||||
- 整备区里的拉普兰德照样叠【叙拉古】层数,但叙拉古要已经激活(只数作战区里不同的叙拉古干员,整备区里的她不算在内),而且每回合只看她经历的第一次主动刷新,那次没激活就要等下一回合;临时整备区不算整备区。赫默的特质没有「此干员在整备区时也有效」,和官方数据一样只在作战区生效(社区反馈;文档补充了说明)。
|
- 整备区里的拉普兰德照样叠【叙拉古】层数,但叙拉古要已经激活(只数作战区里不同的叙拉古干员,整备区里的她不算在内),而且每回合只看她经历的第一次主动刷新,那次没激活就要等下一回合;临时整备区不算整备区。赫默的特质没有「此干员在整备区时也有效」,和官方数据一样只在作战区生效(社区反馈;文档补充了说明)。
|
||||||
- 阿戈尔的生命值加成在开场吞噬之前就已生效,和官方一致:精二深巡(2904 生命、655 防御)被吞噬一次受到 4345 点,阿戈尔 15 层起就能扛住。生命超过 5000 的阿戈尔扛得住一次吞噬,但站在吞噬链中间时,身后的每一名阿戈尔都会各吞噬它一次(每次 5000 点物理流失,按防御减免),这也和官方一致(社区反馈;PRTS 盟约记录)。
|
- 阿戈尔的生命值加成在开场吞噬之前就已生效,和官方一致:精二深巡(2904 生命、655 防御)被吞噬一次受到 4345 点,阿戈尔 15 层起就能扛住。生命超过 5000 的阿戈尔扛得住一次吞噬,但站在吞噬链中间时,身后的每一名阿戈尔都会各吞噬它一次(每次 5000 点物理流失,按防御减免),这也和官方一致(社区反馈;PRTS 盟约记录)。
|
||||||
- 策略「鸭爵」换来的流泪小子(「泪眼汪汪」「哭狗」):攻击使干员晕眩 3.5 秒,而被晕眩的干员不能阻挡(官方术语「晕眩:无法移动、阻挡、攻击及使用技能」),所以它会接着走向下一名干员;官方解除阻挡后 0 秒就重新隐匿(本模式对鸭爵换来的这一只改为 1 秒,见「有意与官方不同的调整」),移动速度 0.8,攻击间隔 2 秒,走到下一名干员面前马上抬手、0.767 秒后命中,这些都与官方数据一致。AI 队友选了鸭爵,你的作战同样会换怪(策略原文「你和队友遭遇的部分敌人」),最终攻势和隐秘核心也会换,换上的敌人走被替换敌人的路线(社区反馈、GitHub #214,感谢 @FrogThai)。
|
- 策略「鸭爵」换来的流泪小子(「泪眼汪汪」「哭狗」):攻击使干员晕眩 3.5 秒,而被晕眩的干员不能阻挡(官方术语「晕眩:无法移动、阻挡、攻击及使用技能」),所以它会接着走向下一名干员;官方解除阻挡后 0 秒就重新隐匿(本模式对鸭爵换来的这一只改为 1 秒,见「有意与官方不同的调整」),移动速度 0.8,攻击间隔 2 秒,走到下一名干员面前马上抬手、0.767 秒后命中,这些都与官方数据一致。AI 队友选了鸭爵,你的作战同样会换怪(策略原文「你和队友遭遇的部分敌人」),最终攻势和隐秘核心也会换,换上的敌人走被替换敌人的路线(社区反馈、GitHub #214,感谢 @FrogThai)。
|
||||||
|
- 阿戈尔吞噬会照常获得被吞噬者的阻挡数,水月这样默认不阻挡的伏击客、以及用变形同构体转为阿戈尔的干员也一样,吞噬后能正常阻挡(「开战时」的阻挡数也会显示);两名阿戈尔面对面时,后发起吞噬的一方不会再吞噬已经吞噬了自己的一方(PRTS 盟约记录),所以拿不到对方的阻挡数。解放者、旗手、傀儡师在官方规定不阻挡的状态下照样不阻挡(社区反馈)。
|
||||||
|
|
||||||
## 0.1.4 — 2026-10-06
|
## 0.1.4 — 2026-10-06
|
||||||
|
|
||||||
|
|||||||
+14
-1
@@ -1873,7 +1873,8 @@ without its game data (#173, §25.22.3), the official result box and battle-over
|
|||||||
§25.22.4), the 5-阿戈尔 batch revive by board position (§25.22.5), an enemy finishing its attack clip after a strike
|
§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
|
(§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); from the owner's own playtest, 宴's model no longer kneels while her deployment skill
|
waits for targets (§25.22.8); from the owner's own playtest, 宴's model no longer kneels while her deployment skill
|
||||||
runs (§25.22.9). Official as it was: 拉普兰德's and 赫默's layers from the 整备区 (§25.22.7). The rest of
|
runs (§25.22.9). Official as it was (checked, no change): 阿戈尔's devour block count for 水月 and converted members
|
||||||
|
(§25.22.10),: 拉普兰德'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).
|
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`
|
#### 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`
|
||||||
@@ -2220,6 +2221,18 @@ round 19 was answered (not a bug, already fixed in 0.2.0, or left for 0.2.1).
|
|||||||
- Tests: `test/feedback5-utage-anims.test.js` (the resolver alone kneels in S2; the fix; the shipped manifest, both models).
|
- Tests: `test/feedback5-utage-anims.test.js` (the resolver alone kneels in S2; the fix; the shipped manifest, both models).
|
||||||
Checked in a real match (the fast server's starter kit on round 2): both copies stand at 0.7 s with 落地斩·破门 on.
|
Checked in a real match (the fast server's starter kit on round 2): both copies stand at 0.7 s with 落地斩·破门 on.
|
||||||
|
|
||||||
|
#### 25.22.10 「阿戈尔盟约的干员水月在互吃叠buff时阻挡数没有叠」 (a community report the owner relayed on 2026-10-07, with 「其他干员若转职阿戈尔有没有类似问题(尤其是伏击客分支这种默认不阻挡的)」): not reproduced — no change
|
||||||
|
|
||||||
|
- **Official**: PRTS 卫戍协议:盟约 下半/PRTS盟约记录, 阿戈尔 ※: the marker 「获得所有标记单位的基础攻击力(最终加算)和阻挡数」 and
|
||||||
|
never marks 「“自身”/“自身已付与过标记的单位”/“已将标记付与自身的单位”」.
|
||||||
|
- **Checked** (real chess): 水月 (伏击客, base block 0) eating a 幽灵鲨 has block 2 and holds two enemies at once; elite 水月
|
||||||
|
eating a 深巡 3 and three; through a chain 水月 → 幽灵鲨 → 斯卡蒂 3 (the prep card's 「开战时」 阻挡数 reads 3 too — the
|
||||||
|
match's start-of-battle preview runs the devour); a member revived by the 5-tier keeps its gains. Face to face, the member
|
||||||
|
further left / up marks first and the other marks nothing back — no block for it (PRTS's rule above; likely what the
|
||||||
|
player saw). 变形同构体 + 阿戈尔重刃 make any class a member with the same gains; 水月 is the pool's only 伏击客, and the
|
||||||
|
official no-block states — 解放者 with the skill off, 旗手 during the skill, a 傀儡师's 替身 — still block nothing.
|
||||||
|
- Tests: `test/content/feedback5-egir-block.test.js` (2; both pass on the parent).
|
||||||
|
|
||||||
### 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
|
### 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
|
- **Seen**: the owner tested 0.2.0 — 「新版本日语韩语繁体中文实测切换没有生效,只有中文英文生效」. The switch worked (the game texts
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
// 阿戈尔's devour hands its marker the block count of what it marks, a 伏击客 included (community report of 2026-10-07:
|
||||||
|
// 「阿戈尔盟约的干员水月在互吃叠buff时阻挡数没有叠」 — checked, not reproduced): PRTS 卫戍协议:盟约 下半/PRTS盟约记录, 阿戈尔 ※
|
||||||
|
// 「该付与来源获得所有标记单位的基础攻击力(最终加算)和阻挡数」 and 「不会向“自身”/“自身已付与过标记的单位”/“已将标记付与自身的
|
||||||
|
// 单位”付与自身标记」 (content/bonds/core.js devour).
|
||||||
|
import { test } from 'node:test';
|
||||||
|
import assert from 'node:assert/strict';
|
||||||
|
import { makeBattle, enemyRec, checkInvariants } from '../helpers/battleHarness.js';
|
||||||
|
|
||||||
|
const walker = enemyRec({ key: 'e_walk', hp: 1e7, speed: 0.8, def: 0, res: 0 });
|
||||||
|
const bonds = { egirShip: { count: 3, active: true, tier: 1, layers: 0 } };
|
||||||
|
const MIZUKI = 'chess_char_4_09_a', GHOST = 'chess_char_2_07_a', SKADI = 'chess_char_3_05_a', UDFLOW = 'chess_char_1_04_a';
|
||||||
|
const battle = (units) => makeBattle({ defs: { enemies: { e_walk: walker } }, timeLimit: 60, bonds, units,
|
||||||
|
enemies: [{ key: 'e_walk', time: 1, routeIndex: 0, count: 3, interval: 1.5 }] });
|
||||||
|
const by = (h, uid) => h.b.allyUnits.find((u) => u.uid === uid);
|
||||||
|
const maxBlocked = (h, u, until = 25) => { let n = 0; h.runUntil(() => { n = Math.max(n, u.blocking?.length || 0); return h.b.time > until; }, until + 5); return n; };
|
||||||
|
|
||||||
|
test('水月 (伏击客, base block 0) devouring takes the block count of what he marks — and blocks with it', () => {
|
||||||
|
// one row, the route along row 9: 水月 (9,3) → 幽灵鲨 (9,4), both facing the gate side
|
||||||
|
const h = battle([{ uid: 1, chessId: MIZUKI, row: 9, col: 3, dir: 'RIGHT' }, { uid: 2, chessId: GHOST, row: 9, col: 4, dir: 'RIGHT' }, { uid: 3, chessId: SKADI, row: 12, col: 1, dir: 'RIGHT' }]);
|
||||||
|
const m = by(h, 1);
|
||||||
|
assert.equal(m.base.blockCnt, 0);
|
||||||
|
h.step(0.1);
|
||||||
|
assert.equal(m.s.blockCnt, 2, '幽灵鲨\'s 2');
|
||||||
|
assert.equal(maxBlocked(h, m), 2, 'he holds two enemies at once');
|
||||||
|
checkInvariants(h.b);
|
||||||
|
// elite 水月 eating a 深巡 (block 3)
|
||||||
|
const h2 = battle([{ uid: 1, chessId: 'chess_char_4_09_b', row: 9, col: 3, dir: 'RIGHT' }, { uid: 2, chessId: UDFLOW, row: 9, col: 4, dir: 'RIGHT' }, { uid: 3, chessId: SKADI, row: 12, col: 1, dir: 'RIGHT' }]);
|
||||||
|
h2.step(0.1);
|
||||||
|
assert.equal(by(h2, 1).s.blockCnt, 3);
|
||||||
|
assert.equal(maxBlocked(h2, by(h2, 1)), 3);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('水月 through a chain gains every marked unit\'s block; facing an 阿戈尔 that marked him first, he marks nothing back (PRTS)', () => {
|
||||||
|
// 水月 → 幽灵鲨 → 斯卡蒂 (facing up): 水月 marks both (2 + 1), 幽灵鲨 marks 斯卡蒂 (2 + 1)
|
||||||
|
const h = battle([{ uid: 1, chessId: MIZUKI, row: 9, col: 3, dir: 'RIGHT' }, { uid: 2, chessId: GHOST, row: 9, col: 4, dir: 'RIGHT' }, { uid: 3, chessId: SKADI, row: 9, col: 5, dir: 'UP' }]);
|
||||||
|
h.step(0.1);
|
||||||
|
assert.deepEqual([by(h, 1).s.blockCnt, by(h, 2).s.blockCnt], [3, 3]);
|
||||||
|
// face to face: 幽灵鲨 (further left) marks first; 水月 never marks 「已将标记付与自身的单位」 — no block for him
|
||||||
|
const h2 = battle([{ uid: 2, chessId: GHOST, row: 9, col: 2, dir: 'RIGHT' }, { uid: 1, chessId: MIZUKI, row: 9, col: 3, dir: 'LEFT' }, { uid: 3, chessId: SKADI, row: 12, col: 1, dir: 'RIGHT' }]);
|
||||||
|
h2.step(0.1);
|
||||||
|
assert.equal(by(h2, 2).s.blockCnt, 2, '幽灵鲨 + 水月\'s 0');
|
||||||
|
assert.equal(by(h2, 1).s.blockCnt, 0, '水月 gains nothing from the 阿戈尔 that marked him');
|
||||||
|
});
|
||||||
Reference in new issue
Block a user