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
}
}
{
"promptId": 13,
"output": {
"type": "combatDamageAssignmentDecision",
"assignments": [
{ "assigneeId": "bf-7", "damage": 2 },
{ "assigneeId": "player-1", "damage": 2 }
]
}
}