feedback5 O4: 艾丽妮's 审判之火 charge does not outlive her deployment (a buff on her: a redeploy starts without one); golden unchanged

This commit is contained in:
sganggs committed 2026-10-05 23:53:55 +08:00
1 parent a62728c188
commit b6aa74e87e
2 files changed
+17 -3

No files matched your search

+10 -3
View File
@@ -17,9 +17,9 @@
// damage instance she deals (normal or skill) she holds a 物理穿透 charge or draws one — always against an air unit (no
// random draw; 浮空 enemies are air units, ba.levitate), with `prob` against a ground one — and the charge adds
// def_penetrate to that instance's defIgnorePct; it is spent only by a damage instance that lands (a dodge or a cancel
// keeps it, and while she holds one she draws nothing: 不可叠加). SWO-X stage 3: 55 % and "技能期间若击倒空中单位,技能结束
// 时获得6点技力" — an air unit she knocks out while her skill is active (S1's strike, S2's cut, S3's 3.5 s) gives her +sp SP
// once that skill ends.
// keeps it, and while she holds one she draws nothing: 不可叠加); a buff on her, so a new deployment starts without one.
// SWO-X stage 3: 55 % and "技能期间若击倒空中单位,技能结束时获得6点技力" — an air unit she knocks out while her skill
// is active (S1's strike, S2's cut, S3's 3.5 s) gives her +sp SP once that skill ends.
// - T2 净化之剑 "攻击速度+18,场上有【海怪】敌人时效果翻倍": ASPD +attack_speed; SWO-Y stage 3 adds ATK +5 % (the module talent
// change's atk); both doubled while a living 【海怪】 enemy (data tag seamonster) is on the field.
// - S1 起风 (AUTO, attack SP, DEFAULT): the next attack strikes its target once for atk_scale × ATK physical and levitates it
@@ -148,6 +148,13 @@ export default {
talents: [
{ install(battle, unit) { // 审判之火: a 物理穿透 charge per physical instance (air: always, ground: prob), spent on landing
const prob = num(t0.prob), pen = num(t0.def_penetrate), sp = num(t0.sp);
// the charge is a buff on her: a new deployment starts without one (an operator leaving the field loses its buffs)
battle.on('deploy', (ctx) => {
if (ctx.unit !== unit) return;
unit.mem.ireneCharge = false;
unit.mem.ireneChargeDmg = null;
unit.mem.ireneAirKill = false;
}, { owner: unit });
if (pen > 0) {
onHitBy(battle, unit, (ctx) => {
const d = ctx.dmg, m = unit.mem;
+7
View File
@@ -136,6 +136,13 @@ test('T1 审判之火 vs a ground enemy: one draw per physical instance at 50 %;
approx(h.b.dealDamage(u, g, { amount: 1000, type: 'phys' }), 1000 - 400 * (1 - pen), 'pierced');
assert.equal(h.b.rng.state(), st, 'no draw while a charge is held');
assert.equal(u.mem.ireneCharge, false, 'spent');
// a held charge does not outlive her deployment (a buff on her)
assert.equal(h.b.dealDamage(u, fly, { amount: 1000, type: 'phys' }), 0, 'dodged again');
assert.equal(u.mem.ireneCharge, true, 'held');
h.b.retreat(u);
h.b.redeploy(u);
assert.ok(u.alive && u.deployed, 'redeployed');
assert.equal(u.mem.ireneCharge, false, 'a new deployment holds no charge');
done(h);
}
});