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 4f7063f7b8a..0013e29f572 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 @@ -793,6 +793,9 @@ public class ComputerPlayer> extends PlayerImpl i @Override public boolean choose(Outcome outcome, Cards cards, TargetCard target, Game game) { logger.debug("choose"); + if (cards != null && cards.isEmpty()) { + return false; + } while (!target.doneChosing()) { if (cards.isEmpty()) { if (!target.isRequired()) diff --git a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java index d05fef2ceb6..388aad77b0d 100644 --- a/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java +++ b/Mage.Server.Plugins/Mage.Player.Human/src/mage/player/human/HumanPlayer.java @@ -241,14 +241,23 @@ public class HumanPlayer extends PlayerImpl { @Override public boolean choose(Outcome outcome, Cards cards, TargetCard target, Game game) { while (!abort) { - game.fireSelectTargetEvent(playerId, target.getMessage(), cards, target.isRequired()); + boolean required = target.isRequired(); + // if there is no cards to select from, then add possibility to cancel choosing action + if (cards == null) { + required = false; + } else { + int count = cards.count(target.getFilter(), game); + if (count == 0) required = false; + } + System.out.println("required: " + required); + game.fireSelectTargetEvent(playerId, target.getMessage(), cards, required); waitForResponse(); if (response.getUUID() != null) { if (target.canTarget(response.getUUID(), cards, game)) { target.add(response.getUUID(), game); return true; } - } else if (!target.isRequired()) { + } else if (!required) { return false; } } diff --git a/Mage.Server/plugins/mage-player-human.jar b/Mage.Server/plugins/mage-player-human.jar index ae6d18af5a4..b585e9fedad 100644 Binary files a/Mage.Server/plugins/mage-player-human.jar and b/Mage.Server/plugins/mage-player-human.jar differ diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index ae4ee5bef13..213a9ef1e78 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -823,7 +823,8 @@ public abstract class PlayerImpl> implements Player, Ser //20091005 - 701.14c if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.SEARCH_LIBRARY, playerId, playerId))) { TargetCardInLibrary newTarget; - if (library.count(target.getFilter(), game) < target.getNumberOfTargets()) + int count = library.count(target.getFilter(), game); + if (count < target.getNumberOfTargets()) newTarget = new TargetCardInLibrary(library.count(target.getFilter(), game), target.getMaxNumberOfTargets(), target.getFilter()); else newTarget = target;