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 daf5714a77..622383974f 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 @@ -131,8 +131,11 @@ 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"); @@ -547,6 +550,37 @@ public class ScryfallImageSupportTokens { 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"); + // C21 + put("C21/Beast/1", "https://api.scryfall.com/cards/tc21/10/en?format=image"); // 3/3 + put("C21/Beast/2", "https://api.scryfall.com/cards/tc21/11/en?format=image"); // 4/4 + put("C21/Boar", "https://api.scryfall.com/cards/tc21/12/en?format=image"); + put("C21/Champion of Wits", "https://api.scryfall.com/cards/tc21/6/en?format=image"); + put("C21/Construct/1", "https://api.scryfall.com/cards/tc21/22/en?format=image"); // x/x + put("C21/Construct/2", "https://api.scryfall.com/cards/tc21/23/en?format=image"); // 0/0 + put("C21/Demon", "https://api.scryfall.com/cards/tc21/7/en?format=image"); + put("C21/Drake", "https://api.scryfall.com/cards/tc21/2/en?format=image"); + put("C21/Eldrazi", "https://api.scryfall.com/cards/tc21/1/en?format=image"); + put("C21/Elemental", "https://api.scryfall.com/cards/tc21/20/en?format=image"); + put("C21/Elephant", "https://api.scryfall.com/cards/tc21/13/en?format=image"); + put("C21/Fish", "https://api.scryfall.com/cards/tc21/3/en?format=image"); + put("C21/Food", "https://api.scryfall.com/cards/tc21/24/en?format=image"); + put("C21/Frog Lizard", "https://api.scryfall.com/cards/tc21/14/en?format=image"); + put("C21/Fungus Beast", "https://api.scryfall.com/cards/tc21/15/en?format=image"); + put("C21/Golem/1", "https://api.scryfall.com/cards/tc21/25/en?format=image"); // fly + put("C21/Golem/2", "https://api.scryfall.com/cards/tc21/27/en?format=image"); // vigilance + put("C21/Golem/3", "https://api.scryfall.com/cards/tc21/26/en?format=image"); // trample + put("C21/Horror", "https://api.scryfall.com/cards/tc21/8/en?format=image"); + put("C21/Hydra", "https://api.scryfall.com/cards/tc21/16/en?format=image"); + put("C21/Insect", "https://api.scryfall.com/cards/tc21/17/en?format=image"); + put("C21/Kraken", "https://api.scryfall.com/cards/tc21/4/en?format=image"); + put("C21/Myr", "https://api.scryfall.com/cards/tc21/28/en?format=image"); + put("C21/Saproling", "https://api.scryfall.com/cards/tc21/18/en?format=image"); + put("C21/Spirit", "https://api.scryfall.com/cards/tc21/21/en?format=image"); + put("C21/Thopter", "https://api.scryfall.com/cards/tc21/29/en?format=image"); + put("C21/Whale", "https://api.scryfall.com/cards/tc21/5/en?format=image"); + put("C21/Wurm", "https://api.scryfall.com/cards/tc21/19/en?format=image"); + put("C21/Zombie", "https://api.scryfall.com/cards/tc21/9/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 0fc9a1e7ee..fa5a6e8612 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -266,7 +266,7 @@ |Generate|TOK:BNG|Centaur|||CentaurEnchantmentCreatureToken| |Generate|TOK:BNG|Elemental|||SatyrNyxSmithElementalToken| |Generate|TOK:BNG|Gold|| -|Generate|TOK:BNG|Kraken|||ReefWormKrakenToken| +|Generate|TOK:BNG|Kraken|||Kraken99Token| |Generate|TOK:BNG|Soldier|||GodFavoredGeneralSoldierToken| |Generate|TOK:BNG|Wolf|||WolfToken| |Generate|TOK:BNG|Zombie|||ForlornPseudammaZombieToken| @@ -303,7 +303,7 @@ |Generate|TOK:C14|Beast|2||BeastToken2| |Generate|TOK:C14|Cat|||CatToken| |Generate|TOK:C14|Demon|1||DemonToken| -|Generate|TOK:C14|Demon|2||ReignOfThePitToken| +|Generate|TOK:C14|Demon|2||DemonFlyingToken| |Generate|TOK:C14|Elemental|||TitaniaProtectorOfArgothElementalToken| |Generate|TOK:C14|Elephant|||ElephantToken| |Generate|TOK:C14|Elf Druid|||ElfDruidToken| @@ -317,7 +317,7 @@ |Generate|TOK:C14|Goblin|||GoblinToken| |Generate|TOK:C14|Horror|||SpoilsOfBloodHorrorToken| |Generate|TOK:C14|Kor Soldier|||KorSoldierToken| -|Generate|TOK:C14|Kraken|||ReefWormKrakenToken| +|Generate|TOK:C14|Kraken|||Kraken99Token| |Generate|TOK:C14|Myr|||MyrToken| |Generate|TOK:C14|Pegasus|||PegasusToken| |Generate|TOK:C14|Pentavite|||PentaviteToken| @@ -338,8 +338,8 @@ |Generate|TOK:C15|Dragon|||DragonToken2| |Generate|TOK:C15|Drake|||DrakeToken| |Generate|TOK:C15|Elemental Shaman|||ElementalShamanToken| -|Generate|TOK:C15|Elemental|||CallTheSkyBreakerElementalToken| -|Generate|TOK:C15|Elemental|||LightningRagerToken| +|Generate|TOK:C15|Elemental|1||CallTheSkyBreakerElementalToken| +|Generate|TOK:C15|Elemental|2||LightningRagerToken| |Generate|TOK:C15|Elephant|||ElephantToken| |Generate|TOK:C15|Frog Lizard|||RapidHybridizationToken| |Generate|TOK:C15|Germ|||GermToken| @@ -554,7 +554,7 @@ |Generate|TOK:DDM|Assassin|||AssassinToken| |Generate|TOK:DDM|Illusion|||IllusionToken| |Generate|TOK:DDN|Goblin|||GoblinToken| -|Generate|TOK:DDO|Kraken|||ReefWormKrakenToken| +|Generate|TOK:DDO|Kraken|||Kraken99Token| |Generate|TOK:DDO|Soldier|||SoldierToken| |Generate|TOK:DDP|Eldrazi Spawn|1||EldraziSpawnToken| |Generate|TOK:DDP|Eldrazi Spawn|2||EldraziSpawnToken| @@ -753,7 +753,9 @@ |Generate|TOK:JUD|Wurm|||WurmToken| |Generate|TOK:KLD|Beast|||ArchitectOfTheUntamedBeastToken| |Generate|TOK:KLD|Construct|1||OviyaPashiriSageLifecrafterToken| -|Generate|TOK:KLD|Construct|2||MetallurgicSummoningsConstructToken| +|Generate|TOK:KLD|Construct|2||OviyaPashiriSageLifecrafterToken| +|Generate|TOK:KLD|Construct|3||MetallurgicSummoningsConstructToken| +|Generate|TOK:KLD|Construct|4||MetallurgicSummoningsConstructToken| |Generate|TOK:KLD|Servo|1||ServoToken| |Generate|TOK:KLD|Servo|2||ServoToken| |Generate|TOK:KLD|Servo|3||ServoToken| @@ -1363,7 +1365,7 @@ |Generate|TOK:C20|Goblin Warrior|||GoblinWarriorToken| |Generate|TOK:C20|Human|||HumanToken| |Generate|TOK:C20|Hydra|||ZaxaraTheExemplaryHydraToken| -|Generate|TOK:C20|Insect|1||HornetQueenInsectToken| +|Generate|TOK:C20|Insect|1||InsectDeathToken| |Generate|TOK:C20|Insect|2||TheLocustGodInsectToken| |Generate|TOK:C20|Saproling|||SaprolingToken| |Generate|TOK:C20|Snake|||SnakeToken| @@ -1495,4 +1497,39 @@ |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 +|Generate|TOK:TSR|Spider|||PenumbraSpiderToken| + +# C21 +|Generate|TOK:C21|Beast|1||BeastToken| +|Generate|TOK:C21|Beast|2||BeastToken2| +|Generate|TOK:C21|Fungus Beast|||FungusBeastToken| +|Generate|TOK:C21|Boar|||Boar2Token| +# no need tokens for Eternalize ability, but scryfall have it: https://scryfall.com/card/tc21/6/champion-of-wits +# no need tokens for Copy, but scryfall have it: https://scryfall.com/card/tc21/30/copy +|Generate|TOK:C21|Construct|1||MetallurgicSummoningsConstructToken| +|Generate|TOK:C21|Construct|2||KarnConstructToken| +|Generate|TOK:C21|Demon|||DemonFlyingToken| +|Generate|TOK:C21|Drake|||DrakeToken| +|Generate|TOK:C21|Eldrazi|||EldraziToken| +|Generate|TOK:C21|Elemental|||CallTheSkyBreakerElementalToken| +|Generate|TOK:C21|Elephant|||ElephantToken| +|Generate|TOK:C21|Fish|||ReefWormFishToken| +|Generate|TOK:C21|Food|||FoodToken| +|Generate|TOK:C21|Frog Lizard|||FrogLizardToken| +|Generate|TOK:C21|Golem|1||GolemFlyingToken| +|Generate|TOK:C21|Golem|2||GolemVigilanceToken| +|Generate|TOK:C21|Golem|3||GolemTrampleToken| +|Generate|TOK:C21|Horror|||HorrorToken| +|Generate|TOK:C21|Hydra|||HydraBroodmasterToken| +|Generate|TOK:C21|Insect|||InsectDeathToken| +|Generate|TOK:C21|Kraken|||Kraken99Token| +|Generate|TOK:C21|Myr|||MyrToken| +|Generate|TOK:C21|Saproling|||SaprolingToken| +|Generate|TOK:C21|Spirit|||WhiteBlackSpiritToken| +|Generate|TOK:C21|Thopter|||ThopterColorlessToken| +|Generate|TOK:C21|Whale|||ReefWormWhaleToken| +|Generate|TOK:C21|Wurm|||WurmToken| +|Generate|TOK:C21|Zombie|||ZombieToken| + + +#|Generate|TOK:C21|xxx|||xxxToken| \ No newline at end of file diff --git a/Mage.Sets/src/mage/cards/d/DruidicSatchel.java b/Mage.Sets/src/mage/cards/d/DruidicSatchel.java index 0220860d1b..23c2402510 100644 --- a/Mage.Sets/src/mage/cards/d/DruidicSatchel.java +++ b/Mage.Sets/src/mage/cards/d/DruidicSatchel.java @@ -1,13 +1,14 @@ - package mage.cards.d; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.common.TapSourceCost; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; -import mage.cards.*; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.cards.CardsImpl; import mage.constants.CardType; import mage.constants.Outcome; import mage.constants.Zone; @@ -15,8 +16,9 @@ import mage.game.Game; import mage.game.permanent.token.SaprolingToken; import mage.players.Player; +import java.util.UUID; + /** - * * @author North */ public final class DruidicSatchel extends CardImpl { @@ -24,6 +26,7 @@ public final class DruidicSatchel extends CardImpl { public DruidicSatchel(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.ARTIFACT}, "{3}"); + // {2}, {T}: Reveal the top card of your library. If it’s a creature card, create a 1/1 green Saproling creature token. If it’s a land card, put that card onto the battlefield under your control. If it’s a noncreature, nonland card, you gain 2 life. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DruidicSatchelEffect(), new ManaCostsImpl("{2}")); ability.addCost(new TapSourceCost()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/cards/h/HornetNest.java b/Mage.Sets/src/mage/cards/h/HornetNest.java index 8db2e7eb66..58ca524bb4 100644 --- a/Mage.Sets/src/mage/cards/h/HornetNest.java +++ b/Mage.Sets/src/mage/cards/h/HornetNest.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.DealtDamageToSourceTriggeredAbility; @@ -11,14 +9,15 @@ import mage.abilities.keyword.DefenderAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.game.Game; -import mage.game.permanent.token.HornetNestInsectToken; +import mage.game.permanent.token.InsectDeathToken; import mage.players.Player; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class HornetNest extends CardImpl { @@ -32,6 +31,7 @@ public final class HornetNest extends CardImpl { // Defender this.addAbility(DefenderAbility.getInstance()); + // Whenever Hornet Nest is dealt damage, create that many 1/1 green Insect creature tokens with flying and deathtouch. this.addAbility(new DealtDamageToSourceTriggeredAbility(new HornetNestDealDamageEffect(), false, false, true)); } @@ -68,7 +68,7 @@ class HornetNestDealDamageEffect extends OneShotEffect { if (player != null) { int amount = (Integer) getValue("damage"); if (amount > 0) { - return new CreateTokenEffect(new HornetNestInsectToken(), amount).apply(game, source); + return new CreateTokenEffect(new InsectDeathToken(), amount).apply(game, source); } } return false; diff --git a/Mage.Sets/src/mage/cards/h/HornetQueen.java b/Mage.Sets/src/mage/cards/h/HornetQueen.java index 8a3d44036f..1e2a6ed47f 100644 --- a/Mage.Sets/src/mage/cards/h/HornetQueen.java +++ b/Mage.Sets/src/mage/cards/h/HornetQueen.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; @@ -11,10 +9,11 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.SubType; -import mage.game.permanent.token.HornetQueenInsectToken; +import mage.game.permanent.token.InsectDeathToken; + +import java.util.UUID; /** - * * @author LevelX2 */ public final class HornetQueen extends CardImpl { @@ -31,7 +30,7 @@ public final class HornetQueen extends CardImpl { // Deathtouch this.addAbility(DeathtouchAbility.getInstance()); // When Hornet Queen enters the battlefield, create four 1/1 green Insect creature tokens with flying and deathtouch. - this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new HornetQueenInsectToken(), 4), false)); + this.addAbility(new EntersBattlefieldTriggeredAbility(new CreateTokenEffect(new InsectDeathToken(), 4), false)); } private HornetQueen(final HornetQueen card) { diff --git a/Mage.Sets/src/mage/cards/h/HuntedLammasu.java b/Mage.Sets/src/mage/cards/h/HuntedLammasu.java index 17350ce363..d813409ae4 100644 --- a/Mage.Sets/src/mage/cards/h/HuntedLammasu.java +++ b/Mage.Sets/src/mage/cards/h/HuntedLammasu.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -15,6 +13,8 @@ import mage.game.permanent.token.HorrorToken; import mage.target.Target; import mage.target.common.TargetOpponent; +import java.util.UUID; + /** * @author Loki */ @@ -23,11 +23,12 @@ public final class HuntedLammasu extends CardImpl { public HuntedLammasu(UUID ownerId, CardSetInfo setInfo) { super(ownerId, setInfo, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); this.subtype.add(SubType.LAMMASU); - this.power = new MageInt(5); this.toughness = new MageInt(5); + // Flying this.addAbility(FlyingAbility.getInstance()); + // When Hunted Lammasu enters the battlefield, create a 4/4 black Horror creature token under target opponent's control. Ability ability = new EntersBattlefieldTriggeredAbility(new CreateTokenTargetEffect(new HorrorToken()), false); Target target = new TargetOpponent(); diff --git a/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java b/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java index 2136855c3b..7c9dc78c52 100644 --- a/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java +++ b/Mage.Sets/src/mage/cards/h/HydraBroodmaster.java @@ -1,7 +1,5 @@ - package mage.cards.h; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.BecomesMonstrousSourceTriggeredAbility; @@ -11,14 +9,15 @@ import mage.abilities.keyword.MonstrosityAbility; import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.CardType; -import mage.constants.SubType; import mage.constants.Outcome; +import mage.constants.SubType; import mage.game.Game; import mage.game.permanent.token.HydraBroodmasterToken; import mage.players.Player; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class HydraBroodmaster extends CardImpl { @@ -32,6 +31,7 @@ public final class HydraBroodmaster extends CardImpl { // {X}{X}{G}: Monstrosity X this.addAbility(new MonstrosityAbility("{X}{X}{G}", Integer.MAX_VALUE)); + // When Hydra Broodmaster becomes monstrous, create X X/X green Hydra creature tokens. this.addAbility(new BecomesMonstrousSourceTriggeredAbility(new HydraBroodmasterEffect())); } diff --git a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java index 810f982095..9dc9f7be71 100644 --- a/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java +++ b/Mage.Sets/src/mage/cards/m/MyrBattlesphere.java @@ -1,10 +1,5 @@ - package mage.cards.m; -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; @@ -14,11 +9,7 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.cards.CardImpl; import mage.cards.CardSetInfo; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Outcome; -import mage.constants.SubType; -import mage.constants.Zone; +import mage.constants.*; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.permanent.TappedPredicate; import mage.game.Game; @@ -29,8 +20,12 @@ import mage.players.Player; import mage.target.TargetPermanent; import mage.target.targetpointer.FixedTarget; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + /** - * * @author BetaSteward_at_googlemail.com */ public final class MyrBattlesphere extends CardImpl { diff --git a/Mage.Sets/src/mage/cards/p/PromiseOfPower.java b/Mage.Sets/src/mage/cards/p/PromiseOfPower.java index c4dd5bbc09..c8109933f5 100644 --- a/Mage.Sets/src/mage/cards/p/PromiseOfPower.java +++ b/Mage.Sets/src/mage/cards/p/PromiseOfPower.java @@ -1,7 +1,5 @@ - package mage.cards.p; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.Effect; @@ -15,11 +13,12 @@ import mage.cards.CardSetInfo; import mage.constants.CardType; import mage.constants.Outcome; import mage.game.Game; -import mage.game.permanent.token.PromiseOfPowerDemonToken; +import mage.game.permanent.token.DemonFlyingToken; import mage.players.Player; +import java.util.UUID; + /** - * * @author LevelX2 */ public final class PromiseOfPower extends CardImpl { @@ -73,7 +72,7 @@ class PromiseOfPowerEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { - return new CreateTokenEffect(new PromiseOfPowerDemonToken(controller.getHand().size())).apply(game, source); + return new CreateTokenEffect(new DemonFlyingToken(controller.getHand().size())).apply(game, source); } return false; } diff --git a/Mage.Sets/src/mage/cards/r/ReignOfThePit.java b/Mage.Sets/src/mage/cards/r/ReignOfThePit.java index e0e81f148f..15d500f499 100644 --- a/Mage.Sets/src/mage/cards/r/ReignOfThePit.java +++ b/Mage.Sets/src/mage/cards/r/ReignOfThePit.java @@ -1,9 +1,5 @@ - package mage.cards.r; -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.CreateTokenEffect; @@ -14,12 +10,15 @@ import mage.constants.Outcome; import mage.filter.common.FilterControlledCreaturePermanent; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.game.permanent.token.ReignOfThePitToken; +import mage.game.permanent.token.DemonFlyingToken; import mage.players.Player; import mage.target.common.TargetControlledCreaturePermanent; +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + /** - * * @author emerald000 */ public final class ReignOfThePit extends CardImpl { @@ -86,7 +85,7 @@ class ReignOfThePitEffect extends OneShotEffect { } } } - new CreateTokenEffect(new ReignOfThePitToken(totalPowerSacrificed)).apply(game, source); + new CreateTokenEffect(new DemonFlyingToken(totalPowerSacrificed)).apply(game, source); return true; } } diff --git a/Mage.Sets/src/mage/cards/s/SpawningKraken.java b/Mage.Sets/src/mage/cards/s/SpawningKraken.java index cbff3c5ed3..2ad696d7e1 100644 --- a/Mage.Sets/src/mage/cards/s/SpawningKraken.java +++ b/Mage.Sets/src/mage/cards/s/SpawningKraken.java @@ -11,7 +11,7 @@ import mage.constants.SubType; import mage.filter.FilterPermanent; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.Predicates; -import mage.game.permanent.token.KioraKrakenToken; +import mage.game.permanent.token.Kraken99Token; import java.util.UUID; @@ -41,7 +41,7 @@ public final class SpawningKraken extends CardImpl { // Whenever a Kraken, Leviathan, Octopus, or Serpent you control deals combat damage to a player, create a 9/9 blue Kraken creature token. this.addAbility(new DealsDamageToAPlayerAllTriggeredAbility( - new CreateTokenEffect(new KioraKrakenToken()), filter, + new CreateTokenEffect(new Kraken99Token()), filter, false, SetTargetPointer.NONE, true )); } diff --git a/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java b/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java index 44af718e95..9494fe1e6b 100644 --- a/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java +++ b/Mage.Sets/src/mage/cards/t/TeysaEnvoyOfGhosts.java @@ -1,4 +1,3 @@ - package mage.cards.t; import mage.MageInt; @@ -40,8 +39,10 @@ public final class TeysaEnvoyOfGhosts extends CardImpl { // Vigilance this.addAbility(VigilanceAbility.getInstance()); + // protection from creatures this.addAbility(new ProtectionAbility(FILTER_PERMANENT_CREATURES)); + // Whenever a creature deals combat damage to you, destroy that creature. Create a 1/1 white and black Spirit creature token with flying. this.addAbility(new TeysaEnvoyOfGhostsTriggeredAbility()); @@ -62,7 +63,6 @@ class TeysaEnvoyOfGhostsTriggeredAbility extends TriggeredAbilityImpl { public TeysaEnvoyOfGhostsTriggeredAbility() { super(Zone.BATTLEFIELD, new DestroyTargetEffect()); this.addEffect(new CreateTokenEffect(new WhiteBlackSpiritToken(), 1)); - } public TeysaEnvoyOfGhostsTriggeredAbility(final TeysaEnvoyOfGhostsTriggeredAbility ability) { diff --git a/Mage.Sets/src/mage/cards/t/TivashGloomSummoner.java b/Mage.Sets/src/mage/cards/t/TivashGloomSummoner.java index c47e866568..b392a48719 100644 --- a/Mage.Sets/src/mage/cards/t/TivashGloomSummoner.java +++ b/Mage.Sets/src/mage/cards/t/TivashGloomSummoner.java @@ -14,7 +14,7 @@ import mage.cards.CardImpl; import mage.cards.CardSetInfo; import mage.constants.*; import mage.game.Game; -import mage.game.permanent.token.PromiseOfPowerDemonToken; +import mage.game.permanent.token.DemonFlyingToken; import mage.players.Player; import mage.watchers.common.PlayerGainedLifeWatcher; @@ -91,7 +91,7 @@ class TivashGloomSummonerEffect extends OneShotEffect { )) { return false; } - new PromiseOfPowerDemonToken(lifeGained).putOntoBattlefield(1, game, source, source.getControllerId()); + new DemonFlyingToken(lifeGained).putOntoBattlefield(1, game, source, source.getControllerId()); return true; } } diff --git a/Mage/src/main/java/mage/game/command/emblems/KioraEmblem.java b/Mage/src/main/java/mage/game/command/emblems/KioraEmblem.java index 9b730e2c9c..3db7573e92 100644 --- a/Mage/src/main/java/mage/game/command/emblems/KioraEmblem.java +++ b/Mage/src/main/java/mage/game/command/emblems/KioraEmblem.java @@ -1,4 +1,3 @@ - package mage.game.command.emblems; import mage.abilities.Ability; @@ -7,10 +6,9 @@ import mage.abilities.effects.common.CreateTokenEffect; import mage.constants.TargetController; import mage.constants.Zone; import mage.game.command.Emblem; -import mage.game.permanent.token.KioraKrakenToken; +import mage.game.permanent.token.Kraken99Token; /** - * * @author spjspj */ public final class KioraEmblem extends Emblem { @@ -22,7 +20,7 @@ public final class KioraEmblem extends Emblem { public KioraEmblem() { this.setName("Emblem Kiora"); - Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.COMMAND, new CreateTokenEffect(new KioraKrakenToken()), TargetController.YOU, null, false); + Ability ability = new BeginningOfEndStepTriggeredAbility(Zone.COMMAND, new CreateTokenEffect(new Kraken99Token()), TargetController.YOU, null, false); this.getAbilities().add(ability); } } 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 4647649321..daf37552e6 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"); + "M13", "M14", "M15", "MM3", "NPH", "PC2", "USG", "M19", "IKO", "M21", "CMR", "C21"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java b/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java index 71bc7480f2..d1ed8100c4 100644 --- a/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java +++ b/Mage/src/main/java/mage/game/permanent/token/BeastToken2.java @@ -20,7 +20,7 @@ public final class BeastToken2 extends TokenImpl { toughness = new MageInt(4); availableImageSetCodes = Arrays.asList("C13", "C14", "C15", "C19", "CMA", "CMD", "GVL", "DDD", - "E01", "ODY", "SCG", "ZEN", "C20", "ZNC", "CMR"); + "E01", "ODY", "SCG", "ZEN", "C20", "ZNC", "CMR", "C21"); } public BeastToken2(final BeastToken2 token) { @@ -59,5 +59,9 @@ public final class BeastToken2 extends TokenImpl { if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CMR")) { this.setTokenType(2); } + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) { + this.setTokenType(2); + } } } diff --git a/Mage/src/main/java/mage/game/permanent/token/Boar2Token.java b/Mage/src/main/java/mage/game/permanent/token/Boar2Token.java index 647808448d..b151a3a41f 100644 --- a/Mage/src/main/java/mage/game/permanent/token/Boar2Token.java +++ b/Mage/src/main/java/mage/game/permanent/token/Boar2Token.java @@ -19,7 +19,7 @@ public final class Boar2Token extends TokenImpl { power = new MageInt(2); toughness = new MageInt(2); - availableImageSetCodes = Arrays.asList("THS", "KHC"); + availableImageSetCodes = Arrays.asList("THS", "KHC", "C21"); } public Boar2Token(final Boar2Token token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java b/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java index 3b6ef19b38..54cf2c6068 100644 --- a/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/CallTheSkyBreakerElementalToken.java @@ -5,6 +5,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.constants.CardType; import mage.constants.SubType; +import java.util.Arrays; + /** * @author spjspj */ @@ -18,7 +20,10 @@ public final class CallTheSkyBreakerElementalToken extends TokenImpl { subtype.add(SubType.ELEMENTAL); power = new MageInt(5); toughness = new MageInt(5); + this.addAbility(FlyingAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("C15", "CMD", "EMA", "EVE", "C21"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/DemonFlyingToken.java b/Mage/src/main/java/mage/game/permanent/token/DemonFlyingToken.java new file mode 100644 index 0000000000..94a77e583d --- /dev/null +++ b/Mage/src/main/java/mage/game/permanent/token/DemonFlyingToken.java @@ -0,0 +1,48 @@ +package mage.game.permanent.token; + +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 DemonFlyingToken extends TokenImpl { + + public DemonFlyingToken() { + this(1); + } + + public DemonFlyingToken(int xValue) { + super("Demon", "X/X black Demon creature token with flying"); + cardType.add(CardType.CREATURE); + color.setBlack(true); + subtype.add(SubType.DEMON); + power = new MageInt(xValue); + toughness = new MageInt(xValue); + + addAbility(FlyingAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("C14", "C21"); + } + + public DemonFlyingToken(final DemonFlyingToken token) { + super(token); + } + + public DemonFlyingToken copy() { + return new DemonFlyingToken(this); + } + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C14")) { + setTokenType(2); + } + } +} diff --git a/Mage/src/main/java/mage/game/permanent/token/DrakeToken.java b/Mage/src/main/java/mage/game/permanent/token/DrakeToken.java index b9f12cbcf9..bfcf8819f1 100644 --- a/Mage/src/main/java/mage/game/permanent/token/DrakeToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/DrakeToken.java @@ -24,7 +24,7 @@ public final class DrakeToken extends TokenImpl { this.addAbility(FlyingAbility.getInstance()); - availableImageSetCodes = Arrays.asList("AKH", "C15", "C19", "M13", "C20", "ZNR"); + availableImageSetCodes = Arrays.asList("AKH", "C15", "C19", "M13", "C20", "ZNR", "C21"); } public DrakeToken(final DrakeToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/EldraziToken.java b/Mage/src/main/java/mage/game/permanent/token/EldraziToken.java index c70ad88684..ff8a1eb999 100644 --- a/Mage/src/main/java/mage/game/permanent/token/EldraziToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/EldraziToken.java @@ -1,12 +1,12 @@ - - package mage.game.permanent.token; + +import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; -import mage.MageInt; + +import java.util.Arrays; /** - * * @author spjspj */ public final class EldraziToken extends TokenImpl { @@ -17,6 +17,8 @@ public final class EldraziToken extends TokenImpl { subtype.add(SubType.ELDRAZI); power = new MageInt(10); toughness = new MageInt(10); + + availableImageSetCodes = Arrays.asList("BFZ", "C19", "C21"); } public EldraziToken(final EldraziToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java b/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java index abef978538..e317c6583d 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ElephantToken.java @@ -20,7 +20,7 @@ public final class ElephantToken extends TokenImpl { toughness = new MageInt(3); availableImageSetCodes = Arrays.asList("C13", "C14", "C15", "CMA", "CMD", "CNS", "GVL", "DDD", - "EMA", "INV", "JUD", "MM2", "ODY", "ROE", "TSP", "VMA", "WWK", "MH1", "CMR"); + "EMA", "INV", "JUD", "MM2", "ODY", "ROE", "TSP", "VMA", "WWK", "MH1", "CMR", "C21"); } public ElephantToken(final ElephantToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/FoodToken.java b/Mage/src/main/java/mage/game/permanent/token/FoodToken.java index 9cc5e12305..3accc63cc7 100644 --- a/Mage/src/main/java/mage/game/permanent/token/FoodToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/FoodToken.java @@ -23,13 +23,8 @@ public final class FoodToken extends TokenImpl { static final private List tokenImageSets = new ArrayList<>(); - static { - tokenImageSets.addAll(Arrays.asList("ELD")); - } - public FoodToken() { super("Food", "Food token"); - availableImageSetCodes = tokenImageSets; cardType.add(CardType.ARTIFACT); subtype.add(SubType.FOOD); @@ -40,6 +35,8 @@ public final class FoodToken extends TokenImpl { cost.setText("Sacrifice this artifact"); ability.addCost(cost); this.addAbility(ability); + + availableImageSetCodes = Arrays.asList("ELD", "C21"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/FrogLizardToken.java b/Mage/src/main/java/mage/game/permanent/token/FrogLizardToken.java index 5a11a15633..e2c725fed3 100644 --- a/Mage/src/main/java/mage/game/permanent/token/FrogLizardToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/FrogLizardToken.java @@ -4,6 +4,8 @@ import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; +import java.util.Arrays; + /** * @author spjspj */ @@ -12,14 +14,13 @@ public final class FrogLizardToken extends TokenImpl { public FrogLizardToken() { super("Frog Lizard", "3/3 green Frog Lizard creature token"); cardType.add(CardType.CREATURE); - color.setGreen(true); - subtype.add(SubType.FROG); subtype.add(SubType.LIZARD); - power = new MageInt(3); toughness = new MageInt(3); + + availableImageSetCodes = Arrays.asList("RNA", "C21"); } public FrogLizardToken(final FrogLizardToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/FungusBeastToken.java b/Mage/src/main/java/mage/game/permanent/token/FungusBeastToken.java index 822495d0af..6430fdf296 100644 --- a/Mage/src/main/java/mage/game/permanent/token/FungusBeastToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/FungusBeastToken.java @@ -5,6 +5,8 @@ import mage.abilities.keyword.TrampleAbility; import mage.constants.CardType; import mage.constants.SubType; +import java.util.Arrays; + /** * @author TheElk801 */ @@ -18,7 +20,10 @@ public final class FungusBeastToken extends TokenImpl { subtype.add(SubType.BEAST); power = new MageInt(4); toughness = new MageInt(4); + addAbility(TrampleAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("C21"); } private FungusBeastToken(final FungusBeastToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/GolemFlyingToken.java b/Mage/src/main/java/mage/game/permanent/token/GolemFlyingToken.java index 61574d3fae..12006c51c8 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GolemFlyingToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GolemFlyingToken.java @@ -5,6 +5,8 @@ import mage.abilities.keyword.FlyingAbility; import mage.constants.CardType; import mage.constants.SubType; +import java.util.Arrays; + /** * @author TheElk801 */ @@ -17,7 +19,10 @@ public final class GolemFlyingToken extends TokenImpl { subtype.add(SubType.GOLEM); power = new MageInt(3); toughness = new MageInt(3); + addAbility(FlyingAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("C21"); } private GolemFlyingToken(final GolemFlyingToken token) { @@ -27,4 +32,13 @@ public final class GolemFlyingToken extends TokenImpl { public GolemFlyingToken copy() { return new GolemFlyingToken(this); } + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) { + setTokenType(1); + } + } } diff --git a/Mage/src/main/java/mage/game/permanent/token/GolemTrampleToken.java b/Mage/src/main/java/mage/game/permanent/token/GolemTrampleToken.java index 30ff351e52..05cd763cb7 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GolemTrampleToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GolemTrampleToken.java @@ -5,6 +5,8 @@ import mage.abilities.keyword.TrampleAbility; import mage.constants.CardType; import mage.constants.SubType; +import java.util.Arrays; + /** * @author TheElk801 */ @@ -17,7 +19,10 @@ public final class GolemTrampleToken extends TokenImpl { subtype.add(SubType.GOLEM); power = new MageInt(3); toughness = new MageInt(3); + addAbility(TrampleAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("C21"); } private GolemTrampleToken(final GolemTrampleToken token) { @@ -27,4 +32,13 @@ public final class GolemTrampleToken extends TokenImpl { public GolemTrampleToken copy() { return new GolemTrampleToken(this); } + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) { + setTokenType(3); + } + } } diff --git a/Mage/src/main/java/mage/game/permanent/token/GolemVigilanceToken.java b/Mage/src/main/java/mage/game/permanent/token/GolemVigilanceToken.java index 50285e1e22..17e9ce7749 100644 --- a/Mage/src/main/java/mage/game/permanent/token/GolemVigilanceToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/GolemVigilanceToken.java @@ -5,6 +5,8 @@ import mage.abilities.keyword.VigilanceAbility; import mage.constants.CardType; import mage.constants.SubType; +import java.util.Arrays; + /** * @author TheElk801 */ @@ -17,7 +19,10 @@ public final class GolemVigilanceToken extends TokenImpl { subtype.add(SubType.GOLEM); power = new MageInt(3); toughness = new MageInt(3); + addAbility(VigilanceAbility.getInstance()); + + availableImageSetCodes = Arrays.asList("C21"); } private GolemVigilanceToken(final GolemVigilanceToken token) { @@ -27,4 +32,13 @@ public final class GolemVigilanceToken extends TokenImpl { public GolemVigilanceToken copy() { return new GolemVigilanceToken(this); } + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) { + setTokenType(2); + } + } } diff --git a/Mage/src/main/java/mage/game/permanent/token/HornetNestInsectToken.java b/Mage/src/main/java/mage/game/permanent/token/HornetNestInsectToken.java deleted file mode 100644 index b3b3344c72..0000000000 --- a/Mage/src/main/java/mage/game/permanent/token/HornetNestInsectToken.java +++ /dev/null @@ -1,36 +0,0 @@ - - -package mage.game.permanent.token; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.MageInt; -import mage.abilities.keyword.DeathtouchAbility; -import mage.abilities.keyword.FlyingAbility; - -/** - * - * @author spjspj - */ -public final class HornetNestInsectToken extends TokenImpl { - - public HornetNestInsectToken() { - super("Insect", "1/1 green Insect creature tokens with flying and deathtouch"); - setOriginalExpansionSetCode("M15"); - cardType.add(CardType.CREATURE); - color.setGreen(true); - subtype.add(SubType.INSECT); - power = new MageInt(1); - toughness = new MageInt(1); - - this.addAbility(FlyingAbility.getInstance()); - this.addAbility(DeathtouchAbility.getInstance()); - } - - public HornetNestInsectToken(final HornetNestInsectToken token) { - super(token); - } - - public HornetNestInsectToken copy() { - return new HornetNestInsectToken(this); - } -} diff --git a/Mage/src/main/java/mage/game/permanent/token/HorrorToken.java b/Mage/src/main/java/mage/game/permanent/token/HorrorToken.java index b66c85ae3a..6de9685a13 100644 --- a/Mage/src/main/java/mage/game/permanent/token/HorrorToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/HorrorToken.java @@ -1,12 +1,12 @@ - - package mage.game.permanent.token; + +import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; -import mage.MageInt; + +import java.util.Arrays; /** - * * @author spjspj */ public final class HorrorToken extends TokenImpl { @@ -18,6 +18,8 @@ public final class HorrorToken extends TokenImpl { subtype.add(SubType.HORROR); power = new MageInt(4); toughness = new MageInt(4); + + availableImageSetCodes = Arrays.asList("RAV", "C21"); } public HorrorToken(final HorrorToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/HydraBroodmasterToken.java b/Mage/src/main/java/mage/game/permanent/token/HydraBroodmasterToken.java index 82b0acf3bb..c5528dd68b 100644 --- a/Mage/src/main/java/mage/game/permanent/token/HydraBroodmasterToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/HydraBroodmasterToken.java @@ -23,7 +23,7 @@ public final class HydraBroodmasterToken extends TokenImpl { this.power = new MageInt(power); this.toughness = new MageInt(toughness); - availableImageSetCodes = Arrays.asList("JOU"); + availableImageSetCodes = Arrays.asList("JOU", "C21"); } public HydraBroodmasterToken(final HydraBroodmasterToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/HornetQueenInsectToken.java b/Mage/src/main/java/mage/game/permanent/token/InsectDeathToken.java similarity index 67% rename from Mage/src/main/java/mage/game/permanent/token/HornetQueenInsectToken.java rename to Mage/src/main/java/mage/game/permanent/token/InsectDeathToken.java index cc93e12e1d..97e5e6c472 100644 --- a/Mage/src/main/java/mage/game/permanent/token/HornetQueenInsectToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/InsectDeathToken.java @@ -11,9 +11,9 @@ import java.util.Arrays; /** * @author spjspj */ -public final class HornetQueenInsectToken extends TokenImpl { +public final class InsectDeathToken extends TokenImpl { - public HornetQueenInsectToken() { + public InsectDeathToken() { super("Insect", "1/1 green Insect creature token with flying and deathtouch"); cardType.add(CardType.CREATURE); color.setGreen(true); @@ -23,14 +23,14 @@ public final class HornetQueenInsectToken extends TokenImpl { addAbility(FlyingAbility.getInstance()); addAbility(DeathtouchAbility.getInstance()); - availableImageSetCodes = Arrays.asList("M15", "C20"); + availableImageSetCodes = Arrays.asList("M15", "C20", "C21"); } - public HornetQueenInsectToken(final HornetQueenInsectToken token) { + public InsectDeathToken(final InsectDeathToken token) { super(token); } - public HornetQueenInsectToken copy() { - return new HornetQueenInsectToken(this); + public InsectDeathToken copy() { + return new InsectDeathToken(this); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/KarnConstructToken.java b/Mage/src/main/java/mage/game/permanent/token/KarnConstructToken.java index 95b330293d..0f1189534b 100644 --- a/Mage/src/main/java/mage/game/permanent/token/KarnConstructToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/KarnConstructToken.java @@ -8,25 +8,17 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.SubType; import mage.constants.Zone; +import mage.util.RandomUtil; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; /** * @author spjspj */ public final class KarnConstructToken extends TokenImpl { - static final private List tokenImageSets = new ArrayList<>(); - - static { - tokenImageSets.addAll(Arrays.asList("DOM", "MH1")); - } - public KarnConstructToken() { super("Construct", "0/0 colorless Construct artifact creature token with \"This creature gets +1/+1 for each artifact you control.\""); - availableImageSetCodes = tokenImageSets; cardType.add(CardType.ARTIFACT); cardType.add(CardType.CREATURE); subtype.add(SubType.CONSTRUCT); @@ -37,6 +29,8 @@ public final class KarnConstructToken extends TokenImpl { new BoostSourceEffect(ArtifactYouControlCount.instance, ArtifactYouControlCount.instance, Duration.WhileOnBattlefield) .setText("This creature gets +1/+1 for each artifact you control") )); + + availableImageSetCodes = Arrays.asList("DOM", "MH1", "C21"); } public KarnConstructToken(final KarnConstructToken token) { @@ -46,4 +40,13 @@ public final class KarnConstructToken extends TokenImpl { public KarnConstructToken copy() { return new KarnConstructToken(this); } + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) { + setTokenType(RandomUtil.nextInt(2) + 1); // from 1 to 2 + } + } } diff --git a/Mage/src/main/java/mage/game/permanent/token/KioraKrakenToken.java b/Mage/src/main/java/mage/game/permanent/token/KioraKrakenToken.java deleted file mode 100644 index e4e02e23bc..0000000000 --- a/Mage/src/main/java/mage/game/permanent/token/KioraKrakenToken.java +++ /dev/null @@ -1,31 +0,0 @@ - - -package mage.game.permanent.token; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.MageInt; - -/** - * - * @author spjspj - */ -public final class KioraKrakenToken extends TokenImpl { - - public KioraKrakenToken() { - super("Kraken", "9/9 blue Kraken creature token"); - cardType.add(CardType.CREATURE); - color.setBlue(true); - subtype.add(SubType.KRAKEN); - power = new MageInt(9); - toughness = new MageInt(9); - this.setOriginalExpansionSetCode("BNG"); - } - - public KioraKrakenToken(final KioraKrakenToken token) { - super(token); - } - - public KioraKrakenToken copy() { - return new KioraKrakenToken(this); - } -} diff --git a/Mage/src/main/java/mage/game/permanent/token/ReefWormKrakenToken.java b/Mage/src/main/java/mage/game/permanent/token/Kraken99Token.java similarity index 57% rename from Mage/src/main/java/mage/game/permanent/token/ReefWormKrakenToken.java rename to Mage/src/main/java/mage/game/permanent/token/Kraken99Token.java index 8b13e13b18..3a47a23343 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ReefWormKrakenToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/Kraken99Token.java @@ -1,31 +1,32 @@ - package mage.game.permanent.token; +import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; -import mage.MageInt; + +import java.util.Arrays; /** - * * @author spjspj */ -public final class ReefWormKrakenToken extends TokenImpl { +public final class Kraken99Token extends TokenImpl { - public ReefWormKrakenToken() { + public Kraken99Token() { super("Kraken", "9/9 blue Kraken creature token"); - setOriginalExpansionSetCode("C14"); cardType.add(CardType.CREATURE); color.setBlue(true); subtype.add(SubType.KRAKEN); power = new MageInt(9); toughness = new MageInt(9); + + availableImageSetCodes = Arrays.asList("BNG", "C14", "DDO", "C21"); } - public ReefWormKrakenToken(final ReefWormKrakenToken token) { + public Kraken99Token(final Kraken99Token token) { super(token); } - public ReefWormKrakenToken copy() { - return new ReefWormKrakenToken(this); + public Kraken99Token copy() { + return new Kraken99Token(this); } } diff --git a/Mage/src/main/java/mage/game/permanent/token/LightningRagerToken.java b/Mage/src/main/java/mage/game/permanent/token/LightningRagerToken.java index aa2c7d53bb..de9357fff6 100644 --- a/Mage/src/main/java/mage/game/permanent/token/LightningRagerToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/LightningRagerToken.java @@ -1,17 +1,17 @@ - - package mage.game.permanent.token; -import mage.constants.CardType; -import mage.constants.SubType; + import mage.MageInt; import mage.abilities.common.BeginningOfEndStepTriggeredAbility; import mage.abilities.effects.common.SacrificeSourceEffect; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.TrampleAbility; +import mage.constants.CardType; +import mage.constants.SubType; import mage.constants.TargetController; +import java.util.Arrays; + /** - * * @author spjspj */ public final class LightningRagerToken extends TokenImpl { @@ -19,15 +19,17 @@ public final class LightningRagerToken extends TokenImpl { public LightningRagerToken() { super("Lightning Rager", "5/1 red Elemental creature token named Lightning Rager." + "It has trample, haste, and \"At the beginning of the end step, sacrifice this creature.\""); - this.setOriginalExpansionSetCode("C15"); cardType.add(CardType.CREATURE); color.setRed(true); subtype.add(SubType.ELEMENTAL); power = new MageInt(5); toughness = new MageInt(1); - addAbility(TrampleAbility.getInstance()); - addAbility(HasteAbility.getInstance()); + + this.addAbility(TrampleAbility.getInstance()); + this.addAbility(HasteAbility.getInstance()); this.addAbility(new BeginningOfEndStepTriggeredAbility(new SacrificeSourceEffect(), TargetController.NEXT, false)); + + availableImageSetCodes = Arrays.asList("C15"); } public LightningRagerToken(final LightningRagerToken token) { @@ -37,4 +39,14 @@ public final class LightningRagerToken extends TokenImpl { public LightningRagerToken copy() { return new LightningRagerToken(this); } + + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C15")) { + this.setTokenType(2); + } + } } diff --git a/Mage/src/main/java/mage/game/permanent/token/MetallurgicSummoningsConstructToken.java b/Mage/src/main/java/mage/game/permanent/token/MetallurgicSummoningsConstructToken.java index 79513b0de1..427f98c376 100644 --- a/Mage/src/main/java/mage/game/permanent/token/MetallurgicSummoningsConstructToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/MetallurgicSummoningsConstructToken.java @@ -1,30 +1,32 @@ - - package mage.game.permanent.token; + +import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; -import mage.MageInt; import mage.util.RandomUtil; +import java.util.Arrays; + /** - * * @author spjspj */ public final class MetallurgicSummoningsConstructToken extends TokenImpl { public MetallurgicSummoningsConstructToken() { - this (1); + this(1); } + public MetallurgicSummoningsConstructToken(int xValue) { super("Construct", "X/X colorless Construct artifact creature token"); - setOriginalExpansionSetCode("KLD"); - setTokenType(RandomUtil.nextInt(2) + 1); cardType.add(CardType.ARTIFACT); cardType.add(CardType.CREATURE); subtype.add(SubType.CONSTRUCT); power = new MageInt(xValue); toughness = new MageInt(xValue); + + availableImageSetCodes = Arrays.asList("KLD", "C21"); } + public MetallurgicSummoningsConstructToken(final MetallurgicSummoningsConstructToken token) { super(token); } @@ -32,4 +34,13 @@ public final class MetallurgicSummoningsConstructToken extends TokenImpl { public MetallurgicSummoningsConstructToken copy() { return new MetallurgicSummoningsConstructToken(this); } + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("KLD")) { + setTokenType(RandomUtil.nextInt(2) + 3); // from 3 to 4 + } + } } diff --git a/Mage/src/main/java/mage/game/permanent/token/MyrToken.java b/Mage/src/main/java/mage/game/permanent/token/MyrToken.java index e9386436eb..1ba863df31 100644 --- a/Mage/src/main/java/mage/game/permanent/token/MyrToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/MyrToken.java @@ -4,32 +4,19 @@ import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; -import java.util.ArrayList; import java.util.Arrays; -import java.util.List; public final class MyrToken extends TokenImpl { - static final private List tokenImageSets = new ArrayList<>(); - - static { - tokenImageSets.addAll(Arrays.asList("C14", "MM2", "NPH", "SOM", "MH1")); - } - public MyrToken() { - this((String) null); - } - - public MyrToken(String expansionSetCode) { super("Myr", "1/1 colorless Myr artifact creature token"); - this.setOriginalExpansionSetCode(expansionSetCode); cardType.add(CardType.ARTIFACT); cardType.add(CardType.CREATURE); subtype.add(SubType.MYR); power = new MageInt(1); toughness = new MageInt(1); - availableImageSetCodes = tokenImageSets; + availableImageSetCodes = Arrays.asList("C13", "C14", "DST", "MBS", "MM2", "MRD", "NPH", "SOM", "MH1", "C21"); } public MyrToken(final MyrToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/OviyaPashiriSageLifecrafterToken.java b/Mage/src/main/java/mage/game/permanent/token/OviyaPashiriSageLifecrafterToken.java index 383605fd5c..3ab8953829 100644 --- a/Mage/src/main/java/mage/game/permanent/token/OviyaPashiriSageLifecrafterToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/OviyaPashiriSageLifecrafterToken.java @@ -1,14 +1,13 @@ - - package mage.game.permanent.token; + +import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; -import mage.MageInt; import mage.filter.common.FilterControlledCreaturePermanent; -import mage.util.RandomUtil; + +import java.util.Arrays; /** - * * @author spjspj */ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl { @@ -24,10 +23,10 @@ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl { cardType.add(CardType.ARTIFACT); cardType.add(CardType.CREATURE); subtype.add(SubType.CONSTRUCT); - setOriginalExpansionSetCode("KLD"); - setTokenType(RandomUtil.nextInt(2) + 1); power = new MageInt(number); toughness = new MageInt(number); + + availableImageSetCodes = Arrays.asList("KLD"); } public OviyaPashiriSageLifecrafterToken(final OviyaPashiriSageLifecrafterToken token) { @@ -37,4 +36,13 @@ public final class OviyaPashiriSageLifecrafterToken extends TokenImpl { public OviyaPashiriSageLifecrafterToken copy() { return new OviyaPashiriSageLifecrafterToken(this); } + + @Override + public void setExpansionSetCodeForImage(String code) { + super.setExpansionSetCodeForImage(code); + + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C21")) { + setTokenType(2); + } + } } diff --git a/Mage/src/main/java/mage/game/permanent/token/PhyrexianBeastToken.java b/Mage/src/main/java/mage/game/permanent/token/PhyrexianBeastToken.java index 6e8fef520e..ea23331ddc 100644 --- a/Mage/src/main/java/mage/game/permanent/token/PhyrexianBeastToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/PhyrexianBeastToken.java @@ -4,6 +4,8 @@ import mage.MageInt; import mage.constants.CardType; import mage.constants.SubType; +import java.util.Arrays; + /** * @author TheElk801 */ @@ -17,6 +19,8 @@ public final class PhyrexianBeastToken extends TokenImpl { subtype.add(SubType.BEAST); power = new MageInt(4); toughness = new MageInt(4); + + availableImageSetCodes = Arrays.asList("C21"); } public PhyrexianBeastToken(final PhyrexianBeastToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/PromiseOfPowerDemonToken.java b/Mage/src/main/java/mage/game/permanent/token/PromiseOfPowerDemonToken.java deleted file mode 100644 index aa84af908c..0000000000 --- a/Mage/src/main/java/mage/game/permanent/token/PromiseOfPowerDemonToken.java +++ /dev/null @@ -1,39 +0,0 @@ - - -package mage.game.permanent.token; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.MageInt; -import mage.abilities.keyword.FlyingAbility; - -/** - * - * @author spjspj - */ -public final class PromiseOfPowerDemonToken extends TokenImpl { - - public PromiseOfPowerDemonToken() { - this(1); - } - - public PromiseOfPowerDemonToken(int xValue) { - super("Demon", "X/X black Demon creature token with flying"); - setOriginalExpansionSetCode("C14"); - setTokenType(2); - cardType.add(CardType.CREATURE); - color.setBlack(true); - subtype.add(SubType.DEMON); - power = new MageInt(xValue); - toughness = new MageInt(xValue); - - addAbility(FlyingAbility.getInstance()); - } - - public PromiseOfPowerDemonToken(final PromiseOfPowerDemonToken token) { - super(token); - } - - public PromiseOfPowerDemonToken copy() { - return new PromiseOfPowerDemonToken(this); - } -} diff --git a/Mage/src/main/java/mage/game/permanent/token/ReefWormFishToken.java b/Mage/src/main/java/mage/game/permanent/token/ReefWormFishToken.java index 70c9cad349..e0af3a533f 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ReefWormFishToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ReefWormFishToken.java @@ -1,21 +1,20 @@ - package mage.game.permanent.token; -import mage.constants.CardType; -import mage.constants.SubType; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.Arrays; /** - * * @author spjspj */ public final class ReefWormFishToken extends TokenImpl { public ReefWormFishToken() { super("Fish", "3/3 blue Fish creature token with \"When this creature dies, create a 6/6 blue Whale creature token with \"When this creature dies, create a 9/9 blue Kraken creature token.\"\""); - setOriginalExpansionSetCode("C14"); cardType.add(CardType.CREATURE); color.setBlue(true); subtype.add(SubType.FISH); @@ -23,6 +22,8 @@ public final class ReefWormFishToken extends TokenImpl { toughness = new MageInt(3); addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ReefWormWhaleToken()))); + + availableImageSetCodes = Arrays.asList("C14", "C21"); } public ReefWormFishToken(final ReefWormFishToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/ReefWormWhaleToken.java b/Mage/src/main/java/mage/game/permanent/token/ReefWormWhaleToken.java index 02b9f7d19f..2a8bfa7095 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ReefWormWhaleToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ReefWormWhaleToken.java @@ -1,28 +1,29 @@ - package mage.game.permanent.token; -import mage.constants.CardType; -import mage.constants.SubType; import mage.MageInt; import mage.abilities.common.DiesSourceTriggeredAbility; import mage.abilities.effects.common.CreateTokenEffect; +import mage.constants.CardType; +import mage.constants.SubType; + +import java.util.Arrays; /** - * * @author spjspj */ public final class ReefWormWhaleToken extends TokenImpl { public ReefWormWhaleToken() { super("Whale", "6/6 blue Whale creature token with \"When this creature dies, create a 9/9 blue Kraken creature token.\""); - setOriginalExpansionSetCode("C14"); cardType.add(CardType.CREATURE); color.setBlue(true); subtype.add(SubType.WHALE); power = new MageInt(6); toughness = new MageInt(6); - addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new ReefWormKrakenToken()))); + addAbility(new DiesSourceTriggeredAbility(new CreateTokenEffect(new Kraken99Token()))); + + availableImageSetCodes.addAll(Arrays.asList("C14", "C21")); } public ReefWormWhaleToken(final ReefWormWhaleToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/ReignOfThePitToken.java b/Mage/src/main/java/mage/game/permanent/token/ReignOfThePitToken.java deleted file mode 100644 index a669ea004f..0000000000 --- a/Mage/src/main/java/mage/game/permanent/token/ReignOfThePitToken.java +++ /dev/null @@ -1,35 +0,0 @@ - - -package mage.game.permanent.token; -import mage.constants.CardType; -import mage.constants.SubType; -import mage.MageInt; -import mage.abilities.keyword.FlyingAbility; - -/** - * - * @author spjspj - */ -public final class ReignOfThePitToken extends TokenImpl { - - public ReignOfThePitToken() { - this(1); - } - public ReignOfThePitToken(int xValue) { - super("Demon", "X/X black Demon creature token with flying"); - power = new MageInt(xValue); - toughness = new MageInt(xValue); - color.setBlack(true); - subtype.add(SubType.DEMON); - cardType.add(CardType.CREATURE); - this.addAbility(FlyingAbility.getInstance()); - } - public ReignOfThePitToken(final ReignOfThePitToken token) { - super(token); - } - - public ReignOfThePitToken copy() { - return new ReignOfThePitToken(this); - } - -} 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 4c486de7d9..3f594b22ae 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java @@ -45,7 +45,8 @@ public final class SaprolingToken extends TokenImpl { "M21", "ZNC", "CMR", - "TSR" + "TSR", + "C21" )); } 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 2051205c8c..bab94fe52e 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", "VMA", "M19", "ZNC", "KHC"); + availableImageSetCodes = Arrays.asList("C18", "EXO", "KLD", "MBS", "ORI", "VMA", "M19", "ZNC", "KHC", "C21"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/WhiteBlackSpiritToken.java b/Mage/src/main/java/mage/game/permanent/token/WhiteBlackSpiritToken.java index 4b7e87aaf4..77ec013354 100644 --- a/Mage/src/main/java/mage/game/permanent/token/WhiteBlackSpiritToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/WhiteBlackSpiritToken.java @@ -22,7 +22,7 @@ public final class WhiteBlackSpiritToken extends TokenImpl { toughness = new MageInt(1); this.addAbility(FlyingAbility.getInstance()); - availableImageSetCodes.addAll(Arrays.asList("MH1")); + availableImageSetCodes.addAll(Arrays.asList("MH1", "C21")); } public WhiteBlackSpiritToken(final WhiteBlackSpiritToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/WurmToken.java b/Mage/src/main/java/mage/game/permanent/token/WurmToken.java index e05fe87b6e..9bc31559b0 100644 --- a/Mage/src/main/java/mage/game/permanent/token/WurmToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/WurmToken.java @@ -19,7 +19,7 @@ public final class WurmToken extends TokenImpl { power = new MageInt(6); toughness = new MageInt(6); - availableImageSetCodes = Arrays.asList("C19", "EMA", "GPT", "JUD", "M12", "M13", "MM3", "ODY", "VMA"); + availableImageSetCodes = Arrays.asList("C19", "EMA", "GPT", "JUD", "M12", "M13", "MM3", "ODY", "VMA", "C21"); } @Override diff --git a/Mage/src/main/java/mage/game/permanent/token/ZombieToken.java b/Mage/src/main/java/mage/game/permanent/token/ZombieToken.java index 0f8ff06a98..bfa59f63eb 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ZombieToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ZombieToken.java @@ -25,7 +25,7 @@ public final class ZombieToken extends TokenImpl { "CNS", "MMA", "BNG", "KTK", "DTK", "ORI", "OGW", "SOI", "EMN", "EMA", "MM3", "AKH", "CMA", "E01", "RNA", "WAR", "MH1", "M20", "C19", "THB", "M21", - "CMR"); + "CMR", "C21"); } @Override