[CMR] added tokens support, added tokens download

This commit is contained in:
Oleg Agafonov 2020-12-19 21:42:12 +04:00
parent 92f9bc0c65
commit 9dd09c970a
34 changed files with 281 additions and 168 deletions

View file

@ -474,6 +474,27 @@ public class ScryfallImageSupportTokens {
put("ZNC/Saproling", "https://api.scryfall.com/cards/tznc/9/en?format=image");
put("ZNC/Thopter", "https://api.scryfall.com/cards/tznc/11/en?format=image");
// CMR
put("CMR/Angel", "https://api.scryfall.com/cards/tcmr/1/en?format=image");
put("CMR/Beast/1", "https://api.scryfall.com/cards/tcmr/18/en?format=image"); // 3/3
put("CMR/Beast/2", "https://api.scryfall.com/cards/tcmr/19/en?format=image"); // 4/4
put("CMR/Cat", "https://api.scryfall.com/cards/tcmr/15/en?format=image");
put("CMR/Dragon", "https://api.scryfall.com/cards/tcmr/7/en?format=image");
put("CMR/Elephant", "https://api.scryfall.com/cards/tcmr/20/en?format=image");
put("CMR/Elf Warrior", "https://api.scryfall.com/cards/tcmr/8/en?format=image");
put("CMR/Golem", "https://api.scryfall.com/cards/tcmr/9/en?format=image");
put("CMR/Horror", "https://api.scryfall.com/cards/tcmr/10/en?format=image");
put("CMR/Illusion", "https://api.scryfall.com/cards/tcmr/17/en?format=image");
put("CMR/Plant", "https://api.scryfall.com/cards/tcmr/21/en?format=image");
put("CMR/Rock", "https://api.scryfall.com/cards/tcmr/11/en?format=image");
put("CMR/Salamander Warrior", "https://api.scryfall.com/cards/tcmr/4/en?format=image");
put("CMR/Saproling", "https://api.scryfall.com/cards/tcmr/22/en?format=image");
put("CMR/Soldier/1", "https://api.scryfall.com/cards/tcmr/16/en?format=image");
put("CMR/Soldier/2", "https://api.scryfall.com/cards/tcmr/2/en?format=image");
put("CMR/Spirit", "https://api.scryfall.com/cards/tcmr/3/en?format=image");
put("CMR/Thrull", "https://api.scryfall.com/cards/tcmr/5/en?format=image");
put("CMR/Treasure", "https://api.scryfall.com/cards/tcmr/12/en?format=image");
put("CMR/Zombie", "https://api.scryfall.com/cards/tcmr/6/en?format=image");
// generate supported sets
supportedSets.clear();

View file

@ -270,10 +270,10 @@
|Generate|TOK:BOK|Spirit|||AnotherSpiritToken|
|Generate|TOK:BOK|Spirit|||SpiritToken|
|Generate|TOK:C13|Assembly-Worker|||AssembleWorkerToken|
|Generate|TOK:C13|Beast|||BeastToken2|
|Generate|TOK:C13|Beast|||CarnivoreToken|
|Generate|TOK:C13|Beast|||OneDozenEyesBeastToken|
|Generate|TOK:C13|Beast|||SpawningGroundsBeastToken|
|Generate|TOK:C13|Beast|1||BeastToken2|
|Generate|TOK:C13|Beast|2||CarnivoreToken|
|Generate|TOK:C13|Beast|3||OneDozenEyesBeastToken|
|Generate|TOK:C13|Beast|4||SpawningGroundsBeastToken|
|Generate|TOK:C13|Drake|||LeafdrakeRoostDrakeToken|
|Generate|TOK:C13|Elemental|1||SeedGuardianToken|
|Generate|TOK:C13|Elemental|2||WalkerOfTheGroveToken|
@ -518,8 +518,8 @@
|Generate|TOK:EVG|Goblin|||GoblinToken|
|Generate|TOK:GVL|Ape|||PongifyApeToken|
|Generate|TOK:GVL|Bat|||BatToken|
|Generate|TOK:GVL|Beast|||BeastToken2|
|Generate|TOK:GVL|Beast|||BeastToken|
|Generate|TOK:GVL|Beast|1||BeastToken2|
|Generate|TOK:GVL|Beast|2||BeastToken|
|Generate|TOK:GVL|Elephant|||ElephantToken|
|Generate|TOK:JVC|Elemental Shaman|||ElementalShamanToken|
|Generate|TOK:DDC|Demon|||ReignOfThePitToken|
@ -1084,8 +1084,8 @@
|Generate|TOK:SHM|Elemental|2||RedElementalToken|
|Generate|TOK:SHM|Elf Warrior|1|
|Generate|TOK:SHM|Elf Warrior|2|
|Generate|TOK:SHM|Elf Warrior|||ElfToken|
|Generate|TOK:SHM|Elf Warrior|||RhysTheRedeemedToken|
|Generate|TOK:SHM|Elf Warrior|1||ElfToken|
|Generate|TOK:SHM|Elf Warrior|2||RhysTheRedeemedToken|
|Generate|TOK:SHM|Faerie Rogue|||OonaQueenFaerieToken|
|Generate|TOK:SHM|Giant Warrior|||GiantBaitingGiantWarriorToken|
|Generate|TOK:SHM|Goblin Warrior|||WortTheRaidmotherToken|
@ -1456,4 +1456,26 @@
|Generate|TOK:ZNC|Kor Ally|||KorAllyToken|
|Generate|TOK:ZNC|Rat|||RatToken|
|Generate|TOK:ZNC|Saproling|||SaprolingToken|
|Generate|TOK:ZNC|Thopter|||ThopterColorlessToken|
|Generate|TOK:ZNC|Thopter|||ThopterColorlessToken|
# CMR
|Generate|TOK:CMR|Angel|||AngelToken|
|Generate|TOK:CMR|Beast|1||BeastToken|
|Generate|TOK:CMR|Beast|2||BeastToken2|
|Generate|TOK:CMR|Cat|||CatToken|
|Generate|TOK:CMR|Dragon|||DragonEggDragonToken|
|Generate|TOK:CMR|Elephant|||ElephantToken|
|Generate|TOK:CMR|Elf Warrior|||ElfToken|
|Generate|TOK:CMR|Golem|||GolemToken|
|Generate|TOK:CMR|Horror|||PhyrexianRebirthHorrorToken|
|Generate|TOK:CMR|Illusion|||MelokuTheCloudedMirrorToken|
|Generate|TOK:CMR|Plant|||PlantToken|
|Generate|TOK:CMR|Rock|||RockToken|
|Generate|TOK:CMR|Salamander Warrior|||SalamnderWarriorToken|
|Generate|TOK:CMR|Saproling|||SaprolingToken|
|Generate|TOK:CMR|Soldier|1||SoldierToken|
|Generate|TOK:CMR|Soldier|2||SoldierToken|
|Generate|TOK:CMR|Spirit|||SpiritWhiteToken|
|Generate|TOK:CMR|Thrull|||BreedingPitThrullToken|
|Generate|TOK:CMR|Treasure|||TreasureToken|
|Generate|TOK:CMR|Zombie|||ZombieToken|

View file

@ -1,8 +1,5 @@
package mage.cards.b;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@ -18,8 +15,9 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.GolemToken;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class BladeSplicer extends CardImpl {
@ -30,21 +28,21 @@ public final class BladeSplicer extends CardImpl {
filter.add(SubType.GOLEM.getPredicate());
}
public BladeSplicer (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{2}{W}");
public BladeSplicer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}");
this.subtype.add(SubType.HUMAN, SubType.ARTIFICER);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// When Blade Splicer enters the battlefield, create a 3/3 colorless Golem artifact creature token.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken(expansionSetCode))));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken())));
// Golem creatures you control have first strike.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
}
public BladeSplicer (final BladeSplicer card) {
public BladeSplicer(final BladeSplicer card) {
super(card);
}

View file

@ -1,8 +1,5 @@
package mage.cards.c;
import java.util.UUID;
import mage.abilities.Ability;
import mage.abilities.common.SimpleActivatedAbility;
import mage.abilities.costs.common.RemoveCountersSourceCost;
@ -20,14 +17,15 @@ import mage.filter.common.FilterArtifactCard;
import mage.game.permanent.token.GolemToken;
import mage.target.common.TargetCardInGraveyard;
import java.util.UUID;
/**
*
* @author Loki
*/
public final class ConversionChamber extends CardImpl {
public ConversionChamber (UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.ARTIFACT},"{3}");
public ConversionChamber(UUID ownerId, CardSetInfo setInfo) {
super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}");
// {2}, {T}: Exile target artifact card from a graveyard. Put a charge counter on Conversion Chamber.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileTargetEffect(), new GenericManaCost(2));
ability.addEffect(new AddCountersSourceEffect(CounterType.CHARGE.createInstance()));
@ -35,14 +33,14 @@ public final class ConversionChamber extends CardImpl {
ability.addCost(new TapSourceCost());
this.addAbility(ability);
// {2}, {T}, Remove a charge counter from Conversion Chamber: Create a 3/3 colorless Golem artifact creature token.
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new GolemToken(expansionSetCode)), new GenericManaCost(2));
ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new GolemToken()), new GenericManaCost(2));
ability.addCost(new TapSourceCost());
ability.addCost(new RemoveCountersSourceCost(CounterType.CHARGE.createInstance()));
this.addAbility(ability);
}
public ConversionChamber (final ConversionChamber card) {
public ConversionChamber(final ConversionChamber card) {
super(card);
}

View file

@ -1,4 +1,3 @@
package mage.cards.m;
import mage.MageInt;
@ -32,7 +31,7 @@ public final class MasterSplicer extends CardImpl {
this.power = new MageInt(1);
this.toughness = new MageInt(1);
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken(expansionSetCode))));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken())));
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostControlledEffect(1, 1, Duration.WhileOnBattlefield, filter, false)));
}

