* 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
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");
// 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/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 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");
@ -547,6 +550,37 @@ 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");
// 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
supportedSets.clear();
for (String cardName : this.keySet()) {

View file

@ -266,7 +266,7 @@
|Generate|TOK:BNG|Centaur|||CentaurEnchantmentCreatureToken|
|Generate|TOK:BNG|Elemental|||SatyrNyxSmithElementalToken|
|Generate|TOK:BNG|Gold||
|Generate|TOK:BNG|Kraken|||ReefWormKrakenToken|
|Generate|TOK:BNG|Kraken|||Kraken99Token|
|Generate|TOK:BNG|Soldier|||GodFavoredGeneralSoldierToken|
|Generate|TOK:BNG|Wolf|||WolfToken|
|Generate|TOK:BNG|Zombie|||ForlornPseudammaZombieToken|
@ -303,7 +303,7 @@
|Generate|TOK:C14|Beast|2||BeastToken2|
|Generate|TOK:C14|Cat|||CatToken|
|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|Elephant|||ElephantToken|
|Generate|TOK:C14|Elf Druid|||ElfDruidToken|
@ -317,7 +317,7 @@
|Generate|TOK:C14|Goblin|||GoblinToken|
|Generate|TOK:C14|Horror|||SpoilsOfBloodHorrorToken|
|Generate|TOK:C14|Kor Soldier|||KorSoldierToken|
|Generate|TOK:C14|Kraken|||ReefWormKrakenToken|
|Generate|TOK:C14|Kraken|||Kraken99Token|
|Generate|TOK:C14|Myr|||MyrToken|
|Generate|TOK:C14|Pegasus|||PegasusToken|
|Generate|TOK:C14|Pentavite|||PentaviteToken|
@ -338,8 +338,8 @@
|Generate|TOK:C15|Dragon|||DragonToken2|
|Generate|TOK:C15|Drake|||DrakeToken|
|Generate|TOK:C15|Elemental Shaman|||ElementalShamanToken|
|Generate|TOK:C15|Elemental|||CallTheSkyBreakerElementalToken|
|Generate|TOK:C15|Elemental|||LightningRagerToken|
|Generate|TOK:C15|Elemental|1||CallTheSkyBreakerElementalToken|
|Generate|TOK:C15|Elemental|2||LightningRagerToken|
|Generate|TOK:C15|Elephant|||ElephantToken|
|Generate|TOK:C15|Frog Lizard|||RapidHybridizationToken|
|Generate|TOK:C15|Germ|||GermToken|
@ -554,7 +554,7 @@
|Generate|TOK:DDM|Assassin|||AssassinToken|
|Generate|TOK:DDM|Illusion|||IllusionToken|
|Generate|TOK:DDN|Goblin|||GoblinToken|
|Generate|TOK:DDO|Kraken|||ReefWormKrakenToken|
|Generate|TOK:DDO|Kraken|||Kraken99Token|
|Generate|TOK:DDO|Soldier|||SoldierToken|
|Generate|TOK:DDP|Eldrazi Spawn|1||EldraziSpawnToken|
|Generate|TOK:DDP|Eldrazi Spawn|2||EldraziSpawnToken|
@ -753,7 +753,9 @@
|Generate|TOK:JUD|Wurm|||WurmToken|
|Generate|TOK:KLD|Beast|||ArchitectOfTheUntamedBeastToken|
|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|2||ServoToken|
|Generate|TOK:KLD|Servo|3||ServoToken|
@ -1363,7 +1365,7 @@
|Generate|TOK:C20|Goblin Warrior|||GoblinWarriorToken|
|Generate|TOK:C20|Human|||HumanToken|
|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|Saproling|||SaprolingToken|
|Generate|TOK:C20|Snake|||SnakeToken|
@ -1495,4 +1497,39 @@
|Generate|TOK:TSR|Metallic Sliver|||MetallicSliverToken|
|Generate|TOK:TSR|Saproling|||SaprolingToken|
|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;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.TapSourceCost;
import mage.abilities.costs.mana.ManaCostsImpl;
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.Outcome;
import mage.constants.Zone;
@ -15,8 +16,9 @@ import mage.game.Game;
import mage.game.permanent.token.SaprolingToken;
import mage.players.Player;
import java.util.UUID;
/**
*
* @author North
*/
public final class DruidicSatchel extends CardImpl {
@ -24,6 +26,7 @@ public final class DruidicSatchel extends CardImpl {
public DruidicSatchel(UUID ownerId, CardSetInfo setInfo) {
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.addCost(new TapSourceCost());
this.addAbility(ability);

View file

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

View file

@ -1,7 +1,5 @@
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
@ -11,10 +9,11 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.game.permanent.token.HornetQueenInsectToken;
import mage.game.permanent.token.InsectDeathToken;
import java.util.UUID;
/**
*
* @author LevelX2
*/
public final class HornetQueen extends CardImpl {
@ -31,7 +30,7 @@ public final class HornetQueen extends CardImpl {
// Deathtouch
this.addAbility(DeathtouchAbility.getInstance());
// 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) {

View file

@ -1,7 +1,5 @@
package mage.cards.h;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -15,6 +13,8 @@ import mage.game.permanent.token.HorrorToken;
import mage.target.Target;
import mage.target.common.TargetOpponent;
import java.util.UUID;
/**
* @author Loki
*/
@ -23,11 +23,12 @@ public final class HuntedLammasu extends CardImpl {
public HuntedLammasu(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}");
this.subtype.add(SubType.LAMMASU);
this.power = new MageInt(5);
this.toughness = new MageInt(5);
// Flying
this.addAbility(FlyingAbility.getInstance());
// 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);
Target target = new TargetOpponent();

View file

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

View file

@ -1,10 +1,5 @@
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.abilities.Ability;
import mage.abilities.TriggeredAbilityImpl;
@ -14,11 +9,7 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.Outcome;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.constants.*;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.filter.predicate.permanent.TappedPredicate;
import mage.game.Game;
@ -29,8 +20,12 @@ import mage.players.Player;
import mage.target.TargetPermanent;
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
*/
public final class MyrBattlesphere extends CardImpl {

View file

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

View file

@ -1,9 +1,5 @@
package mage.cards.r;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.effects.OneShotEffect;
import mage.abilities.effects.common.CreateTokenEffect;
@ -14,12 +10,15 @@ import mage.constants.Outcome;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.game.Game;
import mage.game.permanent.Permanent;
import mage.game.permanent.token.ReignOfThePitToken;
import mage.game.permanent.token.DemonFlyingToken;
import mage.players.Player;
import mage.target.common.TargetControlledCreaturePermanent;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
*
* @author emerald000
*/
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;
}
}

View file

@ -11,7 +11,7 @@ import mage.constants.SubType;
import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.game.permanent.token.KioraKrakenToken;
import mage.game.permanent.token.Kraken99Token;
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.
this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility(
new CreateTokenEffect(new KioraKrakenToken()), filter,
new CreateTokenEffect(new Kraken99Token()), filter,
false, SetTargetPointer.NONE, true
));
}

View file

@ -1,4 +1,3 @@
package mage.cards.t;
import mage.MageInt;
@ -40,8 +39,10 @@ public final class TeysaEnvoyOfGhosts extends CardImpl {
// Vigilance
this.addAbility(VigilanceAbility.getInstance());
// protection from 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.
this.addAbility(new TeysaEnvoyOfGhostsTriggeredAbility());
@ -62,7 +63,6 @@ class TeysaEnvoyOfGhostsTriggeredAbility extends TriggeredAbilityImpl {
public TeysaEnvoyOfGhostsTriggeredAbility() {
super(Zone.BATTLEFIELD, new DestroyTargetEffect());
this.addEffect(new CreateTokenEffect(new WhiteBlackSpiritToken(), 1));
}
public TeysaEnvoyOfGhostsTriggeredAbility(final TeysaEnvoyOfGhostsTriggeredAbility ability) {

View file

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

View file

@ -1,4 +1,3 @@
package mage.game.command.emblems;
import mage.abilities.Ability;
@ -7,10 +6,9 @@ import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.TargetController;
import mage.constants.Zone;
import mage.game.command.Emblem;
import mage.game.permanent.token.KioraKrakenToken;
import mage.game.permanent.token.Kraken99Token;
/**
*
* @author spjspj
*/
public final class KioraEmblem extends Emblem {
@ -22,7 +20,7 @@ public final class KioraEmblem extends Emblem {
public KioraEmblem() {
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);
}
}

View file

@ -22,7 +22,7 @@ public final class BeastToken extends TokenImpl {
availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2", "GVL",
"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

View file

@ -20,7 +20,7 @@ public final class BeastToken2 extends TokenImpl {
toughness = new MageInt(4);
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) {
@ -59,5 +59,9 @@ public final class BeastToken2 extends TokenImpl {
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMR")) {
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);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("THS", "KHC");
availableImageSetCodes = Arrays.asList("THS", "KHC", "C21");
}
public Boar2Token(final Boar2Token token) {

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author spjspj
*/
@ -18,7 +20,10 @@ public final class CallTheSkyBreakerElementalToken extends TokenImpl {
subtype.add(SubType.ELEMENTAL);
power = new MageInt(5);
toughness = new MageInt(5);
this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("C15", "CMD", "EMA", "EVE", "C21");
}
@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());
availableImageSetCodes = Arrays.asList("AKH", "C15", "C19", "M13", "C20", "ZNR");
availableImageSetCodes = Arrays.asList("AKH", "C15", "C19", "M13", "C20", "ZNR", "C21");
}
public DrakeToken(final DrakeToken token) {

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

View file

@ -20,7 +20,7 @@ public final class ElephantToken extends TokenImpl {
toughness = new MageInt(3);
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) {

View file

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

View file

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

View file

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

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -17,7 +19,10 @@ public final class GolemFlyingToken extends TokenImpl {
subtype.add(SubType.GOLEM);
power = new MageInt(3);
toughness = new MageInt(3);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("C21");
}
private GolemFlyingToken(final GolemFlyingToken token) {
@ -27,4 +32,13 @@ public final class GolemFlyingToken extends TokenImpl {
public GolemFlyingToken copy() {
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.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -17,7 +19,10 @@ public final class GolemTrampleToken extends TokenImpl {
subtype.add(SubType.GOLEM);
power = new MageInt(3);
toughness = new MageInt(3);
addAbility(TrampleAbility.getInstance());
availableImageSetCodes = Arrays.asList("C21");
}
private GolemTrampleToken(final GolemTrampleToken token) {
@ -27,4 +32,13 @@ public final class GolemTrampleToken extends TokenImpl {
public GolemTrampleToken copy() {
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.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -17,7 +19,10 @@ public final class GolemVigilanceToken extends TokenImpl {
subtype.add(SubType.GOLEM);
power = new MageInt(3);
toughness = new MageInt(3);
addAbility(VigilanceAbility.getInstance());
availableImageSetCodes = Arrays.asList("C21");
}
private GolemVigilanceToken(final GolemVigilanceToken token) {
@ -27,4 +32,13 @@ public final class GolemVigilanceToken extends TokenImpl {
public GolemVigilanceToken copy() {
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;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class HorrorToken extends TokenImpl {
@ -18,6 +18,8 @@ public final class HorrorToken extends TokenImpl {
subtype.add(SubType.HORROR);
power = new MageInt(4);
toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("RAV", "C21");
}
public HorrorToken(final HorrorToken token) {

View file

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

View file

@ -11,9 +11,9 @@ import java.util.Arrays;
/**
* @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");
cardType.add(CardType.CREATURE);
color.setGreen(true);
@ -23,14 +23,14 @@ public final class HornetQueenInsectToken extends TokenImpl {
addAbility(FlyingAbility.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);
}
public HornetQueenInsectToken copy() {
return new HornetQueenInsectToken(this);
public InsectDeathToken copy() {
return new InsectDeathToken(this);
}
}

View file

@ -8,25 +8,17 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.util.RandomUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author spjspj
*/
public final class KarnConstructToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("DOM", "MH1"));
}
public KarnConstructToken() {
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.CREATURE);
subtype.add(SubType.CONSTRUCT);
@ -37,6 +29,8 @@ public final class KarnConstructToken extends TokenImpl {
new BoostSourceEffect(ArtifactYouControlCount.instance, ArtifactYouControlCount.instance, Duration.WhileOnBattlefield)
.setText("This creature gets +1/+1 for each artifact you control")
));
availableImageSetCodes = Arrays.asList("DOM", "MH1", "C21");
}
public KarnConstructToken(final KarnConstructToken token) {
@ -46,4 +40,13 @@ public final class KarnConstructToken extends TokenImpl {
public KarnConstructToken copy() {
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;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/**
*
* @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");
setOriginalExpansionSetCode("C14");
cardType.add(CardType.CREATURE);
color.setBlue(true);
subtype.add(SubType.KRAKEN);
power = 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);
}
public ReefWormKrakenToken copy() {
return new ReefWormKrakenToken(this);
public Kraken99Token copy() {
return new Kraken99Token(this);
}
}

View file

@ -1,17 +1,17 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.common.BeginningOfEndStepTriggeredAbility;
import mage.abilities.effects.common.SacrificeSourceEffect;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.TrampleAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.TargetController;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class LightningRagerToken extends TokenImpl {
@ -19,15 +19,17 @@ public final class LightningRagerToken extends TokenImpl {
public LightningRagerToken() {
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.\"");
this.setOriginalExpansionSetCode("C15");
cardType.add(CardType.CREATURE);
color.setRed(true);
subtype.add(SubType.ELEMENTAL);
power = new MageInt(5);
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));
availableImageSetCodes = Arrays.asList("C15");
}
public LightningRagerToken(final LightningRagerToken token) {
@ -37,4 +39,14 @@ public final class LightningRagerToken extends TokenImpl {
public LightningRagerToken copy() {
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;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.util.RandomUtil;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class MetallurgicSummoningsConstructToken extends TokenImpl {
public MetallurgicSummoningsConstructToken() {
this (1);
this(1);
}
public MetallurgicSummoningsConstructToken(int xValue) {
super("Construct", "X/X colorless Construct artifact creature token");
setOriginalExpansionSetCode("KLD");
setTokenType(RandomUtil.nextInt(2) + 1);
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.CONSTRUCT);
power = new MageInt(xValue);
toughness = new MageInt(xValue);
availableImageSetCodes = Arrays.asList("KLD", "C21");
}
public MetallurgicSummoningsConstructToken(final MetallurgicSummoningsConstructToken token) {
super(token);
}
@ -32,4 +34,13 @@ public final class MetallurgicSummoningsConstructToken extends TokenImpl {
public MetallurgicSummoningsConstructToken copy() {
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.SubType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
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() {
this((String) null);
}
public MyrToken(String expansionSetCode) {
super("Myr", "1/1 colorless Myr artifact creature token");
this.setOriginalExpansionSetCode(expansionSetCode);
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.MYR);
power = 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) {

View file

@ -1,14 +1,13 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.filter.common.FilterControlledCreaturePermanent;
import mage.util.RandomUtil;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class OviyaPashiriSageLifecrafterToken extends TokenImpl {
@ -24,10 +23,10 @@ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl {
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.CONSTRUCT);
setOriginalExpansionSetCode("KLD");
setTokenType(RandomUtil.nextInt(2) + 1);
power = new MageInt(number);
toughness = new MageInt(number);
availableImageSetCodes = Arrays.asList("KLD");
}
public OviyaPashiriSageLifecrafterToken(final OviyaPashiriSageLifecrafterToken token) {
@ -37,4 +36,13 @@ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl {
public OviyaPashiriSageLifecrafterToken copy() {
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.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -17,6 +19,8 @@ public final class PhyrexianBeastToken extends TokenImpl {
subtype.add(SubType.BEAST);
power = new MageInt(4);
toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("C21");
}
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;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class ReefWormFishToken extends TokenImpl {
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.\"\"");
setOriginalExpansionSetCode("C14");
cardType.add(CardType.CREATURE);
color.setBlue(true);
subtype.add(SubType.FISH);
@ -23,6 +22,8 @@ public final class ReefWormFishToken extends TokenImpl {
toughness = new MageInt(3);
addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ReefWormWhaleToken())));
availableImageSetCodes = Arrays.asList("C14", "C21");
}
public ReefWormFishToken(final ReefWormFishToken token) {

View file

@ -1,28 +1,29 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.common.DiesSourceTriggeredAbility;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class ReefWormWhaleToken extends TokenImpl {
public ReefWormWhaleToken() {
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);
color.setBlue(true);
subtype.add(SubType.WHALE);
power = 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) {

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",
"ZNC",
"CMR",
"TSR"
"TSR",
"C21"
));
}

View file

@ -23,7 +23,7 @@ public final class ThopterColorlessToken extends TokenImpl {
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

View file

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

View file

@ -19,7 +19,7 @@ public final class WurmToken extends TokenImpl {
power = 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

View file

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