BoostFromRelayActionNode.kt

package io.github.lishangbu.avalon.game.battle.engine.core.dsl.action

import io.github.lishangbu.avalon.game.battle.engine.core.constant.BattleBoostRelaySelectionValues
import io.github.lishangbu.avalon.game.battle.engine.core.dsl.ActionNode
import io.github.lishangbu.avalon.game.battle.engine.core.type.ActionTypeId
import io.github.lishangbu.avalon.game.battle.engine.core.type.StandardActionTypeIds
import io.github.lishangbu.avalon.game.battle.engine.core.type.TargetSelectorId

/**
 * 把当前 boost relay 动态转成新的 `BoostMutation`。
 *
 * 设计意图:
 * - 支持 Mirror Armor 这类“把当前收到的降能力反弹给来源”的模板;
 * - 支持规则直接复用当前 relay,而不是把能力变化再写死一遍;
 * - 可按正负方向过滤 relay 中的能力变化项。
 *
 * @property target 新 boost mutation 的目标选择器。
 * @property selection 从 relay 中挑选 boost 项的范围。
 */
data class BoostFromRelayActionNode(
    val target: TargetSelectorId,
    val selection: String = BattleBoostRelaySelectionValues.ALL,
) : ActionNode {
    override val type: ActionTypeId = StandardActionTypeIds.BOOST_FROM_RELAY
}