diff --git a/Mage.Sets/src/mage/cards/e/EerieUltimatum.java b/Mage.Sets/src/mage/cards/e/EerieUltimatum.java index 5528a0e7ca3..2e851e7cb53 100644 --- a/Mage.Sets/src/mage/cards/e/EerieUltimatum.java +++ b/Mage.Sets/src/mage/cards/e/EerieUltimatum.java @@ -17,7 +17,10 @@ import mage.players.Player; import mage.target.TargetCard; import mage.target.common.TargetCardInYourGraveyard; +import java.util.Objects; +import java.util.Set; import java.util.UUID; +import java.util.stream.Collectors; /** * @author TheElk801 @@ -90,18 +93,18 @@ class EerieUltimatumTarget extends TargetCardInYourGraveyard { } @Override - public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { - if (!super.canTarget(controllerId, id, source, game)) { - return false; - } - Card card = game.getCard(id); - if (card == null) { - return false; - } - return this.getTargets() + public Set possibleTargets(UUID sourceId, UUID playerId, Game game) { + Set possibleTargets = super.possibleTargets(sourceId, playerId, game); + Set names = this.getTargets() .stream() .map(game::getCard) .map(MageObject::getName) - .noneMatch(card.getName()::equals); + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + possibleTargets.removeIf(uuid -> { + Card card = game.getCard(uuid); + return card != null && names.contains(card.getName()); + }); + return possibleTargets; } } diff --git a/Mage.Sets/src/mage/cards/o/OrmosArchiveKeeper.java b/Mage.Sets/src/mage/cards/o/OrmosArchiveKeeper.java index e1a74d19eab..fd311afd68b 100644 --- a/Mage.Sets/src/mage/cards/o/OrmosArchiveKeeper.java +++ b/Mage.Sets/src/mage/cards/o/OrmosArchiveKeeper.java @@ -22,7 +22,10 @@ import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCardInHand; +import java.util.Objects; +import java.util.Set; import java.util.UUID; +import java.util.stream.Collectors; /** * @author TheElk801 @@ -127,18 +130,18 @@ class OrmosArchiveKeeperTarget extends TargetCardInHand { } @Override - public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { - if (!super.canTarget(controllerId, id, source, game)) { - return false; - } - Card card = game.getCard(id); - if (card == null) { - return false; - } - return this.getTargets() + public Set possibleTargets(UUID sourceId, UUID playerId, Game game) { + Set possibleTargets = super.possibleTargets(sourceId, playerId, game); + Set names = this.getTargets() .stream() .map(game::getCard) .map(MageObject::getName) - .noneMatch(card.getName()::equals); + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + possibleTargets.removeIf(uuid -> { + Card card = game.getCard(uuid); + return card != null && names.contains(card.getName()); + }); + return possibleTargets; } }