[STX] added tokens and images download;

This commit is contained in:
Oleg Agafonov 2021-07-03 23:28:34 +04:00
parent 50c9258263
commit 27a55529a9
63 changed files with 192 additions and 149 deletions

View file

@ -550,6 +550,17 @@ public class ScryfallImageSupportTokens {
put("TSR/Soldier", "https://api.scryfall.com/cards/ttsr/2/en?format=image"); put("TSR/Soldier", "https://api.scryfall.com/cards/ttsr/2/en?format=image");
put("TSR/Spider", "https://api.scryfall.com/cards/ttsr/6/en?format=image"); put("TSR/Spider", "https://api.scryfall.com/cards/ttsr/6/en?format=image");
// STX
put("STX/Avatar", "https://api.scryfall.com/cards/tstx/1/en?format=image");
put("STX/Elemental", "https://api.scryfall.com/cards/tstx/2/en?format=image");
put("STX/Fractal", "https://api.scryfall.com/cards/tstx/3/en?format=image");
put("STX/Inkling", "https://api.scryfall.com/cards/tstx/4/en?format=image");
put("STX/Emblem Lukka, Wayward Bonder", "https://api.scryfall.com/cards/tstx/8/en?format=image");
put("STX/Pest", "https://api.scryfall.com/cards/tstx/5/en?format=image");
put("STX/Emblem Rowan, Scholar of Sparks", "https://api.scryfall.com/cards/tstx/9/en?format=image");
put("STX/Spirit", "https://api.scryfall.com/cards/tstx/6/en?format=image");
put("STX/Treasure", "https://api.scryfall.com/cards/tstx/7/en?format=image");
// C21 // C21
put("C21/Beast/1", "https://api.scryfall.com/cards/tc21/10/en?format=image"); // 3/3 put("C21/Beast/1", "https://api.scryfall.com/cards/tc21/10/en?format=image"); // 3/3
put("C21/Beast/2", "https://api.scryfall.com/cards/tc21/11/en?format=image"); // 4/4 put("C21/Beast/2", "https://api.scryfall.com/cards/tc21/11/en?format=image"); // 4/4

View file

@ -106,6 +106,8 @@
|Generate|EMBLEM:KHM|Kaya the Inexorable||Emblem Kaya|KayaTheInexorableEmblem| |Generate|EMBLEM:KHM|Kaya the Inexorable||Emblem Kaya|KayaTheInexorableEmblem|
|Generate|EMBLEM:KHM|Tibalt Cosmic Imposter||Emblem Tibalt|TibaltCosmicImposterEmblem| |Generate|EMBLEM:KHM|Tibalt Cosmic Imposter||Emblem Tibalt|TibaltCosmicImposterEmblem|
|Generate|EMBLEM:KHM|Tyvar Kell||Emblem Tyvar|TyvarKellEmblem| |Generate|EMBLEM:KHM|Tyvar Kell||Emblem Tyvar|TyvarKellEmblem|
|Generate|EMBLEM:STX|Lukka, Wayward Bonder||Emblem Lukka|LukkaWaywardBonderEmblem|
|Generate|EMBLEM:STX|Rowan, Scholar of Sparks||Emblem Rowan|RowanScholarOfSparksEmblem|
# Planes # Planes
|Generate|PLANE:PCA|Plane - Academy at Tolaria West|||AcademyAtTolariaWestPlane| |Generate|PLANE:PCA|Plane - Academy at Tolaria West|||AcademyAtTolariaWestPlane|
@ -1499,6 +1501,15 @@
|Generate|TOK:TSR|Soldier|||SoldierToken| |Generate|TOK:TSR|Soldier|||SoldierToken|
|Generate|TOK:TSR|Spider|||PenumbraSpiderToken| |Generate|TOK:TSR|Spider|||PenumbraSpiderToken|
// STX
|Generate|TOK:STX|Avatar|||BloodAvatarToken|
|Generate|TOK:STX|Elemental|||Elemental44Token|
|Generate|TOK:STX|Fractal|||FractalToken|
|Generate|TOK:STX|Inkling|||InklingToken|
|Generate|TOK:STX|Pest|||Pest11GainLifeToken|
|Generate|TOK:STX|Spirit|||Spirit32Token|
|Generate|TOK:STX|Treasure|||TreasureToken|
# C21 # C21
|Generate|TOK:C21|Beast|1||BeastToken| |Generate|TOK:C21|Beast|1||BeastToken|
|Generate|TOK:C21|Beast|2||BeastToken2| |Generate|TOK:C21|Beast|2||BeastToken2|
@ -1529,7 +1540,4 @@
|Generate|TOK:C21|Thopter|||ThopterColorlessToken| |Generate|TOK:C21|Thopter|||ThopterColorlessToken|
|Generate|TOK:C21|Whale|||ReefWormWhaleToken| |Generate|TOK:C21|Whale|||ReefWormWhaleToken|
|Generate|TOK:C21|Wurm|||WurmToken| |Generate|TOK:C21|Wurm|||WurmToken|
|Generate|TOK:C21|Zombie|||ZombieToken| |Generate|TOK:C21|Zombie|||ZombieToken|
#|Generate|TOK:C21|xxx|||xxxToken|

View file

@ -1,23 +1,23 @@
package mage.cards.b; package mage.cards.b;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.PayLifeCost; import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.UntapAllLandsControllerEffect; import mage.abilities.effects.common.UntapAllLandsControllerEffect;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.abilities.keyword.FlyingAbility; import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID;
/** /**
*
* @author weirddan455 * @author weirddan455
*/ */
public final class BeledrosWitherbloom extends CardImpl { public final class BeledrosWitherbloom extends CardImpl {
@ -35,7 +35,7 @@ public final class BeledrosWitherbloom extends CardImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// At the beginning of each upkeep, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." // At the beginning of each upkeep, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life."
this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new WitherbloomToken()), TargetController.EACH_PLAYER, false)); this.addAbility(new BeginningOfUpkeepTriggeredAbility(new CreateTokenEffect(new Pest11GainLifeToken()), TargetController.EACH_PLAYER, false));
// Pay 10 life: Untap all lands you control. Activate only once each turn. // Pay 10 life: Untap all lands you control. Activate only once each turn.
SimpleActivatedAbility ability = new SimpleActivatedAbility(new UntapAllLandsControllerEffect() SimpleActivatedAbility ability = new SimpleActivatedAbility(new UntapAllLandsControllerEffect()

View file

@ -12,7 +12,7 @@ import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import java.util.UUID; import java.util.UUID;
@ -32,7 +32,7 @@ public final class Biomathematician extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// When Biomathematician enters the battlefield, create a 0/0 green and blue Fractal creature token. Put a +1/+1 counter on each Fractal you control. // When Biomathematician enters the battlefield, create a 0/0 green and blue Fractal creature token. Put a +1/+1 counter on each Fractal you control.
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new QuandrixToken())); Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new FractalToken()));
ability.addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter)); ability.addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter));
this.addAbility(ability); this.addAbility(ability);
} }

View file

