[TDM] Implement Desperate Measures

This commit is contained in:
theelk801 2025-04-13 18:00:14 -04:00
parent 552852bd86
commit e54210ad2e
3 changed files with 52 additions and 2 deletions

View file

@ -0,0 +1,41 @@
package mage.cards.d;
import mage.abilities.common.delayed.WhenTargetDiesDelayedTriggeredAbility;
import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.continuous.BoostTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SetTargetPointer;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class DesperateMeasures extends CardImpl {
public DesperateMeasures(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{B}");
// Target creature gets +1/-1 until end of turn. When it dies under your control this turn, draw two cards.
this.getSpellAbility().addEffect(new BoostTargetEffect(1, -1));
this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(
new WhenTargetDiesDelayedTriggeredAbility(
new DrawCardSourceControllerEffect(2), Duration.EndOfTurn,
SetTargetPointer.NONE, true
), true
));
}
private DesperateMeasures(final DesperateMeasures card) {
super(card);
}
@Override
public DesperateMeasures copy() {
return new DesperateMeasures(this);
}
}

View file

@ -80,6 +80,7 @@ public final class TarkirDragonstorm extends ExpansionSet {
cards.add(new SetCardInfo("Defibrillating Current", 177, Rarity.UNCOMMON, mage.cards.d.DefibrillatingCurrent.class));
cards.add(new SetCardInfo("Delta Bloodflies", 77, Rarity.COMMON, mage.cards.d.DeltaBloodflies.class));
cards.add(new SetCardInfo("Descendant of Storms", 8, Rarity.UNCOMMON, mage.cards.d.DescendantOfStorms.class));
cards.add(new SetCardInfo("Desperate Measures", 78, Rarity.UNCOMMON, mage.cards.d.DesperateMeasures.class));
cards.add(new SetCardInfo("Devoted Duelist", 104, Rarity.COMMON, mage.cards.d.DevotedDuelist.class));
cards.add(new SetCardInfo("Dirgur Island Dragon", 40, Rarity.COMMON, mage.cards.d.DirgurIslandDragon.class));
cards.add(new SetCardInfo("Dismal Backwater", 254, Rarity.COMMON, mage.cards.d.DismalBackwater.class));

View file

@ -18,6 +18,7 @@ public class WhenTargetDiesDelayedTriggeredAbility extends DelayedTriggeredAbili
protected MageObjectReference mor;
private final SetTargetPointer setTargetPointer;
private final boolean onlyControlled;
public WhenTargetDiesDelayedTriggeredAbility(Effect effect) {
this(effect, SetTargetPointer.NONE);
@ -28,15 +29,21 @@ public class WhenTargetDiesDelayedTriggeredAbility extends DelayedTriggeredAbili
}
public WhenTargetDiesDelayedTriggeredAbility(Effect effect, Duration duration, SetTargetPointer setTargetPointer) {
this(effect, duration, setTargetPointer, false);
}
public WhenTargetDiesDelayedTriggeredAbility(Effect effect, Duration duration, SetTargetPointer setTargetPointer, boolean onlyControlled) {
super(effect, duration, true);
this.setTargetPointer = setTargetPointer;
setTriggerPhrase("When that creature dies" + (duration == Duration.EndOfTurn ? " this turn, " : ", "));
this.onlyControlled = onlyControlled;
setTriggerPhrase("When that creature dies" + (onlyControlled ? " under your control" : "") + (duration == Duration.EndOfTurn ? " this turn, " : ", "));
}
protected WhenTargetDiesDelayedTriggeredAbility(final WhenTargetDiesDelayedTriggeredAbility ability) {
super(ability);
this.mor = ability.mor;
this.setTargetPointer = ability.setTargetPointer;
this.onlyControlled = ability.onlyControlled;
}
@Override
@ -62,7 +69,8 @@ public class WhenTargetDiesDelayedTriggeredAbility extends DelayedTriggeredAbili
return false;
}
Permanent permanent = zEvent.getTarget();
if (mor == null || !mor.refersTo(permanent, game)) {
if (mor == null || !mor.refersTo(permanent, game)
|| onlyControlled && !permanent.isControlledBy(getControllerId())) {
return false;
}
switch (setTargetPointer) {