applyDirectDamage

fun applyDirectDamage(session: BattleSession, sourceId: String, targetId: String, damage: Int): BattleRuntimeSnapshot

将直接伤害 mutation 应用到当前快照。

设计意图:

  • move resolution 主流程当前只把“最终伤害数字”算出来,还没有把这一步自动接进 mutation interceptor 链;

  • 因此这里在真正扣血前,手动为目标派发一次 on_damage

  • DamageBattleMutationInterceptor 不同,这里是单目标直接扣血路径,可以安全支持数值 relay 覆盖。