diff --git a/Mage.Sets/src/mage/cards/d/Duplicant.java b/Mage.Sets/src/mage/cards/d/Duplicant.java index 096f112bfcf..11ddbf3300f 100644 --- a/Mage.Sets/src/mage/cards/d/Duplicant.java +++ b/Mage.Sets/src/mage/cards/d/Duplicant.java @@ -104,8 +104,8 @@ class DuplicantExileTargetEffect extends OneShotEffect { Permanent permanent = game.getPermanent(targetPointer.getFirst(game, source)); MageObject sourceObject = source.getSourceObject(game); if (permanent != null && sourceObject instanceof Permanent) { - if (permanent.moveToExile(null, null, source.getSourceId(), game)) { - ((Permanent) sourceObject).imprint(permanent.getId(), game); + if (permanent.moveToExile(null, null, source.getSourceId(), game) + && ((Permanent) sourceObject).imprint(permanent.getId(), game)) { ((Permanent) sourceObject).addInfo("imprint", "[Imprinted card - " + permanent.getName() + ']', game); } return true; diff --git a/Mage/src/main/java/mage/game/Exile.java b/Mage/src/main/java/mage/game/Exile.java index 101b95dd676..dabd39a1281 100644 --- a/Mage/src/main/java/mage/game/Exile.java +++ b/Mage/src/main/java/mage/game/Exile.java @@ -118,6 +118,15 @@ public class Exile implements Serializable, Copyable { return new Exile(this); } + public boolean containsId(UUID cardId, Game game) { + for (Card card : getAllCards(game)) { + if (card.getId().equals(cardId)) { + return true; + } + } + return false; + } + public void clear() { for (ExileZone exile : exileZones.values()) { exile.clear(); diff --git a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java index e145144f62b..106e61bcdf2 100644 --- a/Mage/src/main/java/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/main/java/mage/game/permanent/PermanentImpl.java @@ -1210,6 +1210,9 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { @Override public boolean imprint(UUID imprintedCard, Game game) { + if (!game.getExile().containsId(imprintedCard, game)){ + return false; + } if (connectedCards.containsKey("imprint")) { this.connectedCards.get("imprint").add(imprintedCard); } else {