chooseCombatDamageAssignment
Sent when an attacker’s combat damage must be divided among its blockers — and possibly the defending player or planeswalker if the attacker has trample. For example, a 4/4 trampler blocked by a 2/2 may assign 2 to the blocker and let the remaining 2 trample through.
Arguments
Section titled “Arguments”input.type is "chooseCombatDamageAssignment". The remaining fields:
interface ChooseCombatDamageAssignmentInput { attackerId: string; blockerIds: Array<string>; defenderId?: string; totalDamage: number; attackerHasDeathtouch: boolean;}#[serde(rename_all = "camelCase")]pub struct ChooseCombatDamageAssignmentInput { pub attacker_id: String, pub blocker_ids: Vec<String>, #[serde(default, skip_serializing_if = "Option::is_none")] pub defender_id: Option<String>, pub total_damage: i32, pub attacker_has_deathtouch: bool,}Response
Section titled “Response”type ChooseCombatDamageAssignmentOutput = { type: "combatDamageAssignmentDecision"; assignments: CombatDamageAssignmentEntry[];};type CombatDamageAssignmentEntry = { assigneeId: string; damage: number };Return one entry per assignee (each blocker, and defenderId if damage tramples
through). The damage values must sum to totalDamage. With
attackerHasDeathtouch, a single point of damage counts as lethal, so as little
as 1 may be assigned to a blocker before moving on.
Example
Section titled “Example”{ "promptId": 13, "decidingPlayerId": "player-0", "input": { "type": "chooseCombatDamageAssignment", "attackerId": "bf-3", "blockerIds": ["bf-7"], "defenderId": "player-1", "totalDamage": 4, "attackerHasDeathtouch": false }}{ "promptId": 13, "output": { "type": "combatDamageAssignmentDecision", "assignments": [ { "assigneeId": "bf-7", "damage": 2 }, { "assigneeId": "player-1", "damage": 2 } ] }}