diff --git a/Mage.Sets/src/mage/cards/m/MindSpiral.java b/Mage.Sets/src/mage/cards/m/MindSpiral.java new file mode 100644 index 00000000000..a1a62970120 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MindSpiral.java @@ -0,0 +1,52 @@ +package mage.cards.m; + +import mage.abilities.condition.common.GiftWasPromisedCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.common.DrawCardTargetEffect; +import mage.abilities.effects.common.TapTargetEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.abilities.keyword.GiftAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.GiftType; +import mage.counters.CounterType; +import mage.target.TargetPlayer; +import mage.target.common.TargetOpponentsCreaturePermanent; +import mage.target.targetadjustment.ConditionalTargetAdjuster; +import mage.target.targetpointer.SecondTargetPointer; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class MindSpiral extends CardImpl { + + public MindSpiral(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{U}"); + + // Gift a tapped Fish + this.addAbility(new GiftAbility(this, GiftType.TAPPED_FISH)); + + // Target player draws three cards. If the gift was promised, tap target creature an opponent controls and put a stun counter on it. + this.getSpellAbility().addEffect(new DrawCardTargetEffect(3)); + this.getSpellAbility().addTarget(new TargetPlayer()); + this.getSpellAbility().addEffect(new ConditionalOneShotEffect( + new TapTargetEffect(), GiftWasPromisedCondition.TRUE, "if the gift was promised, " + + "tap target creature an opponent controls and put a stun counter on it" + ).addEffect(new AddCountersTargetEffect(CounterType.STUN.createInstance())).setTargetPointer(new SecondTargetPointer())); + this.getSpellAbility().setTargetAdjuster(new ConditionalTargetAdjuster( + GiftWasPromisedCondition.TRUE, true, new TargetOpponentsCreaturePermanent() + )); + } + + private MindSpiral(final MindSpiral card) { + super(card); + } + + @Override + public MindSpiral copy() { + return new MindSpiral(this); + } +} diff --git a/Mage.Sets/src/mage/sets/Bloomburrow.java b/Mage.Sets/src/mage/sets/Bloomburrow.java index a2d5215cee4..dabdd911742 100644 --- a/Mage.Sets/src/mage/sets/Bloomburrow.java +++ b/Mage.Sets/src/mage/sets/Bloomburrow.java @@ -134,6 +134,7 @@ public final class Bloomburrow extends ExpansionSet { cards.add(new SetCardInfo("Manifold Mouse", 143, Rarity.RARE, mage.cards.m.ManifoldMouse.class)); cards.add(new SetCardInfo("Might of the Meek", 144, Rarity.COMMON, mage.cards.m.MightOfTheMeek.class)); cards.add(new SetCardInfo("Mind Drill Assailant", 225, Rarity.COMMON, mage.cards.m.MindDrillAssailant.class)); + cards.add(new SetCardInfo("Mind Spiral", 59, Rarity.COMMON, mage.cards.m.MindSpiral.class)); cards.add(new SetCardInfo("Mind Spring", 389, Rarity.RARE, mage.cards.m.MindSpring.class)); cards.add(new SetCardInfo("Mindwhisker", 60, Rarity.UNCOMMON, mage.cards.m.Mindwhisker.class)); cards.add(new SetCardInfo("Mistbreath Elder", 184, Rarity.RARE, mage.cards.m.MistbreathElder.class)); diff --git a/Mage/src/main/java/mage/abilities/decorator/ConditionalOneShotEffect.java b/Mage/src/main/java/mage/abilities/decorator/ConditionalOneShotEffect.java index e52e05da640..6bf38b80c5e 100644 --- a/Mage/src/main/java/mage/abilities/decorator/ConditionalOneShotEffect.java +++ b/Mage/src/main/java/mage/abilities/decorator/ConditionalOneShotEffect.java @@ -3,10 +3,12 @@ package mage.abilities.decorator; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.condition.Condition; +import mage.abilities.effects.Effect; import mage.abilities.effects.Effects; import mage.abilities.effects.OneShotEffect; import mage.constants.Outcome; import mage.game.Game; +import mage.target.targetpointer.TargetPointer; import mage.util.CardUtil; /** @@ -110,6 +112,13 @@ public class ConditionalOneShotEffect extends OneShotEffect { + CardUtil.getTextWithFirstCharLowerCase(otherwiseEffects.getText(mode)); } + @Override + public Effect setTargetPointer(TargetPointer targetPointer) { + effects.setTargetPointer(targetPointer); + otherwiseEffects.setTargetPointer(targetPointer); + return super.setTargetPointer(targetPointer); + } + @Override public Condition getCondition() { return condition;