Tokens improves:

* [M21] added tokens;
 * [M21] added tokens download support;
 * Fixed wrong images for some tokens (Angel, Beast, Bird, Cat, etc);
This commit is contained in:
Oleg Agafonov 2020-07-09 02:38:37 +04:00
parent 4dc99fbb58
commit 99ceeb5076
26 changed files with 298 additions and 206 deletions

View file

@ -426,6 +426,29 @@ public class ScryfallImageSupportTokens {
put("C20/Treasure", "https://api.scryfall.com/cards/tc20/19/en?format=image");
put("C20/Zombie", "https://api.scryfall.com/cards/tc20/9/en?format=image");
// M21
put("M21/Angel", "https://api.scryfall.com/cards/tm21/1/en?format=image");
put("M21/Emblem Basri Ket", "https://api.scryfall.com/cards/tm21/16/en?format=image");
put("M21/Beast", "https://api.scryfall.com/cards/tm21/10/en?format=image");
put("M21/Bird", "https://api.scryfall.com/cards/tm21/2/en?format=image");
put("M21/Cat/1", "https://api.scryfall.com/cards/tm21/20/en?format=image"); // 1/1
put("M21/Cat/2", "https://api.scryfall.com/cards/tm21/11/en?format=image"); // 2/2
put("M21/Construct", "https://api.scryfall.com/cards/tm21/14/en?format=image");
put("M21/Demon", "https://api.scryfall.com/cards/tm21/6/en?format=image");
put("M21/Dog", "https://api.scryfall.com/cards/tm21/19/en?format=image");
put("M21/Emblem Garruk, Unleashed", "https://api.scryfall.com/cards/tm21/17/en?format=image");
put("M21/Goblin Wizard", "https://api.scryfall.com/cards/tm21/8/en?format=image");
put("M21/Griffin", "https://api.scryfall.com/cards/tm21/3/en?format=image");
put("M21/Knight", "https://api.scryfall.com/cards/tm21/4/en?format=image");
put("M21/Emblem Liliana, Waker of the Dead", "https://api.scryfall.com/cards/tm21/18/en?format=image");
put("M21/Pirate", "https://api.scryfall.com/cards/tm21/9/en?format=image");
put("M21/Saproling", "https://api.scryfall.com/cards/tm21/12/en?format=image");
put("M21/Soldier", "https://api.scryfall.com/cards/tm21/5/en?format=image");
put("M21/Treasure", "https://api.scryfall.com/cards/tm21/15/en?format=image");
put("M21/Weird", "https://api.scryfall.com/cards/tm21/13/en?format=image");
put("M21/Zombie", "https://api.scryfall.com/cards/tm21/7/en?format=image");
// generate supported sets
supportedSets.clear();
for (String cardName : this.keySet()) {

View file

@ -45,6 +45,8 @@
#|Generate|TOK:PTC|Wolf||
#|Generate|TOK:PTC|Wurm||
#|Generate|TOK:WMCQ|Angel||
# Emblems
|Generate|EMBLEM!:BFZ|Emblem Gideon|||GideonAllyOfZendikarEmblem|
|Generate|EMBLEM!:BFZ|Emblem Kiora|||KioraMasterOfTheDepthsEmblem|
|Generate|EMBLEM!:BFZ|Emblem Nixilis|||ObNixilisReignitedEmblem|
@ -102,6 +104,11 @@
|Generate|EMBLEM:AER|Tezzeret the Schemer||Emblem Tezzeret|TezzeretTheSchemerEmblem|
|Generate|EMBLEM:ELD|Garruk, Cursed Huntsman||Emblem Garruk|GarrukCursedHuntsmanEmblem|
|Generate|EMBLEM:IKO|Narset Of The Ancient Way||Emblem Narset|NarsetOfTheAncientWayEmblem|
|Generate|EMBLEM:M21|Basri Ket||Emblem Basri|BasriKetEmblem|
|Generate|EMBLEM:M21|Garruk, Unleashed||Emblem Garruk|GarrukUnleashedEmblem|
|Generate|EMBLEM:M21|Liliana, Waker of the Dead||Emblem Liliana|LilianaWakerOfTheDeadEmblem|
# Planes
|Generate|PLANE:PCA|Plane - Academy at Tolaria West|||AcademyAtTolariaWestPlane|
|Generate|PLANE:PCA|Plane - Agyrem|||AgyremPlane|
|Generate|PLANE:PCA|Plane - Akoum|||AkoumPlane|
@ -237,7 +244,6 @@
|Generate|TOK:ATQ|Assembly-Worker|||AssemblyWorkerToken|
|Generate|TOK:ATQ|Tetravite|||TetraviteToken|
|Generate|TOK:AVR|Angel|||AngelToken|
|Generate|TOK:AVR|Angel|||AngelTombToken|
|Generate|TOK:AVR|Demon|||DemonToken|
|Generate|TOK:AVR|Human|1||HumanToken|
|Generate|TOK:AVR|Human|2||RedHumanToken|
@ -388,7 +394,7 @@
|Generate|TOK:C18|Cat|||CatToken|
|Generate|TOK:C18|Cat Warrior|||CatWarriorToken|
|Generate|TOK:C18|Clue|||ClueArtifactToken|
|Generate|TOK:C18|Construct|1||RetrofitterFoundryToken|
|Generate|TOK:C18|Construct|1||Construct4Token|
|Generate|TOK:C18|Construct|2||StoneTrapIdolToken|
|Generate|TOK:C18|Dragon|||DragonEggDragonToken|
|Generate|TOK:C18|Dragon Egg|||NestingDragonToken|
@ -451,8 +457,8 @@
|Generate|TOK:CMA|Treefolk|||SylvanOfferingTreefolkToken|
|Generate|TOK:CMA|Wolf|||WolfToken|
|Generate|TOK:CMA|Zombie|||ZombieToken|
|Generate|TOK:CMD|Beast|||BeastToken2|
|Generate|TOK:CMD|Beast|||BeastToken|
|Generate|TOK:CMD|Beast|1||BeastToken2|
|Generate|TOK:CMD|Beast|2||BeastToken|
|Generate|TOK:CMD|Dragon|||DragonToken2|
|Generate|TOK:CMD|Eldrazi Spawn|||EldraziSpawnToken|
|Generate|TOK:CMD|Elemental|||CallTheSkyBreakerElementalToken|
@ -517,8 +523,8 @@
|Generate|TOK:DD3EVG|Goblin|||GoblinToken|
|Generate|TOK:DD3GVL|Ape|||PongifyApeToken|
|Generate|TOK:DD3GVL|Bat|||BatToken|
|Generate|TOK:DD3GVL|Beast|||BeastToken2|
|Generate|TOK:DD3GVL|Beast|||BeastToken|
|Generate|TOK:DD3GVL|Beast|1||BeastToken2|
|Generate|TOK:DD3GVL|Beast|2||BeastToken|
|Generate|TOK:DD3GVL|Elephant|||ElephantToken|
|Generate|TOK:DD3JVC|Elemental Shaman|||ElementalShamanToken|
|Generate|TOK:DDC|Demon|||ReignOfThePitToken|
@ -969,8 +975,8 @@
|Generate|TOK:MRD|Spirit|||SpiritWhiteToken|
|Generate|TOK:NEM|Angel|||AngelToken|
|Generate|TOK:NEM|Goblin|||GoblinToken|
|Generate|TOK:NEM|Saproling|||SaprolingBurstToken|
|Generate|TOK:NEM|Saproling|||SaprolingToken|
|Generate|TOK:NEM|Saproling|1||SaprolingBurstToken|
|Generate|TOK:NEM|Saproling|2||SaprolingToken|
|Generate|TOK:NPH|Beast|||BeastToken|
|Generate|TOK:NPH|Germ|||GermToken|
|Generate|TOK:NPH|Goblin|||GoblinTokenWithHaste|
@ -1007,7 +1013,6 @@
|Generate|TOK:ONS|Soldier|||SoldierToken|
|Generate|TOK:ONS|Zombie|||ZombieToken|
|Generate|TOK:ORI|Angel|||AngelToken|
|Generate|TOK:ORI|Angel|||AngelTombToken|
|Generate|TOK:ORI|Ashaya, the Awoken World|||NissaSageAnimistToken|
|Generate|TOK:ORI|Demon|||DemonToken|
|Generate|TOK:ORI|Elemental|||ZendikarsRoilElementalToken|
@ -1147,9 +1152,9 @@
|Generate|TOK:THS|Golem|||HammerOfPurphorosGolemToken|
|Generate|TOK:THS|Harpy|||AbhorrentOverlordHarpyToken|
|Generate|TOK:THS|Satyr|||XenagosSatyrToken|
|Generate|TOK:THS|Soldier|||AkroanSoldierToken|
|Generate|TOK:THS|Soldier|1||SoldierToken|
|Generate|TOK:THS|Soldier|2||SoldierToken|
|Generate|TOK:THS|Soldier|3||AkroanSoldierToken|
|Generate|TOK:TMP|Beast|||CarnivoreToken|
|Generate|TOK:TMP|Dog|||GreenDogToken|
|Generate|TOK:TMP|Pegasus|||PegasusToken|
@ -1212,8 +1217,8 @@
|Generate|TOK:VMA|Goblin|||GoblinToken|
|Generate|TOK:VMA|Insect|||InsectToken|
|Generate|TOK:VMA|Reflection|||ReflectionToken|
|Generate|TOK:VMA|Saproling|||SaprolingBurstToken|
|Generate|TOK:VMA|Saproling|||SaprolingToken|
|Generate|TOK:VMA|Saproling|1||SaprolingBurstToken|
|Generate|TOK:VMA|Saproling|2||SaprolingToken|
|Generate|TOK:VMA|Soldier|||SoldierToken|
|Generate|TOK:VMA|Spirit|||SpiritWhiteToken|
|Generate|TOK:VMA|Squirrel|||SquirrelToken|
@ -1403,5 +1408,25 @@
|Generate|TOK:C20|Treasure|||TreasureToken|
|Generate|TOK:C20|Zombie|||ZombieToken|
# M21
|Generate|TOK:M21|Angel|||AngelToken|
|Generate|TOK:M21|Beast|||BeastToken|
|Generate|TOK:M21|Bird|||BirdToken|
|Generate|TOK:M21|Cat|1||GreenCatToken|
|Generate|TOK:M21|Cat|2||GreenCat2Token|
|Generate|TOK:M21|Construct|||Construct4Token|
|Generate|TOK:M21|Demon|||DemonToken|
|Generate|TOK:M21|Dog|||WhiteDogToken|
|Generate|TOK:M21|Goblin Wizard|||GoblinWizardToken|
|Generate|TOK:M21|Griffin|||GriffinToken|
|Generate|TOK:M21|Knight|||KnightToken|
|Generate|TOK:M21|Pirate|||PursuedWhaleToken|
|Generate|TOK:M21|Saproling|||SaprolingToken|
|Generate|TOK:M21|Soldier|||SoldierToken|
|Generate|TOK:M21|Treasure|||TreasureToken|
|Generate|TOK:M21|Weird|||WeirdToken2|
|Generate|TOK:M21|Zombie|||ZombieToken|
# JMP
|Generate|TOK:JMP|Unicorn|||UnicornToken|
|Generate|TOK:JMP|Unicorn|||UnicornToken|
|Generate|TOK:JMP|Dog|||WhiteDogToken|

View file

@ -16,7 +16,7 @@ import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.Predicates;
import mage.filter.predicate.permanent.TokenPredicate;
import mage.game.Game;
import mage.game.permanent.token.RetrofitterFoundryToken;
import mage.game.permanent.token.Construct4Token;
import java.util.HashMap;
import java.util.Map;
@ -37,7 +37,7 @@ public final class ChromeReplicator extends CardImpl {
// When Chrome Replicator enters the battlefield, if you control two or more nonland, nontoken permanents with the same name as one another, create a 4/4 colorless Construct artifact creature token.
this.addAbility(new ConditionalInterveningIfTriggeredAbility(
new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new RetrofitterFoundryToken())),
new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new Construct4Token())),
ChromeReplicatorCondition.instance, "When {this} enters the battlefield, " +
"if you control two or more nonland, nontoken permanents with the same name as one another, " +
"create a 4/4 colorless Construct artifact creature token."

View file

@ -14,7 +14,7 @@ import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.SuperType;
import mage.filter.StaticFilters;
import mage.game.permanent.token.GreenCatToken2;
import mage.game.permanent.token.GreenCat2Token;
import java.util.UUID;
@ -33,7 +33,7 @@ public final class JolraelMwonvuliRecluse extends CardImpl {
this.toughness = new MageInt(2);
// Whenever you draw your second card each turn, create a 2/2 green Cat creature token.
this.addAbility(new DrawSecondCardTriggeredAbility(new CreateTokenEffect(new GreenCatToken2()), false));
this.addAbility(new DrawSecondCardTriggeredAbility(new CreateTokenEffect(new GreenCat2Token()), false));
// {4}{G}{G}: Until end of turn, creatures you control have base power and toughness X/X, where X is the number of cards in your hand.
this.addAbility(new SimpleActivatedAbility(new SetPowerToughnessAllEffect(

View file

@ -1,6 +1,5 @@
package mage.cards.r;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.SacrificeTargetCost;
@ -14,13 +13,14 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.filter.common.FilterControlledPermanent;
import mage.game.permanent.token.RetrofitterFoundryToken;
import mage.game.permanent.token.Construct4Token;
import mage.game.permanent.token.ServoToken;
import mage.game.permanent.token.ThopterColorlessToken;
import mage.target.common.TargetControlledPermanent;
import java.util.UUID;
/**
*
* @author TheElk801
*/
public final class RetrofitterFoundry extends CardImpl {
@ -62,7 +62,7 @@ public final class RetrofitterFoundry extends CardImpl {
// {T}, Sacrifice a Thopter: Create a 4/4 colorless Construct artifact creature token.
ability = new SimpleActivatedAbility(
new CreateTokenEffect(new RetrofitterFoundryToken()),
new CreateTokenEffect(new Construct4Token()),
new TapSourceCost()
);
ability.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter2)));

View file

@ -1,13 +1,13 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.HasteAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class AkroanSoldierToken extends TokenImpl {
@ -21,6 +21,8 @@ public final class AkroanSoldierToken extends TokenImpl {
power = new MageInt(1);
toughness = new MageInt(1);
this.addAbility(HasteAbility.getInstance());
availableImageSetCodes = Arrays.asList("THS");
}
public AkroanSoldierToken(final AkroanSoldierToken token) {
@ -30,4 +32,13 @@ public final class AkroanSoldierToken extends TokenImpl {
public AkroanSoldierToken copy() {
return new AkroanSoldierToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("THS")) {
this.setTokenType(3);
}
}
}

View file

@ -1,36 +1,29 @@
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;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public final class AngelToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("AVR", "C14", "CFX", "GTC", "ISD", "M14", "ORI", "SOI", "ZEN", "C15", "MM3"));
}
public AngelToken() {
this((String)null);
}
public AngelToken(String setCode) {
super("Angel", "4/4 white Angel creature token with flying");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.ANGEL);
power = new MageInt(4);
toughness = new MageInt(4);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("APC", "AVR", "C14", "C15", "C18", "CON", "DDQ", "GTC",
"ISD", "M14", "MM3", "NEM", "OGW", "ORI", "PC2", "SCG", "SOI", "ZEN", "C20", "M21");
}
public AngelToken(final AngelToken token) {

View file

@ -3,6 +3,7 @@ package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.util.RandomUtil;
import java.util.Arrays;
@ -12,34 +13,37 @@ import java.util.Arrays;
public final class BeastToken extends TokenImpl {
public BeastToken() {
this(null, 0);
}
public BeastToken(String setCode) {
this(setCode, 0);
}
public BeastToken(String setCode, int tokenType) {
super("Beast", "3/3 green Beast creature token");
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.BEAST);
power = new MageInt(3);
toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("C14", "LRW", "M15", "M14", "DDL", "M13", "M12", "DD3GVL", "NPH", "M11", "M10", "EVE", "MM3", "CMA", "E01", "C19", "IKO");
availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2",
"DD3C", "DD3GVL", "DDD", "DDL", "DST", "E01", "EVE", "LRW", "M10", "M11", "M12",
"M13", "M14", "M15", "MM3", "NPH", "PC2", "USG", "M19", "IKO", "M21");
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode().equals("M15")) {
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("M15")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode().equals("DD3GVL") || getOriginalExpansionSetCode().equals("C14") || getOriginalExpansionSetCode().equals("DDD") || getOriginalExpansionSetCode().equals("MM3")) {
this.setTokenType(1);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMD")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DD3GVL")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DD3C")) {
setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("MM3")) {
setTokenType(RandomUtil.nextInt(2) + 1);
}
}
@ -49,6 +53,6 @@ public final class BeastToken extends TokenImpl {
@Override
public BeastToken copy() {
return new BeastToken(this); //To change body of generated methods, choose Tools | Templates.
return new BeastToken(this);
}
}

