[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/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
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

View file

@ -106,6 +106,8 @@
|Generate|EMBLEM:KHM|Kaya the Inexorable||Emblem Kaya|KayaTheInexorableEmblem|
|Generate|EMBLEM:KHM|Tibalt Cosmic Imposter||Emblem Tibalt|TibaltCosmicImposterEmblem|
|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
|Generate|PLANE:PCA|Plane - Academy at Tolaria West|||AcademyAtTolariaWestPlane|
@ -1499,6 +1501,15 @@
|Generate|TOK:TSR|Soldier|||SoldierToken|
|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
|Generate|TOK:C21|Beast|1||BeastToken|
|Generate|TOK:C21|Beast|2||BeastToken2|
@ -1530,6 +1541,3 @@
|Generate|TOK:C21|Whale|||ReefWormWhaleToken|
|Generate|TOK:C21|Wurm|||WurmToken|
|Generate|TOK:C21|Zombie|||ZombieToken|
#|Generate|TOK:C21|xxx|||xxxToken|

View file

@ -1,23 +1,23 @@
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.BeginningOfUpkeepTriggeredAbility;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.PayLifeCost;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.UntapAllLandsControllerEffect;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.abilities.keyword.FlyingAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.constants.TargetController;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID;
/**
*
* @author weirddan455
*/
public final class BeledrosWitherbloom extends CardImpl {
@ -35,7 +35,7 @@ public final class BeledrosWitherbloom extends CardImpl {
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."
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.
SimpleActivatedAbility ability = new SimpleActivatedAbility(new UntapAllLandsControllerEffect()

View file

@ -12,7 +12,7 @@ import mage.constants.SubType;
import mage.counters.CounterType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import java.util.UUID;
@ -32,7 +32,7 @@ public final class Biomathematician extends CardImpl {
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.
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new QuandrixToken()));
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new FractalToken()));
ability.addEffect(new AddCountersAllEffect(CounterType.P1P1.createInstance(), filter));
this.addAbility(ability);
}

View file

