fix #13615 (Vampiric Embrace)

revise setTargetPointer logic of DealtDamageAttachedAndDiedTriggeredAbility
This commit is contained in:
xenohedron 2025-05-14 23:33:07 -04:00
parent 09d3ec060a
commit 87ab0a3fcc
3 changed files with 17 additions and 9 deletions

View file

@ -13,6 +13,7 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.players.Player;
import mage.target.targetpointer.FixedTarget;
@ -34,7 +35,8 @@ public final class ScytheOfTheWretched extends CardImpl {
this.addAbility(new SimpleStaticAbility(new BoostEquippedEffect(2, 2, Duration.WhileOnBattlefield)));
// Whenever a creature dealt damage by equipped creature this turn dies, return that card to the battlefield under your control. Attach Scythe of the Wretched to that creature.
this.addAbility(new DealtDamageAttachedAndDiedTriggeredAbility(new ScytheOfTheWretchedReanimateEffect(), false));
this.addAbility(new DealtDamageAttachedAndDiedTriggeredAbility(new ScytheOfTheWretchedReanimateEffect(), false,
StaticFilters.FILTER_PERMANENT_CREATURE, SetTargetPointer.CARD, AttachmentType.EQUIPMENT));
// Equip {4}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(4), false));

View file

@ -13,6 +13,7 @@ import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.ZombieToken;
import mage.players.Player;
@ -38,7 +39,8 @@ public final class UnscytheKillerOfKings extends CardImpl {
this.addAbility(ability);
// Whenever a creature dealt damage by equipped creature this turn dies, you may exile that card. If you do, create a 2/2 black Zombie creature token.
this.addAbility(new DealtDamageAttachedAndDiedTriggeredAbility(new UnscytheEffect(), true));
this.addAbility(new DealtDamageAttachedAndDiedTriggeredAbility(new UnscytheEffect(), true,
StaticFilters.FILTER_PERMANENT_CREATURE, SetTargetPointer.CARD, AttachmentType.EQUIPMENT));
// Equip {2}
this.addAbility(new EquipAbility(Outcome.BoostCreature, new GenericManaCost(2), new TargetControlledCreaturePermanent(), false));

View file

@ -7,7 +7,6 @@ import mage.abilities.effects.Effect;
import mage.constants.AttachmentType;
import mage.constants.SetTargetPointer;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.Game;
import mage.game.events.GameEvent;
@ -21,10 +20,6 @@ public class DealtDamageAttachedAndDiedTriggeredAbility extends TriggeredAbility
private final FilterCreaturePermanent filter;
private final SetTargetPointer setTargetPointer;
public DealtDamageAttachedAndDiedTriggeredAbility(Effect effect, boolean optional) {
this(effect, optional, StaticFilters.FILTER_PERMANENT_CREATURE, SetTargetPointer.PERMANENT, AttachmentType.EQUIPMENT);
}
public DealtDamageAttachedAndDiedTriggeredAbility(Effect effect, boolean optional, FilterCreaturePermanent filter,
SetTargetPointer setTargetPointer, AttachmentType attachmentType) {
super(Zone.ALL, effect, optional);
@ -72,8 +67,17 @@ public class DealtDamageAttachedAndDiedTriggeredAbility extends TriggeredAbility
})) {
return false;
}
if (this.setTargetPointer == SetTargetPointer.PERMANENT) {
getEffects().setTargetPointer(new FixedTarget(event.getTargetId(), game));
switch (setTargetPointer) {
case PERMANENT:
getEffects().setTargetPointer(new FixedTarget(creatureMOR));
break;
case CARD:
getEffects().setTargetPointer(new FixedTarget(event.getTargetId(), game));
break;
case NONE:
break;
default:
throw new IllegalArgumentException("Unsupported setTargetPointer value in DealtDamageAttachedAndDiedTriggeredAbility");
}
return true;
}