@@ -649,7 +649,14 @@ private void makeChumpBlocks(final Combat combat) {
649649 }
650650
651651 private void makeChumpBlocks (final Combat combat , List <Card > attackers ) {
652- if (!ComputerUtilCombat .lifeInDanger (ai , combat )) {
652+ makeChumpBlocks (combat , attackers , true );
653+ }
654+
655+ // recheckDanger: lifeInDanger runs a full combat damage prediction, so only
656+ // re-evaluate it when a blocker was assigned since the last check - skipping
657+ // an attacker leaves the combat unchanged and the previous result still holds
658+ private void makeChumpBlocks (final Combat combat , List <Card > attackers , boolean recheckDanger ) {
659+ if (recheckDanger && !ComputerUtilCombat .lifeInDanger (ai , combat )) {
653660 lifeInDanger = false ;
654661 return ;
655662 }
@@ -663,10 +670,11 @@ private void makeChumpBlocks(final Combat combat, List<Card> attackers) {
663670 || StaticAbilityAssignCombatDamageAsUnblocked .assignCombatDamageAsUnblocked (attacker )
664671 || ComputerUtilCombat .attackerHasThreateningAfflict (attacker , ai )) {
665672 attackers .remove (0 );
666- makeChumpBlocks (combat , attackers );
673+ makeChumpBlocks (combat , attackers , false );
667674 return ;
668675 }
669676
677+ boolean blocked = false ;
670678 List <Card > chumpBlockers = getPossibleBlockers (combat , attacker , blockersLeft , true );
671679 if (!chumpBlockers .isEmpty ()) {
672680 final Card blocker = ComputerUtilCard .getWorstCreatureAI (chumpBlockers );
@@ -688,7 +696,7 @@ private void makeChumpBlocks(final Combat combat, List<Card> attackers) {
688696 attackersLeft .remove (other );
689697 blockedButUnkilled .add (other );
690698 attackers .remove (other );
691- makeChumpBlocks (combat , attackers );
699+ makeChumpBlocks (combat , attackers , true );
692700 return ;
693701 }
694702 }
@@ -698,9 +706,10 @@ private void makeChumpBlocks(final Combat combat, List<Card> attackers) {
698706 combat .addBlocker (attacker , blocker );
699707 attackersLeft .remove (attacker );
700708 blockedButUnkilled .add (attacker );
709+ blocked = true ;
701710 }
702711 attackers .remove (0 );
703- makeChumpBlocks (combat , attackers );
712+ makeChumpBlocks (combat , attackers , blocked );
704713 }
705714
706715 // Block creatures with "can't be blocked except by two or more creatures"
0 commit comments