diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java index a90b82d63d..1c30281c88 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/ScryfallImageSupportTokens.java @@ -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/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 supportedSets.clear(); for (String cardName : this.keySet()) { diff --git a/Mage.Client/src/main/resources/card-pictures-tok.txt b/Mage.Client/src/main/resources/card-pictures-tok.txt index 4ee3e0b4d6..f5842a8e16 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -1589,4 +1589,18 @@ |Generate|TOK:AFR|Treasure|||TreasureToken| |Generate|TOK:AFR|Vecna|||VecnaToken| |Generate|TOK:AFR|Wolf|||WolfToken| -|Generate|TOK:AFR|Zombie|||ZombieToken| \ No newline at end of file +|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| \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java b/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java index fab99b3941..c32773fc6a 100644 --- a/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java +++ b/Mage.Sets/src/mage/cards/m/MoonsilverSpear.java @@ -1,4 +1,3 @@ - package mage.cards.m; import java.util.UUID; @@ -26,8 +25,10 @@ public final class MoonsilverSpear extends CardImpl { // Equipped creature has first strike. 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. this.addAbility(new AttacksAttachedTriggeredAbility(new CreateTokenEffect(new AngelToken()))); + // Equip {4} this.addAbility(new EquipAbility(Outcome.AddAbility, new GenericManaCost(4))); } diff --git a/Mage/src/main/java/mage/game/permanent/token/AngelToken.java b/Mage/src/main/java/mage/game/permanent/token/AngelToken.java index 790828d7a2..7a9f97ff4e 100644 --- a/Mage/src/main/java/mage/game/permanent/token/AngelToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/AngelToken.java @@ -16,10 +16,11 @@ public final class AngelToken extends TokenImpl { subtype.add(SubType.ANGEL); power = new MageInt(4); toughness = new MageInt(4); + 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"); + "ISD", "M14", "MM3", "NEM", "OGW", "ORI", "PC2", "SCG", "SOI", "ZEN", "C20", "M21", "CMR", "AFC"); } public AngelToken(final AngelToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/BeastToken.java b/Mage/src/main/java/mage/game/permanent/token/BeastToken.java index daf37552e6..78382179b7 100644 --- a/Mage/src/main/java/mage/game/permanent/token/BeastToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/BeastToken.java @@ -22,7 +22,7 @@ public final class BeastToken extends TokenImpl { availableImageSetCodes = Arrays.asList("5DN", "C14", "C16", "C19", "CMA", "CMD", "CN2", "GVL", "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 diff --git a/Mage/src/main/java/mage/game/permanent/token/ClueArtifactToken.java b/Mage/src/main/java/mage/game/permanent/token/ClueArtifactToken.java index 26618d43d2..8a156c2f04 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ClueArtifactToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ClueArtifactToken.java @@ -29,7 +29,7 @@ public final class ClueArtifactToken extends TokenImpl { ability.addCost(cost); this.addAbility(ability); - availableImageSetCodes = Arrays.asList("C18", "SOI", "MH2"); + availableImageSetCodes = Arrays.asList("C18", "SOI", "MH2", "AFC"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/DragonToken2.java b/Mage/src/main/java/mage/game/permanent/token/DragonToken2.java index a971abf756..9dd33ac0b8 100644 --- a/Mage/src/main/java/mage/game/permanent/token/DragonToken2.java +++ b/Mage/src/main/java/mage/game/permanent/token/DragonToken2.java @@ -22,7 +22,7 @@ public final class DragonToken2 extends TokenImpl { 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) { diff --git a/Mage/src/main/java/mage/game/permanent/token/KnightToken.java b/Mage/src/main/java/mage/game/permanent/token/KnightToken.java index 780caeb355..e3c601dc3c 100644 --- a/Mage/src/main/java/mage/game/permanent/token/KnightToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/KnightToken.java @@ -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"); + availableImageSetCodes = Arrays.asList("C13", "C15", "CMA", "DGM", "ORI", "RTR", "M19", "ELD", "M21", "AFC"); } public KnightToken(final KnightToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/MinnWilyIllusionistToken.java b/Mage/src/main/java/mage/game/permanent/token/MinnWilyIllusionistToken.java index 9f19f8ddd1..26bf97900f 100644 --- a/Mage/src/main/java/mage/game/permanent/token/MinnWilyIllusionistToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/MinnWilyIllusionistToken.java @@ -13,6 +13,8 @@ import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.AnotherPredicate; +import java.util.Arrays; + /** * @author TheElk801 */ @@ -36,6 +38,8 @@ public final class MinnWilyIllusionistToken extends TokenImpl { addAbility(new SimpleStaticAbility(new BoostSourceEffect( xValue, StaticValue.get(0), Duration.WhileOnBattlefield ).setText("this creature gets +1/+0 for each other Illusion you control"))); + + availableImageSetCodes = Arrays.asList("AFC"); } public MinnWilyIllusionistToken(final MinnWilyIllusionistToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/RatToken.java b/Mage/src/main/java/mage/game/permanent/token/RatToken.java index 460967726d..2a2c9dd1f7 100644 --- a/Mage/src/main/java/mage/game/permanent/token/RatToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/RatToken.java @@ -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", "ELD", "ZNC"); + availableImageSetCodes = Arrays.asList("C17", "CHK", "GTC", "SHM", "ELD", "ZNC", "AFC"); } public RatToken(final RatToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java b/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java index 3f594b22ae..80c2054d68 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java @@ -46,7 +46,8 @@ public final class SaprolingToken extends TokenImpl { "ZNC", "CMR", "TSR", - "C21" + "C21", + "AFC" )); } diff --git a/Mage/src/main/java/mage/game/permanent/token/ServoToken.java b/Mage/src/main/java/mage/game/permanent/token/ServoToken.java index 358ed980fe..6720a24f2c 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ServoToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ServoToken.java @@ -20,7 +20,7 @@ public final class ServoToken extends TokenImpl { power = new MageInt(1); toughness = new MageInt(1); - availableImageSetCodes = Arrays.asList("C18", "KLD", "WAR", "KHC"); + availableImageSetCodes = Arrays.asList("C18", "KLD", "WAR", "KHC", "AFC"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java b/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java index d20d1282dc..ef9b482955 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java @@ -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"); + "KHC", "C21", "MH2", "AFC"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/VrondissRageOfAncientsToken.java b/Mage/src/main/java/mage/game/permanent/token/VrondissRageOfAncientsToken.java index 04d71db2ee..c1648e89bd 100644 --- a/Mage/src/main/java/mage/game/permanent/token/VrondissRageOfAncientsToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/VrondissRageOfAncientsToken.java @@ -9,6 +9,8 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; +import java.util.Arrays; + public final class VrondissRageOfAncientsToken extends TokenImpl { public VrondissRageOfAncientsToken() { @@ -20,7 +22,10 @@ public final class VrondissRageOfAncientsToken extends TokenImpl { subtype.add(SubType.SPIRIT); power = new MageInt(5); toughness = new MageInt(4); + this.addAbility(new VrondissRageOfAncientsTokenTriggeredAbility()); + + availableImageSetCodes = Arrays.asList("AFC"); } public VrondissRageOfAncientsToken(final VrondissRageOfAncientsToken token) {