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:
sganggs committed 2026-10-03 04:23:21 +08:00
1 parent 7f134737ce
commit 01f5b216c6
15 files changed
+447 -38

No files matched your search

+6 -2
View File
@@ -19,7 +19,8 @@
// instances multiplied (×5.4 × ×5.6 on a leader at ~250 layers, DESIGN §20.10)
// 坚守 steadShip all operators max HP +(base + per·L); tier 2: 40 % of a non-member operator's damage is borne by
// the members on the field (split evenly, sourceless true damage — already mitigated), members’ thorns
// (base + per·L arts, sourceless but credited to the member hit, ≤ 1 per cd_duration per member)
// (base + per·L arts, sourceless but credited to the member hit, ≤ 1 per cd_duration per member;
// 无来源 damage uses the chance and hits nobody, a 流失 never does — PRTS 备注 / 作战机制)
// + 脆弱 ×damage_scale for weak[limit] s
// 助力 deputShip all operators DEF +(base + per·L), redeploy time ×(1 + respawn_time)
// 突袭 raidShip member idle ≥ no_attack_duration s (or skill ready) with no enemy in range → "保留技力立即再部署"
@@ -41,6 +42,7 @@
import { absoluteRangeKeys, canTargetEnemy } from '../../../targeting.js';
import { localOrder, localBefore } from '../../../dir.js';
import { isHpLoss } from '../../../damage.js';
import {
num, bondRecord, buffParams, bondTier, bondLayers, isMember, isElite, isGroundOp, onField, playerOps, passiveBuff,
fxOn, N4, N8, bodyInKeys, directMods,
@@ -440,7 +442,9 @@ export function install(battle) {
}
return;
}
if (dmg.steadShare || dmg.steadThorn || c.type === 'element' || !st.members[ID.stead].has(t)) return;
// a 流失 never uses a thorn chance (PRTS 作战机制 "生命流失不会触发反伤"); 无来源 damage does, hitting nobody (备注
// "可被无来源伤害消耗反伤机会")
if (dmg.steadShare || dmg.steadThorn || c.type === 'element' || isHpLoss(dmg) || !st.members[ID.stead].has(t)) return;
const bb = st.bb[ID.stead];
const last = t.mem[STEAD_CD] ?? -Infinity;
if (battle.time - last < num(bb.cd_duration) - 1e-9) return;