View file

@ -1,7 +1,5 @@
package mage.cards.m;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@ -17,8 +15,9 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.GolemToken;
import java.util.UUID;
/**
*
* @author North
*/
public final class MaulSplicer extends CardImpl {
@ -31,7 +30,7 @@ public final class MaulSplicer extends CardImpl {
}
public MaulSplicer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{6}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{6}{G}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ARTIFICER);
@ -39,8 +38,8 @@ public final class MaulSplicer extends CardImpl {
this.toughness = new MageInt(1);
// When Maul Splicer enters the battlefield, create two 3/3 colorless Golem artifact creature tokens.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken(expansionSetCode), 2)));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken(), 2)));
// Golem creatures you control have trample.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
}

View file

@ -28,9 +28,9 @@ public final class MelokuTheCloudedMirror extends CardImpl {
addSuperType(SuperType.LEGENDARY);
this.subtype.add(SubType.MOONFOLK);
this.subtype.add(SubType.WIZARD);
this.power = new MageInt(2);
this.toughness = new MageInt(4);
// Flying
this.addAbility(FlyingAbility.getInstance());

View file

@ -1,7 +1,5 @@
package mage.cards.s;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@ -17,8 +15,9 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.GolemToken;
import java.util.UUID;
/**
*
* @author North
*/
public final class SensorSplicer extends CardImpl {
@ -31,14 +30,14 @@ public final class SensorSplicer extends CardImpl {
}
public SensorSplicer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{4}{W}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{4}{W}");
this.subtype.add(SubType.ARTIFICER);
this.power = new MageInt(1);
this.toughness = new MageInt(1);
// When Sensor Splicer enters the battlefield, create a 3/3 colorless Golem artifact creature token.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken(expansionSetCode))));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken())));
// Golem creatures you control have vigilance.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(VigilanceAbility.getInstance(), Duration.WhileOnBattlefield, filter)));

View file

@ -1,7 +1,5 @@
package mage.cards.v;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.Ability;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
@ -19,8 +17,9 @@ import mage.filter.common.FilterCreaturePermanent;
import mage.game.permanent.token.GolemToken;
import mage.target.common.TargetCreaturePermanent;
import java.util.UUID;
/**
*
* @author North
*/
public final class VitalSplicer extends CardImpl {
@ -34,7 +33,7 @@ public final class VitalSplicer extends CardImpl {
}
public VitalSplicer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{G}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{G}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ARTIFICER);
@ -42,7 +41,7 @@ public final class VitalSplicer extends CardImpl {
this.toughness = new MageInt(1);
// When Vital Splicer enters the battlefield, create a 3/3 colorless Golem artifact creature token.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken(expansionSetCode))));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken())));
// {1}: Regenerate target Golem you control.
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateTargetEffect(), new ManaCostsImpl("{1}"));

View file

@ -1,7 +1,5 @@
package mage.cards.w;
import java.util.UUID;
import mage.MageInt;
import mage.abilities.common.EntersBattlefieldTriggeredAbility;
import mage.abilities.common.SimpleStaticAbility;
@ -17,8 +15,9 @@ import mage.constants.Zone;
import mage.filter.FilterPermanent;
import mage.game.permanent.token.GolemToken;
import java.util.UUID;
/**
*
* @author North
*/
public final class WingSplicer extends CardImpl {
@ -31,7 +30,7 @@ public final class WingSplicer extends CardImpl {
}
public WingSplicer(UUID ownerId, CardSetInfo setInfo) {
super(ownerId,setInfo,new CardType[]{CardType.CREATURE},"{3}{U}");
super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{3}{U}");
this.subtype.add(SubType.HUMAN);
this.subtype.add(SubType.ARTIFICER);
@ -39,8 +38,8 @@ public final class WingSplicer extends CardImpl {
this.toughness = new MageInt(1);
// When Wing Splicer enters the battlefield, create a 3/3 colorless Golem artifact creature token.
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken(expansionSetCode))));
this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GolemToken())));
// Golem creatures you control have flying.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityControlledEffect(FlyingAbility.getInstance(), Duration.WhileOnBattlefield, filter)));
}