@ -18,7 +18,7 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.AttackingPredicate; import mage.filter.predicate.permanent.AttackingPredicate;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID; import java.util.UUID;
@ -51,7 +51,7 @@ public final class BlightMound extends CardImpl {
// Whenever a nontoken creature you control dies, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." // Whenever a nontoken creature you control dies, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life."
this.addAbility(new DiesCreatureTriggeredAbility( this.addAbility(new DiesCreatureTriggeredAbility(
new CreateTokenEffect(new WitherbloomToken()), false, filter2 new CreateTokenEffect(new Pest11GainLifeToken()), false, filter2
)); ));
} }

View file

@ -13,7 +13,7 @@ import mage.filter.FilterPermanent;
import mage.filter.common.FilterNonlandPermanent; import mage.filter.common.FilterNonlandPermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import java.util.UUID; import java.util.UUID;
@ -33,7 +33,7 @@ public final class BlotOutTheSky extends CardImpl {
// Create X tapped 2/1 white and black Inkling creature tokens with flying. If X is 6 or more, destroy all noncreature, nonland permanents. // Create X tapped 2/1 white and black Inkling creature tokens with flying. If X is 6 or more, destroy all noncreature, nonland permanents.
this.getSpellAbility().addEffect(new CreateTokenEffect( this.getSpellAbility().addEffect(new CreateTokenEffect(
new SilverquillToken(), ManacostVariableValue.REGULAR, true, false new InklingToken(), ManacostVariableValue.REGULAR, true, false
)); ));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect( this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DestroyAllEffect(filter), BlotOutTheSkyCondition.instance, new DestroyAllEffect(filter), BlotOutTheSkyCondition.instance,

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.players.Player; import mage.players.Player;
import java.util.UUID; import java.util.UUID;
@ -21,7 +21,7 @@ public final class BodyOfResearch extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}{G}{G}{U}{U}{U}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{G}{G}{G}{U}{U}{U}");
// Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of cards in your library. // Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of cards in your library.
this.getSpellAbility().addEffect(QuandrixToken.getEffect( this.getSpellAbility().addEffect(FractalToken.getEffect(
BodyOfResearchValue.instance, "Put X +1/+1 counters on it, " + BodyOfResearchValue.instance, "Put X +1/+1 counters on it, " +
"where X is the number of cards in your library" "where X is the number of cards in your library"
)); ));

View file

@ -12,7 +12,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID; import java.util.UUID;
@ -32,7 +32,7 @@ public final class CallousBloodmage extends CardImpl {
// When Callous Bloodmage enters the battlefield, choose one // When Callous Bloodmage enters the battlefield, choose one
// Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." // Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life."
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WitherbloomToken())); Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new Pest11GainLifeToken()));
// You draw a card and you lose 1 life. // You draw a card and you lose 1 life.
Mode mode = new Mode(new DrawCardSourceControllerEffect(1).setText("you draw a card")); Mode mode = new Mode(new DrawCardSourceControllerEffect(1).setText("you draw a card"));

View file

@ -17,7 +17,7 @@ import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import java.util.UUID; import java.util.UUID;
@ -58,7 +58,7 @@ class CombatCalligrapherTriggeredAbility extends TriggeredAbilityImpl {
CombatCalligrapherTriggeredAbility() { CombatCalligrapherTriggeredAbility() {
super(Zone.BATTLEFIELD, new CreateTokenTargetEffect( super(Zone.BATTLEFIELD, new CreateTokenTargetEffect(
new SilverquillToken(), StaticValue.get(1), true, true new InklingToken(), StaticValue.get(1), true, true
), false); ), false);
} }

View file

@ -10,7 +10,7 @@ import mage.constants.SubType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import java.util.UUID; import java.util.UUID;
@ -65,7 +65,7 @@ class ContainmentBreachEffect extends OneShotEffect {
} }
permanent.destroy(source, game, false); permanent.destroy(source, game, false);
if (permanent.getManaValue() <= 2) { if (permanent.getManaValue() <= 2) {
new WitherbloomToken().putOntoBattlefield(1, game, source, source.getControllerId()); new Pest11GainLifeToken().putOntoBattlefield(1, game, source, source.getControllerId());
} }
return true; return true;
} }

View file

@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.game.stack.Spell; import mage.game.stack.Spell;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
@ -37,7 +37,7 @@ public final class DeekahFractalTheorist extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// Magecraft Whenever you cast or copy an instant or sorcery spell, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is that spell's mana value. // Magecraft Whenever you cast or copy an instant or sorcery spell, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is that spell's mana value.
this.addAbility(new MagecraftAbility(QuandrixToken.getEffect( this.addAbility(new MagecraftAbility(FractalToken.getEffect(
DeekahFractalTheoristValue.instance, "Put X +1/+1 counters on it, " + DeekahFractalTheoristValue.instance, "Put X +1/+1 counters on it, " +
"where X is that spell's mana value" "where X is that spell's mana value"
))); )));

View file

@ -13,7 +13,7 @@ import mage.filter.StaticFilters;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import java.util.UUID; import java.util.UUID;
@ -39,7 +39,7 @@ public final class DramaticFinale extends CardImpl {
// Whenever one or more nontoken creatures you control die, create a 2/1 white and black Inkling creature token with flying. This ability triggers only once each turn. // Whenever one or more nontoken creatures you control die, create a 2/1 white and black Inkling creature token with flying. This ability triggers only once each turn.
this.addAbility(new DiesCreatureTriggeredAbility( this.addAbility(new DiesCreatureTriggeredAbility(
new CreateTokenEffect(new SilverquillToken()), false, filter new CreateTokenEffect(new InklingToken()), false, filter
).setTriggersOnce(true)); ).setTriggersOnce(true));
} }

View file

