From d09e93a91bf06450831985a307903cfc1040417a Mon Sep 17 00:00:00 2001 From: Evan Kranzler Date: Sat, 29 Jun 2019 12:10:59 -0400 Subject: [PATCH] reworked Thunderkin Awakener targeting to account for its toughness changing between trigger and resolution --- .../src/mage/cards/t/ThunderkinAwakener.java | 41 +++++++++---------- 1 file changed, 19 insertions(+), 22 deletions(-) diff --git a/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java b/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java index d4528600880..d13157d5855 100644 --- a/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java +++ b/Mage.Sets/src/mage/cards/t/ThunderkinAwakener.java @@ -15,18 +15,16 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.ComparisonType; import mage.constants.Outcome; import mage.constants.SubType; import mage.filter.FilterCard; import mage.filter.common.FilterCreatureCard; -import mage.filter.predicate.mageobject.SubtypePredicate; -import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.filter.predicate.ObjectSourcePlayer; +import mage.filter.predicate.ObjectSourcePlayerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import mage.target.common.TargetCardInYourGraveyard; -import mage.target.targetadjustment.TargetAdjuster; import mage.target.targetpointer.FixedTarget; import java.util.UUID; @@ -36,6 +34,13 @@ import java.util.UUID; */ public final class ThunderkinAwakener extends CardImpl { + private static final FilterCard filter + = new FilterCreatureCard("creature card in your graveyard with lesser toughness"); + + static { + filter.add(ThunderkinAwakenerPredicate.instance); + } + public ThunderkinAwakener(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{R}"); this.subtype.add(SubType.ELEMENTAL); @@ -50,11 +55,11 @@ public final class ThunderkinAwakener extends CardImpl { // with toughness less than Thunderkin Awakener’s toughness. Return that card to the battlefield tapped and attacking. // Sacrifice it at the beginning of the next end step. Ability ability = new AttacksTriggeredAbility(new ThunderkinAwakenerEffect(), false); - ability.setTargetAdjuster(ThunderkinAwakenerAdjuster.instance); + ability.addTarget(new TargetCardInYourGraveyard(filter)); this.addAbility(ability); } - public ThunderkinAwakener(final ThunderkinAwakener card) { + private ThunderkinAwakener(final ThunderkinAwakener card) { super(card); } @@ -64,34 +69,26 @@ public final class ThunderkinAwakener extends CardImpl { } } -enum ThunderkinAwakenerAdjuster implements TargetAdjuster { +enum ThunderkinAwakenerPredicate implements ObjectSourcePlayerPredicate> { instance; @Override - public void adjustTargets(Ability ability, Game game) { - // target Elemental creature card in your graveyard with toughness less than Thunderkin Awakener’s toughness - Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(ability.getSourceId()); - if (sourcePermanent != null) { - int xValue = sourcePermanent.getToughness().getValue(); - FilterCard filter = new FilterCreatureCard("creature card in your graveyard with toughness less than Thunderkin Awakener’s toughness"); - filter.add(new SubtypePredicate(SubType.ELEMENTAL)); - filter.add(new ToughnessPredicate(ComparisonType.FEWER_THAN, xValue + 1)); - - ability.getTargets().clear(); - ability.addTarget(new TargetCardInYourGraveyard(filter)); - } + public boolean apply(ObjectSourcePlayer input, Game game) { + Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(input.getSourceId()); + return sourcePermanent != null + & input.getObject().getToughness().getValue() < sourcePermanent.getToughness().getValue(); } } class ThunderkinAwakenerEffect extends OneShotEffect { - public ThunderkinAwakenerEffect() { + ThunderkinAwakenerEffect() { super(Outcome.Benefit); - staticText = "choose target Elemental creature card in your graveyard with toughness less than Thunderkin Awakener’s toughness." + staticText = "choose target Elemental creature card in your graveyard with toughness less than {this}’s toughness." + " Return that card to the battlefield tapped and attacking. Sacrifice it at the beginning of the next end step"; } - public ThunderkinAwakenerEffect(final ThunderkinAwakenerEffect effect) { + private ThunderkinAwakenerEffect(final ThunderkinAwakenerEffect effect) { super(effect); }