Skip to content

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.

input.type is "chooseCombatDamageAssignment". The remaining fields:

interface ChooseCombatDamageAssignmentInput {
attackerId: string;
blockerIds: Array<string>;
defenderId?: string;
totalDamage: number;
attackerHasDeathtouch: boolean;
}
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.

{
"promptId": 13,
"decidingPlayerId": "player-0",
"input": {
"type": "chooseCombatDamageAssignment",
"attackerId": "bf-3",
"blockerIds": ["bf-7"],
"defenderId": "player-1",
"totalDamage": 4,
"attackerHasDeathtouch": false
}
}
{
"kind": "response",
"promptId": 13,
"action": {
"type": "chooseCombatDamageAssignment",
"output": {
"type": "combatDamageAssignmentDecision",
"assignments": [
{
"assigneeId": "bf-7",
"damage": 2
},
{
"assigneeId": "player-1",
"damage": 2
}
]
}
}
}