View file

@ -4,6 +4,7 @@ import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.util.RandomUtil;
import java.util.Arrays;
@ -21,7 +22,7 @@ public final class BirdToken extends TokenImpl {
toughness = new MageInt(1);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("BNG", "RTR", "ZEN", "C16", "MM3", "DGM"));
availableImageSetCodes.addAll(Arrays.asList("BNG", "CSP", "DGM", "JUD", "MM3", "RTR", "VMA", "ZEN", "MH1", "C20", "M21"));
}
public BirdToken(final BirdToken token) {
@ -36,11 +37,9 @@ public final class BirdToken extends TokenImpl {
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("BNG")) {
this.setTokenType(1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) {
this.setTokenType(1);
setTokenType(RandomUtil.nextInt(2) + 1);
}
}
}

View file

@ -1,34 +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 TheElk801
*/
public final class RetrofitterFoundryToken extends TokenImpl {
public final class Construct4Token extends TokenImpl {
public RetrofitterFoundryToken() {
this("C18");
}
public RetrofitterFoundryToken(String setCode) {
public Construct4Token() {
super("Construct", "4/4 colorless Construct artifact creature token");
this.setOriginalExpansionSetCode(setCode);
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.CONSTRUCT);
power = new MageInt(4);
toughness = new MageInt(4);
availableImageSetCodes.addAll(Arrays.asList("C18", "M21"));
}
public RetrofitterFoundryToken(final RetrofitterFoundryToken token) {
public Construct4Token(final Construct4Token token) {
super(token);
}
public RetrofitterFoundryToken copy() {
return new RetrofitterFoundryToken(this);
public Construct4Token copy() {
return new Construct4Token(this);
}
}

View file

@ -1,15 +1,13 @@
package mage.game.permanent.token;
import java.util.Arrays;
import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author LoneFox
*/
public final class DemonToken extends TokenImpl {
@ -22,7 +20,8 @@ public final class DemonToken extends TokenImpl {
power = new MageInt(5);
toughness = new MageInt(5);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("ISD", "AVR", "C14", "ORI", "M20"));
availableImageSetCodes.addAll(Arrays.asList("AVR", "C14", "DD3A", "ISD", "ORI", "M20", "M21"));
}
public DemonToken(final DemonToken token) {
@ -30,15 +29,7 @@ public final class DemonToken extends TokenImpl {
}
@Override
public DemonToken copy() {
public DemonToken copy() {
return new DemonToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode().equals("C14")) {
this.setTokenType(2);
}
}
}

View file

@ -5,6 +5,8 @@ import mage.abilities.keyword.ProwessAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -19,6 +21,8 @@ public final class GoblinWizardToken extends TokenImpl {
power = new MageInt(1);
toughness = new MageInt(1);
this.addAbility(new ProwessAbility());
availableImageSetCodes.addAll(Arrays.asList("M21"));
}
private GoblinWizardToken(final GoblinWizardToken token) {

View file

@ -0,0 +1,41 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
public final class GreenCat2Token extends TokenImpl {
public GreenCat2Token() {
super("Cat", "2/2 green Cat creature token");
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.CAT);
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes.addAll(Arrays.asList("M21"));
}
private GreenCat2Token(final GreenCat2Token token) {
super(token);
}
public GreenCat2Token copy() {
return new GreenCat2Token(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("M21")) {
this.setTokenType(2);
}
}
}

View file

@ -1,12 +1,12 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class GreenCatToken extends TokenImpl {
@ -18,8 +18,10 @@ public final class GreenCatToken extends TokenImpl {
subtype.add(SubType.CAT);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes.addAll(Arrays.asList("6ED", "M21"));
}
public GreenCatToken(final GreenCatToken token) {
super(token);
}

View file

@ -1,28 +0,0 @@
package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
/**
* @author TheElk801
*/
public final class GreenCatToken2 extends TokenImpl {
public GreenCatToken2() {
super("Cat", "2/2 green Cat creature token");
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.CAT);
power = new MageInt(2);
toughness = new MageInt(2);
}
private GreenCatToken2(final GreenCatToken2 token) {
super(token);
}
public GreenCatToken2 copy() {
return new GreenCatToken2(this);
}
}

View file

@ -1,13 +1,13 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
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 GriffinToken extends TokenImpl {
@ -16,11 +16,12 @@ public final class GriffinToken extends TokenImpl {
super("Griffin", "2/2 white Griffin creature token with flying");
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.GRIFFIN);
power = new MageInt(2);
toughness = new MageInt(2);
this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("DDG", "DDH", "DDL", "TSP", "M21"));
}
public GriffinToken(final GriffinToken token) {

View file

@ -1,34 +1,27 @@
package mage.game.permanent.token;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import mage.MageInt;
import mage.abilities.keyword.FirstStrikeAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class HuntedDragonKnightToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("ORI", "RTR", "C15"));
}
public HuntedDragonKnightToken() {
super("Knight", "2/2 white Knight creature tokens with first strike");
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.KNIGHT);
power = new MageInt(2);
toughness = new MageInt(2);
this.addAbility(FirstStrikeAbility.getInstance());
availableImageSetCodes = Arrays.asList("ORI", "RTR", "C15");
}
public HuntedDragonKnightToken(final HuntedDragonKnightToken token) {
@ -38,4 +31,13 @@ public final class HuntedDragonKnightToken extends TokenImpl {
public HuntedDragonKnightToken copy() {
return new HuntedDragonKnightToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C15")) {
setTokenType(2);
}
}
}

