* Images: added Commander 2021 tokens;

This commit is contained in:
Oleg Agafonov 2021-07-03 22:49:15 +04:00
parent 03b012bc1e
commit 6a3f2ff420
49 changed files with 362 additions and 303 deletions

View file

@ -131,8 +131,11 @@ public class ScryfallImageSupportTokens {
//KLD //KLD
put("KLD/Beast", "https://api.scryfall.com/cards/tkld/1/en?format=image"); put("KLD/Beast", "https://api.scryfall.com/cards/tkld/1/en?format=image");
put("KLD/Emblem Chandra", "https://api.scryfall.com/cards/tkld/10/en?format=image"); put("KLD/Emblem Chandra", "https://api.scryfall.com/cards/tkld/10/en?format=image");
// same construct images uses for different classes, so KLD have 4 instead 2 tokens
put("KLD/Construct/1", "https://api.scryfall.com/cards/tkld/2/en?format=image"); put("KLD/Construct/1", "https://api.scryfall.com/cards/tkld/2/en?format=image");
put("KLD/Construct/2", "https://api.scryfall.com/cards/tkld/3/en?format=image"); put("KLD/Construct/2", "https://api.scryfall.com/cards/tkld/3/en?format=image");
put("KLD/Construct/3", "https://api.scryfall.com/cards/tkld/2/en?format=image");
put("KLD/Construct/4", "https://api.scryfall.com/cards/tkld/3/en?format=image");
put("KLD/Emblem Dovin", "https://api.scryfall.com/cards/tkld/12/en?format=image"); put("KLD/Emblem Dovin", "https://api.scryfall.com/cards/tkld/12/en?format=image");
put("KLD/Emblem Nissa", "https://api.scryfall.com/cards/tkld/11/en?format=image"); put("KLD/Emblem Nissa", "https://api.scryfall.com/cards/tkld/11/en?format=image");
put("KLD/Servo/1", "https://api.scryfall.com/cards/tkld/4/en?format=image"); put("KLD/Servo/1", "https://api.scryfall.com/cards/tkld/4/en?format=image");
@ -547,6 +550,37 @@ 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");
// 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
put("C21/Boar", "https://api.scryfall.com/cards/tc21/12/en?format=image");
put("C21/Champion of Wits", "https://api.scryfall.com/cards/tc21/6/en?format=image");
put("C21/Construct/1", "https://api.scryfall.com/cards/tc21/22/en?format=image"); // x/x
put("C21/Construct/2", "https://api.scryfall.com/cards/tc21/23/en?format=image"); // 0/0
put("C21/Demon", "https://api.scryfall.com/cards/tc21/7/en?format=image");
put("C21/Drake", "https://api.scryfall.com/cards/tc21/2/en?format=image");
put("C21/Eldrazi", "https://api.scryfall.com/cards/tc21/1/en?format=image");
put("C21/Elemental", "https://api.scryfall.com/cards/tc21/20/en?format=image");
put("C21/Elephant", "https://api.scryfall.com/cards/tc21/13/en?format=image");
put("C21/Fish", "https://api.scryfall.com/cards/tc21/3/en?format=image");
put("C21/Food", "https://api.scryfall.com/cards/tc21/24/en?format=image");
put("C21/Frog Lizard", "https://api.scryfall.com/cards/tc21/14/en?format=image");
put("C21/Fungus Beast", "https://api.scryfall.com/cards/tc21/15/en?format=image");
put("C21/Golem/1", "https://api.scryfall.com/cards/tc21/25/en?format=image"); // fly
put("C21/Golem/2", "https://api.scryfall.com/cards/tc21/27/en?format=image"); // vigilance
put("C21/Golem/3", "https://api.scryfall.com/cards/tc21/26/en?format=image"); // trample
put("C21/Horror", "https://api.scryfall.com/cards/tc21/8/en?format=image");
put("C21/Hydra", "https://api.scryfall.com/cards/tc21/16/en?format=image");
put("C21/Insect", "https://api.scryfall.com/cards/tc21/17/en?format=image");
put("C21/Kraken", "https://api.scryfall.com/cards/tc21/4/en?format=image");
put("C21/Myr", "https://api.scryfall.com/cards/tc21/28/en?format=image");
put("C21/Saproling", "https://api.scryfall.com/cards/tc21/18/en?format=image");
put("C21/Spirit", "https://api.scryfall.com/cards/tc21/21/en?format=image");
put("C21/Thopter", "https://api.scryfall.com/cards/tc21/29/en?format=image");
put("C21/Whale", "https://api.scryfall.com/cards/tc21/5/en?format=image");
put("C21/Wurm", "https://api.scryfall.com/cards/tc21/19/en?format=image");
put("C21/Zombie", "https://api.scryfall.com/cards/tc21/9/en?format=image");
// generate supported sets // generate supported sets
supportedSets.clear(); supportedSets.clear();
for (String cardName : this.keySet()) { for (String cardName : this.keySet()) {

View file

@ -266,7 +266,7 @@
|Generate|TOK:BNG|Centaur|||CentaurEnchantmentCreatureToken| |Generate|TOK:BNG|Centaur|||CentaurEnchantmentCreatureToken|
|Generate|TOK:BNG|Elemental|||SatyrNyxSmithElementalToken| |Generate|TOK:BNG|Elemental|||SatyrNyxSmithElementalToken|
|Generate|TOK:BNG|Gold|| |Generate|TOK:BNG|Gold||
|Generate|TOK:BNG|Kraken|||ReefWormKrakenToken| |Generate|TOK:BNG|Kraken|||Kraken99Token|
|Generate|TOK:BNG|Soldier|||GodFavoredGeneralSoldierToken| |Generate|TOK:BNG|Soldier|||GodFavoredGeneralSoldierToken|
|Generate|TOK:BNG|Wolf|||WolfToken| |Generate|TOK:BNG|Wolf|||WolfToken|
|Generate|TOK:BNG|Zombie|||ForlornPseudammaZombieToken| |Generate|TOK:BNG|Zombie|||ForlornPseudammaZombieToken|
@ -303,7 +303,7 @@
|Generate|TOK:C14|Beast|2||BeastToken2| |Generate|TOK:C14|Beast|2||BeastToken2|
|Generate|TOK:C14|Cat|||CatToken| |Generate|TOK:C14|Cat|||CatToken|
|Generate|TOK:C14|Demon|1||DemonToken| |Generate|TOK:C14|Demon|1||DemonToken|
|Generate|TOK:C14|Demon|2||ReignOfThePitToken| |Generate|TOK:C14|Demon|2||DemonFlyingToken|
|Generate|TOK:C14|Elemental|||TitaniaProtectorOfArgothElementalToken| |Generate|TOK:C14|Elemental|||TitaniaProtectorOfArgothElementalToken|
|Generate|TOK:C14|Elephant|||ElephantToken| |Generate|TOK:C14|Elephant|||ElephantToken|
|Generate|TOK:C14|Elf Druid|||ElfDruidToken| |Generate|TOK:C14|Elf Druid|||ElfDruidToken|
@ -317,7 +317,7 @@
|Generate|TOK:C14|Goblin|||GoblinToken| |Generate|TOK:C14|Goblin|||GoblinToken|
|Generate|TOK:C14|Horror|||SpoilsOfBloodHorrorToken| |Generate|TOK:C14|Horror|||SpoilsOfBloodHorrorToken|
|Generate|TOK:C14|Kor Soldier|||KorSoldierToken| |Generate|TOK:C14|Kor Soldier|||KorSoldierToken|
|Generate|TOK:C14|Kraken|||ReefWormKrakenToken| |Generate|TOK:C14|Kraken|||Kraken99Token|
|Generate|TOK:C14|Myr|||MyrToken| |Generate|TOK:C14|Myr|||MyrToken|
|Generate|TOK:C14|Pegasus|||PegasusToken| |Generate|TOK:C14|Pegasus|||PegasusToken|
|Generate|TOK:C14|Pentavite|||PentaviteToken| |Generate|TOK:C14|Pentavite|||PentaviteToken|
@ -338,8 +338,8 @@
|Generate|TOK:C15|Dragon|||DragonToken2| |Generate|TOK:C15|Dragon|||DragonToken2|
|Generate|TOK:C15|Drake|||DrakeToken| |Generate|TOK:C15|Drake|||DrakeToken|
|Generate|TOK:C15|Elemental Shaman|||ElementalShamanToken| |Generate|TOK:C15|Elemental Shaman|||ElementalShamanToken|
|Generate|TOK:C15|Elemental|||CallTheSkyBreakerElementalToken| |Generate|TOK:C15|Elemental|1||CallTheSkyBreakerElementalToken|
|Generate|TOK:C15|Elemental|||LightningRagerToken| |Generate|TOK:C15|Elemental|2||LightningRagerToken|
|Generate|TOK:C15|Elephant|||ElephantToken| |Generate|TOK:C15|Elephant|||ElephantToken|
|Generate|TOK:C15|Frog Lizard|||RapidHybridizationToken| |Generate|TOK:C15|Frog Lizard|||RapidHybridizationToken|
|Generate|TOK:C15|Germ|||GermToken| |Generate|TOK:C15|Germ|||GermToken|
@ -554,7 +554,7 @@
|Generate|TOK:DDM|Assassin|||AssassinToken| |Generate|TOK:DDM|Assassin|||AssassinToken|
|Generate|TOK:DDM|Illusion|||IllusionToken| |Generate|TOK:DDM|Illusion|||IllusionToken|
|Generate|TOK:DDN|Goblin|||GoblinToken| |Generate|TOK:DDN|Goblin|||GoblinToken|
|Generate|TOK:DDO|Kraken|||ReefWormKrakenToken| |Generate|TOK:DDO|Kraken|||Kraken99Token|
|Generate|TOK:DDO|Soldier|||SoldierToken| |Generate|TOK:DDO|Soldier|||SoldierToken|
|Generate|TOK:DDP|Eldrazi Spawn|1||EldraziSpawnToken| |Generate|TOK:DDP|Eldrazi Spawn|1||EldraziSpawnToken|
|Generate|TOK:DDP|Eldrazi Spawn|2||EldraziSpawnToken| |Generate|TOK:DDP|Eldrazi Spawn|2||EldraziSpawnToken|
@ -753,7 +753,9 @@
|Generate|TOK:JUD|Wurm|||WurmToken| |Generate|TOK:JUD|Wurm|||WurmToken|
|Generate|TOK:KLD|Beast|||ArchitectOfTheUntamedBeastToken| |Generate|TOK:KLD|Beast|||ArchitectOfTheUntamedBeastToken|
|Generate|TOK:KLD|Construct|1||OviyaPashiriSageLifecrafterToken| |Generate|TOK:KLD|Construct|1||OviyaPashiriSageLifecrafterToken|
|Generate|TOK:KLD|Construct|2||MetallurgicSummoningsConstructToken| |Generate|TOK:KLD|Construct|2||OviyaPashiriSageLifecrafterToken|
|Generate|TOK:KLD|Construct|3||MetallurgicSummoningsConstructToken|
|Generate|TOK:KLD|Construct|4||MetallurgicSummoningsConstructToken|
|Generate|TOK:KLD|Servo|1||ServoToken| |Generate|TOK:KLD|Servo|1||ServoToken|
|Generate|TOK:KLD|Servo|2||ServoToken| |Generate|TOK:KLD|Servo|2||ServoToken|
|Generate|TOK:KLD|Servo|3||ServoToken| |Generate|TOK:KLD|Servo|3||ServoToken|
@ -1363,7 +1365,7 @@
|Generate|TOK:C20|Goblin Warrior|||GoblinWarriorToken| |Generate|TOK:C20|Goblin Warrior|||GoblinWarriorToken|
|Generate|TOK:C20|Human|||HumanToken| |Generate|TOK:C20|Human|||HumanToken|
|Generate|TOK:C20|Hydra|||ZaxaraTheExemplaryHydraToken| |Generate|TOK:C20|Hydra|||ZaxaraTheExemplaryHydraToken|
|Generate|TOK:C20|Insect|1||HornetQueenInsectToken| |Generate|TOK:C20|Insect|1||InsectDeathToken|
|Generate|TOK:C20|Insect|2||TheLocustGodInsectToken| |Generate|TOK:C20|Insect|2||TheLocustGodInsectToken|
|Generate|TOK:C20|Saproling|||SaprolingToken| |Generate|TOK:C20|Saproling|||SaprolingToken|
|Generate|TOK:C20|Snake|||SnakeToken| |Generate|TOK:C20|Snake|||SnakeToken|
@ -1496,3 +1498,38 @@
|Generate|TOK:TSR|Saproling|||SaprolingToken| |Generate|TOK:TSR|Saproling|||SaprolingToken|
|Generate|TOK:TSR|Soldier|||SoldierToken| |Generate|TOK:TSR|Soldier|||SoldierToken|
|Generate|TOK:TSR|Spider|||PenumbraSpiderToken| |Generate|TOK:TSR|Spider|||PenumbraSpiderToken|
# C21
|Generate|TOK:C21|Beast|1||BeastToken|
|Generate|TOK:C21|Beast|2||BeastToken2|
|Generate|TOK:C21|Fungus Beast|||FungusBeastToken|
|Generate|TOK:C21|Boar|||Boar2Token|
# no need tokens for Eternalize ability, but scryfall have it: https://scryfall.com/card/tc21/6/champion-of-wits
# no need tokens for Copy, but scryfall have it: https://scryfall.com/card/tc21/30/copy
|Generate|TOK:C21|Construct|1||MetallurgicSummoningsConstructToken|
|Generate|TOK:C21|Construct|2||KarnConstructToken|
|Generate|TOK:C21|Demon|||DemonFlyingToken|
|Generate|TOK:C21|Drake|||DrakeToken|
|Generate|TOK:C21|Eldrazi|||EldraziToken|
|Generate|TOK:C21|Elemental|||CallTheSkyBreakerElementalToken|
|Generate|TOK:C21|Elephant|||ElephantToken|
|Generate|TOK:C21|Fish|||ReefWormFishToken|
|Generate|TOK:C21|Food|||FoodToken|
|Generate|TOK:C21|Frog Lizard|||FrogLizardToken|
|Generate|TOK:C21|Golem|1||GolemFlyingToken|
|Generate|TOK:C21|Golem|2||GolemVigilanceToken|
|Generate|TOK:C21|Golem|3||GolemTrampleToken|
|Generate|TOK:C21|Horror|||HorrorToken|
|Generate|TOK:C21|Hydra|||HydraBroodmasterToken|
|Generate|TOK:C21|Insect|||InsectDeathToken|
|Generate|TOK:C21|Kraken|||Kraken99Token|
|Generate|TOK:C21|Myr|||MyrToken|
|Generate|TOK:C21|Saproling|||SaprolingToken|
|Generate|TOK:C21|Spirit|||WhiteBlackSpiritToken|
|Generate|TOK:C21|Thopter|||ThopterColorlessToken|
|Generate|TOK:C21|Whale|||ReefWormWhaleToken|
|Generate|TOK:C21|Wurm|||WurmToken|
|Generate|TOK:C21|Zombie|||ZombieToken|
#|Generate|TOK:C21|xxx|||xxxToken|

View file

@ -1,13 +1,14 @@
package mage.cards.d; package mage.cards.d;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.cards.*; import mage.cards.Card;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.cards.CardsImpl;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.constants.Zone; import mage.constants.Zone;
@ -15,8 +16,9 @@ import mage.game.Game;
import mage.game.permanent.token.SaprolingToken; import mage.game.permanent.token.SaprolingToken;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author North * @author North
*/ */
public final class DruidicSatchel extends CardImpl { public final class DruidicSatchel extends CardImpl {
@ -24,6 +26,7 @@ public final class DruidicSatchel extends CardImpl {
public DruidicSatchel(UUID ownerId, CardSetInfo setInfo) { public DruidicSatchel(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// {2}, {T}: Reveal the top card of your library. If its a creature card, create a 1/1 green Saproling creature token. If its a land card, put that card onto the battlefield under your control. If its a noncreature, nonland card, you gain 2 life.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DruidicSatchelEffect(), new ManaCostsImpl("{2}")); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DruidicSatchelEffect(), new ManaCostsImpl("{2}"));
ability.addCost(new TapSourceCost()); ability.addCost(new TapSourceCost());
this.addAbility(ability); this.addAbility(ability);

View file

@ -1,7 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.DealtDamageToSourceTriggeredAbility; import mage.abilities.common.DealtDamageToSourceTriggeredAbility;
@ -11,14 +9,15 @@ import mage.abilities.keyword.DefenderAbility;
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.Outcome; import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.HornetNestInsectToken; import mage.game.permanent.token.InsectDeathToken;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class HornetNest extends CardImpl { public final class HornetNest extends CardImpl {
@ -32,6 +31,7 @@ public final class HornetNest extends CardImpl {
// Defender // Defender
this.addAbility(DefenderAbility.getInstance()); this.addAbility(DefenderAbility.getInstance());
// Whenever Hornet Nest is dealt damage, create that many 1/1 green Insect creature tokens with flying and deathtouch. // Whenever Hornet Nest is dealt damage, create that many 1/1 green Insect creature tokens with flying and deathtouch.
this.addAbility(new DealtDamageToSourceTriggeredAbility(new HornetNestDealDamageEffect(), false, false, true)); this.addAbility(new DealtDamageToSourceTriggeredAbility(new HornetNestDealDamageEffect(), false, false, true));
} }
@ -68,7 +68,7 @@ class HornetNestDealDamageEffect extends OneShotEffect {
if (player != null) { if (player != null) {
int amount = (Integer) getValue("damage"); int amount = (Integer) getValue("damage");
if (amount > 0) { if (amount > 0) {
return new CreateTokenEffect(new HornetNestInsectToken(), amount).apply(game, source); return new CreateTokenEffect(new InsectDeathToken(), amount).apply(game, source);
} }
} }
return false; return false;

View file

@ -1,7 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
@ -11,10 +9,11 @@ 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.HornetQueenInsectToken; import mage.game.permanent.token.InsectDeathToken;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class HornetQueen extends CardImpl { public final class HornetQueen extends CardImpl {
@ -31,7 +30,7 @@ public final class HornetQueen extends CardImpl {
// Deathtouch // Deathtouch
this.addAbility(DeathtouchAbility.getInstance()); this.addAbility(DeathtouchAbility.getInstance());
// When Hornet Queen enters the battlefield, create four 1/1 green Insect creature tokens with flying and deathtouch. // When Hornet Queen enters the battlefield, create four 1/1 green Insect creature tokens with flying and deathtouch.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new HornetQueenInsectToken(), 4), false)); this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new InsectDeathToken(), 4), false));
} }
private HornetQueen(final HornetQueen card) { private HornetQueen(final HornetQueen card) {

View file

@ -1,7 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -15,6 +13,8 @@ import mage.game.permanent.token.HorrorToken;
import mage.target.Target; import mage.target.Target;
import mage.target.common.TargetOpponent; import mage.target.common.TargetOpponent;
import java.util.UUID;
/** /**
* @author Loki * @author Loki
*/ */
@ -23,11 +23,12 @@ public final class HuntedLammasu extends CardImpl {
public HuntedLammasu(UUID ownerId, CardSetInfo setInfo) { public HuntedLammasu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.subtype.add(SubType.LAMMASU); this.subtype.add(SubType.LAMMASU);
this.power = new MageInt(5); this.power = new MageInt(5);
this.toughness = new MageInt(5); this.toughness = new MageInt(5);
// Flying
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
// When Hunted Lammasu enters the battlefield, create a 4/4 black Horror creature token under target opponent's control. // When Hunted Lammasu enters the battlefield, create a 4/4 black Horror creature token under target opponent's control.
Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenTargetEffect(new HorrorToken()), false); Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenTargetEffect(new HorrorToken()), false);
Target target = new TargetOpponent(); Target target = new TargetOpponent();

View file

@ -1,7 +1,5 @@
package mage.cards.h; package mage.cards.h;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.common.BecomesMonstrousSourceTriggeredAbility; import mage.abilities.common.BecomesMonstrousSourceTriggeredAbility;
@ -11,14 +9,15 @@ import mage.abilities.keyword.MonstrosityAbility;
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.Outcome; import mage.constants.Outcome;
import mage.constants.SubType;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.HydraBroodmasterToken; import mage.game.permanent.token.HydraBroodmasterToken;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class HydraBroodmaster extends CardImpl { public final class HydraBroodmaster extends CardImpl {
@ -32,6 +31,7 @@ public final class HydraBroodmaster extends CardImpl {
// {X}{X}{G}: Monstrosity X // {X}{X}{G}: Monstrosity X
this.addAbility(new MonstrosityAbility("{X}{X}{G}", Integer.MAX_VALUE)); this.addAbility(new MonstrosityAbility("{X}{X}{G}", Integer.MAX_VALUE));
// When Hydra Broodmaster becomes monstrous, create X X/X green Hydra creature tokens. // When Hydra Broodmaster becomes monstrous, create X X/X green Hydra creature tokens.
this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new HydraBroodmasterEffect())); this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new HydraBroodmasterEffect()));
} }

View file

@ -1,10 +1,5 @@
package mage.cards.m; package mage.cards.m;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import mage.MageInt; import mage.MageInt;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl; import mage.abilities.TriggeredAbilityImpl;
@ -14,11 +9,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl; import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.*;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate; import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game; import mage.game.Game;
@ -29,8 +20,12 @@ import mage.players.Player;
import mage.target.TargetPermanent; import mage.target.TargetPermanent;
import mage.target.targetpointer.FixedTarget; import mage.target.targetpointer.FixedTarget;
import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
/** /**
*
* @author BetaSteward_at_googlemail.com * @author BetaSteward_at_googlemail.com
*/ */
public final class MyrBattlesphere extends CardImpl { public final class MyrBattlesphere extends CardImpl {

View file

@ -1,7 +1,5 @@
package mage.cards.p; package mage.cards.p;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.Mode; import mage.abilities.Mode;
import mage.abilities.effects.Effect; import mage.abilities.effects.Effect;
@ -15,11 +13,12 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.Outcome; import mage.constants.Outcome;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.PromiseOfPowerDemonToken; import mage.game.permanent.token.DemonFlyingToken;
import mage.players.Player; import mage.players.Player;
import java.util.UUID;
/** /**
*
* @author LevelX2 * @author LevelX2
*/ */
public final class PromiseOfPower extends CardImpl { public final class PromiseOfPower extends CardImpl {
@ -73,7 +72,7 @@ class PromiseOfPowerEffect extends OneShotEffect {
public boolean apply(Game game, Ability source) { public boolean apply(Game game, Ability source) {
Player controller = game.getPlayer(source.getControllerId()); Player controller = game.getPlayer(source.getControllerId());
if (controller != null) { if (controller != null) {
return new CreateTokenEffect(new PromiseOfPowerDemonToken(controller.getHand().size())).apply(game, source); return new CreateTokenEffect(new DemonFlyingToken(controller.getHand().size())).apply(game, source);
} }
return false; return false;
} }

View file

@ -1,9 +1,5 @@
package mage.cards.r; package mage.cards.r;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability; import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
@ -14,12 +10,15 @@ import mage.constants.Outcome;
import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.Permanent; import mage.game.permanent.Permanent;
import mage.game.permanent.token.ReignOfThePitToken; import mage.game.permanent.token.DemonFlyingToken;
import mage.players.Player; import mage.players.Player;
import mage.target.common.TargetControlledCreaturePermanent; import mage.target.common.TargetControlledCreaturePermanent;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/** /**
*
* @author emerald000 * @author emerald000
*/ */
public final class ReignOfThePit extends CardImpl { public final class ReignOfThePit extends CardImpl {
@ -86,7 +85,7 @@ class ReignOfThePitEffect extends OneShotEffect {
} }
} }
} }
new CreateTokenEffect(new ReignOfThePitToken(totalPowerSacrificed)).apply(game, source); new CreateTokenEffect(new DemonFlyingToken(totalPowerSacrificed)).apply(game, source);
return true; return true;
} }
} }

View file

@ -11,7 +11,7 @@ import mage.constants.SubType;
import mage.filter.FilterPermanent; import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates; import mage.filter.predicate.Predicates;
import mage.game.permanent.token.KioraKrakenToken; import mage.game.permanent.token.Kraken99Token;
import java.util.UUID; import java.util.UUID;
@ -41,7 +41,7 @@ public final class SpawningKraken extends CardImpl {
// Whenever a Kraken, Leviathan, Octopus, or Serpent you control deals combat damage to a player, create a 9/9 blue Kraken creature token. // Whenever a Kraken, Leviathan, Octopus, or Serpent you control deals combat damage to a player, create a 9/9 blue Kraken creature token.
this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility( this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
new CreateTokenEffect(new KioraKrakenToken()), filter, new CreateTokenEffect(new Kraken99Token()), filter,
false, SetTargetPointer.NONE, true false, SetTargetPointer.NONE, true
)); ));
} }

View file

@ -1,4 +1,3 @@
package mage.cards.t; package mage.cards.t;
import mage.MageInt; import mage.MageInt;
@ -40,8 +39,10 @@ public final class TeysaEnvoyOfGhosts extends CardImpl {
// Vigilance // Vigilance
this.addAbility(VigilanceAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance());
// protection from creatures // protection from creatures
this.addAbility(new ProtectionAbility(FILTER_PERMANENT_CREATURES)); this.addAbility(new ProtectionAbility(FILTER_PERMANENT_CREATURES));
// Whenever a creature deals combat damage to you, destroy that creature. Create a 1/1 white and black Spirit creature token with flying. // Whenever a creature deals combat damage to you, destroy that creature. Create a 1/1 white and black Spirit creature token with flying.
this.addAbility(new TeysaEnvoyOfGhostsTriggeredAbility()); this.addAbility(new TeysaEnvoyOfGhostsTriggeredAbility());
@ -62,7 +63,6 @@ class TeysaEnvoyOfGhostsTriggeredAbility extends TriggeredAbilityImpl {
public TeysaEnvoyOfGhostsTriggeredAbility() { public TeysaEnvoyOfGhostsTriggeredAbility() {
super(Zone.BATTLEFIELD, new DestroyTargetEffect()); super(Zone.BATTLEFIELD, new DestroyTargetEffect());
this.addEffect(new CreateTokenEffect(new WhiteBlackSpiritToken(), 1)); this.addEffect(new CreateTokenEffect(new WhiteBlackSpiritToken(), 1));
} }
public TeysaEnvoyOfGhostsTriggeredAbility(final TeysaEnvoyOfGhostsTriggeredAbility ability) { public TeysaEnvoyOfGhostsTriggeredAbility(final TeysaEnvoyOfGhostsTriggeredAbility ability) {

View file

@ -14,7 +14,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo; import mage.cards.CardSetInfo;
import mage.constants.*; import mage.constants.*;
import mage.game.Game; import mage.game.Game;
import mage.game.permanent.token.PromiseOfPowerDemonToken; import mage.game.permanent.token.DemonFlyingToken;
import mage.players.Player; import mage.players.Player;
import mage.watchers.common.PlayerGainedLifeWatcher; import mage.watchers.common.PlayerGainedLifeWatcher;
@ -91,7 +91,7 @@ class TivashGloomSummonerEffect extends OneShotEffect {
)) { )) {
return false; return false;
} }
new PromiseOfPowerDemonToken(lifeGained).putOntoBattlefield(1, game, source, source.getControllerId()); new DemonFlyingToken(lifeGained).putOntoBattlefield(1, game, source, source.getControllerId());
return true; return true;
} }
} }

View file

@ -1,4 +1,3 @@
package mage.game.command.emblems; package mage.game.command.emblems;
import mage.abilities.Ability; import mage.abilities.Ability;
@ -7,10 +6,9 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.TargetController; import mage.constants.TargetController;
import mage.constants.Zone; import mage.constants.Zone;
import mage.game.command.Emblem; import mage.game.command.Emblem;
import mage.game.permanent.token.KioraKrakenToken; import mage.game.permanent.token.Kraken99Token;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class KioraEmblem extends Emblem { public final class KioraEmblem extends Emblem {
@ -22,7 +20,7 @@ public final class KioraEmblem extends Emblem {
public KioraEmblem() { public KioraEmblem() {
this.setName("Emblem Kiora"); this.setName("Emblem Kiora");
Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.COMMAND, new CreateTokenEffect(new KioraKrakenToken()), TargetController.YOU, null, false); Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.COMMAND, new CreateTokenEffect(new Kraken99Token()), TargetController.YOU, null, false);
this.getAbilities().add(ability); this.getAbilities().add(ability);
} }
} }

