From 674661b605735f34c2774c5df132d1f150744114 Mon Sep 17 00:00:00 2001 From: Susucre <34709007+Susucre@users.noreply.github.com> Date: Sat, 4 Nov 2023 17:10:35 +0100 Subject: [PATCH] [LCI] Implement Fungal Fortitude --- .../src/mage/cards/f/FungalFortitude.java | 59 +++++++++++++++++++ .../src/mage/sets/TheLostCavernsOfIxalan.java | 1 + ...efieldUnderOwnerControlAttachedEffect.java | 10 +++- 3 files changed, 69 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/cards/f/FungalFortitude.java diff --git a/Mage.Sets/src/mage/cards/f/FungalFortitude.java b/Mage.Sets/src/mage/cards/f/FungalFortitude.java new file mode 100644 index 00000000000..a51d8798e78 --- /dev/null +++ b/Mage.Sets/src/mage/cards/f/FungalFortitude.java @@ -0,0 +1,59 @@ +package mage.cards.f; + +import mage.abilities.common.DiesAttachedTriggeredAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.ReturnToBattlefieldUnderOwnerControlAttachedEffect; +import mage.abilities.effects.common.continuous.BoostEnchantedEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.abilities.keyword.FlashAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.SubType; +import mage.constants.Zone; +import mage.target.TargetPermanent; +import mage.target.common.TargetCreaturePermanent; + +import java.util.UUID; + +/** + * @author Susucr + */ +public final class FungalFortitude extends CardImpl { + + public FungalFortitude(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}"); + + this.subtype.add(SubType.AURA); + + // Flash + this.addAbility(FlashAbility.getInstance()); + + // Enchant creature + TargetPermanent auraTarget = new TargetCreaturePermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); + this.addAbility(new EnchantAbility(auraTarget)); + + // Enchanted creature gets +2/+0. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 0))); + + // When enchanted creature dies, return it to the battlefield tapped under its owner's control. + this.addAbility(new DiesAttachedTriggeredAbility( + new ReturnToBattlefieldUnderOwnerControlAttachedEffect(true), + "enchanted creature", + false + )); + } + + private FungalFortitude(final FungalFortitude card) { + super(card); + } + + @Override + public FungalFortitude copy() { + return new FungalFortitude(this); + } +} diff --git a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java index 57fed8fa62b..6fa4965cda1 100644 --- a/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java +++ b/Mage.Sets/src/mage/sets/TheLostCavernsOfIxalan.java @@ -108,6 +108,7 @@ public final class TheLostCavernsOfIxalan extends ExpansionSet { cards.add(new SetCardInfo("Forest", 401, Rarity.LAND, mage.cards.basiclands.Forest.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Forgotten Monument", 272, Rarity.UNCOMMON, mage.cards.f.ForgottenMonument.class)); cards.add(new SetCardInfo("Frilled Cave-Wurm", 57, Rarity.COMMON, mage.cards.f.FrilledCaveWurm.class)); + cards.add(new SetCardInfo("Fungal Fortitude", 106, Rarity.COMMON, mage.cards.f.FungalFortitude.class)); cards.add(new SetCardInfo("Gargantuan Leech", 107, Rarity.UNCOMMON, mage.cards.g.GargantuanLeech.class)); cards.add(new SetCardInfo("Geode Grotto", 146, Rarity.UNCOMMON, mage.cards.g.GeodeGrotto.class)); cards.add(new SetCardInfo("Geological Appraiser", 150, Rarity.UNCOMMON, mage.cards.g.GeologicalAppraiser.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java index e68aa8ba80d..56f75ba648d 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/ReturnToBattlefieldUnderOwnerControlAttachedEffect.java @@ -15,13 +15,21 @@ import mage.players.Player; */ public class ReturnToBattlefieldUnderOwnerControlAttachedEffect extends OneShotEffect { + private final boolean tapped; + public ReturnToBattlefieldUnderOwnerControlAttachedEffect() { + this(false); + } + + public ReturnToBattlefieldUnderOwnerControlAttachedEffect(boolean tapped) { super(Outcome.Neutral); + this.tapped = tapped; staticText = "return that card to the battlefield under its owner's control"; } protected ReturnToBattlefieldUnderOwnerControlAttachedEffect(final ReturnToBattlefieldUnderOwnerControlAttachedEffect effect) { super(effect); + this.tapped = effect.tapped; } @Override @@ -39,7 +47,7 @@ public class ReturnToBattlefieldUnderOwnerControlAttachedEffect extends OneShotE if (object instanceof Permanent) { Card card = game.getCard(((Permanent) object).getId()); if (card != null) { - if (controller.moveCards(card, Zone.BATTLEFIELD, source, game, false, false, true, null)) { + if (controller.moveCards(card, Zone.BATTLEFIELD, source, game, this.tapped, false, true, null)) { return true; } }