From 56cbaab1b2be806ebe3dc3e0c6a3cf9e9ef6a571 Mon Sep 17 00:00:00 2001 From: Grath <1895280+Grath@users.noreply.github.com> Date: Sun, 23 Apr 2023 12:54:24 -0400 Subject: [PATCH] Fix Millicent, Restless Revenant triggered ability. (#10262) Uses TokenPredicate.FALSE and a FilterControlledPermanent to properly implement the filtering for a nontoken Spirit you control. --- .../src/mage/cards/m/MillicentRestlessRevenant.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Mage.Sets/src/mage/cards/m/MillicentRestlessRevenant.java b/Mage.Sets/src/mage/cards/m/MillicentRestlessRevenant.java index df218e6399..d19aa09b81 100644 --- a/Mage.Sets/src/mage/cards/m/MillicentRestlessRevenant.java +++ b/Mage.Sets/src/mage/cards/m/MillicentRestlessRevenant.java @@ -19,12 +19,12 @@ import mage.constants.SuperType; import mage.constants.Zone; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.permanent.TokenPredicate; import mage.game.Game; import mage.game.events.DamagedEvent; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; -import mage.game.permanent.PermanentToken; import mage.game.permanent.token.SpiritWhiteToken; import java.util.UUID; @@ -71,6 +71,12 @@ public final class MillicentRestlessRevenant extends CardImpl { class MillicentRestlessRevenantTriggeredAbility extends TriggeredAbilityImpl { + private static final FilterPermanent filterNontoken = new FilterControlledPermanent(SubType.SPIRIT); + + static { + filterNontoken.add(TokenPredicate.FALSE); + } + MillicentRestlessRevenantTriggeredAbility() { super(Zone.BATTLEFIELD, new CreateTokenEffect(new SpiritWhiteToken())); } @@ -114,8 +120,7 @@ class MillicentRestlessRevenantTriggeredAbility extends TriggeredAbilityImpl { return false; } return permanent.getId().equals(this.getSourceId()) - || (!(permanent instanceof PermanentToken) - && permanent.hasSubtype(SubType.SPIRIT, game)); + || filterNontoken.match(permanent, getControllerId(), this, game); } @Override