CopyBoostsActionNode.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
/**
* 复制另一单位当前 stored boosts 的动作。
*
* 典型用法:
* - Psych Up: `target=self, from=target`
*
* @property target 接收复制结果的单位。
* @property from 被读取当前 boosts 的单位。
* @property selection 只复制全部 / 正向 / 负向 boosts。
* @property stats 只复制指定能力项;为空时表示 selection 命中的全部项。
*/
data class CopyBoostsActionNode(
val target: TargetSelectorId,
val from: TargetSelectorId,
val selection: String = BattleBoostRelaySelectionValues.ALL,
val stats: Set<String> = emptySet(),
) : ActionNode {
override val type: ActionTypeId = StandardActionTypeIds.COPY_BOOSTS
}