From ac3203b63c1e41d3846eb4c8562aa6ab9be9b446 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 31 Oct 2016 23:09:42 -0500 Subject: [PATCH] Set some token version types. [C16] Added token info. Implemented Migratory Route. --- .../src/main/resources/card-pictures-tok.txt | 36 ++++++++++- .../src/mage/cards/c/CallTheSkybreaker.java | 7 +- .../mage/cards/m/MetallurgicSummonings.java | 2 + .../src/mage/cards/m/MigratoryRoute.java | 64 +++++++++++++++++++ .../cards/o/OviyaPashiriSageLifecrafter.java | 3 + Mage.Sets/src/mage/cards/s/SwanSong.java | 3 + .../src/mage/cards/y/YoungPyromancer.java | 14 ++-- Mage.Sets/src/mage/sets/Commander2016.java | 1 + .../mage/game/permanent/token/BirdToken.java | 9 ++- .../game/permanent/token/SaprolingToken.java | 4 ++ .../mage/game/permanent/token/ServoToken.java | 4 ++ .../game/permanent/token/SoldierToken.java | 9 ++- .../game/permanent/token/SpiritToken.java | 5 +- .../permanent/token/SpiritWhiteToken.java | 8 ++- .../token/ThopterColorlessToken.java | 7 +- 15 files changed, 156 insertions(+), 20 deletions(-) create mode 100644 Mage.Sets/src/mage/cards/m/MigratoryRoute.java diff --git a/Mage.Client/src/main/resources/card-pictures-tok.txt b/Mage.Client/src/main/resources/card-pictures-tok.txt index b830828be7e..e3fbce26ad1 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -1,7 +1,37 @@ +|Generate|TOK:C16|Beast|| +|Generate|TOK:C16|Bird|1| +|Generate|TOK:C16|Bird|2| +|Generate|TOK:C16|Elemental|| +|Generate|TOK:C16|Elf Warrior|| +|Generate|TOK:C16|Germ|| +|Generate|TOK:C16|Goat|| +|Generate|TOK:C16|Goblin|| +|Generate|TOK:C16|Horror|| +|Generate|TOK:C16|Myr|| +|Generate|TOK:C16|Ogre|| +|Generate|TOK:C16|Saproling|1| +|Generate|TOK:C16|Saproling|2| +|Generate|TOK:C16|Soldier|| +|Generate|TOK:C16|Spirit|1| +|Generate|TOK:C16|Spirit|2| +|Generate|TOK:C16|Squid|| +|Generate|TOK:C16|Thopter|| +|Generate|TOK:C16|Worm|| +|Generate|TOK:C16|Zombie|| +|Generate|EMBLEM!:C16|Emblem Daretti|| + |Generate|TOK:KLD|Beast|| -|Generate|TOK:KLD|Construct|| -|Generate|TOK:KLD|Servo|| -|Generate|TOK:KLD|Thopter|| +|Generate|TOK:KLD|Construct|1| +|Generate|TOK:KLD|Construct|2| +|Generate|TOK:KLD|Servo|1| +|Generate|TOK:KLD|Servo|2| +|Generate|TOK:KLD|Servo|3| +|Generate|TOK:KLD|Thopter|1| +|Generate|TOK:KLD|Thopter|2| +|Generate|TOK:KLD|Thopter|3| +|Generate|EMBLEM!:KLD|Emblem Chandra, Torch of Defiance|| +|Generate|EMBLEM!:KLD|Emblem Nissa, Vital Force|| +|Generate|EMBLEM!:KLD|Emblem Dovin Baan|| |Generate|TOK:CN2|Assassin|| |Generate|TOK:CN2|Beast|| diff --git a/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java b/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java index ebfe77eb382..675644ed807 100644 --- a/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java +++ b/Mage.Sets/src/mage/cards/c/CallTheSkybreaker.java @@ -49,10 +49,10 @@ public class CallTheSkybreaker extends CardImpl { // Create a 5/5 blue and red Elemental creature token with flying. this.getSpellAbility().addEffect(new CreateTokenEffect(new ElementalToken())); - + // Retrace this.addAbility(new RetraceAbility(this)); - + } public CallTheSkybreaker(final CallTheSkybreaker card) { @@ -72,6 +72,9 @@ public class CallTheSkybreaker extends CardImpl { color.setBlue(true); color.setRed(true); subtype.add("Elemental"); + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("EMA")) { + setTokenType(2); + } power = new MageInt(5); toughness = new MageInt(5); this.addAbility(FlyingAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java b/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java index e8c5fd0250c..a3ce71971a5 100644 --- a/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java +++ b/Mage.Sets/src/mage/cards/m/MetallurgicSummonings.java @@ -52,6 +52,7 @@ import mage.game.permanent.token.Token; import mage.game.stack.Spell; import mage.players.Player; import mage.target.targetpointer.FixedTarget; +import mage.util.RandomUtil; /** * @@ -158,6 +159,7 @@ class MetallurgicSummoningsConstructToken extends Token { 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("Construct"); diff --git a/Mage.Sets/src/mage/cards/m/MigratoryRoute.java b/Mage.Sets/src/mage/cards/m/MigratoryRoute.java new file mode 100644 index 00000000000..284d4f666d9 --- /dev/null +++ b/Mage.Sets/src/mage/cards/m/MigratoryRoute.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.cards.m; + +import java.util.UUID; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.BasicLandcyclingAbility; +import mage.cards.CardImpl; +import mage.cards.CardSetInfo; +import mage.constants.CardType; +import mage.game.permanent.token.BirdToken; + +/** + * + * @author fireshoes + */ +public class MigratoryRoute extends CardImpl { + + public MigratoryRoute(UUID ownerId, CardSetInfo setInfo) { + super(ownerId, setInfo, new CardType[]{CardType.SORCERY}, "{3}{W}{U}"); + + + // Create four 1/1 white Bird creature tokens with flying. + getSpellAbility().addEffect(new CreateTokenEffect(new BirdToken(), 4)); + + // Basic landcycling {2} + this.addAbility(new BasicLandcyclingAbility(new ManaCostsImpl("{2}"))); + } + + public MigratoryRoute(final MigratoryRoute card) { + super(card); + } + + @Override + public MigratoryRoute copy() { + return new MigratoryRoute(this); + } +} diff --git a/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java b/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java index 481d8e12a4b..15bfd625e7a 100644 --- a/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java +++ b/Mage.Sets/src/mage/cards/o/OviyaPashiriSageLifecrafter.java @@ -46,6 +46,7 @@ import mage.game.Game; import mage.game.permanent.token.ServoToken; import mage.game.permanent.token.Token; import mage.players.Player; +import mage.util.RandomUtil; /** * @@ -117,6 +118,8 @@ class OviyaPashiriSageLifecrafterToken extends Token { cardType.add(CardType.ARTIFACT); cardType.add(CardType.CREATURE); subtype.add("Construct"); + setOriginalExpansionSetCode("KLD"); + setTokenType(RandomUtil.nextInt(2) + 1); power = new MageInt(number); toughness = new MageInt(number); } diff --git a/Mage.Sets/src/mage/cards/s/SwanSong.java b/Mage.Sets/src/mage/cards/s/SwanSong.java index fabeff0f914..9e6e6f9b71e 100644 --- a/Mage.Sets/src/mage/cards/s/SwanSong.java +++ b/Mage.Sets/src/mage/cards/s/SwanSong.java @@ -115,6 +115,9 @@ class SwanSongBirdToken extends Token { cardType.add(CardType.CREATURE); color.setBlue(true); subtype.add("Bird"); + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) { + setTokenType(2); + } power = new MageInt(2); toughness = new MageInt(2); this.addAbility(FlyingAbility.getInstance()); diff --git a/Mage.Sets/src/mage/cards/y/YoungPyromancer.java b/Mage.Sets/src/mage/cards/y/YoungPyromancer.java index 4deb4fbdd61..9e706bd72bb 100644 --- a/Mage.Sets/src/mage/cards/y/YoungPyromancer.java +++ b/Mage.Sets/src/mage/cards/y/YoungPyromancer.java @@ -45,9 +45,9 @@ import mage.util.RandomUtil; * @author jeffwadsworth */ public class YoungPyromancer extends CardImpl { - + private static final FilterSpell filter = new FilterSpell("instant or sorcery spell"); - + static { filter.add(Predicates.or( new CardTypePredicate(CardType.INSTANT), @@ -64,7 +64,7 @@ public class YoungPyromancer extends CardImpl { // Whenever you cast an instant or sorcery spell, create a 1/1 red Elemental creature token. this.addAbility(new SpellCastControllerTriggeredAbility(new CreateTokenEffect(new ElementalToken()), filter, false)); - + } public YoungPyromancer(final YoungPyromancer card) { @@ -80,8 +80,12 @@ public class YoungPyromancer extends CardImpl { public ElementalToken() { super("Elemental", "1/1 red Elemental creature"); - this.setOriginalExpansionSetCode("M14"); - this.setTokenType(RandomUtil.nextInt(2) + 1); + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("M14")) { + setTokenType(RandomUtil.nextInt(2) + 1); + } + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("EMA")) { + setTokenType(1); + } cardType.add(CardType.CREATURE); color.setRed(true); subtype.add("Elemental"); diff --git a/Mage.Sets/src/mage/sets/Commander2016.java b/Mage.Sets/src/mage/sets/Commander2016.java index a83f7154f72..2d83856421d 100644 --- a/Mage.Sets/src/mage/sets/Commander2016.java +++ b/Mage.Sets/src/mage/sets/Commander2016.java @@ -219,6 +219,7 @@ public class Commander2016 extends ExpansionSet { cards.add(new SetCardInfo("Master of Etherium", 92, Rarity.RARE, mage.cards.m.MasterOfEtherium.class)); cards.add(new SetCardInfo("Mentor of the Meek", 69, Rarity.RARE, mage.cards.m.MentorOfTheMeek.class)); cards.add(new SetCardInfo("Merciless Eviction", 211, Rarity.RARE, mage.cards.m.MercilessEviction.class)); + cards.add(new SetCardInfo("Migratory Route", 38, Rarity.UNCOMMON, mage.cards.m.MigratoryRoute.class)); cards.add(new SetCardInfo("Minds Aglow", 93, Rarity.RARE, mage.cards.m.MindsAglow.class)); cards.add(new SetCardInfo("Mirror Entity", 70, Rarity.RARE, mage.cards.m.MirrorEntity.class)); cards.add(new SetCardInfo("Mirrorweave", 234, Rarity.RARE, mage.cards.m.Mirrorweave.class)); diff --git a/Mage/src/main/java/mage/game/permanent/token/BirdToken.java b/Mage/src/main/java/mage/game/permanent/token/BirdToken.java index 9100fd4e314..1cd2e04d631 100644 --- a/Mage/src/main/java/mage/game/permanent/token/BirdToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/BirdToken.java @@ -29,9 +29,9 @@ package mage.game.permanent.token; import java.util.Arrays; -import mage.constants.CardType; import mage.MageInt; import mage.abilities.keyword.FlyingAbility; +import mage.constants.CardType; /** * @@ -47,7 +47,7 @@ public class BirdToken extends Token { power = new MageInt(1); toughness = new MageInt(1); addAbility(FlyingAbility.getInstance()); - availableImageSetCodes.addAll(Arrays.asList("BNG", "RTR", "ZEN")); + availableImageSetCodes.addAll(Arrays.asList("BNG", "RTR", "ZEN", "C16")); } public BirdToken(final BirdToken token) { @@ -62,7 +62,10 @@ public class BirdToken extends Token { @Override public void setExpansionSetCodeForImage(String code) { super.setExpansionSetCodeForImage(code); - if (getOriginalExpansionSetCode().equals("BNG")) { + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("BNG")) { + this.setTokenType(1); + } + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) { this.setTokenType(1); } } 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 b6c856fc5fa..01bd26a3efb 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SaprolingToken.java @@ -33,6 +33,7 @@ import java.util.Arrays; import java.util.List; import mage.MageInt; import mage.constants.CardType; +import mage.util.RandomUtil; /** * @@ -58,6 +59,9 @@ public class SaprolingToken extends Token { super("Saproling", "1/1 green Saproling creature token"); availableImageSetCodes = tokenImageSets; setOriginalExpansionSetCode(setCode); + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) { + this.setTokenType(RandomUtil.nextInt(2) + 1); + } cardType.add(CardType.CREATURE); color.setGreen(true); subtype.add("Saproling"); diff --git a/Mage/src/main/java/mage/game/permanent/token/ServoToken.java b/Mage/src/main/java/mage/game/permanent/token/ServoToken.java index f06d83d33c4..961642ce4b5 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ServoToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ServoToken.java @@ -32,6 +32,7 @@ import java.util.Arrays; import java.util.List; import mage.MageInt; import mage.constants.CardType; +import mage.util.RandomUtil; /** * @@ -58,6 +59,9 @@ public class ServoToken extends Token { @Override public void setExpansionSetCodeForImage(String code) { super.setExpansionSetCodeForImage(code); + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("KLD")) { + this.setTokenType(RandomUtil.nextInt(3) + 1); + } } public ServoToken(final ServoToken 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 ede064baf26..996b3ff6037 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SoldierToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SoldierToken.java @@ -30,7 +30,6 @@ package mage.game.permanent.token; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Random; import mage.MageInt; import mage.constants.CardType; import mage.util.RandomUtil; @@ -44,7 +43,8 @@ public class SoldierToken extends Token { final static private List tokenImageSets = new ArrayList<>(); static { - tokenImageSets.addAll(Arrays.asList("10E", "M15", "C14", "ORI", "ALA", "DDF", "THS", "M12", "M13", "MM2", "MMA", "RTR", "SOM", "DDO", "M10", "ORI")); + tokenImageSets.addAll(Arrays.asList("10E", "M15", "C14", "ORI", "ALA", "DDF", "THS", "M12", "M13", "MM2", "MMA", "RTR", + "SOM", "DDO", "M10", "ORI", "EMN", "EMA", "CN2", "C16")); } public SoldierToken() { @@ -62,9 +62,12 @@ public class SoldierToken extends Token { @Override public void setExpansionSetCodeForImage(String code) { super.setExpansionSetCodeForImage(code); - if (getOriginalExpansionSetCode().equals("THS")) { + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("THS")) { this.setTokenType(RandomUtil.nextInt(2) + 1); } + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("CN2")) { + setTokenType(1); + } } public SoldierToken(final SoldierToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/SpiritToken.java b/Mage/src/main/java/mage/game/permanent/token/SpiritToken.java index b0aa21deb1d..e6c42da745a 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SpiritToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SpiritToken.java @@ -41,7 +41,7 @@ public class SpiritToken extends Token { final static private List tokenImageSets = new ArrayList<>(); static { - tokenImageSets.addAll(Arrays.asList("CHK", "EMA")); + tokenImageSets.addAll(Arrays.asList("CHK", "EMA", "C16")); } public SpiritToken() { @@ -71,6 +71,9 @@ public class SpiritToken extends Token { if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("EMA")) { setTokenType(1); } + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) { + setTokenType(1); + } } public SpiritToken(final SpiritToken token) { diff --git a/Mage/src/main/java/mage/game/permanent/token/SpiritWhiteToken.java b/Mage/src/main/java/mage/game/permanent/token/SpiritWhiteToken.java index 3efff0c8629..a1ff71d0a99 100644 --- a/Mage/src/main/java/mage/game/permanent/token/SpiritWhiteToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/SpiritWhiteToken.java @@ -42,7 +42,7 @@ public class SpiritWhiteToken extends Token { final static private List tokenImageSets = new ArrayList<>(); static { - tokenImageSets.addAll(Arrays.asList("AVR", "C14", "CNS", "DDC", "DDK", "FRF", "ISD", "KTK", "M15", "MM2", "SHM", "SOI", "EMA")); + tokenImageSets.addAll(Arrays.asList("AVR", "C14", "CNS", "DDC", "DDK", "FRF", "ISD", "KTK", "M15", "MM2", "SHM", "SOI", "EMA", "C16")); } public SpiritWhiteToken() { @@ -75,6 +75,12 @@ public class SpiritWhiteToken extends Token { if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("AVR")) { setTokenType(1); } + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("C16")) { + setTokenType(2); + } + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("EMA")) { + setTokenType(2); + } } public SpiritWhiteToken(final SpiritWhiteToken token) { 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 340ac7c838d..c5d6eaeac58 100644 --- a/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java +++ b/Mage/src/main/java/mage/game/permanent/token/ThopterColorlessToken.java @@ -44,7 +44,7 @@ public class ThopterColorlessToken extends Token { final static private List tokenImageSets = new ArrayList<>(); static { - tokenImageSets.addAll(Arrays.asList("MBS", "ORI")); + tokenImageSets.addAll(Arrays.asList("MBS", "ORI", "KLD")); } public ThopterColorlessToken() { @@ -62,9 +62,12 @@ public class ThopterColorlessToken extends Token { @Override public void setExpansionSetCodeForImage(String code) { super.setExpansionSetCodeForImage(code); - if (getOriginalExpansionSetCode().equals("ORI")) { + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("ORI")) { this.setTokenType(RandomUtil.nextInt(2) + 1); } + if (getOriginalExpansionSetCode() != null && getOriginalExpansionSetCode().equals("KLD")) { + this.setTokenType(RandomUtil.nextInt(3) + 1); + } } public ThopterColorlessToken(final ThopterColorlessToken token) {