feedback5 WJ: 伺夜's 狼群 takes its official 战术点形态 and S1 领袖的呼唤 acts by the pack's state (PRTS 狼群领袖 / S1 备注)

The fatal hit on the last 狼影, or a 撤退 while 伺夜 stands, no longer kills the pack. It enters its 战术点形态, the
remake's knocked-out piece: off the fight (no block, no attack, not targetable), kept, its tile reserved, 0 狼影. After
the 狼影 recovery time it comes back on its tile at full HP with 1 狼影 and a fresh 狼影 cycle. That time is the token
talent's interval, read from the data: 25 s on both chess. Until now it came back after the token's 10 s redeploy time
with 2 狼影.

Both packs share this (tokens.js installWolfTacticalPoint): the prep-placed 狼群 piece and the 伺夜 kit's own pack.
- A return timer carries the form's seq and a return cancels it, so a stale timer never revives the pack early.
- When 伺夜 leaves, a standing pack still leaves with him ('expired', no form). A pack in its form ends it with no
  return; his redeploy brings a fresh pack.

S1 casts when ready while the pack is on the field in either form, and always pays +cost DP:
① in its 战术点形态 the pack comes back at once with 1 狼影 and a fresh cycle;
② below the cap, +1 狼影, the pack's own cycle untouched;
③ at the cap, the pack's HP is reset to max.
S2 still needs a standing pack: its 备注 says nothing of the form [ASSUMED]. A held S2 gift stays on the pack through
the form [ASSUMED].

fx: the kit's pack keeps 'summon' / 'revive', the piece keeps 'wolfShadow' / 'wolfShadowLost'. Entering the form shows
'wolfShadowLost' with count 0. No new kinds, no client change. Data unchanged.

Docs: DESIGN §5.6 (SP_FULL note), PLAYING (作战中, 自动触发), SIM (token pieces), the tokens.js / kit comments.

Tests:
- kits_alt_t3, new: 3_19 战术点形态 (both chess × both packs), S1 ①②③ with the stale-timer guard, 撤退 / 伺夜 leaving.
- kits_alt_t3, rewritten: the S1 no-pack test, and the S2 auto-cast test (no cast in the form, a cast once the pack is
  back).
- kits_t3 3_19 wolf pack and tokens_devices 狼群 board piece: the form, then a return with 1 狼影.

Golden (each fields 伺夜 with his pack knocked out at its last 狼影 while he stands: 25 s out and 1 狼影 instead of
10 s and 2):
- roster-007 and roster-009: the fights change.
- roster-028 (elite S1): S1 brings the pack back at once.
- roster-026 and roster-040: 伺夜 falls before the old return; only the new 'wolfShadowLost' fx moves.
- bond-siracusaShip-high.
- matches solo-NORMAL-1, coop2-NORMAL-3, coop3-ABYSS-5, coop2-NORMAL-8-serverrun: the bots field 伺夜.
This commit is contained in:
sganggs committed 2026-10-05 19:47:12 +08:00
1 parent a98b02477d
commit 4304eb057c
11 files changed
+577 -222

No files matched your search

