feedback5 WF: ACTIVE_RANGE also replaces the SEARCH row and covers 深巡 S2 — a skill whose running range strictly contains the own one casts with an enemy inside it (the owner's decisions of 2026-10-05)

tools/build-data.mjs resolveTrigger: a MANUAL operator skill on DEFAULT (no row, or a DEFAULT entry of the deviation
tables) or on the SEARCH row ("在初始攻击范围内存在敌人时释放技能": 解放者 / 阵法术师 / 安洁莉娜 — ACTIVE_RANGE_OVER) whose
running range strictly contains its own is ACTIVE_RANGE on that range, rawRule the official row; validateAll accepts a
DEFAULT deviation resolved to ACTIVE_RANGE (chess and stand-in tables) and ACTIVE_RANGE over SEARCH. Data rebuilt
offline, JSON-compared: only skills[].trigger rule / customRangeGrid of 薄绿 S1 (x-2), 蜜蜡 S1 (x-2), 卡涅利安 S3 (x-2),
玛恩纳 S2 (2-3), 安洁莉娜 S3 (y-4) — rawRule SEARCH — and 深巡 S2 (3-2, rawRule TAKE_DAMAGE), normal + elite (32
leaves); backups.json unchanged. Kits: 薄绿 S1 drops its DEFAULT trigger and 深巡 S2 PR #12's DEFAULT line, both read the
data now (雷蛇 S2 keeps PR #12's line). The sim needs no change (SEARCH was the DEFAULT condition on the initial range
every tick; ACTIVE_RANGE is the same on the running range). Docs: DESIGN §5.6 and the §21.20 flip row, DATA, SIM,
PLAYING, kits README, shared tier comments, skills.js header.

Tests: data (78 records / 39 skills, the five from SEARCH, the SEARCH skills that stay), feedback5-active-range (安洁莉娜
S3 on its y-4, S2 keeps SEARCH), feedback1-tank-triggers and kits_t1t2 (深巡 S2 on its 3-2, before any hit), kits_alt_t3
(薄绿 S1 on its x-2), feedback1f-fence (the idle measure uses the interval of the cooldown still running: the S2 now casts
between two attacks), docs-consistency (one PR #12 kit line left).

Golden: roster-001 / 002 (深巡), roster-016 / 044 (玛恩纳, 安洁莉娜), roster-026 / 027 (薄绿), roster-041 / 042 (卡涅利安),
bond-egirShip-low / bond-suntShip-high (深巡), boss-boss_2-pair / boss-boss_6-pair (玛恩纳, 安洁莉娜), matches solo-NORMAL-1,
coop2-NORMAL-3, coop4-FUNNY-6, coop2-NORMAL-8-serverrun — each fields one of the six skills, which now casts when an
enemy enters its running range.
This commit is contained in:
sganggs committed 2026-10-05 18:45:13 +08:00
1 parent 65ac4afbd8
commit 383fe4a49e
27 files changed
+463 -383

No files matched your search

+9 -7
View File
@@ -432,20 +432,22 @@ test('3_06 菲莱 S1 灵河护佑 (TAKE_DAMAGE): HP +, clears her element gauges
}
});
test('3_08 薄绿 S1 风语 (阵法术师 技能1: "初始攻击范围内出现敌人后自动释放"): wider range, attacks at attack@atk_scale; guard/taunt rules kept', () => {
test('3_08 薄绿 S1 风语 (阵法术师 row SEARCH "在初始攻击范围内存在敌人时", widened to its running x-2 by the owner\'s ACTIVE_RANGE rule of 2026-10-05): wider range, attacks at attack@atk_scale; guard/taunt rules kept', () => {
for (const id of BOTH('chess_char_3_08_a')) {
const b = SB(id, 'skchr_mint_1'), t0 = TB(id, 0);
assert.equal(LD(id, 'skchr_mint_1').skill.trigger?.rule, 'SEARCH', 'data: the phalanx S1 row');
const h = makeBattle({ defs: { enemies: { enemy_d: dummy('enemy_d'), enemy_in: dummy('enemy_in') } }, timeLimit: 60, hooks: ['damaged'], captureNoisy: true,
units: [U(id, 'skchr_mint_1', 10, 4)], enemies: [{ key: 'enemy_d', pos: [11, 6] }] }); // [1,2]: x-2 only
const sk = LD(id, 'skchr_mint_1').skill;
assert.equal(sk.trigger?.rule, 'ACTIVE_RANGE', 'data: the phalanx row (rawRule SEARCH) on the x-2 she attacks with');
assert.deepEqual(sk.trigger.grid, sk.rangeGrid, 'trigger grid = the S1 x-2');
const h = makeBattle({ defs: { enemies: { enemy_d: dummy('enemy_d'), enemy_far: dummy('enemy_far') } }, timeLimit: 60, hooks: ['damaged'], captureNoisy: true,
units: [U(id, 'skchr_mint_1', 10, 4)], enemies: [{ key: 'enemy_far', pos: [10, 7] }] }); // [0,3]: outside the x-2 too
const u = h.unit(id);
h.run(1);
assert.equal(atkHits(h, u).length, 0, 'phalanx: no attack while the skill is off');
fill(u);
h.run(2);
assert.equal(u.skill.activations, 0, 'an enemy outside her INITIAL range does not open it (not a whole-field search)');
h.spawn('enemy_in', { pos: [10, 6] }); // [0,2]: initial range
assert.ok(h.runUntil(() => u.skill.active, 1), 'an enemy inside her initial range opens it at once (she never attacks before)');
assert.equal(u.skill.activations, 0, 'an enemy outside the x-2 does not open it (not a whole-field search)');
h.spawn('enemy_d', { pos: [11, 6] }); // [1,2]: the x-2 only, outside her initial x-1
assert.ok(h.runUntil(() => u.skill.active, 1), 'an enemy inside the S1 x-2 opens it at once (she never attacks before)');
assert.ok(u.findBuff('talent:mint_taunt'));
approx(u.s.taunt, (u.base.tauntLevel ?? 0) + t0.taunt_level);
h.run(3);
+13 -9
View File
@@ -132,12 +132,12 @@ test('1_04 深巡: fin darts pierce attack@max_target enemies on the line + 1 s
});
const u = h.unit(id);
h.step();
// 技能策略 (issue #4; the deliberate deviation of DESIGN §21.29): an enemy inside her initial 2-2 range is enough — the
// basic strategy casts it, no hit required
assert.equal(u.skill.rule, 'DEFAULT', '行动能力剥夺 is an offensive ranged skill, not a 重装 TAKE_DAMAGE one');
// 技能策略 (issue #4; the deliberate deviation of DESIGN §21.29, and since 0.2.0 the owner's ACTIVE_RANGE on top): an
// enemy inside the 3-2 she attacks with is enough — no hit required
assert.equal(u.skill.rule, 'ACTIVE_RANGE', '行动能力剥夺 is an offensive ranged skill, not a 重装 TAKE_DAMAGE one');
h.run(3.5);
assert.ok(u.skill.active);
assert.equal(h.hooksOf('skillStart').find((c) => c.unit === u).reason, 'DEFAULT', 'cast by the basic strategy');
assert.equal(h.hooksOf('skillStart').find((c) => c.unit === u).reason, 'ACTIVE_RANGE', 'cast on its running range');
approx(u.s.atk, u.base.atk * (1 + bb.atk));
const firstAtk = h.hooksOf('attack').find((c) => c.attacker === u && c.isSkill);
assert.equal(firstAtk.targets.length, bb['attack@max_target'], 'hits every enemy of the line');
@@ -150,16 +150,20 @@ test('1_04 深巡: fin darts pierce attack@max_target enemies on the line + 1 s
done(h);
});
test('1_04 深巡 / 1_20 雷蛇 S2 技能策略: both 哨戒铁卫 S2s cast with an enemy in range, no hit needed (issue #4)', () => {
test('1_04 深巡 / 1_20 雷蛇 S2 技能策略: both 哨戒铁卫 S2s cast with an enemy in range, no hit needed (issue #4); 深巡 on her 3-2', () => {
// both S2s are offensive (深巡: range up + ATK/ASPD + piercing darts; 雷蛇: ATK +125 % + arts on 3 + stun); the official
// 下半 重装 row (TAKE_DAMAGE for every MANUAL 重装 skill) made both wait for a hit, and the owner's deliberate deviation
// from it (DESIGN §21.29, after community feedback) gives them the basic strategy — the data and the kit say DEFAULT.
// from it (DESIGN §21.29, after community feedback) gives them the basic strategy — 雷蛇's data and kit say DEFAULT;
// 深巡's 3-2 strictly contains her 2-2, so since 0.2.0 the owner's ACTIVE_RANGE rule casts it on the 3-2 (2026-10-05).
for (const id of ['chess_char_1_04_a', 'chess_char_1_04_b', 'chess_char_1_20_a', 'chess_char_1_20_b']) {
const h = run({ units: [{ chessId: id, row: 9, col: 4, carryState: READY }], enemies: [{ key: 'e', pos: [9, 6] }] });
const udflow = id.startsWith('chess_char_1_04');
// (9,7) = [0,3]: on 深巡's 3-2, not on her 2-2
const h = run({ units: [{ chessId: id, row: 9, col: 4, carryState: READY }], enemies: [{ key: 'e', pos: [9, udflow ? 7 : 6] }] });
const u = h.unit(id);
assert.equal(u.skill.rule, 'DEFAULT', `${id}: an offensive skill, not the 重装 TAKE_DAMAGE row`);
const rule = udflow ? 'ACTIVE_RANGE' : 'DEFAULT';
assert.equal(u.skill.rule, rule, `${id}: an offensive skill, not the 重装 TAKE_DAMAGE row`);
assert.ok(h.runUntil(() => u.skill.activations >= 1, 5), `${id}: casts while an enemy is in range and untouched`);
assert.equal(h.hooksOf('skillStart').find((c) => c.unit === u).reason, 'DEFAULT', `${id}: cast by the basic strategy`);
assert.equal(h.hooksOf('skillStart').find((c) => c.unit === u).reason, rule, `${id}: cast by ${rule}`);
done(h);
}
});
+20 -10
View File
@@ -460,9 +460,11 @@ test('chess: skills[] = every skill unlocked at the status, at the chess skill l
// Triggers per skill (PRTS 卫戍协议/帮助 技能策略; tools/build-data.mjs resolveTrigger): the class rows cover every MANUAL
// skill of the class and no AUTO one; a MANUAL skill with a 技能范围 of its own (not an attack-range change) is SKILL_RANGE.
const rules = (id) => chess[id].skills.map((s) => s.trigger.rule);
const raws = (id) => chess[id].skills.map((s) => s.trigger.rawRule);
assert.deepEqual(rules('chess_char_1_02_a'), ['TAKE_DAMAGE', 'TAKE_DAMAGE']); // 角峰 (重装, both MANUAL)
assert.deepEqual(rules('chess_char_1_10_b'), ['DEFAULT', 'TAKE_DAMAGE']); // 古米 (S1 自动触发)
assert.deepEqual(rules('chess_char_3_08_a'), ['SEARCH', 'SEARCH']); // 薄绿 (阵法术师: the default S2 too)
assert.deepEqual(rules('chess_char_3_08_a'), ['ACTIVE_RANGE', 'SEARCH']); // 薄绿 (阵法术师: the default S2 too; S1's x-2: the owner's rule)
assert.deepEqual(raws('chess_char_3_08_a'), ['SEARCH', 'SEARCH']);
assert.deepEqual(rules('chess_char_3_19_a'), ['DEFAULT', 'DEFAULT', 'SP_FULL']); // 伺夜 (战术家: S1/S2 are AUTO)
assert.deepEqual(rules('chess_char_6_11_b'), ['MLYSS_WTRMAN', 'MLYSS_WTRMAN', 'MLYSS_WTRMAN']); // 缪尔赛思 (charId row −1)
assert.deepEqual(rules('chess_char_1_08_a'), ['DEFAULT', 'SKILL_RANGE']); // 德克萨斯 S2 剑雨: 对周围所有敌人
@@ -471,9 +473,8 @@ test('chess: skills[] = every skill unlocked at the status, at the chess skill l
assert.deepEqual(rules('chess_char_3_18_a'), ['DEFAULT', 'SKILL_RANGE', 'ACTIVE_RANGE']); // 忍冬: S2 对周围…, S3 攻击距离+1
// the deliberate deviation from the 重装 row (DESIGN §21.29, the owner's decision; tools/build-data.mjs
// TRIGGER_DEVIATIONS, per chess): six skills cast with an enemy in range, rawRule keeps the official TAKE_DAMAGE
const raws = (id) => chess[id].skills.map((s) => s.trigger.rawRule);
for (const id of ['chess_char_1_04_a', 'chess_char_1_04_b']) { // 深巡: S1 keeps the row, S2 deviates
assert.deepEqual(rules(id), ['TAKE_DAMAGE', 'DEFAULT']);
assert.deepEqual(rules(id), ['TAKE_DAMAGE', 'ACTIVE_RANGE']); // (S2: and the owner's ACTIVE_RANGE on top)
assert.deepEqual(raws(id), ['TAKE_DAMAGE', 'TAKE_DAMAGE']);
}
for (const id of ['chess_char_1_20_a', 'chess_char_1_20_b']) { // 雷蛇: S1 AUTO, S2 deviates
@@ -495,24 +496,33 @@ test('chess: skills[] = every skill unlocked at the status, at the chess skill l
assert.deepEqual(raws(id), ['TAKE_DAMAGE', 'TAKE_DAMAGE', 'CUSTOM_RANGE_SEARCH_ENEMY']);
assert.deepEqual(chess[id].skills[1].trigger.customRangeGrid, chess[id].skills[1].rangeGrid);
}
// the owner's rule of 2026-10-05 (a deliberate deviation): a MANUAL skill on the basic strategy whose running attack
// range strictly contains the operator's own range is ACTIVE_RANGE on that range (rawRule keeps the official DEFAULT)
// the owner's rule of 2026-10-05 (a deliberate deviation): a MANUAL skill on the basic strategy (DEFAULT by no row or by
// a deviation: 深巡 S2) or on the SEARCH row whose running attack range strictly contains the operator's own range is
// ACTIVE_RANGE on that range (rawRule keeps the official row)
const tiles = (g) => new Set((g || []).map(([r, c]) => `${r},${c}`));
const wider = (a, b) => { const A = tiles(a), B = tiles(b); return A.size > B.size && [...B].every((k) => A.has(k)); };
const active = Object.values(chess).flatMap((c) => (c.skills || []).filter((s) => s.trigger.rule === 'ACTIVE_RANGE').map((s) => [c, s]));
for (const [c, s] of active) {
assert.equal(s.skillType, 'MANUAL', `${c.chessId} ${s.skillId}`);
assert.equal(s.trigger.rawRule, 'DEFAULT', `${c.chessId} ${s.skillId}: only the basic strategy`);
const dev = c.baseId === 'chess_char_1_04_a' && s.skillId === 'skchr_udflow_2';
assert.equal(s.trigger.rawRule, dev ? 'TAKE_DAMAGE' : s.trigger.rawRule === 'SEARCH' ? 'SEARCH' : 'DEFAULT', `${c.chessId} ${s.skillId}: only the basic strategy / SEARCH`);
assert.ok(wider(s.trigger.customRangeGrid, c.rangeGrid), `${c.chessId} ${s.skillId}: its running range strictly contains ${c.rangeId}`);
if (s.rangeGrid) assert.deepEqual(s.trigger.customRangeGrid, s.rangeGrid, `${c.chessId} ${s.skillId}: the skill's own grid`);
}
assert.equal(active.length, 66, '33 skills, normal + elite');
assert.equal(new Set(active.map(([c, s]) => `${c.baseId} ${s.skillId}`)).size, 33);
assert.equal(active.length, 78, '39 skills, normal + elite');
assert.equal(new Set(active.map(([c, s]) => `${c.baseId} ${s.skillId}`)).size, 39);
// from the SEARCH row (解放者 / 阵法术师 / 安洁莉娜) and 深巡 S2's deviation: the owner's decisions of 2026-10-05
const fromSearch = active.filter(([, s]) => s.trigger.rawRule === 'SEARCH').map(([c, s]) => `${c.baseId} ${s.skillId}`);
assert.deepEqual([...new Set(fromSearch)].sort(), ['chess_char_3_08_a skchr_mint_1', 'chess_char_4_05_a skchr_beewax_1', 'chess_char_4_24_a skchr_billro_3', 'chess_char_5_19_a skchr_mlynar_2', 'chess_char_5_20_a skchr_aglina_3']);
assert.equal(fromSearch.length, 10);
// the SEARCH skills whose range does not grow keep the row (薄绿 / 蜜蜡 S2, 卡涅利安 S1 / S2, 玛恩纳 S1, 安洁莉娜 S2, 圣聆初雪 S1)
const search = Object.values(chess).flatMap((c) => (c.skills || []).filter((s) => s.trigger.rule === 'SEARCH').map((s) => `${c.baseId} ${s.skillId}`));
assert.deepEqual([...new Set(search)].sort(), ['chess_char_3_08_a skchr_mint_2', 'chess_char_4_05_a skchr_beewax_2', 'chess_char_4_24_a skchr_billro_1', 'chess_char_4_24_a skchr_billro_2', 'chess_char_5_19_a skchr_mlynar_1', 'chess_char_5_20_a skchr_aglina_2', 'chess_char_6_02_a skchr_sbell2_1']);
const grown = (id, sid) => chess[id].skills.find((s) => s.skillId === sid).trigger;
assert.deepEqual(grown('chess_char_5_07_a', 'skchr_surtr_3').customRangeGrid.length, chess.chess_char_5_07_a.rangeGrid.length + 2, '史尔特尔 S3 攻击距离+2: 1-1 grown by 2');
assert.equal(grown('chess_char_5_03_a', 'skchr_blaze2_3').rule, 'DEFAULT', '烛煌 S3: 4-11 does not contain her 3-1');
assert.equal(grown('chess_char_1_04_a', 'skchr_udflow_2').rule, 'DEFAULT', '深巡 S2: the §21.29 deviation stays');
assert.equal(grown('chess_char_3_08_a', 'skchr_mint_1').rule, 'SEARCH', '薄绿 S1: its official 阵法术师 row');
assert.deepEqual(grown('chess_char_1_04_a', 'skchr_udflow_2'), { rule: 'ACTIVE_RANGE', rawRule: 'TAKE_DAMAGE', customRangeGrid: [[0, 0], [0, 1], [0, 2], [0, 3]] }, '深巡 S2: its 3-2 over her 2-2, on top of the §21.29 deviation');
assert.equal(grown('chess_char_3_08_a', 'skchr_mint_1').rawRule, 'SEARCH', '薄绿 S1: its official 阵法术师 row stays the rawRule');
assert.equal(grown('chess_char_5_15_a', 'skchr_thorn2_3').rule, 'DEFAULT', '引星棘刺 S3: 被动效果:攻击范围扩大 is her own range');
const deviated = Object.values(chess).flatMap((c) => (c.skills || []).filter((s) => s.trigger.rawRule === 'TAKE_DAMAGE' && s.trigger.rule !== 'TAKE_DAMAGE').map((s) => `${c.baseId} ${s.skillId}`));
assert.equal(deviated.length, 14, 'exactly the six skills of §21.29 and 余 S2, normal + elite');
+3 -2
View File
@@ -845,9 +845,10 @@ test('the deliberate trigger deviation (DESIGN §21.29): six 重装 skills DEFAU
assert.match(r03, /上半 \(act1autochess, 2025-11\) shipped no TANK row/);
assert.match(r03, /下半 \(act2autochess, 2026-03-14\) added `TANK \| \| \| 0 \| TAKE_DAMAGE` for every skill index/);
assert.match(r03, /\*\*Deliberate deviation\*\* \(the owner, 2026-10-03/);
// PR #12's kit lines stay; their comments give this reason, not the community summary
// PR #12's kit line stays (雷蛇 S2; 深巡 S2 dropped its own in 0.2.0 and reads its data's ACTIVE_RANGE, the owner's
// decision of 2026-10-05); the comments give this reason, not the community summary
const t1 = tierSources(1).map(doc).join('\n');
assert.equal((t1.match(/trigger: 'DEFAULT',/g) || []).length, 2, "PR #12's two kit lines");
assert.equal((t1.match(/trigger: 'DEFAULT',/g) || []).length, 1, "PR #12's kit line left (雷蛇 S2)");
assert.ok(!/offensive skills activate when an enemy is in their skill range/.test(t1));
assert.ok(!/documented for skillIndex 0/.test(t1));
assert.match(DATA_MD, /a deliberate deviation, `tools\/build-data\.mjs TRIGGER_DEVIATIONS`, DESIGN §21\.29/);
+27 -27
View File
@@ -170,8 +170,8 @@
"round": 5,
"seed": 2738879831,
"waveId": "act1autochess_05",
"time": 95.67,
"ticks": 2870,
"time": 96.43,
"ticks": 2893,
"reason": "cleared",
"killed": 22,
"total": 22,
@@ -195,21 +195,21 @@
}
},
"units": [
["p1",1,"op","chess_char_1_04_a",1,null,388.94,1,2,3,7627,3376,0,54,2],
["p1",1,"op","chess_char_1_04_a",1,null,176.79,1,2,3,6620,3588,0,57,2],
["p1",2,"op","chess_char_3_16_a",1,null,2794.48,1,1,0,0,0,0,0,0],
["p1",3,"op","chess_char_2_07_a",1,null,3447.65,1,3,0,0,0,0,0,0],
["p1",4,"op","chess_char_3_18_a",2,null,1904.57,1,33,0,0,1851,0,0,0],
["p1",5,"op","chess_char_3_05_a",2,null,4545.21,1,9,6,19145,476,0,22,1],
["p1",6,"op","chess_char_3_14_a",1,null,1608.79,1,4,1,9276,0,0,42,2],
["p1",6,"op","chess_char_3_14_a",1,null,1608.79,1,4,2,9954,0,0,42,2],
["p1",7,"op","chess_char_3_17_a",1,null,2647.47,1,8,4,30549,0,0,48,3],
["p1",8,"op","chess_char_3_19_a",2,null,1850.55,1,5,6,17048,0,0,76,2],
["p1",8,"op","chess_char_3_19_a",2,null,1850.55,1,5,5,17378,0,0,77,2],
["p1",9,"token","token_10028_vigil_wolf",null,null,807.94,1,6,2,7362,944,0,29,null]
],
"enemies": {"enemy_1166_dusbr":[15,15,0,761,51840],"enemy_1169_duphlx":[5,5,0,659,23040],"enemy_1170_dushld":[2,2,0,3376,16128]},
"hooks": [1,32,2870,344,344,593,594,0,23,23,10,7,0,10052,41,13,22,0,1,24,7,0,0],
"events": {"atk":395,"deploy":10,"die":23,"dmg":594,"fx":11,"layer":7,"skill":17,"spawn":31,"status":46},
"enemies": {"enemy_1166_dusbr":[15,15,0,774,51840],"enemy_1169_duphlx":[5,5,0,659,23040],"enemy_1170_dushld":[2,2,0,3575,16128]},
"hooks": [1,32,2893,350,350,602,603,0,23,23,10,7,0,10075,41,15,22,0,1,24,7,0,0],
"events": {"atk":404,"deploy":10,"die":23,"dmg":603,"fx":11,"layer":7,"skill":17,"spawn":31,"status":46},
"fx": {"devour":1,"dp":1,"garrison":3,"volley":3,"wolfShadow":2,"wolfShadowLost":1},
"snaps": "d0724fb0 dc731840 afc7b763 32af0154 58ec6e8c ad015606 93516fa3 8d4b0184 6309839b fcfc5b4e"
"snaps": "d0724fb0 dc731840 afc7b763 306d88e1 16e7c1f4 157932c4 1b271b3a 007b9084 be400fd1 2fa15d8c"
},
"bond-egirShip-high": {
"about": "阿戈尔 high: tier 2 layers 999; chess_char_1_04_b chess_char_2_07_b chess_char_3_05_b chess_char_4_16_b chess_char_4_09_b chess_char_3_09_b chess_char_4_13_b chess_char_4_14_b",
@@ -1486,31 +1486,31 @@
"round": 10,
"seed": 2806272209,
"waveId": "act1autochess_h03",
"time": 138.2,
"ticks": 4146,
"time": 142.4,
"ticks": 4272,
"reason": "cleared",
"killed": 8,
"killed": 10,
"total": 24,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 6,
"rngDraws": 4,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":8,"total":24,"perfect":false,"leaks":16,"leaksUncounted":0,"coins":0,"dmg":208861,"bossDmg":0,"heal":3101,"deaths":6,"layerGains":{}}},
"players": {"p1":{"killed":10,"total":24,"perfect":false,"leaks":14,"leaksUncounted":0,"coins":0,"dmg":230499,"bossDmg":0,"heal":14273,"deaths":5,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",0,0,2,1,4706,5937,0,86,2],
["p1",2,"op","chess_char_1_04_b",1,"uniequip_002_udflow",1446.16,1,1,3,34635,1458,0,95,3],
["p1",3,"op","chess_char_4_19_a",2,null,0,0,34,1,4497,3120,0,41,3],
["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",721.44,1,4,2,51103,1772,0,133,5],
["p1",5,"op","chess_char_1_03_b",1,"uniequip_002_leizi",1391,1,7,0,64850,709,0,33,1],
["p1",6,"op","chess_char_1_06_b",1,"uniequip_002_vendla",0,0,5,1,12858,1651,497,49,3],
["p1",7,"op","chess_char_4_20_a",2,null,1217,1,8,0,36212,0,0,34,2],
["p1",8,"op","chess_char_4_21_a",1,null,1271,1,35,0,0,3614,2604,10,0]
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",0,0,2,2,7736,5867,0,86,2],
["p1",2,"op","chess_char_1_04_b",1,"uniequip_002_udflow",2638.94,1,1,1,32919,265,0,98,3],
["p1",3,"op","chess_char_4_19_a",2,null,1560,1,35,0,6306,1560,0,54,3],
["p1",4,"op","chess_char_1_01_b",1,"uniequip_002_inside",1421,1,4,2,55297,4429,0,129,5],
["p1",5,"op","chess_char_1_03_b",1,"uniequip_002_leizi",1391,1,36,4,75959,2224,0,31,1],
["p1",6,"op","chess_char_1_06_b",1,"uniequip_002_vendla",817.63,1,5,1,21214,1417,4907,77,4],
["p1",7,"op","chess_char_4_20_a",2,null,1217,1,34,0,31066,1590,0,25,2],
["p1",8,"op","chess_char_4_21_a",1,null,1271,1,33,0,0,9077,9366,36,1]
],
"enemies": {"enemy_1166_dusbr_2":[14,8,6,3587,114489],"enemy_1169_duphlx_2":[7,0,7,3841,27585],"enemy_1172_dugago":[3,0,3,10832,66787]},
"hooks": [1,35,4146,667,667,877,877,37,14,30,19,19,82,14466,301,11,24,16,1,16,0,0,0],
"events": {"atk":762,"deploy":11,"die":14,"dmg":877,"fx":13,"heal":14,"leak":16,"skill":38,"spawn":32,"status":246},
"fx": {"featherArrow":2,"flame":3,"garrisonGrant":1,"revive":2,"stone":2,"taunt":3},
"snaps": "e8a58cae e45c0ada 1d0104f3 5a4162ce f459b0c6 6078554c 0da631c2 89a53382 35812639 be18c73e 09fd2d12 0c74c047 b302eee8 1b6c5142"
"enemies": {"enemy_1166_dusbr_2":[14,9,5,5122,116437],"enemy_1169_duphlx_2":[7,1,6,2102,34836],"enemy_1172_dugago":[3,0,3,19205,79225]},
"hooks": [1,36,4272,698,698,863,863,99,15,29,21,21,82,15296,266,12,24,14,1,17,0,0,0],
"events": {"atk":780,"deploy":12,"die":15,"dmg":863,"fx":19,"heal":70,"leak":14,"skill":42,"spawn":32,"status":237},
"fx": {"counter":4,"featherArrow":2,"flame":3,"garrisonGrant":1,"healField":1,"revive":2,"stone":2,"taunt":4},
"snaps": "e8a58cae cc93867c 83fa20df eba0ed1f 84da0944 45cc2dac 1c29b227 c757f725 c4a012a1 1581a672 c133e524 2d0211d9 3aa23054 943283cd dfda39c6"
},
"bond-swiftShip-low": {
"about": "迅捷 low: tier 1 layers 1; chess_char_4_23_a chess_char_4_22_a chess_char_1_19_a chess_char_1_01_a chess_char_4_24_a chess_char_4_25_a chess_char_4_26_a chess_char_3_01_a",
+59 -59
View File
@@ -140,42 +140,42 @@
"killed": 7,
"total": 8,
"unspawned": 0,
"bossHpLeft": 2352238,
"rngDraws": 393,
"bossHpLeft": 2379255,
"rngDraws": 268,
"errors": {"count":0,"kinds":[]},
"players": {
"p1": {"killed":7,"total":8,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":614764,"bossDmg":322645,"heal":16813,"deaths":2,"layerGains":{}},
"p2": {"killed":0,"total":0,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":779819,"bossDmg":320424,"heal":4006,"deaths":1,"layerGains":{}}
"p1": {"killed":7,"total":8,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":631056,"bossDmg":337792,"heal":24928,"deaths":2,"layerGains":{}},
"p2": {"killed":0,"total":0,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":798175,"bossDmg":278950,"heal":4050,"deaths":2,"layerGains":{}}
},
"units": [
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,9,1,223973,1132,7,78,3],
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",5482.35,1,11,0,13226,12539,405,57,1],
["p1",3,"op","chess_char_5_14_b",1,"none",1994,1,7,0,29890,1028,189,53,17],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",2738,1,13,0,11616,0,0,80,1],
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1170,1,1,0,103809,0,1188,46,10],
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",2418.5,1,3,0,59999,0,0,33,3],
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,9,2,212647,1042,0,73,3],
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3537,1,11,0,23242,22277,304,68,1],
["p1",3,"op","chess_char_5_14_b",1,"none",1994,1,7,0,31391,1118,208,23,19],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",2738,1,13,0,2373,0,0,25,1],
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1170,1,1,0,117324,0,6555,73,10],
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",2418.5,1,3,0,85327,0,0,53,5],
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",2769.3,1,43,1,12823,3019,249,8,1],
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1611,1,40,0,115995,1611,0,39,13],
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",1610,1,5,0,0,0,14731,20,3],
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1695,1,15,1,43434,1739,44,35,2],
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2644,1,46,0,0,3776,211,0,1],
["p2",12,"op","chess_char_4_12_b",2,"uniequip_002_glady",2232,1,12,0,31192,0,0,40,3],
["p2",13,"op","chess_char_4_04_b",1,"uniequip_002_ines",3545.85,1,48,1,264375,0,0,267,8],
["p2",14,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",2312.97,1,14,0,2338,1249,1179,13,6],
["p2",15,"op","chess_char_4_16_b",2,"uniequip_002_texas2",2671.35,1,47,1,80716,4127,957,159,0],
["p2",16,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",1821.24,1,16,0,80697,1270,313,68,5],
["p2",17,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1561,1,2,0,1460,0,0,14,1],
["p2",18,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,4,1,67986,0,0,52,3],
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",1989,1,18,0,115269,1346,1346,176,47],
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",1626,1,20,1,135786,0,0,66,15],
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1611,1,40,1,104764,1611,0,32,14],
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",1610,1,5,0,0,0,17612,24,3],
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1695,1,15,1,41166,1393,0,31,1],
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2644,1,47,0,0,3917,271,0,1],
["p2",12,"op","chess_char_4_12_b",2,"uniequip_002_glady",2232,1,12,0,45169,0,0,48,4],
["p2",13,"op","chess_char_4_04_b",1,"uniequip_002_ines",3545.85,1,48,1,277519,0,0,252,8],
["p2",14,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",0,0,14,0,3050,2644,261,19,8],
["p2",15,"op","chess_char_4_16_b",2,"uniequip_002_texas2",1968.91,1,46,0,75188,4650,1035,112,0],
["p2",16,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",732.88,1,16,0,71495,3011,967,61,4],
["p2",17,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1561,1,2,0,2025,0,0,19,1],
["p2",18,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,4,0,65424,0,0,51,3],
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",337.13,1,18,0,111023,3169,1517,158,46],
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",1626,1,20,1,147282,0,0,72,16],
["p2",21,"token","token_10041_cathy_catsld",null,null,100,1,21,0,0,0,0,0,null],
["p2",22,"token","token_10041_cathy_catsld",null,null,100,1,22,0,0,0,0,0,null]
],
"enemies": {"enemy_1005_yokai_2":[6,6,0,4018,62190],"enemy_1430_lrrook":[2,1,1,0,689479],"enemy_9017_achunt":[2,0,0,28816,647762]},
"hooks": [1,46,6000,1337,1341,2564,2590,3357,11,22,143,144,21,40126,1555,0,10,1,1,12,0,8,3],
"events": {"atk":1390,"deploy":36,"die":21,"dmg":2585,"fx":517,"heal":50,"leak":1,"skill":281,"spawn":32,"status":512},
"fx": {"aoe":37,"appear":2,"blink":11,"burst":8,"catShield":1,"charge":6,"counter":21,"crit":20,"dilemma":5,"disappear":2,"dodge":3,"explosion":15,"frostNova":47,"iceSpike":8,"overclock":1,"pull":3,"ripple":14,"sentry":5,"sermon":1,"shadowWeave":9,"shield":6,"slippery":3,"soul":3,"sp":8,"stealth":8,"swordRain":69,"swordStorm":8,"tornado":3,"tornadoPulse":15,"weightless":3,"zone":172},
"snaps": "b55c9e85 fe86ba61 48caeaf1 91da132f f7ba5dfd 81890176 95334359 78212b6d 406f0742 73dc65d8 4582b0ed 758f70ea 8a649bb9 91e46959 5126c4ed 5b7a02fa a1479ed8 549ce91d f3f60666 d22dc72f"
"enemies": {"enemy_1005_yokai_2":[6,6,0,3587,62190],"enemy_1430_lrrook":[2,1,1,0,750444],"enemy_9017_achunt":[2,0,0,44263,620745]},
"hooks": [1,46,6000,1265,1269,2515,2548,3419,11,23,149,151,30,42577,1536,0,10,1,1,13,0,11,0],
"events": {"atk":1317,"deploy":36,"die":22,"dmg":2544,"fx":533,"heal":99,"leak":1,"skill":294,"spawn":32,"status":569},
"fx": {"aoe":39,"appear":2,"blink":11,"burst":11,"catShield":1,"charge":8,"counter":30,"crit":12,"dilemma":4,"disappear":2,"explosion":16,"frostNova":46,"iceSpike":8,"overclock":1,"pull":4,"ripple":10,"sentry":5,"sermon":1,"shadowWeave":10,"shield":7,"slippery":3,"soul":3,"sp":9,"stealth":8,"swordRain":69,"swordStorm":7,"tornado":4,"tornadoPulse":20,"weightless":5,"zone":177},
"snaps": "b55c9e85 fe86ba61 48caeaf1 91da132f 722d326f 4ebe7b96 1105a7d0 233e44ce e5c88030 b9851788 b8b73d8a 3b6f1037 12238bcc 1bfe8f8d 8d1d508a 02540010 7e869520 bd76e3b9 384765a3 f4d942d7"
},
"boss-boss_2-solo": {
"about": "假想敌:铳 solo pool 750000: chess_char_4_17_b chess_char_4_18_b chess_char_4_23_b chess_char_4_19_b chess_char_4_22_b chess_char_4_20_b chess_char_4_21_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b",
@@ -623,49 +623,49 @@
"killed": 4,
"total": 6,
"unspawned": 0,
"bossHpLeft": 2649470,
"rngDraws": 130,
"bossHpLeft": 2898360,
"rngDraws": 95,
"errors": {"count":0,"kinds":[]},
"players": {
"p1": {"killed":4,"total":6,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":946686,"bossDmg":499800,"heal":2113,"deaths":5,"layerGains":{}},
"p2": {"killed":0,"total":0,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":1044656,"bossDmg":830730,"heal":2928,"deaths":12,"layerGains":{}}
"p1": {"killed":4,"total":6,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":823348,"bossDmg":423786,"heal":5342,"deaths":8,"layerGains":{}},
"p2": {"killed":0,"total":0,"perfect":false,"leaks":1,"leaksUncounted":0,"coins":0,"dmg":804143,"bossDmg":657855,"heal":737,"deaths":14,"layerGains":{}}
},
"units": [
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,3,0,123311,0,0,33,2],
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",3537,1,1,0,0,0,0,0,0],
["p1",3,"op","chess_char_5_14_b",1,"none",1994,1,5,0,50633,0,0,0,15],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",4654.6,1,11,1,22568,987,987,15,1],
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1170,1,7,2,348908,0,1126,61,12],
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1382,1,13,1,169005,0,0,37,3],
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",0,0,15,0,34896,1629,0,49,2],
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",0,0,41,0,146295,3222,0,47,15],
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",0,0,42,0,2417,3220,0,0,0],
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1695,1,9,0,48653,0,0,37,2],
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2644,1,39,0,0,12099,91,0,1],
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,3,2,151189,0,0,40,2],
["p1",2,"op","chess_char_4_01_b",2,"uniequip_002_rmixer",5482.35,1,1,0,6146,106,106,9,1],
["p1",3,"op","chess_char_5_14_b",1,"none",1994,1,45,0,25173,2703,269,7,6],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",4654.6,1,43,0,20208,6348,1693,10,1],
["p1",5,"op","chess_char_5_15_b",1,"uniequip_002_thorn2",1170,1,7,2,249545,0,2374,57,9],
["p1",6,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1382,1,13,0,189428,0,0,75,6],
["p1",7,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",0,0,40,0,7000,3258,0,18,1],
["p1",8,"op","chess_char_5_22_b",1,"uniequip_002_nymph",0,0,41,0,129521,3222,0,43,12],
["p1",9,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",0,0,42,0,0,3220,899,1,1],
["p1",10,"op","chess_char_4_02_b",2,"uniequip_002_mostma",1695,1,9,0,45137,0,0,34,2],
["p2",11,"op","chess_char_4_11_b",1,"uniequip_002_cathy",2644,1,39,0,0,12227,333,0,1],
["p2",12,"op","chess_char_4_12_b",2,"uniequip_002_glady",2232,1,2,0,0,0,0,0,0],
["p2",13,"op","chess_char_4_04_b",1,"uniequip_002_ines",3438.4,1,51,0,141582,6216,1381,198,7],
["p2",13,"op","chess_char_4_04_b",1,"uniequip_002_ines",3438.4,1,58,0,129555,8518,244,158,7],
["p2",14,"op","chess_char_4_07_b",1,"uniequip_002_bpipe",2383,1,10,0,0,0,0,0,0],
["p2",15,"op","chess_char_4_16_b",2,"uniequip_002_texas2",0,0,50,0,62760,10474,201,131,0],
["p2",16,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",0,0,18,0,223350,4032,1255,105,6],
["p2",15,"op","chess_char_4_16_b",2,"uniequip_002_texas2",0,0,56,0,53592,10522,160,153,0],
["p2",16,"op","chess_char_4_09_b",1,"uniequip_002_mizuki",0,0,52,0,166628,5555,0,68,4],
["p2",17,"op","chess_char_4_06_b",1,"uniequip_002_kroos2",1561,1,8,0,0,0,0,0,0],
["p2",18,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,12,0,358813,0,0,100,4],
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",0,0,16,0,192733,1989,0,169,45],
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",0,0,48,0,65418,4878,0,23,4],
["p2",18,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,12,0,263402,0,0,92,4],
["p2",19,"op","chess_char_4_13_b",1,"uniequip_002_gnosis",0,0,53,0,122328,3978,0,108,28],
["p2",20,"op","chess_char_4_14_b",1,"uniequip_002_lionhd",0,0,54,0,68638,4878,0,24,4],
["p2",21,"token","token_10041_cathy_catsld",null,null,100,1,22,0,0,0,0,0,null],
["p2",22,"token","token_10041_cathy_catsld",null,null,100,1,21,0,0,0,0,0,null]
],
"enemies": {
"enemy_10028_vtswd": [2,2,0,0,0],
"enemy_10029_vtshld": [4,4,0,0,0],
"enemy_10030_vtwand": [3,3,0,0,0],
"enemy_10085_hllevi_2": [2,0,1,0,460200],
"enemy_1010_demon": [4,4,0,13086,200612],
"enemy_9032_aclionk": [1,0,0,35661,1330530]
"enemy_10028_vtswd": [3,3,0,0,0],
"enemy_10029_vtshld": [5,5,0,0,0],
"enemy_10030_vtwand": [2,2,0,0,0],
"enemy_10085_hllevi_2": [2,0,2,0,345238],
"enemy_1010_demon": [4,4,0,21384,200612],
"enemy_9032_aclionk": [1,0,0,43151,1081640]
},
"hooks": [1,50,6000,990,1012,1726,1818,2327,30,33,119,122,0,33807,1848,4,16,1,1,23,0,10,1],
"events": {"atk":1123,"deploy":34,"die":32,"dmg":1780,"fx":533,"heal":8,"leak":1,"skill":235,"spawn":38,"status":939},
"fx": {"aoe":36,"appear":4,"blink":2,"burst":10,"dilemma":6,"disappear":4,"displace":12,"dodge":1,"equip":12,"explosion":4,"frostNova":45,"garrisonGrant":1,"iceSpike":41,"overclock":1,"revive":2,"ripple":18,"sentry":2,"shadowWeave":2,"shield":1,"slippery":4,"soul":2,"sp":16,"stealth":7,"sword":2,"swordRain":41,"swordStorm":6,"telegraph":16,"vest":4,"weightless":3,"zone":228},
"snaps": "4d7c2a7f 5bcea10b 84c2bed7 213fec8b e85d6851 dd80061e 891ce40c 69d89ef8 55362d2a b75065e4 5377e6ac 874beeb6 31187eea 36afddb7 304ad287 107732a5 3cd87e2e 79f172d1 3cce9284 aa1bb1af"
"hooks": [1,56,6000,919,925,1452,1533,953,36,40,89,90,1,28694,1172,8,17,2,1,30,0,7,0],
"events": {"atk":1018,"deploy":39,"die":38,"dmg":1504,"fx":406,"heal":18,"leak":2,"skill":174,"spawn":39,"status":745},
"fx": {"aoe":21,"appear":4,"blink":2,"burst":7,"counter":1,"crit":3,"dilemma":4,"disappear":4,"displace":15,"equip":12,"explosion":4,"frostNova":28,"garrisonGrant":1,"iceSpike":18,"overclock":1,"revive":2,"ripple":17,"sentry":3,"sermon":1,"shadowWeave":4,"shield":2,"slippery":4,"soul":2,"sp":8,"stealth":7,"sword":2,"swordRain":27,"swordStorm":5,"telegraph":15,"vest":5,"weightless":6,"zone":171},
"snaps": "4d7c2a7f c0c07807 ce5212b4 a9feb336 5a4c0408 8e579416 5e0ff5ee ea4f151c 2008b892 ff8c9128 a62287dc a67f5a01 2b890862 371bd4a9 23e17b23 fcfbef0b 5fd18035 ced47252 70e1d975 20720ea4"
},
"boss-boss_6-solo": {
"about": "阿利斯泰尔,帝国余晖 solo pool 995000: chess_char_4_17_b chess_char_4_18_b chess_char_4_23_b chess_char_4_19_b chess_char_4_22_b chess_char_4_20_b chess_char_4_21_b chess_char_4_24_b chess_char_4_25_b chess_char_4_26_b",
+14 -14
View File
@@ -152,7 +152,7 @@
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
"trophies": 0,
"reward": 400,
"stats": {"activatedLayers":290,"bossDamage":97500,"dmgDealt":1710191,"gold":131,"itemsEquipped":23,"kills":361,"leaks":21,"lpLost":16,"merges":5,"perfectRounds":11,"refreshes":15},
"stats": {"activatedLayers":290,"bossDamage":97500,"dmgDealt":1700976,"gold":131,"itemsEquipped":23,"kills":361,"leaks":21,"lpLost":16,"merges":5,"perfectRounds":11,"refreshes":15},
"lineup": ["2_14_a@12,5","5_10_a@12,7[4_07_e_a+3_08_e_b]","5_20_b@11,5[6_09_e_a+5_02_e_b]","3_20_b@11,8[3_06_e_a+4_08_e_a]","6_11_a@10,3[4_12_e_a+5_02_e_b]","3_18_a@10,8[2_04_e_b+4_05_e_b]","6_19_a@9,4[4_04_e_a+4_10_e_a]","1_08_a@9,5[1_01_e_a+1_02_e_a]"],
"bonds": ["arcaneShip 0/2","deputShip 1/14","emptyShip 1/10","kazimierzShip 0/16","kjeragShip 1/24","maniShip 1/2","miraShip 1/15","preciShip 0/12","sargonShip 0/8","siracusaShip 1/151","soloShip 1/22","steadShip 0/6","suntShip 1/8","swiftShip 1/44"]
}
@@ -592,7 +592,7 @@
"title": {"id":"comment_2","name":"不朽盟约","picId":"comment_icon_2","text":"激活的盟约层数总和最高"},
"trophies": 4,
"reward": 400,
"stats": {"activatedLayers":250,"bossDamage":287418,"dmgDealt":2928162,"gold":139,"itemsEquipped":12,"kills":331,"leaks":9,"lpLost":8,"merges":5,"perfectRounds":11,"refreshes":23},
"stats": {"activatedLayers":250,"bossDamage":287418,"dmgDealt":2928925,"gold":139,"itemsEquipped":12,"kills":331,"leaks":9,"lpLost":8,"merges":5,"perfectRounds":11,"refreshes":23},
"lineup": ["3_19_b@11,7[2_04_e_b]","5_12_a@11,8","4_10_a@10,5[1_02_e_b+2_01_e_a]","6_06_a@9,4","1_08_b@9,5","6_16_a@9,7","5_20_a@9,8[3_05_e_a+3_02_e_b]","3_13_b@9,9"],
"bonds": ["arcaneShip 2/86","miraShip 1/12","preciShip 0/10","sargonShip 0/10","siracusaShip 1/110","skillfulShip 1/36","soloShip 1/6","suntShip 1/0","swiftShip 0/32"]
},
@@ -950,14 +950,14 @@
"round": 12,
"ai_0": [1,26,12,0,0,6,8,"934bb983",409,"deputShip 1/57, emptyShip 1/2, kjeragShip 0/2, preciShip 1/138, sargonShip 1/144, steadShip 1/68",46,46,0,111],
"ai_1": [1,44,12,0,0,6,8,"d4b1958d",155,"deputShip 2/78, emptyShip 1/19, preciShip 0/4, sargonShip 0/2, siracusaShip 1/58, steadShip 0/4",20,46,26,104],
"ai_2": [1,28,12,0,0,6,8,"696f5ca3",172,"emptyShip 1/0, sargonShip 0/8, siracusaShip 2/148, swiftShip 1/24, yanShip 0/1",46,46,0,106],
"ai_2": [1,28,12,0,0,6,8,"696f5ca3",168,"emptyShip 1/0, sargonShip 0/8, siracusaShip 2/144, swiftShip 1/24, yanShip 0/1",46,46,0,106],
"ai_3": [1,31,12,0,0,6,8,"2e3cd509",245,"deputShip 0/18, emptyShip 0/12, kjeragShip 2/106, preciShip 2/99, siracusaShip 0/3, swiftShip 1/40, visiShip 1/0, yanShip 0/1",46,46,0,110]
},
{
"round": 13,
"ai_0": [1,26,12,0,0,6,8,"2df19066",463,"deputShip 1/59, emptyShip 1/4, kjeragShip 0/7, preciShip 2/156, sargonShip 1/166, steadShip 1/78",32,32,0,126],
"ai_1": [1,44,12,0,2,6,8,"9346fb5a",177,"deputShip 1/86, emptyShip 1/21, preciShip 1/6, sargonShip 0/2, siracusaShip 1/64, steadShip 0/4",32,32,0,115],
"ai_2": [1,28,12,0,0,6,8,"0236b2a3",238,"emptyShip 1/0, sargonShip 0/8, siracusaShip 2/214, swiftShip 1/24, yanShip 0/1",32,32,0,117],
"ai_2": [1,28,12,0,0,6,8,"0236b2a3",236,"emptyShip 1/0, sargonShip 0/8, siracusaShip 2/212, swiftShip 1/24, yanShip 0/1",32,32,0,117],
"ai_3": [1,31,12,0,0,6,7,"ceba29b5",263,"deputShip 0/18, emptyShip 0/12, kjeragShip 1/114, preciShip 2/104, siracusaShip 0/3, swiftShip 1/45, yanShip 0/1",32,32,0,124]
}
],
@@ -972,7 +972,7 @@
"title": {"id":"comment_2","name":"不朽盟约","picId":"comment_icon_2","text":"激活的盟约层数总和最高"},
"trophies": 3,
"reward": 250,
"stats": {"activatedLayers":485,"bossDamage":46721,"dmgDealt":1702122,"gold":140,"itemsEquipped":25,"kills":327,"leaks":0,"lpLost":0,"merges":5,"perfectRounds":13,"refreshes":21},
"stats": {"activatedLayers":485,"bossDamage":46721,"dmgDealt":1692520,"gold":140,"itemsEquipped":25,"kills":327,"leaks":0,"lpLost":0,"merges":5,"perfectRounds":13,"refreshes":21},
"lineup": ["6_08_a@11,6[3_03_e_a+3_02_e_a]","6_12_a@11,7[4_08_e_a+6_07_e_b]","2_14_b@10,3","2_17_b@10,4[4_02_e_b+5_01_e_a]","2_08_a@9,3[4_04_e_a+1_01_e_b]","6_06_a@9,4[3_08_e_a+3_01_e_b]","1_06_b@9,8","5_02_b@9,9[5_02_e_a+3_06_e_b]"],
"bonds": ["deputShip 1/61","emptyShip 1/6","kjeragShip 0/7","preciShip 2/158","sargonShip 1/172","steadShip 1/88"]
},
@@ -986,7 +986,7 @@
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
"trophies": 3,
"reward": 250,
"stats": {"activatedLayers":207,"bossDamage":11652,"dmgDealt":1287691,"gold":129,"itemsEquipped":20,"kills":237,"leaks":46,"lpLost":1,"merges":6,"perfectRounds":9,"refreshes":20},
"stats": {"activatedLayers":207,"bossDamage":12338,"dmgDealt":1288377,"gold":129,"itemsEquipped":20,"kills":237,"leaks":46,"lpLost":1,"merges":6,"perfectRounds":9,"refreshes":20},
"lineup": ["2_14_b@12,3","5_10_a@11,6[4_03_e_b+1_02_e_a]","6_01_a@11,7[3_05_e_a]","5_10_a@11,8[5_09_e_a+4_08_e_b]","6_14_a@10,3","4_16_a@10,8[4_11_e_a+4_04_e_b]","6_05_a@9,8[1_05_e_a+5_03_e_a]","2_16_a@9,9[5_02_e_a+4_05_e_b]"],
"bonds": ["deputShip 1/96","emptyShip 1/23","preciShip 1/14","sargonShip 0/2","siracusaShip 1/74","steadShip 0/4"]
},
@@ -1000,9 +1000,9 @@
"title": {"id":"comment_3","name":"坚若磐石","picId":"comment_icon_3","text":"目标生命值损失最少"},
"trophies": 3,
"reward": 250,
"stats": {"activatedLayers":260,"bossDamage":82751,"dmgDealt":1633721,"gold":127,"itemsEquipped":20,"kills":283,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":16},
"stats": {"activatedLayers":258,"bossDamage":70366,"dmgDealt":1632325,"gold":127,"itemsEquipped":20,"kills":283,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":16},
"lineup": ["4_25_a@12,3","1_07_b@11,7[1_01_e_a+1_05_e_a]","5_20_a@11,8[3_02_e_a+2_01_e_b]","6_18_a@10,3[2_01_e_b+4_03_e_b]","4_10_a@10,7[4_03_e_b]","3_18_b@9,4[3_07_e_b+3_11_e_a]","6_05_a@9,8","2_16_b@9,9[5_01_e_a+4_02_e_a]"],
"bonds": ["sargonShip 0/8","siracusaShip 2/236","swiftShip 1/24","yanShip 0/1"]
"bonds": ["sargonShip 0/8","siracusaShip 2/234","swiftShip 1/24","yanShip 0/1"]
},
"ai_3": {
"alive": true,
@@ -1014,7 +1014,7 @@
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
"trophies": 3,
"reward": 250,
"stats": {"activatedLayers":309,"bossDamage":143876,"dmgDealt":1729660,"gold":138,"itemsEquipped":36,"kills":284,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":23},
"stats": {"activatedLayers":309,"bossDamage":155575,"dmgDealt":1741361,"gold":138,"itemsEquipped":36,"kills":284,"leaks":0,"lpLost":0,"merges":3,"perfectRounds":13,"refreshes":23},
"lineup": ["3_20_b@12,8[5_02_e_b+6_03_e_a]","6_14_a@11,3","4_13_b@11,6[5_02_e_b+4_07_e_a]","6_01_a@11,7[3_11_e_a+3_04_e_a]","4_14_a@11,8[4_03_e_a+1_02_e_a]","4_22_a@10,8[4_04_e_b+4_02_e_a]","3_11_b@9,8[4_09_e_a+3_07_e_a]","5_14_a@9,9[4_06_e_b+2_01_e_b]"],
"bonds": ["deputShip 1/20","emptyShip 0/12","kjeragShip 1/118","preciShip 2/117","siracusaShip 0/3","swiftShip 1/54","yanShip 0/1"]
}
@@ -1245,17 +1245,17 @@
{
"round": 11,
"ai_0": [1,17,12,0,0,5,8,"f0ff6294",86,"arcaneShip 1/22, emptyShip 1/0, indomShip 0/8, kjeragShip 0/7, preciShip 1/7, siracusaShip 2/46, soloShip 1/11, steadShip 0/2, suntShip 1/0, swiftShip 0/6, victoriaShip 0/8, visiShip 0/8",23,23,0,104],
"ai_1": [1,16,12,0,0,5,8,"f020d91c",137,"arcaneShip 1/20, indomShip 1/40, kjeragShip 0/8, preciShip 0/2, siracusaShip 1/58, soloShip 1/0, steadShip 1/19, suntShip 1/0, victoriaShip 0/8, visiShip 0/8",17,23,6,97]
"ai_1": [1,16,12,0,0,5,8,"f020d91c",127,"arcaneShip 1/20, indomShip 1/30, kjeragShip 0/8, preciShip 0/2, siracusaShip 1/58, soloShip 1/0, steadShip 1/19, suntShip 1/0, victoriaShip 0/8, visiShip 0/8",17,23,6,97]
},
{
"round": 12,
"ai_0": [1,7,12,0,0,6,8,"09ffe6d0",86,"arcaneShip 1/22, emptyShip 1/0, indomShip 0/8, kjeragShip 0/7, preciShip 2/7, siracusaShip 1/46, soloShip 1/11, steadShip 0/2, suntShip 1/0, swiftShip 0/6, victoriaShip 0/8, visiShip 0/8",35,47,12,116],
"ai_1": [1,6,12,0,0,6,8,"d9bd3d27",160,"arcaneShip 1/20, indomShip 1/60, kjeragShip 0/8, preciShip 0/2, siracusaShip 1/58, soloShip 1/0, steadShip 1/22, suntShip 1/0, victoriaShip 0/8, visiShip 0/8",17,46,29,109]
"ai_1": [1,6,12,0,0,6,8,"d9bd3d27",150,"arcaneShip 1/20, indomShip 1/50, kjeragShip 0/8, preciShip 0/2, siracusaShip 1/58, soloShip 1/0, steadShip 1/22, suntShip 1/0, victoriaShip 0/8, visiShip 0/8",20,46,26,109]
},
{
"round": 13,
"ai_0": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/36, indomShip 0/8, kjeragShip 0/7, miraShip 0/3, preciShip 0/9, siracusaShip 0/58, soloShip 0/11, steadShip 0/2, swiftShip 0/6, victoriaShip 0/8, visiShip 0/8, yanShip 0/6",21,39,18,127],
"ai_1": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/26, indomShip 0/60, kjeragShip 0/8, miraShip 0/4, preciShip 0/2, siracusaShip 0/84, steadShip 0/23, victoriaShip 0/8, visiShip 0/8",19,39,20,120]
"ai_1": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/26, indomShip 0/50, kjeragShip 0/8, miraShip 0/4, preciShip 0/2, siracusaShip 0/84, steadShip 0/23, victoriaShip 0/8, visiShip 0/8",18,39,21,120]
}
],
"players": {
@@ -1283,9 +1283,9 @@
"title": {"id":"comment_5","name":"万事俱备","picId":"comment_icon_5","text":"装备配发数量最多"},
"trophies": 3,
"reward": 280,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2410241,"gold":120,"itemsEquipped":16,"kills":196,"leaks":73,"lpLost":32,"merges":2,"perfectRounds":6,"refreshes":18},
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2378540,"gold":120,"itemsEquipped":16,"kills":198,"leaks":71,"lpLost":32,"merges":2,"perfectRounds":6,"refreshes":18},
"lineup": [],
"bonds": ["arcaneShip 0/26","indomShip 0/60","kjeragShip 0/8","miraShip 0/4","preciShip 0/2","siracusaShip 0/84","steadShip 0/23","victoriaShip 0/8","visiShip 0/8"]
"bonds": ["arcaneShip 0/26","indomShip 0/50","kjeragShip 0/8","miraShip 0/4","preciShip 0/2","siracusaShip 0/84","steadShip 0/23","victoriaShip 0/8","visiShip 0/8"]
}
}
},
+177 -177
View File
@@ -29,14 +29,14 @@
"players": {"p1":{"killed":25,"total":31,"perfect":false,"leaks":6,"leaksUncounted":0,"coins":8,"dmg":180266,"bossDmg":0,"heal":9892,"deaths":9,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_1_02_a",1,null,2563.03,1,7,1,3761,1862,0,17,1],
["p1",2,"op","chess_char_1_04_a",1,null,0,0,9,1,4766,3559,0,26,1],
["p1",2,"op","chess_char_1_04_a",1,null,0,0,9,1,5169,3559,0,25,1],
["p1",3,"op","chess_char_1_10_a",0,null,0,0,48,0,2450,3808,2132,22,12],
["p1",4,"op","chess_char_1_08_a",1,null,0,0,12,3,11908,8558,0,18,1],
["p1",5,"op","chess_char_1_12_a",1,null,0,0,15,1,17149,3705,810,21,1],
["p1",6,"op","chess_char_1_01_a",1,null,1403.75,1,4,2,17043,0,0,42,2],
["p1",7,"op","chess_char_1_03_a",1,null,964.63,1,5,1,13257,898,0,5,1],
["p1",8,"op","chess_char_1_06_a",1,null,0,0,11,2,12245,2600,3519,29,1],
["p1",9,"op","chess_char_1_07_a",0,null,1510.15,1,50,3,12526,2068,0,21,0],
["p1",9,"op","chess_char_1_07_a",0,null,1510.15,1,50,3,12124,2068,0,21,0],
["p1",10,"op","chess_char_1_09_a",1,null,2122.5,1,6,0,31045,5400,0,27,1],
["p1",11,"op","chess_char_1_13_a",1,null,0,0,49,1,9409,3359,0,19,1],
["p1",12,"op","chess_char_1_14_a",1,null,1431.25,1,8,10,44707,2311,0,17,1],
@@ -61,10 +61,10 @@
"enemy_2004_balloon": [1,0,0,128,6591],
"enemy_9010_acpupp": [1,0,0,0,959]
},
"hooks": [1,50,2700,404,404,632,636,325,34,34,25,21,19,14421,65,36,31,0,1,35,0,0,0],
"events": {"atk":426,"bounty":4,"deploy":16,"die":34,"dmg":636,"fx":65,"heal":319,"skill":45,"spawn":47,"status":126},
"hooks": [1,50,2700,403,403,633,637,325,34,34,25,21,19,14445,66,36,31,0,1,35,0,0,0],
"events": {"atk":425,"bounty":4,"deploy":16,"die":34,"dmg":637,"fx":65,"heal":319,"skill":45,"spawn":47,"status":127},
"fx": {"aoe":1,"bombard":9,"bombardShell":10,"counter":6,"crit":18,"dp":1,"ember":1,"explode":3,"heal":11,"liberate":1,"summon":1,"taunt":1,"telegraph":1,"zone":1},
"snaps": "15544384 8f8ab114 83735bc4 1672a1a1 e9e7ffdb 9b9d0193 15df767d 792390ec 43783e3b"
"snaps": "15544384 737544d2 e8326082 a526432e a0c50d61 50ebdcd8 bc51feb9 9efd18d0 e4933e87"
},
"roster-002": {
"about": "pass 0 band 2: chess_char_1_02_b chess_char_1_20_a chess_char_1_04_b chess_char_1_08_b chess_char_1_18_a chess_char_1_19_a chess_char_1_17_a chess_char_1_01_b chess_char_1_03_b chess_char_1_06_b chess_char_1_07_b chess_char_1_09_b",
@@ -82,22 +82,22 @@
"total": 44,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 77,
"rngDraws": 80,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":29,"total":44,"perfect":false,"leaks":15,"leaksUncounted":0,"coins":8,"dmg":217461,"bossDmg":0,"heal":2127,"deaths":16,"layerGains":{}}},
"players": {"p1":{"killed":29,"total":44,"perfect":false,"leaks":15,"leaksUncounted":0,"coins":8,"dmg":217619,"bossDmg":0,"heal":1877,"deaths":16,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_1_02_b",1,"uniequip_002_yak",0,0,3,1,7970,4643,0,20,1],
["p1",2,"op","chess_char_1_20_a",1,null,2857.4,1,1,0,0,0,0,0,0],
["p1",3,"op","chess_char_1_04_b",1,"uniequip_002_udflow",3541.94,1,4,2,11017,233,0,12,1],
["p1",4,"op","chess_char_1_08_b",1,"uniequip_002_texas",0,0,7,1,6914,3473,0,2,2],
["p1",5,"op","chess_char_1_18_a",1,null,0,0,60,2,4846,7028,450,9,0],
["p1",3,"op","chess_char_1_04_b",1,"uniequip_002_udflow",3541.94,1,4,3,6102,233,0,9,1],
["p1",4,"op","chess_char_1_08_b",1,"uniequip_002_texas",0,0,7,0,10101,3473,0,5,2],
["p1",5,"op","chess_char_1_18_a",1,null,0,0,60,1,2095,6778,200,4,0],
["p1",6,"op","chess_char_1_19_a",1,null,0,0,57,0,6210,3853,0,9,1],
["p1",7,"op","chess_char_1_17_a",1,null,0,0,5,0,0,1481,0,0,0],
["p1",8,"op","chess_char_1_01_b",1,"uniequip_002_inside",0,0,62,2,44001,3695,0,46,2],
["p1",9,"op","chess_char_1_03_b",1,"uniequip_002_leizi",0,0,6,6,29303,1808,0,16,1],
["p1",10,"op","chess_char_1_06_b",1,"uniequip_002_vendla",0,0,61,4,22628,5321,1677,25,2],
["p1",11,"op","chess_char_1_07_b",0,"uniequip_002_prove",0,0,58,4,34348,5955,0,25,0],
["p1",12,"op","chess_char_1_09_b",1,"uniequip_002_caper",0,0,2,7,50224,2880,0,40,1]
["p1",12,"op","chess_char_1_09_b",1,"uniequip_002_caper",0,0,2,8,54862,2880,0,42,1]
],
"enemies": {
"enemy_1000_gopro_2": [1,1,0,0,2938],
@@ -105,23 +105,23 @@
"enemy_10112_ymgds": [1,1,0,0,8640],
"enemy_1019_jshoot": [9,3,5,14425,12328],
"enemy_1040_bombd": [1,1,0,0,6912],
"enemy_1043_zomsbr": [18,16,2,590,82324],
"enemy_1043_zomsbr": [18,16,2,389,81941],
"enemy_1116_liprr": [1,1,0,0,9504],
"enemy_1168_dumage_2": [1,1,0,2685,11232],
"enemy_1199_sfjin": [1,1,0,0,11232],
"enemy_1200_msfjin": [1,0,1,0,14],
"enemy_1234_dsubrl": [1,1,0,2081,17280],
"enemy_1234_dsubrl": [1,1,0,2049,17280],
"enemy_1288_duskls_2": [1,0,1,0,10873],
"enemy_1299_ymkilr": [3,1,2,4574,14688],
"enemy_1381_winman_2": [1,1,0,0,13478],
"enemy_1501_demonk": [1,0,0,7637,5549],
"enemy_2005_axetro": [1,0,0,5090,1565],
"enemy_9011_acrefr": [1,0,0,0,2338]
"enemy_1501_demonk": [1,0,0,7620,6090],
"enemy_2005_axetro": [1,0,0,5090,2107],
"enemy_9011_acrefr": [1,0,0,0,1796]
},
"hooks": [1,62,3300,346,346,392,404,3399,45,56,11,16,31,7389,39,11,44,11,1,46,0,0,0],
"events": {"atk":364,"bounty":4,"deploy":18,"die":45,"dmg":404,"fx":47,"heal":16,"leak":11,"skill":22,"spawn":56,"status":73},
"fx": {"aoe":4,"crit":20,"displace":9,"dp":2,"ember":1,"pulse":7,"revive":1,"summon":1,"taunt":2},
"snaps": "8776586b 475e50d7 071c9999 3f2ee9c1 208fe368 329d3182 c7a2efc2 2eeffe50 dacdc0a6 c5292015 fe2e0910"
"hooks": [1,62,3300,341,341,383,395,3119,45,56,11,16,31,7390,31,10,44,11,1,46,0,0,0],
"events": {"atk":359,"bounty":4,"deploy":18,"die":45,"dmg":395,"fx":48,"heal":11,"leak":11,"skill":22,"spawn":56,"status":70},
"fx": {"aoe":4,"crit":21,"displace":9,"dp":2,"ember":1,"pulse":7,"revive":1,"summon":1,"taunt":2},
"snaps": "8776586b 475e50d7 071c9999 3f2ee9c1 ce8ea3d6 8deb7035 325c7285 cb230d4d 41ede204 5a0ac937 0e02c7e0"
},
"roster-003": {
"about": "pass 0 band 2: chess_char_1_10_b chess_char_1_12_b chess_char_1_20_b chess_char_1_18_b chess_char_1_19_b chess_char_1_13_b chess_char_1_14_b chess_char_1_17_b chess_char_2_01_a chess_char_2_02_a chess_char_2_04_a chess_char_2_05_a token_10000_silent_healrb",
@@ -1029,40 +1029,40 @@
"time": 230,
"ticks": 6900,
"reason": "timeout",
"killed": 72,
"killed": 71,
"total": 126,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 500,
"rngDraws": 498,
"errors": {"count":0,"kinds":[]},
"players": {
"p1": {
"killed": 72,
"killed": 71,
"total": 126,
"perfect": false,
"leaks": 54,
"leaks": 55,
"leaksUncounted": 0,
"coins": 6,
"dmg": 3354350,
"dmg": 3361010,
"bossDmg": 0,
"heal": 69117,
"heal": 65977,
"deaths": 11,
"layerGains": {"preciShip":2}
}
},
"units": [
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,154,12,318292,8290,476,78,4],
["p1",2,"op","chess_char_6_03_a",2,null,3649.5,1,149,2,113360,16953,4124,55,2],
["p1",3,"op","chess_char_6_06_a",2,null,2223,1,153,6,300871,9855,461,70,3],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",2738,1,131,3,170159,28198,6835,216,3],
["p1",5,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1382,1,10,0,108825,1182,705,38,4],
["p1",6,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",1629,1,84,0,229814,2332,285,113,3],
["p1",1,"op","chess_char_5_19_b",2,"uniequip_002_mlynar",3907,1,154,12,307773,8183,369,78,4],
["p1",2,"op","chess_char_6_03_a",2,null,3649.5,1,149,2,101623,13991,3710,50,2],
["p1",3,"op","chess_char_6_06_a",2,null,2223,1,153,6,301133,9855,461,70,3],
["p1",4,"op","chess_char_5_17_b",1,"uniequip_002_f12yin",2738,1,131,2,169426,28198,6759,214,3],
["p1",5,"op","chess_char_5_20_b",2,"uniequip_002_aglina",1382,1,10,0,113165,1182,705,41,5],
["p1",6,"op","chess_char_5_21_b",1,"uniequip_002_sntlla",1629,1,84,0,231177,2332,285,114,3],
["p1",7,"op","chess_char_5_22_b",1,"uniequip_002_nymph",1611,1,1,1,31212,1242,1242,13,5],
["p1",8,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",1610,1,3,0,0,3654,49533,73,4],
["p1",9,"op","chess_char_6_01_a",2,null,1158,1,111,21,389549,4548,175,70,3],
["p1",10,"op","chess_char_6_02_a",2,null,1687,1,7,24,1320770,6394,220,71,3],
["p1",11,"op","chess_char_6_04_a",2,null,1202,1,94,2,113596,10510,4682,0,3],
["p1",12,"op","chess_char_6_05_a",2,null,1215,1,58,0,257904,2559,379,70,4],
["p1",8,"op","chess_char_5_23_b",1,"uniequip_002_reckpr",1610,1,3,0,0,3654,46989,69,4],
["p1",9,"op","chess_char_6_01_a",2,null,1158,1,111,20,399102,4548,175,70,3],
["p1",10,"op","chess_char_6_02_a",2,null,1687,1,7,25,1334116,6394,220,71,3],
["p1",11,"op","chess_char_6_04_a",2,null,1202,1,94,2,114260,10510,4682,0,3],
["p1",12,"op","chess_char_6_05_a",2,null,1215,1,58,0,258022,2559,379,70,4],
["p1",13,"token","token_10017_skadi2_dedant",null,null,100,0,13,0,0,0,0,0,null],
["p1","~1","token","token_10017_skadi2_dedant",null,null,100,0,60,0,0,0,0,0,null],
["p1","~2","token","token_10017_skadi2_dedant",null,null,100,0,103,0,0,0,0,0,null],
@@ -1072,10 +1072,10 @@
"enemies": {
"enemy_10045_parrot": [1,0,1,0,44502],
"enemy_10098_crhro": [1,1,0,8003,185752],
"enemy_10124_uashld_2": [12,0,11,30231,650685],
"enemy_10124_uashld_2": [12,0,11,30125,652842],
"enemy_1019_jshoot_2": [1,1,0,1514,16718],
"enemy_1043_zomsbr": [72,48,24,1022,905496],
"enemy_1061_zomshd": [30,16,14,14794,1383126],
"enemy_1043_zomsbr": [72,47,25,1006,906047],
"enemy_1061_zomshd": [30,16,14,11849,1388159],
"enemy_1072_dlancer": [1,1,0,2738,37150],
"enemy_1165_duhond": [1,1,0,0,17337],
"enemy_1196_msfyin_2": [1,1,0,0,3],
@@ -1086,10 +1086,10 @@
"enemy_2001_duckmi_2": [1,0,1,0,4539],
"enemy_9006_actoxi": [1,0,1,0,2981]
},
"hooks": [1,154,6900,901,970,7374,7596,77742,83,140,41,36,17,35956,986,38,126,53,1,97,1,11,3],
"events": {"atk":2084,"bounty":3,"deploy":28,"die":87,"dmg":7537,"fx":511,"heal":234,"layer":1,"leak":53,"skill":77,"spawn":143,"status":2244},
"fx": {"aoe":9,"blessing":1,"bombard":17,"bombardShell":17,"burst":11,"crit":42,"dodge":3,"explode":40,"firewall":2,"garrison":1,"iceSpike":90,"lightning":116,"lock":17,"lure":3,"revive":1,"snow":80,"soul":1,"sp":2,"storm":4,"talent":2,"telegraph":8,"tide":3,"wanted":37,"weightless":4},
"snaps": "ee17d257 2b5b60a7 bca4c44c a7aa2306 7f8469fb b466b374 2d189b42 c93b0983 53948389 334fd760 ba885b5c cafbf724 2e204610 95530b0b 9453d785 20cbd957 bc0f2a28 1125cf4b 5d7a7151 7d866008 629c6d52 ceb4961f aa0422ad"
"hooks": [1,154,6900,884,953,7381,7592,77582,82,140,42,37,17,36466,990,37,126,54,1,95,1,10,3],
"events": {"atk":2068,"bounty":3,"deploy":28,"die":86,"dmg":7533,"fx":512,"heal":225,"layer":1,"leak":54,"skill":79,"spawn":143,"status":2296},
"fx": {"aoe":9,"blessing":1,"bombard":17,"bombardShell":17,"burst":10,"crit":42,"dodge":3,"explode":40,"firewall":2,"garrison":1,"iceSpike":90,"lightning":116,"lock":17,"lure":3,"revive":1,"snow":81,"soul":1,"sp":2,"storm":4,"talent":2,"telegraph":8,"tide":3,"wanted":37,"weightless":5},
"snaps": "ee17d257 2b5b60a7 bca4c44c a7aa2306 7f8469fb b466b374 2d189b42 c93b0983 53948389 334fd760 ba885b5c cafbf724 2e204610 95530b0b 9453d785 7b4651cb 20697bb9 4ad6a768 86798eb2 779f0409 09912c24 ac014067 7729604f"
},
"roster-017": {
"about": "pass 0 band 6: chess_char_6_15_a chess_char_6_19_a chess_char_6_07_a chess_char_6_17_a chess_char_6_08_a chess_char_6_09_a chess_char_6_11_a chess_char_6_12_a chess_char_6_13_a chess_char_6_14_a chess_char_6_16_a chess_char_6_18_a",
@@ -1653,24 +1653,24 @@
"time": 140,
"ticks": 4200,
"reason": "timeout",
"killed": 18,
"killed": 15,
"total": 73,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 157,
"rngDraws": 159,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":18,"total":73,"perfect":false,"leaks":55,"leaksUncounted":0,"coins":6,"dmg":178948,"bossDmg":0,"heal":1327,"deaths":18,"layerGains":{}}},
"players": {"p1":{"killed":15,"total":73,"perfect":false,"leaks":58,"leaksUncounted":0,"coins":6,"dmg":164277,"bossDmg":0,"heal":1769,"deaths":18,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_3_12_a",0,null,0,0,97,1,6989,5110,1327,15,3],
["p1",2,"op","chess_char_3_16_a",0,null,0,0,6,1,2689,2173,0,10,1],
["p1",3,"op","chess_char_3_18_a",0,null,0,0,94,1,6557,2962,0,4,3],
["p1",4,"op","chess_char_3_08_a",0,null,0,0,4,4,42472,1594,0,8,1],
["p1",5,"op","chess_char_3_09_a",0,null,1267,1,99,2,13749,1267,0,21,3],
["p1",1,"op","chess_char_3_12_a",0,null,0,0,97,2,7760,5552,1769,19,4],
["p1",2,"op","chess_char_3_16_a",0,null,0,0,6,0,2668,2173,0,10,1],
["p1",3,"op","chess_char_3_18_a",0,null,0,0,94,1,4659,2962,0,4,3],
["p1",4,"op","chess_char_3_08_a",0,null,0,0,4,3,28698,1594,0,8,1],
["p1",5,"op","chess_char_3_09_a",0,null,1267,1,99,1,13514,1267,0,21,3],
["p1",6,"op","chess_char_3_10_a",0,null,0,0,86,1,24232,3300,0,15,3],
["p1",7,"op","chess_char_3_11_a",0,null,0,0,7,1,10753,1316,0,7,1],
["p1",8,"op","chess_char_3_13_a",0,null,0,0,10,0,4775,4277,0,25,1],
["p1",7,"op","chess_char_3_11_a",0,null,0,0,7,1,11464,1316,0,7,1],
["p1",8,"op","chess_char_3_13_a",0,null,0,0,10,0,4551,4277,0,25,1],
["p1",9,"op","chess_char_3_14_a",0,null,0,0,75,0,5911,2502,0,7,0],
["p1",10,"op","chess_char_3_17_a",0,null,284.9,1,93,3,37818,4207,0,51,10],
["p1",10,"op","chess_char_3_17_a",0,null,611.75,1,93,3,37818,3880,0,51,10],
["p1",11,"op","chess_char_3_19_a",0,null,0,0,79,1,15924,2878,0,29,0],
["p1",12,"op","chess_char_3_20_a",0,null,0,0,96,0,2200,2684,0,15,0],
["p1",13,"token","token_10028_vigil_wolf",null,null,51.51,0,15,1,3733,828,0,6,null],
@@ -1680,23 +1680,23 @@
["p1","~1","token","token_10028_vigil_wolf",null,null,0,0,80,0,1145,1579,0,4,null]
],
"enemies": {
"enemy_10042_prtrop": [12,0,12,5980,21672],
"enemy_10042_prtrop_2": [12,0,10,4710,15756],
"enemy_10043_sailor": [39,11,28,18128,163415],
"enemy_10042_prtrop": [12,0,12,7318,22803],
"enemy_10042_prtrop_2": [12,0,10,4433,15756],
"enemy_10043_sailor": [39,8,31,18093,152461],
"enemy_1005_yokai_2": [1,1,0,68,2678],
"enemy_10156_mncrer": [1,1,0,329,6912],
"enemy_1116_liprr_2": [1,1,0,1326,15356],
"enemy_1195_sfyin_2": [1,1,0,441,5357],
"enemy_1116_liprr_2": [1,1,0,393,12960],
"enemy_1195_sfyin_2": [1,1,0,294,5357],
"enemy_1196_msfyin_2": [2,2,0,0,6],
"enemy_1251_lysyta_2": [1,1,0,623,7925],
"enemy_1355_mrfly_2": [1,0,1,0,5568],
"enemy_1251_lysyta_2": [1,1,0,792,7731],
"enemy_1355_mrfly_2": [1,0,1,0,4464],
"enemy_1513_dekght_2": [1,0,1,3473,1470],
"enemy_9010_acpupp": [1,0,1,0,1540]
},
"hooks": [1,98,4200,342,342,1398,1472,9,37,91,26,26,0,8063,24,39,73,53,1,42,0,0,0],
"events": {"atk":418,"bounty":3,"deploy":22,"die":38,"dmg":1471,"fx":19,"heal":9,"leak":53,"skill":52,"spawn":90,"status":54},
"fx": {"dp":3,"explode":3,"liberate":1,"palsy":1,"revive":4,"shield":1,"sp":1,"strike":1,"summon":2,"telegraph":2},
"snaps": "b8ad25ab 03f51213 d7dcd813 5906dc4f 89b1c824 3e67ab1e f003cf8b dc2caccb 6a54c87b 77160756 042f6532 9bdc15a6 3da4b3fe 5314774a"
"hooks": [1,98,4200,350,350,1399,1458,9,34,91,27,27,0,8299,26,36,73,56,1,38,0,0,0],
"events": {"atk":410,"bounty":3,"deploy":22,"die":35,"dmg":1457,"fx":19,"heal":9,"leak":56,"skill":54,"spawn":90,"status":52},
"fx": {"dp":3,"explode":3,"palsy":1,"revive":4,"shield":1,"sp":2,"strike":1,"summon":2,"telegraph":2},
"snaps": "b8ad25ab 03f51213 f84a4bf7 9a29353d 19f6d9a9 5330fd8a f6dda9d3 43873b05 57a77a2a 94494c3a ade46bcb e1b4f57e 436600a0 c60c5a58"
},
"roster-027": {
"about": "pass 1 band 4: chess_char_3_06_b chess_char_3_12_b chess_char_3_02_b chess_char_3_03_b chess_char_3_04_b chess_char_3_05_b chess_char_3_21_a chess_char_3_01_b chess_char_3_08_b chess_char_3_09_b chess_char_3_10_b chess_char_3_11_b",
@@ -1717,39 +1717,39 @@
"rngDraws": 136,
"errors": {"count":0,"kinds":[]},
"players": {
"p1": {"killed":27,"total":53,"perfect":false,"leaks":26,"leaksUncounted":0,"coins":4,"dmg":321187,"bossDmg":0,"heal":17637,"deaths":10,"layerGains":{"raidShip":18}}
"p1": {"killed":27,"total":53,"perfect":false,"leaks":26,"leaksUncounted":0,"coins":4,"dmg":369449,"bossDmg":0,"heal":17637,"deaths":9,"layerGains":{"raidShip":18}}
},
"units": [
["p1",1,"op","chess_char_3_06_b",0,"none",0,0,2,0,1546,6162,0,9,1],
["p1",2,"op","chess_char_3_12_b",0,"uniequip_003_blemsh",0,0,14,5,32514,17789,13628,53,23],
["p1",3,"op","chess_char_3_02_b",0,"none",0,0,6,0,15263,2291,0,38,12],
["p1",4,"op","chess_char_3_03_b",0,"none",0,0,8,0,3645,1778,0,35,1],
["p1",3,"op","chess_char_3_02_b",0,"none",0,0,6,0,14882,2291,0,37,12],
["p1",4,"op","chess_char_3_03_b",0,"none",0,0,8,0,3677,1778,0,34,1],
["p1",5,"op","chess_char_3_04_b",0,"uniequip_003_swire2",0,0,59,4,48389,6778,4009,66,0],
["p1",6,"op","chess_char_3_05_b",0,"uniequip_003_skadi",0,0,12,2,26200,12108,0,25,1],
["p1",7,"op","chess_char_3_21_a",0,null,759.08,1,10,0,8795,605,0,35,14],
["p1",8,"op","chess_char_3_01_b",0,"uniequip_003_angel",211.23,1,11,1,38052,1505,0,75,32],
["p1",9,"op","chess_char_3_08_b",0,"none",0,0,1,4,33840,3248,0,10,2],
["p1",10,"op","chess_char_3_09_b",0,"none",0,0,3,2,11671,1534,0,14,4],
["p1",11,"op","chess_char_3_10_b",0,"none",0,0,5,2,49060,2120,0,23,7],
["p1",12,"op","chess_char_3_11_b",0,"none",0,0,7,6,52214,1610,0,19,10]
["p1",9,"op","chess_char_3_08_b",0,"none",523.13,1,1,3,80456,2725,0,23,4],
["p1",10,"op","chess_char_3_09_b",0,"none",0,0,3,3,11118,1534,0,14,4],
["p1",11,"op","chess_char_3_10_b",0,"none",0,0,5,2,50229,2120,0,23,7],
["p1",12,"op","chess_char_3_11_b",0,"none",0,0,7,6,53591,1610,0,19,10]
],
"enemies": {
"enemy_1000_gopro_2": [1,1,0,11,1836],
"enemy_10087_hlchgr": [1,1,0,105,6480],
"enemy_1042_frostd": [1,1,0,0,7020],
"enemy_1165_duhond": [1,1,0,76,3024],
"enemy_1203_sfhu_2": [1,0,1,7943,2437],
"enemy_1267_nhpbr_2": [24,14,8,11740,97532],
"enemy_1270_nhstlk_2": [9,4,5,10826,94005],
"enemy_1283_sgkill_2": [1,0,1,10291,7305],
"enemy_1425_lrcmra": [1,0,1,1414,13093],
"enemy_2008_flking": [1,0,1,8107,3573],
"enemy_9006_actoxi": [12,5,5,5143,115747]
"enemy_1203_sfhu_2": [1,0,1,7943,2116],
"enemy_1267_nhpbr_2": [24,14,8,11693,116615],
"enemy_1270_nhstlk_2": [9,4,5,10813,102658],
"enemy_1283_sgkill_2": [1,0,1,10377,7305],
"enemy_1425_lrcmra": [1,0,1,1414,11658],
"enemy_2008_flking": [1,0,1,7628,3574],
"enemy_9006_actoxi": [12,5,5,5143,137719]
},
"hooks": [1,67,5100,531,531,1890,1890,30,37,61,107,109,0,6763,40,30,53,22,1,39,3,0,0],
"events": {"atk":703,"bounty":2,"deploy":14,"die":39,"dmg":1818,"fx":107,"heal":30,"layer":3,"leak":22,"skill":214,"spawn":65,"status":187},
"hooks": [1,67,5100,542,542,1917,1917,30,36,60,109,110,0,7620,40,31,53,22,1,38,3,0,0],
"events": {"atk":737,"bounty":2,"deploy":14,"die":38,"dmg":1846,"fx":107,"heal":30,"layer":3,"leak":22,"skill":217,"spawn":65,"status":185},
"fx": {"blink":1,"buff":1,"coin":18,"explode":26,"garrison":3,"revive":2,"shield":19,"shieldBreak":1,"strike":10,"volley":7,"zone":19},
"snaps": "757da7ba 23c3e301 44393780 f617c160 eeedb2b3 6f6317df 3ad26b55 5bd556aa 9c8c490d 4f3f479d 5a8c9a94 a5d5a70b d2bb0c6d 6cd3e449 f56e1feb c875393e 9def5afe"
"snaps": "757da7ba 23c3e301 44393780 5d33fca3 778ce26f 3e05a037 632c144a 3ebbae7b 6b441959 3eb8ce65 aea6bfc5 ac090656 6255d971 7ca2ea90 891023ba 61b88830 61ed7aee"
},
"roster-028": {
"about": "pass 1 band 4: chess_char_3_16_b chess_char_4_01_a chess_char_3_18_b chess_char_4_04_a chess_char_3_13_b chess_char_3_14_b chess_char_3_17_b chess_char_3_19_b chess_char_3_20_b chess_char_3_21_b chess_char_4_02_a chess_char_4_06_a token_10028_vigil_wolf",
@@ -2526,46 +2526,46 @@
"time": 190,
"ticks": 5700,
"reason": "timeout",
"killed": 45,
"killed": 40,
"total": 47,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 71,
"rngDraws": 81,
"errors": {"count":0,"kinds":[]},
"players": {
"p1": {"killed":45,"total":47,"perfect":false,"leaks":2,"leaksUncounted":0,"coins":8,"dmg":541358,"bossDmg":0,"heal":28681,"deaths":8,"layerGains":{"visiShip":4}}
"p1": {"killed":40,"total":47,"perfect":false,"leaks":7,"leaksUncounted":0,"coins":8,"dmg":505596,"bossDmg":0,"heal":35330,"deaths":6,"layerGains":{"visiShip":8}}
},
"units": [
["p1",1,"op","chess_char_4_23_a",1,null,0,0,63,0,20498,4358,0,46,1],
["p1",2,"op","chess_char_4_01_b",1,"none",0,0,9,0,9683,4991,0,103,2],
["p1",3,"op","chess_char_4_19_a",1,null,0,0,65,0,793,5211,0,25,2],
["p1",4,"op","chess_char_4_22_a",1,null,2022,1,7,0,2026,3449,665,60,1],
["p1",5,"op","chess_char_4_12_b",1,"none",4562.3,1,11,1,25388,19969,14035,79,5],
["p1",6,"op","chess_char_4_04_b",2,"uniequip_002_ines",2149,1,14,17,161270,3942,0,151,0],
["p1",7,"op","chess_char_4_07_b",2,"none",0,0,52,1,31114,4466,0,47,2],
["p1",8,"op","chess_char_4_09_b",2,"uniequip_004_mizuki",1756,1,1,1,11414,790,0,4,2],
["p1",9,"op","chess_char_4_20_a",1,null,1217,1,2,2,33467,0,0,78,3],
["p1",10,"op","chess_char_4_24_a",2,null,1726,1,3,15,193080,0,0,40,4],
["p1",11,"op","chess_char_4_25_a",1,null,1221,1,4,5,27266,0,867,0,3],
["p1",12,"op","chess_char_4_02_b",1,"none",2966.25,1,5,3,25359,0,0,9,2],
["p1","~1","token","char_613_acmedc",null,null,1314,1,13,0,0,0,13114,38,2]
["p1",1,"op","chess_char_4_23_a",1,null,0,0,59,0,14296,4358,0,37,1],
["p1",2,"op","chess_char_4_01_b",1,"none",2261.07,1,9,1,12965,2729,0,125,2],
["p1",3,"op","chess_char_4_19_a",1,null,847.88,1,65,0,1103,4894,0,25,2],
["p1",4,"op","chess_char_4_22_a",1,null,2022,1,7,0,2567,2035,1080,66,1],
["p1",5,"op","chess_char_4_12_b",1,"none",4562.3,1,11,1,35031,22559,14453,82,5],
["p1",6,"op","chess_char_4_04_b",2,"uniequip_002_ines",2149,1,14,7,116578,7728,0,130,0],
["p1",7,"op","chess_char_4_07_b",2,"none",0,0,52,2,32885,4466,0,49,2],
["p1",8,"op","chess_char_4_09_b",2,"uniequip_004_mizuki",1756,1,1,1,12149,527,0,5,1],
["p1",9,"op","chess_char_4_20_a",1,null,1217,1,2,3,31008,0,0,78,3],
["p1",10,"op","chess_char_4_24_a",2,null,1726,1,3,17,187142,0,0,41,4],
["p1",11,"op","chess_char_4_25_a",1,null,1221,1,4,5,29495,0,2741,0,3],
["p1",12,"op","chess_char_4_02_b",1,"none",2966.25,1,5,3,30378,1420,0,11,2],
["p1","~1","token","char_613_acmedc",null,null,1314,1,13,0,0,0,17056,42,2]
],
"enemies": {
"enemy_1001_bigbo": [1,1,0,2989,17600],
"enemy_1001_bigbo": [1,1,0,2149,17600],
"enemy_10097_crshd": [1,1,0,0,8000],
"enemy_1045_hammer": [1,1,0,532,8000],
"enemy_1045_hammer_2": [6,5,0,18084,80871],
"enemy_1061_zomshd": [33,32,0,18697,398075],
"enemy_1045_hammer": [1,1,0,307,8000],
"enemy_1045_hammer_2": [6,5,0,18440,80250],
"enemy_1061_zomshd": [33,27,1,25211,362935],
"enemy_1166_dusbr": [1,1,0,0,2400],
"enemy_1204_msfhu_2": [1,1,0,0,6],
"enemy_1288_duskls_2": [1,1,0,162,4805],
"enemy_1427_lrnazg": [1,1,0,1121,12000],
"enemy_2010_csdcr": [1,1,0,4800,9600]
"enemy_2010_csdcr": [1,1,0,2800,9600]
},
"hooks": [1,65,5700,1041,1041,1305,1328,24816,53,54,29,24,51,27317,95,66,47,0,1,56,1,0,4],
"events": {"atk":1225,"bounty":4,"deploy":18,"die":54,"dmg":1300,"fx":182,"heal":80,"layer":1,"skill":52,"spawn":60,"status":312},
"fx": {"aoe":2,"beam":1,"buff":2,"devour":4,"displace":9,"dodge":4,"ember":1,"garrison":1,"garrisonGrant":1,"link":3,"mote":95,"overload":3,"reweave":3,"riposte":1,"ripple":2,"sentry":2,"shadowWeave":36,"shield":3,"snow":1,"summon":1,"wake":5,"zone":2},
"snaps": "87882f34 f1ef51b0 5ea73197 12103e8c 818a5853 956bc926 be6e41f1 a6a97d2e cc564966 60951dea 6abcabef 03a15c0a 423ff378 86ed9d2c 418af211 a4b6d673 219708b9 f4db72c1 4a7f5c48"
"hooks": [1,65,5700,1112,1112,1391,1406,25126,46,48,28,23,74,26265,88,62,47,1,1,47,2,0,5],
"events": {"atk":1301,"bounty":4,"deploy":18,"die":47,"dmg":1362,"fx":173,"heal":138,"layer":2,"leak":1,"skill":50,"spawn":60,"status":296},
"fx": {"aoe":2,"beam":1,"buff":2,"devour":4,"displace":9,"dodge":5,"ember":1,"garrison":2,"garrisonGrant":1,"link":3,"mote":98,"overload":3,"reweave":3,"riposte":1,"ripple":1,"sentry":2,"shadowWeave":25,"shield":1,"snow":1,"summon":1,"wake":5,"zone":2},
"snaps": "87882f34 f1ef51b0 5ea73197 12103e8c 818a5853 3e0a8b9b d26d3b6f d825f5c7 4ebd0c03 1c2642fe 57081f03 a2c42970 e8c109bb 4c501122 d3565c79 48a49749 f630ef04 87c6d1fa 5ce6a9f2"
},
"roster-042": {
"about": "pass 2 band 5: chess_char_4_17_b chess_char_4_18_b chess_char_4_23_b chess_char_4_19_b chess_char_4_22_b chess_char_5_01_a chess_char_4_16_b chess_char_4_13_b chess_char_4_20_b chess_char_4_24_b chess_char_4_25_b chess_char_5_02_a",
@@ -2576,14 +2576,14 @@
"round": 10,
"seed": 3609857679,
"waveId": "act1autochess_h03",
"time": 187.37,
"ticks": 5621,
"time": 161.57,
"ticks": 4847,
"reason": "cleared",
"killed": 59,
"total": 59,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 76,
"rngDraws": 64,
"errors": {"count":0,"kinds":[]},
"players": {
"p1": {
@@ -2593,26 +2593,26 @@
"leaks": 0,
"leaksUncounted": 0,
"coins": 8,
"dmg": 704717,
"dmg": 704844,
"bossDmg": 0,
"heal": 28297,
"deaths": 6,
"heal": 28019,
"deaths": 3,
"layerGains": {"preciShip":80,"sargonShip":108}
}
},
"units": [
["p1",1,"op","chess_char_4_17_b",2,"none",4566.9,1,3,0,0,0,0,0,0],
["p1",2,"op","chess_char_4_18_b",2,"none",6783,1,5,0,7312,0,0,3,1],
["p1",3,"op","chess_char_4_23_b",1,"uniequip_004_gvial2",3667.3,1,7,1,23562,289,0,15,2],
["p1",4,"op","chess_char_4_19_b",1,"none",2525.9,1,10,1,16758,1484,0,12,6],
["p1",5,"op","chess_char_4_22_b",1,"uniequip_002_svrash",3311.96,1,11,5,47290,11132,7203,57,1],
["p1",6,"op","chess_char_5_01_a",2,null,0,0,77,3,54310,12701,5030,73,2],
["p1",7,"op","chess_char_4_16_b",1,"none",1922.7,1,78,7,96260,7396,1628,113,0],
["p1",8,"op","chess_char_4_13_b",2,"uniequip_004_gnosis",2553.2,1,8,5,31973,0,0,42,3],
["p1",9,"op","chess_char_4_20_b",1,"none",1844.7,1,9,24,149465,1023,0,72,3],
["p1",10,"op","chess_char_4_24_b",2,"none",2571.4,1,12,4,142472,7106,1265,37,4],
["p1",11,"op","chess_char_4_25_b",1,"uniequip_002_cetsyr",2172.3,1,4,0,19289,0,922,0,3],
["p1",12,"op","chess_char_5_02_a",1,null,1570.4,1,6,8,116026,633,12249,30,5],
["p1",1,"op","chess_char_4_17_b",2,"none",4566.9,1,3,1,1288,0,0,2,0],
["p1",2,"op","chess_char_4_18_b",2,"none",6783,1,5,0,7191,0,0,3,1],
["p1",3,"op","chess_char_4_23_b",1,"uniequip_004_gvial2",3667.3,1,7,1,7785,649,0,3,2],
["p1",4,"op","chess_char_4_19_b",1,"none",2525.9,1,10,1,8997,1531,0,0,4],
["p1",5,"op","chess_char_4_22_b",1,"uniequip_002_svrash",3339.7,1,11,3,40105,9401,4764,46,1],
["p1",6,"op","chess_char_5_01_a",2,null,1722.46,1,40,4,78323,9642,6250,66,1],
["p1",7,"op","chess_char_4_16_b",1,"none",507.1,1,71,7,97453,7002,1741,95,0],
["p1",8,"op","chess_char_4_13_b",2,"uniequip_004_gnosis",2553.2,1,8,4,31086,0,0,39,3],
["p1",9,"op","chess_char_4_20_b",1,"none",1844.7,1,9,21,131494,1023,0,64,3],
["p1",10,"op","chess_char_4_24_b",2,"none",2571.4,1,12,10,154430,6521,646,37,3],
["p1",11,"op","chess_char_4_25_b",1,"uniequip_002_cetsyr",2172.3,1,4,0,19289,0,1552,0,3],
["p1",12,"op","chess_char_5_02_a",1,null,1570.4,1,6,7,127404,903,13066,30,3],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null]
],
@@ -2620,19 +2620,19 @@
"enemy_10054_cjhot": [1,1,0,675,17280],
"enemy_10141_xdpeng_2": [1,1,0,19,11520],
"enemy_1112_emppnt_2": [1,1,0,0,18432],
"enemy_1183_mlasrt": [1,1,0,694,7488],
"enemy_1183_mlasrt": [1,1,0,573,7488],
"enemy_1249_lysdb_2": [1,1,0,0,6912],
"enemy_1267_nhpbr_2": [33,33,0,8379,209088],
"enemy_1270_nhstlk_2": [12,12,0,9679,221184],
"enemy_1272_nhtank_2": [6,6,0,10640,103680],
"enemy_1329_cbshld_2": [1,1,0,1316,14976],
"enemy_1267_nhpbr_2": [33,33,0,9577,209088],
"enemy_1270_nhstlk_2": [12,12,0,6539,221184],
"enemy_1272_nhtank_2": [6,6,0,7102,103680],
"enemy_1329_cbshld_2": [1,1,0,1824,14976],
"enemy_1512_mcmstr": [1,1,0,5044,92160],
"enemy_9008_acbunn": [1,1,0,1373,13824]
},
"hooks": [1,78,5621,580,580,1348,1362,1848,68,65,30,30,5,20173,2244,41,59,0,1,75,51,1,9],
"events": {"atk":686,"bounty":4,"deploy":17,"die":65,"dmg":1189,"fx":216,"heal":176,"layer":51,"skill":57,"spawn":73,"status":332},
"fx": {"aoe":6,"bombard":5,"bombardShell":5,"burst":1,"coldWind":3,"devour":4,"displace":2,"dodge":9,"explode":26,"extraAttack":12,"garrison":27,"garrisonGrant":1,"iceSpike":3,"link":3,"mote":42,"overload":2,"revive":1,"reweave":3,"riposte":1,"rockfall":1,"shieldBreak":2,"sleepGuard":5,"snow":1,"stone":1,"swordStorm":7,"telegraph":2,"zone":41},
"snaps": "df8e82b1 398be261 233cef48 1f5fb384 311354a9 c24bdec8 8377744e e3afac11 b689d92f e700afba d0b5af43 a951cda4 9910148c 426ede53 62f8e3cf 1e009531 a403986e 8914590b 5f99002b"
"hooks": [1,76,4847,498,498,1282,1296,1302,65,62,24,23,16,17319,1994,40,59,0,1,70,51,1,7],
"events": {"atk":626,"bounty":4,"deploy":15,"die":62,"dmg":1130,"fx":198,"heal":190,"layer":51,"skill":45,"spawn":73,"status":282},
"fx": {"aoe":4,"bombard":5,"bombardShell":5,"burst":1,"coldWind":3,"devour":3,"dodge":7,"explode":26,"extraAttack":15,"garrison":27,"garrisonGrant":1,"iceSpike":3,"link":3,"mote":34,"overload":2,"revive":1,"reweave":3,"rockfall":1,"shieldBreak":2,"sleepGuard":3,"snow":1,"stone":1,"swordStorm":6,"telegraph":2,"zone":39},
"snaps": "df8e82b1 ae59b91a b9e69aee 54684398 674617d0 34b43454 c92732bf 0e99eaf5 8765e347 0fd635f1 8c0e28af 894e7e4c 5c1b51a6 06c6f096 9f044d2f cdcf9624 280f77ba"
},
"roster-043": {
"about": "pass 2 band 5: chess_char_5_08_a chess_char_5_11_a chess_char_5_05_a chess_char_5_06_a chess_char_5_13_a chess_char_5_14_a chess_char_5_07_a chess_char_5_17_a chess_char_5_03_a chess_char_5_10_a chess_char_5_12_a chess_char_5_15_a",
@@ -2706,61 +2706,61 @@
"total": 119,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 109,
"rngDraws": 118,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":95,"total":119,"perfect":false,"leaks":24,"leaksUncounted":0,"coins":8,"dmg":3011163,"bossDmg":0,"heal":31467,"deaths":20,"layerGains":{}}},
"players": {"p1":{"killed":95,"total":119,"perfect":false,"leaks":24,"leaksUncounted":0,"coins":8,"dmg":3018146,"bossDmg":0,"heal":35937,"deaths":18,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_5_19_a",1,null,3241,1,169,2,24149,13260,622,14,3],
["p1",2,"op","chess_char_5_11_b",2,"none",0,0,167,2,15973,25963,24095,35,4],
["p1",3,"op","chess_char_5_19_b",1,"uniequip_002_mlynar",0,0,140,4,88930,12652,244,31,4],
["p1",4,"op","chess_char_5_13_b",2,"uniequip_004_ghost2",3412.8,1,9,4,154074,22473,455,28,2],
["p1",5,"op","chess_char_5_14_b",2,"none",1994,1,170,13,239458,15503,2873,68,5],
["p1",6,"op","chess_char_5_17_b",2,"none",2578,1,168,1,176662,12727,801,56,4],
["p1",7,"op","chess_char_5_20_a",1,null,1108,1,3,1,48492,1688,354,422,6],
["p1",8,"op","chess_char_5_22_a",2,null,1237,1,80,13,116200,5280,409,119,3],
["p1",9,"op","chess_char_5_12_b",2,"uniequip_004_dusk",1667,1,13,3,338982,0,0,61,2],
["p1",10,"op","chess_char_5_15_b",2,"uniequip_002_thorn2",1170,1,14,40,1339578,0,0,166,5],
["p1",11,"op","chess_char_5_20_b",1,"uniequip_004_aglina",1292,1,5,3,105170,1688,354,485,5],
["p1",12,"op","chess_char_5_22_b",2,"none",1511,1,11,8,352359,1913,384,170,4],
["p1",1,"op","chess_char_5_19_a",1,null,3241,1,170,6,41920,10068,671,40,4],
["p1",2,"op","chess_char_5_11_b",2,"none",2158.57,1,166,2,8769,26194,28550,47,4],
["p1",3,"op","chess_char_5_19_b",1,"uniequip_002_mlynar",3907,1,169,5,79077,11906,185,30,3],
["p1",4,"op","chess_char_5_13_b",2,"uniequip_004_ghost2",3412.8,1,9,9,173197,20999,313,26,2],
["p1",5,"op","chess_char_5_14_b",2,"none",1994,1,168,14,252711,17613,3099,77,5],
["p1",6,"op","chess_char_5_17_b",2,"none",2578,1,167,0,219089,14055,747,63,4],
["p1",7,"op","chess_char_5_20_a",1,null,1108,1,3,2,42682,1688,354,363,5],
["p1",8,"op","chess_char_5_22_a",2,null,1237,1,81,3,114426,5280,409,116,3],
["p1",9,"op","chess_char_5_12_b",2,"uniequip_004_dusk",1667,1,13,2,320533,0,0,60,2],
["p1",10,"op","chess_char_5_15_b",2,"uniequip_002_thorn2",1170,1,14,32,1282681,0,0,166,6],
["p1",11,"op","chess_char_5_20_b",1,"uniequip_004_aglina",1292,1,5,5,142575,1688,354,535,6],
["p1",12,"op","chess_char_5_22_b",2,"none",1511,1,11,11,327938,1913,384,160,3],
["-","~1","device","trap_1105_accrate",null,null,100,1,1,0,0,0,0,0,null],
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null],
["p1","~1","token","token_10015_dusk_drgn",null,null,0,0,32,0,478,2040,43,2,null],
["p1","~2","token","token_10015_dusk_drgn",null,null,0,0,34,0,1106,2108,111,4,null],
["p1","~3","token","token_10015_dusk_drgn",null,null,0,0,42,0,398,2049,52,2,null],
["p1","~4","token","token_10015_dusk_drgn",null,null,0,0,44,0,796,2073,76,4,null],
["p1","~5","token","token_10015_dusk_drgn",null,null,0,0,52,0,995,2129,132,5,null],
["p1","~6","token","token_10015_dusk_drgn",null,null,0,0,58,0,398,1997,0,2,null],
["p1","~7","token","token_10015_dusk_drgn",null,null,0,0,62,0,398,1997,0,2,null],
["p1","~8","token","token_10015_dusk_drgn",null,null,0,0,65,0,597,1997,0,3,null],
["p1","~9","token","token_10015_dusk_drgn",null,null,0,0,69,0,438,1997,0,2,null],
["p1","~10","token","token_10015_dusk_drgn",null,null,0,0,75,0,1473,2182,185,6,null],
["p1","~11","token","token_10015_dusk_drgn",null,null,0,0,141,0,398,2020,23,2,null],
["p1","~12","token","token_10015_dusk_drgn",null,null,0,0,146,0,199,1997,0,1,null],
["p1","~13","token","token_10015_dusk_drgn",null,null,0,0,149,0,398,2052,55,2,null],
["p1","~14","token","token_10015_dusk_drgn",null,null,0,0,152,0,876,2072,75,4,null],
["p1","~15","token","token_10015_dusk_drgn",null,null,0,0,155,0,199,2004,7,1,null],
["p1","~16","token","token_10015_dusk_drgn",null,null,0,0,158,0,398,2032,35,2,null],
["p1","~17","token","token_10015_dusk_drgn",null,null,0,0,160,0,597,2080,83,3,null],
["p1","~18","token","token_10015_dusk_drgn",null,null,0,0,163,1,556,1997,0,3,null],
["p1","~19","token","token_10015_dusk_drgn",null,null,0,0,165,0,438,1997,0,2,null]
["p1","~3","token","token_10015_dusk_drgn",null,null,0,0,42,0,465,2049,52,2,null],
["p1","~4","token","token_10015_dusk_drgn",null,null,0,0,44,0,1087,2073,76,4,null],
["p1","~5","token","token_10015_dusk_drgn",null,null,0,0,52,0,1192,2096,99,4,null],
["p1","~6","token","token_10015_dusk_drgn",null,null,0,0,57,0,884,1997,0,3,null],
["p1","~7","token","token_10015_dusk_drgn",null,null,0,0,60,1,309,1997,0,2,null],
["p1","~8","token","token_10015_dusk_drgn",null,null,0,0,63,0,199,1997,0,1,null],
["p1","~9","token","token_10015_dusk_drgn",null,null,0,0,66,0,597,1997,0,3,null],
["p1","~10","token","token_10015_dusk_drgn",null,null,0,0,70,0,398,1997,0,2,null],
["p1","~11","token","token_10015_dusk_drgn",null,null,0,0,76,0,398,2053,56,2,null],
["p1","~12","token","token_10015_dusk_drgn",null,null,0,0,85,0,1672,2201,204,7,null],
["p1","~13","token","token_10015_dusk_drgn",null,null,0,0,142,0,548,2040,43,2,null],
["p1","~14","token","token_10015_dusk_drgn",null,null,0,0,148,0,568,1997,0,2,null],
["p1","~15","token","token_10015_dusk_drgn",null,null,0,0,151,1,487,1997,0,2,null],
["p1","~16","token","token_10015_dusk_drgn",null,null,0,0,154,0,488,1997,0,2,null],
["p1","~17","token","token_10015_dusk_drgn",null,null,0,0,158,0,438,2024,27,2,null],
["p1","~18","token","token_10015_dusk_drgn",null,null,0,0,162,0,597,2082,85,3,null],
["p1","~19","token","token_10015_dusk_drgn",null,null,0,0,164,0,637,2072,75,3,null]
],
"enemies": {
"enemy_10042_prtrop_2": [1,1,0,1722,23888],
"enemy_1010_demon": [42,38,4,35898,908980],
"enemy_1010_demon": [42,39,3,34740,915010],
"enemy_10122_uacann_2": [1,1,0,20128,29860],
"enemy_1072_dlancer": [1,1,0,0,17916],
"enemy_1172_dugago_2": [1,0,1,0,3181],
"enemy_1172_dugago_2": [1,0,1,0,26334],
"enemy_1229_darmy": [1,1,0,0,12541],
"enemy_1325_cbgpro": [1,1,0,26,11347],
"enemy_1422_lrsldr_2": [45,42,3,9910,721419],
"enemy_1425_lrcmra_2": [24,9,14,81546,1218916],
"enemy_1502_crowns": [1,1,0,345,17916],
"enemy_2085_skzjxd": [1,0,1,0,80709]
"enemy_1325_cbgpro": [1,1,0,0,11347],
"enemy_1422_lrsldr_2": [45,44,1,7640,733059],
"enemy_1425_lrcmra_2": [24,6,16,84209,1218986],
"enemy_1502_crowns": [1,1,0,105,17916],
"enemy_2085_skzjxd": [1,0,1,0,46993]
},
"hooks": [1,170,6900,1907,1907,4938,4946,5521,134,157,47,46,0,25479,2706,128,119,23,1,139,0,0,2],
"events": {"atk":2326,"bounty":4,"deploy":49,"die":134,"dmg":4946,"fx":145,"heal":159,"leak":23,"skill":93,"spawn":152,"status":854},
"fx": {"blink":1,"crit":22,"displace":48,"dodge":2,"explode":5,"sp":10,"substitute":5,"summon":19,"swap":5,"teleport":8,"zone":20},
"snaps": "a39ea9a8 bfa57bde ec3fe789 c7d4ea14 9988c3e2 046a17f4 b4ddd38e 83f0c4f7 9f6c2929 0a8327df 47a2dd8d 53a15cd2 b2be7dcf 2354387f c0cfd00e b918b3d8 a922234d 3092e45a f843a4b4 cb2e92b1 caa33c46 e3465aed 912f73d5"
"hooks": [1,170,6900,1918,1918,4902,4909,5719,132,154,47,45,0,25779,2989,124,119,22,1,137,0,0,0],
"events": {"atk":2318,"bounty":4,"deploy":49,"die":132,"dmg":4909,"fx":157,"heal":184,"leak":22,"skill":92,"spawn":152,"status":994},
"fx": {"blink":1,"crit":32,"displace":50,"explode":5,"sp":11,"substitute":5,"summon":19,"swap":4,"teleport":7,"zone":23},
"snaps": "a39ea9a8 bfa57bde 89563252 8ba66818 998a211d 76b14513 de620c53 552a0e22 d75b8428 6c8176a4 0236875a e53ed4ed 7b8341a1 b6f98849 903b578d 1eafabb5 6a3bec05 50df365f f9cc0152 80b49859 38eb3ad9 89da21b3 f47d6380"
},
"roster-045": {
"about": "pass 2 band 6: chess_char_6_03_a chess_char_6_06_a chess_char_6_07_a chess_char_6_01_a chess_char_6_02_a chess_char_6_04_a chess_char_6_05_a chess_char_6_08_a chess_char_6_09_a chess_char_6_11_a chess_char_6_12_a chess_char_6_13_a token_10017_skadi2_dedant",
+18 -9
View File
@@ -7,6 +7,9 @@
// One more since 2026-10-04 (the owner's decision after GitHub issue #32 item 1, DESIGN §22.10): 余 S2 厚礼上宾 casts with an
// enemy on its own 技能范围 x-1 — SKILL_RANGE, customRangeGrid its range (his attack range is his own tile, so the basic
// strategy could not see an enemy he can pull); `rawRule` keeps TAKE_DAMAGE.
// And since 0.2.0 (the owner's decision of 2026-10-05): 深巡 S2's running range 3-2 strictly contains her 2-2, so the
// owner's ACTIVE_RANGE rule applies on top of her DEFAULT deviation — she casts with an enemy in the 3-2 (rule
// ACTIVE_RANGE, customRangeGrid the 3-2, rawRule still TAKE_DAMAGE; test/sim/feedback5-active-range.test.js).
//
// The battle check is real: the chess records of data/chess.json with their kits, the stage 战场#01(下半)
// (act2autochess_m01), a real enemy (萨卡兹枯朽前锋, melee, 0.8 tiles/s) walking the lane from the gate (9,10) to the
@@ -32,6 +35,8 @@ const DEVIATED = [
['chess_char_2_18_a', 'skcom_atk_up[3]'], // 灰毫 S1 攻击力强化·γ型
['chess_char_2_18_a', 'skchr_ashlok_2'], // 灰毫 S2 专注轰击
];
/** The deviated skill whose running range strictly contains the own one: ACTIVE_RANGE on top (0.2.0). */
const ACTIVE = new Set(['skchr_udflow_2']);
/** 余 S2 厚礼上宾: SKILL_RANGE on its own x-1 (DESIGN §22.10). */
const SKILL_RANGE_DEVIATED = [['chess_char_6_03_a', 'skchr_yu_2']];
const both = (normalId) => [normalId, CHESS[normalId].goldenId];
@@ -70,16 +75,17 @@ function firstCast(chessId, skillId, { spawnAt = 0, seconds = 40 } = {}) {
return out;
}
test('data: the six deviated 重装 skills are DEFAULT and 余 S2 is SKILL_RANGE on its x-1, on the normal and the elite record, rawRule the official TAKE_DAMAGE', () => {
test('data: the six deviated 重装 skills are DEFAULT (深巡 S2: ACTIVE_RANGE on its 3-2) and 余 S2 is SKILL_RANGE on its x-1, on the normal and the elite record, rawRule the official TAKE_DAMAGE', () => {
let n = 0;
for (const [normalId, skillId] of DEVIATED) {
for (const id of both(normalId)) {
const s = CHESS[id].skills.find((x) => x.skillId === skillId);
assert.ok(s, `${id} ${skillId}`);
assert.equal(CHESS[id].profession, 'TANK');
assert.deepEqual(s.trigger, { rule: 'DEFAULT', rawRule: 'TAKE_DAMAGE', customRangeGrid: null }, `${id} ${skillId}`);
const want = ACTIVE.has(skillId) ? { rule: 'ACTIVE_RANGE', rawRule: 'TAKE_DAMAGE', customRangeGrid: s.rangeGrid } : { rule: 'DEFAULT', rawRule: 'TAKE_DAMAGE', customRangeGrid: null };
assert.deepEqual(s.trigger, want, `${id} ${skillId}`);
// the sim's loadout def carries the data rule
assert.equal(ds.getChess(id, { skillIndex: s.index }).skill.trigger.rule, 'DEFAULT', `${id} ${skillId} loadout def`);
assert.equal(ds.getChess(id, { skillIndex: s.index }).skill.trigger.rule, want.rule, `${id} ${skillId} loadout def`);
n++;
}
}
@@ -110,7 +116,7 @@ test('data: the six deviated 重装 skills are DEFAULT and 余 S2 is SKILL_RANGE
for (const c of others) assert.deepEqual(c.skills.find((s) => s.skillId === 'skcom_atk_up[3]').trigger, { rule: 'DEFAULT', rawRule: 'DEFAULT', customRangeGrid: null }, c.chessId);
});
test('PR #12\'s kit lines agree with the data: 深巡 / 雷蛇 S2 specs say DEFAULT, the other deviated skills read the data', async () => {
test('PR #12\'s kit line agrees with the data: 雷蛇 S2\'s spec says DEFAULT, the other deviated skills (深巡 S2 since 0.2.0) read the data', async () => {
const { KITS } = await import('../../server/sim/content/index.js');
for (const [normalId, skillId] of [...DEVIATED, ...SKILL_RANGE_DEVIATED]) {
for (const id of both(normalId)) {
@@ -121,21 +127,24 @@ test('PR #12\'s kit lines agree with the data: 深巡 / 雷蛇 S2 specs say DEFA
const spec = s.isDefault ? kit?.skill : kit?.skills?.[skillId];
const specRule = typeof spec?.trigger === 'string' ? spec.trigger : spec?.trigger?.rule;
assert.ok(specRule == null || specRule === s.trigger.rule, `${id} ${skillId}: kit ${specRule} vs data ${s.trigger.rule}`);
if (skillId === 'skchr_udflow_2' || skillId === 'skchr_liskam_2') assert.equal(specRule, 'DEFAULT', `${id} ${skillId}: PR #12's trigger line`);
if (skillId === 'skchr_liskam_2') assert.equal(specRule, 'DEFAULT', `${id} ${skillId}: PR #12's trigger line`);
if (skillId === 'skchr_udflow_2') assert.equal(specRule, undefined, `${id} ${skillId}: reads the data's ACTIVE_RANGE (PR #12's line would keep the 2-2)`);
}
}
});
test('real battle: each deviated skill casts with an enemy in range before anything hits the operator (normal + elite)', () => {
test('real battle: each deviated skill casts with an enemy in range before anything hits the operator (normal + elite; 深巡 S2 in its 3-2)', () => {
for (const [normalId, skillId] of DEVIATED) {
for (const id of both(normalId)) {
const r = firstCast(id, skillId, { spawnAt: 3 });
const where = `${id} ${skillId}: ${JSON.stringify(r)}`;
assert.equal(r.rule, 'DEFAULT', where);
const rule = ACTIVE.has(skillId) ? 'ACTIVE_RANGE' : 'DEFAULT';
assert.equal(r.rule, rule, where);
assert.ok(r.cast != null, `never cast — ${where}`);
assert.ok(r.cast >= 3, `no cast before an enemy is on the field — ${where}`);
assert.equal(r.reason, 'DEFAULT', where);
assert.ok(r.enemyInRange, `an enemy on its initial range at the cast — ${where}`);
assert.equal(r.reason, rule, where);
if (ACTIVE.has(skillId)) assert.ok(r.enemyInSkillRange && !r.enemyInRange, `an enemy on the 3-2, not yet on the 2-2, at the cast — ${where}`);
else assert.ok(r.enemyInRange, `an enemy on its initial range at the cast — ${where}`);
assert.ok(r.hurt == null || r.hurt > r.cast, `cast before the first hit — ${where}`);
}
}
+6 -4
View File
@@ -40,14 +40,16 @@ const laneDirs = (st, r, c) => DIRS.filter((d) => [[0, 1], [0, 2]].some(([dr, dc
/**
* One battle: the operator alone on (r, c) facing `dir` against a real round template. Returns its attacks, the ticks a
* targetable enemy stood on its range tiles, the longest wait for an attack while one did and it could act (seconds
* beyond its attack interval) and the ticks it blocked anything.
* beyond its attack interval — the longer of the interval when the wait began and now: her S2 casts on its 3-2 between
* two attacks since 0.2.0, the owner's ACTIVE_RANGE rule, and its ASPD shortens the interval while the cooldown the
* last attack set still runs) and the ticks it blocked anything.
*/
function watch(stageId, chessId, r, c, dir, { template = 'act1autochess_02', seconds = 45 } = {}) {
const h = makeBattle({ stageId, waveTemplate: template, units: [{ chessId, row: r, col: c, dir }], seed: 5 });
h.step(1);
const u = h.unit(chessId);
assert.ok(u && u.deployed && u.tileR === r && u.tileC === c, `${stageId} (${r},${c}) deployed`);
let attacks = 0, inRange = 0, blocked = 0, waitFrom = null, worst = 0;
let attacks = 0, inRange = 0, blocked = 0, waitFrom = null, waitIv = 0, worst = 0;
h.b.on('attack', (ctx) => { if (ctx.attacker === u) { attacks++; waitFrom = null; } });
for (let i = 0; i < seconds * 30 && !h.b.finished; i++) {
h.step(1);
@@ -58,8 +60,8 @@ function watch(stageId, chessId, r, c, dir, { template = 'act1autochess_02', sec
const target = h.b.enemies.some((e) => e.alive && e.deployed && canTargetEnemy(u, e, prof) && bodyInKeys(e, set));
if (!target) { waitFrom = null; continue; }
inRange++;
if (waitFrom == null) waitFrom = h.b.time;
worst = Math.max(worst, h.b.time - waitFrom - u.s.interval);
if (waitFrom == null) { waitFrom = h.b.time; waitIv = u.s.interval; }
worst = Math.max(worst, h.b.time - waitFrom - Math.max(waitIv, u.s.interval));
}
return { attacks, inRange, blocked, worst };
}
+26
View File
@@ -3,6 +3,9 @@
// as soon as an enemy (a heal skill: an injured ally) is inside that larger range — trigger ACTIVE_RANGE, resolved by
// tools/build-data.mjs resolveTrigger (customRangeGrid = the running range) and checked every tick by server/sim/skills.js.
// Community report: 「有的干员开技能后的攻击范围比平时攻击范围大,但是怪走到平时的攻击范围内才会开技能」.
// The owner's further decisions of the same day: the rule also replaces the SEARCH row ("在初始攻击范围内存在敌人时释放技能":
// 薄绿 S1, 蜜蜡 S1, 卡涅利安 S3, 玛恩纳 S2, 安洁莉娜 S3) and covers 深巡 S2 on top of its §21.29 DEFAULT (its 3-2 over her
// 2-2: test/sim/feedback1-tank-triggers.test.js).
import { test } from 'node:test';
import assert from 'node:assert/strict';
@@ -91,3 +94,26 @@ test('real data: 莫斯提马 S3 序时之匙 (3-15 over her 3-6) casts on its r
assert.equal(casts(h, u)[0].reason, 'ACTIVE_RANGE');
done(h);
});
test('real data: the SEARCH row widened — 安洁莉娜 S3 秘杖·反重力模式 (y-4 over her y-2) casts on an enemy of the y-4 only, no attack needed; her S2 (no range change) keeps SEARCH on the y-2', () => {
const AGL = 'chess_char_5_20_a';
const idx = (sid) => ds.getChess(AGL).raw.skills.find((s) => s.skillId === sid).index;
const s3 = ds.getChess(AGL, { skillIndex: idx('skchr_aglina_3') }).skill, s2 = ds.getChess(AGL, { skillIndex: idx('skchr_aglina_2') }).skill;
assert.equal(s3.trigger.rule, 'ACTIVE_RANGE');
assert.deepEqual(s3.trigger.grid, s3.rangeGrid, 'the trigger grid is the y-4 she attacks with');
assert.equal(s2.trigger.rule, 'SEARCH');
// (10,6) = [0,3]: on the y-4, not on her y-2
for (const [sid, want] of [['skchr_aglina_3', 1], ['skchr_aglina_2', 0]]) {
const h = makeBattle({
defs: { enemies: { e: dummy('e') } }, units: [{ chessId: AGL, row: 10, col: 3, dir: 'RIGHT', skillIndex: idx(sid) }],
enemies: [{ key: 'e', pos: [10, 6] }], hooks: ['skillStart'], autoFinish: false, timeLimit: 30,
});
const u = h.unit(AGL);
h.step();
u.skill.gainSp(1000);
h.run(4);
assert.equal(casts(h, u).length, want, `${sid}: ${want ? 'cast on the y-4' : 'the enemy is outside the initial y-2'}`);
if (want) assert.equal(casts(h, u)[0].reason, 'ACTIVE_RANGE');
done(h);
}
});