GameBattleActionRequests.kt

package io.github.lishangbu.avalon.game.battle.api

/**
 * 面向前端的智能出招请求。
 */
data class SmartMoveChoiceRequest(
    val attackerId: String,
    val moveId: String,
    val targetId: String? = null,
    val priority: Int? = null,
    val speed: Int? = null,
    val accuracy: Int? = null,
    val evasion: Int? = null,
    val basePower: Int? = null,
    val damage: Int? = null,
    val accuracyRoll: Int? = null,
    val chanceRoll: Int? = null,
    val criticalRoll: Int? = null,
    val damageRoll: Int? = null,
    val criticalHit: Boolean? = null,
    val attributes: Map<String, Any?> = emptyMap(),
)

/**
 * 面向前端的智能用道具请求。
 */
data class SmartItemChoiceRequest(
    val actorUnitId: String,
    val itemId: String,
    val targetId: String? = null,
    val priority: Int? = null,
    val speed: Int? = null,
    val chanceRoll: Int? = null,
    val attributes: Map<String, Any?> = emptyMap(),
)

/**
 * 面向前端的智能捕捉请求。
 */
data class SmartCaptureChoiceRequest(
    val playerId: String,
    val ballItemId: String,
    val sourceUnitId: String? = null,
    val targetId: String,
    val priority: Int? = null,
    val speed: Int? = null,
)

/**
 * 面向前端的换人请求。
 */
data class SubmitSwitchChoiceRequest(
    val sideId: String,
    val outgoingUnitId: String,
    val incomingUnitId: String,
    val priority: Int? = null,
    val speed: Int? = null,
)

/**
 * 面向前端的逃跑请求。
 */
data class SubmitRunChoiceRequest(
    val sideId: String,
    val priority: Int? = null,
    val speed: Int? = null,
)

/**
 * 面向前端的替补上场请求。
 */
data class SubmitReplacementChoiceRequest(
    val sideId: String,
    val incomingUnitId: String,
)