diff --git a/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardTypeSourceEffect.java b/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardTypeSourceEffect.java index a3c0db0e115..a76b352761f 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardTypeSourceEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/continuous/AddCardTypeSourceEffect.java @@ -27,6 +27,7 @@ */ package mage.abilities.effects.common.continuous; +import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.ContinuousEffectImpl; @@ -59,16 +60,27 @@ public class AddCardTypeSourceEffect extends ContinuousEffectImpl { this.addedCardType = effect.addedCardType; } + @Override + public void init(Ability source, Game game) { + super.init(source, game); + if (Duration.Custom.equals(this.duration) || this.duration.toString().startsWith("End")) { + affectedObjectList.add(new MageObjectReference(source.getSourceId(), game.getState().getZoneChangeCounter(source.getSourceId()), game)); + if (affectedObjectList.isEmpty()) { + this.discard(); + } + } + } + @Override public boolean apply(Game game, Ability source) { Permanent permanent = game.getPermanent(source.getSourceId()); - if (permanent != null) { + if (permanent != null + && (affectedObjectList.isEmpty() || affectedObjectList.contains(new MageObjectReference(permanent, game)))) { if (!permanent.getCardType().contains(addedCardType)) { permanent.getCardType().add(addedCardType); } return true; - } - else if (this.getDuration().equals(Duration.Custom)) { + } else if (this.getDuration().equals(Duration.Custom)) { this.discard(); } return false;