View file

@ -28,7 +28,9 @@ public class PermanentToken extends PermanentImpl {
// token's ZCC must be synced with original token to keep abilities settings
// Example: kicker ability and kicked status
this.setZoneChangeCounter(this.token.getZoneChangeCounter(game), game);
if (game != null) { // game == null in GUI for card viewer's tokens
this.setZoneChangeCounter(this.token.getZoneChangeCounter(game), game);
}
}
public PermanentToken(final PermanentToken permanent) {

View file

@ -19,7 +19,7 @@ public final class AngelToken extends TokenImpl {
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");
"ISD", "M14", "MM3", "NEM", "OGW", "ORI", "PC2", "SCG", "SOI", "ZEN", "C20", "M21", "CMR");
}
public AngelToken(final AngelToken token) {

View file

@ -20,9 +20,9 @@ public final class BeastToken extends TokenImpl {
power = new MageInt(3);
toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2",
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");
"M13", "M14", "M15", "MM3", "NPH", "PC2", "USG", "M19", "IKO", "M21", "CMR");
}
@Override

View file

@ -4,38 +4,23 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author LoneFox
*/
public final class BeastToken2 extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("ZEN", "C14", "DDD", "C15", "GVL", "MM3", "CMA", "E01", "C19", "C20", "ZNC"));
}
public BeastToken2() {
this(null, 0);
}
public BeastToken2(String setCode) {
this(setCode, 0);
}
public BeastToken2(String setCode, int tokenType) {
super("Beast", "4/4 green Beast creature token");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.BEAST);
power = new MageInt(4);
toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("C13", "C14", "C15", "C19", "CMA", "CMD", "GVL", "DDD",
"E01", "ODY", "SCG", "ZEN", "C20", "ZNC", "CMR");
}
public BeastToken2(final BeastToken2 token) {
@ -50,7 +35,28 @@ public final class BeastToken2 extends TokenImpl {
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode().equals("C14") || getOriginalExpansionSetCode().equals("DDD") || getOriginalExpansionSetCode().equals("GVL") || getOriginalExpansionSetCode().equals("MM3")) {
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C14")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C19")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMA")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DDD")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("E01")) {
this.setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMR")) {
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 BreedingPitThrullToken extends TokenImpl {
@ -18,6 +18,8 @@ public final class BreedingPitThrullToken extends TokenImpl {
color.setBlack(true);
power = new MageInt(0);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("CMR");
}
public BreedingPitThrullToken(final BreedingPitThrullToken token) {
@ -27,4 +29,9 @@ public final class BreedingPitThrullToken extends TokenImpl {
public BreedingPitThrullToken copy() {
return new BreedingPitThrullToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

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 CarnivoreToken extends TokenImpl {
@ -18,6 +18,8 @@ public final class CarnivoreToken extends TokenImpl {
subtype.add(SubType.BEAST);
power = new MageInt(3);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("C13", "EMA", "TMP");
}
public CarnivoreToken(final CarnivoreToken token) {
@ -27,4 +29,13 @@ public final class CarnivoreToken extends TokenImpl {
public CarnivoreToken copy() {
return new CarnivoreToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C13")) {
this.setTokenType(2);
}
}
}

View file

@ -19,7 +19,7 @@ public final class CatToken extends TokenImpl {
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("PMEI", "C14", "C15", "C17", "C18", "M13", "M14", "MBS", "SOM");
availableImageSetCodes = Arrays.asList("PMEI", "C14", "C15", "C17", "C18", "M13", "M14", "MBS", "SOM", "CMR");
}
public CatToken(final CatToken token) {
@ -29,4 +29,9 @@ public final class CatToken extends TokenImpl {
public CatToken copy() {
return new CatToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

View file

@ -1,4 +1,3 @@
package mage.game.permanent.token;
import mage.MageInt;
@ -7,27 +6,29 @@ import mage.abilities.costs.mana.ManaCostsImpl;
import mage.abilities.effects.common.continuous.BoostSourceEffect;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.constants.Duration;
import mage.constants.SubType;
import mage.constants.Zone;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class DragonEggDragonToken extends TokenImpl {
public DragonEggDragonToken() {
super("Dragon", "2/2 red Dragon creature token with flying and \"{R}: This creature gets +1/+0 until end of turn.\"");
this.setOriginalExpansionSetCode("M14");
cardType.add(CardType.CREATURE);
color.setRed(true);
subtype.add(SubType.DRAGON);
power = new MageInt(2);
toughness = new MageInt(2);
addAbility(FlyingAbility.getInstance());
addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
this.addAbility(FlyingAbility.getInstance());
this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}")));
availableImageSetCodes = Arrays.asList("C18", "EMA", "M14", "M19", "CMR");
}
public DragonEggDragonToken(final DragonEggDragonToken token) {
@ -37,4 +38,9 @@ public final class DragonEggDragonToken extends TokenImpl {
public DragonEggDragonToken copy() {
return new DragonEggDragonToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

View file

@ -4,34 +4,23 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author BetaSteward_at_googlemail.com
*/
public final class ElephantToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("C14", "CNS", "DDD", "MM2", "WWK", "OGW", "C15", "GVL", "MM3", "CMA", "MH1"));
}
public ElephantToken() {
this((String) null);
}
public ElephantToken(String setCode) {
super("Elephant", "3/3 green Elephant creature token");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.ELEPHANT);
power = new MageInt(3);
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");
}
public ElephantToken(final ElephantToken token) {
@ -42,4 +31,8 @@ public final class ElephantToken extends TokenImpl {
return new ElephantToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

View file

@ -1,42 +1,26 @@
package mage.game.permanent.token;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author Loki
*/
public final class ElfToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("C14", "SHM", "EVG", "LRW", "ORI"));
}
public ElfToken() {
super("Elf Warrior", "1/1 green Elf Warrior creature token");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.ELF);
subtype.add(SubType.WARRIOR);
power = new MageInt(1);
toughness = new MageInt(1);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode().equals("SHM")) {
this.setTokenType(1);
}
availableImageSetCodes = Arrays.asList("C13", "C14", "EVG", "EMA", "LRW", "MOR", "ORI", "SHM", "M19", "CMR");
}
public ElfToken(final ElfToken token) {
@ -45,6 +29,11 @@ public final class ElfToken extends TokenImpl {
@Override
public ElfToken copy() {
return new ElfToken(this); //To change body of generated methods, choose Tools | Templates.
return new ElfToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

View file

@ -4,35 +4,22 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author North
*/
public final class GolemToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("MM2", "NPH", "SOM", "MM3", "MH1", "M20"));
}
public GolemToken() {
this((String) null);
}
public GolemToken(String setCode) {
super("Golem", "3/3 colorless Golem artifact creature token");
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
subtype.add(SubType.GOLEM);
power = new MageInt(3);
toughness = new MageInt(3);
availableImageSetCodes = tokenImageSets;
availableImageSetCodes = Arrays.asList("MM2", "NPH", "SOM", "MH1", "M20", "CMR");
}
public GolemToken(final GolemToken token) {
@ -42,4 +29,9 @@ public final class GolemToken extends TokenImpl {
public GolemToken copy() {
return new GolemToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

View file

@ -19,8 +19,10 @@ public final class MelokuTheCloudedMirrorToken extends TokenImpl {
subtype.add(SubType.ILLUSION);
power = new MageInt(1);
toughness = new MageInt(1);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("CHK", "MMA", "MH1"));
availableImageSetCodes = Arrays.asList("CHK", "MMA", "MH1", "CMR");
}
public MelokuTheCloudedMirrorToken(final MelokuTheCloudedMirrorToken token) {
@ -30,4 +32,9 @@ public final class MelokuTheCloudedMirrorToken extends TokenImpl {
public MelokuTheCloudedMirrorToken copy() {
return new MelokuTheCloudedMirrorToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

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 OneDozenEyesBeastToken extends TokenImpl {
@ -18,6 +18,8 @@ public final class OneDozenEyesBeastToken extends TokenImpl {
subtype.add(SubType.BEAST);
power = new MageInt(5);
toughness = new MageInt(5);
availableImageSetCodes = Arrays.asList("C13", "MRD");
}
public OneDozenEyesBeastToken(final OneDozenEyesBeastToken token) {
@ -28,4 +30,12 @@ public final class OneDozenEyesBeastToken extends TokenImpl {
return new OneDozenEyesBeastToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C13")) {
this.setTokenType(3);
}
}
}

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 PhyrexianRebirthHorrorToken extends TokenImpl {
@ -18,6 +18,8 @@ public final class PhyrexianRebirthHorrorToken extends TokenImpl {
subtype.add(SubType.HORROR);
power = new MageInt(0);
toughness = new MageInt(0);
availableImageSetCodes = Arrays.asList("C18", "C19", "MBS", "CMR");
}
public PhyrexianRebirthHorrorToken(final PhyrexianRebirthHorrorToken token) {
@ -27,4 +29,9 @@ public final class PhyrexianRebirthHorrorToken extends TokenImpl {
public PhyrexianRebirthHorrorToken copy() {
return new PhyrexianRebirthHorrorToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

View file

@ -16,7 +16,7 @@ public final class PlantToken extends TokenImpl {
power = new MageInt(0);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("WWK", "DDP", "OGW", "ZNR");
availableImageSetCodes = Arrays.asList("ARC", "C13", "C18", "DDP", "OGW", "PC2", "WWK", "XLN", "ZEN", "ZNR", "CMR");
}
public PlantToken(final PlantToken token) {
@ -26,4 +26,9 @@ public final class PlantToken extends TokenImpl {
public PlantToken copy() {
return new PlantToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

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 RhysTheRedeemedToken extends TokenImpl {
@ -20,6 +20,8 @@ public final class RhysTheRedeemedToken extends TokenImpl {
subtype.add(SubType.WARRIOR);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("SHM");
}
public RhysTheRedeemedToken(final RhysTheRedeemedToken token) {
@ -29,4 +31,13 @@ public final class RhysTheRedeemedToken extends TokenImpl {
public RhysTheRedeemedToken copy() {
return new RhysTheRedeemedToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("SHM")) {
this.setTokenType(2);
}
}
}

View file

@ -11,6 +11,8 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.target.common.TargetAnyTarget;
import java.util.Arrays;
public final class RockToken extends TokenImpl {
public RockToken() {
@ -23,6 +25,8 @@ public final class RockToken extends TokenImpl {
new DamageTargetEffect(2), new TargetAnyTarget(), new SacrificeAttachmentCost(), new GenericManaCost(1), new TapSourceCost()
)));
this.addAbility(new EquipAbility(1));
availableImageSetCodes = Arrays.asList("CMR");
}
public RockToken(final RockToken token) {
@ -32,4 +36,9 @@ public final class RockToken extends TokenImpl {
public RockToken copy() {
return new RockToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

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 SalamnderWarriorToken extends TokenImpl {
subtype.add(SubType.WARRIOR);
power = new MageInt(4);
toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("CMR");
}
public SalamnderWarriorToken(final SalamnderWarriorToken token) {
@ -26,4 +30,9 @@ public final class SalamnderWarriorToken extends TokenImpl {
public SalamnderWarriorToken copy() {
return new SalamnderWarriorToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
}
}

View file

@ -43,7 +43,8 @@ public final class SaprolingToken extends TokenImpl {
"C19",
"C20",
"M21",
"ZNC"
"ZNC",
"CMR"
));
}

View file

@ -21,7 +21,7 @@ public final class SoldierToken extends TokenImpl {
toughness = new MageInt(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");
"SOM", "DDO", "M10", "ORI", "EMN", "EMA", "CN2", "C16", "MM3", "E01", "DOM", "MH1", "M20", "C20", "M21", "CMR");
}
public SoldierToken(final SoldierToken token) {
@ -49,5 +49,8 @@ public final class SoldierToken extends TokenImpl {
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("THS")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMR")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
}
}
}

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.TrampleAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class SpawningGroundsBeastToken extends TokenImpl {
@ -19,7 +19,10 @@ public final class SpawningGroundsBeastToken extends TokenImpl {
subtype.add(SubType.BEAST);
power = new MageInt(5);
toughness = new MageInt(5);
this.addAbility(TrampleAbility.getInstance());
availableImageSetCodes = Arrays.asList("C13", "");
}
public SpawningGroundsBeastToken(final SpawningGroundsBeastToken token) {
@ -29,4 +32,13 @@ public final class SpawningGroundsBeastToken extends TokenImpl {
public SpawningGroundsBeastToken copy() {
return new SpawningGroundsBeastToken(this);
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C13")) {
this.setTokenType(4);
}
}
}

View file

@ -5,25 +5,15 @@ 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;
/**
* @author nantuko
*/
public final class SpiritWhiteToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(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"));
}
public SpiritWhiteToken() {
super("Spirit", "1/1 white Spirit creature token with flying");
availableImageSetCodes = tokenImageSets;
cardType.add(CardType.CREATURE);
subtype.add(SubType.SPIRIT);
color.setWhite(true);
@ -31,6 +21,9 @@ public final class SpiritWhiteToken extends TokenImpl {
toughness = new MageInt(1);
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");
}
@Override

View file

@ -29,7 +29,7 @@ public final class TreasureToken extends TokenImpl {
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21");
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR");
}
public TreasureToken(final TreasureToken token) {

View file

@ -24,7 +24,8 @@ public final class ZombieToken extends TokenImpl {
"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");
"RNA", "WAR", "MH1", "M20", "C19", "THB", "M21",
"CMR");
}
@Override