From 4288e45c2385f1dbcb1e700d54fd52d6a286a600 Mon Sep 17 00:00:00 2001 From: Oleg Agafonov Date: Sun, 28 Apr 2019 11:21:34 +0400 Subject: [PATCH] * AI: improved work with "must attack" player effects, with pay to attack blockers (#5435); --- .../main/java/mage/game/combat/Combat.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Mage/src/main/java/mage/game/combat/Combat.java b/Mage/src/main/java/mage/game/combat/Combat.java index d8d9f619b25..0f2e85fddc3 100644 --- a/Mage/src/main/java/mage/game/combat/Combat.java +++ b/Mage/src/main/java/mage/game/combat/Combat.java @@ -461,18 +461,14 @@ public class Combat implements Serializable, Copyable { creaturesForcedToAttack.put(creature.getId(), defendersForcedToAttack); // No need to attack a special defender if (defendersForcedToAttack.isEmpty()) { - if (defenders.size() == 1) { - player.declareAttacker(creature.getId(), defenders.iterator().next(), game, false); + if (defendersCostlessAttackable.size() == 1) { + player.declareAttacker(creature.getId(), defendersCostlessAttackable.iterator().next(), game, false); } else { - if (!player.isHuman()) { // computer only for multiple defenders - player.declareAttacker(creature.getId(), defenders.iterator().next(), game, false); - } else { // human players only for multiple defenders - TargetDefender target = new TargetDefender(defenders, creature.getId()); - target.setRequired(true); - target.setTargetName("planeswalker or player for " + creature.getLogName() + " to attack"); - if (player.chooseTarget(Outcome.Damage, target, null, game)) { - player.declareAttacker(creature.getId(), target.getFirstTarget(), game, false); - } + TargetDefender target = new TargetDefender(defendersCostlessAttackable, creature.getId()); + target.setRequired(true); + target.setTargetName("planeswalker or player for " + creature.getLogName() + " to attack (must attack effect)"); + if (player.chooseTarget(Outcome.Damage, target, null, game)) { + player.declareAttacker(creature.getId(), target.getFirstTarget(), game, false); } } } else { @@ -481,6 +477,7 @@ public class Combat implements Serializable, Copyable { } else { TargetDefender target = new TargetDefender(defendersForcedToAttack, creature.getId()); target.setRequired(true); + target.setTargetName("planeswalker or player for " + creature.getLogName() + " to attack (must attack effect)"); if (player.chooseTarget(Outcome.Damage, target, null, game)) { player.declareAttacker(creature.getId(), target.getFirstTarget(), game, false); }