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
@@ -36,7 +36,7 @@ import {
|
||||
num, itemRecord, itemKeyOf, buffsOf, isOp, onField, unitBonds, isMember, bondActive, isGroundOp, frontTile,
|
||||
alliesAround, passiveBuff, fxOn, battleStore, contentInfo, itemsOf, directMods,
|
||||
} from '../support/index.js';
|
||||
import { mitigate, hasHp } from '../../damage.js';
|
||||
import { mitigate, hasHp, periodicDamage, isHpLoss } from '../../damage.js';
|
||||
|
||||
// =====================================================================================================================
|
||||
// data helpers
|
||||
@@ -315,11 +315,15 @@ function onAttackEnemies(S, u, fn) {
|
||||
|
||||
/** Generic buff-key behaviours (shared by several items). */
|
||||
const BY_BUFF = {
|
||||
// 源石溶剂: 每秒流失 damage 点生命值 (HP loss, may kill)
|
||||
// 源石溶剂: the text's "每秒流失 damage 点生命值" is officially 每秒受到 damage 点真实伤害 (PRTS 盟约记录 修正 "并非流失", 备注
|
||||
// "造成无来源真实持续环境伤害"; the `periodic_damage` template — also 狂暴宿主 "自身每秒受到N无来源真实伤害"): a damage instance,
|
||||
// not a 流失 — shields, damage-taken modifiers and the target-side `hit` effects apply, and it is a "受到伤害" for 受击回复
|
||||
// SP, the 重装 TAKE_DAMAGE trigger and 信仰搅拌机 S3's counters (player report D1). 无来源: hooks see no source; the carrier
|
||||
// keeps the credit (a carrier the drain finishes off is its own kill, as before). May kill.
|
||||
periodic_damage(battle, u, p, S) {
|
||||
const d = num(p.damage);
|
||||
if (!(d > 0)) return;
|
||||
S.stat('drain', null, { interval: 1, onTick: ({ unit }) => { if (unit.deployed) battle.loseHp(unit, d, { source: unit }); } });
|
||||
S.stat('drain', null, { interval: 1, onTick: ({ unit }) => { if (unit.deployed) battle.dealDamage(unit, unit, periodicDamage(d)); } });
|
||||
},
|
||||
// 奥术法阵: 攻击使目标失去特殊能力 silence s
|
||||
silence_attachment(battle, u, p, S) {
|
||||
@@ -439,14 +443,14 @@ const BY_ITEM = {
|
||||
S.buff(u, { key, mods, refresh: 'stack', stacks: 1, maxStacks: cap, persist: true, allowDead: true });
|
||||
});
|
||||
},
|
||||
// 伪装服: first damage taken in the battle ⇒ 隐匿 `duration` s
|
||||
// 伪装服: first damage taken in the battle ⇒ 隐匿 `duration` s (a 流失 is not 受到伤害: damage.js isHpLoss)
|
||||
chess_item_4_04_e(battle, u, rec, S) {
|
||||
const p = bp(rec, 'act2autochess_equip_acarm055_global_buff');
|
||||
const d = p ? num(p.duration) : 0;
|
||||
if (!(d > 0)) return;
|
||||
let used = false;
|
||||
S.on('damaged', (c) => {
|
||||
if (used || c.target !== u || !(c.amount > 0) || !u.alive) return;
|
||||
if (used || c.target !== u || !(c.amount > 0) || !u.alive || isHpLoss(c.dmg)) return;
|
||||
used = true;
|
||||
battle.applyStatus(u, 'stealth', { duration: d, source: u });
|
||||
fxOn(battle, 'camouflage', u, 'item:chess_item_4_04_e', rec.id, { duration: d });
|
||||
|
||||
Reference in new issue
Block a user