diff --git a/Mage.Sets/src/mage/cards/p/PainForAll.java b/Mage.Sets/src/mage/cards/p/PainForAll.java index b245e81c0a8..767fbf697a2 100644 --- a/Mage.Sets/src/mage/cards/p/PainForAll.java +++ b/Mage.Sets/src/mage/cards/p/PainForAll.java @@ -9,9 +9,9 @@ import mage.abilities.keyword.EnchantAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; +import mage.filter.common.FilterAnyTarget; import mage.filter.common.FilterPermanentOrPlayer; -import mage.filter.predicate.ObjectSourcePlayer; -import mage.filter.predicate.ObjectSourcePlayerPredicate; +import mage.filter.predicate.permanent.AnotherEnchantedPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.target.TargetPermanent; @@ -26,10 +26,10 @@ import java.util.UUID; */ public final class PainForAll extends CardImpl { - private static final FilterPermanentOrPlayer filter = new FilterPermanentOrPlayer("any other target"); + private static final FilterPermanentOrPlayer filter = new FilterAnyTarget("any other target"); static { - filter.getPermanentFilter().add(PainForAllPredicate.instance); + filter.getPermanentFilter().add(AnotherEnchantedPredicate.instance); } public PainForAll(UUID ownerId, CardSetInfo setInfo) { @@ -64,21 +64,6 @@ public final class PainForAll extends CardImpl { } } -enum PainForAllPredicate implements ObjectSourcePlayerPredicate { - instance; - - @Override - public boolean apply(ObjectSourcePlayer input, Game game) { - return Optional - .ofNullable(input) - .map(ObjectSourcePlayer::getSource) - .map(source -> source.getSourcePermanentOrLKI(game)) - .map(Permanent::getAttachedTo) - .filter(permanentId -> !permanentId.equals(input.getObject().getId())) - .isPresent(); - } -} - class PainForAllFirstEffect extends OneShotEffect { PainForAllFirstEffect() { diff --git a/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java b/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java index 5de3a69c5d0..4311ae7e11b 100644 --- a/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java +++ b/Mage/src/main/java/mage/filter/predicate/permanent/AnotherEnchantedPredicate.java @@ -5,6 +5,8 @@ import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.Optional; + /** * Filters out the id of the enchanted object, if the source is an enchantment * @@ -15,8 +17,13 @@ public enum AnotherEnchantedPredicate implements ObjectSourcePlayerPredicate input, Game game) { - Permanent enchantment = input.getSource().getSourcePermanentIfItStillExists(game); - return enchantment != null && !input.getObject().getId().equals(enchantment.getAttachedTo()); + return !Optional + .ofNullable(input) + .map(ObjectSourcePlayer::getSource) + .map(source -> source.getSourcePermanentOrLKI(game)) + .map(Permanent::getAttachedTo) + .filter(input.getObject().getId()::equals) + .isPresent(); } @Override