mirror of
https://github.com/correl/mage.git
synced 2024-11-15 03:00:16 +00:00
[VOW] added tokens and images support
This commit is contained in:
parent
dd72e078b5
commit
3cb721fbd9
21 changed files with 143 additions and 23 deletions
|
@ -691,6 +691,26 @@ public class ScryfallImageSupportTokens {
|
|||
put("VOC/Spirit/2", "https://api.scryfall.com/cards/tvoc/3/en?format=image"); // 3/3
|
||||
put("VOC/Thopter", "https://api.scryfall.com/cards/tvoc/6/en?format=image");
|
||||
|
||||
// VOW
|
||||
put("VOW/Blood", "https://api.scryfall.com/cards/tvow/17/en?format=image");
|
||||
put("VOW/Boar", "https://api.scryfall.com/cards/tvow/12/en?format=image");
|
||||
put("VOW/Emblem Chandra, Dressed to Kill", "https://api.scryfall.com/cards/tvow/20/en?format=image");
|
||||
put("VOW/Dragon Illusion", "https://api.scryfall.com/cards/tvow/9/en?format=image");
|
||||
put("VOW/Human Soldier", "https://api.scryfall.com/cards/tvow/15/en?format=image");
|
||||
put("VOW/Human/1", "https://api.scryfall.com/cards/tvow/10/en?format=image"); // red
|
||||
put("VOW/Human/2", "https://api.scryfall.com/cards/tvow/1/en?format=image"); // white
|
||||
put("VOW/Insect", "https://api.scryfall.com/cards/tvow/13/en?format=image");
|
||||
put("VOW/Slug", "https://api.scryfall.com/cards/tvow/6/en?format=image");
|
||||
put("VOW/Spirit Cleric", "https://api.scryfall.com/cards/tvow/4/en?format=image");
|
||||
put("VOW/Spirit/1", "https://api.scryfall.com/cards/tvow/2/en?format=image"); // 1/1
|
||||
put("VOW/Spirit/2", "https://api.scryfall.com/cards/tvow/3/en?format=image"); // 4/4
|
||||
put("VOW/Treasure", "https://api.scryfall.com/cards/tvow/18/en?format=image");
|
||||
put("VOW/Vampire/1", "https://api.scryfall.com/cards/tvow/16/en?format=image"); // lifelink
|
||||
put("VOW/Vampire/2", "https://api.scryfall.com/cards/tvow/7/en?format=image"); // flying, lifelink
|
||||
put("VOW/Wolf/1", "https://api.scryfall.com/cards/tvow/14/en?format=image"); // green
|
||||
put("VOW/Wolf/2", "https://api.scryfall.com/cards/tvow/11/en?format=image"); // red
|
||||
put("VOW/Zombie/1", "https://api.scryfall.com/cards/tvow/8/en?format=image"); // 2/2
|
||||
put("VOW/Zombie/2", "https://api.scryfall.com/cards/tvow/5/en?format=image"); // */*
|
||||
|
||||
// generate supported sets
|
||||
supportedSets.clear();
|
||||
|
|
|
@ -114,6 +114,7 @@
|
|||
|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|
|
||||
|Generate|EMBLEM:VOW|Chandra, Dressed to Kill||Emblem Chandra|ChandraDressedToKillEmblem|
|
||||
|
||||
# Planes
|
||||
|Generate|PLANE:PCA|Plane - Academy at Tolaria West|||AcademyAtTolariaWestPlane|
|
||||
|
@ -1644,3 +1645,23 @@
|
|||
|Generate|TOK:VOC|Spirit|1||SpiritToken|
|
||||
|Generate|TOK:VOC|Spirit|2||AnotherSpiritToken|
|
||||
|Generate|TOK:VOC|Thopter|||ThopterColorlessToken|
|
||||
|
||||
# VOW
|
||||
|Generate|TOK:VOW|Blood|||BloodToken|
|
||||
|Generate|TOK:VOW|Boar|||Boar3Token|
|
||||
|Generate|TOK:VOW|Dragon Illusion|||DragonIllusionToken|
|
||||
|Generate|TOK:VOW|Human|1||RedHumanToken|
|
||||
|Generate|TOK:VOW|Human|2||HumanToken|
|
||||
|Generate|TOK:VOW|Human Soldier|||HumanSoldierTrainingToken|
|
||||
|Generate|TOK:VOW|Insect|||InsectToken|
|
||||
|Generate|TOK:VOW|Slug|||SlugToken|
|
||||
|Generate|TOK:VOW|Spirit|1||SpiritWhiteToken|
|
||||
|Generate|TOK:VOW|Spirit|2||DorotheasRetributionSpiritToken|
|
||||
|Generate|TOK:VOW|Spirit Cleric|||SpiritClericToken|
|
||||
|Generate|TOK:VOW|Treasure|||TreasureToken|
|
||||
|Generate|TOK:VOW|Vampire|1||EdgarMarkovsCoffinVampireToken|
|
||||
|Generate|TOK:VOW|Vampire|2||VampireLifelinkToken|
|
||||
|Generate|TOK:VOW|Wolf|1||WolfToken|
|
||||
|Generate|TOK:VOW|Wolf|2||RedWolfToken|
|
||||
|Generate|TOK:VOW|Zombie|1||ZombieToken|
|
||||
|Generate|TOK:VOW|Zombie|2||StitcherGeralfZombieToken|
|
|
@ -14,7 +14,7 @@ import mage.constants.TargetController;
|
|||
import mage.counters.CounterType;
|
||||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
import mage.game.permanent.token.EdgarMarkovsCoffinToken;
|
||||
import mage.game.permanent.token.EdgarMarkovsCoffinVampireToken;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
|
@ -33,7 +33,7 @@ public final class EdgarMarkovsCoffin extends CardImpl {
|
|||
|
||||
// At the beginning of your upkeep, create a 1/1 white and black Vampire creature token with lifelink and put a bloodline counter on Edgar Markov's Coffin. Then if there are three or more bloodline counters on it, remove those counters and transform it.
|
||||
Ability ability = new BeginningOfUpkeepTriggeredAbility(
|
||||
new CreateTokenEffect(new EdgarMarkovsCoffinToken()),
|
||||
new CreateTokenEffect(new EdgarMarkovsCoffinVampireToken()),
|
||||
TargetController.YOU, false
|
||||
);
|
||||
ability.addEffect(new AddCountersSourceEffect(
|
||||
|
|
|
@ -20,7 +20,7 @@ import mage.filter.common.FilterControlledPermanent;
|
|||
import mage.filter.common.FilterCreaturePermanent;
|
||||
import mage.filter.predicate.permanent.TokenPredicate;
|
||||
import mage.game.permanent.token.BloodToken;
|
||||
import mage.game.permanent.token.EdgarMarkovsCoffinToken;
|
||||
import mage.game.permanent.token.EdgarMarkovsCoffinVampireToken;
|
||||
import mage.target.common.TargetControlledPermanent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@ -49,7 +49,7 @@ public final class GlassCastHeart extends CardImpl {
|
|||
|
||||
// {B}, {T}, Pay 1 life: Create a 1/1 white and black Vampire creature token with lifelink.
|
||||
Ability ability = new SimpleActivatedAbility(
|
||||
new CreateTokenEffect(new EdgarMarkovsCoffinToken()), new ManaCostsImpl<>("{B}")
|
||||
new CreateTokenEffect(new EdgarMarkovsCoffinVampireToken()), new ManaCostsImpl<>("{B}")
|
||||
);
|
||||
ability.addCost(new TapSourceCost());
|
||||
ability.addCost(new PayLifeCost(1));
|
||||
|
|
|
@ -10,6 +10,8 @@ import mage.abilities.effects.common.DrawCardSourceControllerEffect;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
|
@ -28,6 +30,8 @@ public final class BloodToken extends TokenImpl {
|
|||
ability.addCost(new DiscardCardCost());
|
||||
ability.addCost(new SacrificeSourceCost().setText("Sacrifice this artifact"));
|
||||
this.addAbility(ability);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
public BloodToken(final BloodToken token) {
|
||||
|
|
|
@ -4,6 +4,8 @@ import mage.MageInt;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
|
@ -16,6 +18,8 @@ public final class Boar3Token extends TokenImpl {
|
|||
subtype.add(SubType.BOAR);
|
||||
power = new MageInt(3);
|
||||
toughness = new MageInt(1);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
public Boar3Token(final Boar3Token token) {
|
||||
|
|
|
@ -6,6 +6,8 @@ import mage.abilities.keyword.HasteAbility;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
|
@ -25,8 +27,10 @@ public class DragonIllusionToken extends TokenImpl {
|
|||
power = new MageInt(xValue);
|
||||
toughness = new MageInt(xValue);
|
||||
|
||||
addAbility(FlyingAbility.getInstance());
|
||||
addAbility(HasteAbility.getInstance());
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
this.addAbility(HasteAbility.getInstance());
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
private DragonIllusionToken(final DragonIllusionToken token) {
|
||||
|
|
|
@ -5,12 +5,14 @@ import mage.abilities.keyword.LifelinkAbility;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
public final class EdgarMarkovsCoffinToken extends TokenImpl {
|
||||
public final class EdgarMarkovsCoffinVampireToken extends TokenImpl {
|
||||
|
||||
public EdgarMarkovsCoffinToken() {
|
||||
public EdgarMarkovsCoffinVampireToken() {
|
||||
super("Vampire", "1/1 white and black Vampire creature token with lifelink");
|
||||
cardType.add(CardType.CREATURE);
|
||||
color.setWhite(true);
|
||||
|
@ -18,14 +20,18 @@ public final class EdgarMarkovsCoffinToken extends TokenImpl {
|
|||
subtype.add(SubType.VAMPIRE);
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
|
||||
// Lifelink
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
public EdgarMarkovsCoffinToken(final EdgarMarkovsCoffinToken token) {
|
||||
public EdgarMarkovsCoffinVampireToken(final EdgarMarkovsCoffinVampireToken token) {
|
||||
super(token);
|
||||
}
|
||||
|
||||
public EdgarMarkovsCoffinToken copy() {
|
||||
return new EdgarMarkovsCoffinToken(this);
|
||||
public EdgarMarkovsCoffinVampireToken copy() {
|
||||
return new EdgarMarkovsCoffinVampireToken(this);
|
||||
}
|
||||
}
|
|
@ -5,6 +5,8 @@ import mage.abilities.keyword.TrainingAbility;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
|
@ -19,7 +21,11 @@ public class HumanSoldierTrainingToken extends TokenImpl {
|
|||
subtype.add(SubType.SOLDIER);
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
|
||||
// Training (Whenever this creature attacks with another creature with greater power, put a +1/+1 counter on this creature.)
|
||||
this.addAbility(new TrainingAbility());
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
private HumanSoldierTrainingToken(final HumanSoldierTrainingToken token) {
|
||||
|
|
|
@ -19,7 +19,7 @@ public final class HumanToken extends TokenImpl {
|
|||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
|
||||
availableImageSetCodes.addAll(Arrays.asList("DKA", "AVR", "FNMP", "RNA", "ELD", "C19", "C20", "MID"));
|
||||
availableImageSetCodes.addAll(Arrays.asList("DKA", "AVR", "FNMP", "RNA", "ELD", "C19", "C20", "MID", "VOW"));
|
||||
}
|
||||
|
||||
public HumanToken(final HumanToken token) {
|
||||
|
@ -34,8 +34,9 @@ public final class HumanToken extends TokenImpl {
|
|||
@Override
|
||||
public void setExpansionSetCodeForImage(String code) {
|
||||
super.setExpansionSetCodeForImage(code);
|
||||
if (getOriginalExpansionSetCode().equals("AVR")) {
|
||||
this.setTokenType(1);
|
||||
|
||||
if (getOriginalExpansionSetCode().equals("VOW")) {
|
||||
this.setTokenType(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -24,7 +24,7 @@ public final class InsectToken extends TokenImpl {
|
|||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("M10", "MM2", "SOI", "ZNR");
|
||||
availableImageSetCodes = Arrays.asList("M10", "MM2", "SOI", "ZNR", "VOW");
|
||||
}
|
||||
|
||||
public InsectToken(final InsectToken token) {
|
||||
|
|
|
@ -6,6 +6,8 @@ import mage.constants.SubType;
|
|||
import mage.MageInt;
|
||||
import mage.ObjectColor;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author spjspj
|
||||
|
@ -20,6 +22,17 @@ public final class RedHumanToken extends TokenImpl {
|
|||
this.color.setRed(true);
|
||||
this.power = new MageInt(1);
|
||||
this.toughness = new MageInt(1);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("AVR", "EMN", "VOW");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExpansionSetCodeForImage(String code) {
|
||||
super.setExpansionSetCodeForImage(code);
|
||||
|
||||
if (getOriginalExpansionSetCode().equals("AVR")) {
|
||||
this.setTokenType(2);
|
||||
}
|
||||
}
|
||||
|
||||
public RedHumanToken(final RedHumanToken token) {
|
||||
|
|
|
@ -4,6 +4,8 @@ import mage.MageInt;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
|
@ -17,6 +19,17 @@ public final class RedWolfToken extends TokenImpl {
|
|||
subtype.add(SubType.WOLF);
|
||||
power = new MageInt(3);
|
||||
toughness = new MageInt(2);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExpansionSetCodeForImage(String code) {
|
||||
super.setExpansionSetCodeForImage(code);
|
||||
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("VOW")) {
|
||||
setTokenType(2);
|
||||
}
|
||||
}
|
||||
|
||||
private RedWolfToken(final RedWolfToken token) {
|
||||
|
|
|
@ -4,6 +4,8 @@ import mage.MageInt;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author TheElk801
|
||||
*/
|
||||
|
@ -16,6 +18,8 @@ public final class SlugToken extends TokenImpl {
|
|||
subtype.add(SubType.SLUG);
|
||||
power = new MageInt(1);
|
||||
toughness = new MageInt(1);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
public SlugToken(final SlugToken token) {
|
||||
|
|
|
@ -12,6 +12,8 @@ import mage.constants.SubType;
|
|||
import mage.game.Game;
|
||||
import mage.game.permanent.Permanent;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
|
@ -28,7 +30,10 @@ public class SpiritClericToken extends TokenImpl {
|
|||
power = new MageInt(0);
|
||||
toughness = new MageInt(0);
|
||||
|
||||
// This creature’s power and toughness are each equal to the number of Spirits you control.
|
||||
this.addAbility(new SimpleStaticAbility(new SetPowerToughnessSourceEffect(SpiritClericTokenValue.instance, Duration.EndOfGame)));
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
private SpiritClericToken(final SpiritClericToken token) {
|
||||
|
|
|
@ -23,7 +23,8 @@ 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", "MID");
|
||||
"SOI", "EMA", "C16", "MM3", "CMA", "E01", "ANA", "GPT", "RAV", "EMN", "RNA", "M20", "C20", "CMR", "KHM",
|
||||
"MID", "VOW");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -23,7 +23,7 @@ public final class StitcherGeralfZombieToken extends TokenImpl {
|
|||
power = new MageInt(xValue);
|
||||
toughness = new MageInt(xValue);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("C14", "MIC");
|
||||
availableImageSetCodes = Arrays.asList("C14", "MIC", "VOW");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -37,6 +37,10 @@ public final class StitcherGeralfZombieToken extends TokenImpl {
|
|||
if (getOriginalExpansionSetCode().equals("MIC")) {
|
||||
this.setTokenType(2);
|
||||
}
|
||||
|
||||
if (getOriginalExpansionSetCode().equals("VOW")) {
|
||||
this.setTokenType(2);
|
||||
}
|
||||
}
|
||||
|
||||
public StitcherGeralfZombieToken(final StitcherGeralfZombieToken token) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public final class TreasureToken extends TokenImpl {
|
|||
ability.addCost(new SacrificeSourceCost());
|
||||
this.addAbility(ability);
|
||||
|
||||
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR", "KHM", "STX", "MH2", "AFR");
|
||||
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR", "KHM", "STX", "MH2", "AFR", "VOW");
|
||||
}
|
||||
|
||||
public TreasureToken(final TreasureToken token) {
|
||||
|
|
|
@ -6,6 +6,8 @@ import mage.abilities.keyword.LifelinkAbility;
|
|||
import mage.constants.CardType;
|
||||
import mage.constants.SubType;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author weirddan455
|
||||
|
@ -19,8 +21,20 @@ public class VampireLifelinkToken extends TokenImpl {
|
|||
subtype.add(SubType.VAMPIRE);
|
||||
power = new MageInt(2);
|
||||
toughness = new MageInt(3);
|
||||
addAbility(FlyingAbility.getInstance());
|
||||
addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
this.addAbility(FlyingAbility.getInstance());
|
||||
this.addAbility(LifelinkAbility.getInstance());
|
||||
|
||||
availableImageSetCodes = Arrays.asList("VOW");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExpansionSetCodeForImage(String code) {
|
||||
super.setExpansionSetCodeForImage(code);
|
||||
|
||||
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("VOW")) {
|
||||
setTokenType(2);
|
||||
}
|
||||
}
|
||||
|
||||
private VampireLifelinkToken(final VampireLifelinkToken token) {
|
||||
|
|
|
@ -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", "MID");
|
||||
"THB", "AFR", "MID", "VOW");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -25,7 +25,7 @@ public final class ZombieToken extends TokenImpl {
|
|||
"CNS", "MMA", "BNG", "KTK", "DTK", "ORI", "OGW",
|
||||
"SOI", "EMN", "EMA", "MM3", "AKH", "CMA", "E01",
|
||||
"RNA", "WAR", "MH1", "M20", "C19", "THB", "M21",
|
||||
"CMR", "C21", "MH2", "AFR", "MIC");
|
||||
"CMR", "C21", "MH2", "AFR", "MIC", "VOW");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
Loading…
Reference in a new issue