ApplySideConditionMutation.kt

package io.github.lishangbu.avalon.game.battle.engine.core.mutation

import io.github.lishangbu.avalon.game.battle.engine.core.type.TargetSelectorId

/**
 * side condition 挂载变更。
 *
 * @property target 目标 side 选择器,只允许 `side` 或 `foe_side`。
 * @property conditionEffectId 需要挂载的 side condition effect 标识。
 * @property duration 可选的剩余持续回合数。
 * @property sourceId 可选的来源单位标识。
 */
data class ApplySideConditionMutation(
    val target: TargetSelectorId,
    val conditionEffectId: String,
    val duration: Int? = null,
    val sourceId: String? = null,
) : BattleMutation