AttachedEffectState.kt

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

/**
 * 挂载在运行时对象上的 effect state 骨架。
 *
 * 设计意图:
 * - 保存 effect 的局内状态,而不是把这些信息散落在 battle / side / unit 字段中。
 * - 为持续回合、来源、创建顺序等信息提供统一容器。
 *
 * @property effectId effect 定义标识。
 * @property sourceId effect 来源对象标识。
 * @property duration 剩余持续时间,空值表示无固定持续回合。
 * @property effectOrder effect 挂载顺序,用于稳定 tie-break。
 * @property internalState effect 自身维护的内部工作状态集合。
 * @property debugFlags effect 对外可观测的轻量调试标记集合。
 */
data class AttachedEffectState(
    val effectId: String,
    val sourceId: String? = null,
    val duration: Int? = null,
    val effectOrder: Int = 0,
    val internalState: Map<String, String> = emptyMap(),
    val debugFlags: Map<String, String> = emptyMap(),
)