[AFC] added tokens and images support

This commit is contained in:
Oleg Agafonov 2022-02-02 13:13:49 +04:00
parent 3f21c35955
commit 0cb9266a15
14 changed files with 50 additions and 11 deletions

View file

@ -637,6 +637,19 @@ public class ScryfallImageSupportTokens {
put("AFR/Emblem Zariel, Archduke of Avernus", "https://api.scryfall.com/cards/tafr/19/en?format=image"); put("AFR/Emblem Zariel, Archduke of Avernus", "https://api.scryfall.com/cards/tafr/19/en?format=image");
put("AFR/Zombie", "https://api.scryfall.com/cards/tafr/9/en?format=image"); put("AFR/Zombie", "https://api.scryfall.com/cards/tafr/9/en?format=image");
// AFC
put("AFC/Angel", "https://api.scryfall.com/cards/tafc/1/en?format=image");
put("AFC/Beast", "https://api.scryfall.com/cards/tafc/7/en?format=image");
put("AFC/Clue", "https://api.scryfall.com/cards/tafc/10/en?format=image");
put("AFC/Dragon Spirit", "https://api.scryfall.com/cards/tafc/9/en?format=image");
put("AFC/Dragon", "https://api.scryfall.com/cards/tafc/6/en?format=image");
put("AFC/Illusion", "https://api.scryfall.com/cards/tafc/3/en?format=image");
put("AFC/Knight", "https://api.scryfall.com/cards/tafc/2/en?format=image");
put("AFC/Rat", "https://api.scryfall.com/cards/tafc/5/en?format=image");
put("AFC/Saproling", "https://api.scryfall.com/cards/tafc/8/en?format=image");
put("AFC/Servo", "https://api.scryfall.com/cards/tafc/11/en?format=image");
put("AFC/Thopter", "https://api.scryfall.com/cards/tafc/12/en?format=image");
// generate supported sets // generate supported sets
supportedSets.clear(); supportedSets.clear();
for (String cardName : this.keySet()) { for (String cardName : this.keySet()) {

View file

@ -1589,4 +1589,18 @@
|Generate|TOK:AFR|Treasure|||TreasureToken| |Generate|TOK:AFR|Treasure|||TreasureToken|
|Generate|TOK:AFR|Vecna|||VecnaToken| |Generate|TOK:AFR|Vecna|||VecnaToken|
|Generate|TOK:AFR|Wolf|||WolfToken| |Generate|TOK:AFR|Wolf|||WolfToken|
|Generate|TOK:AFR|Zombie|||ZombieToken| |Generate|TOK:AFR|Zombie|||ZombieToken|
# AFC
|Generate|TOK:AFC|Angel|||AngelToken|
|Generate|TOK:AFC|Beast|||BeastToken|
# no need tokens for Eternalize ability, but scryfall have it: https://scryfall.com/card/tafc/4/champion-of-wits
|Generate|TOK:AFC|Clue|||ClueArtifactToken|
|Generate|TOK:AFC|Dragon|||DragonToken2|
|Generate|TOK:AFC|Dragon Spirit|||VrondissRageOfAncientsToken|
|Generate|TOK:AFC|Illusion|||MinnWilyIllusionistToken|
|Generate|TOK:AFC|Knight|||KnightToken|
|Generate|TOK:AFC|Rat|||RatToken|
|Generate|TOK:AFC|Saproling|||SaprolingToken|
|Generate|TOK:AFC|Servo|||ServoToken|
|Generate|TOK:AFC|Thopter|||ThopterColorlessToken|

View file

@ -1,4 +1,3 @@
package mage.cards.m; package mage.cards.m;
import java.util.UUID; import java.util.UUID;
@ -26,8 +25,10 @@ public final class MoonsilverSpear extends CardImpl {
// Equipped creature has first strike. // Equipped creature has first strike.
this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT))); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityAttachedEffect(FirstStrikeAbility.getInstance(), AttachmentType.EQUIPMENT)));
// Whenever equipped creature attacks, create a 4/4 white Angel creature token with flying. // Whenever equipped creature attacks, create a 4/4 white Angel creature token with flying.
this.addAbility(new AttacksAttachedTriggeredAbility(new CreateTokenEffect(new AngelToken()))); this.addAbility(new AttacksAttachedTriggeredAbility(new CreateTokenEffect(new AngelToken())));
// Equip {4} // Equip {4}
this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(4))); this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(4)));
} }

View file

