diff --git a/Mage.Sets/src/mage/cards/t/TurnBurn.java b/Mage.Sets/src/mage/cards/t/TurnBurn.java
index fcd1e9e2c4a..1f74740716c 100644
--- a/Mage.Sets/src/mage/cards/t/TurnBurn.java
+++ b/Mage.Sets/src/mage/cards/t/TurnBurn.java
@@ -1,7 +1,6 @@
package mage.cards.t;
-import mage.MageInt;
import mage.abilities.effects.Effect;
import mage.abilities.effects.common.DamageTargetEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
@@ -11,7 +10,7 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SpellAbilityType;
import mage.constants.SubType;
-import mage.game.permanent.token.TokenImpl;
+import mage.game.permanent.token.custom.CreatureToken;
import mage.target.common.TargetAnyTarget;
import mage.target.common.TargetCreaturePermanent;
@@ -28,8 +27,12 @@ public final class TurnBurn extends SplitCard {
// Turn
// Until end of turn, target creature loses all abilities and becomes a red Weird with base power and toughness 0/1.
- Effect effect = new BecomesCreatureTargetEffect(new WeirdToken(), true, false, Duration.EndOfTurn)
- .withDurationRuleAtStart(true);
+ Effect effect = new BecomesCreatureTargetEffect(
+ new CreatureToken(0, 1, "red Weird with base power and toughness 0/1", SubType.WEIRD).withColor("R"),
+ true,
+ false,
+ Duration.EndOfTurn
+ ).withDurationRuleAtStart(true);
getLeftHalfCard().getSpellAbility().addEffect(effect);
getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent().withChooseHint("becomes a Weird"));
@@ -48,25 +51,4 @@ public final class TurnBurn extends SplitCard {
public TurnBurn copy() {
return new TurnBurn(this);
}
-
- private static class WeirdToken extends TokenImpl {
-
- private WeirdToken() {
- super("Weird", "red Weird with base power and toughness 0/1");
- cardType.add(CardType.CREATURE);
- color.setRed(true);
- subtype.add(SubType.WEIRD);
- power = new MageInt(0);
- toughness = new MageInt(1);
- }
- private WeirdToken(final WeirdToken token) {
- super(token);
- }
-
- public WeirdToken copy() {
- return new WeirdToken(this);
- }
-
- }
-
}
diff --git a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
index a38f6bf045b..de2b6e929ea 100644
--- a/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
+++ b/Mage.Sets/src/mage/cards/v/VastwoodAnimist.java
@@ -12,11 +12,14 @@ import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.SubType;
import mage.filter.common.FilterControlledLandPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.Game;
-import mage.game.permanent.token.TokenImpl;
+import mage.game.permanent.token.custom.CreatureToken;
import mage.target.common.TargetControlledPermanent;
/**
@@ -34,7 +37,7 @@ public final class VastwoodAnimist extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
- // {tap}: Target land you control becomes an X/X Elemental creature until end of turn, where X is the number of Allies you control. It's still a land.
+ // {T}: Target land you control becomes an X/X Elemental creature until end of turn, where X is the number of Allies you control. It's still a land.
Ability ability = new SimpleActivatedAbility(new VastwoodAnimistEffect(), new TapSourceCost());
ability.addTarget(new TargetControlledPermanent(new FilterControlledLandPermanent()));
this.addAbility(ability);
@@ -52,14 +55,10 @@ public final class VastwoodAnimist extends CardImpl {
class VastwoodAnimistEffect extends OneShotEffect {
- static final FilterControlledPermanent filterAllies = new FilterControlledPermanent("allies you control");
-
- static {
- filterAllies.add(SubType.ALLY.getPredicate());
- }
+ static final FilterControlledPermanent filterAllies = new FilterControlledPermanent(SubType.ALLY);
public VastwoodAnimistEffect() {
- super(Outcome.Benefit);
+ super(Outcome.BecomeCreature);
this.staticText = "Target land you control becomes an X/X Elemental creature until end of turn, where X is the number of Allies you control. It's still a land.";
}
@@ -75,27 +74,14 @@ class VastwoodAnimistEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
int amount = new PermanentsOnBattlefieldCount(filterAllies).calculate(game, source, this);
- ContinuousEffect effect = new BecomesCreatureTargetEffect(new VastwoodAnimistElementalToken(amount), false, true, Duration.EndOfTurn);
+ ContinuousEffect effect = new BecomesCreatureTargetEffect(
+ new CreatureToken(amount, amount, "X/X Elemental creature, where X is the number of Allies you control", SubType.ELEMENTAL),
+ false,
+ true,
+ Duration.EndOfTurn
+ );
effect.setTargetPointer(this.getTargetPointer().copy());
game.addEffect(effect, source);
return false;
}
}
-
-class VastwoodAnimistElementalToken extends TokenImpl {
-
- VastwoodAnimistElementalToken(int amount) {
- super("", "X/X Elemental creature, where X is the number of Allies you control");
- cardType.add(CardType.CREATURE);
- subtype.add(SubType.ELEMENTAL);
- power = new MageInt(amount);
- toughness = new MageInt(amount);
- }
- private VastwoodAnimistElementalToken(final VastwoodAnimistElementalToken token) {
- super(token);
- }
-
- public VastwoodAnimistElementalToken copy() {
- return new VastwoodAnimistElementalToken(this);
- }
-}
diff --git a/Mage.Sets/src/mage/cards/w/WakerootElemental.java b/Mage.Sets/src/mage/cards/w/WakerootElemental.java
index 0402b8a290e..23fc849c528 100644
--- a/Mage.Sets/src/mage/cards/w/WakerootElemental.java
+++ b/Mage.Sets/src/mage/cards/w/WakerootElemental.java
@@ -14,7 +14,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
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;
@@ -38,7 +38,11 @@ public final class WakerootElemental extends CardImpl {
new UntapTargetEffect(), new ManaCostsImpl<>("{G}{G}{G}{G}{G}")
);
ability.addEffect(new BecomesCreatureTargetEffect(
- new WakerootElementalToken(), false, true, Duration.Custom
+ new CreatureToken(5, 5, "Elemental creature with haste", SubType.ELEMENTAL)
+ .withAbility(HasteAbility.getInstance()),
+ false,
+ true,
+ Duration.Custom
).setText("It becomes a 5/5 Elemental creature with haste. It's still a land."));
ability.addTarget(new TargetPermanent(filter));
this.addAbility(ability);
@@ -53,25 +57,3 @@ public final class WakerootElemental extends CardImpl {
return new WakerootElemental(this);
}
}
-
-class WakerootElementalToken extends TokenImpl {
-
- WakerootElementalToken() {
- super("", "5/5 Elemental creature with haste");
- this.cardType.add(CardType.CREATURE);
- this.subtype.add(SubType.ELEMENTAL);
-
- this.power = new MageInt(5);
- this.toughness = new MageInt(5);
-
- this.addAbility(HasteAbility.getInstance());
- }
-
- private WakerootElementalToken(final WakerootElementalToken token) {
- super(token);
- }
-
- public WakerootElementalToken copy() {
- return new WakerootElementalToken(this);
- }
-}
diff --git a/Mage.Sets/src/mage/cards/w/WindZendikon.java b/Mage.Sets/src/mage/cards/w/WindZendikon.java
index 210206e70e6..7f2302c6da7 100644
--- a/Mage.Sets/src/mage/cards/w/WindZendikon.java
+++ b/Mage.Sets/src/mage/cards/w/WindZendikon.java
@@ -1,8 +1,6 @@
package mage.cards.w;
import java.util.UUID;
-import mage.MageInt;
-import mage.abilities.Ability;
import mage.abilities.common.DiesAttachedTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
import mage.abilities.effects.common.AttachEffect;
@@ -12,9 +10,11 @@ import mage.abilities.keyword.EnchantAbility;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
-import mage.constants.*;
-import mage.game.permanent.token.TokenImpl;
-import mage.target.TargetPermanent;
+import mage.constants.CardType;
+import mage.constants.Duration;
+import mage.constants.Outcome;
+import mage.constants.SubType;
+import mage.game.permanent.token.custom.CreatureToken;
import mage.target.common.TargetLandPermanent;
/**
@@ -27,24 +27,25 @@ public final class WindZendikon extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ENCHANTMENT},"{U}");
this.subtype.add(SubType.AURA);
-
// Enchant land
// Enchanted land is a 2/2 blue Elemental creature with flying. It's still a land.
// When enchanted land dies, return that card to its owner's hand.
-
- TargetPermanent auraTarget = new TargetLandPermanent();
+
+ TargetLandPermanent auraTarget = new TargetLandPermanent();
this.getSpellAbility().addTarget(auraTarget);
- this.getSpellAbility().addEffect(new AttachEffect(Outcome.PutCreatureInPlay));
- Ability ability = new EnchantAbility(auraTarget);
- this.addAbility(ability);
-
- Ability ability2 = new SimpleStaticAbility(new BecomesCreatureAttachedEffect(
- new WindZendikonElementalToken(), "Enchanted land is a 2/2 blue Elemental creature with flying. It's still a land",
- Duration.WhileOnBattlefield, BecomesCreatureAttachedEffect.LoseType.COLOR));
- this.addAbility(ability2);
-
- Ability ability3 = new DiesAttachedTriggeredAbility(new ReturnToHandAttachedEffect(), "enchanted land", false);
- this.addAbility(ability3);
+ this.getSpellAbility().addEffect(new AttachEffect(Outcome.BecomeCreature));
+ this.addAbility(new EnchantAbility(auraTarget));
+
+ this.addAbility(new SimpleStaticAbility(new BecomesCreatureAttachedEffect(
+ new CreatureToken(
+ 2, 2, "2/2 blue Elemental creature with flying", SubType.ELEMENTAL
+ ).withColor("U").withAbility(FlyingAbility.getInstance()),
+ "Enchanted land is a 2/2 blue Elemental creature with flying. It's still a land",
+ Duration.WhileOnBattlefield,
+ BecomesCreatureAttachedEffect.LoseType.COLOR
+ )));
+
+ this.addAbility(new DiesAttachedTriggeredAbility(new ReturnToHandAttachedEffect(), "enchanted land"));
}
private WindZendikon(final WindZendikon card) {
@@ -55,25 +56,4 @@ public final class WindZendikon extends CardImpl {
public WindZendikon copy() {
return new WindZendikon(this);
}
-
-}
-
-class WindZendikonElementalToken extends TokenImpl {
-
- WindZendikonElementalToken() {
- super("", "2/2 blue Elemental creature with flying");
- cardType.add(CardType.CREATURE);
- color.setBlue(true);
- subtype.add(SubType.ELEMENTAL);
- power = new MageInt(2);
- toughness = new MageInt(2);
- addAbility(FlyingAbility.getInstance());
- }
- private WindZendikonElementalToken(final WindZendikonElementalToken token) {
- super(token);
- }
-
- public WindZendikonElementalToken copy() {
- return new WindZendikonElementalToken(this);
- }
}
diff --git a/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java b/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java
index 3642d9cce99..63463352c7d 100644
--- a/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java
+++ b/Mage.Sets/src/mage/cards/w/WoodwraithCorrupter.java
@@ -14,9 +14,8 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
-import mage.constants.Zone;
import mage.filter.common.FilterLandPermanent;
-import mage.game.permanent.token.TokenImpl;
+import mage.game.permanent.token.custom.CreatureToken;
import mage.target.TargetPermanent;
/**
@@ -40,7 +39,13 @@ public final class WoodwraithCorrupter extends CardImpl {
this.toughness = new MageInt(6);
// {1}{B}{G}, {T}: Target Forest becomes a 4/4 black and green Elemental Horror creature. It's still a land.
- Effect effect = new BecomesCreatureTargetEffect(new WoodwraithCorrupterToken(), false, true, Duration.Custom);
+ Effect effect = new BecomesCreatureTargetEffect(
+ new CreatureToken(4, 4, "4/4 black and green Elemental Horror creature", SubType.ELEMENTAL, SubType.HORROR)
+ .withColor("BG"),
+ false,
+ true,
+ Duration.Custom
+ );
Ability ability = new SimpleActivatedAbility(effect, new ManaCostsImpl<>("{1}{B}{G}"));
ability.addTarget(new TargetPermanent(filter));
ability.addCost(new TapSourceCost());
@@ -56,26 +61,3 @@ public final class WoodwraithCorrupter extends CardImpl {
return new WoodwraithCorrupter(this);
}
}
-
-class WoodwraithCorrupterToken extends TokenImpl {
-
- public WoodwraithCorrupterToken() {
- super("", "4/4 black and green Elemental Horror creature");
- cardType.add(CardType.CREATURE);
-
- color.setBlack(true);
- color.setGreen(true);
- subtype.add(SubType.ELEMENTAL);
- subtype.add(SubType.HORROR);
-
- power = new MageInt(4);
- toughness = new MageInt(4);
- }
- private WoodwraithCorrupterToken(final WoodwraithCorrupterToken token) {
- super(token);
- }
-
- public WoodwraithCorrupterToken copy() {
- return new WoodwraithCorrupterToken(this);
- }
-}
diff --git a/Mage.Sets/src/mage/cards/x/XanthicStatue.java b/Mage.Sets/src/mage/cards/x/XanthicStatue.java
index bfde2c0c8e4..85d5287bb58 100644
--- a/Mage.Sets/src/mage/cards/x/XanthicStatue.java
+++ b/Mage.Sets/src/mage/cards/x/XanthicStatue.java
@@ -2,7 +2,6 @@
package mage.cards.x;
import java.util.UUID;
-import mage.MageInt;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BecomesCreatureSourceEffect;
@@ -11,8 +10,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
-import mage.constants.Zone;
-import mage.game.permanent.token.TokenImpl;
+import mage.constants.SubType;
+import mage.game.permanent.token.custom.CreatureToken;
/**
*
@@ -24,9 +23,15 @@ public final class XanthicStatue extends CardImpl {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{8}");
// {5}: Until end of turn, Xanthic Statue becomes an 8/8 Golem artifact creature with trample.
- this.addAbility(new SimpleActivatedAbility(new BecomesCreatureSourceEffect(new XanthicStatueCreature(), CardType.ARTIFACT, Duration.EndOfTurn)
- .setText("until end of turn, {this} becomes an 8/8 Golem artifact creature with trample")
- , new ManaCostsImpl<>("{5}")));
+ this.addAbility(new SimpleActivatedAbility(
+ new BecomesCreatureSourceEffect(
+ new CreatureToken(8, 8, "8/8 Golem artifact creature with trample", SubType.GOLEM)
+ .withAbility(TrampleAbility.getInstance()),
+ CardType.ARTIFACT,
+ Duration.EndOfTurn
+ ).setText("until end of turn, {this} becomes an 8/8 Golem artifact creature with trample"),
+ new ManaCostsImpl<>("{5}")
+ ));
}
private XanthicStatue(final XanthicStatue card) {
@@ -38,23 +43,3 @@ public final class XanthicStatue extends CardImpl {
return new XanthicStatue(this);
}
}
-
-class XanthicStatueCreature extends TokenImpl {
-
- public XanthicStatueCreature() {
- super("Xanthic Statue", "8/8 Golem artifact creature with trample");
- cardType.add(CardType.ARTIFACT);
- cardType.add(CardType.CREATURE);
- power = new MageInt(8);
- toughness = new MageInt(8);
-
- this.addAbility(TrampleAbility.getInstance());
- }
- private XanthicStatueCreature(final XanthicStatueCreature token) {
- super(token);
- }
-
- public XanthicStatueCreature copy() {
- return new XanthicStatueCreature(this);
- }
-}
diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt
index 11d8b0e38a4..7fa05b1b65e 100644
--- a/Utils/mtg-cards-data.txt
+++ b/Utils/mtg-cards-data.txt
@@ -27190,7 +27190,7 @@ Snapping Creeper|Worldwake|112|C|{2}{G}|Creature - Plant|2|3|Landfall - Whenever
Strength of the Tajuru|Worldwake|113|R|{X}{G}{G}|Instant|||Multikicker {1} (You may pay an additional {1} any number of times as you cast this spell.)$Choose target creature, then choose another target creature for each time Strength of the Tajuru was kicked. Put X +1/+1 counters on each of them.|
Summit Apes|Worldwake|114|U|{3}{G}|Creature - Ape|5|2|As long as you control a Mountain, Summit Apes can't be blocked except by two or more creatures.|
Terastodon|Worldwake|115|R|{6}{G}{G}|Creature - Elephant|9|9|When Terastodon enters the battlefield, you may destroy up to three target noncreature permanents. For each permanent put into a graveyard this way, its controller puts a 3/3 green Elephant creature token onto the battlefield.|
-Vastwood Animist|Worldwake|116|U|{2}{G}|Creature - Elf Shaman Ally|1|1|{tap}: Target land you control becomes an X/X Elemental creature until end of turn, where X is the number of Allies you control. It's still a land.|
+Vastwood Animist|Worldwake|116|U|{2}{G}|Creature - Elf Shaman Ally|1|1|{T}: Target land you control becomes an X/X Elemental creature until end of turn, where X is the number of Allies you control. It's still a land.|
Vastwood Zendikon|Worldwake|117|C|{4}{G}|Enchantment - Aura|||Enchant land$Enchanted land is a 6/4 green Elemental creature. It's still a land.$When enchanted land dies, return that card to its owner's hand.|
Wolfbriar Elemental|Worldwake|118|R|{2}{G}{G}|Creature - Elemental|4|4|Multikicker {G} (You may pay an additional {G} any number of times as you cast this spell.)$When Wolfbriar Elemental enters the battlefield, put a 2/2 green Wolf creature token onto the battlefield for each time it was kicked.|
Novablast Wurm|Worldwake|119|M|{3}{G}{G}{W}{W}|Creature - Wurm|7|7|Whenever Novablast Wurm attacks, destroy all other creatures.|