[TSR] added tokens

This commit is contained in:
Oleg Agafonov 2021-03-07 03:08:02 +04:00
parent 7e72ba95bc
commit ccc85c1acb
41 changed files with 172 additions and 133 deletions

View file

@ -5,6 +5,8 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/**
*
* @author spjspj
@ -15,9 +17,12 @@ public final class AssemblyWorkerToken extends TokenImpl {
super("Assembly-Worker", "2/2 Assembly-Worker artifact creature");
cardType.add(CardType.ARTIFACT);
cardType.add(CardType.CREATURE);
this.subtype.add(SubType.ASSEMBLY_WORKER);
subtype.add(SubType.ASSEMBLY_WORKER);
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("4ED", "ATQ", "DDF", "EMA", "MED", "TSR");
}
public AssemblyWorkerToken(final AssemblyWorkerToken token) {

View file

@ -19,7 +19,7 @@ public final class BearToken extends TokenImpl {
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("C15", "JUD", "LGN", "ODY", "ONS", "VMA", "MH1", "ELD", "KHM");
availableImageSetCodes = Arrays.asList("C15", "JUD", "ODY", "ONS", "VMA", "MH1", "ELD", "KHM");
}
public BearToken(final BearToken token) {

View file

@ -7,6 +7,8 @@ import mage.MageInt;
import mage.abilities.common.CanBlockOnlyFlyingAbility;
import mage.abilities.keyword.FlyingAbility;
import java.util.Arrays;
/**
*
* @author spjspj
@ -15,15 +17,19 @@ public final class CloudSpriteToken extends TokenImpl {
public CloudSpriteToken() {
super("Cloud Sprite", "1/1 blue Faerie creature token named Cloud Sprite. It has flying and \"Cloud Sprite can block only creatures with flying.\"");
this.setOriginalExpansionSetCode("FUT");
cardType.add(CardType.CREATURE);
color.setBlue(true);
subtype.add(SubType.FAERIE);
power = new MageInt(1);
toughness = new MageInt(1);
// Flying
this.addAbility(FlyingAbility.getInstance());
// Cloud Sprite can block only creatures with flying.
this.addAbility(new CanBlockOnlyFlyingAbility());
availableImageSetCodes = Arrays.asList("TSR");
}
public CloudSpriteToken(final CloudSpriteToken token) {

View file

@ -6,27 +6,33 @@ import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.ShroudAbility;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class DeadlyGrubToken extends TokenImpl {
public final class DeadlyGrubInsectToken extends TokenImpl {
public DeadlyGrubToken() {
public DeadlyGrubInsectToken() {
super("Insect", "6/1 green Insect creature token with shroud");
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.INSECT);
power = new MageInt(6);
toughness = new MageInt(1);
// Shroud
this.addAbility(ShroudAbility.getInstance());
availableImageSetCodes = Arrays.asList("PLC", "TSR");
}
public DeadlyGrubToken(final DeadlyGrubToken token) {
public DeadlyGrubInsectToken(final DeadlyGrubInsectToken token) {
super(token);
}
public DeadlyGrubToken copy() {
return new DeadlyGrubToken(this);
public DeadlyGrubInsectToken copy() {
return new DeadlyGrubInsectToken(this);
}
}

View file

@ -1,9 +1,8 @@
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;
@ -14,26 +13,18 @@ import mage.abilities.mana.GreenManaAbility;
*
* @author spjspj
*/
public final class FreyaliseLlanowarsFuryToken extends TokenImpl {
public final class ElfDruidToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("C14", "CMA"));
}
public FreyaliseLlanowarsFuryToken() {
public ElfDruidToken() {
this(null, 0);
}
public FreyaliseLlanowarsFuryToken(String setCode) {
public ElfDruidToken(String setCode) {
this(setCode, 0);
}
public FreyaliseLlanowarsFuryToken(String setCode, int tokenType) {
public ElfDruidToken(String setCode, int tokenType) {
super("Elf Druid", "1/1 green Elf Druid creature token with \"{T}: Add {G}.\"");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
this.cardType.add(CardType.CREATURE);
this.color = ObjectColor.GREEN;
this.subtype.add(SubType.ELF);
@ -44,13 +35,15 @@ public final class FreyaliseLlanowarsFuryToken extends TokenImpl {
// {T}: Add {G}.
this.addAbility(new GreenManaAbility());
availableImageSetCodes = Arrays.asList("C14");
}
public FreyaliseLlanowarsFuryToken(final FreyaliseLlanowarsFuryToken token) {
public ElfDruidToken(final ElfDruidToken token) {
super(token);
}
public FreyaliseLlanowarsFuryToken copy() {
return new FreyaliseLlanowarsFuryToken(this);
public ElfDruidToken copy() {
return new ElfDruidToken(this);
}
}

View file

@ -18,7 +18,6 @@ public final class FesteringGoblinToken extends TokenImpl {
public FesteringGoblinToken() {
super("Festering Goblin", "1/1 black Zombie Goblin creature token named Festering Goblin with \"When Festering Goblin dies, target creature gets -1/-1 until end of turn.\"");
this.setOriginalExpansionSetCode("FUT");
cardType.add(CardType.CREATURE);
color.setBlack(true);
subtype.add(SubType.ZOMBIE);

View file

@ -5,6 +5,8 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/**
*
* @author spjspj
@ -18,6 +20,8 @@ public final class GiantToken extends TokenImpl {
color.setRed(true);
power = new MageInt(4);
toughness = new MageInt(4);
availableImageSetCodes = Arrays.asList("TSR");
}
public GiantToken(final GiantToken token) {

View file

@ -14,16 +14,10 @@ import java.util.List;
*/
public final class GoblinToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("10E", "ALA", "SOM", "M10", "NPH", "M13", "RTR",
"MMA", "M15", "C14", "KTK", "EVG", "DTK", "ORI", "DDG", "DDN", "EVG", "MM2",
"MM3", "EMA", "C16", "DOM", "ANA", "RNA", "WAR", "MH1"));
}
public GoblinToken(boolean withHaste) {
this();
// token image don't have haste info so it's ok to use same class for different versions
if (withHaste) {
addAbility(HasteAbility.getInstance());
this.description = "1/1 red Goblin creature token with haste";
@ -31,22 +25,16 @@ public final class GoblinToken extends TokenImpl {
}
public GoblinToken() {
this(null, 0);
}
public GoblinToken(String setCode) {
this(setCode, 0);
}
public GoblinToken(String setCode, int tokenType) {
super("Goblin", "1/1 red Goblin creature token");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
cardType.add(CardType.CREATURE);
subtype.add(SubType.GOBLIN);
color.setRed(true);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("10E", "ALA", "SOM", "M10", "NPH", "M13", "RTR",
"MMA", "M15", "C14", "KTK", "EVG", "DTK", "ORI", "DDG", "DDN", "EVG", "MM2",
"MM3", "EMA", "C16", "DOM", "ANA", "RNA", "WAR", "MH1", "TSR");
}
public GoblinToken(final GoblinToken token) {

View file

@ -20,7 +20,6 @@ public final class GoldmeadowHarrierToken extends TokenImpl {
public GoldmeadowHarrierToken() {
super("Goldmeadow Harrier", "1/1 white Kithkin Soldier creature token named Goldmeadow Harrier with \"{W}, {T}: Tap target creature.\"");
this.setOriginalExpansionSetCode("FUT");
cardType.add(CardType.CREATURE);
color.setWhite(true);
subtype.add(SubType.KITHKIN);

View file

@ -19,9 +19,11 @@ public final class GriffinToken extends TokenImpl {
subtype.add(SubType.GRIFFIN);
power = new MageInt(2);
toughness = new MageInt(2);
// Flying
this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes.addAll(Arrays.asList("DDG", "DDH", "DDL", "TSP", "M21"));
availableImageSetCodes = Arrays.asList("DDG", "DDH", "DDL", "TSP", "M21", "TSR");
}
public GriffinToken(final GriffinToken token) {

View file

@ -5,6 +5,8 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/**
*
* @author spjspj
@ -18,6 +20,8 @@ public final class KherKeepKoboldToken extends TokenImpl {
subtype.add(SubType.KOBOLD);
power = new MageInt(0);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("TSR");
}
public KherKeepKoboldToken(final KherKeepKoboldToken token) {
super(token);

View file

@ -20,7 +20,7 @@ public final class KithkinSoldierToken extends TokenImpl {
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("CMD", "EVE", "FUT", "LRW", "MMA", "MOR", "SHM", "MMA", "KHC");
availableImageSetCodes = Arrays.asList("CMD", "EVE", "LRW", "MMA", "MOR", "SHM", "MMA", "KHC");
}
public KithkinSoldierToken(final KithkinSoldierToken token) {

View file

@ -1,11 +1,12 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.mana.GreenManaAbility;
import java.util.Arrays;
/**
*
* @author spjspj
@ -14,7 +15,6 @@ public final class LlanowarElvesToken extends TokenImpl {
public LlanowarElvesToken() {
super("Llanowar Elves", "1/1 green Elf Druid creature token named Llanowar Elves with \"{T}: Add {G}.\"");
this.setOriginalExpansionSetCode("FUT");
cardType.add(CardType.CREATURE);
color.setGreen(true);
subtype.add(SubType.ELF);
@ -22,7 +22,10 @@ public final class LlanowarElvesToken extends TokenImpl {
power = new MageInt(1);
toughness = new MageInt(1);
// {T}: Add {G}.
this.addAbility(new GreenManaAbility());
availableImageSetCodes = Arrays.asList("TSR");
}
public LlanowarElvesToken(final LlanowarElvesToken token) {

View file

@ -5,27 +5,30 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/**
*
* @author spjspj
*/
public final class SliversmithToken extends TokenImpl {
public final class MetallicSliverToken extends TokenImpl {
public SliversmithToken() {
public MetallicSliverToken() {
super("Metallic Sliver", "1/1 colorless Sliver creature token named Metallic Sliver");
cardType.add(CardType.CREATURE);
cardType.add(CardType.ARTIFACT);
subtype.add(SubType.SLIVER);
power = new MageInt(1);
toughness = new MageInt(1);
this.setOriginalExpansionSetCode("FUT");
availableImageSetCodes = Arrays.asList("TSR");
}
public SliversmithToken(final SliversmithToken token) {
public MetallicSliverToken(final MetallicSliverToken token) {
super(token);
}
public SliversmithToken copy() {
return new SliversmithToken(this);
public MetallicSliverToken copy() {
return new MetallicSliverToken(this);
}
}

View file

@ -22,7 +22,7 @@ public final class PegasusToken extends TokenImpl {
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("C14", "C19", "CMD", "EXO", "GPT", "MIR", "TMP", "TPR", "TSP", "THB", "KHC");
availableImageSetCodes = Arrays.asList("C14", "C19", "CMD", "EXO", "GPT", "MIR", "TMP", "TSP", "THB", "KHC");
}
public PegasusToken(final PegasusToken token) {

View file

@ -1,4 +1,3 @@
package mage.game.permanent.token;
import mage.constants.CardType;
@ -6,6 +5,8 @@ import mage.constants.SubType;
import mage.MageInt;
import mage.abilities.keyword.ReachAbility;
import java.util.Arrays;
/**
*
* @author spjspj
@ -20,7 +21,10 @@ public final class PenumbraSpiderToken extends TokenImpl {
subtype.add(SubType.SPIDER);
power = new MageInt(2);
toughness = new MageInt(4);
addAbility(ReachAbility.getInstance());
availableImageSetCodes = Arrays.asList("MMA", "PC2", "TSP", "TSR");
}
public PenumbraSpiderToken(final PenumbraSpiderToken token) {

View file

@ -5,6 +5,8 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.MageInt;
import java.util.Arrays;
/**
*
* @author spjspj
@ -18,6 +20,8 @@ public final class PongifyApeToken extends TokenImpl {
subtype.add(SubType.APE);
power = new MageInt(3);
toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("10E", "C14", "GVL", "DDD", "DDG", "PLC", "ULG", "UNH", "TSR");
}
public PongifyApeToken(final PongifyApeToken token) {

View file

@ -19,7 +19,7 @@ public final class RatToken extends TokenImpl {
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("C17", "CHK", "GTC", "SHM", "STH", "TPR", "ELD", "ZNC");
availableImageSetCodes = Arrays.asList("C17", "CHK", "GTC", "SHM", "ELD", "ZNC");
}
public RatToken(final RatToken token) {

View file

@ -7,6 +7,8 @@ import mage.MageInt;
import mage.ObjectColor;
import mage.abilities.keyword.ReachAbility;
import java.util.Arrays;
/**
*
* @author spjspj
@ -15,14 +17,16 @@ public final class RenownedWeaverSpiderToken extends TokenImpl {
public RenownedWeaverSpiderToken() {
super("Spider", "1/3 green Spider enchantment creature token with reach");
this.setOriginalExpansionSetCode("JOU");
cardType.add(CardType.ENCHANTMENT);
cardType.add(CardType.CREATURE);
color.setColor(ObjectColor.GREEN);
subtype.add(SubType.SPIDER);
power = new MageInt(1);
toughness = new MageInt(3);
this.addAbility(ReachAbility.getInstance());
availableImageSetCodes = Arrays.asList("JOU");
}
public RenownedWeaverSpiderToken(final RenownedWeaverSpiderToken token) {

View file

@ -9,6 +9,8 @@ import mage.abilities.keyword.FlankingAbility;
import mage.abilities.keyword.HasteAbility;
import mage.abilities.keyword.ProtectionAbility;
import java.util.Arrays;
/**
*
* @author spjspj
@ -22,9 +24,12 @@ public final class RiftmarkedKnightToken extends TokenImpl {
subtype.add(SubType.KNIGHT);
power = new MageInt(2);
toughness = new MageInt(2);
this.addAbility(ProtectionAbility.from(ObjectColor.WHITE));
this.addAbility(new FlankingAbility());
this.addAbility(ProtectionAbility.from(ObjectColor.WHITE));
this.addAbility(HasteAbility.getInstance());
availableImageSetCodes = Arrays.asList("PLC", "TSR");
}
public RiftmarkedKnightToken(final RiftmarkedKnightToken token) {

View file

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

View file

@ -19,6 +19,8 @@ import mage.players.Player;
import mage.target.Target;
import mage.target.common.TargetCardInExile;
import java.util.Arrays;
/**
* @author spjspj
*/
@ -31,12 +33,18 @@ public final class SengirNosferatuBatToken extends TokenImpl {
subtype.add(SubType.BAT);
power = new MageInt(1);
toughness = new MageInt(2);
// Flying
this.addAbility(FlyingAbility.getInstance());
// {1}{B}, Sacrifice this creature: Return an exiled card named Sengir Nosferatu to the battlefield under its owners control.
ReturnSengirNosferatuEffect effect = new ReturnSengirNosferatuEffect();
effect.setText("Return an exiled card named Sengir Nosferatu to the battlefield under its owner's control.");
Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}{B}"));
ability.addCost(new SacrificeSourceCost());
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("TSP", "TSR");
}
public SengirNosferatuBatToken(final SengirNosferatuBatToken token) {

View file

@ -20,8 +20,9 @@ public final class SoldierToken extends TokenImpl {
power = new MageInt(1);
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", "CMR", "KHC");
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", "CMR", "KHC", "TSR");
}
public SoldierToken(final SoldierToken token) {

View file

@ -1,5 +1,3 @@
package mage.game.permanent.token;
import mage.constants.CardType;
import mage.constants.SubType;
@ -18,7 +16,6 @@ public final class SparkElementalToken extends TokenImpl {
public SparkElementalToken() {
super("Spark Elemental", "3/1 red Elemental creature token named Spark Elemental with trample, haste, and \"At the beginning of the end step, sacrifice Spark Elemental.\"");
this.setOriginalExpansionSetCode("FUT");
cardType.add(CardType.CREATURE);
color.setRed(true);
subtype.add(SubType.ELEMENTAL);

View file

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