diff --git a/Mage.Sets/src/mage/sets/dissension/UtopiaSprawl.java b/Mage.Sets/src/mage/sets/dissension/UtopiaSprawl.java new file mode 100644 index 00000000000..e3140c695a4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/dissension/UtopiaSprawl.java @@ -0,0 +1,205 @@ +/* + * 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.dissension; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.Mana; +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.ManaEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.abilities.mana.TriggeredManaAbility; +import mage.cards.CardImpl; +import mage.choices.ChoiceColor; +import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.TargetPermanent; +import mage.target.common.TargetLandPermanent; +import mage.target.targetpointer.FixedTarget; + +/** + * + * @author Plopman + */ +public class UtopiaSprawl extends CardImpl { + + private static final FilterLandPermanent filter = new FilterLandPermanent("Forest"); + + static { + filter.add(new SubtypePredicate("Forest")); + } + + public UtopiaSprawl(UUID ownerId) { + super(ownerId, 99, "Utopia Sprawl", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{G}"); + this.expansionSetCode = "DIS"; + this.subtype.add("Aura"); + + this.color.setGreen(true); + + // Enchant Forest + TargetPermanent auraTarget = new TargetLandPermanent(filter); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Constants.Outcome.AddAbility)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + // As Utopia Sprawl enters the battlefield, choose a color. + this.addAbility(new EntersBattlefieldAbility(new ChooseColorEffect())); + // Whenever enchanted Forest is tapped for mana, its controller adds one mana of the chosen color to his or her mana pool. + this.addAbility(new UtopiaSprawlTriggeredAbility()); + } + + public UtopiaSprawl(final UtopiaSprawl card) { + super(card); + } + + @Override + public UtopiaSprawl copy() { + return new UtopiaSprawl(this); + } +} + +class ChooseColorEffect extends OneShotEffect { + + public ChooseColorEffect() { + super(Constants.Outcome.BoostCreature); + staticText = "choose a color"; + } + + public ChooseColorEffect(final ChooseColorEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + Permanent permanent = game.getPermanent(source.getSourceId()); + if (player != null && permanent != null) { + ChoiceColor colorChoice = new ChoiceColor(); + if (player.choose(Constants.Outcome.Neutral, colorChoice, game)) { + game.informPlayers(permanent.getName() + ": " + player.getName() + " has chosen " + colorChoice.getChoice()); + game.getState().setValue(permanent.getId() + "_color", colorChoice.getColor()); + } + } + return false; + } + + @Override + public ChooseColorEffect copy() { + return new ChooseColorEffect(this); + } + +} + +class UtopiaSprawlTriggeredAbility extends TriggeredManaAbility { + + + public UtopiaSprawlTriggeredAbility() { + super(Zone.BATTLEFIELD, new UtopiaSprawlEffect()); + } + + public UtopiaSprawlTriggeredAbility(UtopiaSprawlTriggeredAbility ability) { + super(ability); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + Permanent enchantment = game.getPermanent(this.getSourceId()); + if(event.getType() == GameEvent.EventType.TAPPED_FOR_MANA){ + if (enchantment != null && event.getSourceId().equals(enchantment.getAttachedTo())) { + return true; + } + } + return false; + } + + @Override + public UtopiaSprawlTriggeredAbility copy() { + return new UtopiaSprawlTriggeredAbility(this); + } + + @Override + public String getRule() { + return "Whenever enchanted Forest is tapped for mana, its controller adds one mana of the chosen color to his or her mana pool"; + } +} + + +class UtopiaSprawlEffect extends ManaEffect { + + public UtopiaSprawlEffect() { + super(); + staticText = "its controller adds one mana of the chosen color to his or her mana pool"; + } + + public UtopiaSprawlEffect(final UtopiaSprawlEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent enchantment = game.getPermanent(source.getSourceId()); + if(enchantment != null){ + Permanent land = game.getPermanent(enchantment.getAttachedTo()); + if(land != null){ + Player player = game.getPlayer(land.getControllerId()); + if (player != null) { + ObjectColor color = (ObjectColor) game.getState().getValue(source.getSourceId() + "_color"); + if (color.isBlack()) + player.getManaPool().addMana(Mana.BlackMana, game, source); + else if (color.isBlue()) + player.getManaPool().addMana(Mana.BlueMana, game, source); + else if (color.isRed()) + player.getManaPool().addMana(Mana.RedMana, game, source); + else if (color.isGreen()) + player.getManaPool().addMana(Mana.GreenMana, game, source); + else if (color.isWhite()) + player.getManaPool().addMana(Mana.WhiteMana, game, source); + return true; + } + } + } + return false; + } + + @Override + public UtopiaSprawlEffect copy() { + return new UtopiaSprawlEffect(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/eighthedition/VerduranEnchantress.java b/Mage.Sets/src/mage/sets/eighthedition/VerduranEnchantress.java new file mode 100644 index 00000000000..77aadacbbac --- /dev/null +++ b/Mage.Sets/src/mage/sets/eighthedition/VerduranEnchantress.java @@ -0,0 +1,52 @@ +/* + * 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.eighthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class VerduranEnchantress extends mage.sets.seventhedition.VerduranEnchantress { + + public VerduranEnchantress(UUID ownerId) { + super(ownerId); + this.cardNumber = 285; + this.expansionSetCode = "8ED"; + } + + public VerduranEnchantress(final VerduranEnchantress card) { + super(card); + } + + @Override + public VerduranEnchantress copy() { + return new VerduranEnchantress(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/VerduranEnchantress.java b/Mage.Sets/src/mage/sets/fifthedition/VerduranEnchantress.java new file mode 100644 index 00000000000..89746ba4393 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/VerduranEnchantress.java @@ -0,0 +1,52 @@ +/* + * 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.fifthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class VerduranEnchantress extends mage.sets.seventhedition.VerduranEnchantress { + + public VerduranEnchantress(UUID ownerId) { + super(ownerId); + this.cardNumber = 199; + this.expansionSetCode = "5ED"; + } + + public VerduranEnchantress(final VerduranEnchantress card) { + super(card); + } + + @Override + public VerduranEnchantress copy() { + return new VerduranEnchantress(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/WildGrowth.java b/Mage.Sets/src/mage/sets/fifthedition/WildGrowth.java new file mode 100644 index 00000000000..7f5efe12d34 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/WildGrowth.java @@ -0,0 +1,52 @@ +/* + * 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.fifthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class WildGrowth extends mage.sets.iceage.WildGrowth { + + public WildGrowth(UUID ownerId) { + super(ownerId); + this.cardNumber = 204; + this.expansionSetCode = "5ED"; + } + + public WildGrowth(final WildGrowth card) { + super(card); + } + + @Override + public WildGrowth copy() { + return new WildGrowth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fourthedition/VerduranEnchantress.java b/Mage.Sets/src/mage/sets/fourthedition/VerduranEnchantress.java new file mode 100644 index 00000000000..ddb9f3f7220 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fourthedition/VerduranEnchantress.java @@ -0,0 +1,52 @@ +/* + * 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.fourthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class VerduranEnchantress extends mage.sets.seventhedition.VerduranEnchantress { + + public VerduranEnchantress(UUID ownerId) { + super(ownerId); + this.cardNumber = 165; + this.expansionSetCode = "4ED"; + } + + public VerduranEnchantress(final VerduranEnchantress card) { + super(card); + } + + @Override + public VerduranEnchantress copy() { + return new VerduranEnchantress(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fourthedition/WildGrowth.java b/Mage.Sets/src/mage/sets/fourthedition/WildGrowth.java new file mode 100644 index 00000000000..1b95a26b9f6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fourthedition/WildGrowth.java @@ -0,0 +1,52 @@ +/* + * 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.fourthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class WildGrowth extends mage.sets.iceage.WildGrowth { + + public WildGrowth(UUID ownerId) { + super(ownerId); + this.cardNumber = 173; + this.expansionSetCode = "4ED"; + } + + public WildGrowth(final WildGrowth card) { + super(card); + } + + @Override + public WildGrowth copy() { + return new WildGrowth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/iceage/WildGrowth.java b/Mage.Sets/src/mage/sets/iceage/WildGrowth.java new file mode 100644 index 00000000000..e25c55a34d1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/iceage/WildGrowth.java @@ -0,0 +1,146 @@ +/* + * 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.iceage; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Mana; +import mage.abilities.Ability; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.ManaEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.abilities.mana.TriggeredManaAbility; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.TargetPermanent; +import mage.target.common.TargetLandPermanent; + +/** + * + * @author Plopman + */ +public class WildGrowth extends CardImpl { + + public WildGrowth(UUID ownerId) { + super(ownerId, 165, "Wild Growth", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{G}"); + this.expansionSetCode = "ICE"; + this.subtype.add("Aura"); + + this.color.setGreen(true); + + // Enchant land + TargetPermanent auraTarget = new TargetLandPermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Constants.Outcome.AddAbility)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + // Whenever enchanted land is tapped for mana, its controller adds {G} to his or her mana pool. + this.addAbility(new WildGrowthTriggeredAbility()); + } + + public WildGrowth(final WildGrowth card) { + super(card); + } + + @Override + public WildGrowth copy() { + return new WildGrowth(this); + } +} + +class WildGrowthTriggeredAbility extends TriggeredManaAbility { + + + public WildGrowthTriggeredAbility() { + super(Constants.Zone.BATTLEFIELD, new WildGrowthEffect()); + } + + public WildGrowthTriggeredAbility(final WildGrowthTriggeredAbility ability) { + super(ability); + } + + @Override + public WildGrowthTriggeredAbility copy() { + return new WildGrowthTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + Permanent enchantment = game.getPermanent(this.getSourceId()); + if(event.getType() == GameEvent.EventType.TAPPED_FOR_MANA){ + if (enchantment != null && event.getSourceId().equals(enchantment.getAttachedTo())) { + return true; + } + } + return false; + } + + + @Override + public String getRule() { + return "Whenever enchanted land is tapped for mana, its controller adds {G} to his or her mana pool"; + } +} + +class WildGrowthEffect extends ManaEffect { + + public WildGrowthEffect() { + super(); + staticText = "its controller adds {G} to his or her mana pool"; + } + + public WildGrowthEffect(final WildGrowthEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent enchantment = game.getPermanent(source.getSourceId()); + if(enchantment != null){ + Permanent land = game.getPermanent(enchantment.getAttachedTo()); + if(land != null){ + Player player = game.getPlayer(land.getControllerId()); + if (player != null) { + player.getManaPool().addMana(Mana.GreenMana, game, source); + return true; + } + } + } + return false; + } + + @Override + public WildGrowthEffect copy() { + return new WildGrowthEffect(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/ninthedition/VerduranEnchantress.java b/Mage.Sets/src/mage/sets/ninthedition/VerduranEnchantress.java new file mode 100644 index 00000000000..2ff0923705e --- /dev/null +++ b/Mage.Sets/src/mage/sets/ninthedition/VerduranEnchantress.java @@ -0,0 +1,52 @@ +/* + * 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.ninthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class VerduranEnchantress extends mage.sets.seventhedition.VerduranEnchantress { + + public VerduranEnchantress(UUID ownerId) { + super(ownerId); + this.cardNumber = 279; + this.expansionSetCode = "9ED"; + } + + public VerduranEnchantress(final VerduranEnchantress card) { + super(card); + } + + @Override + public VerduranEnchantress copy() { + return new VerduranEnchantress(this); + } +} diff --git a/Mage.Sets/src/mage/sets/onslaught/EnchantresssPresence.java b/Mage.Sets/src/mage/sets/onslaught/EnchantresssPresence.java new file mode 100644 index 00000000000..0f77deca0a3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/onslaught/EnchantresssPresence.java @@ -0,0 +1,70 @@ +/* + * 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.onslaught; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.common.SpellCastTriggeredAbility; +import mage.abilities.effects.common.DrawCardControllerEffect; +import mage.cards.CardImpl; +import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; + +/** + * + * @author Plopman + */ +public class EnchantresssPresence extends CardImpl { + + private static final FilterSpell filter = new FilterSpell("an Enchantment spell"); + + static { + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); + } + + + public EnchantresssPresence(UUID ownerId) { + super(ownerId, 261, "Enchantress's Presence", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); + this.expansionSetCode = "ONS"; + + this.color.setGreen(true); + + // Whenever you cast an enchantment spell, draw a card. + this.addAbility(new SpellCastTriggeredAbility(new DrawCardControllerEffect(1), filter, false)); + } + + public EnchantresssPresence(final EnchantresssPresence card) { + super(card); + } + + @Override + public EnchantresssPresence copy() { + return new EnchantresssPresence(this); + } +} diff --git a/Mage.Sets/src/mage/sets/onslaught/WordsOfWind.java b/Mage.Sets/src/mage/sets/onslaught/WordsOfWind.java new file mode 100644 index 00000000000..35eda304026 --- /dev/null +++ b/Mage.Sets/src/mage/sets/onslaught/WordsOfWind.java @@ -0,0 +1,129 @@ +/* + * 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.onslaught; + +import java.util.List; +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.cards.CardImpl; +import mage.filter.common.FilterControlledPermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author Plopman + */ +public class WordsOfWind extends CardImpl { + + public WordsOfWind(UUID ownerId) { + super(ownerId, 122, "Words of Wind", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{U}"); + this.expansionSetCode = "ONS"; + + this.color.setBlue(true); + + // {1}: The next time you would draw a card this turn, each player returns a permanent he or she controls to its owner's hand instead. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new WordsOfWindEffect(), new ManaCostsImpl("{1}"))); + } + + public WordsOfWind(final WordsOfWind card) { + super(card); + } + + @Override + public WordsOfWind copy() { + return new WordsOfWind(this); + } +} + +class WordsOfWindEffect extends ReplacementEffectImpl { + + public WordsOfWindEffect() { + super(Constants.Duration.EndOfTurn, Constants.Outcome.ReturnToHand); + staticText = "The next time you would draw a card this turn, each player returns a permanent he or she controls to its owner's hand instead"; + } + + public WordsOfWindEffect(final WordsOfWindEffect effect) { + super(effect); + } + + @Override + public WordsOfWindEffect copy() { + return new WordsOfWindEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + + game.informPlayers("Each player returns a permanent he or she controls to its owner's hand instead"); + for (UUID playerId : game.getPlayerList()) { + Player player = game.getPlayer(playerId); + if (player != null) { + TargetControlledPermanent target = new TargetControlledPermanent(); + List liste = game.getBattlefield().getActivePermanents(new FilterControlledPermanent(), playerId, game); + if(!liste.isEmpty()){ + while (!player.choose(Outcome.ReturnToHand, target, source.getSourceId(), game)){ + game.debugMessage("player canceled choosing permanent. retrying."); + } + Permanent permanent = game.getPermanent(target.getFirstTarget()); + if (permanent != null) { + permanent.moveToZone(Zone.HAND, source.getId(), game, false); + } + } + } + } + used = true; + return apply(game, source); + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (event.getType() == EventType.DRAW_CARD && source.getControllerId().equals(event.getPlayerId()) && used == false) { + + return true; + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/seventhedition/VerduranEnchantress.java b/Mage.Sets/src/mage/sets/seventhedition/VerduranEnchantress.java new file mode 100644 index 00000000000..eca1545b6c0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/seventhedition/VerduranEnchantress.java @@ -0,0 +1,74 @@ +/* + * 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.seventhedition; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.MageInt; +import mage.abilities.common.SpellCastTriggeredAbility; +import mage.abilities.effects.common.DrawCardControllerEffect; +import mage.cards.CardImpl; +import mage.filter.FilterSpell; +import mage.filter.predicate.mageobject.CardTypePredicate; + +/** + * + * @author Plopman + */ +public class VerduranEnchantress extends CardImpl { + + private static final FilterSpell filter = new FilterSpell("an Enchantment spell"); + + static { + filter.add(new CardTypePredicate(CardType.ENCHANTMENT)); + } + + public VerduranEnchantress(UUID ownerId) { + super(ownerId, 280, "Verduran Enchantress", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); + this.expansionSetCode = "7ED"; + this.subtype.add("Human"); + this.subtype.add("Druid"); + + this.color.setGreen(true); + this.power = new MageInt(0); + this.toughness = new MageInt(2); + + // Whenever you cast an enchantment spell, you may draw a card. + this.addAbility(new SpellCastTriggeredAbility(new DrawCardControllerEffect(1), filter, true)); + } + + public VerduranEnchantress(final VerduranEnchantress card) { + super(card); + } + + @Override + public VerduranEnchantress copy() { + return new VerduranEnchantress(this); + } +} diff --git a/Mage.Sets/src/mage/sets/seventhedition/WildGrowth.java b/Mage.Sets/src/mage/sets/seventhedition/WildGrowth.java new file mode 100644 index 00000000000..d1f8a499afd --- /dev/null +++ b/Mage.Sets/src/mage/sets/seventhedition/WildGrowth.java @@ -0,0 +1,52 @@ +/* + * 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.seventhedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class WildGrowth extends mage.sets.iceage.WildGrowth { + + public WildGrowth(UUID ownerId) { + super(ownerId); + this.cardNumber = 282; + this.expansionSetCode = "7ED"; + } + + public WildGrowth(final WildGrowth card) { + super(card); + } + + @Override + public WildGrowth copy() { + return new WildGrowth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/sixthedition/VerduranEnchantress.java b/Mage.Sets/src/mage/sets/sixthedition/VerduranEnchantress.java new file mode 100644 index 00000000000..4e8d789fcbf --- /dev/null +++ b/Mage.Sets/src/mage/sets/sixthedition/VerduranEnchantress.java @@ -0,0 +1,52 @@ +/* + * 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.sixthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class VerduranEnchantress extends mage.sets.seventhedition.VerduranEnchantress { + + public VerduranEnchantress(UUID ownerId) { + super(ownerId); + this.cardNumber = 264; + this.expansionSetCode = "6ED"; + } + + public VerduranEnchantress(final VerduranEnchantress card) { + super(card); + } + + @Override + public VerduranEnchantress copy() { + return new VerduranEnchantress(this); + } +} diff --git a/Mage.Sets/src/mage/sets/sixthedition/WildGrowth.java b/Mage.Sets/src/mage/sets/sixthedition/WildGrowth.java new file mode 100644 index 00000000000..2401b1af400 --- /dev/null +++ b/Mage.Sets/src/mage/sets/sixthedition/WildGrowth.java @@ -0,0 +1,52 @@ +/* + * 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.sixthedition; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class WildGrowth extends mage.sets.iceage.WildGrowth { + + public WildGrowth(UUID ownerId) { + super(ownerId); + this.cardNumber = 268; + this.expansionSetCode = "6ED"; + } + + public WildGrowth(final WildGrowth card) { + super(card); + } + + @Override + public WildGrowth copy() { + return new WildGrowth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/urzassaga/CarpetOfFlowers.java b/Mage.Sets/src/mage/sets/urzassaga/CarpetOfFlowers.java new file mode 100644 index 00000000000..f68cb82d7a1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/urzassaga/CarpetOfFlowers.java @@ -0,0 +1,202 @@ +/* + * 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.urzassaga; + +import java.util.LinkedHashSet; +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.Mana; +import mage.abilities.Ability; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.common.ManaEffect; +import mage.cards.CardImpl; +import mage.choices.ChoiceColor; +import mage.choices.ChoiceImpl; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.players.Player; +import mage.target.common.TargetOpponent; + +/** + * + * @author Plopman + */ +public class CarpetOfFlowers extends CardImpl { + + public CarpetOfFlowers(UUID ownerId) { + super(ownerId, 240, "Carpet of Flowers", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{G}"); + this.expansionSetCode = "USG"; + + this.color.setGreen(true); + + // At the beginning of each of your main phases, if you haven't added mana to your mana pool with this ability this turn, you may add up to X mana of any one color to your mana pool, where X is the number of Islands target opponent controls. + this.addAbility(new CarpetOfFlowersTriggeredAbility()); + } + + public CarpetOfFlowers(final CarpetOfFlowers card) { + super(card); + } + + @Override + public CarpetOfFlowers copy() { + return new CarpetOfFlowers(this); + } +} + + + +class CarpetOfFlowersTriggeredAbility extends TriggeredAbilityImpl { + + + public CarpetOfFlowersTriggeredAbility() { + super(Constants.Zone.BATTLEFIELD, new CarpetOfFlowersEffect(), true); + this.addChoice(new ChoiceColor()); + this.addTarget(new TargetOpponent()); + + } + + public CarpetOfFlowersTriggeredAbility(final CarpetOfFlowersTriggeredAbility ability) { + super(ability); + } + + @Override + public CarpetOfFlowersTriggeredAbility copy() { + return new CarpetOfFlowersTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if((event.getType() == GameEvent.EventType.PRECOMBAT_MAIN_PHASE_PRE || event.getType() == GameEvent.EventType.POSTCOMBAT_MAIN_PHASE_PRE) && event.getPlayerId().equals(this.controllerId)){ + return true; + } + return false; + } + + @Override + public boolean checkInterveningIfClause(Game game) { + Boolean activated = (Boolean)game.getState().getValue(this.originalId.toString() + "addMana"); + if (activated == null) + { + return true; + } + else + { + return !activated; + } + } + + + + @Override + public boolean resolve(Game game) { + boolean value = super.resolve(game); + if(value == true) + { + game.getState().setValue(this.originalId.toString() + "addMana", Boolean.TRUE); + } + return value; + } + + @Override + public void reset(Game game) { + game.getState().setValue(this.originalId.toString() + "addMana", Boolean.FALSE); + } + + @Override + public String getRule() { + return "At the beginning of each of your main phases, if you haven't added mana to your mana pool with this ability this turn"; + } + +} + + +class CarpetOfFlowersEffect extends ManaEffect { + + private static final FilterControlledPermanent filter = new FilterControlledPermanent("Island "); + + static { + filter.add(new SubtypePredicate("Island")); + filter.add(new CardTypePredicate(CardType.LAND)); + } + + CarpetOfFlowersEffect() { + super(); + staticText = "add up to X mana of any one color to your mana pool, where X is the number of Islands target opponent controls"; + } + + CarpetOfFlowersEffect(final CarpetOfFlowersEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + ChoiceColor choice = (ChoiceColor) source.getChoices().get(0); + Player player = game.getPlayer(source.getControllerId()); + if(player != null){ + int countMax = game.getBattlefield().count(filter, source.getTargets().getFirstTarget(), game); + ChoiceImpl choiceCount = new ChoiceImpl(true); + LinkedHashSet set = new LinkedHashSet(); + for(int i = 0; i <= countMax; i++) + { + set.add(Integer.toString(i)); + } + choiceCount.setChoices(set); + choiceCount.setMessage("Choose number of mana"); + player.choose(Outcome.PutManaInPool, choiceCount, game); + int count = Integer.parseInt(choiceCount.getChoice()); + if (choice.getColor().isBlack()) { + player.getManaPool().addMana(new Mana(0, 0, 0, 0, count, 0, 0), game, source); + return true; + } else if (choice.getColor().isBlue()) { + player.getManaPool().addMana(new Mana(0, 0, count, 0, 0, 0, 0), game, source); + return true; + } else if (choice.getColor().isRed()) { + player.getManaPool().addMana(new Mana(count, 0, 0, 0, 0, 0, 0), game, source); + return true; + } else if (choice.getColor().isGreen()) { + player.getManaPool().addMana(new Mana(0, count, 0, 0, 0, 0, 0), game, source); + return true; + } else if (choice.getColor().isWhite()) { + player.getManaPool().addMana(new Mana(0, 0, 0, count, 0, 0, 0), game, source); + return true; + } + } + return false; + } + + @Override + public CarpetOfFlowersEffect copy() { + return new CarpetOfFlowersEffect(this); + } +}