ApplyConditionActionNode.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

/**
 * 挂载 condition / effect 的动作。
 *
 * @property target 目标选择器。
 * @property value condition 或 effect 标识。
 * @property duration 可选的持续回合数;空值表示不声明固定持续时间。
 */
data class ApplyConditionActionNode(
    val target: TargetSelectorId,
    val value: String,
    val duration: Int? = null,
) : ActionNode {
    override val type: ActionTypeId = StandardActionTypeIds.APPLY_CONDITION
}