@ -16,10 +16,11 @@ public final class AngelToken extends TokenImpl {
subtype.add(SubType.ANGEL); subtype.add(SubType.ANGEL);
power = new MageInt(4); power = new MageInt(4);
toughness = new MageInt(4); toughness = new MageInt(4);
addAbility(FlyingAbility.getInstance()); addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("APC", "AVR", "C14", "C15", "C18", "CON", "DDQ", "GTC", availableImageSetCodes = Arrays.asList("APC", "AVR", "C14", "C15", "C18", "CON", "DDQ", "GTC",
"ISD", "M14", "MM3", "NEM", "OGW", "ORI", "PC2", "SCG", "SOI", "ZEN", "C20", "M21", "CMR"); "ISD", "M14", "MM3", "NEM", "OGW", "ORI", "PC2", "SCG", "SOI", "ZEN", "C20", "M21", "CMR", "AFC");
} }
public AngelToken(final AngelToken token) { public AngelToken(final AngelToken token) {

View file

@ -22,7 +22,7 @@ public final class BeastToken extends TokenImpl {
availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2", "GVL", availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2", "GVL",
"DD3C", "DD3GVL", "DDD", "DDL", "DST", "E01", "EVE", "LRW", "M10", "M11", "M12", "DD3C", "DD3GVL", "DDD", "DDL", "DST", "E01", "EVE", "LRW", "M10", "M11", "M12",
"M13", "M14", "M15", "MM3", "NPH", "PC2", "USG", "M19", "IKO", "M21", "CMR", "C21"); "M13", "M14", "M15", "MM3", "NPH", "PC2", "USG", "M19", "IKO", "M21", "CMR", "C21", "AFC");
} }
@Override @Override

View file

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

View file

@ -22,7 +22,7 @@ public final class DragonToken2 extends TokenImpl {
addAbility(FlyingAbility.getInstance()); addAbility(FlyingAbility.getInstance());
availableImageSetCodes = Arrays.asList("10E", "BFZ", "C15", "C19", "CMA", "CMD", "ONS", "ROE", "SCG", "WWK", "M19", "KHM"); availableImageSetCodes = Arrays.asList("10E", "BFZ", "C15", "C19", "CMA", "CMD", "ONS", "ROE", "SCG", "WWK", "M19", "KHM", "AFC");
} }
public DragonToken2(final DragonToken2 token) { public DragonToken2(final DragonToken2 token) {

View file

@ -23,7 +23,7 @@ public final class KnightToken extends TokenImpl {
toughness = new MageInt(2); toughness = new MageInt(2);
this.addAbility(VigilanceAbility.getInstance()); this.addAbility(VigilanceAbility.getInstance());
availableImageSetCodes = Arrays.asList("C13", "C15", "CMA", "DGM", "ORI", "RTR", "M19", "ELD", "M21"); availableImageSetCodes = Arrays.asList("C13", "C15", "CMA", "DGM", "ORI", "RTR", "M19", "ELD", "M21", "AFC");
} }
public KnightToken(final KnightToken token) { public KnightToken(final KnightToken token) {

View file

@ -13,6 +13,8 @@ import mage.filter.FilterPermanent;
import mage.filter.common.FilterControlledPermanent; import mage.filter.common.FilterControlledPermanent;
import mage.filter.predicate.mageobject.AnotherPredicate; import mage.filter.predicate.mageobject.AnotherPredicate;
import java.util.Arrays;
/** /**
* @author TheElk801 * @author TheElk801
*/ */
@ -36,6 +38,8 @@ public final class MinnWilyIllusionistToken extends TokenImpl {
addAbility(new SimpleStaticAbility(new BoostSourceEffect( addAbility(new SimpleStaticAbility(new BoostSourceEffect(
xValue, StaticValue.get(0), Duration.WhileOnBattlefield xValue, StaticValue.get(0), Duration.WhileOnBattlefield
).setText("this creature gets +1/+0 for each other Illusion you control"))); ).setText("this creature gets +1/+0 for each other Illusion you control")));
availableImageSetCodes = Arrays.asList("AFC");
} }
public MinnWilyIllusionistToken(final MinnWilyIllusionistToken token) { public MinnWilyIllusionistToken(final MinnWilyIllusionistToken token) {

View file

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

View file

@ -46,7 +46,8 @@ public final class SaprolingToken extends TokenImpl {
"ZNC", "ZNC",
"CMR", "CMR",
"TSR", "TSR",
"C21" "C21",
"AFC"
)); ));
} }

View file

@ -20,7 +20,7 @@ public final class ServoToken extends TokenImpl {
power = new MageInt(1); power = new MageInt(1);
toughness = new MageInt(1); toughness = new MageInt(1);
availableImageSetCodes = Arrays.asList("C18", "KLD", "WAR", "KHC"); availableImageSetCodes = Arrays.asList("C18", "KLD", "WAR", "KHC", "AFC");
} }
@Override @Override

View file

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

View file

@ -9,6 +9,8 @@ import mage.constants.Zone;
import mage.game.Game; import mage.game.Game;
import mage.game.events.GameEvent; import mage.game.events.GameEvent;
import java.util.Arrays;
public final class VrondissRageOfAncientsToken extends TokenImpl { public final class VrondissRageOfAncientsToken extends TokenImpl {
public VrondissRageOfAncientsToken() { public VrondissRageOfAncientsToken() {
@ -20,7 +22,10 @@ public final class VrondissRageOfAncientsToken extends TokenImpl {
subtype.add(SubType.SPIRIT); subtype.add(SubType.SPIRIT);
power = new MageInt(5); power = new MageInt(5);
toughness = new MageInt(4); toughness = new MageInt(4);
this.addAbility(new VrondissRageOfAncientsTokenTriggeredAbility()); this.addAbility(new VrondissRageOfAncientsTokenTriggeredAbility());
availableImageSetCodes = Arrays.asList("AFC");
} }
public VrondissRageOfAncientsToken(final VrondissRageOfAncientsToken token) { public VrondissRageOfAncientsToken(final VrondissRageOfAncientsToken token) {