applyDirectDamage
fun applyDirectDamage(session: BattleSession, sourceId: String, targetId: String, damage: Int): BattleRuntimeSnapshot
将直接伤害 mutation 应用到当前快照。
设计意图:
move resolution 主流程当前只把“最终伤害数字”算出来,还没有把这一步自动接进 mutation interceptor 链;
因此这里在真正扣血前,手动为目标派发一次
on_damage;与
DamageBattleMutationInterceptor不同,这里是单目标直接扣血路径,可以安全支持数值 relay 覆盖。