From b27d595b618933ff360e2bf6c169c763acc7da0a Mon Sep 17 00:00:00 2001 From: theelk801 Date: Tue, 6 Jan 2026 20:42:54 -0500 Subject: [PATCH] [ECC] Implement Belonging --- Mage.Sets/src/mage/cards/b/Belonging.java | 44 +++++++++++++++++++ Mage.Sets/src/mage/cards/c/CribSwap.java | 6 +-- .../mage/sets/LorwynEclipsedCommander.java | 2 + ...n.java => ShapeshifterColorlessToken.java} | 10 ++--- Mage/src/main/resources/tokens-database.txt | 14 +++--- 5 files changed, 61 insertions(+), 15 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/b/Belonging.java rename Mage/src/main/java/mage/game/permanent/token/{CribSwapShapeshifterWhiteToken.java => ShapeshifterColorlessToken.java} (63%) diff --git a/Mage.Sets/src/mage/cards/b/Belonging.java b/Mage.Sets/src/mage/cards/b/Belonging.java new file mode 100644 index 00000000000..14ac82c5669 --- /dev/null +++ b/Mage.Sets/src/mage/cards/b/Belonging.java @@ -0,0 +1,44 @@ +package mage.cards.b; + +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.EncoreAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.constants.SubType; +import mage.game.permanent.token.ShapeshifterColorlessToken; + +import java.util.UUID; + +/** + * @author TheElk801 + */ +public final class Belonging extends CardImpl { + + public Belonging(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{5}{W}"); + + this.subtype.add(SubType.ELEMENTAL); + this.subtype.add(SubType.INCARNATION); + this.power = new MageInt(6); + this.toughness = new MageInt(6); + + // When this creature enters, create three 1/1 colorless Shapeshifter creature tokens with changeling. + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new ShapeshifterColorlessToken(), 3))); + + // Encore {6}{W}{W} + this.addAbility(new EncoreAbility(new ManaCostsImpl<>("{6}{W}{W}"))); + } + + private Belonging(final Belonging card) { + super(card); + } + + @Override + public Belonging copy() { + return new Belonging(this); + } +} diff --git a/Mage.Sets/src/mage/cards/c/CribSwap.java b/Mage.Sets/src/mage/cards/c/CribSwap.java index 6de9284cf01..d41f88be905 100644 --- a/Mage.Sets/src/mage/cards/c/CribSwap.java +++ b/Mage.Sets/src/mage/cards/c/CribSwap.java @@ -8,7 +8,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.game.permanent.token.CribSwapShapeshifterWhiteToken; +import mage.game.permanent.token.ShapeshifterColorlessToken; import mage.target.common.TargetCreaturePermanent; import java.util.UUID; @@ -26,7 +26,7 @@ public final class CribSwap extends CardImpl { this.addAbility(new ChangelingAbility()); // Exile target creature. Its controller creates a 1/1 colorless Shapeshifter creature token with changeling. this.getSpellAbility().addEffect(new ExileTargetEffect()); - this.getSpellAbility().addEffect(new CreateTokenControllerTargetEffect(new CribSwapShapeshifterWhiteToken())); + this.getSpellAbility().addEffect(new CreateTokenControllerTargetEffect(new ShapeshifterColorlessToken())); this.getSpellAbility().addTarget(new TargetCreaturePermanent()); } @@ -39,4 +39,4 @@ public final class CribSwap extends CardImpl { public CribSwap copy() { return new CribSwap(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java b/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java index 126f5c64db9..c1ddaddc0f1 100644 --- a/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java +++ b/Mage.Sets/src/mage/sets/LorwynEclipsedCommander.java @@ -28,6 +28,8 @@ public final class LorwynEclipsedCommander extends ExpansionSet { cards.add(new SetCardInfo("Auntie Ool, Cursewretch", 2, Rarity.MYTHIC, mage.cards.a.AuntieOolCursewretch.class)); cards.add(new SetCardInfo("Avenger of Zendikar", 98, Rarity.MYTHIC, mage.cards.a.AvengerOfZendikar.class)); cards.add(new SetCardInfo("Bane of Progress", 99, Rarity.RARE, mage.cards.b.BaneOfProgress.class)); + cards.add(new SetCardInfo("Belonging", 25, Rarity.RARE, mage.cards.b.Belonging.class, NON_FULL_USE_VARIOUS)); + cards.add(new SetCardInfo("Belonging", 5, Rarity.RARE, mage.cards.b.Belonging.class, NON_FULL_USE_VARIOUS)); cards.add(new SetCardInfo("Binding the Old Gods", 120, Rarity.UNCOMMON, mage.cards.b.BindingTheOldGods.class)); cards.add(new SetCardInfo("Black Sun's Zenith", 71, Rarity.RARE, mage.cards.b.BlackSunsZenith.class)); cards.add(new SetCardInfo("Blasphemous Act", 89, Rarity.RARE, mage.cards.b.BlasphemousAct.class)); diff --git a/Mage/src/main/java/mage/game/permanent/token/CribSwapShapeshifterWhiteToken.java b/Mage/src/main/java/mage/game/permanent/token/ShapeshifterColorlessToken.java similarity index 63% rename from Mage/src/main/java/mage/game/permanent/token/CribSwapShapeshifterWhiteToken.java rename to Mage/src/main/java/mage/game/permanent/token/ShapeshifterColorlessToken.java index 8b8261d386b..8295f713350 100644 --- a/Mage/src/main/java/mage/game/permanent/token/CribSwapShapeshifterWhiteToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ShapeshifterColorlessToken.java @@ -8,9 +8,9 @@ import mage.constants.SubType; /** * @author spjspj */ -public final class CribSwapShapeshifterWhiteToken extends TokenImpl { +public final class ShapeshifterColorlessToken extends TokenImpl { - public CribSwapShapeshifterWhiteToken() { + public ShapeshifterColorlessToken() { super("Shapeshifter Token", "1/1 colorless Shapeshifter creature token with changeling"); cardType.add(CardType.CREATURE); subtype.add(SubType.SHAPESHIFTER); @@ -19,11 +19,11 @@ public final class CribSwapShapeshifterWhiteToken extends TokenImpl { addAbility(new ChangelingAbility()); } - private CribSwapShapeshifterWhiteToken(final CribSwapShapeshifterWhiteToken token) { + private ShapeshifterColorlessToken(final ShapeshifterColorlessToken token) { super(token); } - public CribSwapShapeshifterWhiteToken copy() { - return new CribSwapShapeshifterWhiteToken(this); + public ShapeshifterColorlessToken copy() { + return new ShapeshifterColorlessToken(this); } } diff --git a/Mage/src/main/resources/tokens-database.txt b/Mage/src/main/resources/tokens-database.txt index ae925535b1d..7e352684134 100644 --- a/Mage/src/main/resources/tokens-database.txt +++ b/Mage/src/main/resources/tokens-database.txt @@ -319,7 +319,7 @@ |Generate|TOK:C15|Lightning Rager|||LightningRagerToken| |Generate|TOK:C15|Phyrexian Germ|||PhyrexianGermToken| |Generate|TOK:C15|Saproling|||SaprolingToken| -|Generate|TOK:C15|Shapeshifter|||CribSwapShapeshifterWhiteToken| +|Generate|TOK:C15|Shapeshifter|||ShapeshifterColorlessToken| |Generate|TOK:C15|Snake|1||SnakeToken| |Generate|TOK:C15|Snake|2||PatagiaViperSnakeToken| |Generate|TOK:C15|Spider|||SpiderToken| @@ -381,7 +381,7 @@ |Generate|TOK:C18|Phyrexian Myr|||BrudicladTelchorMyrToken| |Generate|TOK:C18|Plant|||PlantToken| |Generate|TOK:C18|Servo|||ServoToken| -|Generate|TOK:C18|Shapeshifter|||CribSwapShapeshifterWhiteToken| +|Generate|TOK:C18|Shapeshifter|||ShapeshifterColorlessToken| |Generate|TOK:C18|Soldier|||SoldierToken| |Generate|TOK:C18|Survivor|||SurvivorToken| |Generate|TOK:C18|Thopter|1||ThopterColorlessToken| @@ -698,7 +698,7 @@ |Generate|TOK:LRW|Goblin Rogue|||GoblinRogueToken| |Generate|TOK:LRW|Kithkin Soldier|||KithkinSoldierToken| |Generate|TOK:LRW|Merfolk Wizard|||MerfolkWizardToken| -|Generate|TOK:LRW|Shapeshifter|||CribSwapShapeshifterWhiteToken| +|Generate|TOK:LRW|Shapeshifter|||ShapeshifterColorlessToken| |Generate|TOK:LRW|Wolf|||WolfToken| # M10 @@ -1589,7 +1589,7 @@ |Generate|TOK:2XM|Plant|||PlantToken| |Generate|TOK:2XM|Saproling|||SaprolingToken| |Generate|TOK:2XM|Servo|||ServoToken| -|Generate|TOK:2XM|Shapeshifter|||CribSwapShapeshifterWhiteToken| +|Generate|TOK:2XM|Shapeshifter|||ShapeshifterColorlessToken| |Generate|TOK:2XM|Soldier|||SoldierToken| |Generate|TOK:2XM|Squirrel|||SquirrelToken| |Generate|TOK:2XM|Thopter|1||ThopterColorlessToken| @@ -1688,7 +1688,7 @@ |Generate|TOK:CM2|Phyrexian Wurm|1||WurmWithDeathtouchToken| |Generate|TOK:CM2|Phyrexian Wurm|2||WurmWithLifelinkToken| |Generate|TOK:CM2|Saproling|||SaprolingToken| -|Generate|TOK:CM2|Shapeshifter|||CribSwapShapeshifterWhiteToken| +|Generate|TOK:CM2|Shapeshifter|||ShapeshifterColorlessToken| |Generate|TOK:CM2|Spirit|||SpiritWhiteToken| |Generate|TOK:CM2|Triskelavite|||TriskelaviteToken| |Generate|TOK:CM2|Tuktuk the Returned|||TuktukTheReturnedToken| @@ -1828,7 +1828,7 @@ |Generate|TOK:CLB|Rabbit|||RabbitToken| |Generate|TOK:CLB|Saproling|||SaprolingToken| |Generate|TOK:CLB|Satyr|||XenagosSatyrToken| -|Generate|TOK:CLB|Shapeshifter|1||CribSwapShapeshifterWhiteToken| +|Generate|TOK:CLB|Shapeshifter|1||ShapeshifterColorlessToken| |Generate|TOK:CLB|Shapeshifter|2||ShapeshifterToken| |Generate|TOK:CLB|Shapeshifter|3||Shapeshifter32Token| |Generate|TOK:CLB|Shapeshifter|4||ShapeshifterBlueToken| @@ -2557,7 +2557,7 @@ |Generate|TOK:M3C|Phyrexian Myr|||BrudicladTelchorMyrToken| |Generate|TOK:M3C|Sand Warrior|||SandWarriorToken| |Generate|TOK:M3C|Saproling|||SaprolingToken| -|Generate|TOK:M3C|Shapeshifter|1||CribSwapShapeshifterWhiteToken| +|Generate|TOK:M3C|Shapeshifter|1||ShapeshifterColorlessToken| |Generate|TOK:M3C|Shapeshifter|2||ShapeshifterBlueToken| |Generate|TOK:M3C|Spirit|||UginTheIneffableToken| |Generate|TOK:M3C|Tarmogoyf|||TarmogoyfToken|