+184 -20
View File
@@ -8,6 +8,7 @@ import { getDefaultSource } from '../../server/sim/simdata.js';
import { skillSpecSource } from '../../server/sim/content/index.js';
import { effectiveProfile } from '../../server/sim/ai.js';
import { kitCoverage } from '../../tools/kit-coverage.mjs';
import { wolfShadows, wolfTacticalPoint } from '../../server/sim/content/tokens.js';
import KITS from '../../server/sim/content/kits/tier3.js';
const ds = getDefaultSource();
@@ -786,28 +787,186 @@ test('3_19 伺夜 S1 领袖的呼唤 (自动触发, the pack on the field): +DP
done(g);
});
test('3_19 伺夜 S1 领袖的呼唤: PRTS 备注 「仅场上存在狼群时可触发技能」 — no pack, no cast (the SP waits full, no DP); cast once the pack stands again', () => {
test('3_19 伺夜 S1 领袖的呼唤: PRTS 备注 「仅场上存在狼群时可触发技能」 — no pack on the field in either form, no cast (the SP waits full, no DP)', () => {
for (const id of BOTH('chess_char_3_19_a')) {
const b = SB(id, 'skchr_vigil_1');
const h = makeBattle({ defs: { chess: noGarrison(id) }, timeLimit: 60, flags: { dpPerSec: 0 }, units: [U(id, 'skchr_vigil_1', 10, 3)] });
const u = h.unit(id), p = h.b.getPlayer('p1');
h.run(1);
const w = u.trait.reinforcement;
assert.ok(w && w.alive, 'the pack stands');
for (let i = 0; i < 10 && w.alive; i++) h.b.dealDamage(null, w, { amount: 1e9, type: 'true' }); // a wolf is lost per KO
assert.ok(!u.trait.reinforcement?.alive, 'no pack on the field');
// withdrawn by a rule ('expired', as when it leaves with 伺夜): gone, not in its 战术点形态
h.b.retreat(w, { reason: 'expired', permanent: true });
assert.equal(w.removed, true);
assert.equal(wolfTacticalPoint(w), null, 'no 战术点形态');
const dp0 = p.dp;
fill(u);
h.run(2);
assert.equal(u.skill.activations, 0, 'no pack, no cast');
assert.ok(u.skill.ready, 'the SP waits full');
approx(p.dp, dp0, 1e-9, 'no DP without the pack');
// the knocked-out pack comes back after its respawn time: cast at once — +DP and one more 狼影
assert.ok(h.runUntil(() => u.skill.activations === 1, 15), 'cast once the pack stands again');
done(h);
}
});
// 狼群 战术点形态 (PRTS 伺夜 天赋 狼群领袖 备注, 狼群 召唤物信息 备注) — both packs: the 伺夜 kit's own pack (no board piece) and
// the 狼群 piece placed in the prep phase (content/tokens.js wolfPack, adopted by the kit)
const WOLF = 'token_10028_vigil_wolf';
/** The 狼影 recovery time from the data: the token's 狼群领袖 talent interval. */
const WOLF_IV = (id) => ds.getToken(WOLF, id).talents.find((t) => t.bb['vigil_wolf_t_1_enhance[trigger].interval'] != null).bb['vigil_wolf_t_1_enhance[trigger].interval'];
/** 伺夜 `id` (skill `skillId`, default S3 when null) with the kit's pack, or with a prep-placed 狼群 piece (uid 2). */
const vigilUnits = (id, skillId, piece) => {
const sk = skillId ? { skillIndex: IDX(id, skillId) } : {};
return piece
? [{ chessId: id, row: 12, col: 3, uid: 1, ...sk }, { kind: 'token', tokenId: WOLF, ownerUid: 1, row: 11, col: 5, uid: 2 }]
: [{ chessId: id, row: 10, col: 3, uid: 1, ...sk }];
};
const close = (a, b, tol, msg) => assert.ok(Math.abs(a - b) <= tol, `${msg}: ${a} ≈ ${b}`);
const silence = (h, u, on) => (on ? h.b.addBuff(u, { key: 'test:silence', flags: { silence: true } }) : h.b.removeBuff(u, 'test:silence'));
test('3_19 伺夜 狼群 战术点形态: the fatal hit on the last 狼影 — out of the fight for the 狼影 interval (data), then back on its tile at full HP with one 狼影 and a fresh cycle (kit pack and prep piece)', () => {
for (const id of BOTH('chess_char_3_19_a')) for (const piece of [false, true]) {
const iv = WOLF_IV(id), tag = `${id} ${piece ? 'piece' : 'kit pack'}`;
assert.equal(iv, 25, '25 s on both chess (data)');
const h = makeBattle({ defs: { enemies: { enemy_d: dummy('enemy_d', { atk: 0 }) }, chess: noGarrison(id) }, timeLimit: 120, hooks: ['attack'], flags: { dpPerSec: 0 },
units: vigilUnits(id, null, piece), enemies: [{ key: 'enemy_d', pos: piece ? [11, 5] : [9, 3], time: 0.5 }] });
h.run(2);
const u = h.unit(1), w = u.trait.reinforcement, e = h.enemy('enemy_d');
if (piece) assert.equal(w, h.unit(2), `${tag}: the piece is the pack`);
else assert.ok(w && w.defId === WOLF && w.uid == null, `${tag}: the kit's own pack`);
assert.equal(e.blockedBy, w, `${tag}: blocks`);
const tile = [w.tileR, w.tileC];
h.b.dealDamage(null, w, { amount: 1e9, type: 'true' });
assert.ok(w.alive && wolfShadows(w) === 1, `${tag}: one 狼影 lost, still standing`);
h.b.dealDamage(null, w, { amount: 1e9, type: 'true' });
const t0 = h.b.time;
assert.equal(w.alive, false, `${tag}: out of the fight`);
assert.ok(wolfTacticalPoint(w), `${tag}: 战术点形态`);
assert.equal(w.removed, false, `${tag}: kept, not removed`);
assert.equal(wolfShadows(w), 0, `${tag}: 狼影 0`);
assert.equal(u.trait.reinforcement, w, `${tag}: still his 援军`);
assert.ok(h.b.isReservedTile(tile[0], tile[1]), `${tag}: its tile stays taken`);
assert.deepEqual(w.blocking, [], `${tag}: no block`);
assert.notEqual(e.blockedBy, w);
const bites0 = h.hooksOf('attack').filter((c) => c.attacker === w).length;
h.run(iv - 0.5);
assert.equal(w.alive, false, `${tag}: still in its 战术点形态 (not back after the token's 10 s redeploy time)`);
assert.equal(h.hooksOf('attack').filter((c) => c.attacker === w).length, bites0, `${tag}: no attack`);
assert.notEqual(e.blockedBy, w, `${tag}: blocks nothing`);
assert.ok(h.runUntil(() => w.alive, 1), `${tag}: back`);
close(h.b.time - t0, iv, 0.1, `${tag}: after the 狼影 interval`);
assert.equal(wolfTacticalPoint(w), null);
assert.deepEqual([w.tileR, w.tileC], tile, `${tag}: on its tile`);
assert.equal(w.hp, w.s.maxHp, `${tag}: full HP`);
assert.equal(wolfShadows(w), 1, `${tag}: one 狼影`);
assert.equal(w.s.blockCnt, 1);
assert.equal(u.trait.reinforcement, w, `${tag}: the same pack`);
// a fresh 狼影 cycle: the next one an interval after the return
const t1 = h.b.time;
h.run(iv - 0.5);
assert.equal(wolfShadows(w), 1, `${tag}: no 狼影 before a full interval`);
assert.ok(h.runUntil(() => wolfShadows(w) === 2, 1), `${tag}: the next 狼影`);
close(h.b.time - t1, iv, 0.1, `${tag}: one interval after the return`);
done(h);
}
});
test('3_19 伺夜 S1 领袖的呼唤 by the pack\'s state (PRTS 备注 ①②③): +cost DP each cast; ② +1 狼影 (own cycle untouched), ③ at the maximum HP to max, ① from the 战术点形态 back at once with one 狼影 and a fresh cycle — a stale return timer never revives it (kit pack and prep piece)', () => {
for (const id of BOTH('chess_char_3_19_a')) for (const piece of [false, true]) {
const b = SB(id, 'skchr_vigil_1'), iv = WOLF_IV(id), tag = `${id} ${piece ? 'piece' : 'kit pack'}`;
const h = makeBattle({ defs: { chess: noGarrison(id) }, timeLimit: 120, flags: { dpPerSec: 0 }, units: vigilUnits(id, 'skchr_vigil_1', piece) });
const u = h.unit(1), p = h.b.getPlayer('p1');
h.step();
const w = u.trait.reinforcement;
assert.ok(w && w.alive && (!piece || w === h.unit(2)), tag);
silence(h, u, true); // casts only when the test asks (the SP refills in 24–27 s)
const cast = () => {
const n0 = u.skill.activations, dp0 = p.dp;
silence(h, u, false);
fill(u);
h.step();
silence(h, u, true);
assert.equal(u.skill.activations, n0 + 1, `${tag}: cast`);
approx(p.dp, dp0 + b.cost, 1e-9, `${tag}: +cost DP`);
};
// ② below the maximum, 5 s into the pack's cycle: one more 狼影; its own next one still comes at deploy + interval
assert.equal(wolfShadows(w), 2);
h.run(5);
cast();
assert.equal(wolfShadows(w), 3, `${tag} ②: +1 狼影`);
assert.equal(w.s.blockCnt, 3);
h.b.dealDamage(null, w, { amount: 1e9, type: 'true' });
assert.equal(wolfShadows(w), 2);
assert.ok(h.runUntil(() => wolfShadows(w) === 3, iv), `${tag} ②: the pack's own 狼影`);
close(h.b.time - w.deployedAt, iv, 0.1, `${tag} ②: on the cycle from its deployment, not from the cast`);
// ③ at the maximum: the pack's HP back to max, the count unchanged
w.hp = w.s.maxHp * 0.3;
cast();
assert.equal(wolfShadows(w), 3, `${tag} ③: still at the maximum`);
assert.equal(w.hp, w.s.maxHp, `${tag} ③: HP to max`);
// ① in its 战术点形态: back at once, one 狼影, full HP, a fresh cycle
for (let i = 0; i < 3; i++) h.b.dealDamage(null, w, { amount: 1e9, type: 'true' });
assert.ok(!w.alive && wolfTacticalPoint(w), `${tag}: 战术点形态`);
h.run(3);
assert.equal(w.alive, false, `${tag}: waits in its 战术点形态 without a cast`);
cast();
assert.ok(w.alive, `${tag} ①: back at once`);
assert.equal(wolfTacticalPoint(w), null);
assert.equal(wolfShadows(w), 1, `${tag} ①: one 狼影`);
assert.equal(w.hp, w.s.maxHp, `${tag} ①: full HP`);
assert.equal(u.trait.reinforcement, w, `${tag} ①: the same pack`);
const tUp = h.b.time;
assert.ok(h.runUntil(() => wolfShadows(w) === 2, iv + 1), `${tag} ①: the next 狼影`);
close(h.b.time - tUp, iv, 0.1, `${tag} ①: a fresh cycle from the return`);
// a stale timer: down, back by S1 3 s later, down again 2 s after that — the first form's return time passes
// without reviving it; it comes back an interval after the second knock-out
for (let i = 0; i < 2; i++) h.b.dealDamage(null, w, { amount: 1e9, type: 'true' });
assert.ok(wolfTacticalPoint(w));
const tDown = h.b.time;
h.run(3);
cast();
assert.ok(w.alive);
h.run(2);
h.b.dealDamage(null, w, { amount: 1e9, type: 'true' });
assert.ok(wolfTacticalPoint(w), `${tag}: 战术点形态 again`);
const tDown2 = h.b.time;
h.run(tDown + iv + 0.5 - h.b.time);
assert.equal(w.alive, false, `${tag}: the cancelled return does not revive it`);
assert.ok(h.runUntil(() => w.alive, 6), `${tag}: back`);
close(h.b.time - tDown2, iv, 0.1, `${tag}: an interval after the second knock-out`);
done(h);
}
});
test('3_19 伺夜 狼群: a 撤退 also ends in the 战术点形态 (狼影 0); 伺夜 leaving ends the form without a return — his redeploy brings a fresh pack; a standing pack leaves with him, no 战术点形态 (kit pack and prep piece)', () => {
const id = 'chess_char_3_19_a', iv = WOLF_IV(id);
for (const piece of [false, true]) {
const tag = piece ? 'piece' : 'kit pack';
const h = makeBattle({ defs: { chess: noGarrison(id) }, timeLimit: 120, flags: { dpPerSec: 0 }, units: vigilUnits(id, null, piece) });
h.step();
const u = h.unit(1), w = u.trait.reinforcement;
assert.equal(wolfShadows(w), 2);
// a manual 撤退 (battle.retreat's default reason; no sim path withdraws the pack so today)
h.b.retreat(w);
assert.ok(!w.alive && wolfTacticalPoint(w), `${tag}: 撤退 ⇒ 战术点形态`);
assert.equal(wolfShadows(w), 0, `${tag}: 狼影 0`);
// 伺夜 leaves: the form ends there, no return
h.b.dealDamage(null, u, { amount: 1e9, type: 'true' });
assert.equal(u.alive, false);
assert.equal(wolfTacticalPoint(w), null, `${tag}: the form ends with 伺夜`);
h.run(iv + 2);
assert.equal(w.alive, false, `${tag}: no return without 伺夜`);
// his redeploy: a fresh pack with the initial 狼影
assert.ok(h.b.redeploy(u, { free: true }));
h.step();
const w2 = u.trait.reinforcement;
assert.ok(w2 && w2.alive, 'the pack is back');
approx(p.dp, dp0 + b.cost, 1e-9, '+cost DP');
assert.equal(w2.mem.wolves, 3, 'one more 狼影 on the returned pack');
assert.ok(w2 && w2.alive, `${tag}: a pack with him`);
assert.equal(wolfShadows(w2), 2, `${tag}: the initial 狼影`);
assert.equal(h.b.allyUnits.filter((t) => t.alive && t.defId === WOLF).length, 1, `${tag}: one pack`);
// a standing pack leaves with him ('expired'): gone, no 战术点形态
h.b.dealDamage(null, u, { amount: 1e9, type: 'true' });
assert.equal(w2.alive, false);
assert.equal(wolfTacticalPoint(w2), null, `${tag}: no 战术点形态 when it leaves with 伺夜`);
assert.equal(w2.removed, true);
done(h);
}
});
@@ -857,28 +1016,33 @@ test('3_19 伺夜 S2 领袖的馈赠: +DP, the pack recovers HP, its next attack
}
});
test('3_19 伺夜 S2 领袖的馈赠 (自动触发): no enemy needed — cast at full SP while the pack stands and holds no unused gift (PRTS 备注), never without the pack', () => {
for (const id of BOTH('chess_char_3_19_a')) {
const b = SB(id, 'skchr_vigil_2');
const h = makeBattle({ defs: { chess: noGarrison(id) }, timeLimit: 60, flags: { dpPerSec: 0 }, units: [U(id, 'skchr_vigil_2', 10, 3)] });
const u = h.unit(id), p = h.b.getPlayer('p1');
test('3_19 伺夜 S2 领袖的馈赠 (自动触发): no enemy needed — cast at full SP while the pack stands and holds no unused gift (PRTS 备注), never while it is in its 战术点形态 [ASSUMED] — cast once it is back (kit pack and prep piece)', () => {
for (const id of BOTH('chess_char_3_19_a')) for (const piece of [false, true]) {
const b = SB(id, 'skchr_vigil_2'), tag = `${id} ${piece ? 'piece' : 'kit pack'}`;
const h = makeBattle({ defs: { chess: noGarrison(id) }, timeLimit: 60, flags: { dpPerSec: 0 }, units: vigilUnits(id, 'skchr_vigil_2', piece) });
const u = h.unit(1), p = h.b.getPlayer('p1');
h.run(1);
const w = u.trait.reinforcement;
assert.ok(w && w.alive, 'the pack stands');
assert.ok(w && w.alive, `${tag}: the pack stands`);
const dp0 = p.dp;
fill(u);
assert.ok(h.runUntil(() => u.skill.activations === 1, 1), 'cast with nobody on the field');
assert.ok(h.runUntil(() => u.skill.activations === 1, 1), `${tag}: cast with nobody on the field`);
approx(p.dp, dp0 + b.cost, 1e-6, '+cost DP at once');
assert.ok(w.mem.vigilGift, 'the pack holds the gift for its next attack');
fill(u);
h.run(3);
assert.equal(u.skill.activations, 1, '"狼群未获得此技能的充能时可触发": no second cast while the gift is unused');
// the gift spent (as by a bite), the pack gone: still no cast until a pack stands again
// the gift spent (as by a bite), the pack in its 战术点形态: no cast (the 备注 does not count that form for S2 —
// [ASSUMED]); once it is back, the waiting cast fires
w.mem.vigilGift = null;
for (let i = 0; i < 10 && w.alive; i++) h.b.dealDamage(null, w, { amount: 1e9, type: 'true' }); // a wolf is lost per KO
assert.ok(!u.trait.reinforcement?.alive, 'no pack on the field');
h.step(2);
assert.equal(u.skill.activations, 1, '"仅场上存在狼群…时可触发": no pack, no cast');
assert.ok(wolfTacticalPoint(w), `${tag}: 战术点形态`);
h.run(5);
assert.equal(u.skill.activations, 1, `${tag}: no cast while the pack is in its 战术点形态`);
assert.ok(u.skill.ready, 'the SP waits full');
assert.ok(h.runUntil(() => w.alive, WOLF_IV(id)), `${tag}: the pack is back`);
assert.ok(h.runUntil(() => u.skill.activations === 2, 0.5), `${tag}: cast once it stands again`);
assert.ok(w.mem.vigilGift, 'the returned pack holds the gift');
done(h);
}
});
+7 -1
View File
@@ -727,11 +727,17 @@ test('3_19 伺夜: wolf pack (2 → 3 wolves, block/bites, lose a wolf instead o
assert.ok(g.runUntil(() => v.skill.active, 5));
g.runUntil(() => !v.skill.active, 20);
approx(gp.dp, gdp + BB(gid).value, 1e-6, '精锐 DP over the full duration');
// the last wolf falls: 战术点形态 (PRTS 狼群领袖 备注) for the 狼影 interval, then the same pack back with one wolf —
// not a new pack after the token's redeploy time (until 0.2.0)
const iv = ds.getToken('token_10028_vigil_wolf', gid).talents[0].bb.interval;
g.b.dealDamage(null, gw, { type: 'true', amount: 1e7 });
g.b.dealDamage(null, gw, { type: 'true', amount: 1e7 });
assert.equal(gw.alive, false);
g.run(gw.base.respawnTime + 0.5);
assert.ok(v.trait.reinforcement !== gw && v.trait.reinforcement?.alive, 'pack re-summoned after its respawn time');
assert.equal(gw.alive, false, 'not back after the token’s redeploy time');
assert.ok(g.runUntil(() => gw.alive, iv), 'back after the 狼影 interval');
assert.equal(v.trait.reinforcement, gw, 'the same pack');
assert.equal(gw.mem.wolves, 1, 'with one wolf');
done(g);
});
+14 -6
View File
@@ -5,7 +5,7 @@ import assert from 'node:assert/strict';
import { makeBattle, chessRec, enemyRec, checkInvariants } from '../helpers/battleHarness.js';
import { hasGeneratedData, getDefaultSource } from '../../server/sim/simdata.js';
import { genericKit } from '../../server/sim/content/generic.js';
import { spawnYanyou, spawnMapChar, TOKEN_IDS, wolfShadows, tileFree, findSummonTile, summonToken } from '../../server/sim/content/tokens.js';
import { spawnYanyou, spawnMapChar, TOKEN_IDS, wolfShadows, wolfShadowInterval, wolfTacticalPoint, tileFree, findSummonTile, summonToken } from '../../server/sim/content/tokens.js';
import { startColdWind, kjeragColdWind, activateTurrets, terrainAt, deviceOverridesOf } from '../../server/sim/content/devices.js';
import { HUSK_REBIRTH } from '../../server/sim/content/enemies.js';
@@ -202,7 +202,7 @@ test('纸偶: appear burst = its ATK × damage_scale arts on the 8 surrounding t
checkInvariants(h.b);
});
test('狼群: board piece becomes 伺夜\'s 援军; 2→3 狼影 (block & hits), fatal sheds a shadow, DEF ignore vs blocked, respawn', REAL, () => {
test('狼群: board piece becomes 伺夜\'s 援军; 2→3 狼影 (block & hits), fatal sheds a shadow, DEF ignore vs blocked, 战术点形态 after the last one', REAL, () => {
let wolfHits = 0;
const h = makeBattle({
defs: { enemies: { enemy_walker: walker({ def: 200, atk: 0 }) } },
@@ -238,11 +238,19 @@ test('狼群: board piece becomes 伺夜\'s 援军; 2→3 狼影 (block & hits),
assert.equal(wolf.hp, wolf.s.maxHp);
h.b.dealDamage(null, wolf, { amount: 1e6, type: 'true' });
h.b.dealDamage(null, wolf, { amount: 1e6, type: 'true' });
// the last shadow falls: 战术点形态 (PRTS 狼群 备注) — off the field, kept, 0 狼影, for the 狼影 interval (data), then
// back on its tile with one 狼影 (no longer a full pack after the token's redeploy time)
assert.equal(wolf.alive, false, 'last shadow falls');
const died = h.b.time;
assert.ok(h.runUntil(() => wolf.alive, 20), 'respawns');
approx(h.b.time - died, wolf.base.respawnTime, 0.3);
assert.equal(wolfShadows(wolf), 2, 'fresh pack');
assert.ok(wolfTacticalPoint(wolf), '战术点形态');
assert.equal(wolf.removed, false);
assert.equal(wolfShadows(wolf), 0);
const died = h.b.time, iv = wolfShadowInterval(wolf.def);
assert.equal(iv, tokDef(TOKEN_IDS.wolfPack, 'chess_char_3_19_b').talents[0].bb.interval, 'the talent interval');
assert.ok(h.runUntil(() => wolf.alive, iv + 1), 'back');
approx(h.b.time - died, iv, 0.004);
assert.deepEqual([wolf.tileR, wolf.tileC], [9, 6], 'on its tile');
assert.equal(wolfShadows(wolf), 1, 'one 狼影');
assert.equal(wolf.s.blockCnt, 1);
checkInvariants(h.b);
});
+15 -15
View File
@@ -1163,34 +1163,34 @@
"round": 10,
"seed": 1111632671,
"waveId": "act1autochess_h03",
"time": 76.4,
"ticks": 2292,
"time": 74.33,
"ticks": 2230,
"reason": "cleared",
"killed": 26,
"total": 26,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 365,
"rngDraws": 380,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":26,"total":26,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":321718,"bossDmg":0,"heal":929,"deaths":1,"layerGains":{"miraShip":6}}},
"players": {"p1":{"killed":26,"total":26,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":0,"dmg":323078,"bossDmg":0,"heal":929,"deaths":1,"layerGains":{"miraShip":6}}},
"units": [
["p1",1,"op","chess_char_1_08_b",1,"uniequip_002_texas",2924.8,1,7,1,16495,0,0,17,3],
["p1",2,"op","chess_char_2_16_b",1,"uniequip_002_whitew",2304,1,8,4,82108,0,0,50,1],
["p1",1,"op","chess_char_1_08_b",1,"uniequip_002_texas",2924.8,1,7,1,17028,0,0,19,3],
["p1",2,"op","chess_char_2_16_b",1,"uniequip_002_whitew",2304,1,8,4,94384,0,0,49,1],
["p1",3,"op","chess_char_3_18_b",2,"uniequip_002_vulpis",2020,1,6,0,0,0,0,0,0],
["p1",4,"op","chess_char_5_01_b",1,"uniequip_002_excu2",1428.96,1,9,0,0,885,0,0,0],
["p1",5,"op","chess_char_1_07_b",0,"uniequip_002_prove",1527,1,3,7,46217,0,0,40,0],
["p1",6,"op","chess_char_3_19_b",2,"uniequip_002_vigil",1798,1,4,14,174101,0,0,141,2],
["p1",4,"op","chess_char_5_01_b",1,"uniequip_002_excu2",619.57,1,9,0,0,1694,0,0,0],
["p1",5,"op","chess_char_1_07_b",0,"uniequip_002_prove",1527,1,3,9,55294,0,0,48,0],
["p1",6,"op","chess_char_3_19_b",2,"uniequip_002_vigil",1798,1,4,12,155534,0,0,143,2],
["p1",7,"op","chess_char_4_10_b",1,"uniequip_002_aroma",1664,1,10,0,0,0,0,0,0],
["p1",8,"op","chess_char_4_26_b",0,"uniequip_002_bldsk",0,0,11,0,0,2451,929,2,0],
["p1",9,"token","token_10028_vigil_wolf",null,null,0,0,37,0,2796,5814,0,4,null],
["p1",9,"token","token_10028_vigil_wolf",null,null,446.88,1,40,0,838,3477,0,2,null],
["-","~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]
],
"enemies": {"enemy_1158_divman":[20,20,0,7809,164229],"enemy_1160_hvyslr_2":[3,3,0,0,104509],"enemy_1161_tidmag_2":[3,3,0,1341,59720]},
"hooks": [1,39,2292,311,311,481,484,2,30,30,6,5,0,3813,40,4,26,0,1,35,3,0,0],
"events": {"atk":312,"deploy":11,"die":30,"dmg":484,"fx":26,"heal":2,"layer":3,"skill":11,"spawn":37,"status":73},
"fx": {"aoe":3,"bondProc":8,"crit":5,"dp":4,"garrison":3,"wolfShadowLost":3},
"snaps": "d1ead0d3 cda7c00c 8843b429 bd54e255 1de8d432 e6f225a5 7cba25d9 d80a750d"
"enemies": {"enemy_1158_divman":[20,20,0,6116,164229],"enemy_1160_hvyslr_2":[3,3,0,0,104509],"enemy_1161_tidmag_2":[3,3,0,1507,59720]},
"hooks": [1,39,2230,313,313,469,473,2,29,29,6,5,0,3754,38,2,26,0,1,31,3,0,0],
"events": {"atk":314,"deploy":11,"die":29,"dmg":473,"fx":29,"heal":2,"layer":3,"skill":11,"spawn":37,"status":75},
"fx": {"aoe":3,"bondProc":9,"crit":5,"dp":4,"garrison":3,"wolfShadow":2,"wolfShadowLost":3},
"snaps": "d1ead0d3 cda7c00c ccc1aada c0883850 2ba76678 a36bad1d 085c7f88 f7baafc7"
},
"bond-skillfulShip-low": {
"about": "灵巧 low: tier 1 layers 1; chess_char_3_12_a chess_char_1_14_a chess_char_2_04_a chess_char_3_08_a chess_char_3_09_a chess_char_3_10_a chess_char_3_11_a chess_char_3_14_a",
+72 -66
View File
@@ -99,7 +99,7 @@
"combat": "client",
"boost": null,
"setup": {"stageId":"act1autochess_m03","bossId":"boss_5","hiddenBossId":"boss_8","factions":["TIMES","DOT","INVISIBLE"]},
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":11,"bossPoolLeft":0,"virtualMs":106900},
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":10,"bossPoolLeft":0,"virtualMs":106900},
"rng": {"setup":25,"shop":207,"waves":0,"draft":10,"bots":8483,"meta":14},
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
"rounds": [
@@ -118,27 +118,27 @@
},
{
"round": 8,
"ai_0": [1,21,11,0,0,4,8,"9642d3a4",62,"deputShip 1/6, emptyShip 1/2, kazimierzShip 0/8, kjeragShip 1/9, preciShip 0/5, sargonShip 0/8, siracusaShip 1/31, soloShip 1/14, steadShip 0/6, swiftShip 0/8",13,19,6,60]
"ai_0": [1,20,11,0,0,4,8,"9642d3a4",62,"deputShip 1/6, emptyShip 1/2, kazimierzShip 0/8, kjeragShip 1/9, preciShip 0/5, sargonShip 0/8, siracusaShip 1/31, soloShip 1/14, steadShip 0/6, swiftShip 0/8",12,19,7,60]
},
{
"round": 9,
"ai_0": [1,21,12,0,0,4,8,"765a4a23",99,"arcaneShip 0/2, deputShip 1/8, emptyShip 1/4, kazimierzShip 0/8, kjeragShip 0/14, preciShip 0/12, sargonShip 0/8, siracusaShip 1/53, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/16",18,18,0,73]
"ai_0": [1,20,12,0,0,4,8,"765a4a23",99,"arcaneShip 0/2, deputShip 1/8, emptyShip 1/4, kazimierzShip 0/8, kjeragShip 0/14, preciShip 0/12, sargonShip 0/8, siracusaShip 1/53, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/16",18,18,0,73]
},
{
"round": 10,
"ai_0": [1,21,12,0,0,5,8,"44e95a01",112,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/3, preciShip 0/12, sargonShip 0/8, siracusaShip 2/69, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/22",24,24,0,87]
"ai_0": [1,20,12,0,0,5,8,"44e95a01",112,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/3, preciShip 0/12, sargonShip 0/8, siracusaShip 2/69, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/22",24,24,0,87]
},
{
"round": 11,
"ai_0": [1,21,12,0,0,5,8,"12000646",141,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/6, preciShip 0/12, sargonShip 0/8, siracusaShip 2/95, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/22",24,24,0,98]
"ai_0": [1,20,12,0,0,5,8,"12000646",141,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/6, preciShip 0/12, sargonShip 0/8, siracusaShip 2/95, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/22",24,24,0,98]
},
{
"round": 12,
"ai_0": [1,11,12,0,0,6,8,"03cea672",154,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/9, preciShip 0/12, sargonShip 0/8, siracusaShip 2/105, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/22",16,31,15,109]
"ai_0": [1,10,12,0,0,6,8,"03cea672",154,"arcaneShip 0/2, deputShip 0/8, emptyShip 0/4, kazimierzShip 0/8, kjeragShip 0/14, miraShip 1/9, preciShip 0/12, sargonShip 0/8, siracusaShip 2/105, soloShip 1/16, steadShip 0/6, suntShip 1/2, swiftShip 1/22",17,31,14,109]
},
{
"round": 13,
"ai_0": [1,11,12,0,0,6,8,"1cf42739",230,"arcaneShip 0/2, deputShip 2/12, emptyShip 1/8, kazimierzShip 0/16, kjeragShip 0/22, miraShip 1/13, preciShip 0/12, sargonShip 0/8, siracusaShip 1/129, soloShip 1/20, steadShip 0/6, suntShip 1/6, swiftShip 1/42",115,115,0,121]
"ai_0": [1,10,12,0,0,6,8,"1cf42739",230,"arcaneShip 0/2, deputShip 2/12, emptyShip 1/8, kazimierzShip 0/16, kjeragShip 0/22, miraShip 1/13, preciShip 0/12, sargonShip 0/8, siracusaShip 1/129, soloShip 1/20, steadShip 0/6, suntShip 1/6, swiftShip 1/42",115,115,0,121]
}
],
"players": {
@@ -147,12 +147,12 @@
"victory": true,
"roundsPassed": 14,
"eliminatedRound": null,
"lp": 11,
"lp": 10,
"bandId": "band_ermengard",
"title": {"id":"comment_1","name":"卫戍之星","picId":"comment_icon_1","text":"对敌方领袖造成伤害最高(仅胜利时)"},
"trophies": 0,
"reward": 400,
"stats": {"activatedLayers":290,"bossDamage":97500,"dmgDealt":1700976,"gold":131,"itemsEquipped":23,"kills":361,"leaks":21,"lpLost":16,"merges":5,"perfectRounds":11,"refreshes":15},
"stats": {"activatedLayers":290,"bossDamage":97500,"dmgDealt":1691540,"gold":131,"itemsEquipped":23,"kills":361,"leaks":21,"lpLost":17,"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"]
}
@@ -511,7 +511,7 @@
"combat": "client",
"boost": null,
"setup": {"stageId":"act2autochess_m04","bossId":"boss_3","hiddenBossId":"boss_8","factions":["FLY","TIMES","DOT"]},
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":55,"bossPoolLeft":0,"virtualMs":121400},
"end": {"victory":true,"roundsPassed":14,"hiddenReached":false,"hiddenCleared":false,"reason":"victory","teamLp":54,"bossPoolLeft":0,"virtualMs":121400},
"rng": {"setup":25,"shop":449,"waves":0,"draft":40,"bots":21634,"meta":8},
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
"rounds": [
@@ -577,7 +577,7 @@
},
{
"round": 13,
"ai_0": [1,37,12,0,2,6,8,"5deeb03a",214,"arcaneShip 2/70, miraShip 1/12, preciShip 0/10, sargonShip 0/10, siracusaShip 1/98, skillfulShip 1/28, soloShip 1/6, suntShip 1/0, swiftShip 0/32",26,34,8,125],
"ai_0": [1,36,12,0,2,6,8,"5deeb03a",214,"arcaneShip 2/70, miraShip 1/12, preciShip 0/10, sargonShip 0/10, siracusaShip 1/98, skillfulShip 1/28, soloShip 1/6, suntShip 1/0, swiftShip 0/32",25,34,9,125],
"ai_1": [1,18,12,0,0,6,8,"49c3b995",195,"arcaneShip 2/36, kazimierzShip 1/40, kjeragShip 0/8, preciShip 1/50, sargonShip 0/10, steadShip 1/0, suntShip 1/0, swiftShip 1/69",22,34,12,127]
}
],
@@ -587,12 +587,12 @@
"victory": true,
"roundsPassed": 14,
"eliminatedRound": null,
"lp": 37,
"lp": 36,
"bandId": "band_sarkazb",
"title": {"id":"comment_2","name":"不朽盟约","picId":"comment_icon_2","text":"激活的盟约层数总和最高"},
"trophies": 4,
"reward": 400,
"stats": {"activatedLayers":250,"bossDamage":287418,"dmgDealt":3020895,"gold":139,"itemsEquipped":12,"kills":334,"leaks":9,"lpLost":8,"merges":5,"perfectRounds":11,"refreshes":23},
"stats": {"activatedLayers":250,"bossDamage":287418,"dmgDealt":2992890,"gold":139,"itemsEquipped":12,"kills":333,"leaks":10,"lpLost":9,"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"]
},
@@ -733,8 +733,8 @@
"combat": "client",
"boost": null,
"setup": {"stageId":"act2autochess_m03","bossId":"boss_4","hiddenBossId":"boss_9","factions":["FLY","TIMES","REFLECTION"]},
"end": {"victory":false,"roundsPassed":11,"hiddenReached":false,"hiddenCleared":false,"reason":"eliminated","teamLp":null,"bossPoolLeft":null,"virtualMs":115700},
"rng": {"setup":25,"shop":537,"waves":0,"draft":75,"bots":24773,"meta":19},
"end": {"victory":false,"roundsPassed":12,"hiddenReached":false,"hiddenCleared":false,"reason":"eliminated","teamLp":null,"bossPoolLeft":null,"virtualMs":124350},
"rng": {"setup":25,"shop":606,"waves":0,"draft":76,"bots":26471,"meta":24},
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
"rounds": [
{
@@ -789,25 +789,31 @@
"round": 9,
"ai_0": [1,8,12,0,6,4,8,"6d558be7",157,"deputShip 2/32, indomShip 1/4, kazimierzShip 0/2, kjeragShip 1/28, skillfulShip 1/51, soloShip 1/16, steadShip 1/22, suntShip 1/4, swiftShip 0/20",65,68,3,81],
"ai_1": [1,24,12,0,1,4,8,"ad1959de",111,"deputShip 2/35, kazimierzShip 0/7, skillfulShip 1/22, soloShip 1/16, suntShip 1/16, swiftShip 0/21, victoriaShip 1/22",41,52,11,73],
"ai_2": [1,7,12,0,0,4,8,"e0957cd2",127,"deputShip 0/10, miraShip 1/3, siracusaShip 2/78, soloShip 1/22, suntShip 1/6, swiftShip 1/18, yanShip 0/1",51,60,9,75]
"ai_2": [1,13,12,0,0,4,8,"790ec77b",127,"deputShip 0/10, miraShip 1/3, siracusaShip 2/78, soloShip 1/22, suntShip 1/6, swiftShip 1/18, yanShip 0/1",59,62,3,75]
},
{
"round": 10,
"ai_0": [1,8,18,0,0,5,8,"7365b613",207,"deputShip 2/36, indomShip 1/8, kazimierzShip 0/2, kjeragShip 1/41, miraShip 1/4, skillfulShip 1/57, soloShip 1/20, steadShip 1/33, suntShip 1/8, swiftShip 0/20",18,18,0,99],
"ai_1": [1,15,13,0,0,5,8,"776e574d",124,"deputShip 2/40, indomShip 1/5, kazimierzShip 0/7, skillfulShip 1/26, soloShip 1/20, suntShip 0/16, swiftShip 0/21, victoriaShip 1/33",3,18,15,86],
"ai_2": [0,0,12,0,0,5,0,"811c9dc5",0,"deputShip 0/10, miraShip 0/5, siracusaShip 0/84, soloShip 0/22, suntShip 0/6, swiftShip 0/23, yanShip 0/1",5,18,13,86]
"ai_0": [1,8,18,0,0,5,8,"0cdaabe2",207,"deputShip 2/36, indomShip 1/8, kazimierzShip 0/2, kjeragShip 1/41, miraShip 1/4, skillfulShip 1/57, soloShip 1/20, steadShip 1/33, suntShip 1/8, swiftShip 0/20",18,18,0,99],
"ai_1": [1,20,13,0,0,5,8,"5553a152",132,"deputShip 2/40, indomShip 1/9, kazimierzShip 0/7, skillfulShip 1/26, soloShip 1/20, suntShip 0/16, swiftShip 0/21, victoriaShip 1/37",9,18,9,86],
"ai_2": [1,7,12,0,2,5,8,"d71a0d82",137,"deputShip 0/10, miraShip 1/4, siracusaShip 2/82, soloShip 1/22, suntShip 1/6, swiftShip 1/23, yanShip 0/1",9,18,9,86]
},
{
"round": 11,
"ai_0": [1,3,12,0,1,5,8,"d2be236f",254,"deputShip 2/40, indomShip 1/12, kazimierzShip 0/2, kjeragShip 1/51, miraShip 1/8, siracusaShip 0/6, skillfulShip 1/63, soloShip 1/24, steadShip 1/44, suntShip 1/12, swiftShip 0/26",20,25,5,110],
"ai_1": [1,5,12,0,0,5,8,"3d8f81b8",150,"deputShip 1/42, indomShip 1/11, kazimierzShip 0/7, skillfulShip 1/28, soloShip 0/20, suntShip 0/16, swiftShip 0/21, victoriaShip 2/69, yanShip 0/5",7,25,18,98],
"ai_2": [0,0,0,0,0,5,0,"811c9dc5",0,"deputShip 0/10, miraShip 0/5, siracusaShip 0/84, soloShip 0/22, suntShip 0/6, swiftShip 0/23, yanShip 0/1",null,null,null,86]
"ai_0": [1,3,12,0,1,5,8,"15e6bba0",255,"deputShip 2/40, indomShip 1/12, kazimierzShip 0/2, kjeragShip 1/52, miraShip 1/8, siracusaShip 0/6, skillfulShip 1/63, soloShip 1/24, steadShip 1/44, suntShip 1/12, swiftShip 0/26",20,25,5,110],
"ai_1": [1,14,12,0,1,5,8,"458bff99",175,"deputShip 2/44, indomShip 1/15, kazimierzShip 0/11, skillfulShip 1/30, soloShip 1/24, steadShip 1/8, suntShip 0/16, swiftShip 0/25, victoriaShip 1/54",19,25,6,100],
"ai_2": [0,0,14,0,0,5,0,"811c9dc5",0,"arcaneShip 0/16, deputShip 0/10, miraShip 0/5, siracusaShip 0/100, soloShip 0/22, suntShip 0/6, swiftShip 0/33, yanShip 0/1",5,25,20,101]
},
{
"round": 12,
"ai_0": [0,0,13,0,0,6,0,"811c9dc5",0,"deputShip 0/44, indomShip 0/16, kazimierzShip 0/2, kjeragShip 0/62, miraShip 0/12, siracusaShip 0/6, skillfulShip 0/69, soloShip 0/28, steadShip 0/55, suntShip 0/16, swiftShip 0/26",16,57,41,124],
"ai_1": [0,0,12,0,0,6,0,"811c9dc5",0,"deputShip 0/44, indomShip 0/19, kazimierzShip 0/7, skillfulShip 0/30, soloShip 0/20, suntShip 0/16, swiftShip 0/21, victoriaShip 0/102, yanShip 0/5",24,57,33,109],
"ai_2": [0,0,0,0,0,5,0,"811c9dc5",0,"deputShip 0/10, miraShip 0/5, siracusaShip 0/84, soloShip 0/22, suntShip 0/6, swiftShip 0/23, yanShip 0/1",null,null,null,86]
"ai_0": [0,0,13,0,0,6,0,"811c9dc5",0,"deputShip 0/44, indomShip 0/16, kazimierzShip 0/2, kjeragShip 0/61, miraShip 0/12, siracusaShip 0/6, skillfulShip 0/69, soloShip 0/28, steadShip 0/55, suntShip 0/16, swiftShip 0/26",14,57,43,122],
"ai_1": [1,4,13,0,0,6,8,"fedd02aa",227,"deputShip 2/48, indomShip 1/23, kazimierzShip 0/11, kjeragShip 0/5, skillfulShip 1/39, soloShip 1/28, steadShip 1/16, suntShip 0/16, swiftShip 0/25, victoriaShip 1/73",17,57,40,113],
"ai_2": [0,0,0,0,0,5,0,"811c9dc5",0,"arcaneShip 0/16, deputShip 0/10, miraShip 0/5, siracusaShip 0/100, soloShip 0/22, suntShip 0/6, swiftShip 0/33, yanShip 0/1",null,null,null,101]
},
{
"round": 13,
"ai_0": [0,0,0,0,0,6,0,"811c9dc5",0,"deputShip 0/44, indomShip 0/16, kazimierzShip 0/2, kjeragShip 0/61, miraShip 0/12, siracusaShip 0/6, skillfulShip 0/69, soloShip 0/28, steadShip 0/55, suntShip 0/16, swiftShip 0/26",null,null,null,122],
"ai_1": [0,0,12,0,0,6,0,"811c9dc5",0,"deputShip 0/52, indomShip 0/27, kazimierzShip 0/11, kjeragShip 0/5, skillfulShip 0/43, soloShip 0/32, steadShip 0/26, suntShip 0/16, swiftShip 0/25, victoriaShip 0/89",5,26,21,124],
"ai_2": [0,0,0,0,0,5,0,"811c9dc5",0,"arcaneShip 0/16, deputShip 0/10, miraShip 0/5, siracusaShip 0/100, soloShip 0/22, suntShip 0/6, swiftShip 0/33, yanShip 0/1",null,null,null,101]
}
],
"players": {
@@ -818,40 +824,40 @@
"eliminatedRound": 12,
"lp": 0,
"bandId": "band_chiave",
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
"title": {"id":"comment_5","name":"万事俱备","picId":"comment_icon_5","text":"装备配发数量最多"},
"trophies": 2,
"reward": 255,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":4777308,"gold":124,"itemsEquipped":17,"kills":279,"leaks":70,"lpLost":30,"merges":3,"perfectRounds":4,"refreshes":14},
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":4492000,"gold":122,"itemsEquipped":17,"kills":275,"leaks":72,"lpLost":30,"merges":3,"perfectRounds":4,"refreshes":15},
"lineup": [],
"bonds": ["deputShip 0/44","indomShip 0/16","kazimierzShip 0/2","kjeragShip 0/62","miraShip 0/12","siracusaShip 0/6","skillfulShip 0/69","soloShip 0/28","steadShip 0/55","suntShip 0/16","swiftShip 0/26"]
"bonds": ["deputShip 0/44","indomShip 0/16","kazimierzShip 0/2","kjeragShip 0/61","miraShip 0/12","siracusaShip 0/6","skillfulShip 0/69","soloShip 0/28","steadShip 0/55","suntShip 0/16","swiftShip 0/26"]
},
"ai_1": {
"alive": false,
"victory": false,
"roundsPassed": 11,
"eliminatedRound": 12,
"roundsPassed": 12,
"eliminatedRound": 13,
"lp": 0,
"bandId": "band_sarkazb",
"title": {"id":"comment_6","name":"挥金如土","picId":"comment_icon_6","text":"消耗资金最多"},
"trophies": 2,
"reward": 255,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2690412,"gold":109,"itemsEquipped":9,"kills":258,"leaks":92,"lpLost":50,"merges":3,"perfectRounds":5,"refreshes":18},
"trophies": 3,
"reward": 298,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":3467151,"gold":124,"itemsEquipped":13,"kills":274,"leaks":102,"lpLost":51,"merges":3,"perfectRounds":5,"refreshes":20},
"lineup": [],
"bonds": ["deputShip 0/44","indomShip 0/19","kazimierzShip 0/7","skillfulShip 0/30","soloShip 0/20","suntShip 0/16","swiftShip 0/21","victoriaShip 0/102","yanShip 0/5"]
"bonds": ["deputShip 0/52","indomShip 0/27","kazimierzShip 0/11","kjeragShip 0/5","skillfulShip 0/43","soloShip 0/32","steadShip 0/26","suntShip 0/16","swiftShip 0/25","victoriaShip 0/89"]
},
"ai_2": {
"alive": false,
"victory": false,
"roundsPassed": 9,
"eliminatedRound": 10,
"roundsPassed": 10,
"eliminatedRound": 11,
"lp": 0,
"bandId": "band_lmlee",
"title": {"id":"comment_5","name":"万事俱备","picId":"comment_icon_5","text":"装备配发数量最多"},
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
"trophies": 2,
"reward": 191,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":1500871,"gold":86,"itemsEquipped":5,"kills":199,"leaks":45,"lpLost":29,"merges":2,"perfectRounds":4,"refreshes":14},
"reward": 213,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":1915977,"gold":101,"itemsEquipped":9,"kills":216,"leaks":55,"lpLost":30,"merges":4,"perfectRounds":4,"refreshes":18},
"lineup": [],
"bonds": ["deputShip 0/10","miraShip 0/5","siracusaShip 0/84","soloShip 0/22","suntShip 0/6","swiftShip 0/23","yanShip 0/1"]
"bonds": ["arcaneShip 0/16","deputShip 0/10","miraShip 0/5","siracusaShip 0/100","soloShip 0/22","suntShip 0/6","swiftShip 0/33","yanShip 0/1"]
}
}
},
@@ -1181,8 +1187,8 @@
"combat": "server",
"boost": null,
"setup": {"stageId":"act1autochess_m01","bossId":"boss_1","hiddenBossId":"boss_9","factions":["FLY","DOT","REFLECTION"]},
"end": {"victory":false,"roundsPassed":12,"hiddenReached":false,"hiddenCleared":false,"reason":"eliminated","teamLp":null,"bossPoolLeft":null,"virtualMs":114800},
"rng": {"setup":25,"shop":383,"waves":0,"draft":34,"bots":16823,"meta":105},
"end": {"victory":false,"roundsPassed":12,"hiddenReached":false,"hiddenCleared":false,"reason":"eliminated","teamLp":null,"bossPoolLeft":null,"virtualMs":113300},
"rng": {"setup":25,"shop":389,"waves":0,"draft":34,"bots":16823,"meta":81},
"errors": {"engine":0,"logged":0,"sim":0,"dispatcher":0},
"rounds": [
{
@@ -1217,68 +1223,68 @@
},
{
"round": 7,
"ai_0": [1,19,13,0,0,4,8,"28ba7985",39,"arcaneShip 0/2, kjeragShip 0/2, preciShip 1/2, siracusaShip 1/20, soloShip 1/11, steadShip 0/2, swiftShip 1/6",11,27,16,52],
"ai_0": [1,19,13,0,0,4,8,"bfa893e9",41,"arcaneShip 0/2, kjeragShip 0/2, preciShip 1/2, siracusaShip 1/22, soloShip 1/11, steadShip 0/2, swiftShip 1/6",12,27,15,52],
"ai_1": [1,18,11,0,1,4,8,"eac0b2d5",6,"arcaneShip 0/2, kjeragShip 0/4, preciShip 1/2, siracusaShip 1/0, soloShip 1/0, steadShip 2/4",16,27,11,51]
},
{
"round": 8,
"ai_0": [1,19,11,0,0,4,8,"7c223b06",60,"arcaneShip 1/6, emptyShip 1/0, kjeragShip 0/7, preciShip 1/7, siracusaShip 1/30, soloShip 1/11, steadShip 0/2, swiftShip 1/6",23,23,0,64],
"ai_0": [1,19,11,0,0,4,8,"7c223b06",62,"arcaneShip 1/6, emptyShip 1/0, kjeragShip 0/7, preciShip 1/7, siracusaShip 1/32, soloShip 1/11, steadShip 0/2, swiftShip 1/6",23,23,0,64],
"ai_1": [1,16,12,0,0,4,8,"2243ec88",26,"arcaneShip 1/8, indomShip 1/1, kjeragShip 0/4, preciShip 0/2, siracusaShip 1/10, soloShip 1/0, steadShip 2/7",18,23,5,61]
},
{
"round": 9,
"ai_0": [1,19,12,0,1,4,8,"588666d3",72,"arcaneShip 1/12, emptyShip 1/0, indomShip 0/8, kjeragShip 0/7, preciShip 2/7, siracusaShip 1/36, soloShip 1/11, steadShip 0/2, suntShip 1/0, swiftShip 1/6, victoriaShip 0/8, visiShip 0/8",16,16,0,78],
"ai_1": [1,15,12,0,0,4,8,"0f3cf873",67,"arcaneShip 1/14, indomShip 1/10, kjeragShip 0/4, preciShip 0/2, siracusaShip 1/32, soloShip 1/0, steadShip 1/11, victoriaShip 0/8, visiShip 0/8",14,15,1,73]
"ai_0": [1,19,12,0,1,4,8,"6dfc43a6",74,"arcaneShip 2/12, emptyShip 1/0, indomShip 0/8, kjeragShip 0/7, preciShip 1/7, siracusaShip 1/38, soloShip 1/11, steadShip 0/2, suntShip 1/0, swiftShip 1/6, victoriaShip 0/8, visiShip 0/8",16,16,0,77],
"ai_1": [1,16,12,0,0,4,8,"bbe510e7",82,"arcaneShip 1/16, indomShip 1/10, kjeragShip 0/8, preciShip 1/22, siracusaShip 1/20, soloShip 1/0, steadShip 1/14, victoriaShip 0/8, visiShip 0/8",15,15,0,74]
},
{
"round": 10,
"ai_0": [1,17,13,0,0,5,8,"bb29d023",80,"arcaneShip 1/16, emptyShip 1/0, indomShip 0/8, kjeragShip 0/7, preciShip 2/7, siracusaShip 1/40, soloShip 1/11, steadShip 0/2, suntShip 1/0, swiftShip 1/6, victoriaShip 0/8, visiShip 0/8",22,24,2,91],
"ai_1": [1,14,12,0,0,5,8,"34e3de0f",83,"arcaneShip 1/14, indomShip 1/20, kjeragShip 0/8, preciShip 0/2, siracusaShip 1/32, soloShip 1/0, steadShip 1/17, suntShip 1/0, victoriaShip 0/8, visiShip 0/8",22,23,1,85]
"ai_0": [1,18,13,0,0,5,8,"e24edc84",78,"arcaneShip 2/14, emptyShip 1/0, indomShip 0/8, kjeragShip 0/7, preciShip 1/7, siracusaShip 1/40, soloShip 1/11, steadShip 0/2, suntShip 1/0, swiftShip 1/6, victoriaShip 0/8, visiShip 0/8",23,24,1,89],
"ai_1": [1,16,12,0,0,5,8,"f2b57087",100,"arcaneShip 1/16, indomShip 1/12, kjeragShip 0/8, miraShip 0/3, preciShip 1/35, siracusaShip 1/20, soloShip 1/0, steadShip 1/17, suntShip 1/0, victoriaShip 0/8, visiShip 0/8, yanShip 0/6",23,23,0,86]
},
{
"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,8,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]
"ai_0": [1,9,12,0,0,5,8,"586b372b",90,"arcaneShip 2/20, emptyShip 1/0, indomShip 0/8, kjeragShip 0/7, preciShip 1/7, siracusaShip 1/46, soloShip 1/11, steadShip 0/2, suntShip 1/0, swiftShip 1/6, victoriaShip 0/8, visiShip 0/8",14,23,9,101],
"ai_1": [1,12,12,0,0,5,8,"b5188f04",124,"arcaneShip 2/26, indomShip 1/14, kazimierzShip 0/8, kjeragShip 0/16, miraShip 0/3, preciShip 1/54, siracusaShip 1/30, soloShip 1/0, steadShip 0/17, suntShip 1/0, swiftShip 0/8, victoriaShip 0/8, visiShip 0/8, yanShip 0/6",19,23,4,99]
},
{
"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": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/20, indomShip 0/50, kjeragShip 0/8, preciShip 0/2, siracusaShip 0/58, steadShip 0/22, victoriaShip 0/8, visiShip 0/8",20,46,26,109]
"ai_0": [0,0,12,0,0,5,0,"811c9dc5",0,"arcaneShip 0/24, indomShip 0/8, kjeragShip 0/7, preciShip 0/7, siracusaShip 0/50, soloShip 0/11, steadShip 0/2, swiftShip 0/6, victoriaShip 0/8, visiShip 0/8",27,46,19,114],
"ai_1": [1,2,12,0,0,6,8,"f5a033f5",153,"arcaneShip 2/26, indomShip 0/14, kazimierzShip 0/8, kjeragShip 0/16, miraShip 0/3, preciShip 1/78, siracusaShip 1/30, soloShip 1/0, steadShip 1/19, suntShip 1/0, swiftShip 0/8, victoriaShip 0/8, visiShip 0/8, yanShip 0/6",27,46,19,111]
},
{
"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,128],
"ai_1": [0,0,0,0,0,6,0,"811c9dc5",0,"arcaneShip 0/20, indomShip 0/50, kjeragShip 0/8, preciShip 0/2, siracusaShip 0/58, steadShip 0/22, victoriaShip 0/8, visiShip 0/8",null,null,null,109]
"ai_0": [0,0,0,0,0,5,0,"811c9dc5",0,"arcaneShip 0/24, indomShip 0/8, kjeragShip 0/7, preciShip 0/7, siracusaShip 0/50, soloShip 0/11, steadShip 0/2, swiftShip 0/6, victoriaShip 0/8, visiShip 0/8",null,null,null,114],
"ai_1": [0,0,12,0,0,6,0,"811c9dc5",0,"arcaneShip 0/32, indomShip 0/14, kazimierzShip 0/16, kjeragShip 0/24, miraShip 0/3, preciShip 0/102, siracusaShip 0/42, steadShip 0/19, swiftShip 0/16, victoriaShip 0/8, visiShip 0/8, yanShip 0/6",27,39,12,121]
}
],
"players": {
"ai_0": {
"alive": false,
"victory": false,
"roundsPassed": 12,
"eliminatedRound": 13,
"roundsPassed": 11,
"eliminatedRound": 12,
"lp": 0,
"bandId": "band_doberm",
"title": {"id":"comment_4","name":"精英云集","picId":"comment_icon_4","text":"晋升精锐次数最多"},
"trophies": 3,
"reward": 280,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2828648,"gold":128,"itemsEquipped":14,"kills":230,"leaks":49,"lpLost":33,"merges":3,"perfectRounds":8,"refreshes":18},
"trophies": 2,
"reward": 240,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2035070,"gold":114,"itemsEquipped":13,"kills":194,"leaks":45,"lpLost":31,"merges":4,"perfectRounds":7,"refreshes":15},
"lineup": [],
"bonds": ["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"]
"bonds": ["arcaneShip 0/24","indomShip 0/8","kjeragShip 0/7","preciShip 0/7","siracusaShip 0/50","soloShip 0/11","steadShip 0/2","swiftShip 0/6","victoriaShip 0/8","visiShip 0/8"]
},
"ai_1": {
"alive": false,
"victory": false,
"roundsPassed": 11,
"eliminatedRound": 12,
"roundsPassed": 12,
"eliminatedRound": 13,
"lp": 0,
"bandId": "band_malkie",
"title": {"id":"comment_5","name":"万事俱备","picId":"comment_icon_5","text":"装备配发数量最多"},
"trophies": 2,
"reward": 240,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":1891141,"gold":109,"itemsEquipped":16,"kills":179,"leaks":50,"lpLost":30,"merges":2,"perfectRounds":6,"refreshes":14},
"trophies": 3,
"reward": 280,
"stats": {"activatedLayers":0,"bossDamage":0,"dmgDealt":2655538,"gold":121,"itemsEquipped":18,"kills":217,"leaks":51,"lpLost":36,"merges":3,"perfectRounds":8,"refreshes":17},
"lineup": [],
"bonds": ["arcaneShip 0/20","indomShip 0/50","kjeragShip 0/8","preciShip 0/2","siracusaShip 0/58","steadShip 0/22","victoriaShip 0/8","visiShip 0/8"]
"bonds": ["arcaneShip 0/32","indomShip 0/14","kazimierzShip 0/16","kjeragShip 0/24","miraShip 0/3","preciShip 0/102","siracusaShip 0/42","steadShip 0/19","swiftShip 0/16","victoriaShip 0/8","visiShip 0/8","yanShip 0/6"]
}
}
},
+75 -74
View File
@@ -387,55 +387,56 @@
"time": 140,
"ticks": 4200,
"reason": "timeout",
"killed": 112,
"total": 162,
"killed": 103,
"total": 165,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 64,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":112,"total":162,"perfect":false,"leaks":50,"leaksUncounted":1,"coins":2,"dmg":202293,"bossDmg":0,"heal":650,"deaths":11,"layerGains":{}}},
"players": {"p1":{"killed":103,"total":165,"perfect":false,"leaks":62,"leaksUncounted":1,"coins":4,"dmg":206927,"bossDmg":0,"heal":650,"deaths":11,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_3_12_a",2,null,2334,1,180,2,1060,2334,0,11,1],
["p1",2,"op","chess_char_3_16_a",1,null,0,0,6,0,3135,2823,650,18,1],
["p1",3,"op","chess_char_3_18_a",2,null,1481,1,186,6,10342,2962,0,29,1],
["p1",4,"op","chess_char_3_08_a",1,null,1326,1,4,12,21498,268,0,20,2],
["p1",5,"op","chess_char_3_09_a",1,null,739,1,7,18,20206,528,0,64,2],
["p1",6,"op","chess_char_3_10_a",1,null,0,0,10,13,7811,1650,0,21,2],
["p1",7,"op","chess_char_3_11_a",1,null,1316,1,187,14,11933,1316,0,22,3],
["p1",8,"op","chess_char_3_13_a",1,null,1064,1,185,3,5201,1064,0,22,10],
["p1",9,"op","chess_char_3_14_a",1,null,0,0,5,5,10307,1251,0,30,1],
["p1",10,"op","chess_char_3_17_a",1,null,0,0,8,13,53646,2246,0,78,4],
["p1",11,"op","chess_char_3_19_a",2,null,731,1,141,16,34429,2147,0,91,2],
["p1",12,"op","chess_char_3_20_a",1,null,1121,1,189,2,5255,1121,0,40,1],
["p1",13,"token","token_10028_vigil_wolf",null,null,880,1,188,8,17470,5205,0,47,null],
["p1",1,"op","chess_char_3_12_a",2,null,2277.37,1,183,4,2509,2391,0,17,1],
["p1",2,"op","chess_char_3_16_a",1,null,0,0,6,0,468,2823,650,29,1],
["p1",3,"op","chess_char_3_18_a",2,null,1481,1,189,5,10012,2962,0,27,1],
["p1",4,"op","chess_char_3_08_a",1,null,1594,1,4,12,28602,0,0,20,2],
["p1",5,"op","chess_char_3_09_a",1,null,927,1,7,14,27278,340,0,63,2],
["p1",6,"op","chess_char_3_10_a",1,null,0,0,10,14,14131,1650,0,25,2],
["p1",7,"op","chess_char_3_11_a",1,null,1316,1,190,12,10443,1316,0,19,3],
["p1",8,"op","chess_char_3_13_a",1,null,1064,1,186,3,4643,1064,0,21,9],
["p1",9,"op","chess_char_3_14_a",1,null,0,0,5,11,14855,1251,0,49,2],
["p1",10,"op","chess_char_3_17_a",1,null,0,0,8,8,43714,2246,0,62,4],
["p1",11,"op","chess_char_3_19_a",2,null,731,1,147,12,32311,2147,0,87,2],
["p1",12,"op","chess_char_3_20_a",1,null,1121,1,191,2,5153,1121,0,36,1],
["p1",13,"token","token_10028_vigil_wolf",null,null,599.46,0,102,4,4175,1361,0,13,null],
["-","~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]
["-","~2","device","trap_1105_accrate",null,null,100,1,2,0,0,0,0,0,null],
["p1","~1","token","token_10028_vigil_wolf",null,null,0,0,148,2,8632,1697,0,19,null]
],
"enemies": {
"enemy_10029_vtshld": [1,0,0,0,0],
"enemy_10073_mpcar": [1,1,0,0,2304],
"enemy_10127_rkmbst_2": [1,0,1,4291,19874],
"enemy_1045_hammer": [1,0,1,145,10120],
"enemy_1045_hammer": [1,0,1,145,8498],
"enemy_1121_lifbos_2": [1,0,1,453,2161],
"enemy_1172_dugago": [1,0,1,573,2706],
"enemy_1195_sfyin": [36,25,11,1028,67596],
"enemy_1195_sfyin_2": [15,8,7,2711,37686],
"enemy_1196_msfyin": [50,40,10,0,83],
"enemy_1196_msfyin_2": [16,15,1,0,47],
"enemy_1197_sfshu": [9,7,2,506,21044],
"enemy_1198_msfshu": [21,13,8,0,46],
"enemy_1203_sfhu": [1,1,0,4133,7488],
"enemy_1204_msfhu": [4,0,4,0,5],
"enemy_1252_lysytb_2": [1,1,0,1377,10368],
"enemy_1305_mhslim": [1,0,1,608,268],
"enemy_1407_hummbd": [1,1,0,347,5184],
"enemy_1512_mcmstr": [1,0,1,7851,11737],
"enemy_2021_syfish": [1,0,1,145,3577]
"enemy_1172_dugago": [1,0,1,346,7726],
"enemy_1195_sfyin": [36,29,7,906,76246],
"enemy_1195_sfyin_2": [15,7,8,1605,39934],
"enemy_1196_msfyin": [58,44,14,0,99],
"enemy_1196_msfyin_2": [14,3,11,0,18],
"enemy_1197_sfshu": [9,6,3,468,21922],
"enemy_1198_msfshu": [18,10,8,0,39],
"enemy_1203_sfhu": [1,1,0,4335,7488],
"enemy_1204_msfhu": [4,0,4,0,4],
"enemy_1252_lysytb_2": [1,0,1,1937,5600],
"enemy_1305_mhslim": [1,1,0,232,1382],
"enemy_1407_hummbd": [1,1,0,77,5184],
"enemy_1512_mcmstr": [1,0,1,6828,7272],
"enemy_2021_syfish": [1,0,1,0,1177]
},
"hooks": [1,188,4200,679,679,939,964,449,126,176,30,30,0,18036,13,43,163,50,1,137,0,0,0],
"events": {"atk":791,"bounty":1,"deploy":23,"die":126,"dmg":950,"fx":127,"leak":50,"skill":60,"spawn":178,"status":56},
"fx": {"aoe":2,"camouflage":1,"displace":20,"dp":3,"explode":20,"expose":1,"pull":20,"sp":1,"strike":3,"summon":42,"volley":7,"wolfShadow":2,"wolfShadowLost":5},
"snaps": "1e865453 bf5ab273 da567691 fe6968a3 5a5519a4 176a1866 672c29cb e491de64 2d441cf0 124654c7 edb7abad 5b41e1b9 bcd0ec37 376197fb"
"hooks": [1,190,4200,653,653,915,920,449,116,179,30,29,0,19129,13,48,166,62,1,123,0,0,0],
"events": {"atk":805,"bounty":2,"deploy":22,"die":117,"dmg":909,"fx":142,"leak":62,"skill":59,"spawn":182,"status":53},
"fx": {"aoe":2,"camouflage":1,"displace":28,"dp":2,"explode":19,"pull":28,"revive":1,"sp":1,"strike":3,"summon":44,"volley":7,"wolfShadow":2,"wolfShadowLost":4},
"snaps": "1e865453 bf5ab273 da567691 fe6968a3 154137f2 3b5be2d3 2bf6358c 68ab8b27 047d4e31 50a382a4 359d8bbe a898fdd8 7f9a5c3c 08b0e4de"
},
"roster-008": {
"about": "pass 0 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",
@@ -542,23 +543,23 @@
"total": 171,
"unspawned": 0,
"bossHpLeft": null,
"rngDraws": 151,
"rngDraws": 164,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":171,"total":171,"perfect":true,"leaks":0,"leaksUncounted":0,"coins":12,"dmg":279608,"bossDmg":0,"heal":534,"deaths":1,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_3_16_b",1,"uniequip_002_snakek",5363,1,3,0,0,0,0,0,0],
["p1",2,"op","chess_char_4_01_a",2,null,4563.74,1,6,0,0,0,0,0,0],
["p1",3,"op","chess_char_3_18_b",2,"uniequip_002_vulpis",3494.6,1,8,4,18685,534,534,22,2],
["p1",4,"op","chess_char_4_04_a",1,null,1977.6,1,12,9,19246,1067,0,152,4],
["p1",5,"op","chess_char_3_13_b",1,"uniequip_002_malist",2378.75,1,9,14,11985,0,0,67,31],
["p1",6,"op","chess_char_3_14_b",1,"uniequip_002_slbell",2793.95,1,10,6,9477,0,0,49,3],
["p1",7,"op","chess_char_3_17_b",1,"uniequip_002_shotst",3811.23,1,14,20,28968,1201,0,59,9],
["p1",8,"op","chess_char_3_19_b",2,"uniequip_002_vigil",3110.54,1,4,2,5707,0,0,12,4],
["p1",9,"op","chess_char_3_20_b",1,"uniequip_002_kjera",2508.5,1,7,3,1457,0,0,14,2],
["p1",10,"op","chess_char_3_21_b",2,"uniequip_002_archet",2750.7,1,11,67,114797,0,0,211,5],
["p1",3,"op","chess_char_3_18_b",2,"uniequip_002_vulpis",3494.6,1,8,4,19286,534,534,23,2],
["p1",4,"op","chess_char_4_04_a",1,null,1977.6,1,12,9,19051,1067,0,144,4],
["p1",5,"op","chess_char_3_13_b",1,"uniequip_002_malist",2378.75,1,9,17,12596,0,0,67,31],
["p1",6,"op","chess_char_3_14_b",1,"uniequip_002_slbell",2793.95,1,10,8,9525,0,0,50,3],
["p1",7,"op","chess_char_3_17_b",1,"uniequip_002_shotst",3811.23,1,14,20,29353,1201,0,58,9],
["p1",8,"op","chess_char_3_19_b",2,"uniequip_002_vigil",3110.54,1,4,3,6258,0,0,17,4],
["p1",9,"op","chess_char_3_20_b",1,"uniequip_002_kjera",2508.5,1,7,2,1598,0,0,21,2],
["p1",10,"op","chess_char_3_21_b",2,"uniequip_002_archet",2750.7,1,11,66,112976,0,0,207,5],
["p1",11,"op","chess_char_4_02_a",2,null,2470.44,1,164,18,57817,2470,0,38,2],
["p1",12,"op","chess_char_4_06_a",1,null,1479.3,1,13,27,10358,676,0,75,2],
["p1",13,"token","token_10028_vigil_wolf",null,null,828.67,1,136,1,1113,4061,0,21,null],
["p1",12,"op","chess_char_4_06_a",1,null,1338.48,1,13,23,10174,817,0,75,2],
["p1",13,"token","token_10028_vigil_wolf",null,null,1026,1,163,1,974,3863,0,17,null],
["-","~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]
],
@@ -569,11 +570,11 @@
"enemy_1046_agent": [1,1,0,0,2700],
"enemy_1148_dssbr_2": [1,1,0,0,3888],
"enemy_1174_duholy": [1,1,0,1276,16200],
"enemy_1195_sfyin": [33,33,0,384,71280],
"enemy_1195_sfyin": [33,33,0,502,71280],
"enemy_1196_msfyin": [66,66,0,0,132],
"enemy_1197_sfshu": [12,12,0,315,32400],
"enemy_1198_msfshu": [36,36,0,0,108],
"enemy_1199_sfjin": [6,6,0,175,42120],
"enemy_1199_sfjin": [6,6,0,0,42120],
"enemy_1200_msfjin": [6,6,0,0,180],
"enemy_1204_msfhu": [1,1,0,0,4],
"enemy_1267_nhpbr": [1,1,0,750,4860],
@@ -582,10 +583,10 @@
"enemy_1513_dekght_2": [1,1,0,6913,43200],
"enemy_2034_sythef": [1,1,0,0,8640]
},
"hooks": [1,188,4746,743,743,1332,1316,115,173,173,64,62,0,21844,123,10,171,0,1,179,0,0,0],
"events": {"atk":918,"bounty":6,"deploy":15,"die":173,"dmg":1315,"fx":178,"skill":126,"spawn":186,"status":252},
"fx": {"camouflage":2,"crit":20,"displace":33,"dp":5,"explode":3,"phase":1,"ripple":10,"shadowWeave":27,"shield":2,"shieldBreak":1,"stealth":4,"summon":51,"telegraph":3,"volley":9,"wolfShadow":3,"wolfShadowLost":3,"zone":1},
"snaps": "666c3952 b094f1ea 38685430 9f090539 ee670c94 1074c7a5 93293922 a5617f28 5b7f9793 095e3e72 c46ed058 dbb905a8 02fb9aea d0e5cb5d a733910b 08ba7414"
"hooks": [1,188,4746,738,738,1313,1297,115,173,173,64,62,0,21844,132,9,171,0,1,179,0,0,0],
"events": {"atk":918,"bounty":6,"deploy":15,"die":173,"dmg":1296,"fx":184,"skill":126,"spawn":186,"status":261},
"fx": {"camouflage":2,"crit":24,"displace":33,"dp":5,"explode":3,"phase":1,"ripple":10,"shadowWeave":27,"shield":2,"shieldBreak":1,"stealth":4,"summon":51,"telegraph":3,"volley":9,"wolfShadow":4,"wolfShadowLost":4,"zone":1},
"snaps": "666c3952 b094f1ea 38685430 9f090539 ee670c94 1074c7a5 93293922 a5617f28 5b7f9793 3c0a7490 14387936 dcb74c1a a58e1beb 82ecbe91 64e48fa5 85eef6b4"
},
"roster-010": {
"about": "pass 0 band 4: chess_char_4_17_a chess_char_4_18_a chess_char_4_11_a chess_char_4_12_a chess_char_4_19_a chess_char_4_07_a chess_char_4_16_a chess_char_4_09_a chess_char_4_10_a chess_char_4_13_a chess_char_4_14_a chess_char_4_20_a token_10041_cathy_catsld token_10041_cathy_catsld",
@@ -1694,8 +1695,8 @@
"enemy_9010_acpupp": [1,0,1,0,1540]
},
"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},
"events": {"atk":410,"bounty":3,"deploy":22,"die":35,"dmg":1457,"fx":20,"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,"wolfShadowLost":1},
"snaps": "b8ad25ab 03f51213 f84a4bf7 9a29353d 19f6d9a9 5330fd8a f6dda9d3 43873b05 57a77a2a 94494c3a ade46bcb e1b4f57e 436600a0 c60c5a58"
},
"roster-027": {
@@ -1769,39 +1770,39 @@
"bossHpLeft": null,
"rngDraws": 84,
"errors": {"count":0,"kinds":[]},
"players": {"p1":{"killed":3,"total":62,"perfect":false,"leaks":59,"leaksUncounted":0,"coins":0,"dmg":157324,"bossDmg":0,"heal":105,"deaths":25,"layerGains":{}}},
"players": {"p1":{"killed":3,"total":62,"perfect":false,"leaks":59,"leaksUncounted":0,"coins":0,"dmg":153754,"bossDmg":0,"heal":105,"deaths":26,"layerGains":{}}},
"units": [
["p1",1,"op","chess_char_3_16_b",0,"none",0,0,4,0,70,4069,0,7,1],
["p1",2,"op","chess_char_4_01_a",0,null,0,0,7,0,0,3614,0,0,0],
["p1",3,"op","chess_char_3_18_b",0,"uniequip_003_vulpis",0,0,10,0,0,2743,105,0,0],
["p1",4,"op","chess_char_4_04_a",0,null,799.54,1,90,0,15633,20901,0,35,5],
["p1",4,"op","chess_char_4_04_a",0,null,0,0,91,0,13678,21701,0,34,4],
["p1",5,"op","chess_char_3_13_b",0,"none",0,0,1,0,15809,1802,0,35,1],
["p1",6,"op","chess_char_3_14_b",0,"none",0,0,83,1,25147,4151,0,29,1],
["p1",7,"op","chess_char_3_17_b",0,"none",0,0,89,1,31808,7884,0,21,7],
["p1",8,"op","chess_char_3_19_b",0,"uniequip_003_vigil",0,0,2,1,24320,2429,0,34,3],
["p1",6,"op","chess_char_3_14_b",0,"none",0,0,88,1,23224,4151,0,27,1],
["p1",7,"op","chess_char_3_17_b",0,"none",0,0,82,1,31808,7884,0,21,7],
["p1",8,"op","chess_char_3_19_b",0,"uniequip_003_vigil",0,0,2,1,24320,2429,0,34,4],
["p1",9,"op","chess_char_3_20_b",0,"none",0,0,9,0,4159,1897,0,11,1],
["p1",10,"op","chess_char_3_21_b",0,"uniequip_003_archet",0,0,60,0,17805,4603,0,22,8],
["p1",11,"op","chess_char_4_02_a",0,null,0,0,65,0,9310,5869,0,7,0],
["p1",12,"op","chess_char_4_06_a",0,null,0,0,74,0,7987,3414,0,17,1],
["p1",13,"token","token_10028_vigil_wolf",null,null,0,0,3,0,5276,3473,0,12,null]
["p1",10,"op","chess_char_3_21_b",0,"uniequip_003_archet",0,0,61,0,17805,4603,0,22,8],
["p1",11,"op","chess_char_4_02_a",0,null,0,0,66,0,9310,5869,0,7,0],
["p1",12,"op","chess_char_4_06_a",0,null,0,0,74,0,8278,3414,0,17,1],
["p1",13,"token","token_10028_vigil_wolf",null,null,0,0,39,0,5293,4499,0,13,null]
],
"enemies": {
"enemy_10044_wintun": [1,0,1,6689,14921],
"enemy_10127_rkmbst_2": [1,0,1,1878,0],
"enemy_1019_jshoot_2": [18,0,18,8026,19151],
"enemy_1092_mdgint": [1,0,1,0,374],
"enemy_1019_jshoot_2": [18,0,18,7757,16859],
"enemy_1092_mdgint": [1,0,1,1026,391],
"enemy_1174_duholy_2": [1,0,1,1445,892],
"enemy_1234_dsubrl": [1,0,1,4496,214],
"enemy_1328_cbjedi": [1,0,1,0,267],
"enemy_1381_winman": [21,3,18,7318,106180],
"enemy_1389_winbab_2": [15,0,12,34758,14615],
"enemy_1381_winman": [21,3,18,7653,104478],
"enemy_1389_winbab_2": [15,0,12,35491,15020],
"enemy_1509_mousek": [1,0,1,1686,0],
"enemy_9006_actoxi": [1,0,1,554,712]
},
"hooks": [1,89,5100,404,404,513,529,30,29,85,28,28,0,4321,18,29,62,56,1,32,0,0,18],
"events": {"atk":431,"deploy":27,"die":29,"dmg":505,"fx":84,"leak":56,"skill":56,"spawn":75,"status":83},
"fx": {"camouflage":1,"crit":6,"dodge":18,"dp":3,"phase":1,"pulse":17,"sentry":8,"shadowWeave":11,"shield":4,"shieldBreak":2,"summon":2,"telegraph":1,"volley":6,"wolfShadowLost":3,"zone":1},
"snaps": "7c092213 c094fdd0 61afa7ba 7ab796f5 181fca6b 71abad47 8bc283c6 0928fca3 2eb15bdf 35788dd1 8be98855 61cc5888 771b79b1 2212bef6 d09f87b0 fc2cc2ef d14c6547"
"hooks": [1,90,5100,401,401,504,520,30,31,87,28,28,0,4426,16,27,62,56,1,34,0,0,18],
"events": {"atk":426,"deploy":28,"die":31,"dmg":496,"fx":88,"leak":56,"skill":56,"spawn":75,"status":79},
"fx": {"camouflage":1,"crit":6,"dodge":18,"dp":4,"phase":1,"pulse":17,"revive":1,"sentry":9,"shadowWeave":9,"shield":4,"shieldBreak":2,"summon":3,"telegraph":1,"volley":6,"wolfShadowLost":5,"zone":1},
"snaps": "7c092213 c094fdd0 61afa7ba 7ab796f5 513e5d4e 4a180eed f5d75fff 20004d5b d4cf3e4e e860333f 2580eac0 7b4a044a 27c913a4 dd5637ac f12e3851 a9e14dc9 76318156"
},
"roster-029": {
"about": "pass 1 band 4: chess_char_4_17_a chess_char_4_18_a chess_char_4_11_a chess_char_4_12_a chess_char_4_19_a chess_char_4_07_a chess_char_4_16_a chess_char_4_09_a chess_char_4_10_a chess_char_4_13_a chess_char_4_14_a chess_char_4_20_a token_10041_cathy_catsld token_10041_cathy_catsld",
@@ -2510,8 +2511,8 @@
"enemy_9016_acstmr": [1,1,0,0,8]
},
"hooks": [1,95,5100,533,533,815,851,518,50,90,17,28,16,7820,316,21,65,40,1,60,0,1,0],
"events": {"atk":606,"bounty":1,"deploy":28,"die":50,"dmg":845,"fx":93,"leak":40,"skill":34,"spawn":80,"status":171},
"fx": {"beam":5,"block":3,"buff":2,"burst":1,"coldWind":1,"displace":15,"dp":1,"iceSpike":1,"liberate":1,"overclock":1,"overload":1,"palsy":3,"revive":3,"rockfall":1,"sentry":6,"shadowWeave":11,"shield":7,"shieldBreak":6,"stone":1,"swordStorm":7,"telegraph":2,"volley":9,"wake":1,"wolfShadow":1,"wolfShadowLost":2,"zone":1},
"events": {"atk":606,"bounty":1,"deploy":28,"die":50,"dmg":845,"fx":94,"leak":40,"skill":34,"spawn":80,"status":171},
"fx": {"beam":5,"block":3,"buff":2,"burst":1,"coldWind":1,"displace":15,"dp":1,"iceSpike":1,"liberate":1,"overclock":1,"overload":1,"palsy":3,"revive":3,"rockfall":1,"sentry":6,"shadowWeave":11,"shield":7,"shieldBreak":6,"stone":1,"swordStorm":7,"telegraph":2,"volley":9,"wake":1,"wolfShadow":1,"wolfShadowLost":3,"zone":1},
"snaps": "de3ca31c 182b136c 5c27b035 f8f15ac1 250e93d3 6fde9171 1273cfdd f1c0ebf4 8e50442c 8277b17d 3a6591ca 5a144122 2014c207 a4445fd0 3d27fbdc 8d62308c d9b05d02"
},
"roster-041": {