StealBoostsActionNode.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 的动作。
 *
 * 典型用法:
 * - Spectral Thief: `target=self, from=target, selection=positive`
 *
 * @property target 接收 boost 的单位。
 * @property from 被偷取 boost 的单位。
 * @property selection 只偷全部 / 正向 / 负向 boosts。
 * @property stats 只偷指定能力项;为空时表示 selection 命中的全部项。
 */
data class StealBoostsActionNode(
    val target: TargetSelectorId,
    val from: TargetSelectorId,
    val selection: String = BattleBoostRelaySelectionValues.POSITIVE,
    val stats: Set<String> = emptySet(),
) : ActionNode {
    override val type: ActionTypeId = StandardActionTypeIds.STEAL_BOOSTS
}