From 79b10856b85b7ae9ea6607b7c92971096ec0c488 Mon Sep 17 00:00:00 2001 From: xenohedron Date: Thu, 21 Sep 2023 00:23:00 -0400 Subject: [PATCH] use common methods in BecomesTargetAttachedTriggeredAbility --- .../src/mage/cards/s/SpectralPrison.java | 2 +- ...BecomesTargetAttachedTriggeredAbility.java | 31 +++++++++---------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/Mage.Sets/src/mage/cards/s/SpectralPrison.java b/Mage.Sets/src/mage/cards/s/SpectralPrison.java index 75d89842814..72b67c6d566 100644 --- a/Mage.Sets/src/mage/cards/s/SpectralPrison.java +++ b/Mage.Sets/src/mage/cards/s/SpectralPrison.java @@ -37,7 +37,7 @@ public final class SpectralPrison extends CardImpl { this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new DontUntapInControllersUntapStepEnchantedEffect())); // When enchanted creature becomes the target of a spell, sacrifice Spectral Prison. - this.addAbility(new BecomesTargetAttachedTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A)); + this.addAbility(new BecomesTargetAttachedTriggeredAbility(new SacrificeSourceEffect(), StaticFilters.FILTER_SPELL_A, false)); } private SpectralPrison(final SpectralPrison card) { diff --git a/Mage/src/main/java/mage/abilities/common/BecomesTargetAttachedTriggeredAbility.java b/Mage/src/main/java/mage/abilities/common/BecomesTargetAttachedTriggeredAbility.java index 125dbc3c882..4b619a2ae7b 100644 --- a/Mage/src/main/java/mage/abilities/common/BecomesTargetAttachedTriggeredAbility.java +++ b/Mage/src/main/java/mage/abilities/common/BecomesTargetAttachedTriggeredAbility.java @@ -9,6 +9,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.stack.StackObject; import mage.game.permanent.Permanent; +import mage.util.CardUtil; /** * @author LoneFox @@ -18,22 +19,18 @@ public class BecomesTargetAttachedTriggeredAbility extends TriggeredAbilityImpl private final FilterStackObject filter; public BecomesTargetAttachedTriggeredAbility(Effect effect) { - this(effect, StaticFilters.FILTER_SPELL_OR_ABILITY_A); + this(effect, StaticFilters.FILTER_SPELL_OR_ABILITY_A, false); } - public BecomesTargetAttachedTriggeredAbility(Effect effect, FilterStackObject filter) { - this(effect, filter, "creature"); - } - - public BecomesTargetAttachedTriggeredAbility(Effect effect, FilterStackObject filter, String enchantType) { - super(Zone.BATTLEFIELD, effect); - this.filter = filter.copy(); - setTriggerPhrase("When enchanted " + enchantType + " becomes the target of " + filter.getMessage() + ", "); + public BecomesTargetAttachedTriggeredAbility(Effect effect, FilterStackObject filter, boolean optional) { + super(Zone.BATTLEFIELD, effect, optional); + this.filter = filter; + setTriggerPhrase("When enchanted creature becomes the target of " + filter.getMessage() + ", "); } protected BecomesTargetAttachedTriggeredAbility(final BecomesTargetAttachedTriggeredAbility ability) { super(ability); - this.filter = ability.filter.copy(); + this.filter = ability.filter; } @Override @@ -49,13 +46,13 @@ public class BecomesTargetAttachedTriggeredAbility extends TriggeredAbilityImpl @Override public boolean checkTrigger(GameEvent event, Game game) { Permanent enchantment = game.getPermanent(sourceId); - StackObject sourceObject = game.getStack().getStackObject(event.getSourceId()); - if (enchantment != null && enchantment.getAttachedTo() != null) { - if (event.getTargetId().equals(enchantment.getAttachedTo()) - && filter.match(sourceObject, getControllerId(), this, game)) { - return true; - } + if (enchantment == null || enchantment.getAttachedTo() == null || !event.getTargetId().equals(enchantment.getAttachedTo())) { + return false; } - return false; + StackObject targetingObject = CardUtil.getTargetingStackObject(event, game); + if (targetingObject == null || !filter.match(targetingObject, getControllerId(), this, game)) { + return false; + } + return CardUtil.checkTargetMap(this.id, targetingObject, event, game); } }