View file

@ -6,29 +6,16 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.util.RandomUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author LevelX2
*/
public final class KnightToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("ORI", "RTR", "C15", "CMA", "DOM", "ELD"));
}
public KnightToken() {
super("Knight", "2/2 white Knight creature token with vigilance");
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C15")) {
setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DOM")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.KNIGHT);
@ -36,7 +23,7 @@ public final class KnightToken extends TokenImpl {
toughness = new MageInt(2);
this.addAbility(VigilanceAbility.getInstance());
availableImageSetCodes = tokenImageSets;
availableImageSetCodes = Arrays.asList("C13", "C15", "CMA", "DGM", "ORI", "RTR", "M19", "ELD", "M21");
}
public KnightToken(final KnightToken token) {
@ -46,4 +33,17 @@ public final class KnightToken extends TokenImpl {
public KnightToken copy() {
return new KnightToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C15")) {
setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DOM")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
}
}

View file

@ -10,6 +10,8 @@ import mage.constants.SubType;
import mage.constants.TargetController;
import mage.filter.common.FilterCreaturePermanent;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -34,6 +36,8 @@ public final class PursuedWhaleToken extends TokenImpl {
this.addAbility(new SimpleStaticAbility(new AttacksIfAbleAllEffect(
filter, Duration.WhileOnBattlefield, true
)));
availableImageSetCodes = Arrays.asList("M21");
}
private PursuedWhaleToken(final PursuedWhaleToken token) {

View file

@ -29,6 +29,7 @@ public final class SaprolingToken extends TokenImpl {
"MM2",
"MM3",
"MMA",
"NEM",
"RTR",
"C15",
"MM3",
@ -40,7 +41,8 @@ public final class SaprolingToken extends TokenImpl {
"RIX",
"DOM", // 3 different token images
"C19",
"C20"
"C20",
"M21"
));
}
@ -52,13 +54,6 @@ public final class SaprolingToken extends TokenImpl {
subtype.add(SubType.SAPROLING);
power = new MageInt(1);
toughness = new MageInt(1);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DOM")) {
this.setTokenType(RandomUtil.nextInt(3) + 1);
}
}
public SaprolingToken(final SaprolingToken token) {
@ -68,4 +63,23 @@ public final class SaprolingToken extends TokenImpl {
public SaprolingToken copy() {
return new SaprolingToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("NEM")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("VMA")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DOM")) {
this.setTokenType(RandomUtil.nextInt(3) + 1);
}
}
}

View file

@ -5,42 +5,23 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.util.RandomUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author BetaSteward_at_googlemail.com
*/
public final class SoldierToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("10E", "M15", "C14", "ORI", "ALA", "DDF", "THS", "M12", "M13", "MM2", "MMA", "RTR",
"SOM", "DDO", "M10", "ORI", "EMN", "EMA", "CN2", "C16", "MM3", "E01", "DOM", "MH1", "M20", "C20"));
}
public SoldierToken() {
super("Soldier", "1/1 white Soldier creature token");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.SOLDIER);
power = new MageInt(1);
toughness = new MageInt(1);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("THS")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && (getOriginalExpansionSetCode().equals("CN2") || getOriginalExpansionSetCode().equals("MM3"))) {
setTokenType(1);
}
availableImageSetCodes = Arrays.asList("10E", "M15", "C14", "ORI", "ALA", "DDF", "THS", "M12", "M13", "MM2", "MMA", "RTR",
"SOM", "DDO", "M10", "ORI", "EMN", "EMA", "CN2", "C16", "MM3", "E01", "DOM", "MH1", "M20", "C20", "M21");
}
public SoldierToken(final SoldierToken token) {
@ -49,6 +30,24 @@ public final class SoldierToken extends TokenImpl {
@Override
public SoldierToken copy() {
return new SoldierToken(this); //To change body of generated methods, choose Tools | Templates.
return new SoldierToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CN2")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CN2")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("MM3")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("THS")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
}
}

