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
@@ -61,6 +61,11 @@ export const cheb = (a, b) => (b.hitArea ? bodyTileReach(b, Math.round(a.y), Mat
|
||||
export const isMainHit = (dmg) => !!dmg && dmg.isAttack && !dmg.isSplash && !(dmg.tags && dmg.tags.includes('chain'));
|
||||
/** Damage ctx caused by an enemy's attack. */
|
||||
export const byEnemyAttack = (ctx) => !!ctx.source && ctx.source.side === 'enemy' && !!ctx.dmg && ctx.dmg.isAttack;
|
||||
/**
|
||||
* `damaged` ctx of a damage that removed HP and can give 受击回复 SP — the engine's rule (damage.js applyHpLoss: not a 流失
|
||||
* (`noSp`, Battle.loseHp), not an element 损伤), whatever its source: an attack, a zone, the 无来源 源石溶剂 tick.
|
||||
*/
|
||||
export const hurtSpDamage = (ctx) => !!ctx.dmg && !ctx.dmg.noSp && ctx.type !== 'element' && ctx.amount > 0;
|
||||
/** A timed skill is running (no SP may be gained). */
|
||||
export const skillBusy = (u) => !!(u.skill && u.skill.active && u.skill.isTimed);
|
||||
/** Give SP unless a timed skill is running (AK: no SP gain during a skill). */
|
||||
@@ -1033,8 +1038,10 @@ export default {
|
||||
talents: [{ install(battle, unit) {
|
||||
const sp = num(t.sp);
|
||||
if (sp > 0) {
|
||||
// PRTS 备注 "仅伤害量不为0且能够触发受击回复的伤害才能触发此天赋": any such damage, not only an enemy attack
|
||||
// (a zone tick, the 源石溶剂 drain — player report D1 audit)
|
||||
onDamagedOn(battle, unit, (ctx) => {
|
||||
if (!byEnemyAttack(ctx) || !up(unit)) return;
|
||||
if (!hurtSpDamage(ctx) || !up(unit)) return;
|
||||
giveSp(unit, sp);
|
||||
const mates = alliesInGridOf(battle, unit, grid ?? [[1, 0], [0, -1], [0, 1], [-1, 0]]).filter((a) => a !== unit && a.skill && !a.skill.noSkill);
|
||||
const m = battle.rng.pick(mates);
|
||||
|
||||
Reference in new issue
Block a user