feedback5 WC: 伺夜 S2 and 浊心斯卡蒂 S2, AUTO skills that act on allies, fire without an enemy (audit after GitHub #124)
Audit of every AUTO time-SP skill with no enemy on the field: 35 never fired. Two need no target and are fixed: 伺夜 S2 领袖的馈赠 — PRTS 备注 「仅场上存在狼群,且狼群未获得此技能的充能时可触发技能」: the kit casts it when ready while the pack stands and holds no unused gift (it waited for 伺夜's own next attack and could overwrite an unused gift); 浊心斯卡蒂 S2 同葬无光之愿 (鼓舞 on allies + trait heal, a toggle) is SP_FULL like 魔王 S1. The rest correctly wait for a target (next-attack / next-heal skills, attack modes, enemy-targeted effects) or are left for the owner (赫默 S2 / 巫恋 S2 summon releases, 纯烬艾雅法拉 S1); the list is in the 0.2.0 doc draft. Golden: roster-039 / roster-040 (伺夜 with S2, normal and elite) moved: S2 now casts whenever the pack holds no gift.
This commit is contained in:
1 parent
01fddd3021
commit
1576842641
5 files changed
+99
-45
No files matched your search
@@ -829,6 +829,32 @@ 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');
|
||||
h.run(1);
|
||||
const w = u.trait.reinforcement;
|
||||
assert.ok(w && w.alive, 'the pack stands');
|
||||
const dp0 = p.dp;
|
||||
fill(u);
|
||||
assert.ok(h.runUntil(() => u.skill.activations === 1, 1), '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
|
||||
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');
|
||||
done(h);
|
||||
}
|
||||
});
|
||||
|
||||
test('3_19 伺夜 精锐 module TAC-Y: ×165 % on pack-blocked enemies; "援军阻挡的敌人更容易受到我方的攻击" = those enemies taunt +1 (not the pack); TAC-X guard not applied', () => {
|
||||
const id = 'chess_char_3_19_b', mod = 'uniequip_003_vigil';
|
||||
const tb = ds.getChess(id, { moduleId: mod }).traitBb;
|
||||
|
||||
@@ -366,6 +366,23 @@ test('6_04 浊心斯卡蒂 S2 同葬无光之愿: toggle; 鼓舞 ATK and DEF (at
|
||||
}
|
||||
});
|
||||
|
||||
test('6_04 浊心斯卡蒂 S2 同葬无光之愿 (自动触发, effects on her allies only): on as soon as its SP is full — no enemy needed', () => {
|
||||
for (const id of both('chess_char_6_04')) {
|
||||
const sid = 'skchr_skadi2_2';
|
||||
const h = run({
|
||||
defs: { chess: { ally_a: plain('ally_a', { stats: { maxHp: 1e5, atk: 400, def: 100 } }) } },
|
||||
units: [U(id, sid, 10, 4, { carryState: READY }), { chessId: 'ally_a', row: 10, col: 5 }],
|
||||
});
|
||||
const u = h.unit(id), a = h.unit('ally_a');
|
||||
usesSkill(u, sid);
|
||||
assert.equal(u.skill.rule, 'SP_FULL');
|
||||
assert.ok(h.runUntil(() => u.skill.active, 2), 'on with nobody on the field (the data DEFAULT waited for an enemy in her range)');
|
||||
h.run(1.1);
|
||||
assert.ok(a.findBuff('inspire') && a.findBuff('inspire:def'), '鼓舞 on the ally beside her');
|
||||
done(h);
|
||||
}
|
||||
});
|
||||
|
||||
// =================================================================================================================
|
||||
// 6_05 异客
|
||||
|
||||
|
||||
Reference in new issue
Block a user