diff --git a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java index 0e457932ab2..1c1c800262e 100644 --- a/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.AI/src/main/java/mage/player/ai/ComputerPlayer.java @@ -363,11 +363,17 @@ public class ComputerPlayer> extends PlayerImpl i } if (target instanceof TargetDiscard || target instanceof TargetCardInHand) { if (outcome.isGood()) { - Card card = pickBestCard(new ArrayList(hand.getCards(game)), null, target, source, game); - if (card != null) { - if (target.canTarget(card.getId(), source, game)) { - target.addTarget(card.getId(), source, game); - return true; + ArrayList cardsInHand = new ArrayList(hand.getCards(game)); + while (!target.isChosen() && !cardsInHand.isEmpty() && target.getMaxNumberOfTargets() < target.getTargets().size()) { + Card card = pickBestCard(cardsInHand, null, target, source, game); + if (card != null) { + if (target.canTarget(card.getId(), source, game)) { + target.addTarget(card.getId(), source, game); + cardsInHand.remove(card); + if (target.isChosen()) { + return true; + } + } } } } @@ -377,7 +383,9 @@ public class ComputerPlayer> extends PlayerImpl i for (int i = unplayable.size() - 1; i >= 0; i--) { if (target.canTarget(unplayable.values().toArray(new Card[0])[i].getId(), source, game)) { target.addTarget(unplayable.values().toArray(new Card[0])[i].getId(), source, game); - return true; + if (target.isChosen()) { + return true; + } } } } @@ -385,7 +393,9 @@ public class ComputerPlayer> extends PlayerImpl i for (int i = 0; i < hand.size(); i++) { if (target.canTarget(hand.toArray(new UUID[0])[i], source, game)) { target.addTarget(hand.toArray(new UUID[0])[i], source, game); - return true; + if (target.isChosen()) { + return true; + } } } }