View file

@ -22,7 +22,7 @@ public final class BeastToken extends TokenImpl {
availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2", "GVL", availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2", "GVL",
"DD3C", "DD3GVL", "DDD", "DDL", "DST", "E01", "EVE", "LRW", "M10", "M11", "M12", "DD3C", "DD3GVL", "DDD", "DDL", "DST", "E01", "EVE", "LRW", "M10", "M11", "M12",
"M13", "M14", "M15", "MM3", "NPH", "PC2", "USG", "M19", "IKO", "M21", "CMR"); "M13", "M14", "M15", "MM3", "NPH", "PC2", "USG", "M19", "IKO", "M21", "CMR", "C21");
} }
@Override @Override

View file

@ -20,7 +20,7 @@ public final class BeastToken2 extends TokenImpl {
toughness = new MageInt(4); toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("C13", "C14", "C15", "C19", "CMA", "CMD", "GVL", "DDD", availableImageSetCodes = Arrays.asList("C13", "C14", "C15", "C19", "CMA", "CMD", "GVL", "DDD",
"E01", "ODY", "SCG", "ZEN", "C20", "ZNC", "CMR"); "E01", "ODY", "SCG", "ZEN", "C20", "ZNC", "CMR", "C21");
} }
public BeastToken2(final BeastToken2 token) { public BeastToken2(final BeastToken2 token) {
@ -59,5 +59,9 @@ public final class BeastToken2 extends TokenImpl {
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMR")) { if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMR")) {
this.setTokenType(2); this.setTokenType(2);
} }
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) {
this.setTokenType(2);
}
} }
} }

