From a3d1e9eae2d16dda9d46c92450376c4b78b00574 Mon Sep 17 00:00:00 2001 From: Muz Ali Date: Sun, 25 Jan 2026 08:21:38 -0600 Subject: [PATCH 1/2] Refactor Answered Prayers to not use a custom private Token class --- .../src/mage/cards/a/AnsweredPrayers.java | 23 ++----------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AnsweredPrayers.java b/Mage.Sets/src/mage/cards/a/AnsweredPrayers.java index 7562fe56dd5..91a2e8f5eb6 100644 --- a/Mage.Sets/src/mage/cards/a/AnsweredPrayers.java +++ b/Mage.Sets/src/mage/cards/a/AnsweredPrayers.java @@ -16,6 +16,7 @@ import mage.constants.SubType; import mage.filter.StaticFilters; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.game.permanent.token.Angel33Token; import mage.game.permanent.token.TokenImpl; import java.util.UUID; @@ -72,28 +73,8 @@ class AnsweredPrayersEffect extends OneShotEffect { return true; } game.addEffect(new BecomesCreatureSourceEffect( - new AnsweredPrayersToken(), CardType.ENCHANTMENT, Duration.EndOfTurn + new Angel33Token(), CardType.ENCHANTMENT, Duration.EndOfTurn ), source); return true; } } - -class AnsweredPrayersToken extends TokenImpl { - - AnsweredPrayersToken() { - super("", "3/3 Angel creature with flying"); - cardType.add(CardType.CREATURE); - subtype.add(SubType.ANGEL); - power = new MageInt(3); - toughness = new MageInt(3); - this.addAbility(FlyingAbility.getInstance()); - } - - private AnsweredPrayersToken(final AnsweredPrayersToken token) { - super(token); - } - - public AnsweredPrayersToken copy() { - return new AnsweredPrayersToken(this); - } -} From bd6d0fdedbd62a572f1a4c51cae969beec39a007 Mon Sep 17 00:00:00 2001 From: Muz Ali Date: Sun, 25 Jan 2026 08:32:08 -0600 Subject: [PATCH 2/2] Refactor Avalanche Caller to not use a custom private Token class --- .../src/mage/cards/a/AvalancheCaller.java | 40 ++++++------------- 1 file changed, 13 insertions(+), 27 deletions(-) diff --git a/Mage.Sets/src/mage/cards/a/AvalancheCaller.java b/Mage.Sets/src/mage/cards/a/AvalancheCaller.java index 7d5ed7f0ce2..181ae34052f 100644 --- a/Mage.Sets/src/mage/cards/a/AvalancheCaller.java +++ b/Mage.Sets/src/mage/cards/a/AvalancheCaller.java @@ -15,7 +15,7 @@ import mage.constants.SubType; import mage.constants.SuperType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledLandPermanent; -import mage.game.permanent.token.TokenImpl; +import mage.game.permanent.token.custom.CreatureToken; import mage.target.TargetPermanent; import java.util.UUID; @@ -41,9 +41,18 @@ public final class AvalancheCaller extends CardImpl { this.toughness = new MageInt(3); // {2}: Target snow land you control becomes a 4/4 Elemental creature with haste and hexproof until end of turn. It's still a land. - Ability ability = new SimpleActivatedAbility(new BecomesCreatureTargetEffect( - new AvalancheCallerToken(), false, true, Duration.EndOfTurn - ), new GenericManaCost(2)); + Ability ability = new SimpleActivatedAbility( + new BecomesCreatureTargetEffect( + new CreatureToken(4, 4, "4/4 Elemental creature with hexproof and haste") + .withSubType(SubType.ELEMENTAL) + .withAbility(HasteAbility.getInstance()) + .withAbility(HexproofAbility.getInstance()), + false, + true, + Duration.EndOfTurn + ), + new GenericManaCost(2) + ); ability.addTarget(new TargetPermanent(filter)); this.addAbility(ability); } @@ -57,26 +66,3 @@ public final class AvalancheCaller extends CardImpl { return new AvalancheCaller(this); } } - -class AvalancheCallerToken extends TokenImpl { - - AvalancheCallerToken() { - super("", "4/4 Elemental creature with hexproof and haste"); - this.cardType.add(CardType.CREATURE); - this.subtype.add(SubType.ELEMENTAL); - - this.power = new MageInt(4); - this.toughness = new MageInt(4); - - this.addAbility(HexproofAbility.getInstance()); - this.addAbility(HasteAbility.getInstance()); - } - - private AvalancheCallerToken(final AvalancheCallerToken token) { - super(token); - } - - public AvalancheCallerToken copy() { - return new AvalancheCallerToken(this); - } -}