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
}