From d189877907b591dbe1370032cab1bc5074537323 Mon Sep 17 00:00:00 2001 From: Plopman Date: Mon, 8 Oct 2012 16:24:10 +0200 Subject: [PATCH] [RTR] 5 green cards --- .../sets/returntoravnica/AxebaneGuardian.java | 138 ++++++++++++++++++ .../sets/returntoravnica/SavageSurge.java | 65 +++++++++ .../sets/returntoravnica/SlimeMolding.java | 105 +++++++++++++ .../returntoravnica/StonefareCrocodile.java | 69 +++++++++ .../sets/returntoravnica/WorldspineWurm.java | 126 ++++++++++++++++ 5 files changed, 503 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/returntoravnica/AxebaneGuardian.java create mode 100644 Mage.Sets/src/mage/sets/returntoravnica/SavageSurge.java create mode 100644 Mage.Sets/src/mage/sets/returntoravnica/SlimeMolding.java create mode 100644 Mage.Sets/src/mage/sets/returntoravnica/StonefareCrocodile.java create mode 100644 Mage.Sets/src/mage/sets/returntoravnica/WorldspineWurm.java diff --git a/Mage.Sets/src/mage/sets/returntoravnica/AxebaneGuardian.java b/Mage.Sets/src/mage/sets/returntoravnica/AxebaneGuardian.java new file mode 100644 index 00000000000..693dd350fb9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/returntoravnica/AxebaneGuardian.java @@ -0,0 +1,138 @@ +/* + * 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.returntoravnica; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.Mana; +import mage.abilities.Ability; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.ManaEffect; +import mage.abilities.keyword.DefenderAbility; +import mage.abilities.mana.SimpleManaAbility; +import mage.cards.CardImpl; +import mage.choices.ChoiceColor; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.game.Game; +import mage.players.Player; + +/** + * + * @author Plopman + */ +public class AxebaneGuardian extends CardImpl { + + public AxebaneGuardian(UUID ownerId) { + super(ownerId, 115, "Axebane Guardian", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); + this.expansionSetCode = "RTR"; + this.subtype.add("Human"); + this.subtype.add("Druid"); + + this.color.setGreen(true); + this.power = new MageInt(0); + this.toughness = new MageInt(3); + + // Defender + this.addAbility(DefenderAbility.getInstance()); + // {tap}: Add X mana in any combination of colors to your mana pool, where X is the number of creatures with defender you control. + this.addAbility(new SimpleManaAbility(Constants.Zone.BATTLEFIELD, new AxebaneGuardianManaEffect(), new TapSourceCost())); + } + + public AxebaneGuardian(final AxebaneGuardian card) { + super(card); + } + + @Override + public AxebaneGuardian copy() { + return new AxebaneGuardian(this); + } +} + + +class AxebaneGuardianManaEffect extends ManaEffect { + + + private static final FilterPermanent filter = new FilterControlledCreaturePermanent("creatures with defender you control"); + static{ + filter.add(new AbilityPredicate(DefenderAbility.class)); + } + public AxebaneGuardianManaEffect() { + super(); + this.staticText = "Add X mana in any combination of colors to your mana pool, where X is the number of creatures with defender you control"; + } + + public AxebaneGuardianManaEffect(final AxebaneGuardianManaEffect effect) { + super(effect); + } + + @Override + public AxebaneGuardianManaEffect copy() { + return new AxebaneGuardianManaEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if(player != null){ + int x = game.getBattlefield().count(filter, source.getControllerId(), game); + + Mana mana = new Mana(); + for(int i = 0; i < x; i++){ + ChoiceColor choiceColor = new ChoiceColor(); + while (!player.choose(Constants.Outcome.Benefit, choiceColor, game)) { + game.debugMessage("player canceled choosing color. retrying."); + } + + if (choiceColor.getColor().isBlack()) { + mana.addBlack(); + } else if (choiceColor.getColor().isBlue()) { + mana.addBlue(); + } else if (choiceColor.getColor().isRed()) { + mana.addRed(); + } else if (choiceColor.getColor().isGreen()) { + mana.addGreen(); + } else if (choiceColor.getColor().isWhite()) { + mana.addWhite(); + } + } + + + if (player != null && mana != null) { + player.getManaPool().addMana(mana, game, source); + return true; + } + + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/returntoravnica/SavageSurge.java b/Mage.Sets/src/mage/sets/returntoravnica/SavageSurge.java new file mode 100644 index 00000000000..60444ac8863 --- /dev/null +++ b/Mage.Sets/src/mage/sets/returntoravnica/SavageSurge.java @@ -0,0 +1,65 @@ +/* + * 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.returntoravnica; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.effects.common.continious.BoostTargetEffect; +import mage.cards.CardImpl; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author Plopman + */ +public class SavageSurge extends CardImpl { + + public SavageSurge(UUID ownerId) { + super(ownerId, 133, "Savage Surge", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{1}{G}"); + this.expansionSetCode = "RTR"; + + this.color.setGreen(true); + + // Target creature gets +2/+2 until end of turn. Untap that creature. + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addEffect(new BoostTargetEffect(2, 2, Constants.Duration.EndOfTurn)); + this.getSpellAbility().addEffect(new UntapTargetEffect()); + } + + public SavageSurge(final SavageSurge card) { + super(card); + } + + @Override + public SavageSurge copy() { + return new SavageSurge(this); + } +} diff --git a/Mage.Sets/src/mage/sets/returntoravnica/SlimeMolding.java b/Mage.Sets/src/mage/sets/returntoravnica/SlimeMolding.java new file mode 100644 index 00000000000..e6f789bf199 --- /dev/null +++ b/Mage.Sets/src/mage/sets/returntoravnica/SlimeMolding.java @@ -0,0 +1,105 @@ +/* + * 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.returntoravnica; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.permanent.token.Token; + +/** + * + * @author Plopman + */ +public class SlimeMolding extends CardImpl { + + public SlimeMolding(UUID ownerId) { + super(ownerId, 135, "Slime Molding", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{X}{G}"); + this.expansionSetCode = "RTR"; + + this.color.setGreen(true); + + // Put an X/X green Ooze creature token onto the battlefield. + this.getSpellAbility().addEffect(new SlimeMoldingEffect()); + } + + public SlimeMolding(final SlimeMolding card) { + super(card); + } + + @Override + public SlimeMolding copy() { + return new SlimeMolding(this); + } +} + +class SlimeMoldingEffect extends OneShotEffect { + + public SlimeMoldingEffect() { + super(Constants.Outcome.PutCreatureInPlay); + staticText = "Put an X/X green Ooze creature token onto the battlefield"; + } + + public SlimeMoldingEffect(SlimeMoldingEffect ability) { + super(ability); + } + + @Override + public boolean apply(Game game, Ability source) { + int count = source.getManaCostsToPay().getX(); + + OozeToken oozeToken = new OozeToken(); + oozeToken.getPower().setValue(count); + oozeToken.getToughness().setValue(count); + oozeToken.putOntoBattlefield(1, game, source.getId(), source.getControllerId()); + return true; + } + + @Override + public SlimeMoldingEffect copy() { + return new SlimeMoldingEffect(this); + } +} + +class OozeToken extends Token { + + public OozeToken() { + super("Ooze", "X/X green ooze creature token"); + cardType.add(CardType.CREATURE); + color.setGreen(true); + subtype.add("Ooze"); + power = new MageInt(0); + toughness = new MageInt(0); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/returntoravnica/StonefareCrocodile.java b/Mage.Sets/src/mage/sets/returntoravnica/StonefareCrocodile.java new file mode 100644 index 00000000000..d91c4f2103d --- /dev/null +++ b/Mage.Sets/src/mage/sets/returntoravnica/StonefareCrocodile.java @@ -0,0 +1,69 @@ +/* + * 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.returntoravnica; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continious.GainAbilitySourceEffect; +import mage.abilities.keyword.LifelinkAbility; +import mage.cards.CardImpl; + +/** + * + * @author Plopman + */ +public class StonefareCrocodile extends CardImpl { + + public StonefareCrocodile(UUID ownerId) { + super(ownerId, 136, "Stonefare Crocodile", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); + this.expansionSetCode = "RTR"; + this.subtype.add("Crocodile"); + + this.color.setGreen(true); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // {2}{B}: Stonefare Crocodile gains lifelink until end of turn. + this.addAbility(new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new GainAbilitySourceEffect(LifelinkAbility.getInstance(), Constants.Duration.EndOfTurn), new ManaCostsImpl("{2}{B}"))); + } + + public StonefareCrocodile(final StonefareCrocodile card) { + super(card); + } + + @Override + public StonefareCrocodile copy() { + return new StonefareCrocodile(this); + } +} diff --git a/Mage.Sets/src/mage/sets/returntoravnica/WorldspineWurm.java b/Mage.Sets/src/mage/sets/returntoravnica/WorldspineWurm.java new file mode 100644 index 00000000000..742014101dc --- /dev/null +++ b/Mage.Sets/src/mage/sets/returntoravnica/WorldspineWurm.java @@ -0,0 +1,126 @@ +/* + * 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.returntoravnica; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesTriggeredAbility; +import mage.abilities.common.PutIntoGraveFromAnywhereTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.permanent.token.Token; +import mage.players.Player; + +/** + * + * @author Plopman + */ +public class WorldspineWurm extends CardImpl { + + public WorldspineWurm(UUID ownerId) { + super(ownerId, 140, "Worldspine Wurm", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{8}{G}{G}{G}"); + this.expansionSetCode = "RTR"; + this.subtype.add("Wurm"); + + this.color.setGreen(true); + this.power = new MageInt(15); + this.toughness = new MageInt(15); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + // When Worldspine Wurm dies, put three 5/5 green Wurm creature tokens with trample onto the battlefield. + this.addAbility(new DiesTriggeredAbility(new CreateTokenEffect(new WorldspineWurmToken(), 3))); + // When Worldspine Wurm is put into a graveyard from anywhere, shuffle it into its owner's library. + this.addAbility(new PutIntoGraveFromAnywhereTriggeredAbility(new WorldspineWurmEffect())); + } + + public WorldspineWurm(final WorldspineWurm card) { + super(card); + } + + @Override + public WorldspineWurm copy() { + return new WorldspineWurm(this); + } +} + + +class WorldspineWurmEffect extends OneShotEffect { + WorldspineWurmEffect() { + super(Constants.Outcome.Neutral); + staticText = "shuffle it into its owner's library"; + } + + WorldspineWurmEffect(final WorldspineWurmEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + Card c = player.getGraveyard().get(source.getSourceId(), game); + if (c != null) { + player.getGraveyard().remove(c); + player.getLibrary().putOnTop(c, game); + player.getLibrary().shuffle(); + return true; + } + + } + return false; + } + + @Override + public WorldspineWurmEffect copy() { + return new WorldspineWurmEffect(this); + } +} + + +class WorldspineWurmToken extends Token { + + public WorldspineWurmToken() { + super("Wurm", "5/5 green Wurm creature tokens with trample"); + cardType.add(CardType.CREATURE); + color.setGreen(true); + subtype.add("Wurm"); + power = new MageInt(5); + toughness = new MageInt(5); + + this.addAbility(TrampleAbility.getInstance()); + } +} \ No newline at end of file