[VOC] added tokens and images support

This commit is contained in:
Oleg Agafonov 2022-02-05 13:03:35 +04:00
parent 1fcdbe4b63
commit 424fc919a7
10 changed files with 47 additions and 32 deletions

View file

@ -683,6 +683,14 @@ public class ScryfallImageSupportTokens {
put("MID/Zombie/1", "https://api.scryfall.com/cards/tmid/5/en?format=image"); // decayed
put("MID/Zombie/2", "https://api.scryfall.com/cards/tmid/15/en?format=image"); // menace
// VOC
put("VOC/Angel", "https://api.scryfall.com/cards/tvoc/2/en?format=image");
put("VOC/Bat", "https://api.scryfall.com/cards/tvoc/4/en?format=image");
put("VOC/Clue", "https://api.scryfall.com/cards/tvoc/5/en?format=image");
put("VOC/Spirit/1", "https://api.scryfall.com/cards/tvoc/1/en?format=image"); // 1/1
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");
// generate supported sets
supportedSets.clear();

View file

@ -1635,4 +1635,12 @@
|Generate|TOK:MID|Vampire|||HungryForMoreVampireToken|
|Generate|TOK:MID|Wolf|||WolfToken|
|Generate|TOK:MID|Zombie|1||ZombieDecayedToken|
|Generate|TOK:MID|Zombie|2||ZombieMenaceToken|
|Generate|TOK:MID|Zombie|2||ZombieMenaceToken|
# VOC
|Generate|TOK:VOC|Angel|||AngelToken|
|Generate|TOK:VOC|Bat|||BatToken|
|Generate|TOK:VOC|Clue|||ClueArtifactToken|
|Generate|TOK:VOC|Spirit|1||SpiritToken|
|Generate|TOK:VOC|Spirit|2||AnotherSpiritToken|
|Generate|TOK:VOC|Thopter|||ThopterColorlessToken|

View file

@ -1,4 +1,3 @@
package mage.cards.g;
import java.util.UUID;
@ -34,6 +33,7 @@ public final class GeistOfSaintTraft extends CardImpl {
// Hexproof
this.addAbility(HexproofAbility.getInstance());
// Whenever Geist of Saint Traft attacks, create a 4/4 white Angel creature token with flying tapped and attacking. Exile that token at end of combat.
this.addAbility(new AttacksTriggeredAbility(new GeistOfSaintTraftEffect(), false));
}

View file

@ -27,6 +27,7 @@ public final class OyobiWhoSplitTheHeavens extends CardImpl {
this.power = new MageInt(3);
this.toughness = new MageInt(6);
this.addAbility(FlyingAbility.getInstance());
// Whenever you cast a Spirit or Arcane spell, create a 3/3 white Spirit creature token with flying.
this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new AnotherSpiritToken()), StaticFilters.FILTER_SPIRIT_OR_ARCANE_CARD, false));
}

View file

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

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 AnotherSpiritToken extends TokenImpl {
@ -19,8 +19,21 @@ public final class AnotherSpiritToken extends TokenImpl {
subtype.add(SubType.SPIRIT);
power = new MageInt(3);
toughness = new MageInt(3);
this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("BOK", "VOC");
}
@Override
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("VOC")) {
setTokenType(2);
}
}
public AnotherSpiritToken(final AnotherSpiritToken token) {
super(token);
}

View file

@ -18,7 +18,7 @@ public final class BatToken extends TokenImpl {
toughness = new MageInt(1);
this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("GVL", "DDD", "GPT", "MMA", "M19", "MID");
availableImageSetCodes = Arrays.asList("GVL", "DDD", "GPT", "MMA", "M19", "MID", "VOC");
}
public BatToken(final BatToken token) {

View file

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

View file

@ -4,40 +4,21 @@ import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author Loki
*/
public final class SpiritToken extends TokenImpl {
static final private List<String> tokenImageSets = new ArrayList<>();
static {
tokenImageSets.addAll(Arrays.asList("CHK", "EMA", "C16", "C19"));
}
public SpiritToken() {
this(null, 0);
}
public SpiritToken(String setCode) {
this(setCode, 0);
}
public SpiritToken(String setCode, int tokenType) {
super("Spirit", "1/1 colorless Spirit creature token");
availableImageSetCodes = tokenImageSets;
setOriginalExpansionSetCode(setCode);
if (tokenType > 0) {
setTokenType(tokenType);
}
cardType.add(CardType.CREATURE);
subtype.add(SubType.SPIRIT);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("C19", "CHK", "EMA", "EXP", "SOK", "V12", "VOC");
}
@Override
@ -47,6 +28,10 @@ public final class SpiritToken extends TokenImpl {
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("BOK")) {
setTokenType(2);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("EMA")) {
setTokenType(2);
}
}
public SpiritToken(final SpiritToken token) {

View file

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