From 6a2bc8f2eede1694d44e44288dc10c2695fc86aa Mon Sep 17 00:00:00 2001 From: theelk801 Date: Sat, 8 Nov 2025 15:12:12 -0500 Subject: [PATCH] [TLA] Implement Joo Dee, One of Many --- .../src/mage/cards/j/JooDeeOneOfMany.java | 52 +++++++++++++++++++ .../src/mage/sets/AvatarTheLastAirbender.java | 1 + 2 files changed, 53 insertions(+) create mode 100644 Mage.Sets/src/mage/cards/j/JooDeeOneOfMany.java diff --git a/Mage.Sets/src/mage/cards/j/JooDeeOneOfMany.java b/Mage.Sets/src/mage/cards/j/JooDeeOneOfMany.java new file mode 100644 index 00000000000..1736af86532 --- /dev/null +++ b/Mage.Sets/src/mage/cards/j/JooDeeOneOfMany.java @@ -0,0 +1,52 @@ +package mage.cards.j; + +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.ActivateAsSorceryActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.CreateTokenCopySourceEffect; +import mage.abilities.effects.common.SacrificeControllerEffect; +import mage.abilities.effects.keyword.SurveilEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.filter.StaticFilters; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class JooDeeOneOfMany extends CardImpl { + + public JooDeeOneOfMany(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{1}{B}"); + + this.subtype.add(SubType.HUMAN); + this.subtype.add(SubType.ADVISOR); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // {B}, {T}: Surveil 1. Create a token that's a copy of this creature, then sacrifice an artifact or creature. Activate only as a sorcery. + Ability ability = new ActivateAsSorceryActivatedAbility( + new SurveilEffect(1, false), new ManaCostsImpl<>("{B}") + ); + ability.addCost(new TapSourceCost()); + ability.addEffect(new CreateTokenCopySourceEffect()); + ability.addEffect(new SacrificeControllerEffect( + StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_CREATURE, 1, ", then" + )); + this.addAbility(ability); + } + + private JooDeeOneOfMany(final JooDeeOneOfMany card) { + super(card); + } + + @Override + public JooDeeOneOfMany copy() { + return new JooDeeOneOfMany(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java index b591bcb6c1b..e50d0beb900 100644 --- a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java +++ b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java @@ -163,6 +163,7 @@ public final class AvatarTheLastAirbender extends ExpansionSet { cards.add(new SetCardInfo("It'll Quench Ya!", 58, Rarity.COMMON, mage.cards.i.ItllQuenchYa.class)); cards.add(new SetCardInfo("Jeong Jeong's Deserters", 25, Rarity.COMMON, mage.cards.j.JeongJeongsDeserters.class)); cards.add(new SetCardInfo("Jet's Brainwashing", 143, Rarity.UNCOMMON, mage.cards.j.JetsBrainwashing.class)); + cards.add(new SetCardInfo("Joo Dee, One of Many", 105, Rarity.UNCOMMON, mage.cards.j.JooDeeOneOfMany.class)); cards.add(new SetCardInfo("Katara, Bending Prodigy", 59, Rarity.UNCOMMON, mage.cards.k.KataraBendingProdigy.class)); cards.add(new SetCardInfo("Katara, Water Tribe's Hope", 231, Rarity.RARE, mage.cards.k.KataraWaterTribesHope.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Katara, Water Tribe's Hope", 351, Rarity.RARE, mage.cards.k.KataraWaterTribesHope.class, NON_FULL_USE_VARIOUS));