View file

@ -19,7 +19,7 @@ public final class Boar2Token extends TokenImpl {
power = new MageInt(2); power = new MageInt(2);
toughness = new MageInt(2); toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("THS", "KHC"); availableImageSetCodes = Arrays.asList("THS", "KHC", "C21");
} }
public Boar2Token(final Boar2Token token) { public Boar2Token(final Boar2Token token) {

View file

@ -5,6 +5,8 @@ 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 spjspj * @author spjspj
*/ */
@ -18,7 +20,10 @@ public final class CallTheSkyBreakerElementalToken extends TokenImpl {
subtype.add(SubType.ELEMENTAL); subtype.add(SubType.ELEMENTAL);
power = new MageInt(5); power = new MageInt(5);
toughness = new MageInt(5); toughness = new MageInt(5);
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("C15", "CMD", "EMA", "EVE", "C21");
} }
@Override @Override

View file

@ -0,0 +1,48 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author spjspj
*/
public final class DemonFlyingToken extends TokenImpl {
public DemonFlyingToken() {
this(1);
}
public DemonFlyingToken(int xValue) {
super("Demon", "X/X black Demon creature token with flying");
cardType.add(CardType.CREATURE);
color.setBlack(true);
subtype.add(SubType.DEMON);
power = new MageInt(xValue);
toughness = new MageInt(xValue);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("C14", "C21");
}
public DemonFlyingToken(final DemonFlyingToken token) {
super(token);
}
public DemonFlyingToken copy() {
return new DemonFlyingToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C14")) {
setTokenType(2);
}
}
}

