[SPM] Implement Whoosh!

This commit is contained in:
theelk801 2025-07-24 09:49:52 -04:00
parent ab1d5ff699
commit 218aa5079c
4 changed files with 56 additions and 15 deletions

View file

@ -1,8 +1,5 @@
package mage.cards.b;
import java.util.UUID;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
@ -13,8 +10,9 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetNonlandPermanent;
import java.util.UUID;
/**
*
* @author JRHerlehy
*/
public final class BlinkOfAnEye extends CardImpl {
@ -26,10 +24,12 @@ public final class BlinkOfAnEye extends CardImpl {
this.addAbility(new KickerAbility("{1}{U}"));
// Return target nonland permanent to its owner's hand. If this spell was kicked, draw a card.
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DrawCardSourceControllerEffect(1), KickedCondition.ONCE,
"If this spell was kicked, draw a card"));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1),
KickedCondition.ONCE, "if this spell was kicked, draw a card"
));
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
}
private BlinkOfAnEye(final BlinkOfAnEye card) {

View file

@ -1,8 +1,5 @@
package mage.cards.i;
import java.util.UUID;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
@ -13,15 +10,15 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetNonlandPermanent;
import java.util.UUID;
/**
*
* @author Viserion
*/
public final class IntoTheRoil extends CardImpl {
public IntoTheRoil(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.INSTANT},"{1}{U}");
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
// Kicker {1}{U} (You may pay an additional {1}{U} as you cast this spell.)
this.addAbility(new KickerAbility("{1}{U}"));
@ -30,8 +27,8 @@ public final class IntoTheRoil extends CardImpl {
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1),
KickedCondition.ONCE,
"if this spell was kicked, draw a card"));
KickedCondition.ONCE, "if this spell was kicked, draw a card"
));
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
}

View file

@ -0,0 +1,43 @@
package mage.cards.w;
import mage.abilities.condition.common.KickedCondition;
import mage.abilities.decorator.ConditionalOneShotEffect;
import mage.abilities.effects.common.DrawCardSourceControllerEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.abilities.keyword.KickerAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.target.common.TargetNonlandPermanent;
import java.util.UUID;
/**
* @author TheElk801
*/
public final class Whoosh extends CardImpl {
public Whoosh(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.INSTANT}, "{1}{U}");
// Kicker {1}{U}
this.addAbility(new KickerAbility("{1}{U}"));
// Return target nonland permanent to its owner's hand. If this spell was kicked, draw a card.
this.getSpellAbility().addEffect(new ReturnToHandTargetEffect());
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DrawCardSourceControllerEffect(1),
KickedCondition.ONCE, "if this spell was kicked, draw a card"
));
this.getSpellAbility().addTarget(new TargetNonlandPermanent());
}
private Whoosh(final Whoosh card) {
super(card);
}
@Override
public Whoosh copy() {
return new Whoosh(this);
}
}

View file

@ -37,5 +37,6 @@ public final class MarvelsSpiderMan extends ExpansionSet {
cards.add(new SetCardInfo("Starling, Aerial Ally", 18, Rarity.COMMON, mage.cards.s.StarlingAerialAlly.class));
cards.add(new SetCardInfo("Swamp", 196, Rarity.LAND, mage.cards.basiclands.Swamp.class, NON_FULL_USE_VARIOUS));
cards.add(new SetCardInfo("Web Up", 21, Rarity.COMMON, mage.cards.w.WebUp.class));
cards.add(new SetCardInfo("Whoosh!", 48, Rarity.COMMON, mage.cards.w.Whoosh.class));
}
}