@ -14,7 +14,7 @@ import mage.constants.*;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent; import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID; import java.util.UUID;
@ -99,7 +99,7 @@ class ElementalExpressionistReplacementEffect extends ReplacementEffectImpl {
class ElementalExpressionistTriggeredAbility extends ZoneChangeTriggeredAbility { class ElementalExpressionistTriggeredAbility extends ZoneChangeTriggeredAbility {
ElementalExpressionistTriggeredAbility() { ElementalExpressionistTriggeredAbility() {
super(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.EXILED, new CreateTokenEffect(new PrismariToken()), "", false); super(Zone.BATTLEFIELD, Zone.BATTLEFIELD, Zone.EXILED, new CreateTokenEffect(new Elemental44Token()), "", false);
} }
private ElementalExpressionistTriggeredAbility(final ElementalExpressionistTriggeredAbility ability) { private ElementalExpressionistTriggeredAbility(final ElementalExpressionistTriggeredAbility ability) {

View file

@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import mage.game.permanent.token.TreasureToken; import mage.game.permanent.token.TreasureToken;
import java.util.UUID; import java.util.UUID;
@ -23,7 +23,7 @@ public final class ElementalMasterpiece extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}{R}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}{R}");
// Create two 4/4 blue and red Elemental creature tokens. // Create two 4/4 blue and red Elemental creature tokens.
this.getSpellAbility().addEffect(new CreateTokenEffect(new PrismariToken(), 2)); this.getSpellAbility().addEffect(new CreateTokenEffect(new Elemental44Token(), 2));
// {U/R}{U/R}, Discard Elemental Masterpiece: Create a Treasure token. // {U/R}{U/R}, Discard Elemental Masterpiece: Create a Treasure token.
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import java.util.UUID; import java.util.UUID;
@ -20,7 +20,7 @@ public final class ElementalSummoning extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Create a 4/4 blue and red Elemental creature token. // Create a 4/4 blue and red Elemental creature token.
this.getSpellAbility().addEffect(new CreateTokenEffect(new PrismariToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new Elemental44Token()));
} }
private ElementalSummoning(final ElementalSummoning card) { private ElementalSummoning(final ElementalSummoning card) {

View file

@ -14,7 +14,7 @@ import mage.game.Game;
import mage.game.events.EntersTheBattlefieldEvent; import mage.game.events.EntersTheBattlefieldEvent;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInLibrary;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
@ -85,7 +85,7 @@ class EmergentSequenceEffect extends OneShotEffect {
return true; return true;
} }
game.addEffect(new BecomesCreatureTargetEffect( game.addEffect(new BecomesCreatureTargetEffect(
new QuandrixToken(), false, true, Duration.Custom new FractalToken(), false, true, Duration.Custom
).setTargetPointer(new FixedTarget(permanent, game)), source); ).setTargetPointer(new FixedTarget(permanent, game)), source);
permanent.addCounters(CounterType.P1P1.createInstance( permanent.addCounters(CounterType.P1P1.createInstance(
EmergentSequenceWatcher.getAmount(source.getControllerId(), game) EmergentSequenceWatcher.getAmount(source.getControllerId(), game)

View file

@ -17,7 +17,7 @@ import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import mage.game.permanent.token.TreasureToken; import mage.game.permanent.token.TreasureToken;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
@ -55,7 +55,7 @@ public final class FainTheBroker extends CardImpl {
this.addAbility(ability); this.addAbility(ability);
// {T}, Sacrifice an artifact: Create a 2/1 white and black Inkling creature token with flying. // {T}, Sacrifice an artifact: Create a 2/1 white and black Inkling creature token with flying.
ability = new SimpleActivatedAbility(new CreateTokenEffect(new SilverquillToken()), new TapSourceCost()); ability = new SimpleActivatedAbility(new CreateTokenEffect(new InklingToken()), new TapSourceCost());
ability.addCost(new SacrificeTargetCost( ability.addCost(new SacrificeTargetCost(
new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN) new TargetControlledPermanent(StaticFilters.FILTER_CONTROLLED_PERMANENT_ARTIFACT_AN)
)); ));

View file

@ -21,7 +21,7 @@ import mage.filter.predicate.permanent.CounterAnyPredicate;
import mage.filter.predicate.permanent.TokenPredicate; import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import java.util.Map; import java.util.Map;
import java.util.UUID; import java.util.UUID;
@ -60,7 +60,7 @@ public final class FelisaFangOfSilverquill extends CardImpl {
// Whenever a nontoken creature you control dies, if it had counters on it, create X tapped 2/1 white and black Inkling creature tokens with flying, where X is the number of counters it had on it. // Whenever a nontoken creature you control dies, if it had counters on it, create X tapped 2/1 white and black Inkling creature tokens with flying, where X is the number of counters it had on it.
this.addAbility(new DiesCreatureTriggeredAbility(new CreateTokenEffect( this.addAbility(new DiesCreatureTriggeredAbility(new CreateTokenEffect(
new SilverquillToken(), FelisaFangOfSilverquillValue.instance, true, false new InklingToken(), FelisaFangOfSilverquillValue.instance, true, false
).setText(rule), false, filter)); ).setText(rule), false, filter));
} }

View file

@ -15,7 +15,7 @@ import mage.constants.SubType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.game.permanent.token.Token; import mage.game.permanent.token.Token;
import java.util.UUID; import java.util.UUID;
@ -71,7 +71,7 @@ class FractalHarnessTokenEffect extends OneShotEffect {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Token token = new QuandrixToken(); Token token = new FractalToken();
token.putOntoBattlefield(1, game, source, source.getControllerId()); token.putOntoBattlefield(1, game, source, source.getControllerId());
int xValue = ManacostVariableValue.ETB.calculate(game, source, this); int xValue = ManacostVariableValue.ETB.calculate(game, source, this);
boolean flag = true; boolean flag = true;

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import java.util.UUID; import java.util.UUID;
@ -20,7 +20,7 @@ public final class FractalSummoning extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it. // Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it.
this.getSpellAbility().addEffect(QuandrixToken.getEffect( this.getSpellAbility().addEffect(FractalToken.getEffect(
ManacostVariableValue.REGULAR, "Put X +1/+1 counters on it" ManacostVariableValue.REGULAR, "Put X +1/+1 counters on it"
)); ));
} }

View file

@ -16,7 +16,7 @@ import mage.constants.CardType;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.game.stack.Spell; import mage.game.stack.Spell;
import java.util.UUID; import java.util.UUID;
@ -39,7 +39,7 @@ public final class GeometricNexus extends CardImpl {
)); ));
// {6}, {T}, Remove all charge counters from Geometric Nexus: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of charge counters removed this way. // {6}, {T}, Remove all charge counters from Geometric Nexus: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of charge counters removed this way.
Ability ability = new SimpleActivatedAbility(QuandrixToken.getEffect( Ability ability = new SimpleActivatedAbility(FractalToken.getEffect(
GeometricNexusRemovedCounterValue.instance, "Put X +1/+1 counters on it, " + GeometricNexusRemovedCounterValue.instance, "Put X +1/+1 counters on it, " +
"where X is the number of charge counters removed this way" "where X is the number of charge counters removed this way"
), new GenericManaCost(6)); ), new GenericManaCost(6));

View file

@ -5,7 +5,7 @@ import mage.abilities.effects.common.LearnEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID; import java.util.UUID;
@ -18,7 +18,7 @@ public final class HuntForSpecimens extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{1}{B}");
// Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." // Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life."
this.getSpellAbility().addEffect(new CreateTokenEffect(new WitherbloomToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new Pest11GainLifeToken()));
// Learn. // Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>")); this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));

View file

@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import java.util.UUID; import java.util.UUID;
@ -28,7 +28,7 @@ public final class IlluminateHistory extends CardImpl {
// Discard any number of cards, then draw that many cards. Then if there are seven or more cards in your graveyard, create a 3/2 red and white Spirit creature token. // Discard any number of cards, then draw that many cards. Then if there are seven or more cards in your graveyard, create a 3/2 red and white Spirit creature token.
this.getSpellAbility().addEffect(new DiscardAndDrawThatManyEffect(Integer.MAX_VALUE)); this.getSpellAbility().addEffect(new DiscardAndDrawThatManyEffect(Integer.MAX_VALUE));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect( this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new CreateTokenEffect(new LoreholdToken()), condition, "Then if there are seven or more " + new CreateTokenEffect(new Spirit32Token()), condition, "Then if there are seven or more " +
"cards in your graveyard, create a 3/2 red and white Spirit creature token" "cards in your graveyard, create a 3/2 red and white Spirit creature token"
)); ));
} }