View file

@ -24,7 +24,7 @@ public final class DrakeToken extends TokenImpl {
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("AKH", "C15", "C19", "M13", "C20", "ZNR"); availableImageSetCodes = Arrays.asList("AKH", "C15", "C19", "M13", "C20", "ZNR", "C21");
} }
public DrakeToken(final DrakeToken token) { public DrakeToken(final DrakeToken token) {

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 EldraziToken extends TokenImpl { public final class EldraziToken extends TokenImpl {
@ -17,6 +17,8 @@ public final class EldraziToken extends TokenImpl {
subtype.add(SubType.ELDRAZI); subtype.add(SubType.ELDRAZI);
power = new MageInt(10); power = new MageInt(10);
toughness = new MageInt(10); toughness = new MageInt(10);
availableImageSetCodes = Arrays.asList("BFZ", "C19", "C21");
} }
public EldraziToken(final EldraziToken token) { public EldraziToken(final EldraziToken token) {

View file

@ -20,7 +20,7 @@ public final class ElephantToken extends TokenImpl {
toughness = new MageInt(3); toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("C13", "C14", "C15", "CMA", "CMD", "CNS", "GVL", "DDD", availableImageSetCodes = Arrays.asList("C13", "C14", "C15", "CMA", "CMD", "CNS", "GVL", "DDD",
"EMA", "INV", "JUD", "MM2", "ODY", "ROE", "TSP", "VMA", "WWK", "MH1", "CMR"); "EMA", "INV", "JUD", "MM2", "ODY", "ROE", "TSP", "VMA", "WWK", "MH1", "CMR", "C21");
} }
public ElephantToken(final ElephantToken token) { public ElephantToken(final ElephantToken token) {

View file

@ -23,13 +23,8 @@ public final class FoodToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>(); static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("ELD"));
}
public FoodToken() { public FoodToken() {
super("Food", "Food token"); super("Food", "Food token");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
subtype.add(SubType.FOOD); subtype.add(SubType.FOOD);
@ -40,6 +35,8 @@ public final class FoodToken extends TokenImpl {
cost.setText("Sacrifice this artifact"); cost.setText("Sacrifice this artifact");
ability.addCost(cost); ability.addCost(cost);
this.addAbility(ability); this.addAbility(ability);
availableImageSetCodes = Arrays.asList("ELD", "C21");
} }
@Override @Override

View file

@ -4,6 +4,8 @@ import mage.MageInt;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author spjspj * @author spjspj
*/ */
@ -12,14 +14,13 @@ public final class FrogLizardToken extends TokenImpl {
public FrogLizardToken() { public FrogLizardToken() {
super("Frog Lizard", "3/3 green Frog Lizard creature token"); super("Frog Lizard", "3/3 green Frog Lizard creature token");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setGreen(true); color.setGreen(true);
subtype.add(SubType.FROG); subtype.add(SubType.FROG);
subtype.add(SubType.LIZARD); subtype.add(SubType.LIZARD);
power = new MageInt(3); power = new MageInt(3);
toughness = new MageInt(3); toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("RNA", "C21");
} }
public FrogLizardToken(final FrogLizardToken token) { public FrogLizardToken(final FrogLizardToken token) {

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.TrampleAbility;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -18,7 +20,10 @@ public final class FungusBeastToken extends TokenImpl {
subtype.add(SubType.BEAST); subtype.add(SubType.BEAST);
power = new MageInt(4); power = new MageInt(4);
toughness = new MageInt(4); toughness = new MageInt(4);
addAbility(TrampleAbility.getInstance()); addAbility(TrampleAbility.getInstance());
availableImageSetCodes = Arrays.asList("C21");
} }
private FungusBeastToken(final FungusBeastToken token) { private FungusBeastToken(final FungusBeastToken token) {

View file

@ -5,6 +5,8 @@ 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
*/ */
@ -17,7 +19,10 @@ public final class GolemFlyingToken extends TokenImpl {
subtype.add(SubType.GOLEM); subtype.add(SubType.GOLEM);
power = new MageInt(3); power = new MageInt(3);
toughness = new MageInt(3); toughness = new MageInt(3);
addAbility(FlyingAbility.getInstance()); addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("C21");
} }
private GolemFlyingToken(final GolemFlyingToken token) { private GolemFlyingToken(final GolemFlyingToken token) {
@ -27,4 +32,13 @@ public final class GolemFlyingToken extends TokenImpl {
public GolemFlyingToken copy() { public GolemFlyingToken copy() {
return new GolemFlyingToken(this); return new GolemFlyingToken(this);
} }
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) {
setTokenType(1);
}
}
} }

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.TrampleAbility;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -17,7 +19,10 @@ public final class GolemTrampleToken extends TokenImpl {
subtype.add(SubType.GOLEM); subtype.add(SubType.GOLEM);
power = new MageInt(3); power = new MageInt(3);
toughness = new MageInt(3); toughness = new MageInt(3);
addAbility(TrampleAbility.getInstance()); addAbility(TrampleAbility.getInstance());
availableImageSetCodes = Arrays.asList("C21");
} }
private GolemTrampleToken(final GolemTrampleToken token) { private GolemTrampleToken(final GolemTrampleToken token) {
@ -27,4 +32,13 @@ public final class GolemTrampleToken extends TokenImpl {
public GolemTrampleToken copy() { public GolemTrampleToken copy() {
return new GolemTrampleToken(this); return new GolemTrampleToken(this);
} }
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) {
setTokenType(3);
}
}
} }

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.VigilanceAbility;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -17,7 +19,10 @@ public final class GolemVigilanceToken extends TokenImpl {
subtype.add(SubType.GOLEM); subtype.add(SubType.GOLEM);
power = new MageInt(3); power = new MageInt(3);
toughness = new MageInt(3); toughness = new MageInt(3);
addAbility(VigilanceAbility.getInstance()); addAbility(VigilanceAbility.getInstance());
availableImageSetCodes = Arrays.asList("C21");
} }
private GolemVigilanceToken(final GolemVigilanceToken token) { private GolemVigilanceToken(final GolemVigilanceToken token) {
@ -27,4 +32,13 @@ public final class GolemVigilanceToken extends TokenImpl {
public GolemVigilanceToken copy() { public GolemVigilanceToken copy() {
return new GolemVigilanceToken(this); return new GolemVigilanceToken(this);
} }
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) {
setTokenType(2);
}
}
} }

View file

@ -1,36 +0,0 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.DeathtouchAbility;
import mage.abilities.keyword.FlyingAbility;
/**
*
* @author spjspj
*/
public final class HornetNestInsectToken extends TokenImpl {
public HornetNestInsectToken() {
super("Insect", "1/1 green Insect creature tokens with flying and deathtouch");
setOriginalExpansionSetCode("M15");
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.INSECT);
power = new MageInt(1);
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
this.addAbility(DeathtouchAbility.getInstance());
}
public HornetNestInsectToken(final HornetNestInsectToken token) {
super(token);
}
public HornetNestInsectToken copy() {
return new HornetNestInsectToken(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 HorrorToken extends TokenImpl { public final class HorrorToken extends TokenImpl {
@ -18,6 +18,8 @@ public final class HorrorToken extends TokenImpl {
subtype.add(SubType.HORROR); subtype.add(SubType.HORROR);
power = new MageInt(4); power = new MageInt(4);
toughness = new MageInt(4); toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("RAV", "C21");
} }
public HorrorToken(final HorrorToken token) { public HorrorToken(final HorrorToken token) {

View file

@ -23,7 +23,7 @@ public final class HydraBroodmasterToken extends TokenImpl {
this.power = new MageInt(power); this.power = new MageInt(power);
this.toughness = new MageInt(toughness); this.toughness = new MageInt(toughness);
availableImageSetCodes = Arrays.asList("JOU"); availableImageSetCodes = Arrays.asList("JOU", "C21");
} }
public HydraBroodmasterToken(final HydraBroodmasterToken token) { public HydraBroodmasterToken(final HydraBroodmasterToken token) {

View file

@ -11,9 +11,9 @@ import java.util.Arrays;
/** /**
* @author spjspj * @author spjspj
*/ */
public final class HornetQueenInsectToken extends TokenImpl { public final class InsectDeathToken extends TokenImpl {
public HornetQueenInsectToken() { public InsectDeathToken() {
super("Insect", "1/1 green Insect creature token with flying and deathtouch"); super("Insect", "1/1 green Insect creature token with flying and deathtouch");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setGreen(true); color.setGreen(true);
@ -23,14 +23,14 @@ public final class HornetQueenInsectToken extends TokenImpl {
addAbility(FlyingAbility.getInstance()); addAbility(FlyingAbility.getInstance());
addAbility(DeathtouchAbility.getInstance()); addAbility(DeathtouchAbility.getInstance());
availableImageSetCodes = Arrays.asList("M15", "C20"); availableImageSetCodes = Arrays.asList("M15", "C20", "C21");
} }
public HornetQueenInsectToken(final HornetQueenInsectToken token) { public InsectDeathToken(final InsectDeathToken token) {
super(token); super(token);
} }
public HornetQueenInsectToken copy() { public InsectDeathToken copy() {
return new HornetQueenInsectToken(this); return new InsectDeathToken(this);
} }
} }

View file

@ -8,25 +8,17 @@ import mage.constants.CardType;
import mage.constants.Duration; import mage.constants.Duration;
import mage.constants.SubType; import mage.constants.SubType;
import mage.constants.Zone; import mage.constants.Zone;
import mage.util.RandomUtil;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
/** /**
* @author spjspj * @author spjspj
*/ */
public final class KarnConstructToken extends TokenImpl { public final class KarnConstructToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("DOM", "MH1"));
}
public KarnConstructToken() { public KarnConstructToken() {
super("Construct", "0/0 colorless Construct artifact creature token with \"This creature gets +1/+1 for each artifact you control.\""); super("Construct", "0/0 colorless Construct artifact creature token with \"This creature gets +1/+1 for each artifact you control.\"");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.CONSTRUCT); subtype.add(SubType.CONSTRUCT);
@ -37,6 +29,8 @@ public final class KarnConstructToken extends TokenImpl {
new BoostSourceEffect(ArtifactYouControlCount.instance, ArtifactYouControlCount.instance, Duration.WhileOnBattlefield) new BoostSourceEffect(ArtifactYouControlCount.instance, ArtifactYouControlCount.instance, Duration.WhileOnBattlefield)
.setText("This creature gets +1/+1 for each artifact you control") .setText("This creature gets +1/+1 for each artifact you control")
)); ));
availableImageSetCodes = Arrays.asList("DOM", "MH1", "C21");
} }
public KarnConstructToken(final KarnConstructToken token) { public KarnConstructToken(final KarnConstructToken token) {
@ -46,4 +40,13 @@ public final class KarnConstructToken extends TokenImpl {
public KarnConstructToken copy() { public KarnConstructToken copy() {
return new KarnConstructToken(this); return new KarnConstructToken(this);
} }
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) {
setTokenType(RandomUtil.nextInt(2) + 1); // from 1 to 2
}
}
} }

View file

@ -1,31 +0,0 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
/**
*
* @author spjspj
*/
public final class KioraKrakenToken extends TokenImpl {
public KioraKrakenToken() {
super("Kraken", "9/9 blue Kraken creature token");
cardType.add(CardType.CREATURE);
color.setBlue(true);
subtype.add(SubType.KRAKEN);
power = new MageInt(9);
toughness = new MageInt(9);
this.setOriginalExpansionSetCode("BNG");
}
public KioraKrakenToken(final KioraKrakenToken token) {
super(token);
}
public KioraKrakenToken copy() {
return new KioraKrakenToken(this);
}
}

View file

@ -1,31 +1,32 @@
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 ReefWormKrakenToken extends TokenImpl { public final class Kraken99Token extends TokenImpl {
public ReefWormKrakenToken() { public Kraken99Token() {
super("Kraken", "9/9 blue Kraken creature token"); super("Kraken", "9/9 blue Kraken creature token");
setOriginalExpansionSetCode("C14");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setBlue(true); color.setBlue(true);
subtype.add(SubType.KRAKEN); subtype.add(SubType.KRAKEN);
power = new MageInt(9); power = new MageInt(9);
toughness = new MageInt(9); toughness = new MageInt(9);
availableImageSetCodes = Arrays.asList("BNG", "C14", "DDO", "C21");
} }
public ReefWormKrakenToken(final ReefWormKrakenToken token) { public Kraken99Token(final Kraken99Token token) {
super(token); super(token);
} }
public ReefWormKrakenToken copy() { public Kraken99Token copy() {
return new ReefWormKrakenToken(this); return new Kraken99Token(this);
} }
} }

View file

@ -1,17 +1,17 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.effects.common.SacrificeSourceEffect;
import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility; import mage.abilities.keyword.TrampleAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController; import mage.constants.TargetController;
import java.util.Arrays;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class LightningRagerToken extends TokenImpl { public final class LightningRagerToken extends TokenImpl {
@ -19,15 +19,17 @@ public final class LightningRagerToken extends TokenImpl {
public LightningRagerToken() { public LightningRagerToken() {
super("Lightning Rager", "5/1 red Elemental creature token named Lightning Rager." super("Lightning Rager", "5/1 red Elemental creature token named Lightning Rager."
+ "It has trample, haste, and \"At the beginning of the end step, sacrifice this creature.\""); + "It has trample, haste, and \"At the beginning of the end step, sacrifice this creature.\"");
this.setOriginalExpansionSetCode("C15");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setRed(true); color.setRed(true);
subtype.add(SubType.ELEMENTAL); subtype.add(SubType.ELEMENTAL);
power = new MageInt(5); power = new MageInt(5);
toughness = new MageInt(1); toughness = new MageInt(1);
addAbility(TrampleAbility.getInstance());
addAbility(HasteAbility.getInstance()); this.addAbility(TrampleAbility.getInstance());
this.addAbility(HasteAbility.getInstance());
this.addAbility(new BeginningOfEndStepTriggeredAbility(new SacrificeSourceEffect(), TargetController.NEXT, false)); this.addAbility(new BeginningOfEndStepTriggeredAbility(new SacrificeSourceEffect(), TargetController.NEXT, false));
availableImageSetCodes = Arrays.asList("C15");
} }
public LightningRagerToken(final LightningRagerToken token) { public LightningRagerToken(final LightningRagerToken token) {
@ -37,4 +39,14 @@ public final class LightningRagerToken extends TokenImpl {
public LightningRagerToken copy() { public LightningRagerToken copy() {
return new LightningRagerToken(this); return new LightningRagerToken(this);
} }
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C15")) {
this.setTokenType(2);
}
}
} }

View file

@ -1,30 +1,32 @@
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 mage.util.RandomUtil; import mage.util.RandomUtil;
import java.util.Arrays;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class MetallurgicSummoningsConstructToken extends TokenImpl { public final class MetallurgicSummoningsConstructToken extends TokenImpl {
public MetallurgicSummoningsConstructToken() { public MetallurgicSummoningsConstructToken() {
this (1); this(1);
} }
public MetallurgicSummoningsConstructToken(int xValue) { public MetallurgicSummoningsConstructToken(int xValue) {
super("Construct", "X/X colorless Construct artifact creature token"); super("Construct", "X/X colorless Construct artifact creature token");
setOriginalExpansionSetCode("KLD");
setTokenType(RandomUtil.nextInt(2) + 1);
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.CONSTRUCT); subtype.add(SubType.CONSTRUCT);
power = new MageInt(xValue); power = new MageInt(xValue);
toughness = new MageInt(xValue); toughness = new MageInt(xValue);
availableImageSetCodes = Arrays.asList("KLD", "C21");
} }
public MetallurgicSummoningsConstructToken(final MetallurgicSummoningsConstructToken token) { public MetallurgicSummoningsConstructToken(final MetallurgicSummoningsConstructToken token) {
super(token); super(token);
} }
@ -32,4 +34,13 @@ public final class MetallurgicSummoningsConstructToken extends TokenImpl {
public MetallurgicSummoningsConstructToken copy() { public MetallurgicSummoningsConstructToken copy() {
return new MetallurgicSummoningsConstructToken(this); return new MetallurgicSummoningsConstructToken(this);
} }
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("KLD")) {
setTokenType(RandomUtil.nextInt(2) + 3); // from 3 to 4
}
}
} }

View file

@ -4,32 +4,19 @@ import mage.MageInt;
import mage.constants.CardType; import mage.constants.CardType;
import mage.constants.SubType; import mage.constants.SubType;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
public final class MyrToken extends TokenImpl { public final class MyrToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("C14", "MM2", "NPH", "SOM", "MH1"));
}
public MyrToken() { public MyrToken() {
this((String) null);
}
public MyrToken(String expansionSetCode) {
super("Myr", "1/1 colorless Myr artifact creature token"); super("Myr", "1/1 colorless Myr artifact creature token");
this.setOriginalExpansionSetCode(expansionSetCode);
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.MYR); subtype.add(SubType.MYR);
power = new MageInt(1); power = new MageInt(1);
toughness = new MageInt(1); toughness = new MageInt(1);
availableImageSetCodes = tokenImageSets; availableImageSetCodes = Arrays.asList("C13", "C14", "DST", "MBS", "MM2", "MRD", "NPH", "SOM", "MH1", "C21");
} }
public MyrToken(final MyrToken token) { public MyrToken(final MyrToken token) {

View file

@ -1,14 +1,13 @@
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 mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.common.FilterControlledCreaturePermanent;
import mage.util.RandomUtil;
import java.util.Arrays;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class OviyaPashiriSageLifecrafterToken extends TokenImpl { public final class OviyaPashiriSageLifecrafterToken extends TokenImpl {
@ -24,10 +23,10 @@ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl {
cardType.add(CardType.ARTIFACT); cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
subtype.add(SubType.CONSTRUCT); subtype.add(SubType.CONSTRUCT);
setOriginalExpansionSetCode("KLD");
setTokenType(RandomUtil.nextInt(2) + 1);
power = new MageInt(number); power = new MageInt(number);
toughness = new MageInt(number); toughness = new MageInt(number);
availableImageSetCodes = Arrays.asList("KLD");
} }
public OviyaPashiriSageLifecrafterToken(final OviyaPashiriSageLifecrafterToken token) { public OviyaPashiriSageLifecrafterToken(final OviyaPashiriSageLifecrafterToken token) {
@ -37,4 +36,13 @@ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl {
public OviyaPashiriSageLifecrafterToken copy() { public OviyaPashiriSageLifecrafterToken copy() {
return new OviyaPashiriSageLifecrafterToken(this); return new OviyaPashiriSageLifecrafterToken(this);
} }
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) {
setTokenType(2);
}
}
} }

View file

@ -4,6 +4,8 @@ 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
*/ */
@ -17,6 +19,8 @@ public final class PhyrexianBeastToken extends TokenImpl {
subtype.add(SubType.BEAST); subtype.add(SubType.BEAST);
power = new MageInt(4); power = new MageInt(4);
toughness = new MageInt(4); toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("C21");
} }
public PhyrexianBeastToken(final PhyrexianBeastToken token) { public PhyrexianBeastToken(final PhyrexianBeastToken token) {

View file

@ -1,39 +0,0 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
/**
*
* @author spjspj
*/
public final class PromiseOfPowerDemonToken extends TokenImpl {
public PromiseOfPowerDemonToken() {
this(1);
}
public PromiseOfPowerDemonToken(int xValue) {
super("Demon", "X/X black Demon creature token with flying");
setOriginalExpansionSetCode("C14");
setTokenType(2);
cardType.add(CardType.CREATURE);
color.setBlack(true);
subtype.add(SubType.DEMON);
power = new MageInt(xValue);
toughness = new MageInt(xValue);
addAbility(FlyingAbility.getInstance());
}
public PromiseOfPowerDemonToken(final PromiseOfPowerDemonToken token) {
super(token);
}
public PromiseOfPowerDemonToken copy() {
return new PromiseOfPowerDemonToken(this);
}
}

View file

@ -1,21 +1,20 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class ReefWormFishToken extends TokenImpl { public final class ReefWormFishToken extends TokenImpl {
public ReefWormFishToken() { public ReefWormFishToken() {
super("Fish", "3/3 blue Fish creature token with \"When this creature dies, create a 6/6 blue Whale creature token with \"When this creature dies, create a 9/9 blue Kraken creature token.\"\""); super("Fish", "3/3 blue Fish creature token with \"When this creature dies, create a 6/6 blue Whale creature token with \"When this creature dies, create a 9/9 blue Kraken creature token.\"\"");
setOriginalExpansionSetCode("C14");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setBlue(true); color.setBlue(true);
subtype.add(SubType.FISH); subtype.add(SubType.FISH);
@ -23,6 +22,8 @@ public final class ReefWormFishToken extends TokenImpl {
toughness = new MageInt(3); toughness = new MageInt(3);
addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ReefWormWhaleToken()))); addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ReefWormWhaleToken())));
availableImageSetCodes = Arrays.asList("C14", "C21");
} }
public ReefWormFishToken(final ReefWormFishToken token) { public ReefWormFishToken(final ReefWormFishToken token) {

View file

@ -1,28 +1,29 @@
package mage.game.permanent.token; package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt; import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/** /**
*
* @author spjspj * @author spjspj
*/ */
public final class ReefWormWhaleToken extends TokenImpl { public final class ReefWormWhaleToken extends TokenImpl {
public ReefWormWhaleToken() { public ReefWormWhaleToken() {
super("Whale", "6/6 blue Whale creature token with \"When this creature dies, create a 9/9 blue Kraken creature token.\""); super("Whale", "6/6 blue Whale creature token with \"When this creature dies, create a 9/9 blue Kraken creature token.\"");
setOriginalExpansionSetCode("C14");
cardType.add(CardType.CREATURE); cardType.add(CardType.CREATURE);
color.setBlue(true); color.setBlue(true);
subtype.add(SubType.WHALE); subtype.add(SubType.WHALE);
power = new MageInt(6); power = new MageInt(6);
toughness = new MageInt(6); toughness = new MageInt(6);
addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ReefWormKrakenToken()))); addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new Kraken99Token())));
availableImageSetCodes.addAll(Arrays.asList("C14", "C21"));
} }
public ReefWormWhaleToken(final ReefWormWhaleToken token) { public ReefWormWhaleToken(final ReefWormWhaleToken token) {

View file

@ -1,35 +0,0 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
/**
*
* @author spjspj
*/
public final class ReignOfThePitToken extends TokenImpl {
public ReignOfThePitToken() {
this(1);
}
public ReignOfThePitToken(int xValue) {
super("Demon", "X/X black Demon creature token with flying");
power = new MageInt(xValue);
toughness = new MageInt(xValue);
color.setBlack(true);
subtype.add(SubType.DEMON);
cardType.add(CardType.CREATURE);
this.addAbility(FlyingAbility.getInstance());
}
public ReignOfThePitToken(final ReignOfThePitToken token) {
super(token);
}
public ReignOfThePitToken copy() {
return new ReignOfThePitToken(this);
}
}

View file

@ -45,7 +45,8 @@ public final class SaprolingToken extends TokenImpl {
"M21", "M21",
"ZNC", "ZNC",
"CMR", "CMR",
"TSR" "TSR",
"C21"
)); ));
} }

