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 5c1a76f4353..8ed3b3d5e3b 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 @@ -302,6 +302,18 @@ public class ComputerPlayer> extends PlayerImpl i } return target.isChosen(); } + + if (target instanceof TargetCardInYourGraveyard) { + List cards = new ArrayList(game.getPlayer(playerId).getGraveyard().getCards(game)); + while(!target.isChosen() && !cards.isEmpty()) { + Card card = pickTarget(cards, outcome, target, null, game); + if (card != null) { + target.add(card.getId(), game); + } + } + return target.isChosen(); + } + throw new IllegalStateException("Target wasn't handled. class:" + target.getClass().toString()); // return false; } @@ -480,12 +492,24 @@ public class ComputerPlayer> extends PlayerImpl i } if (target instanceof TargetCardInYourGraveyard) { List cards = new ArrayList(game.getPlayer(playerId).getGraveyard().getCards(game)); - Card card = pickTarget(cards, outcome, target, source, game); - if (card != null) { - target.addTarget(card.getId(), source, game); - return true; + while(!target.isChosen() && !cards.isEmpty()) { + Card card = pickTarget(cards, outcome, target, source, game); + if (card != null) { + target.addTarget(card.getId(), source, game); + } } - return false; + return target.isChosen(); + } + if (target instanceof TargetCardInHand) { + List cards = new ArrayList(); + cards.addAll(this.hand.getCards(game)); + while(!target.isChosen() && !cards.isEmpty()) { + Card pick = pickTarget(cards, outcome, target, source, game); + if (pick != null) { + target.addTarget(pick.getId(), source, game); + } + } + return target.isChosen(); } if (target instanceof TargetSpell) { if (game.getStack().size() > 0) {