From 28066eb965f02ab04fc168a26e272942f55fca3d Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sat, 20 Dec 2025 09:09:45 -0500 Subject: [PATCH] [FIC] Implement Edea, Possessed Sorceress --- .../mage/cards/e/EdeaPossessedSorceress.java | 73 +++++++++++++++++++ .../src/mage/sets/FinalFantasyCommander.java | 1 + 2 files changed, 74 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/e/EdeaPossessedSorceress.java diff --git a/Mage.Sets/src/mage/cards/e/EdeaPossessedSorceress.java b/Mage.Sets/src/mage/cards/e/EdeaPossessedSorceress.java new file mode 100644 index 00000000000..8bef10d72c1 --- /dev/null +++ b/Mage.Sets/src/mage/cards/e/EdeaPossessedSorceress.java @@ -0,0 +1,73 @@ +package mage.cards.e; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesCreatureTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.ReturnToBattlefieldUnderOwnerControlTargetEffect; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.effects.common.continuous.GainControlTargetEffect; +import mage.abilities.keyword.HasteAbility; +import mage.abilities.keyword.WardAbility; +import mage.abilities.triggers.BeginningOfCombatTriggeredAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.*; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class EdeaPossessedSorceress extends CardImpl { + + private static final FilterPermanent filter + = new FilterControlledCreaturePermanent("creature you control but don't own"); + + static { + filter.add(TargetController.NOT_YOU.getOwnerPredicate()); + } + + public EdeaPossessedSorceress(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{U}{B}{R}"); + + this.supertype.add(SuperType.LEGENDARY); + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.WARLOCK); + this.power = new MageInt(2); + this.toughness = new MageInt(5); + + // Ward {2} + this.addAbility(new WardAbility(new ManaCostsImpl<>("{2}"))); + + // At the beginning of combat on your turn, gain control of target creature an opponent controls until end of turn. Untap that creature. It gains haste until end of turn. + Ability ability = new BeginningOfCombatTriggeredAbility(new GainControlTargetEffect(Duration.EndOfTurn)); + ability.addEffect(new UntapTargetEffect("Untap that creature")); + ability.addEffect(new GainAbilityTargetEffect(HasteAbility.getInstance()).withTargetDescription("It")); + ability.addTarget(new TargetOpponentsCreaturePermanent()); + this.addAbility(ability); + + // Whenever a creature you control but don't own dies, return it to the battlefield under its owner's control and you draw a card. + ability = new DiesCreatureTriggeredAbility( + new ReturnToBattlefieldUnderOwnerControlTargetEffect(false, false) + .setText("return it to the battlefield under its owner's control"), + false, filter, true + ); + ability.addEffect(new DrawCardSourceControllerEffect(1).concatBy("and you")); + this.addAbility(ability); + } + + private EdeaPossessedSorceress(final EdeaPossessedSorceress card) { + super(card); + } + + @Override + public EdeaPossessedSorceress copy() { + return new EdeaPossessedSorceress(this); + } +} diff --git a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java index 132033f6bc9..e09fb6f3701 100644 --- a/Mage.Sets/src/mage/sets/FinalFantasyCommander.java +++ b/Mage.Sets/src/mage/sets/FinalFantasyCommander.java @@ -142,6 +142,7 @@ public final class FinalFantasyCommander extends ExpansionSet { cards.add(new SetCardInfo("Drowned Catacomb", 388, Rarity.RARE, mage.cards.d.DrownedCatacomb.class)); cards.add(new SetCardInfo("Duelist's Flame", 452, Rarity.RARE, mage.cards.d.DuelistsFlame.class)); cards.add(new SetCardInfo("Duskshell Crawler", 301, Rarity.COMMON, mage.cards.d.DuskshellCrawler.class)); + cards.add(new SetCardInfo("Edea, Possessed Sorceress", 448, Rarity.RARE, mage.cards.e.EdeaPossessedSorceress.class)); cards.add(new SetCardInfo("Edgar, Master Machinist", 169, Rarity.RARE, mage.cards.e.EdgarMasterMachinist.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Edgar, Master Machinist", 80, Rarity.RARE, mage.cards.e.EdgarMasterMachinist.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Elena, Turk Recruit", 133, Rarity.RARE, mage.cards.e.ElenaTurkRecruit.class, NON_FULL_USE_VARIOUS));