View file

@ -11,7 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import java.util.UUID; import java.util.UUID;
@ -32,7 +32,7 @@ public final class IllustriousHistorian extends CardImpl {
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
Zone.GRAVEYARD, Zone.GRAVEYARD,
new CreateTokenEffect( new CreateTokenEffect(
new LoreholdToken(), 1, true, false new Spirit32Token(), 1, true, false
), new GenericManaCost(5) ), new GenericManaCost(5)
); );
ability.addCost(new ExileSourceFromGraveCost()); ability.addCost(new ExileSourceFromGraveCost());

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import java.util.UUID; import java.util.UUID;
@ -20,7 +20,7 @@ public final class InklingSummoning extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Create a 2/1 white and black Inkling creature token with flying. // Create a 2/1 white and black Inkling creature token with flying.
this.getSpellAbility().addEffect(new CreateTokenEffect(new SilverquillToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new InklingToken()));
} }
private InklingSummoning(final InklingSummoning card) { private InklingSummoning(final InklingSummoning card) {

View file

@ -10,7 +10,7 @@ import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import java.util.UUID; import java.util.UUID;
@ -67,7 +67,7 @@ class InkshieldEffect extends PreventionEffectImpl {
public boolean replaceEvent(GameEvent event, Ability source, Game game) { public boolean replaceEvent(GameEvent event, Ability source, Game game) {
PreventionEffectData preventionEffectData = preventDamageAction(event, source, game); PreventionEffectData preventionEffectData = preventDamageAction(event, source, game);
if (preventionEffectData.getPreventedDamage() > 0) { if (preventionEffectData.getPreventedDamage() > 0) {
new CreateTokenEffect(new SilverquillToken(), preventionEffectData.getPreventedDamage()).apply(game, source); new CreateTokenEffect(new InklingToken(), preventionEffectData.getPreventedDamage()).apply(game, source);
} }
return true; return true;
} }

View file

@ -19,7 +19,7 @@ import mage.filter.common.FilterInstantOrSorceryCard;
import mage.filter.predicate.mageobject.SharesColorPredicate; import mage.filter.predicate.mageobject.SharesColorPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInLibrary; import mage.target.common.TargetCardInLibrary;
@ -46,7 +46,7 @@ public final class KasminaEnigmaSage extends CardImpl {
this.addAbility(new LoyaltyAbility(new ScryEffect(1), 2)); this.addAbility(new LoyaltyAbility(new ScryEffect(1), 2));
// X: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it. // X: Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it.
this.addAbility(new LoyaltyAbility(QuandrixToken.getEffect( this.addAbility(new LoyaltyAbility(FractalToken.getEffect(
GetXLoyaltyValue.instance, "Put X +1/+1 counters on it" GetXLoyaltyValue.instance, "Put X +1/+1 counters on it"
))); )));

View file

@ -16,7 +16,7 @@ import mage.counters.CounterType;
import mage.filter.FilterCard; import mage.filter.FilterCard;
import mage.filter.common.FilterOwnedCard; import mage.filter.common.FilterOwnedCard;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetCard; import mage.target.TargetCard;
import mage.target.common.TargetCardInExile; import mage.target.common.TargetCardInExile;
@ -48,7 +48,7 @@ public final class KianneDeanOfSubstance extends ModalDoubleFacesCard {
)); ));
// {4}{G}: Create a 0/0 green and blue Fractal creature token. Put a +1/+1 counter on it for each different mana value among nonland cards you own in exile with study counters on them. // {4}{G}: Create a 0/0 green and blue Fractal creature token. Put a +1/+1 counter on it for each different mana value among nonland cards you own in exile with study counters on them.
this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(QuandrixToken.getEffect( this.getLeftHalfCard().addAbility(new SimpleActivatedAbility(FractalToken.getEffect(
KianneDeanOfSubstanceValue.instance, "Put a +1/+1 counter on it for each different mana value " + KianneDeanOfSubstanceValue.instance, "Put a +1/+1 counter on it for each different mana value " +
"among nonland cards you own in exile with study counters on them" "among nonland cards you own in exile with study counters on them"
), new ManaCostsImpl("{4}{G}")).addHint(KianneDeanOfSubstanceHint.instance)); ), new ManaCostsImpl("{4}{G}")).addHint(KianneDeanOfSubstanceHint.instance));

View file

@ -5,7 +5,7 @@ import mage.abilities.hint.common.LandsYouControlHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import java.util.UUID; import java.util.UUID;
@ -18,7 +18,7 @@ public final class LeylineInvocation extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{G}");
// Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of lands you control. // Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of lands you control.
this.getSpellAbility().addEffect(QuandrixToken.getEffect( this.getSpellAbility().addEffect(FractalToken.getEffect(
LandsYouControlCount.instance, "Put X +1/+1 counters on it, " + LandsYouControlCount.instance, "Put X +1/+1 counters on it, " +
"where X is the number of lands you control" "where X is the number of lands you control"
)); ));

View file

@ -18,7 +18,7 @@ import mage.constants.Outcome;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import mage.target.common.TargetAnyTarget; import mage.target.common.TargetAnyTarget;
@ -38,7 +38,7 @@ public final class LoreholdCommand extends CardImpl {
this.getSpellAbility().getModes().setMaxModes(2); this.getSpellAbility().getModes().setMaxModes(2);
// Create a 3/2 red and white Spirit creature token. // Create a 3/2 red and white Spirit creature token.
this.getSpellAbility().addEffect(new CreateTokenEffect(new LoreholdToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new Spirit32Token()));
// Creatures you control get +1/+0 and gain indestructible and haste until end of turn. // Creatures you control get +1/+0 and gain indestructible and haste until end of turn.
Mode mode = new Mode(new BoostControlledEffect( Mode mode = new Mode(new BoostControlledEffect(

View file

@ -16,7 +16,7 @@ import mage.constants.Outcome;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
@ -37,7 +37,7 @@ public final class LoreholdExcavation extends CardImpl {
// {5}, Exile a creature card from your graveyard: Create a tapped 3/2 red and white Spirit creature token. // {5}, Exile a creature card from your graveyard: Create a tapped 3/2 red and white Spirit creature token.
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect( Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(
new LoreholdToken(), 1, true, false new Spirit32Token(), 1, true, false
), new GenericManaCost(5)); ), new GenericManaCost(5));
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_A))); ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_A)));
this.addAbility(ability); this.addAbility(ability);

View file

