From 1155cf2049ea33da1607ad471fc6d7c3fcd03b99 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 12 Apr 2014 23:27:16 +0200 Subject: [PATCH] * Wrench Mind - Fixed a bug that locked the UI while discarding. --- .../EidolonOfTheGreatRevel.java | 2 +- .../src/mage/sets/mirrodin/WrenchMind.java | 24 ++++++++++--------- Mage/src/mage/players/PlayerImpl.java | 6 ++--- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/EidolonOfTheGreatRevel.java b/Mage.Sets/src/mage/sets/journeyintonyx/EidolonOfTheGreatRevel.java index f2d83e37917..fe108bfa303 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/EidolonOfTheGreatRevel.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/EidolonOfTheGreatRevel.java @@ -78,7 +78,7 @@ class EidolonOfTheGreatRevelTriggeredAbility extends TriggeredAbilityImpl { @Override public boolean apply(Game game, Ability source) { Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source)); - if (targetPlayer != null) { - Target target = new TargetCardInHand(new FilterArtifactCard()); - target.setRequired(true); - if (target.canChoose(source.getSourceId(), targetPlayer.getId(), game) - && targetPlayer.chooseUse(outcome, "Discard an artifact?", game) - && targetPlayer.chooseTarget(outcome, target, source, game)) { - return targetPlayer.discard(targetPlayer.getHand().get(target.getFirstTarget(), game), source, game); - } else { - targetPlayer.discard(Math.min(targetPlayer.getHand().size(), 2), source, game); - } - return true; + if (targetPlayer != null && !targetPlayer.getHand().isEmpty()) { + TargetDiscard target = new TargetDiscard(targetPlayer.getId()); + targetPlayer.choose(Outcome.Discard, target, source.getSourceId(), game); + Card card = targetPlayer.getHand().get(target.getFirstTarget(), game); + if (card != null) { + targetPlayer.discard(card, source, game); + if (!card.getCardType().contains(CardType.ARTIFACT) && !targetPlayer.getHand().isEmpty()) { + targetPlayer.discard(1, source, game); + } + return true; + } } return false; } diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index 417aac3da8e..a31aa9676d3 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -532,16 +532,14 @@ public abstract class PlayerImpl> implements Player, Ser @Override public void discardToMax(Game game) { - int cardsStart = hand.size(); - if (cardsStart > this.maxHandSize) { + if (hand.size() > this.maxHandSize) { + game.informPlayers(new StringBuilder(getName()).append(" discards down to ").append(this.maxHandSize).append(this.maxHandSize == 1?" hand card":" hand cards").toString()); while (hand.size() > this.maxHandSize) { TargetDiscard target = new TargetDiscard(playerId); target.setTargetName(new StringBuilder(" card to discard (").append(hand.size() - this.maxHandSize).append(" in total)").toString()); choose(Outcome.Discard, target, null, game); discard(hand.get(target.getFirstTarget(), game), null, game); } - int discarded =cardsStart - hand.size(); - game.informPlayers(new StringBuilder(getName()).append(" discards ").append(discarded).append(discarded == 1?" card":" cards").append(" (cleanup)").toString()); } }