From 626317cf6833b34ba479c811c50776b14c985f36 Mon Sep 17 00:00:00 2001 From: theelk801 Date: Wed, 12 Nov 2025 09:01:52 -0500 Subject: [PATCH] [TLA] Implement Ember Island Production --- .../mage/cards/e/EmberIslandProduction.java | 55 +++++++++++++++++++ .../src/mage/sets/AvatarTheLastAirbender.java | 1 + .../common/CreateTokenCopyTargetEffect.java | 14 ++++- 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/e/EmberIslandProduction.java diff --git a/Mage.Sets/src/mage/cards/e/EmberIslandProduction.java b/Mage.Sets/src/mage/cards/e/EmberIslandProduction.java new file mode 100644 index 00000000000..6c5c00c99d6 --- /dev/null +++ b/Mage.Sets/src/mage/cards/e/EmberIslandProduction.java @@ -0,0 +1,55 @@ +package mage.cards.e; + +import mage.abilities.Mode; +import mage.abilities.effects.common.CreateTokenCopyTargetEffect; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetOpponentsCreaturePermanent; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class EmberIslandProduction extends CardImpl { + + public EmberIslandProduction(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}{U}"); + + // Choose one-- + // * Create a token that's a copy of target creature you control, except it's not legendary and it's a 4/4 Hero in addition to its other types. + this.getSpellAbility().addEffect( + new CreateTokenCopyTargetEffect() + .setIsntLegendary(true) + .setPower(4) + .setToughness(4) + .withAdditionalSubType(SubType.HERO) + .setText("create a token that's a copy of target creature you control, " + + "except it's not legendary and it's a 4/4 Hero in addition to its other types") + ); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); + + // * Create a token that's a copy of target creature an opponent controls, except it's not legendary and it's a 2/2 Coward in addition to its other types. + this.getSpellAbility().addMode(new Mode( + new CreateTokenCopyTargetEffect() + .setIsntLegendary(true) + .setPower(2) + .setToughness(2) + .withAdditionalSubType(SubType.COWARD) + .setText("create a token that's a copy of target creature an opponent controls, " + + "except it's not legendary and it's a 2/2 Coward in addition to its other types") + ).addTarget(new TargetOpponentsCreaturePermanent())); + } + + private EmberIslandProduction(final EmberIslandProduction card) { + super(card); + } + + @Override + public EmberIslandProduction copy() { + return new EmberIslandProduction(this); + } +} diff --git a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java index 8a95bdd63a9..8df57f70d93 100644 --- a/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java +++ b/Mage.Sets/src/mage/sets/AvatarTheLastAirbender.java @@ -116,6 +116,7 @@ public final class AvatarTheLastAirbender extends ExpansionSet { cards.add(new SetCardInfo("Earthbending Lesson", 176, Rarity.COMMON, mage.cards.e.EarthbendingLesson.class)); cards.add(new SetCardInfo("Earthen Ally", 177, Rarity.RARE, mage.cards.e.EarthenAlly.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Earthen Ally", 377, Rarity.RARE, mage.cards.e.EarthenAlly.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Ember Island Production", 48, Rarity.UNCOMMON, mage.cards.e.EmberIslandProduction.class)); cards.add(new SetCardInfo("Enter the Avatar State", 18, Rarity.UNCOMMON, mage.cards.e.EnterTheAvatarState.class)); cards.add(new SetCardInfo("Epic Downfall", 96, Rarity.UNCOMMON, mage.cards.e.EpicDownfall.class)); cards.add(new SetCardInfo("Fancy Footwork", 19, Rarity.UNCOMMON, mage.cards.f.FancyFootwork.class)); diff --git a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java index 6f02329d0b3..eed991c7797 100644 --- a/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java +++ b/Mage/src/main/java/mage/abilities/effects/common/CreateTokenCopyTargetEffect.java @@ -58,8 +58,8 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect { private final boolean tapped; private Permanent savedPermanent = null; private int startingLoyalty = -1; - private final int tokenPower; - private final int tokenToughness; + private int tokenPower; + private int tokenToughness; private boolean useLKI = false; private PermanentModifier permanentModifier = null; @@ -387,6 +387,16 @@ public class CreateTokenCopyTargetEffect extends OneShotEffect { return this; } + public CreateTokenCopyTargetEffect setPower(int tokenPower) { + this.tokenPower = tokenPower; + return this; + } + + public CreateTokenCopyTargetEffect setToughness(int tokenToughness) { + this.tokenToughness = tokenToughness; + return this; + } + public CreateTokenCopyTargetEffect addAbilityClassesToRemoveFromTokens(Class clazz) { this.abilityClazzesToRemove.add(clazz); return this;