@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import mage.game.permanent.token.TreasureToken; import mage.game.permanent.token.TreasureToken;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetAnyTargetAmount; import mage.target.common.TargetAnyTargetAmount;
@ -34,7 +34,7 @@ public final class MagmaOpus extends CardImpl {
this.getSpellAbility().addTarget(new TargetAnyTargetAmount(4).withChooseHint("damage")); this.getSpellAbility().addTarget(new TargetAnyTargetAmount(4).withChooseHint("damage"));
this.getSpellAbility().addEffect(new TapTargetEffect().setTargetPointer(new SecondTargetPointer()).setText("two target permanents")); this.getSpellAbility().addEffect(new TapTargetEffect().setTargetPointer(new SecondTargetPointer()).setText("two target permanents"));
this.getSpellAbility().addTarget(new TargetPermanent(2, StaticFilters.FILTER_PERMANENTS).withChooseHint("tap")); this.getSpellAbility().addTarget(new TargetPermanent(2, StaticFilters.FILTER_PERMANENTS).withChooseHint("tap"));
this.getSpellAbility().addEffect(new CreateTokenEffect(new PrismariToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new Elemental44Token()));
this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2).setText("Draw two cards")); this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(2).setText("Draw two cards"));
// {U/R}{U/R}, Discard Magma Opus: Create a Treasure token. // {U/R}{U/R}, Discard Magma Opus: Create a Treasure token.

View file

@ -15,7 +15,7 @@ import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent; import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
import java.util.UUID; import java.util.UUID;
@ -76,7 +76,7 @@ class MakeYourMarkDelayedTriggeredAbility extends DelayedTriggeredAbility {
private final MageObjectReference mor; private final MageObjectReference mor;
MakeYourMarkDelayedTriggeredAbility(Permanent permanent, Game game) { MakeYourMarkDelayedTriggeredAbility(Permanent permanent, Game game) {
super(new CreateTokenEffect(new LoreholdToken()), Duration.EndOfTurn, false, false); super(new CreateTokenEffect(new Spirit32Token()), Duration.EndOfTurn, false, false);
this.mor = new MageObjectReference(permanent, game); this.mor = new MageObjectReference(permanent, game);
} }

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import java.util.UUID; import java.util.UUID;
@ -25,7 +25,7 @@ public final class ManifestationSage extends CardImpl {
this.toughness = new MageInt(2); this.toughness = new MageInt(2);
// When Manifestation Sage enters the battlefield, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of cards in your hand. // When Manifestation Sage enters the battlefield, create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is the number of cards in your hand.
this.addAbility(new EntersBattlefieldTriggeredAbility(QuandrixToken.getEffect( this.addAbility(new EntersBattlefieldTriggeredAbility(FractalToken.getEffect(
CardsInControllerHandCount.instance, "Put X +1/+1 counters on it, " + CardsInControllerHandCount.instance, "Put X +1/+1 counters on it, " +
"where X is the number of cards in your hand" "where X is the number of cards in your hand"
))); )));

View file

@ -5,9 +5,9 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Elemental44Token;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.InklingToken;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.Spirit32Token;
import java.util.UUID; import java.util.UUID;
@ -22,10 +22,10 @@ public final class MascotExhibition extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Create a 2/1 white and black Inkling creature token with flying, a 3/2 red and white Spirit creature token, and a 4/4 blue and red Elemental creature token. // Create a 2/1 white and black Inkling creature token with flying, a 3/2 red and white Spirit creature token, and a 4/4 blue and red Elemental creature token.
this.getSpellAbility().addEffect(new CreateTokenEffect(new SilverquillToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new InklingToken()));
this.getSpellAbility().addEffect(new CreateTokenEffect(new LoreholdToken()) this.getSpellAbility().addEffect(new CreateTokenEffect(new Spirit32Token())
.setText(", a 3/2 red and white Spirit creature token")); .setText(", a 3/2 red and white Spirit creature token"));
this.getSpellAbility().addEffect(new CreateTokenEffect(new PrismariToken()) this.getSpellAbility().addEffect(new CreateTokenEffect(new Elemental44Token())
.setText(", and a 4/4 blue and red Elemental creature token")); .setText(", and a 4/4 blue and red Elemental creature token"));
} }

View file

