UnitMetadataState.kt

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

/**
 * 战斗单位的结构化元数据。
 *
 * 设计意图:
 * - 承载“会被规则计算直接读取”的单位元数据,避免继续把这些值塞进调试探针状态;
 * - 保持这些元数据跟随 battle runtime snapshot 一起导出/恢复;
 * - 为后续继续从调试状态中剥离更多半结构化字段提供稳定容器。
 *
 * 当前只收口已经在 battle / capture 公式中被直接读取的字段。
 */
data class UnitMetadataState(
    val creatureId: Long? = null,
    val creatureSpeciesId: Long? = null,
    val creatureInternalName: String? = null,
    val creatureName: String? = null,
    val level: Int? = null,
    val requiredExperience: Int? = null,
    val natureId: Long? = null,
    val captureRate: Int? = null,
    val weight: Int? = null,
    val captureContext: UnitCaptureContextState = UnitCaptureContextState(),
    val ivs: Map<String, Int> = emptyMap(),
    val evs: Map<String, Int> = emptyMap(),
)