Added token images for SNC (#8946)

* Fixed knight token images from the DOM set not displaying

* Fixed the name reference of RNA's thopter token

* Fixed misspelling regarding Tibalt, Cosmic Impostor's emblem token causing it not to show in game

* Updated Faerie Dragon token to be present in game

* Removed redundant code regarding KLD constructs and improved thematic consistency

* Added Scryfall token download links for DTK

* Added support for and assigned SNC token images
This commit is contained in:
PurpleCrowbar 2022-05-24 06:06:51 +01:00 committed by GitHub
parent 758f1cb896
commit 4a167b3a17
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 88 additions and 20 deletions

View file

@ -131,11 +131,8 @@ public class ScryfallImageSupportTokens {
//KLD
put("KLD/Beast", "https://api.scryfall.com/cards/tkld/1/en?format=image");
put("KLD/Emblem Chandra", "https://api.scryfall.com/cards/tkld/10/en?format=image");
// same construct images uses for different classes, so KLD have 4 instead 2 tokens
put("KLD/Construct/1", "https://api.scryfall.com/cards/tkld/2/en?format=image");
put("KLD/Construct/2", "https://api.scryfall.com/cards/tkld/3/en?format=image");
put("KLD/Construct/3", "https://api.scryfall.com/cards/tkld/2/en?format=image");
put("KLD/Construct/4", "https://api.scryfall.com/cards/tkld/3/en?format=image");
put("KLD/Emblem Dovin", "https://api.scryfall.com/cards/tkld/12/en?format=image");
put("KLD/Emblem Nissa", "https://api.scryfall.com/cards/tkld/11/en?format=image");
put("KLD/Servo/1", "https://api.scryfall.com/cards/tkld/4/en?format=image");
@ -520,7 +517,7 @@ public class ScryfallImageSupportTokens {
put("KHM/Troll Warrior", "https://api.scryfall.com/cards/tkhm/16/en?format=image");
put("KHM/Zombie Berserker", "https://api.scryfall.com/cards/tkhm/9/en?format=image");
put("KHM/Emblem Kaya the Inexorable", "https://api.scryfall.com/cards/tkhm/20/en?format=image");
put("KHM/Emblem Tibalt Cosmic Imposter", "https://api.scryfall.com/cards/tkhm/21/en?format=image");
put("KHM/Emblem Tibalt, Cosmic Impostor", "https://api.scryfall.com/cards/tkhm/21/en?format=image");
put("KHM/Emblem Tyvar Kell", "https://api.scryfall.com/cards/tkhm/22/en?format=image");
// KHC
@ -842,6 +839,33 @@ public class ScryfallImageSupportTokens {
put ("2XM/Phyrexian Wurm/1", "https://api.scryfall.com/cards/t2xm/29/en?format=image");
put ("2XM/Phyrexian Wurm/2", "https://api.scryfall.com/cards/t2xm/30/en?format=image");
// DTK
put ("DTK/Djinn Monk", "https://api.scryfall.com/cards/tdtk/2/en?format=image");
put ("DTK/Dragon", "https://api.scryfall.com/cards/tdtk/5/en?format=image");
put ("DTK/Goblin", "https://api.scryfall.com/cards/tdtk/6/en?format=image");
put ("DTK/Emblem Narset", "https://api.scryfall.com/cards/tdtk/8/en?format=image");
put ("DTK/Warrior", "https://api.scryfall.com/cards/tdtk/1/en?format=image");
put ("DTK/Zombie", "https://api.scryfall.com/cards/tdtk/3/en?format=image");
put ("DTK/Zombie Horror", "https://api.scryfall.com/cards/tdtk/4/en?format=image");
// SNC
put ("SNC/Angel", "https://api.scryfall.com/cards/tsnc/2/en?format=image");
put ("SNC/Cat", "https://api.scryfall.com/cards/tsnc/9/en?format=image");
put ("SNC/Citizen", "https://api.scryfall.com/cards/tsnc/12/en?format=image");
put ("SNC/Devil", "https://api.scryfall.com/cards/tsnc/8/en?format=image");
put ("SNC/Dog", "https://api.scryfall.com/cards/tsnc/10/en?format=image");
put ("SNC/Fish", "https://api.scryfall.com/cards/tsnc/4/en?format=image");
put ("SNC/Ogre Warrior", "https://api.scryfall.com/cards/tsnc/6/en?format=image");
put ("SNC/Rhino Warrior", "https://api.scryfall.com/cards/tsnc/11/en?format=image");
put ("SNC/Rogue", "https://api.scryfall.com/cards/tsnc/7/en?format=image");
put ("SNC/Spirit", "https://api.scryfall.com/cards/tsnc/3/en?format=image");
put ("SNC/Treasure/1", "https://api.scryfall.com/cards/tsnc/13/en?format=image");
put ("SNC/Treasure/2", "https://api.scryfall.com/cards/tsnc/14/en?format=image");
put ("SNC/Treasure/3", "https://api.scryfall.com/cards/tsnc/15/en?format=image");
put ("SNC/Treasure/4", "https://api.scryfall.com/cards/tsnc/16/en?format=image");
put ("SNC/Treasure/5", "https://api.scryfall.com/cards/tsnc/17/en?format=image");
put ("SNC/Wizard", "https://api.scryfall.com/cards/tsnc/5/en?format=image");
// generate supported sets
supportedSets.clear();
for (String cardName : this.keySet()) {

View file

@ -104,7 +104,7 @@
|Generate|EMBLEM:M21|Garruk, Unleashed||Emblem Garruk|GarrukUnleashedEmblem|
|Generate|EMBLEM:M21|Liliana, Waker of the Dead||Emblem Liliana|LilianaWakerOfTheDeadEmblem|
|Generate|EMBLEM:KHM|Kaya the Inexorable||Emblem Kaya|KayaTheInexorableEmblem|
|Generate|EMBLEM:KHM|Tibalt Cosmic Imposter||Emblem Tibalt|TibaltCosmicImposterEmblem|
|Generate|EMBLEM:KHM|Tibalt, Cosmic Impostor||Emblem Tibalt|TibaltCosmicImpostorEmblem|
|Generate|EMBLEM:KHM|Tyvar Kell||Emblem Tyvar|TyvarKellEmblem|
|Generate|EMBLEM:STX|Lukka, Wayward Bonder||Emblem Lukka|LukkaWaywardBonderEmblem|
|Generate|EMBLEM:STX|Rowan, Scholar of Sparks||Emblem Rowan|RowanScholarOfSparksEmblem|
@ -769,9 +769,7 @@
|Generate|TOK:JUD|Wurm|||WurmToken|
|Generate|TOK:KLD|Beast|||ArchitectOfTheUntamedBeastToken|
|Generate|TOK:KLD|Construct|1||OviyaPashiriSageLifecrafterToken|
|Generate|TOK:KLD|Construct|2||OviyaPashiriSageLifecrafterToken|
|Generate|TOK:KLD|Construct|3||MetallurgicSummoningsConstructToken|
|Generate|TOK:KLD|Construct|4||MetallurgicSummoningsConstructToken|
|Generate|TOK:KLD|Construct|2||MetallurgicSummoningsConstructToken|
|Generate|TOK:KLD|Servo|1||ServoToken|
|Generate|TOK:KLD|Servo|2||ServoToken|
|Generate|TOK:KLD|Servo|3||ServoToken|
@ -1246,7 +1244,7 @@
|Generate|TOK:RNA|Ooze|||BiogenicOozeToken|
|Generate|TOK:RNA|Sphinx|||WardenSphinxToken|
|Generate|TOK:RNA|Spirit|||SpiritWhiteToken|
|Generate|TOK:RNA|Thopter|||ThopterToken|
|Generate|TOK:RNA|Thopter|||ThopterColorlessToken|
|Generate|TOK:RNA|Treasure|||TreasureToken|
|Generate|TOK:RNA|Zombie|||ZombieToken|
|Generate|TOK:GRN|Angel|||AngelVigilanceToken|
@ -1581,7 +1579,7 @@
|Generate|TOK:AFR|Boo|||BooToken|
|Generate|TOK:AFR|Devil|||DevilToken|
|Generate|TOK:AFR|Dog Illusion|||DogIllusionToken|
# |Generate|TOK:AFR|Faerie Dragon|||xxx| TODO: add after dice pr merge
# |Generate|TOK:AFR|Faerie Dragon|||FaerieDragonToken|
|Generate|TOK:AFR|Goblin|||GoblinToken|
|Generate|TOK:AFR|Guenhwyvar|||GuenhwyvarToken|
|Generate|TOK:AFR|Icingdeath, Frost Tongue|||IcingdeathFrostTongueToken|
@ -1761,3 +1759,21 @@
|Generate|TOK:2XM|Wolf|||WolfToken|
|Generate|TOK:2XM|Phyrexian Wurm|1||WurmWithDeathtouchToken|
|Generate|TOK:2XM|Phyrexian Wurm|2||WurmWithLifelinkToken|
# SNC
|Generate|TOK:SNC|Angel|||Angel33Token|
|Generate|TOK:SNC|Cat|||CatHasteToken|
|Generate|TOK:SNC|Citizen|||CitizenGreenWhiteToken|
|Generate|TOK:SNC|Devil|||DevilToken|
|Generate|TOK:SNC|Dog|||DogVigilanceToken|
|Generate|TOK:SNC|Fish|||FishToken|
|Generate|TOK:SNC|Ogre Warrior|||OgreWarriorToken|
|Generate|TOK:SNC|Rhino Warrior|||RhinoWarriorToken|
|Generate|TOK:SNC|Rogue|||RogueToken|
|Generate|TOK:SNC|Spirit|||Spirit22Token|
|Generate|TOK:SNC|Treasure|1||TreasureToken|
|Generate|TOK:SNC|Treasure|2||TreasureToken|
|Generate|TOK:SNC|Treasure|3||TreasureToken|
|Generate|TOK:SNC|Treasure|4||TreasureToken|
|Generate|TOK:SNC|Treasure|5||TreasureToken|
|Generate|TOK:SNC|Wizard|||MagesAttendantToken|

View file

@ -23,7 +23,7 @@ public final class Angel33Token extends TokenImpl {
// Flying
this.addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("AFR");
availableImageSetCodes = Arrays.asList("AFR", "SNC");
}
public Angel33Token(final Angel33Token token) {

View file

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

View file

@ -3,6 +3,7 @@ package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
@ -18,6 +19,8 @@ public final class CitizenGreenWhiteToken extends TokenImpl {
subtype.add(SubType.CITIZEN);
power = new MageInt(1);
toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("SNC");
}
private CitizenGreenWhiteToken(final CitizenGreenWhiteToken token) {

View file

@ -34,7 +34,7 @@ public final class DevilToken extends TokenImpl {
ability.addTarget(new TargetAnyTarget());
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("SOI", "WAR", "AFR", "MID");
availableImageSetCodes = Arrays.asList("SOI", "WAR", "AFR", "MID", "SNC");
}
public DevilToken(final DevilToken token) {

View file

@ -4,6 +4,7 @@ import mage.MageInt;
import mage.abilities.keyword.VigilanceAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
@ -20,6 +21,8 @@ public final class DogVigilanceToken extends TokenImpl {
toughness = new MageInt(1);
this.addAbility(VigilanceAbility.getInstance());
availableImageSetCodes = Arrays.asList("SNC");
}
private DogVigilanceToken(final DogVigilanceToken token) {

View file

@ -4,6 +4,7 @@ import mage.MageInt;
import mage.abilities.keyword.CantBeBlockedSourceAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
@ -19,6 +20,8 @@ public final class FishToken extends TokenImpl {
toughness = new MageInt(1);
addAbility(new CantBeBlockedSourceAbility("this creature can't be blocked"));
availableImageSetCodes = Arrays.asList("SNC");
}
public FishToken(final FishToken token) {

View file

@ -23,7 +23,7 @@ public final class KnightToken extends TokenImpl {
toughness = new MageInt(2);
this.addAbility(VigilanceAbility.getInstance());
availableImageSetCodes = Arrays.asList("C13", "C15", "CMA", "DGM", "ORI", "RTR", "M19", "ELD", "M21", "AFC", "MIC");
availableImageSetCodes = Arrays.asList("C13", "C15", "CMA", "DGM", "ORI", "RTR", "M19", "ELD", "M21", "AFC", "MIC", "DOM");
}
public KnightToken(final KnightToken token) {
@ -43,7 +43,7 @@ public final class KnightToken extends TokenImpl {
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("DOM")) {
this.setTokenType(RandomUtil.nextInt(2) + 1);
setTokenType(RandomUtil.nextInt(2) + 1);
}
}
}

View file

@ -10,6 +10,7 @@ import mage.constants.CardType;
import mage.constants.SubType;
import mage.filter.StaticFilters;
import mage.target.TargetSpell;
import java.util.Arrays;
/**
* @author TheElk801
@ -30,6 +31,8 @@ public final class MagesAttendantToken extends TokenImpl {
ability.addCost(new SacrificeSourceCost().setText("sacrifice this creature"));
ability.addTarget(new TargetSpell(StaticFilters.FILTER_SPELL_NON_CREATURE));
this.addAbility(ability);
availableImageSetCodes = Arrays.asList("SNC");
}
private MagesAttendantToken(final MagesAttendantToken token) {

View file

@ -40,7 +40,7 @@ public final class MetallurgicSummoningsConstructToken extends TokenImpl {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("KLD")) {
setTokenType(RandomUtil.nextInt(2) + 3); // from 3 to 4
setTokenType(2);
}
}
}

View file

@ -3,6 +3,7 @@ package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
@ -17,6 +18,8 @@ public final class OgreWarriorToken extends TokenImpl {
subtype.add(SubType.WARRIOR);
power = new MageInt(4);
toughness = new MageInt(3);
availableImageSetCodes = Arrays.asList("SNC");
}
public OgreWarriorToken(final OgreWarriorToken token) {

View file

@ -38,8 +38,8 @@ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl {
public void setExpansionSetCodeForImage(String code) {
super.setExpansionSetCodeForImage(code);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) {
setTokenType(2);
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("KLD")) {
setTokenType(1);
}
}
}

View file

@ -3,6 +3,7 @@ package mage.game.permanent.token;
import mage.MageInt;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
* @author TheElk801
@ -16,6 +17,8 @@ public final class RogueToken extends TokenImpl {
color.setBlack(true);
power = new MageInt(2);
toughness = new MageInt(2);
availableImageSetCodes = Arrays.asList("SNC");
}
public RogueToken(final RogueToken token) {

View file

@ -4,6 +4,7 @@ import mage.MageInt;
import mage.abilities.keyword.FlyingAbility;
import mage.constants.CardType;
import mage.constants.SubType;
import java.util.Arrays;
/**
*
@ -19,6 +20,8 @@ public class Spirit22Token extends TokenImpl {
power = new MageInt(2);
toughness = new MageInt(2);
addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("SNC");
}
private Spirit22Token(final Spirit22Token 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", "VOC", "NEC", "2XM");
"KHC", "C21", "MH2", "AFC", "VOC", "NEC", "2XM", "RNA");
}
@Override

View file

@ -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", "VOW", "NEO", "SLD", "2XM");
availableImageSetCodes = Arrays.asList("XLN", "RNA", "M20", "C19", "C20", "M21", "CMR", "KHM", "STX", "MH2", "AFR", "VOW", "NEO", "SLD", "2XM", "SNC");
}
public TreasureToken(final TreasureToken token) {
@ -45,5 +45,8 @@ public final class TreasureToken extends TokenImpl {
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("XLN")) {
this.setTokenType(RandomUtil.nextInt(4) + 1);
}
if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("SNC")) {
this.setTokenType(RandomUtil.nextInt(5) + 1);
}
}
}