View file

@ -1,27 +1,17 @@
package mage.game.permanent.token;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.HasteAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author LoneFox
*/
public final class SoldierTokenWithHaste extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("GTC", "MM3"));
}
public SoldierTokenWithHaste() {
super("Soldier", "1/1 red and white Soldier creature token with haste");
cardType.add(CardType.CREATURE);
@ -31,12 +21,18 @@ public final class SoldierTokenWithHaste extends TokenImpl {
power = new MageInt(1);
toughness = new MageInt(1);
addAbility(HasteAbility.getInstance());
availableImageSetCodes = Arrays.asList("GTC", "MM3");
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("GTC")) {
setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("MM3")) {
setTokenType(2);
}

View file

@ -8,6 +8,7 @@ import mage.abilities.mana.SimpleManaAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Zone;
import mage.util.RandomUtil;
import java.util.ArrayList;
import java.util.Arrays;
@ -24,11 +25,11 @@ public final class TreasureToken extends TokenImpl {
super("Treasure", "Treasure token");
cardType.add(CardType.ARTIFACT);
subtype.add(SubType.TREASURE);
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20");
Ability ability = new SimpleManaAbility(Zone.BATTLEFIELD, new AddManaOfAnyColorEffect(), new TapSourceCost());
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21");
}
public TreasureToken(final TreasureToken token) {
@ -38,4 +39,13 @@ public final class TreasureToken extends TokenImpl {
public TreasureToken copy() {
return new TreasureToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("XLN")) {
this.setTokenType(RandomUtil.nextInt(4) + 1);
}
}
}

View file

@ -4,6 +4,8 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
*/
@ -21,6 +23,8 @@ public final class WeirdToken2 extends TokenImpl {
subtype.add(SubType.WEIRD);
power = new MageInt(xValue);
toughness = new MageInt(xValue);
availableImageSetCodes = Arrays.asList("M21");
}
private WeirdToken2(final WeirdToken2 token) {

View file

@ -4,8 +4,9 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author htrajan
*/
public final class WhiteDogToken extends TokenImpl {
@ -18,6 +19,8 @@ public final class WhiteDogToken extends TokenImpl {
color.setWhite(true);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes.addAll(Arrays.asList("M21", "JMP"));
}
private WhiteDogToken(final WhiteDogToken token) {

View file

@ -5,30 +5,26 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.util.RandomUtil;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author BetaSteward_at_googlemail.com
*/
public final class ZombieToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("10E", "M10", "M11", "M12", "M13", "M14", "M15", "MBS", "ALA", "ISD", "C14", "C15", "C16", "C17", "CNS",
"MMA", "BNG", "KTK", "DTK", "ORI", "OGW", "SOI", "EMN", "EMA", "MM3", "AKH", "CMA", "E01", "RNA", "WAR", "MH1", "M20", "C19", "THB"));
}
public ZombieToken() {
super("Zombie", "2/2 black Zombie creature token");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.CREATURE);
color.setBlack(true);
subtype.add(SubType.ZOMBIE);
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("10E", "M10", "M11", "M12", "M13", "M14", "M15",
"MBS", "ALA", "ISD", "C14", "C15", "C16", "C17",
"CNS", "MMA", "BNG", "KTK", "DTK", "ORI", "OGW",
"SOI", "EMN", "EMA", "MM3", "AKH", "CMA", "E01",
"RNA", "WAR", "MH1", "M20", "C19", "THB", "M21");
}
@Override
@ -55,6 +51,6 @@ public final class ZombieToken extends TokenImpl {
@Override
public ZombieToken copy() {
return new ZombieToken(this); //To change body of generated methods, choose Tools | Templates.
return new ZombieToken(this);
}
}