InvertStoredBoostsActionNode.kt

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

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 逐项取反的动作。
 *
 * 典型用法:
 * - Topsy-Turvy: `target=target`
 *
 * @property target 需要被取反的单位。
 * @property stats 只取反指定能力项;为空时表示目标当前全部 boosts 项。
 */
data class InvertStoredBoostsActionNode(
    val target: TargetSelectorId,
    val stats: Set<String> = emptySet(),
) : ActionNode {
    override val type: ActionTypeId = StandardActionTypeIds.INVERT_STORED_BOOSTS
}