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 bd7196c505..daf5714a77 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 @@ -520,7 +520,7 @@ public class ScryfallImageSupportTokens { put("KHM/Emblem Tibalt Cosmic Imposter", "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"); - // TKHC + // KHC put("KHC/Bird", "https://api.scryfall.com/cards/tkhc/1/en?format=image"); put("KHC/Boar", "https://api.scryfall.com/cards/tkhc/5/en?format=image"); put("KHC/Elemental", "https://api.scryfall.com/cards/tkhc/6/en?format=image"); @@ -530,6 +530,23 @@ public class ScryfallImageSupportTokens { put("KHC/Soldier", "https://api.scryfall.com/cards/tkhc/4/en?format=image"); put("KHC/Thopter", "https://api.scryfall.com/cards/tkhc/8/en?format=image"); + // TSR + put("TSR/Ape", "https://api.scryfall.com/cards/ttsr/10/en?format=image"); + put("TSR/Assembly-Worker", "https://api.scryfall.com/cards/ttsr/14/en?format=image"); + put("TSR/Bat", "https://api.scryfall.com/cards/ttsr/4/en?format=image"); + put("TSR/Cloud Sprite", "https://api.scryfall.com/cards/ttsr/3/en?format=image"); + put("TSR/Giant", "https://api.scryfall.com/cards/ttsr/7/en?format=image"); + put("TSR/Goblin", "https://api.scryfall.com/cards/ttsr/8/en?format=image"); + put("TSR/Griffin", "https://api.scryfall.com/cards/ttsr/1/en?format=image"); + put("TSR/Insect", "https://api.scryfall.com/cards/ttsr/11/en?format=image"); + put("TSR/Knight", "https://api.scryfall.com/cards/ttsr/5/en?format=image"); + put("TSR/Kobolds of Kher Keep", "https://api.scryfall.com/cards/ttsr/9/en?format=image"); + put("TSR/Llanowar Elves", "https://api.scryfall.com/cards/ttsr/12/en?format=image"); + put("TSR/Metallic Sliver", "https://api.scryfall.com/cards/ttsr/15/en?format=image"); + put("TSR/Saproling", "https://api.scryfall.com/cards/ttsr/13/en?format=image"); + put("TSR/Soldier", "https://api.scryfall.com/cards/ttsr/2/en?format=image"); + put("TSR/Spider", "https://api.scryfall.com/cards/ttsr/6/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 56002e85b0..0fc9a1e7ee 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -1,3 +1,4 @@ +#TODO: some sets (TOK:code) don't have tokens but recorded here - must be fixed and removed (from that file and from tokens) #Generate|TOK:TPR|Goblin|| #Generate|TOK:TPR|Pegasus|| #Generate|TOK:TPR|Rat|| @@ -305,8 +306,7 @@ |Generate|TOK:C14|Demon|2||ReignOfThePitToken| |Generate|TOK:C14|Elemental|||TitaniaProtectorOfArgothElementalToken| |Generate|TOK:C14|Elephant|||ElephantToken| -|Generate|TOK:C14|Elf Druid|||FreyaliseLlanowarsFuryToken| -|Generate|TOK:C14|Elf Druid|||LlanowarElvesToken| +|Generate|TOK:C14|Elf Druid|||ElfDruidToken| |Generate|TOK:C14|Elf Warrior|||ElfWarriorToken| |Generate|TOK:C14|Equipment|||NahiriTheLithomancerEquipmentToken| |Generate|TOK:C14|Fish|||ReefWormFishToken| @@ -444,8 +444,7 @@ |Generate|TOK:CMA|Drake|||LeafdrakeRoostDrakeToken| |Generate|TOK:CMA|Elemental|||TitaniaProtectorOfArgothElementalToken| |Generate|TOK:CMA|Elephant|||ElephantToken| -|Generate|TOK:C14|Elf Druid|||FreyaliseLlanowarsFuryToken| -|Generate|TOK:C14|Elf Druid|||LlanowarElvesToken| +|Generate|TOK:C14|Elf Druid|||ElfDruidToken| |Generate|TOK:CMA|Elf Warrior|| |Generate|TOK:CMA|Gargoyle|||GargoyleToken| |Generate|TOK:CMA|Kithkin Soldier|||KithkinSoldierToken| @@ -467,7 +466,6 @@ |Generate|TOK:CMD|Saproling|||SaprolingToken| |Generate|TOK:CMD|Snake|||SnakeToken| |Generate|TOK:CMD|Soldier|||SoldierToken| -|Generate|TOK:CMD|Spider|||PenumbraSpiderToken| |Generate|TOK:CMD|Spirit|||SpiritWhiteToken| |Generate|TOK:CMD|Squirrel|||SquirrelToken| |Generate|TOK:CMD|Triskelavite|||TriskelaviteToken| @@ -680,18 +678,6 @@ |Generate|TOK:FRF|Monk|||MonasteryMentorToken| |Generate|TOK:FRF|Spirit|||SpiritWhiteToken| |Generate|TOK:FRF|Warrior|||MarduStrikeLeaderWarriorToken| -|Generate|TOK:FUT|Elemental|||SparkElementalToken| -|Generate|TOK:FUT|Elf Druid|||FreyaliseLlanowarsFuryToken| -|Generate|TOK:FUT|Elf Druid|||LlanowarElvesToken| -|Generate|TOK:FUT|Giant|||GiantToken| -|Generate|TOK:FUT|Kithkin Soldier|||KithkinSoldierToken| -|Generate|TOK:FUT|Saproling|||SaprolingToken| -|Generate|TOK:FUT|Sliver|||SliversmithToken| -|Generate|TOK:FUT|Soldier|||SoldierToken| -|Generate|TOK:FUT|Wurm|||WurmCallingWurmToken| -|Generate|TOK:FUT|Zombie Goblin|||FesteringGoblinToken| -|Generate|TOK:FUT|Zombie|||ZombieToken| -|Generate|TOK:FUT|Faerie|||CloudSpriteToken| |Generate|TOK:GPT|Bat|||BatToken| |Generate|TOK:GPT|Pegasus|||PegasusToken| |Generate|TOK:GPT|Sand|||DuneBroodNephilimToken| @@ -709,7 +695,6 @@ |Generate|TOK:GTC|Soldier|1||SoldierToken| |Generate|TOK:GTC|Soldier|2||SoldierTokenWithHaste| |Generate|TOK:GTC|Spirit|||TeysaEnvoyOfGhostsToken| -|Generate|TOK:H09|Sliver|||SliversmithToken| |Generate|TOK:H17|Dragon|||DragonTokenGold| |Generate|TOK:HML|Plant Wall|||KelpToken| |Generate|TOK:HML|Serf|||SerfToken| @@ -792,10 +777,7 @@ |Generate|TOK:LEG|Demon|||MinorDemonToken| |Generate|TOK:LEG|Sand Warrior|||HazezonTamarSandWarriorToken| |Generate|TOK:LEG|Snake|||SerpentGeneratorSnakeToken| -|Generate|TOK:LGN|Bear|||BearToken| -|Generate|TOK:LGN|Goblin|||GoblinToken| -|Generate|TOK:LGN|Insect|||InsectToken| -|Generate|TOK:LGN|Sliver|||SliversmithToken| +# LGN don't have tokens, from wiki: A Sliver token for Brood Sliver and a Goblin token for Warbreak Trumpeter were featured as a Magic Player Reward. |Generate|TOK:LRW|Avatar|||AvatarToken| |Generate|TOK:LRW|Beast|||BeastToken| |Generate|TOK:LRW|Elemental Shaman|||ElementalShamanToken| @@ -1037,7 +1019,7 @@ |Generate|TOK:PCY|Squirrel|||SquirrelToken| |Generate|TOK:PLC|Ape|||PongifyApeToken| |Generate|TOK:PLC|Cat Warrior|||CatWarriorToken| -|Generate|TOK:PLC|Insect|||DeadlyGrubToken| +|Generate|TOK:PLC|Insect|||DeadlyGrubInsectToken| |Generate|TOK:PLC|Knight|||RiftmarkedKnightToken| |Generate|TOK:PLC|Saproling|||SaprolingToken| |Generate|TOK:PLC|Soldier|||SoldierToken| @@ -1127,12 +1109,6 @@ |Generate|TOK:SOM|Wolf|||WolfToken| |Generate|TOK:SOM|Wurm|1||WurmWithDeathtouchToken| |Generate|TOK:SOM|Wurm|2||WurmWithLifelinkToken| -|Generate|TOK:STH|Goblin|||GoblinToken| -|Generate|TOK:STH|Insect|||HornetToken| -|Generate|TOK:STH|Insect|||WaspToken| -|Generate|TOK:STH|Rat|||RatToken| -|Generate|TOK:STH|Sliver|||SliversmithToken| -|Generate|TOK:STH|Spike|||SpikeToken| |Generate|TOK:SWS|Ewok|||EwokToken| |Generate|TOK:SWS|B-Wing|||RebelStarshipToken| |Generate|TOK:SWS|Hunter|||HunterToken| @@ -1161,16 +1137,6 @@ |Generate|TOK:TMP|Spirit|||SpiritWhiteToken| |Generate|TOK:TMP|Zombie|||ZombieToken| |Generate|TOK:TOR|Squirrel|||SquirrelToken| -|Generate|TOK:TPR|Goblin|||GoblinToken| -|Generate|TOK:TPR|Pegasus|||PegasusToken| -|Generate|TOK:TPR|Rat|||RatToken| -|Generate|TOK:TPR|Reflection|||ReflectionToken| -|Generate|TOK:TPR|Saproling|||SaprolingToken| -|Generate|TOK:TPR|Sliver|||SliversmithToken| -|Generate|TOK:TPR|Spike|||SpikeToken| -|Generate|TOK:TPR|Spirit|||SpiritWhiteToken| -|Generate|TOK:TPR|Thopter|||ThopterColorlessToken| -|Generate|TOK:TPR|Zombie|||ZombieToken| |Generate|TOK:TSP|Assembly-Worker|||AssembleWorkerToken| |Generate|TOK:TSP|Bat|||SengirNosferatuBatToken| |Generate|TOK:TSP|Citizen|||CitizenToken| @@ -1512,4 +1478,21 @@ |Generate|TOK:KHC|Pegasus|||PegasusToken| |Generate|TOK:KHC|Servo|||ServoToken| |Generate|TOK:KHC|Soldier|||SoldierToken| -|Generate|TOK:KHC|Thopter|||ThopterColorlessToken| \ No newline at end of file +|Generate|TOK:KHC|Thopter|||ThopterColorlessToken| + +# TSR +|Generate|TOK:TSR|Ape|||PongifyApeToken| +|Generate|TOK:TSR|Assembly-Worker|||AssemblyWorkerToken| +|Generate|TOK:TSR|Bat|||SengirNosferatuBatToken| +|Generate|TOK:TSR|Cloud Sprite|||CloudSpriteToken| +|Generate|TOK:TSR|Giant|||GiantToken| +|Generate|TOK:TSR|Goblin|||GoblinToken| +|Generate|TOK:TSR|Griffin|||GriffinToken| +|Generate|TOK:TSR|Insect|||DeadlyGrubInsectToken| +|Generate|TOK:TSR|Knight|||RiftmarkedKnightToken| +|Generate|TOK:TSR|Kobolds of Kher Keep|||KherKeepKoboldToken| +|Generate|TOK:TSR|Llanowar Elves|||LlanowarElvesToken| +|Generate|TOK:TSR|Metallic Sliver|||MetallicSliverToken| +|Generate|TOK:TSR|Saproling|||SaprolingToken| +|Generate|TOK:TSR|Soldier|||SoldierToken| +|Generate|TOK:TSR|Spider|||PenumbraSpiderToken| \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/d/DeadlyGrub.java b/Mage.Sets/src/mage/cards/d/DeadlyGrub.java index 071cae86c4..f4b5302573 100644 --- a/Mage.Sets/src/mage/cards/d/DeadlyGrub.java +++ b/Mage.Sets/src/mage/cards/d/DeadlyGrub.java @@ -17,7 +17,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.counters.CounterType; -import mage.game.permanent.token.DeadlyGrubToken; +import mage.game.permanent.token.DeadlyGrubInsectToken; /** * @@ -37,8 +37,9 @@ public final class DeadlyGrub extends CardImpl { this.addAbility(ability); this.addAbility(new VanishingUpkeepAbility(3)); this.addAbility(new VanishingSacrificeAbility()); + // When Deadly Grub dies, if it had no time counters on it, create a 6/1 green Insect creature token with shroud. - this.addAbility(new ConditionalInterveningIfTriggeredAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new DeadlyGrubToken(), 1)), + this.addAbility(new ConditionalInterveningIfTriggeredAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new DeadlyGrubInsectToken(), 1)), LastTimeCounterRemovedCondition.instance, "When {this} dies, if it had no time counters on it, create a 6/1 green Insect creature token with shroud.")); } diff --git a/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java b/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java index a6ce636538..bd11a8a6cd 100644 --- a/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java +++ b/Mage.Sets/src/mage/cards/e/EmptyTheWarrens.java @@ -1,4 +1,3 @@ - package mage.cards.e; import java.util.UUID; @@ -20,6 +19,7 @@ public final class EmptyTheWarrens extends CardImpl { // Create two 1/1 red Goblin creature tokens. this.getSpellAbility().addEffect(new CreateTokenEffect(new GoblinToken(), 2)); + // Storm this.addAbility(new StormAbility()); } diff --git a/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java b/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java index 9d78666f4a..afab8b04b8 100644 --- a/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java +++ b/Mage.Sets/src/mage/cards/f/FreyaliseLlanowarsFury.java @@ -1,4 +1,3 @@ - package mage.cards.f; import mage.ObjectColor; @@ -16,7 +15,7 @@ import mage.constants.SubType; import mage.filter.StaticFilters; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.ColorPredicate; -import mage.game.permanent.token.FreyaliseLlanowarsFuryToken; +import mage.game.permanent.token.ElfDruidToken; import mage.target.TargetPermanent; import java.util.UUID; @@ -42,11 +41,13 @@ public final class FreyaliseLlanowarsFury extends CardImpl { this.addAbility(new PlaneswalkerEntersWithLoyaltyCountersAbility(3)); // +2: Create a 1/1 green Elf Druid creature token with "{T}: Add {G}." - this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new FreyaliseLlanowarsFuryToken()), 2)); + this.addAbility(new LoyaltyAbility(new CreateTokenEffect(new ElfDruidToken()), 2)); + // -2: Destroy target artifact or enchantment. LoyaltyAbility loyaltyAbility = new LoyaltyAbility(new DestroyTargetEffect(), -2); loyaltyAbility.addTarget(new TargetPermanent(StaticFilters.FILTER_PERMANENT_ARTIFACT_OR_ENCHANTMENT)); this.addAbility(loyaltyAbility); + // -6: Draw a card for each green creature you control. this.addAbility(new LoyaltyAbility(new DrawCardSourceControllerEffect(new PermanentsOnBattlefieldCount(filterGreen)), -6)); diff --git a/Mage.Sets/src/mage/cards/g/GoblinGangLeader.java b/Mage.Sets/src/mage/cards/g/GoblinGangLeader.java index 7f8bef0787..3b80682219 100644 --- a/Mage.Sets/src/mage/cards/g/GoblinGangLeader.java +++ b/Mage.Sets/src/mage/cards/g/GoblinGangLeader.java @@ -25,7 +25,7 @@ public final class GoblinGangLeader extends CardImpl { this.toughness = new MageInt(2); // When Goblin Gang Leader enters the battlefield, create two 1/1 red Goblin creature tokens. - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GoblinToken("ANA"), 2))); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new GoblinToken(), 2))); } private GoblinGangLeader(final GoblinGangLeader card) { diff --git a/Mage.Sets/src/mage/cards/g/GriffinGuide.java b/Mage.Sets/src/mage/cards/g/GriffinGuide.java index c99cfc81b3..f6cdb2ea84 100644 --- a/Mage.Sets/src/mage/cards/g/GriffinGuide.java +++ b/Mage.Sets/src/mage/cards/g/GriffinGuide.java @@ -1,4 +1,3 @@ - package mage.cards.g; import java.util.UUID; @@ -34,10 +33,12 @@ public final class GriffinGuide extends CardImpl { this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); Ability ability = new EnchantAbility(auraTarget.getTargetName()); this.addAbility(ability); + // Enchanted creature gets +2/+2 and has flying. ability = new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(2, 2, Duration.WhileOnBattlefield)); ability.addEffect(new GainAbilityAttachedEffect(FlyingAbility.getInstance(), AttachmentType.AURA, Duration.WhileOnBattlefield, "and has flying")); this.addAbility(ability); + // When enchanted creature dies, create a 2/2 white Griffin creature token with flying. this.addAbility(new DiesAttachedTriggeredAbility(new CreateTokenEffect(new GriffinToken()), "enchanted creature")); } diff --git a/Mage.Sets/src/mage/cards/k/KherKeep.java b/Mage.Sets/src/mage/cards/k/KherKeep.java index b5cc8ce67c..70b8597d9b 100644 --- a/Mage.Sets/src/mage/cards/k/KherKeep.java +++ b/Mage.Sets/src/mage/cards/k/KherKeep.java @@ -1,4 +1,3 @@ - package mage.cards.k; import java.util.UUID; @@ -25,9 +24,10 @@ public final class KherKeep extends CardImpl { super(ownerId, setInfo, new CardType[]{CardType.LAND}, ""); addSuperType(SuperType.LEGENDARY); - // {tap}: Add {C}. + // {T}: Add {C}. this.addAbility(new ColorlessManaAbility()); - // {1}{R}, {tap}: Create a 0/1 red Kobold creature token named Kobolds of Kher Keep. + + // {1}{R}, {T}: Create a 0/1 red Kobold creature token named Kobolds of Kher Keep. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new KherKeepKoboldToken()), new ManaCostsImpl("{1}{R}")); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/k/KrenkoTinStreetKingpin.java b/Mage.Sets/src/mage/cards/k/KrenkoTinStreetKingpin.java index 10b4d902e5..4373e2d6af 100644 --- a/Mage.Sets/src/mage/cards/k/KrenkoTinStreetKingpin.java +++ b/Mage.Sets/src/mage/cards/k/KrenkoTinStreetKingpin.java @@ -72,6 +72,6 @@ class KrenkoTinStreetKingpinEffect extends OneShotEffect { new AddCountersSourceEffect(CounterType.P1P1.createInstance()).apply(game, source); game.getState().processAction(game); int xValue = permanent.getPower().getValue(); - return new CreateTokenEffect(new GoblinToken("WAR"), xValue).apply(game, source); + return new CreateTokenEffect(new GoblinToken(), xValue).apply(game, source); } } \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/l/LlanowarMentor.java b/Mage.Sets/src/mage/cards/l/LlanowarMentor.java index 7997c44076..f9338c3983 100644 --- a/Mage.Sets/src/mage/cards/l/LlanowarMentor.java +++ b/Mage.Sets/src/mage/cards/l/LlanowarMentor.java @@ -1,4 +1,3 @@ - package mage.cards.l; import java.util.UUID; @@ -29,7 +28,7 @@ public final class LlanowarMentor extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // {G}, {tap}, Discard a card: Create a 1/1 green Elf Druid creature token named Llanowar Elves. It has "{tap}: Add {G}." + // {G}, {T}, Discard a card: Create a 1/1 green Elf Druid creature token named Llanowar Elves. It has "{T}: Add {G}." Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new LlanowarElvesToken()), new ManaCostsImpl("{G}")); ability.addCost(new TapSourceCost()); ability.addCost(new DiscardCardCost()); diff --git a/Mage.Sets/src/mage/cards/m/Mycologist.java b/Mage.Sets/src/mage/cards/m/Mycologist.java index be55ad6c9d..d44f102733 100644 --- a/Mage.Sets/src/mage/cards/m/Mycologist.java +++ b/Mage.Sets/src/mage/cards/m/Mycologist.java @@ -1,4 +1,3 @@ - package mage.cards.m; import java.util.UUID; @@ -42,8 +41,10 @@ public final class Mycologist extends CardImpl { // At the beginning of your upkeep, put a spore counter on Mycologist. this.addAbility(new BeginningOfUpkeepTriggeredAbility(new AddCountersSourceEffect(CounterType.SPORE.createInstance()), TargetController.YOU, false)); + // Remove three spore counters from Mycologist: Create a 1/1 green Saproling creature token. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SaprolingToken()), new RemoveCountersSourceCost(CounterType.SPORE.createInstance(3)))); + // Sacrifice a Saproling: You gain 2 life. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainLifeEffect(2), new SacrificeTargetCost(new TargetControlledPermanent(1, 1, filter, false)))); diff --git a/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java b/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java index 103fce76fe..e8a8e2c45a 100644 --- a/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java +++ b/Mage.Sets/src/mage/cards/p/PactOfTheTitan.java @@ -1,4 +1,3 @@ - package mage.cards.p; import java.util.UUID; @@ -24,6 +23,7 @@ public final class PactOfTheTitan extends CardImpl { // Create a 4/4 red Giant creature token. this.getSpellAbility().addEffect(new CreateTokenEffect(new GiantToken())); + // At the beginning of your next upkeep, pay {4}{R}. If you don't, you lose the game. this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new PactDelayedTriggeredAbility(new ManaCostsImpl("{4}{R}")))); } diff --git a/Mage.Sets/src/mage/cards/p/PenumbraSpider.java b/Mage.Sets/src/mage/cards/p/PenumbraSpider.java index f767bcc853..363526fe5b 100644 --- a/Mage.Sets/src/mage/cards/p/PenumbraSpider.java +++ b/Mage.Sets/src/mage/cards/p/PenumbraSpider.java @@ -1,4 +1,3 @@ - package mage.cards.p; import java.util.UUID; @@ -27,6 +26,7 @@ public final class PenumbraSpider extends CardImpl { // Reach this.addAbility(ReachAbility.getInstance()); + // When Penumbra Spider dies, create a 2/4 black Spider creature token with reach. this.addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new PenumbraSpiderToken()), false)); } diff --git a/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java b/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java index 0908cc998e..d25418fb15 100644 --- a/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java +++ b/Mage.Sets/src/mage/cards/r/RiftmarkedKnight.java @@ -1,4 +1,3 @@ - package mage.cards.r; import java.util.UUID; @@ -39,8 +38,10 @@ public final class RiftmarkedKnight extends CardImpl { // Protection from black; flanking this.addAbility(ProtectionAbility.from(ObjectColor.BLACK)); this.addAbility(new FlankingAbility()); + // Suspend 3-{1}{W}{W} this.addAbility(new SuspendAbility(3, new ManaCostsImpl("{1}{W}{W}"), this)); + // When the last time counter is removed from Riftmarked Knight while it's exiled, put a 2/2 black Knight creature token with flanking, protection from white, and haste onto the battlefield. this.addAbility(new RiftmarkedKnightTriggeredAbility()); } diff --git a/Mage.Sets/src/mage/cards/s/Sliversmith.java b/Mage.Sets/src/mage/cards/s/Sliversmith.java index d13b9ecf02..bdfade99e9 100644 --- a/Mage.Sets/src/mage/cards/s/Sliversmith.java +++ b/Mage.Sets/src/mage/cards/s/Sliversmith.java @@ -1,4 +1,3 @@ - package mage.cards.s; import java.util.UUID; @@ -14,7 +13,7 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; import mage.constants.Zone; -import mage.game.permanent.token.SliversmithToken; +import mage.game.permanent.token.MetallicSliverToken; /** * @@ -28,8 +27,8 @@ public final class Sliversmith extends CardImpl { this.power = new MageInt(1); this.toughness = new MageInt(1); - // {1}, {tap}, Discard a card: Create a 1/1 colorless Sliver artifact creature token named Metallic Sliver. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SliversmithToken()), new ManaCostsImpl("{1}")); + // {1}, {T}, Discard a card: Create a 1/1 colorless Sliver artifact creature token named Metallic Sliver. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new MetallicSliverToken()), new ManaCostsImpl("{1}")); ability.addCost(new TapSourceCost()); ability.addCost(new DiscardCardCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/u/UrzasFactory.java b/Mage.Sets/src/mage/cards/u/UrzasFactory.java index c1632f5ccc..a38b31e006 100644 --- a/Mage.Sets/src/mage/cards/u/UrzasFactory.java +++ b/Mage.Sets/src/mage/cards/u/UrzasFactory.java @@ -1,4 +1,3 @@ - package mage.cards.u; import mage.abilities.Ability; @@ -28,7 +27,8 @@ public final class UrzasFactory extends CardImpl { // {tap}: Add {C}. this.addAbility(new ColorlessManaAbility()); - // {7}, {tap}: Create a 2/2 colorless Assembly-Worker artifact creature token. + + // {7}, {T}: Create a 2/2 colorless Assembly-Worker artifact creature token. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new AssemblyWorkerToken()), new GenericManaCost(7)); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java b/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java index 9376200c6d..0f8cd50813 100644 --- a/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/AssemblyWorkerToken.java @@ -5,6 +5,8 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.MageInt; +import java.util.Arrays; + /** * * @author spjspj @@ -15,9 +17,12 @@ public final class AssemblyWorkerToken extends TokenImpl { super("Assembly-Worker", "2/2 Assembly-Worker artifact creature"); cardType.add(CardType.ARTIFACT); cardType.add(CardType.CREATURE); - this.subtype.add(SubType.ASSEMBLY_WORKER); + subtype.add(SubType.ASSEMBLY_WORKER); + power = new MageInt(2); toughness = new MageInt(2); + + availableImageSetCodes = Arrays.asList("4ED", "ATQ", "DDF", "EMA", "MED", "TSR"); } public AssemblyWorkerToken(final AssemblyWorkerToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/BearToken.java b/Mage/src/main/java/mage/game/permanent/token/BearToken.java index 8740baa4f1..aaaf7313f9 100644 --- a/Mage/src/main/java/mage/game/permanent/token/BearToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/BearToken.java @@ -19,7 +19,7 @@ public final class BearToken extends TokenImpl { power = new MageInt(2); toughness = new MageInt(2); - availableImageSetCodes = Arrays.asList("C15", "JUD", "LGN", "ODY", "ONS", "VMA", "MH1", "ELD", "KHM"); + availableImageSetCodes = Arrays.asList("C15", "JUD", "ODY", "ONS", "VMA", "MH1", "ELD", "KHM"); } public BearToken(final BearToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/CloudSpriteToken.java b/Mage/src/main/java/mage/game/permanent/token/CloudSpriteToken.java index c4db1218da..4794f24207 100644 --- a/Mage/src/main/java/mage/game/permanent/token/CloudSpriteToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/CloudSpriteToken.java @@ -7,6 +7,8 @@ import mage.MageInt; import mage.abilities.common.CanBlockOnlyFlyingAbility; import mage.abilities.keyword.FlyingAbility; +import java.util.Arrays; + /** * * @author spjspj @@ -15,15 +17,19 @@ public final class CloudSpriteToken extends TokenImpl { public CloudSpriteToken() { super("Cloud Sprite", "1/1 blue Faerie creature token named Cloud Sprite. It has flying and \"Cloud Sprite can block only creatures with flying.\""); - this.setOriginalExpansionSetCode("FUT"); cardType.add(CardType.CREATURE); color.setBlue(true); subtype.add(SubType.FAERIE); power = new MageInt(1); toughness = new MageInt(1); + // Flying this.addAbility(FlyingAbility.getInstance()); + + // Cloud Sprite can block only creatures with flying. this.addAbility(new CanBlockOnlyFlyingAbility()); + + availableImageSetCodes = Arrays.asList("TSR"); } public CloudSpriteToken(final CloudSpriteToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/DeadlyGrubToken.java b/Mage/src/main/java/mage/game/permanent/token/DeadlyGrubInsectToken.java similarity index 59% rename from Mage/src/main/java/mage/game/permanent/token/DeadlyGrubToken.java rename to Mage/src/main/java/mage/game/permanent/token/DeadlyGrubInsectToken.java index bb64e98d08..479718031b 100644 --- a/Mage/src/main/java/mage/game/permanent/token/DeadlyGrubToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/DeadlyGrubInsectToken.java @@ -6,27 +6,33 @@ import mage.constants.SubType; import mage.MageInt; import mage.abilities.keyword.ShroudAbility; +import java.util.Arrays; + /** * * @author spjspj */ -public final class DeadlyGrubToken extends TokenImpl { +public final class DeadlyGrubInsectToken extends TokenImpl { - public DeadlyGrubToken() { + public DeadlyGrubInsectToken() { super("Insect", "6/1 green Insect creature token with shroud"); cardType.add(CardType.CREATURE); color.setGreen(true); subtype.add(SubType.INSECT); power = new MageInt(6); toughness = new MageInt(1); + + // Shroud this.addAbility(ShroudAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("PLC", "TSR"); } - public DeadlyGrubToken(final DeadlyGrubToken token) { + public DeadlyGrubInsectToken(final DeadlyGrubInsectToken token) { super(token); } - public DeadlyGrubToken copy() { - return new DeadlyGrubToken(this); + public DeadlyGrubInsectToken copy() { + return new DeadlyGrubInsectToken(this); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/FreyaliseLlanowarsFuryToken.java b/Mage/src/main/java/mage/game/permanent/token/ElfDruidToken.java similarity index 51% rename from Mage/src/main/java/mage/game/permanent/token/FreyaliseLlanowarsFuryToken.java rename to Mage/src/main/java/mage/game/permanent/token/ElfDruidToken.java index 2f2c3b25ed..38c925dbeb 100644 --- a/Mage/src/main/java/mage/game/permanent/token/FreyaliseLlanowarsFuryToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ElfDruidToken.java @@ -1,9 +1,8 @@ package mage.game.permanent.token; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; + import mage.constants.CardType; import mage.constants.SubType; import mage.MageInt; @@ -14,26 +13,18 @@ import mage.abilities.mana.GreenManaAbility; * * @author spjspj */ -public final class FreyaliseLlanowarsFuryToken extends TokenImpl { +public final class ElfDruidToken extends TokenImpl { - static final private List tokenImageSets = new ArrayList<>(); - - static { - tokenImageSets.addAll(Arrays.asList("C14", "CMA")); - } - - public FreyaliseLlanowarsFuryToken() { + public ElfDruidToken() { this(null, 0); } - public FreyaliseLlanowarsFuryToken(String setCode) { + public ElfDruidToken(String setCode) { this(setCode, 0); } - public FreyaliseLlanowarsFuryToken(String setCode, int tokenType) { + public ElfDruidToken(String setCode, int tokenType) { super("Elf Druid", "1/1 green Elf Druid creature token with \"{T}: Add {G}.\""); - availableImageSetCodes = tokenImageSets; - setOriginalExpansionSetCode(setCode); this.cardType.add(CardType.CREATURE); this.color = ObjectColor.GREEN; this.subtype.add(SubType.ELF); @@ -44,13 +35,15 @@ public final class FreyaliseLlanowarsFuryToken extends TokenImpl { // {T}: Add {G}. this.addAbility(new GreenManaAbility()); + + availableImageSetCodes = Arrays.asList("C14"); } - public FreyaliseLlanowarsFuryToken(final FreyaliseLlanowarsFuryToken token) { + public ElfDruidToken(final ElfDruidToken token) { super(token); } - public FreyaliseLlanowarsFuryToken copy() { - return new FreyaliseLlanowarsFuryToken(this); + public ElfDruidToken copy() { + return new ElfDruidToken(this); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/FesteringGoblinToken.java b/Mage/src/main/java/mage/game/permanent/token/FesteringGoblinToken.java index 5629aad50c..6f85ef6a2c 100644 --- a/Mage/src/main/java/mage/game/permanent/token/FesteringGoblinToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/FesteringGoblinToken.java @@ -18,7 +18,6 @@ public final class FesteringGoblinToken extends TokenImpl { public FesteringGoblinToken() { super("Festering Goblin", "1/1 black Zombie Goblin creature token named Festering Goblin with \"When Festering Goblin dies, target creature gets -1/-1 until end of turn.\""); - this.setOriginalExpansionSetCode("FUT"); cardType.add(CardType.CREATURE); color.setBlack(true); subtype.add(SubType.ZOMBIE); diff --git a/Mage/src/main/java/mage/game/permanent/token/GiantToken.java b/Mage/src/main/java/mage/game/permanent/token/GiantToken.java index f33b82b956..1101b1d6a9 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GiantToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GiantToken.java @@ -5,6 +5,8 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.MageInt; +import java.util.Arrays; + /** * * @author spjspj @@ -18,6 +20,8 @@ public final class GiantToken extends TokenImpl { color.setRed(true); power = new MageInt(4); toughness = new MageInt(4); + + availableImageSetCodes = Arrays.asList("TSR"); } public GiantToken(final GiantToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java b/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java index 5eae26f2d3..8ee53c5be3 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GoblinToken.java @@ -14,16 +14,10 @@ import java.util.List; */ public final class GoblinToken extends TokenImpl { - static final private List tokenImageSets = new ArrayList<>(); - - static { - tokenImageSets.addAll(Arrays.asList("10E", "ALA", "SOM", "M10", "NPH", "M13", "RTR", - "MMA", "M15", "C14", "KTK", "EVG", "DTK", "ORI", "DDG", "DDN", "EVG", "MM2", - "MM3", "EMA", "C16", "DOM", "ANA", "RNA", "WAR", "MH1")); - } - public GoblinToken(boolean withHaste) { this(); + + // token image don't have haste info so it's ok to use same class for different versions if (withHaste) { addAbility(HasteAbility.getInstance()); this.description = "1/1 red Goblin creature token with haste"; @@ -31,22 +25,16 @@ public final class GoblinToken extends TokenImpl { } public GoblinToken() { - this(null, 0); - } - - public GoblinToken(String setCode) { - this(setCode, 0); - } - - public GoblinToken(String setCode, int tokenType) { super("Goblin", "1/1 red Goblin creature token"); - availableImageSetCodes = tokenImageSets; - setOriginalExpansionSetCode(setCode); cardType.add(CardType.CREATURE); subtype.add(SubType.GOBLIN); color.setRed(true); power = new MageInt(1); toughness = new MageInt(1); + + availableImageSetCodes = Arrays.asList("10E", "ALA", "SOM", "M10", "NPH", "M13", "RTR", + "MMA", "M15", "C14", "KTK", "EVG", "DTK", "ORI", "DDG", "DDN", "EVG", "MM2", + "MM3", "EMA", "C16", "DOM", "ANA", "RNA", "WAR", "MH1", "TSR"); } public GoblinToken(final GoblinToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/GoldmeadowHarrierToken.java b/Mage/src/main/java/mage/game/permanent/token/GoldmeadowHarrierToken.java index 14dcc4203e..835566acf1 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GoldmeadowHarrierToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GoldmeadowHarrierToken.java @@ -20,7 +20,6 @@ public final class GoldmeadowHarrierToken extends TokenImpl { public GoldmeadowHarrierToken() { super("Goldmeadow Harrier", "1/1 white Kithkin Soldier creature token named Goldmeadow Harrier with \"{W}, {T}: Tap target creature.\""); - this.setOriginalExpansionSetCode("FUT"); cardType.add(CardType.CREATURE); color.setWhite(true); subtype.add(SubType.KITHKIN); diff --git a/Mage/src/main/java/mage/game/permanent/token/GriffinToken.java b/Mage/src/main/java/mage/game/permanent/token/GriffinToken.java index 4914ca065b..0fae4a8102 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GriffinToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GriffinToken.java @@ -19,9 +19,11 @@ public final class GriffinToken extends TokenImpl { subtype.add(SubType.GRIFFIN); power = new MageInt(2); toughness = new MageInt(2); + + // Flying this.addAbility(FlyingAbility.getInstance()); - availableImageSetCodes.addAll(Arrays.asList("DDG", "DDH", "DDL", "TSP", "M21")); + availableImageSetCodes = Arrays.asList("DDG", "DDH", "DDL", "TSP", "M21", "TSR"); } public GriffinToken(final GriffinToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/KherKeepKoboldToken.java b/Mage/src/main/java/mage/game/permanent/token/KherKeepKoboldToken.java index 9a247da94e..c2b71ce24a 100644 --- a/Mage/src/main/java/mage/game/permanent/token/KherKeepKoboldToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/KherKeepKoboldToken.java @@ -5,6 +5,8 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.MageInt; +import java.util.Arrays; + /** * * @author spjspj @@ -18,6 +20,8 @@ public final class KherKeepKoboldToken extends TokenImpl { subtype.add(SubType.KOBOLD); power = new MageInt(0); toughness = new MageInt(1); + + availableImageSetCodes = Arrays.asList("TSR"); } public KherKeepKoboldToken(final KherKeepKoboldToken token) { super(token); diff --git a/Mage/src/main/java/mage/game/permanent/token/KithkinSoldierToken.java b/Mage/src/main/java/mage/game/permanent/token/KithkinSoldierToken.java index 7520803743..4c199dc9e6 100644 --- a/Mage/src/main/java/mage/game/permanent/token/KithkinSoldierToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/KithkinSoldierToken.java @@ -20,7 +20,7 @@ public final class KithkinSoldierToken extends TokenImpl { power = new MageInt(1); toughness = new MageInt(1); - availableImageSetCodes = Arrays.asList("CMD", "EVE", "FUT", "LRW", "MMA", "MOR", "SHM", "MMA", "KHC"); + availableImageSetCodes = Arrays.asList("CMD", "EVE", "LRW", "MMA", "MOR", "SHM", "MMA", "KHC"); } public KithkinSoldierToken(final KithkinSoldierToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/LlanowarElvesToken.java b/Mage/src/main/java/mage/game/permanent/token/LlanowarElvesToken.java index ed4dff01d6..799e8600b7 100644 --- a/Mage/src/main/java/mage/game/permanent/token/LlanowarElvesToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/LlanowarElvesToken.java @@ -1,11 +1,12 @@ - - package mage.game.permanent.token; + import mage.constants.CardType; import mage.constants.SubType; import mage.MageInt; import mage.abilities.mana.GreenManaAbility; +import java.util.Arrays; + /** * * @author spjspj @@ -14,7 +15,6 @@ public final class LlanowarElvesToken extends TokenImpl { public LlanowarElvesToken() { super("Llanowar Elves", "1/1 green Elf Druid creature token named Llanowar Elves with \"{T}: Add {G}.\""); - this.setOriginalExpansionSetCode("FUT"); cardType.add(CardType.CREATURE); color.setGreen(true); subtype.add(SubType.ELF); @@ -22,7 +22,10 @@ public final class LlanowarElvesToken extends TokenImpl { power = new MageInt(1); toughness = new MageInt(1); + // {T}: Add {G}. this.addAbility(new GreenManaAbility()); + + availableImageSetCodes = Arrays.asList("TSR"); } public LlanowarElvesToken(final LlanowarElvesToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/SliversmithToken.java b/Mage/src/main/java/mage/game/permanent/token/MetallicSliverToken.java similarity index 59% rename from Mage/src/main/java/mage/game/permanent/token/SliversmithToken.java rename to Mage/src/main/java/mage/game/permanent/token/MetallicSliverToken.java index 868a8f5e2f..5e445dbc5e 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SliversmithToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/MetallicSliverToken.java @@ -5,27 +5,30 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.MageInt; +import java.util.Arrays; + /** * * @author spjspj */ -public final class SliversmithToken extends TokenImpl { +public final class MetallicSliverToken extends TokenImpl { - public SliversmithToken() { + public MetallicSliverToken() { super("Metallic Sliver", "1/1 colorless Sliver creature token named Metallic Sliver"); cardType.add(CardType.CREATURE); cardType.add(CardType.ARTIFACT); subtype.add(SubType.SLIVER); power = new MageInt(1); toughness = new MageInt(1); - this.setOriginalExpansionSetCode("FUT"); + + availableImageSetCodes = Arrays.asList("TSR"); } - public SliversmithToken(final SliversmithToken token) { + public MetallicSliverToken(final MetallicSliverToken token) { super(token); } - public SliversmithToken copy() { - return new SliversmithToken(this); + public MetallicSliverToken copy() { + return new MetallicSliverToken(this); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/PegasusToken.java b/Mage/src/main/java/mage/game/permanent/token/PegasusToken.java index 61f32a87db..119fee8afe 100644 --- a/Mage/src/main/java/mage/game/permanent/token/PegasusToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/PegasusToken.java @@ -22,7 +22,7 @@ public final class PegasusToken extends TokenImpl { addAbility(FlyingAbility.getInstance()); - availableImageSetCodes = Arrays.asList("C14", "C19", "CMD", "EXO", "GPT", "MIR", "TMP", "TPR", "TSP", "THB", "KHC"); + availableImageSetCodes = Arrays.asList("C14", "C19", "CMD", "EXO", "GPT", "MIR", "TMP", "TSP", "THB", "KHC"); } public PegasusToken(final PegasusToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/PenumbraSpiderToken.java b/Mage/src/main/java/mage/game/permanent/token/PenumbraSpiderToken.java index 80340d7db2..60fd288559 100644 --- a/Mage/src/main/java/mage/game/permanent/token/PenumbraSpiderToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/PenumbraSpiderToken.java @@ -1,4 +1,3 @@ - package mage.game.permanent.token; import mage.constants.CardType; @@ -6,6 +5,8 @@ import mage.constants.SubType; import mage.MageInt; import mage.abilities.keyword.ReachAbility; +import java.util.Arrays; + /** * * @author spjspj @@ -20,7 +21,10 @@ public final class PenumbraSpiderToken extends TokenImpl { subtype.add(SubType.SPIDER); power = new MageInt(2); toughness = new MageInt(4); + addAbility(ReachAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("MMA", "PC2", "TSP", "TSR"); } public PenumbraSpiderToken(final PenumbraSpiderToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/PongifyApeToken.java b/Mage/src/main/java/mage/game/permanent/token/PongifyApeToken.java index 377fbc706a..16a31ed60a 100644 --- a/Mage/src/main/java/mage/game/permanent/token/PongifyApeToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/PongifyApeToken.java @@ -5,6 +5,8 @@ import mage.constants.CardType; import mage.constants.SubType; import mage.MageInt; +import java.util.Arrays; + /** * * @author spjspj @@ -18,6 +20,8 @@ public final class PongifyApeToken extends TokenImpl { subtype.add(SubType.APE); power = new MageInt(3); toughness = new MageInt(3); + + availableImageSetCodes = Arrays.asList("10E", "C14", "GVL", "DDD", "DDG", "PLC", "ULG", "UNH", "TSR"); } public PongifyApeToken(final PongifyApeToken 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 372b8e1eb5..460967726d 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", "STH", "TPR", "ELD", "ZNC"); + availableImageSetCodes = Arrays.asList("C17", "CHK", "GTC", "SHM", "ELD", "ZNC"); } public RatToken(final RatToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/RenownedWeaverSpiderToken.java b/Mage/src/main/java/mage/game/permanent/token/RenownedWeaverSpiderToken.java index 4fc671fca7..cc91c55382 100644 --- a/Mage/src/main/java/mage/game/permanent/token/RenownedWeaverSpiderToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/RenownedWeaverSpiderToken.java @@ -7,6 +7,8 @@ import mage.MageInt; import mage.ObjectColor; import mage.abilities.keyword.ReachAbility; +import java.util.Arrays; + /** * * @author spjspj @@ -15,14 +17,16 @@ public final class RenownedWeaverSpiderToken extends TokenImpl { public RenownedWeaverSpiderToken() { super("Spider", "1/3 green Spider enchantment creature token with reach"); - this.setOriginalExpansionSetCode("JOU"); cardType.add(CardType.ENCHANTMENT); cardType.add(CardType.CREATURE); color.setColor(ObjectColor.GREEN); subtype.add(SubType.SPIDER); power = new MageInt(1); toughness = new MageInt(3); + this.addAbility(ReachAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("JOU"); } public RenownedWeaverSpiderToken(final RenownedWeaverSpiderToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/RiftmarkedKnightToken.java b/Mage/src/main/java/mage/game/permanent/token/RiftmarkedKnightToken.java index 59b2e3cb2d..28114c0028 100644 --- a/Mage/src/main/java/mage/game/permanent/token/RiftmarkedKnightToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/RiftmarkedKnightToken.java @@ -9,6 +9,8 @@ import mage.abilities.keyword.FlankingAbility; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.ProtectionAbility; +import java.util.Arrays; + /** * * @author spjspj @@ -22,9 +24,12 @@ public final class RiftmarkedKnightToken extends TokenImpl { subtype.add(SubType.KNIGHT); power = new MageInt(2); toughness = new MageInt(2); - this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); + this.addAbility(new FlankingAbility()); + this.addAbility(ProtectionAbility.from(ObjectColor.WHITE)); this.addAbility(HasteAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("PLC", "TSR"); } public RiftmarkedKnightToken(final RiftmarkedKnightToken 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 492bc66945..4c486de7d9 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java @@ -44,7 +44,8 @@ public final class SaprolingToken extends TokenImpl { "C20", "M21", "ZNC", - "CMR" + "CMR", + "TSR" )); } diff --git a/Mage/src/main/java/mage/game/permanent/token/SengirNosferatuBatToken.java b/Mage/src/main/java/mage/game/permanent/token/SengirNosferatuBatToken.java index 149d05a067..409067f34b 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SengirNosferatuBatToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SengirNosferatuBatToken.java @@ -19,6 +19,8 @@ import mage.players.Player; import mage.target.Target; import mage.target.common.TargetCardInExile; +import java.util.Arrays; + /** * @author spjspj */ @@ -31,12 +33,18 @@ public final class SengirNosferatuBatToken extends TokenImpl { subtype.add(SubType.BAT); power = new MageInt(1); toughness = new MageInt(2); + + // Flying this.addAbility(FlyingAbility.getInstance()); + + // {1}{B}, Sacrifice this creature: Return an exiled card named Sengir Nosferatu to the battlefield under its owner’s control. ReturnSengirNosferatuEffect effect = new ReturnSengirNosferatuEffect(); effect.setText("Return an exiled card named Sengir Nosferatu to the battlefield under its owner's control."); Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, effect, new ManaCostsImpl("{1}{B}")); ability.addCost(new SacrificeSourceCost()); this.addAbility(ability); + + availableImageSetCodes = Arrays.asList("TSP", "TSR"); } public SengirNosferatuBatToken(final SengirNosferatuBatToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/SoldierToken.java b/Mage/src/main/java/mage/game/permanent/token/SoldierToken.java index 14a288dcd5..3c80ef10b3 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SoldierToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SoldierToken.java @@ -20,8 +20,9 @@ public final class SoldierToken extends TokenImpl { power = new MageInt(1); toughness = new MageInt(1); - availableImageSetCodes = Arrays.asList("10E", "M15", "C14", "ORI", "ALA", "DDF", "THS", "M12", "M13", "MM2", "MMA", "RTR", - "SOM", "DDO", "M10", "ORI", "EMN", "EMA", "CN2", "C16", "MM3", "E01", "DOM", "MH1", "M20", "C20", "M21", "CMR", "KHC"); + availableImageSetCodes = Arrays.asList("10E", "M15", "C14", "ORI", "ALA", "DDF", "THS", "M12", "M13", + "MM2", "MMA", "RTR", "SOM", "DDO", "M10", "ORI", "EMN", "EMA", "CN2", "C16", "MM3", "E01", + "DOM", "MH1", "M20", "C20", "M21", "CMR", "KHC", "TSR"); } public SoldierToken(final SoldierToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/SparkElementalToken.java b/Mage/src/main/java/mage/game/permanent/token/SparkElementalToken.java index 29b6b565e2..1cc0a51890 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SparkElementalToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SparkElementalToken.java @@ -1,5 +1,3 @@ - - package mage.game.permanent.token; import mage.constants.CardType; import mage.constants.SubType; @@ -18,7 +16,6 @@ public final class SparkElementalToken extends TokenImpl { public SparkElementalToken() { super("Spark Elemental", "3/1 red Elemental creature token named Spark Elemental with trample, haste, and \"At the beginning of the end step, sacrifice Spark Elemental.\""); - this.setOriginalExpansionSetCode("FUT"); cardType.add(CardType.CREATURE); color.setRed(true); subtype.add(SubType.ELEMENTAL); 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 3355fddd40..2051205c8c 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java @@ -23,7 +23,7 @@ public final class ThopterColorlessToken extends TokenImpl { addAbility(FlyingAbility.getInstance()); - availableImageSetCodes = Arrays.asList("C18", "EXO", "KLD", "MBS", "ORI", "TPR", "VMA", "M19", "ZNC", "KHC"); + availableImageSetCodes = Arrays.asList("C18", "EXO", "KLD", "MBS", "ORI", "VMA", "M19", "ZNC", "KHC"); } @Override