[MID] added tokens and images support

This commit is contained in:
Oleg Agafonov 2022-02-05 12:22:39 +04:00
parent 9015b156e5
commit 54a1efec63
24 changed files with 141 additions and 86 deletions

View file

@ -663,6 +663,27 @@ public class ScryfallImageSupportTokens {
put("MIC/Zombie/1", "https://api.scryfall.com/cards/tmic/5/en?format=image"); // 2/2
put("MIC/Zombie/2", "https://api.scryfall.com/cards/tmic/4/en?format=image"); // */*
// MID
put("MID/Bat", "https://api.scryfall.com/cards/tmid/4/en?format=image");
put("MID/Beast", "https://api.scryfall.com/cards/tmid/8/en?format=image");
put("MID/Bird", "https://api.scryfall.com/cards/tmid/3/en?format=image");
put("MID/Clue", "https://api.scryfall.com/cards/tmid/16/en?format=image");
put("MID/Devil", "https://api.scryfall.com/cards/tmid/6/en?format=image");
put("MID/Elemental", "https://api.scryfall.com/cards/tmid/7/en?format=image");
put("MID/Human", "https://api.scryfall.com/cards/tmid/1/en?format=image");
put("MID/Insect", "https://api.scryfall.com/cards/tmid/9/en?format=image");
put("MID/Ooze", "https://api.scryfall.com/cards/tmid/10/en?format=image");
put("MID/Spider", "https://api.scryfall.com/cards/tmid/11/en?format=image");
put("MID/Spirit", "https://api.scryfall.com/cards/tmid/2/en?format=image");
put("MID/Emblem Teferi, Who Slows the Sunset", "https://api.scryfall.com/cards/tmid/17/en?format=image");
put("MID/Treefolk", "https://api.scryfall.com/cards/tmid/12/en?format=image");
put("MID/Vampire", "https://api.scryfall.com/cards/tmid/14/en?format=image");
put("MID/Wolf", "https://api.scryfall.com/cards/tmid/13/en?format=image");
put("MID/Emblem Wrenn and Seven", "https://api.scryfall.com/cards/tmid/18/en?format=image");
put("MID/Zombie/1", "https://api.scryfall.com/cards/tmid/5/en?format=image"); // decayed
put("MID/Zombie/2", "https://api.scryfall.com/cards/tmid/15/en?format=image"); // menace
// generate supported sets
supportedSets.clear();
for (String cardName : this.keySet()) {

View file

@ -112,6 +112,8 @@
|Generate|EMBLEM:AFR|Lolth, Spider Queen||Emblem Lolth|LolthSpiderQueenEmblem|
|Generate|EMBLEM:AFR|Mordenkainen||Emblem Mordenkainen|MordenkainenEmblem|
|Generate|EMBLEM:AFR|Zariel, Archduke of Avernus||Emblem Zariel|ZarielArchdukeOfAvernusEmblem|
|Generate|EMBLEM:MID|Teferi, Who Slows the Sunset||Emblem Teferi|TeferiWhoSlowsTheSunsetEmblem|
|Generate|EMBLEM:MID|Wrenn and Seven||Emblem Wrenn|WrennAndSevenEmblem|
# Planes
|Generate|PLANE:PCA|Plane - Academy at Tolaria West|||AcademyAtTolariaWestPlane|
@ -1615,4 +1617,22 @@
|Generate|TOK:MIC|Snake|||SnakeToken|
|Generate|TOK:MIC|Zombie|1||ZombieToken|
|Generate|TOK:MIC|Zombie|2||StitcherGeralfZombieToken|
|Generate|TOK:MIC|Zombie Army|||ZombieArmyToken|
|Generate|TOK:MIC|Zombie Army|||ZombieArmyToken|
# MID
|Generate|TOK:MID|Bat|||BatToken|
|Generate|TOK:MID|Beast|||BeastToken2|
|Generate|TOK:MID|Bird|||OminousRoostBirdToken|
|Generate|TOK:MID|Clue|||ClueArtifactToken|
|Generate|TOK:MID|Devil|||DevilToken|
|Generate|TOK:MID|Elemental|||SeizeTheStormElementalToken|
|Generate|TOK:MID|Human|||HumanToken|
|Generate|TOK:MID|Insect|||RiseOfTheAntsInsectToken|
|Generate|TOK:MID|Ooze|||ConsumingBlobOozeToken|
|Generate|TOK:MID|Spider|||SpiderToken|
|Generate|TOK:MID|Spirit|||SpiritWhiteToken|
|Generate|TOK:MID|Treefolk|||WrennAndSevenTreefolkToken|
|Generate|TOK:MID|Vampire|||HungryForMoreVampireToken|
|Generate|TOK:MID|Wolf|||WolfToken|
|Generate|TOK:MID|Zombie|1||ZombieDecayedToken|
|Generate|TOK:MID|Zombie|2||ZombieMenaceToken|

View file

@ -13,7 +13,7 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.*;
import mage.game.Game;
import mage.game.permanent.token.ConsumingBlobToken;
import mage.game.permanent.token.ConsumingBlobOozeToken;
import java.util.UUID;
@ -34,7 +34,7 @@ public final class ConsumingBlob extends CardImpl {
// At the beginning of your end step, create a green Ooze creature token with "This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1".
this.addAbility(new BeginningOfEndStepTriggeredAbility(
new CreateTokenEffect(new ConsumingBlobToken()), TargetController.YOU, false)
new CreateTokenEffect(new ConsumingBlobOozeToken()), TargetController.YOU, false)
);
}

View file

@ -10,9 +10,8 @@ import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Outcome;
import mage.constants.TimingRule;
import mage.game.Game;
import mage.game.permanent.token.HungryForMoreToken;
import mage.game.permanent.token.HungryForMoreVampireToken;
import mage.game.permanent.token.Token;
import mage.target.targetpointer.FixedTargets;
@ -63,7 +62,7 @@ class HungryForMoreEffect extends OneShotEffect {
@Override
public boolean apply(Game game, Ability source) {
Token token = new HungryForMoreToken();
Token token = new HungryForMoreVampireToken();
token.putOntoBattlefield(1, game, source, source.getControllerId());
game.addDelayedTriggeredAbility(new AtTheBeginOfNextEndStepDelayedTriggeredAbility(
new SacrificeTargetEffect().setTargetPointer(new FixedTargets(

View file

@ -2,16 +2,13 @@ package mage.cards.o;
import mage.abilities.TriggeredAbilityImpl;
import mage.abilities.effects.common.CreateTokenEffect;
import mage.abilities.effects.common.ReturnToHandTargetEffect;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.constants.Zone;
import mage.game.Game;
import mage.game.events.GameEvent;
import mage.game.permanent.token.OminousRoostToken;
import mage.game.stack.Spell;
import mage.target.common.TargetNonlandPermanent;
import mage.game.permanent.token.OminousRoostBirdToken;
import java.util.UUID;
@ -40,7 +37,7 @@ public final class OminousRoost extends CardImpl {
class OminousRoostTriggeredAbility extends TriggeredAbilityImpl {
OminousRoostTriggeredAbility() {
super(Zone.ALL, new CreateTokenEffect(new OminousRoostToken()));
super(Zone.ALL, new CreateTokenEffect(new OminousRoostBirdToken()));
}
private OminousRoostTriggeredAbility(final OminousRoostTriggeredAbility ability) {

View file

@ -7,7 +7,7 @@ import mage.abilities.keyword.FlashbackAbility;
import mage.cards.CardImpl;
import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.game.permanent.token.RiseOfTheAntsToken;
import mage.game.permanent.token.RiseOfTheAntsInsectToken;
import java.util.UUID;
@ -20,7 +20,7 @@ public final class RiseOfTheAnts extends CardImpl {
super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{4}{G}{G}");
// Create two 3/3 green Insect creature tokens. You gain 2 life.
this.getSpellAbility().addEffect(new CreateTokenEffect(new RiseOfTheAntsToken(), 2));
this.getSpellAbility().addEffect(new CreateTokenEffect(new RiseOfTheAntsInsectToken(), 2));
this.getSpellAbility().addEffect(new GainLifeEffect(2).concatBy("."));
// Flashback {6}{G}{G}

View file

@ -13,7 +13,7 @@ import mage.cards.CardSetInfo;
import mage.constants.CardType;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.permanent.token.SeizeTheStormToken;
import mage.game.permanent.token.SeizeTheStormElementalToken;
import mage.players.Player;
import java.util.UUID;
@ -32,7 +32,7 @@ public final class SeizeTheStorm extends CardImpl {
// Create a red Elemental creature token with trample and "This creature's power and toughness are each equal to the number of instant and sorcery cards in your graveyard, plus the number of cards with flashback you own in exile."
this.getSpellAbility().addEffect(new CreateTokenEffect(
new SeizeTheStormToken(SeizeTheStormValue.instance, hint)
new SeizeTheStormElementalToken(SeizeTheStormValue.instance, hint)
));
this.getSpellAbility().addHint(hint);

View file

@ -14,7 +14,7 @@ import mage.constants.*;
import mage.filter.StaticFilters;
import mage.game.Game;
import mage.game.command.emblems.WrennAndSevenEmblem;
import mage.game.permanent.token.WrennAndSevenToken;
import mage.game.permanent.token.WrennAndSevenTreefolkToken;
import mage.players.Player;
import mage.target.common.TargetCardInHand;
@ -41,7 +41,7 @@ public final class WrennAndSeven extends CardImpl {
this.addAbility(new LoyaltyAbility(new WrennAndSevenLandEffect(), 0));
// 3: Create a green Treefolk creature token with reach and "This creature's power and toughness are each equal to the number of lands you control."
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new WrennAndSevenToken()), -3));
this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new WrennAndSevenTreefolkToken()), -3));
// 8: Return all permanent cards from your graveyard to your hand. You get an emblem with "You have no maximum hand size."
Ability ability = new LoyaltyAbility(new WrennAndSevenReturnEffect(), -8);

View file

@ -1,24 +1,16 @@
package mage.game.permanent.token;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
public final class BatToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
import java.util.Arrays;
static {
tokenImageSets.addAll(Arrays.asList("MMA", "C17"));
}
public final class BatToken extends TokenImpl {
public BatToken() {
super("Bat", "1/1 black Bat creature token with flying");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.CREATURE);
color.setBlack(true);
subtype.add(SubType.BAT);
@ -26,8 +18,9 @@ public final class BatToken extends TokenImpl {
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
this.setOriginalExpansionSetCode("MMA");
availableImageSetCodes = Arrays.asList("GVL", "DDD", "GPT", "MMA", "M19", "MID");
}
public BatToken(final BatToken token) {
super(token);
}

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", "C21", "MH2");
"E01", "ODY", "SCG", "ZEN", "C20", "ZNC", "CMR", "C21", "MH2", "MID");
}
public BeastToken2(final BeastToken2 token) {

View file

@ -29,7 +29,7 @@ public final class ClueArtifactToken extends TokenImpl {
ability.addCost(cost);
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("C18", "SOI", "MH2", "AFC");
availableImageSetCodes = Arrays.asList("C18", "SOI", "MH2", "AFC", "MID");
}
@Override

View file

@ -10,14 +10,15 @@ import mage.abilities.hint.common.CardTypesInGraveyardHint;
import mage.constants.*;
import mage.game.Game;
import java.util.Arrays;
/**
* @author ciaccona007
*/
public final class ConsumingBlobToken extends TokenImpl {
public final class ConsumingBlobOozeToken extends TokenImpl {
public ConsumingBlobToken() {
public ConsumingBlobOozeToken() {
super("Ooze", "green Ooze creature token with \"This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.\"");
setOriginalExpansionSetCode("MID");
cardType.add(CardType.CREATURE);
subtype.add(SubType.OOZE);
color.setGreen(true);
@ -28,15 +29,16 @@ public final class ConsumingBlobToken extends TokenImpl {
// This creature's power is equal to the number of card types among cards in your graveyard and its toughness is equal to that number plus 1.
this.addAbility(new SimpleStaticAbility(Zone.ALL, new ConsumingBlobTokenEffect()).addHint(CardTypesInGraveyardHint.YOU));
availableImageSetCodes.addAll(Arrays.asList("MID"));
}
private ConsumingBlobToken(final ConsumingBlobToken token) {
private ConsumingBlobOozeToken(final ConsumingBlobOozeToken token) {
super(token);
}
@Override
public ConsumingBlobToken copy() {
return new ConsumingBlobToken(this);
public ConsumingBlobOozeToken copy() {
return new ConsumingBlobOozeToken(this);
}
}

View file

@ -21,8 +21,6 @@ public final class DevilToken extends TokenImpl {
public DevilToken() {
super("Devil", "1/1 red Devil creature token with \"When this creature dies, it deals 1 damage to any target.\"");
availableImageSetCodes.addAll(Collections.singletonList("SOI"));
availableImageSetCodes.addAll(Collections.singletonList("WAR"));
cardType.add(CardType.CREATURE);
subtype.add(SubType.DEVIL);
color.setRed(true);
@ -36,7 +34,7 @@ public final class DevilToken extends TokenImpl {
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("SOI", "WAR", "AFR");
availableImageSetCodes = Arrays.asList("SOI", "WAR", "AFR", "MID");
}
public DevilToken(final DevilToken token) {

View file

@ -18,7 +18,8 @@ public final class HumanToken extends TokenImpl {
subtype.add(SubType.HUMAN);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes.addAll(Arrays.asList("DKA", "AVR", "FNMP", "RNA", "ELD", "C19", "C20"));
availableImageSetCodes.addAll(Arrays.asList("DKA", "AVR", "FNMP", "RNA", "ELD", "C19", "C20", "MID"));
}
public HumanToken(final HumanToken token) {

View file

@ -7,12 +7,14 @@ import mage.abilities.keyword.TrampleAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
public final class HungryForMoreToken extends TokenImpl {
public final class HungryForMoreVampireToken extends TokenImpl {
public HungryForMoreToken() {
public HungryForMoreVampireToken() {
super("Vampire", "3/1 black and red Vampire creature token with trample, lifelink, and haste");
cardType.add(CardType.CREATURE);
color.setRed(true);
@ -23,13 +25,15 @@ public final class HungryForMoreToken extends TokenImpl {
addAbility(TrampleAbility.getInstance());
addAbility(LifelinkAbility.getInstance());
addAbility(HasteAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("MID"));
}
public HungryForMoreToken(final HungryForMoreToken token) {
public HungryForMoreVampireToken(final HungryForMoreVampireToken token) {
super(token);
}
public HungryForMoreToken copy() {
return new HungryForMoreToken(this);
public HungryForMoreVampireToken copy() {
return new HungryForMoreVampireToken(this);
}
}

View file

@ -6,9 +6,11 @@ import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
public class OminousRoostToken extends TokenImpl {
import java.util.Arrays;
public OminousRoostToken() {
public class OminousRoostBirdToken extends TokenImpl {
public OminousRoostBirdToken() {
super("Bird", "1/1 blue Bird creature token with flying and \"This creature can block only creatures with flying\"");
cardType.add(CardType.CREATURE);
color.setBlue(true);
@ -18,14 +20,16 @@ public class OminousRoostToken extends TokenImpl {
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new CanBlockOnlyFlyingAbility());
availableImageSetCodes = Arrays.asList("MID");
}
public OminousRoostToken(final OminousRoostToken token) {
public OminousRoostBirdToken(final OminousRoostBirdToken token) {
super(token);
}
@Override
public Token copy() {
return new OminousRoostToken(this);
return new OminousRoostBirdToken(this);
}
}

View file

@ -4,25 +4,29 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
public final class RiseOfTheAntsToken extends TokenImpl {
public final class RiseOfTheAntsInsectToken extends TokenImpl {
public RiseOfTheAntsToken() {
public RiseOfTheAntsInsectToken() {
super("Insect", "3/3 green Insect creature token");
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.INSECT);
power = new MageInt(3);
toughness = new MageInt(3);
availableImageSetCodes.addAll(Arrays.asList("MID"));
}
public RiseOfTheAntsToken(final RiseOfTheAntsToken token) {
public RiseOfTheAntsInsectToken(final RiseOfTheAntsInsectToken token) {
super(token);
}
public RiseOfTheAntsToken copy() {
return new RiseOfTheAntsToken(this);
public RiseOfTheAntsInsectToken copy() {
return new RiseOfTheAntsInsectToken(this);
}
}

View file

@ -10,12 +10,14 @@ import mage.constants.CardType;
import mage.constants.Duration;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
public final class SeizeTheStormToken extends TokenImpl {
public final class SeizeTheStormElementalToken extends TokenImpl {
public SeizeTheStormToken(DynamicValue xValue, Hint hint) {
public SeizeTheStormElementalToken(DynamicValue xValue, Hint hint) {
super("Elemental", "red Elemental creature token with trample and " +
"\"This creature's power and toughness are each equal to the number of instant " +
"and sorcery cards in your graveyard plus the number of cards with flashback you own in exile.\"");
@ -30,14 +32,16 @@ public final class SeizeTheStormToken extends TokenImpl {
).setText("this creature's power and toughness are each equal to the number of " +
"instant and sorcery cards in your graveyard, plus the number of cards with flashback you own in exile")
).addHint(hint));
availableImageSetCodes = Arrays.asList("MID");
}
private SeizeTheStormToken(final SeizeTheStormToken token) {
private SeizeTheStormElementalToken(final SeizeTheStormElementalToken token) {
super(token);
}
@Override
public SeizeTheStormToken copy() {
return new SeizeTheStormToken(this);
public SeizeTheStormElementalToken copy() {
return new SeizeTheStormElementalToken(this);
}
}

View file

@ -5,39 +5,24 @@ import mage.abilities.keyword.ReachAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author fireshoes
*/
public final class SpiderToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("ISD", "EMN", "C15", "SHM", "MH1", "THB"));
}
public SpiderToken() {
this(null, 0);
}
public SpiderToken(String setCode) {
this(setCode, 0);
}
public SpiderToken(String setCode, int tokenType) {
super("Spider", "1/2 green Spider creature token with reach");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.SPIDER);
power = new MageInt(1);
toughness = new MageInt(2);
addAbility(ReachAbility.getInstance());
this.addAbility(ReachAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("C15", "EMN", "ISD", "SHM", "MH1", "THB", "MID"));
}
public SpiderToken(final SpiderToken token) {

View file

@ -23,7 +23,7 @@ public final class SpiritWhiteToken extends TokenImpl {
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("AVR", "C14", "CNS", "DDC", "DDK", "FRF", "ISD", "KTK", "M15", "MM2", "SHM",
"SOI", "EMA", "C16", "MM3", "CMA", "E01", "ANA", "GPT", "RAV", "EMN", "RNA", "M20", "C20", "CMR", "KHM");
"SOI", "EMA", "C16", "MM3", "CMA", "E01", "ANA", "GPT", "RAV", "EMN", "RNA", "M20", "C20", "CMR", "KHM", "MID");
}
@Override

View file

@ -23,7 +23,7 @@ public final class WolfToken extends TokenImpl {
availableImageSetCodes = Arrays.asList("BNG", "C14", "C15", "CMA", "CMD", "CNS", "DKA", "EVE", "ISD",
"LRW", "M10", "M14", "MM2", "MOR", "SHM", "SOI", "SOM", "V10", "WWK", "ZEN", "WAR", "M20",
"THB", "AFR");
"THB", "AFR", "MID");
}
@Override

View file

@ -10,12 +10,14 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.Arrays;
/**
* @author TheElk801
*/
public final class WrennAndSevenToken extends TokenImpl {
public final class WrennAndSevenTreefolkToken extends TokenImpl {
public WrennAndSevenToken() {
public WrennAndSevenTreefolkToken() {
super("Treefolk", "green Treefolk creature token with reach and \"This creature's power and toughness are each equal to the number of lands you control.\"");
cardType.add(CardType.CREATURE);
color.setGreen(true);
@ -26,13 +28,15 @@ public final class WrennAndSevenToken extends TokenImpl {
this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(
LandsYouControlCount.instance, Duration.EndOfGame
).setText("this creature's power and toughness are each equal to the number of lands you control")));
availableImageSetCodes.addAll(Arrays.asList("MID"));
}
public WrennAndSevenToken(final WrennAndSevenToken token) {
public WrennAndSevenTreefolkToken(final WrennAndSevenTreefolkToken token) {
super(token);
}
public WrennAndSevenToken copy() {
return new WrennAndSevenToken(this);
public WrennAndSevenTreefolkToken copy() {
return new WrennAndSevenTreefolkToken(this);
}
}

View file

@ -4,6 +4,9 @@ import mage.MageInt;
import mage.abilities.keyword.DecayedAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.util.RandomUtil;
import java.util.Arrays;
/**
* @author TheElk801
@ -18,6 +21,8 @@ public final class ZombieDecayedToken extends TokenImpl {
power = new MageInt(2);
toughness = new MageInt(2);
this.addAbility(new DecayedAbility());
availableImageSetCodes.addAll(Arrays.asList("MID"));
}
public ZombieDecayedToken(final ZombieDecayedToken token) {

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.MenaceAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
public class ZombieMenaceToken extends TokenImpl {
public ZombieMenaceToken(int xValue) {
@ -15,7 +17,19 @@ public class ZombieMenaceToken extends TokenImpl {
subtype.add(SubType.ZOMBIE);
power = new MageInt(xValue);
toughness = new MageInt(xValue);
addAbility(new MenaceAbility());
this.addAbility(new MenaceAbility());
availableImageSetCodes.addAll(Arrays.asList("MID"));
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("MID")) {
this.setTokenType(2);
}
}
private ZombieMenaceToken(final ZombieMenaceToken token) {