From 72675d8ba68c83c71d5a5a050ccd486bfaf841ba Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Sat, 30 Mar 2024 17:18:37 +0100 Subject: [PATCH] [OTJ] Implement Emergent Haunting --- .../src/mage/cards/e/EmergentHaunting.java | 59 +++++++++++++++++++ .../mage/sets/OutlawsOfThunderJunction.java | 1 + 2 files changed, 60 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/e/EmergentHaunting.java diff --git a/Mage.Sets/src/mage/cards/e/EmergentHaunting.java b/Mage.Sets/src/mage/cards/e/EmergentHaunting.java new file mode 100644 index 00000000000..0314616274b --- /dev/null +++ b/Mage.Sets/src/mage/cards/e/EmergentHaunting.java @@ -0,0 +1,59 @@ +package mage.cards.e; + +import mage.abilities.common.BeginningOfEndStepTriggeredAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.condition.CompoundCondition; +import mage.abilities.condition.Condition; +import mage.abilities.condition.InvertCondition; +import mage.abilities.condition.common.HaventCastSpellFromHandThisTurnCondition; +import mage.abilities.condition.common.SourceMatchesFilterCondition; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect; +import mage.abilities.effects.keyword.SurveilEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.permanent.token.custom.CreatureToken; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class EmergentHaunting extends CardImpl { + + private static final Condition condition = new CompoundCondition( + "if you haven't cast a spell from your hand this turn and {this} isn't a creature", + HaventCastSpellFromHandThisTurnCondition.instance, + new InvertCondition(new SourceMatchesFilterCondition(new FilterCreaturePermanent())) + ); + + public EmergentHaunting(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{U}"); + + // At the beginning of your end step, if you haven't cast a spell from your hand this turn and Emergent Haunting isn't a creature, it becomes a 3/3 Spirit creature with flying in addition to its other types. + this.addAbility(new BeginningOfEndStepTriggeredAbility( + Zone.BATTLEFIELD, + new BecomesCreatureSourceEffect( + new CreatureToken(3, 3, "3/3 Spirit creature with flying in addition to its other types") + .withSubType(SubType.SPIRIT).withAbility(FlyingAbility.getInstance()), + null, Duration.WhileOnBattlefield + ), + TargetController.YOU, condition, false + ).addHint(HaventCastSpellFromHandThisTurnCondition.hint)); + + // {2}{U}: Surveil 1. + this.addAbility(new SimpleActivatedAbility(new SurveilEffect(1), new ManaCostsImpl<>("{2}{U}"))); + } + + private EmergentHaunting(final EmergentHaunting card) { + super(card); + } + + @Override + public EmergentHaunting copy() { + return new EmergentHaunting(this); + } +} diff --git a/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java b/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java index 9ec549adbc8..97047a33afb 100644 --- a/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java +++ b/Mage.Sets/src/mage/sets/OutlawsOfThunderJunction.java @@ -61,6 +61,7 @@ public final class OutlawsOfThunderJunction extends ExpansionSet { cards.add(new SetCardInfo("Djinn of Fool's Fall", 43, Rarity.COMMON, mage.cards.d.DjinnOfFoolsFall.class)); cards.add(new SetCardInfo("Double Down", 44, Rarity.MYTHIC, mage.cards.d.DoubleDown.class)); cards.add(new SetCardInfo("Duelist of the Mind", 45, Rarity.RARE, mage.cards.d.DuelistOfTheMind.class)); + cards.add(new SetCardInfo("Emergent Haunting", 46, Rarity.UNCOMMON, mage.cards.e.EmergentHaunting.class)); cards.add(new SetCardInfo("Eriette's Lullaby", 10, Rarity.COMMON, mage.cards.e.EriettesLullaby.class)); cards.add(new SetCardInfo("Eroded Canyon", 256, Rarity.COMMON, mage.cards.e.ErodedCanyon.class)); cards.add(new SetCardInfo("Failed Fording", 47, Rarity.COMMON, mage.cards.f.FailedFording.class));