From f380b2cdde97e18b7974b26744d5299d498aba8f Mon Sep 17 00:00:00 2001 From: LoneFox Date: Wed, 23 Sep 2015 16:59:21 +0300 Subject: [PATCH] Add Goat token and use it for existing cards. --- .../sets/commander2013/SpringjackPasture.java | 16 +- .../sets/eventide/SpringjackShepherd.java | 218 +++++++++--------- .../src/mage/sets/magic2013/TradingPost.java | 26 +-- .../mage/game/permanent/token/GoatToken.java | 50 ++++ 4 files changed, 161 insertions(+), 149 deletions(-) create mode 100644 Mage/src/mage/game/permanent/token/GoatToken.java diff --git a/Mage.Sets/src/mage/sets/commander2013/SpringjackPasture.java b/Mage.Sets/src/mage/sets/commander2013/SpringjackPasture.java index 8fafdc13ef..d4873e2dd1 100644 --- a/Mage.Sets/src/mage/sets/commander2013/SpringjackPasture.java +++ b/Mage.Sets/src/mage/sets/commander2013/SpringjackPasture.java @@ -50,7 +50,7 @@ import mage.constants.Zone; import mage.filter.common.FilterControlledCreaturePermanent; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; -import mage.game.permanent.token.Token; +import mage.game.permanent.token.GoatToken; import mage.players.Player; /** @@ -136,17 +136,3 @@ class SpringjackPastureEffect extends OneShotEffect { return new SpringjackPastureEffect(this); } } - -class GoatToken extends Token { - - public GoatToken() { - super("Goat", "0/1 white Goat creature token"); - setOriginalExpansionSetCode("EVE"); - cardType.add(CardType.CREATURE); - color.setWhite(true); - - subtype.add("Goat"); - power = new MageInt(0); - toughness = new MageInt(1); - } -} diff --git a/Mage.Sets/src/mage/sets/eventide/SpringjackShepherd.java b/Mage.Sets/src/mage/sets/eventide/SpringjackShepherd.java index 460d913355..481269f78f 100644 --- a/Mage.Sets/src/mage/sets/eventide/SpringjackShepherd.java +++ b/Mage.Sets/src/mage/sets/eventide/SpringjackShepherd.java @@ -1,116 +1,104 @@ -/* - * 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.sets.eventide; - -import java.util.UUID; -import mage.MageInt; -import mage.ObjectColor; -import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.dynamicvalue.DynamicValue; -import mage.abilities.effects.Effect; -import mage.abilities.effects.common.CreateTokenEffect; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.filter.FilterPermanent; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.game.permanent.token.Token; - -/** - * - * @author jeffwadsworth - * - */ -public class SpringjackShepherd extends CardImpl { - - public SpringjackShepherd(UUID ownerId) { - super(ownerId, 15, "Springjack Shepherd", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{W}"); - this.expansionSetCode = "EVE"; - this.subtype.add("Kithkin"); - this.subtype.add("Wizard"); - - this.power = new MageInt(1); - this.toughness = new MageInt(2); - - // Chroma - When Springjack Shepherd enters the battlefield, put a 0/1 white Goat creature token onto the battlefield for each white mana symbol in the mana costs of permanents you control. - Effect effect = new CreateTokenEffect(new GoatToken(), new ChromaSpringjackShepherdCount()); - effect.setText("Chroma - When Springjack Shepherd enters the battlefield, put a 0/1 white Goat creature token onto the battlefield for each white mana symbol in the mana costs of permanents you control."); - this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false, true)); - - } - - public SpringjackShepherd(final SpringjackShepherd card) { - super(card); - } - - @Override - public SpringjackShepherd copy() { - return new SpringjackShepherd(this); - } -} - -class ChromaSpringjackShepherdCount implements DynamicValue { - - @Override - public int calculate(Game game, Ability sourceAbility, Effect effect) { - int chroma = 0; - for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterPermanent(), sourceAbility.getControllerId(), game)) { - chroma += permanent.getManaCost().getMana().getWhite(); - } - return chroma; - } - - @Override - public DynamicValue copy() { - return new ChromaSpringjackShepherdCount(); - } - - @Override - public String toString() { - return "1"; - } - - @Override - public String getMessage() { - return ""; - } -} - -class GoatToken extends Token { - - public GoatToken() { - super("Goat", "a 0/1 white Goat creature token"); - cardType.add(CardType.CREATURE); - color.setWhite(true); - subtype.add("Goat"); - power = new MageInt(0); - toughness = new MageInt(1); - } +/* + * 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.sets.eventide; + +import java.util.UUID; +import mage.MageInt; +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.FilterPermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.game.permanent.token.GoatToken; + +/** + * + * @author jeffwadsworth + * + */ +public class SpringjackShepherd extends CardImpl { + + public SpringjackShepherd(UUID ownerId) { + super(ownerId, 15, "Springjack Shepherd", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{W}"); + this.expansionSetCode = "EVE"; + this.subtype.add("Kithkin"); + this.subtype.add("Wizard"); + + this.power = new MageInt(1); + this.toughness = new MageInt(2); + + // Chroma - When Springjack Shepherd enters the battlefield, put a 0/1 white Goat creature token onto the battlefield for each white mana symbol in the mana costs of permanents you control. + Effect effect = new CreateTokenEffect(new GoatToken(), new ChromaSpringjackShepherdCount()); + effect.setText("Chroma - When Springjack Shepherd enters the battlefield, put a 0/1 white Goat creature token onto the battlefield for each white mana symbol in the mana costs of permanents you control."); + this.addAbility(new EntersBattlefieldTriggeredAbility(effect, false, true)); + + } + + public SpringjackShepherd(final SpringjackShepherd card) { + super(card); + } + + @Override + public SpringjackShepherd copy() { + return new SpringjackShepherd(this); + } +} + +class ChromaSpringjackShepherdCount implements DynamicValue { + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + int chroma = 0; + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(new FilterPermanent(), sourceAbility.getControllerId(), game)) { + chroma += permanent.getManaCost().getMana().getWhite(); + } + return chroma; + } + + @Override + public DynamicValue copy() { + return new ChromaSpringjackShepherdCount(); + } + + @Override + public String toString() { + return "1"; + } + + @Override + public String getMessage() { + return ""; + } } diff --git a/Mage.Sets/src/mage/sets/magic2013/TradingPost.java b/Mage.Sets/src/mage/sets/magic2013/TradingPost.java index 2b933e21b2..f6370a6d28 100644 --- a/Mage.Sets/src/mage/sets/magic2013/TradingPost.java +++ b/Mage.Sets/src/mage/sets/magic2013/TradingPost.java @@ -49,7 +49,7 @@ import mage.constants.Zone; import mage.filter.common.FilterArtifactCard; import mage.filter.common.FilterControlledPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; -import mage.game.permanent.token.Token; +import mage.game.permanent.token.GoatToken; import mage.target.common.TargetCardInGraveyard; import mage.target.common.TargetCardInHand; import mage.target.common.TargetControlledPermanent; @@ -59,10 +59,10 @@ import mage.target.common.TargetControlledPermanent; * @author jeffwadsworth */ public class TradingPost extends CardImpl { - + final static FilterControlledPermanent filter = new FilterControlledPermanent("creature"); final static FilterControlledPermanent filter2 = new FilterControlledPermanent("artifact"); - + static { filter.add(new CardTypePredicate(CardType.CREATURE)); filter2.add(new CardTypePredicate(CardType.ARTIFACT)); @@ -77,26 +77,26 @@ public class TradingPost extends CardImpl { ability1.addCost(new TapSourceCost()); ability1.addCost(new DiscardTargetCost(new TargetCardInHand())); this.addAbility(ability1); - + // {1}, {tap}, Pay 1 life: Put a 0/1 white Goat creature token onto the battlefield. Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new GoatToken()), new GenericManaCost(1)); ability2.addCost(new TapSourceCost()); ability2.addCost(new PayLifeCost(1)); this.addAbility(ability2); - + // {1}, {tap}, Sacrifice a creature: Return target artifact card from your graveyard to your hand. Ability ability3 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnFromGraveyardToHandTargetEffect(), new GenericManaCost(1)); ability3.addTarget(new TargetCardInGraveyard(new FilterArtifactCard("artifact card in your graveyard"))); ability3.addCost(new TapSourceCost()); ability3.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter))); this.addAbility(ability3); - + // {1}, {tap}, Sacrifice an artifact: Draw a card. Ability ability4 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), new GenericManaCost(1)); ability4.addCost(new TapSourceCost()); ability4.addCost(new SacrificeTargetCost(new TargetControlledPermanent(filter2))); this.addAbility(ability4); - + } public TradingPost(final TradingPost card) { @@ -108,15 +108,3 @@ public class TradingPost extends CardImpl { return new TradingPost(this); } } - -class GoatToken extends Token { - public GoatToken() { - super("Goat", "a 0/1 white Goat creature token"); - cardType.add(CardType.CREATURE); - color.setWhite(true); - - subtype.add("Goat"); - power = new MageInt(0); - toughness = new MageInt(1); - } -} diff --git a/Mage/src/mage/game/permanent/token/GoatToken.java b/Mage/src/mage/game/permanent/token/GoatToken.java new file mode 100644 index 0000000000..d3d4078902 --- /dev/null +++ b/Mage/src/mage/game/permanent/token/GoatToken.java @@ -0,0 +1,50 @@ +/* +* 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.game.permanent.token; + +import java.util.Arrays; +import mage.constants.CardType; +import mage.MageInt; + +/** + * + * @author LoneFox + */ +public class GoatToken extends Token { + + public GoatToken() { + super("Goat", "0/1 white Goat creature token"); + cardType.add(CardType.CREATURE); + color.setWhite(true); + subtype.add("Goat"); + power = new MageInt(1); + toughness = new MageInt(1); + availableImageSetCodes.addAll(Arrays.asList("EVE", "M13", "M14", "C14")); + } +}