feedback1d WL: 源石溶剂 drain is 无来源 true damage; 信仰搅拌机 S3 counters any damage
Player report D1: the 源石溶剂 HP loss should set off 信仰搅拌机 S3 and, next to 莫斯提马, stack 拉特兰 layers on its own. The drain was a Battle.loseHp 流失, which skips 受击回复 SP and the 重装 TAKE_DAMAGE trigger, and the S3 counter needed an enemy attack and a target. Official: PRTS 盟约记录 源石溶剂 "受到60真实伤害" (修正 "并非流失", 备注 "造成无来源真实持续环境伤害"); PRTS 信仰搅拌机 S3 备注 "反击受到任何伤害后均可触发, 无需目标,视为普通攻击"; PRTS 作战机制: 生命流失 skips 反伤 / 受击回复. - damage.js periodicDamage: the periodic_damage template (源石溶剂, 狂暴宿主组长) as 无来源 true damage (shields, damage-taken modifiers, hit effects, 受击回复 SP, TAKE_DAMAGE); the credit is unchanged. - 信仰搅拌机 S3: any damage except 流失 / element 损伤 counters; with no enemy in range the counter still spends its bullet. - Audit, same rule both ways (damage.js isHpLoss): 孽罪奇美拉's aura on operators is damage; 雷蛇 战术防御 and 蒂比 S2 / 片场工作指南 respond to any damage (PRTS notes); 乌尔比安, 伪装服, 远牙, 录武官's guard and 坚守 thorn chances no longer respond to a 流失. - data/items.json regenerated (源石溶剂 implFormula text only).
This commit is contained in:
1 parent
7f134737ce
commit
01f5b216c6
15 files changed
+447
-38
No files matched your search
@@ -1292,14 +1292,22 @@ test('2_11 风丸: while substituted she fights with the <替身> ATK/DEF (+modu
|
||||
}
|
||||
});
|
||||
|
||||
test('2_13 蒂比: only enemy attacks set off 紧急赶场通知; a true-damage attack triggers it but is not dodged', () => {
|
||||
test('2_13 蒂比: any damage instance sets off 紧急赶场通知 (PRTS 修正 "受到伤害前触发") and a physical one is dodged; a 流失 does not; a true-damage attack triggers it but is not dodged', () => {
|
||||
const id = 'chess_char_2_13_a';
|
||||
const g = run({ units: [{ chessId: id, row: 9, col: 5, carryState: READY }] });
|
||||
const v = g.unit(id);
|
||||
g.step();
|
||||
g.b.loseHp(v, 50);
|
||||
g.step();
|
||||
assert.equal(v.skill.active, false, 'a 流失 never triggers it');
|
||||
const hp = v.hp;
|
||||
g.b.dealDamage(null, v, { amount: 50, type: 'phys' });
|
||||
assert.ok(v.skill.active, 'a non-attack (sourceless) damage instance triggers it');
|
||||
assert.equal(v.hp, hp, '…and the physical damage is dodged');
|
||||
done(g);
|
||||
const h = run({ defs: { enemies: { e: dummy('e', { atk: 300, bat: 1, dmgType: 'true' }) } }, units: [{ chessId: id, row: 9, col: 5, carryState: READY }] });
|
||||
const u = h.unit(id);
|
||||
h.step();
|
||||
h.b.dealDamage(null, u, { amount: 50, type: 'phys' });
|
||||
h.step();
|
||||
assert.equal(u.skill.active, false, 'non-attack damage never triggers it');
|
||||
h.spawn('e', { pos: [9, 5] });
|
||||
h.runUntil(() => u.skill.active, 3);
|
||||
assert.ok(u.skill.active, 'the attack triggered it');
|
||||
|
||||
Reference in new issue
Block a user