@ -10,7 +10,7 @@ import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
@ -74,7 +74,7 @@ class MultipleChoiceEffect extends OneShotEffect {
controller.drawCards(1, source, game); controller.drawCards(1, source, game);
} }
if (xValue == 3 || xValue >= 4) { if (xValue == 3 || xValue >= 4) {
new PrismariToken().putOntoBattlefield(1, game, source, source.getControllerId()); new Elemental44Token().putOntoBattlefield(1, game, source, source.getControllerId());
} }
if (xValue != 2 && xValue < 4) { if (xValue != 2 && xValue < 4) {
return true; return true;

View file

@ -13,7 +13,7 @@ import mage.filter.StaticFilters;
import mage.game.Controllable; import mage.game.Controllable;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.game.permanent.token.Token; import mage.game.permanent.token.Token;
import mage.players.Player; import mage.players.Player;
@ -83,7 +83,7 @@ class OversimplifyEffect extends OneShotEffect {
)); ));
controller.moveCards(new CardsImpl(permanents), Zone.EXILED, source, game); controller.moveCards(new CardsImpl(permanents), Zone.EXILED, source, game);
for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) { for (UUID playerId : game.getState().getPlayersInRange(source.getControllerId(), game)) {
Token token = new QuandrixToken(); Token token = new FractalToken();
token.putOntoBattlefield(1, game, source, playerId); token.putOntoBattlefield(1, game, source, playerId);
int counter = playerMap.getOrDefault(playerId, 0); int counter = playerMap.getOrDefault(playerId, 0);
for (UUID tokenId : token.getLastAddedTokenIds()) { for (UUID tokenId : token.getLastAddedTokenIds()) {

View file

@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.counters.CounterType; import mage.counters.CounterType;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import java.util.UUID; import java.util.UUID;
@ -37,7 +37,7 @@ public final class ParadoxZone extends CardImpl {
Ability ability = new BeginningOfEndStepTriggeredAbility( Ability ability = new BeginningOfEndStepTriggeredAbility(
new DoubleCountersSourceEffect(CounterType.GROWTH), TargetController.YOU, false new DoubleCountersSourceEffect(CounterType.GROWTH), TargetController.YOU, false
); );
Effect effect = QuandrixToken.getEffect( Effect effect = FractalToken.getEffect(
xValue, "Put X +1/+1 counters on it, where X is the number of growth counters on {this}" xValue, "Put X +1/+1 counters on it, where X is the number of growth counters on {this}"
); );
ability.addEffect(effect.concatBy("Then")); ability.addEffect(effect.concatBy("Then"));

View file

@ -11,7 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.targetadjustment.TargetAdjuster; import mage.target.targetadjustment.TargetAdjuster;
@ -30,7 +30,7 @@ public final class PestInfestation extends CardImpl {
// Destroy up to X target artifacts and/or enchantments. Create twice X 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life." // Destroy up to X target artifacts and/or enchantments. Create twice X 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life."
this.getSpellAbility().addEffect(new DestroyTargetEffect() this.getSpellAbility().addEffect(new DestroyTargetEffect()
.setText("destroy up to X target artifacts and/or enchantments.")); .setText("destroy up to X target artifacts and/or enchantments."));
this.getSpellAbility().addEffect(new CreateTokenEffect(new WitherbloomToken(), xValue) this.getSpellAbility().addEffect(new CreateTokenEffect(new Pest11GainLifeToken(), xValue)
.setText("Create twice X 1/1 black and green Pest creature tokens with \"When this creature dies, you gain 1 life.\"")); .setText("Create twice X 1/1 black and green Pest creature tokens with \"When this creature dies, you gain 1 life.\""));
this.getSpellAbility().setTargetAdjuster(PestInfestationAdjuster.instance); this.getSpellAbility().setTargetAdjuster(PestInfestationAdjuster.instance);
} }

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID; import java.util.UUID;
@ -20,7 +20,7 @@ public final class PestSummoning extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Create two 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life." // Create two 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life."
this.getSpellAbility().addEffect(new CreateTokenEffect(new WitherbloomToken(), 2)); this.getSpellAbility().addEffect(new CreateTokenEffect(new Pest11GainLifeToken(), 2));
} }
private PestSummoning(final PestSummoning card) { private PestSummoning(final PestSummoning card) {

View file

@ -18,7 +18,7 @@ import mage.filter.FilterCard;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetCardInASingleGraveyard; import mage.target.common.TargetCardInASingleGraveyard;
import mage.target.common.TargetCardInYourGraveyard; import mage.target.common.TargetCardInYourGraveyard;
@ -55,7 +55,7 @@ public final class PestilentCauldron extends ModalDoubleFacesCard {
// Artifact // Artifact
// {T}, Discard a card: Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." // {T}, Discard a card: Create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life."
Ability ability = new SimpleActivatedAbility( Ability ability = new SimpleActivatedAbility(
new CreateTokenEffect(new WitherbloomToken()), new TapSourceCost() new CreateTokenEffect(new Pest11GainLifeToken()), new TapSourceCost()
); );
ability.addCost(new DiscardCardCost()); ability.addCost(new DiscardCardCost());
this.getLeftHalfCard().addAbility(ability); this.getLeftHalfCard().addAbility(ability);

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID; import java.util.UUID;
@ -25,7 +25,7 @@ public final class ProfessorOfZoomancy extends CardImpl {
this.toughness = new MageInt(3); this.toughness = new MageInt(3);
// When Professor of Zoomancy enters the battlefield, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life." // When Professor of Zoomancy enters the battlefield, create a 1/1 black and green Pest creature token with "When this creature dies, you gain 1 life."
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WitherbloomToken()))); this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new Pest11GainLifeToken())));
} }
private ProfessorOfZoomancy(final ProfessorOfZoomancy card) { private ProfessorOfZoomancy(final ProfessorOfZoomancy card) {

View file

@ -12,7 +12,7 @@ import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.filter.common.FilterCreaturePermanent; import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import java.util.UUID; import java.util.UUID;
@ -38,7 +38,7 @@ public final class QuintoriusFieldHistorian extends CardImpl {
))); )));
// Whenever one or more cards leave your graveyard, create a 3/2 red and white Spirit creature token. // Whenever one or more cards leave your graveyard, create a 3/2 red and white Spirit creature token.
this.addAbility(new CardsLeaveGraveyardTriggeredAbility(new CreateTokenEffect(new LoreholdToken()))); this.addAbility(new CardsLeaveGraveyardTriggeredAbility(new CreateTokenEffect(new Spirit32Token())));
} }
private QuintoriusFieldHistorian(final QuintoriusFieldHistorian card) { private QuintoriusFieldHistorian(final QuintoriusFieldHistorian card) {

View file

@ -10,7 +10,7 @@ import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetNonlandPermanent; import mage.target.common.TargetNonlandPermanent;
@ -65,7 +65,7 @@ class ReduceToMemoryEffect extends OneShotEffect {
} }
Player player = game.getPlayer(permanent.getControllerId()); Player player = game.getPlayer(permanent.getControllerId());
player.moveCards(permanent, Zone.EXILED, source, game); player.moveCards(permanent, Zone.EXILED, source, game);
new LoreholdToken().putOntoBattlefield(1, game, source, player.getId()); new Spirit32Token().putOntoBattlefield(1, game, source, player.getId());
return true; return true;
} }
} }

View file

@ -10,7 +10,7 @@ import mage.constants.Zone;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
@ -64,7 +64,7 @@ class ResculptEffect extends OneShotEffect {
} }
Player player = game.getPlayer(permanent.getControllerId()); Player player = game.getPlayer(permanent.getControllerId());
player.moveCards(permanent, Zone.EXILED, source, game); player.moveCards(permanent, Zone.EXILED, source, game);
new PrismariToken().putOntoBattlefield(1, game, source, player.getId()); new Elemental44Token().putOntoBattlefield(1, game, source, player.getId());
return true; return true;
} }
} }

View file

@ -24,7 +24,7 @@ import mage.filter.StaticFilters;
import mage.filter.common.FilterInstantOrSorceryCard; import mage.filter.common.FilterInstantOrSorceryCard;
import mage.game.Game; import mage.game.Game;
import mage.game.command.emblems.RowanScholarOfSparksEmblem; import mage.game.command.emblems.RowanScholarOfSparksEmblem;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import mage.players.Player; import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent; import mage.target.common.TargetCreaturePermanent;
@ -175,7 +175,7 @@ class WillScholarOfFrostEffect extends OneShotEffect {
)); ));
player.moveCards(cards, Zone.EXILED, source, game); player.moveCards(cards, Zone.EXILED, source, game);
for (Map.Entry<UUID, Integer> entry : playerMap.entrySet()) { for (Map.Entry<UUID, Integer> entry : playerMap.entrySet()) {
new PrismariToken().putOntoBattlefield(entry.getValue(), game, source, entry.getKey()); new Elemental44Token().putOntoBattlefield(entry.getValue(), game, source, entry.getKey());
} }
return true; return true;
} }

View file

@ -10,7 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID; import java.util.UUID;
@ -34,7 +34,7 @@ public final class SedgemoorWitch extends CardImpl {
this.addAbility(new WardAbility(new PayLifeCost(3))); this.addAbility(new WardAbility(new PayLifeCost(3)));
// Magecraft Whenever you cast or copy an instant or sorcery spell, create a 1/1 black and green Pest creature token with "Whenever this creature dies, you gain 1 life." // Magecraft Whenever you cast or copy an instant or sorcery spell, create a 1/1 black and green Pest creature token with "Whenever this creature dies, you gain 1 life."
this.addAbility(new MagecraftAbility(new CreateTokenEffect(new WitherbloomToken()))); this.addAbility(new MagecraftAbility(new CreateTokenEffect(new Pest11GainLifeToken())));
} }
private SedgemoorWitch(final SedgemoorWitch card) { private SedgemoorWitch(final SedgemoorWitch card) {

View file

@ -14,7 +14,7 @@ import mage.filter.FilterCard;
import mage.filter.common.FilterCreatureCard; import mage.filter.common.FilterCreatureCard;
import mage.filter.predicate.mageobject.ManaValuePredicate; import mage.filter.predicate.mageobject.ManaValuePredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import mage.target.common.TargetCardInGraveyard; import mage.target.common.TargetCardInGraveyard;
import mage.target.targetadjustment.TargetAdjuster; import mage.target.targetadjustment.TargetAdjuster;
@ -35,7 +35,7 @@ public final class SequenceEngine extends CardImpl {
new ManaCostsImpl<>("{X}") new ManaCostsImpl<>("{X}")
); );
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
ability.addEffect(QuandrixToken.getEffect( ability.addEffect(FractalToken.getEffect(
ManacostVariableValue.REGULAR, "Put X +1/+1 counters on it" ManacostVariableValue.REGULAR, "Put X +1/+1 counters on it"
)); ));
ability.setTargetAdjuster(SequenceEngineAdjuster.instance); ability.setTargetAdjuster(SequenceEngineAdjuster.instance);

View file

@ -9,7 +9,7 @@ import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.game.permanent.token.QuandrixToken; import mage.game.permanent.token.FractalToken;
import java.util.UUID; import java.util.UUID;
@ -29,7 +29,7 @@ public final class SerpentineCurve extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}"); super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{U}");
// Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is one plus the total number of instant and sorcery cards you own in exile and in your graveyard. // Create a 0/0 green and blue Fractal creature token. Put X +1/+1 counters on it, where X is one plus the total number of instant and sorcery cards you own in exile and in your graveyard.
this.getSpellAbility().addEffect(QuandrixToken.getEffect( this.getSpellAbility().addEffect(FractalToken.getEffect(
xValue, "Put X +1/+1 counters on it, where X is one plus the total number " + xValue, "Put X +1/+1 counters on it, where X is one plus the total number " +
"of instant and sorcery cards you own in exile and in your graveyard" "of instant and sorcery cards you own in exile and in your graveyard"
)); ));

