From fbf2b5f7b6672652dc36899fb52fd7340fce2cc3 Mon Sep 17 00:00:00 2001 From: Jeff Date: Mon, 26 Nov 2018 15:34:07 -0600 Subject: [PATCH] - A few fixes for Jace, Architect of Thought. --- .../mage/cards/j/JaceArchitectOfThought.java | 40 ++++++++----------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java index fbf022f466..4f6b074b34 100644 --- a/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java +++ b/Mage.Sets/src/mage/cards/j/JaceArchitectOfThought.java @@ -1,4 +1,3 @@ - package mage.cards.j; import java.util.ArrayList; @@ -11,7 +10,6 @@ import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.LoyaltyAbility; import mage.abilities.common.PlaneswalkerEntersWithLoyaltyCountersAbility; -import mage.abilities.effects.Effect; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.continuous.BoostTargetEffect; import mage.cards.Card; @@ -125,9 +123,9 @@ class JaceArchitectOfThoughtDelayedTriggeredAbility extends DelayedTriggeredAbil @Override public boolean checkTrigger(GameEvent event, Game game) { if (game.getOpponents(getControllerId()).contains(event.getPlayerId())) { - for (Effect effect : getEffects()) { + getEffects().forEach((effect) -> { effect.setTargetPointer(new FixedTarget(event.getSourceId())); - } + }); return true; } return false; @@ -186,7 +184,6 @@ class JaceArchitectOfThoughtEffect2 extends OneShotEffect { if (opponent == null) { opponent = game.getPlayer(opponents.iterator().next()); } - TargetCard target = new TargetCard(0, allCards.size(), Zone.LIBRARY, new FilterCard("cards to put in the first pile")); target.setNotTarget(true); opponent.choose(Outcome.Neutral, allCards, target, game); @@ -212,9 +209,9 @@ class JaceArchitectOfThoughtEffect2 extends OneShotEffect { private void postPileToLog(String pileName, Set cards, Game game) { StringBuilder message = new StringBuilder(pileName).append(": "); - for (Card card : cards) { + cards.forEach((card) -> { message.append(card.getName()).append(' '); - } + }); if (cards.isEmpty()) { message.append(" (empty)"); } @@ -255,9 +252,9 @@ class JaceArchitectOfThoughtEffect3 extends OneShotEffect { while (!playerList.isEmpty()) { FilterPlayer filter = new FilterPlayer(); List playerPredicates = new ArrayList<>(); - for (UUID playerId : playerList) { + playerList.forEach((playerId) -> { playerPredicates.add(new PlayerIdPredicate(playerId)); - } + }); filter.add(Predicates.or(playerPredicates)); TargetPlayer targetPlayer = new TargetPlayer(1, 1, true, filter); targetPlayer.setRequired(!checkList.containsAll(playerList)); @@ -275,7 +272,7 @@ class JaceArchitectOfThoughtEffect3 extends OneShotEffect { UUID targetId = target.getFirstTarget(); Card card = player.getLibrary().remove(targetId, game); if (card != null) { - controller.moveCardToExileWithInfo(card, CardUtil.getCardExileZoneId(game, source), sourcePermanent.getIdName(), source.getSourceId(), game, Zone.LIBRARY, true); + controller.moveCardsToExile(card, source, game, true, CardUtil.getCardExileZoneId(game, source), sourcePermanent.getName()); playerList.remove(playerId); } } else { @@ -287,26 +284,23 @@ class JaceArchitectOfThoughtEffect3 extends OneShotEffect { } else { break; } - for (UUID playerId : playerList) { - Player player = game.getPlayer(playerId); - if (player == null || !player.canRespond()) { - playerList.remove(player); - } - } - } - for (UUID playerId : checkList) { - Player player = game.getPlayer(playerId); - if (player != null) { - player.shuffleLibrary(source, game); - } + playerList.stream().map((playerId) -> game.getPlayer(playerId)).filter((player) -> (player == null + || !player.canRespond())).forEachOrdered((player) -> { + playerList.remove(player.getId()); + }); } + checkList.stream().map((playerId) -> game.getPlayer(playerId)).filter((player) -> (player != null)).forEachOrdered((player) -> { + player.shuffleLibrary(source, game); + }); ExileZone jaceExileZone = game.getExile().getExileZone(CardUtil.getCardExileZoneId(game, source)); if (jaceExileZone == null) { return true; } FilterCard filter = new FilterCard("card to cast without mana costs"); TargetCardInExile target = new TargetCardInExile(filter, source.getSourceId()); - while (jaceExileZone.count(filter, game) > 0 && controller.choose(Outcome.PlayForFree, jaceExileZone, target, game)) { + while (jaceExileZone.count(filter, game) > 0 + && controller.chooseUse(Outcome.Benefit, "Cast another spell from exile zone for free?", source, game)) { + controller.choose(Outcome.PlayForFree, jaceExileZone, target, game); Card card = game.getCard(target.getFirstTarget()); if (card != null) { if (controller.cast(card.getSpellAbility(), game, true, new MageObjectReference(source.getSourceObject(game), game))) {