use common methods in BecomesTargetAttachedTriggeredAbility

This commit is contained in:
xenohedron 2023-09-21 00:23:00 -04:00
parent ee68726865
commit 79b10856b8
2 changed files with 15 additions and 18 deletions

View file

@ -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);
}
}