View file

@ -23,7 +23,7 @@ public final class ThopterColorlessToken extends TokenImpl {
addAbility(FlyingAbility.getInstance()); addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("C18", "EXO", "KLD", "MBS", "ORI", "VMA", "M19", "ZNC", "KHC"); availableImageSetCodes = Arrays.asList("C18", "EXO", "KLD", "MBS", "ORI", "VMA", "M19", "ZNC", "KHC", "C21");
} }
@Override @Override

View file

@ -22,7 +22,7 @@ public final class WhiteBlackSpiritToken extends TokenImpl {
toughness = new MageInt(1); toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance()); this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("MH1")); availableImageSetCodes.addAll(Arrays.asList("MH1", "C21"));
} }
public WhiteBlackSpiritToken(final WhiteBlackSpiritToken token) { public WhiteBlackSpiritToken(final WhiteBlackSpiritToken token) {

View file

@ -19,7 +19,7 @@ public final class WurmToken extends TokenImpl {
power = new MageInt(6); power = new MageInt(6);
toughness = new MageInt(6); toughness = new MageInt(6);
availableImageSetCodes = Arrays.asList("C19", "EMA", "GPT", "JUD", "M12", "M13", "MM3", "ODY", "VMA"); availableImageSetCodes = Arrays.asList("C19", "EMA", "GPT", "JUD", "M12", "M13", "MM3", "ODY", "VMA", "C21");
} }
@Override @Override

View file

@ -25,7 +25,7 @@ public final class ZombieToken extends TokenImpl {
"CNS", "MMA", "BNG", "KTK", "DTK", "ORI", "OGW", "CNS", "MMA", "BNG", "KTK", "DTK", "ORI", "OGW",
"SOI", "EMN", "EMA", "MM3", "AKH", "CMA", "E01", "SOI", "EMN", "EMA", "MM3", "AKH", "CMA", "E01",
"RNA", "WAR", "MH1", "M20", "C19", "THB", "M21", "RNA", "WAR", "MH1", "M20", "C19", "THB", "M21",
"CMR"); "CMR", "C21");
} }
@Override @Override