View file

@ -19,7 +19,7 @@ import mage.filter.StaticFilters;
import mage.filter.predicate.other.AnotherTargetPredicate; import mage.filter.predicate.other.AnotherTargetPredicate;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID; import java.util.UUID;
@ -63,7 +63,7 @@ public final class ShadrixSilverquill extends CardImpl {
ability.getModes().setMayChooseNone(true); ability.getModes().setMayChooseNone(true);
// Target player creates a 2/1 white and black Inkling creature token with flying. // Target player creates a 2/1 white and black Inkling creature token with flying.
ability.addEffect(new CreateTokenTargetEffect(new SilverquillToken())); ability.addEffect(new CreateTokenTargetEffect(new InklingToken()));
TargetPlayer target = new TargetPlayer(filter1); TargetPlayer target = new TargetPlayer(filter1);
target.setTargetTag(1); target.setTargetTag(1);
ability.addTarget(target.withChooseHint("to create a token")); ability.addTarget(target.withChooseHint("to create a token"));

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.game.permanent.token.LoreholdToken; import mage.game.permanent.token.Spirit32Token;
import java.util.UUID; import java.util.UUID;
@ -20,7 +20,7 @@ public final class SpiritSummoning extends CardImpl {
this.subtype.add(SubType.LESSON); this.subtype.add(SubType.LESSON);
// Create a 3/2 red and white Spirit creature token. // Create a 3/2 red and white Spirit creature token.
this.getSpellAbility().addEffect(new CreateTokenEffect(new LoreholdToken())); this.getSpellAbility().addEffect(new CreateTokenEffect(new Spirit32Token()));
} }
private SpiritSummoning(final SpiritSummoning card) { private SpiritSummoning(final SpiritSummoning card) {

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import mage.target.common.TargetControlledPermanent; import mage.target.common.TargetControlledPermanent;
import java.util.UUID; import java.util.UUID;
@ -27,7 +27,7 @@ public final class TendThePests extends CardImpl {
// Create X 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life," where X is the sacrificed creature's power. // Create X 1/1 black and green Pest creature tokens with "When this creature dies, you gain 1 life," where X is the sacrificed creature's power.
this.getSpellAbility().addEffect(new CreateTokenEffect( this.getSpellAbility().addEffect(new CreateTokenEffect(
new WitherbloomToken(), SacrificeCostCreaturesPower.instance new Pest11GainLifeToken(), SacrificeCostCreaturesPower.instance
).setText("create X 1/1 black and green Pest creature tokens with " + ).setText("create X 1/1 black and green Pest creature tokens with " +
"\"When this creature dies, you gain 1 life,\" where X is the sacrificed creature's power")); "\"When this creature dies, you gain 1 life,\" where X is the sacrificed creature's power"));
} }

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.filter.StaticFilters; import mage.filter.StaticFilters;
import mage.game.permanent.token.SilverquillToken; import mage.game.permanent.token.InklingToken;
import mage.target.TargetPlayer; import mage.target.TargetPlayer;
import java.util.UUID; import java.util.UUID;
@ -28,7 +28,7 @@ public final class UmbralJuke extends CardImpl {
this.getSpellAbility().addTarget(new TargetPlayer()); this.getSpellAbility().addTarget(new TargetPlayer());
// Create a 2/1 white and black Inkling creature token with flying. // Create a 2/1 white and black Inkling creature token with flying.
this.getSpellAbility().addMode(new Mode(new CreateTokenEffect(new SilverquillToken()))); this.getSpellAbility().addMode(new Mode(new CreateTokenEffect(new InklingToken())));
} }
private UmbralJuke(final UmbralJuke card) { private UmbralJuke(final UmbralJuke card) {

View file

@ -22,7 +22,7 @@ import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent; import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.PermanentToken; import mage.game.permanent.PermanentToken;
import mage.game.permanent.token.WitherbloomToken; import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID; import java.util.UUID;
@ -102,7 +102,7 @@ class ValentinDeanOfTheVeinEffect extends ReplacementEffectImpl {
((ZoneChangeEvent) event).setToZone(Zone.EXILED); ((ZoneChangeEvent) event).setToZone(Zone.EXILED);
game.fireReflexiveTriggeredAbility(new ReflexiveTriggeredAbility( game.fireReflexiveTriggeredAbility(new ReflexiveTriggeredAbility(
new DoIfCostPaid( new DoIfCostPaid(
new CreateTokenEffect(new WitherbloomToken()), new GenericManaCost(2) new CreateTokenEffect(new Pest11GainLifeToken()), new GenericManaCost(2)
), false, "you may pay {2}. If you do, create a 1/1 black and green " + ), false, "you may pay {2}. If you do, create a 1/1 black and green " +
"Pest creature token with \"When this creature dies, you gain 1 life.\"" "Pest creature token with \"When this creature dies, you gain 1 life.\""
), source); ), source);

View file

@ -11,7 +11,7 @@ import mage.constants.Outcome;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.SuperType; import mage.constants.SuperType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.PrismariToken; import mage.game.permanent.token.Elemental44Token;
import mage.game.stack.Spell; import mage.game.stack.Spell;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
@ -75,7 +75,7 @@ class ZaffaiThunderConductorEffect extends OneShotEffect {
if (spell == null || spell.getManaValue() < 5) { if (spell == null || spell.getManaValue() < 5) {
return false; return false;
} }
new PrismariToken().putOntoBattlefield(1, game, source, source.getControllerId()); new Elemental44Token().putOntoBattlefield(1, game, source, source.getControllerId());
if (spell.getManaValue() < 10) { if (spell.getManaValue() < 10) {
return true; return true;
} }

View file

@ -8,6 +8,8 @@ import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -21,11 +23,14 @@ public final class BloodAvatarToken extends TokenImpl {
subtype.add(SubType.AVATAR); subtype.add(SubType.AVATAR);
power = new MageInt(3); power = new MageInt(3);
toughness = new MageInt(6); toughness = new MageInt(6);
addAbility(HasteAbility.getInstance()); addAbility(HasteAbility.getInstance());
addAbility(new AttacksTriggeredAbility( addAbility(new AttacksTriggeredAbility(
new DamagePlayersEffect(3, TargetController.OPPONENT), false, new DamagePlayersEffect(3, TargetController.OPPONENT), false,
"Whenever this creature attacks, it deals 3 damage to each opponent." "Whenever this creature attacks, it deals 3 damage to each opponent."
)); ));
availableImageSetCodes = Arrays.asList("STX");
} }
private BloodAvatarToken(final BloodAvatarToken token) { private BloodAvatarToken(final BloodAvatarToken token) {

View file

@ -4,12 +4,14 @@ import mage.MageInt;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class PrismariToken extends TokenImpl { public final class Elemental44Token extends TokenImpl {
public PrismariToken() { public Elemental44Token() {
super("Elemental", "4/4 blue and red Elemental creature token"); super("Elemental", "4/4 blue and red Elemental creature token");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setBlue(true); color.setBlue(true);
@ -17,14 +19,16 @@ public final class PrismariToken extends TokenImpl {
subtype.add(SubType.ELEMENTAL); subtype.add(SubType.ELEMENTAL);
power = new MageInt(4); power = new MageInt(4);
toughness = new MageInt(4); toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("STX");
} }
private PrismariToken(final PrismariToken token) { private Elemental44Token(final Elemental44Token token) {
super(token); super(token);
} }
@Override @Override
public PrismariToken copy() { public Elemental44Token copy() {
return new PrismariToken(this); return new Elemental44Token(this);
} }
} }

View file

@ -17,9 +17,9 @@ import java.util.UUID;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class QuandrixToken extends TokenImpl { public final class FractalToken extends TokenImpl {
public QuandrixToken() { public FractalToken() {
super("Fractal", "0/0 green and blue Fractal creature token"); super("Fractal", "0/0 green and blue Fractal creature token");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.FRACTAL); subtype.add(SubType.FRACTAL);
@ -31,12 +31,12 @@ public final class QuandrixToken extends TokenImpl {
availableImageSetCodes = Arrays.asList("STX"); availableImageSetCodes = Arrays.asList("STX");
} }
private QuandrixToken(final QuandrixToken token) { private FractalToken(final FractalToken token) {
super(token); super(token);
} }
public QuandrixToken copy() { public FractalToken copy() {
return new QuandrixToken(this); return new FractalToken(this);
} }
public static QuandrixTokenEffect getEffect(DynamicValue xValue, String text) { public static QuandrixTokenEffect getEffect(DynamicValue xValue, String text) {
@ -65,7 +65,7 @@ public final class QuandrixToken extends TokenImpl {
@Override @Override
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Token token = new QuandrixToken(); Token token = new FractalToken();
token.putOntoBattlefield(1, game, source, source.getControllerId()); token.putOntoBattlefield(1, game, source, source.getControllerId());
int value = xValue.calculate(game, source, this); int value = xValue.calculate(game, source, this);
if (value < 1) { if (value < 1) {

View file

@ -5,12 +5,14 @@ import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class SilverquillToken extends TokenImpl { public final class InklingToken extends TokenImpl {
public SilverquillToken() { public InklingToken() {
super("Inkling", "2/1 white and black Inkling creature token with flying"); super("Inkling", "2/1 white and black Inkling creature token with flying");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setWhite(true); color.setWhite(true);
@ -18,15 +20,18 @@ public final class SilverquillToken extends TokenImpl {
subtype.add(SubType.INKLING); subtype.add(SubType.INKLING);
power = new MageInt(2); power = new MageInt(2);
toughness = new MageInt(1); toughness = new MageInt(1);
addAbility(FlyingAbility.getInstance()); addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("STX");
} }
private SilverquillToken(final SilverquillToken token) { private InklingToken(final InklingToken token) {
super(token); super(token);
} }
@Override @Override
public SilverquillToken copy() { public InklingToken copy() {
return new SilverquillToken(this); return new InklingToken(this);
} }
} }

View file

@ -6,12 +6,14 @@ import mage.abilities.effects.common.GainLifeEffect;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class WitherbloomToken extends TokenImpl { public final class Pest11GainLifeToken extends TokenImpl {
public WitherbloomToken() { public Pest11GainLifeToken() {
super("Pest", "1/1 black and green Pest creature token with \"When this creature dies, you gain 1 life.\""); super("Pest", "1/1 black and green Pest creature token with \"When this creature dies, you gain 1 life.\"");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setBlack(true); color.setBlack(true);
@ -21,13 +23,15 @@ public final class WitherbloomToken extends TokenImpl {
toughness = new MageInt(1); toughness = new MageInt(1);
this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(1))); this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(1)));
availableImageSetCodes = Arrays.asList("STX");
} }
private WitherbloomToken(final WitherbloomToken token) { private Pest11GainLifeToken(final Pest11GainLifeToken token) {
super(token); super(token);
} }
public WitherbloomToken copy() { public Pest11GainLifeToken copy() {
return new WitherbloomToken(this); return new Pest11GainLifeToken(this);
} }
} }

View file

@ -1,12 +1,12 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class PestToken extends TokenImpl { public final class PestToken extends TokenImpl {
@ -18,6 +18,8 @@ public final class PestToken extends TokenImpl {
subtype.add(SubType.PEST); subtype.add(SubType.PEST);
power = new MageInt(0); power = new MageInt(0);
toughness = new MageInt(1); toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("HOP", "MRD");
} }
public PestToken(final PestToken token) { public PestToken(final PestToken token) {

View file

@ -4,12 +4,14 @@ import mage.MageInt;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
public final class LoreholdToken extends TokenImpl { public final class Spirit32Token extends TokenImpl {
public LoreholdToken() { public Spirit32Token() {
super("Spirit", "3/2 red and white Spirit creature token"); super("Spirit", "3/2 red and white Spirit creature token");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setRed(true); color.setRed(true);
@ -17,14 +19,16 @@ public final class LoreholdToken extends TokenImpl {
subtype.add(SubType.SPIRIT); subtype.add(SubType.SPIRIT);
power = new MageInt(3); power = new MageInt(3);
toughness = new MageInt(2); toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("STX");
} }
private LoreholdToken(final LoreholdToken token) { private Spirit32Token(final Spirit32Token token) {
super(token); super(token);
} }
@Override @Override
public LoreholdToken copy() { public Spirit32Token copy() {
return new LoreholdToken(this); return new Spirit32Token(this);
} }
} }

View file

@ -29,7 +29,7 @@ public final class TreasureToken extends TokenImpl {
ability.addCost(new SacrificeSourceCost()); ability.addCost(new SacrificeSourceCost());
this.addAbility(ability); this.addAbility(ability);
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR", "KHM"); availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR", "KHM", "STX");
} }
public TreasureToken(final TreasureToken token) { public TreasureToken(final TreasureToken token) {