@ -18,7 +18,7 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.AttackingPredicate;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
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."
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.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
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.
this.getSpellAbility().addEffect(new CreateTokenEffect(
new SilverquillToken(), ManacostVariableValue.REGULAR, true, false
new InklingToken(), ManacostVariableValue.REGULAR, true, false
));
this.getSpellAbility().addEffect(new ConditionalOneShotEffect(
new DestroyAllEffect(filter), BlotOutTheSkyCondition.instance,

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.game.Game;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import mage.players.Player;
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}");
// 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, " +
"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.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import mage.target.TargetPlayer;
import java.util.UUID;
@ -32,7 +32,7 @@ public final class CallousBloodmage extends CardImpl {
// 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."
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.
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.events.GameEvent;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
import java.util.UUID;
@ -58,7 +58,7 @@ class CombatCalligrapherTriggeredAbility extends TriggeredAbilityImpl {
CombatCalligrapherTriggeredAbility() {
super(Zone.BATTLEFIELD, new CreateTokenTargetEffect(
new SilverquillToken(), StaticValue.get(1), true, true
new InklingToken(), StaticValue.get(1), true, true
), false);
}

View file

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

View file

@ -16,7 +16,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import mage.game.stack.Spell;
import mage.target.TargetPermanent;
@ -37,7 +37,7 @@ public final class DeekahFractalTheorist extends CardImpl {
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.
this.addAbility(new MagecraftAbility(QuandrixToken.getEffect(
this.addAbility(new MagecraftAbility(FractalToken.getEffect(
DeekahFractalTheoristValue.instance, "Put X +1/+1 counters on it, " +
"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.predicate.Predicates;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
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.
this.addAbility(new DiesCreatureTriggeredAbility(
new CreateTokenEffect(new SilverquillToken()), false, filter
new CreateTokenEffect(new InklingToken()), false, filter
).setTriggersOnce(true));
}

View file

@ -14,7 +14,7 @@ import mage.constants.*;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.Elemental44Token;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.UUID;
@ -99,7 +99,7 @@ class ElementalExpressionistReplacementEffect extends ReplacementEffectImpl {
class ElementalExpressionistTriggeredAbility extends ZoneChangeTriggeredAbility {
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) {

View file

@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.Elemental44Token;
import mage.game.permanent.token.TreasureToken;
import java.util.UUID;
@ -23,7 +23,7 @@ public final class ElementalMasterpiece extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{5}{U}{R}");
// 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.
Ability ability = new SimpleActivatedAbility(

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.Elemental44Token;
import java.util.UUID;
@ -20,7 +20,7 @@ public final class ElementalSummoning extends CardImpl {
this.subtype.add(SubType.LESSON);
// 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) {

View file

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

View file

@ -17,7 +17,7 @@ import mage.constants.SubType;
import mage.constants.SuperType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
import mage.game.permanent.token.TreasureToken;
import mage.target.common.TargetControlledCreaturePermanent;
import mage.target.common.TargetControlledPermanent;
@ -55,7 +55,7 @@ public final class FainTheBroker extends CardImpl {
this.addAbility(ability);
// {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(
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.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
import java.util.Map;
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.
this.addAbility(new DiesCreatureTriggeredAbility(new CreateTokenEffect(
new SilverquillToken(), FelisaFangOfSilverquillValue.instance, true, false
new InklingToken(), FelisaFangOfSilverquillValue.instance, true, false
).setText(rule), false, filter));
}

View file

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

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import java.util.UUID;
@ -20,7 +20,7 @@ public final class FractalSummoning extends CardImpl {
this.subtype.add(SubType.LESSON);
// 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"
));
}

View file

@ -16,7 +16,7 @@ import mage.constants.CardType;
import mage.counters.CounterType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import mage.game.stack.Spell;
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.
Ability ability = new SimpleActivatedAbility(QuandrixToken.getEffect(
Ability ability = new SimpleActivatedAbility(FractalToken.getEffect(
GeometricNexusRemovedCounterValue.instance, "Put X +1/+1 counters on it, " +
"where X is the number of charge counters removed this way"
), new GenericManaCost(6));

View file

@ -5,7 +5,7 @@ import mage.abilities.effects.common.LearnEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID;
@ -18,7 +18,7 @@ public final class HuntForSpecimens extends CardImpl {
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."
this.getSpellAbility().addEffect(new CreateTokenEffect(new WitherbloomToken()));
this.getSpellAbility().addEffect(new CreateTokenEffect(new Pest11GainLifeToken()));
// Learn.
this.getSpellAbility().addEffect(new LearnEffect().concatBy("<br>"));

View file

@ -9,7 +9,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.Spirit32Token;
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.
this.getSpellAbility().addEffect(new DiscardAndDrawThatManyEffect(Integer.MAX_VALUE));
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"
));
}

View file

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

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
import java.util.UUID;
@ -20,7 +20,7 @@ public final class InklingSummoning extends CardImpl {
this.subtype.add(SubType.LESSON);
// 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) {

View file

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

View file

@ -19,7 +19,7 @@ import mage.filter.common.FilterInstantOrSorceryCard;
import mage.filter.predicate.mageobject.SharesColorPredicate;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import mage.players.Player;
import mage.target.common.TargetCardInLibrary;
@ -46,7 +46,7 @@ public final class KasminaEnigmaSage extends CardImpl {
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.
this.addAbility(new LoyaltyAbility(QuandrixToken.getEffect(
this.addAbility(new LoyaltyAbility(FractalToken.getEffect(
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.common.FilterOwnedCard;
import mage.game.Game;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import mage.players.Player;
import mage.target.TargetCard;
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.
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 " +
"among nonland cards you own in exile with study counters on them"
), 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.CardSetInfo;
import mage.constants.CardType;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import java.util.UUID;
@ -18,7 +18,7 @@ public final class LeylineInvocation extends CardImpl {
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.
this.getSpellAbility().addEffect(QuandrixToken.getEffect(
this.getSpellAbility().addEffect(FractalToken.getEffect(
LandsYouControlCount.instance, "Put X +1/+1 counters on it, " +
"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.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.Spirit32Token;
import mage.players.Player;
import mage.target.TargetPlayer;
import mage.target.common.TargetAnyTarget;
@ -38,7 +38,7 @@ public final class LoreholdCommand extends CardImpl {
this.getSpellAbility().getModes().setMaxModes(2);
// 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.
Mode mode = new Mode(new BoostControlledEffect(

View file

@ -16,7 +16,7 @@ import mage.constants.Outcome;
import mage.constants.TargetController;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.Spirit32Token;
import mage.players.Player;
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.
Ability ability = new SimpleActivatedAbility(new CreateTokenEffect(
new LoreholdToken(), 1, true, false
new Spirit32Token(), 1, true, false
), new GenericManaCost(5));
ability.addCost(new ExileFromGraveCost(new TargetCardInYourGraveyard(StaticFilters.FILTER_CARD_CREATURE_A)));
this.addAbility(ability);

View file

@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.Elemental44Token;
import mage.game.permanent.token.TreasureToken;
import mage.target.TargetPermanent;
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().addEffect(new TapTargetEffect().setTargetPointer(new SecondTargetPointer()).setText("two target permanents"));
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"));
// {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.ZoneChangeEvent;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.Spirit32Token;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
@ -76,7 +76,7 @@ class MakeYourMarkDelayedTriggeredAbility extends DelayedTriggeredAbility {
private final MageObjectReference mor;
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);
}

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import java.util.UUID;
@ -25,7 +25,7 @@ public final class ManifestationSage extends CardImpl {
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.
this.addAbility(new EntersBattlefieldTriggeredAbility(QuandrixToken.getEffect(
this.addAbility(new EntersBattlefieldTriggeredAbility(FractalToken.getEffect(
CardsInControllerHandCount.instance, "Put X +1/+1 counters on it, " +
"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.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.Elemental44Token;
import mage.game.permanent.token.InklingToken;
import mage.game.permanent.token.Spirit32Token;
import java.util.UUID;
@ -22,10 +22,10 @@ public final class MascotExhibition extends CardImpl {
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.
this.getSpellAbility().addEffect(new CreateTokenEffect(new SilverquillToken()));
this.getSpellAbility().addEffect(new CreateTokenEffect(new LoreholdToken())
this.getSpellAbility().addEffect(new CreateTokenEffect(new InklingToken()));
this.getSpellAbility().addEffect(new CreateTokenEffect(new Spirit32Token())
.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"));
}

View file

@ -10,7 +10,7 @@ import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.Elemental44Token;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.TargetPlayer;
@ -74,7 +74,7 @@ class MultipleChoiceEffect extends OneShotEffect {
controller.drawCards(1, source, game);
}
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) {
return true;

View file

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

View file

@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.TargetController;
import mage.counters.CounterType;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import java.util.UUID;
@ -37,7 +37,7 @@ public final class ParadoxZone extends CardImpl {
Ability ability = new BeginningOfEndStepTriggeredAbility(
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}"
);
ability.addEffect(effect.concatBy("Then"));

View file

@ -11,7 +11,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import mage.target.TargetPermanent;
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."
this.getSpellAbility().addEffect(new DestroyTargetEffect()
.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.\""));
this.getSpellAbility().setTargetAdjuster(PestInfestationAdjuster.instance);
}

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID;
@ -20,7 +20,7 @@ public final class PestSummoning extends CardImpl {
this.subtype.add(SubType.LESSON);
// 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) {

View file

@ -18,7 +18,7 @@ import mage.filter.FilterCard;
import mage.filter.StaticFilters;
import mage.filter.predicate.Predicates;
import mage.game.Game;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import mage.players.Player;
import mage.target.common.TargetCardInASingleGraveyard;
import mage.target.common.TargetCardInYourGraveyard;
@ -55,7 +55,7 @@ public final class PestilentCauldron extends ModalDoubleFacesCard {
// Artifact
// {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(
new CreateTokenEffect(new WitherbloomToken()), new TapSourceCost()
new CreateTokenEffect(new Pest11GainLifeToken()), new TapSourceCost()
);
ability.addCost(new DiscardCardCost());
this.getLeftHalfCard().addAbility(ability);

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID;
@ -25,7 +25,7 @@ public final class ProfessorOfZoomancy extends CardImpl {
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."
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new WitherbloomToken())));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new Pest11GainLifeToken())));
}
private ProfessorOfZoomancy(final ProfessorOfZoomancy card) {

View file

@ -12,7 +12,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.Spirit32Token;
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.
this.addAbility(new CardsLeaveGraveyardTriggeredAbility(new CreateTokenEffect(new LoreholdToken())));
this.addAbility(new CardsLeaveGraveyardTriggeredAbility(new CreateTokenEffect(new Spirit32Token())));
}
private QuintoriusFieldHistorian(final QuintoriusFieldHistorian card) {

View file

@ -10,7 +10,7 @@ import mage.constants.SubType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.Spirit32Token;
import mage.players.Player;
import mage.target.common.TargetNonlandPermanent;
@ -65,7 +65,7 @@ class ReduceToMemoryEffect extends OneShotEffect {
}
Player player = game.getPlayer(permanent.getControllerId());
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;
}
}

View file

@ -10,7 +10,7 @@ import mage.constants.Zone;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.Elemental44Token;
import mage.players.Player;
import mage.target.TargetPermanent;
@ -64,7 +64,7 @@ class ResculptEffect extends OneShotEffect {
}
Player player = game.getPlayer(permanent.getControllerId());
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;
}
}

View file

@ -24,7 +24,7 @@ import mage.filter.StaticFilters;
import mage.filter.common.FilterInstantOrSorceryCard;
import mage.game.Game;
import mage.game.command.emblems.RowanScholarOfSparksEmblem;
import mage.game.permanent.token.PrismariToken;
import mage.game.permanent.token.Elemental44Token;
import mage.players.Player;
import mage.target.TargetPermanent;
import mage.target.common.TargetCreaturePermanent;
@ -175,7 +175,7 @@ class WillScholarOfFrostEffect extends OneShotEffect {
));
player.moveCards(cards, Zone.EXILED, source, game);
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;
}

View file

@ -10,7 +10,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID;
@ -34,7 +34,7 @@ public final class SedgemoorWitch extends CardImpl {
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."
this.addAbility(new MagecraftAbility(new CreateTokenEffect(new WitherbloomToken())));
this.addAbility(new MagecraftAbility(new CreateTokenEffect(new Pest11GainLifeToken())));
}
private SedgemoorWitch(final SedgemoorWitch card) {

View file

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

View file

@ -9,7 +9,7 @@ import mage.abilities.hint.ValueHint;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.game.permanent.token.QuandrixToken;
import mage.game.permanent.token.FractalToken;
import java.util.UUID;
@ -29,7 +29,7 @@ public final class SerpentineCurve extends CardImpl {
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.
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 " +
"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.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
import mage.target.TargetPlayer;
import java.util.UUID;
@ -63,7 +63,7 @@ public final class ShadrixSilverquill extends CardImpl {
ability.getModes().setMayChooseNone(true);
// 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);
target.setTargetTag(1);
ability.addTarget(target.withChooseHint("to create a token"));

View file

@ -5,7 +5,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.LoreholdToken;
import mage.game.permanent.token.Spirit32Token;
import java.util.UUID;
@ -20,7 +20,7 @@ public final class SpiritSummoning extends CardImpl {
this.subtype.add(SubType.LESSON);
// 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) {

View file

@ -7,7 +7,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import mage.target.common.TargetControlledPermanent;
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.
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 " +
"\"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.constants.CardType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.SilverquillToken;
import mage.game.permanent.token.InklingToken;
import mage.target.TargetPlayer;
import java.util.UUID;
@ -28,7 +28,7 @@ public final class UmbralJuke extends CardImpl {
this.getSpellAbility().addTarget(new TargetPlayer());
// 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) {

View file

@ -22,7 +22,7 @@ import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.events.ZoneChangeEvent;
import mage.game.permanent.PermanentToken;
import mage.game.permanent.token.WitherbloomToken;
import mage.game.permanent.token.Pest11GainLifeToken;
import java.util.UUID;
@ -102,7 +102,7 @@ class ValentinDeanOfTheVeinEffect extends ReplacementEffectImpl {
((ZoneChangeEvent) event).setToZone(Zone.EXILED);
game.fireReflexiveTriggeredAbility(new ReflexiveTriggeredAbility(
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 " +
"Pest creature token with \"When this creature dies, you gain 1 life.\""
), source);

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -6,12 +6,14 @@ import mage.abilities.effects.common.GainLifeEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @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.\"");
cardType.add(CardType.CREATURE);
color.setBlack(true);
@ -21,13 +23,15 @@ public final class WitherbloomToken extends TokenImpl {
toughness = new MageInt(1);
this.addAbility(new DiesSourceTriggeredAbility(new GainLifeEffect(1)));
availableImageSetCodes = Arrays.asList("STX");
}
private WitherbloomToken(final WitherbloomToken token) {
private Pest11GainLifeToken(final Pest11GainLifeToken token) {
super(token);
}
public WitherbloomToken copy() {
return new WitherbloomToken(this);
public Pest11GainLifeToken copy() {
return new Pest11GainLifeToken(this);
}
}

View file

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

View file

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

View file

@ -29,7 +29,7 @@ public final class TreasureToken extends TokenImpl {
ability.addCost(new SacrificeSourceCost());
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) {