From 4a458800aaee541c8afc3cf6f09f99bff5bcfd10 Mon Sep 17 00:00:00 2001 From: Steven Knipe Date: Thu, 23 Oct 2025 14:48:26 -0700 Subject: [PATCH] Fix AerithRescueMission stunning all targets --- .../src/mage/cards/a/AerithRescueMission.java | 45 ++++++++++++++++++- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AerithRescueMission.java b/Mage.Sets/src/mage/cards/a/AerithRescueMission.java index f63fd779d57..f71e88023bc 100644 --- a/Mage.Sets/src/mage/cards/a/AerithRescueMission.java +++ b/Mage.Sets/src/mage/cards/a/AerithRescueMission.java @@ -1,17 +1,28 @@ package mage.cards.a; +import mage.abilities.Ability; import mage.abilities.Mode; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.TapTargetEffect; import mage.abilities.effects.common.counter.AddCountersTargetEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; +import mage.constants.Outcome; import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.predicate.permanent.PermanentReferenceInCollectionPredicate; +import mage.game.Game; import mage.game.permanent.token.HeroToken; +import mage.target.Target; +import mage.target.TargetPermanent; import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.FixedTarget; import java.util.UUID; +import java.util.stream.Collectors; /** * @author TheElk801 @@ -28,8 +39,7 @@ public final class AerithRescueMission extends CardImpl { // * Take 59 Flights of Stairs -- Tap up to three target creatures. Put a stun counter on one of them. this.getSpellAbility().addMode(new Mode(new TapTargetEffect()) - .addEffect(new AddCountersTargetEffect(CounterType.STUN.createInstance()) - .setText("Put a stun counter on one of them")) + .addEffect(new AerithRescueMissionStunEffect()) .addTarget(new TargetCreaturePermanent(0, 3)) .withFlavorWord("Take 59 Flights of Stairs")); } @@ -43,3 +53,34 @@ public final class AerithRescueMission extends CardImpl { return new AerithRescueMission(this); } } + +class AerithRescueMissionStunEffect extends OneShotEffect { + + AerithRescueMissionStunEffect() { + super(Outcome.Detriment); + staticText = "Put a stun counter on one of them"; + } + + private AerithRescueMissionStunEffect(final AerithRescueMissionStunEffect effect) { + super(effect); + } + + @Override + public AerithRescueMissionStunEffect copy() { + return new AerithRescueMissionStunEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + FilterPermanent filter = new FilterPermanent("creature to put a stun counter on"); + filter.add(new PermanentReferenceInCollectionPredicate(this.getTargetPointer().getTargets(game, source).stream() + .map(game::getPermanent).collect(Collectors.toList()), game)); + Target target = new TargetPermanent(filter).withNotTarget(true); + if (target.choose(Outcome.UnboostCreature, source.getControllerId(), source, game)) { + Effect eff = new AddCountersTargetEffect(CounterType.STUN.createInstance()); + eff.setTargetPointer(new FixedTarget(target.getFirstTarget(), game)); + return eff.apply(game, source); + } + return false; + } +}