From fa248fa00b5651096d716f87ee9322d052d92f66 Mon Sep 17 00:00:00 2001 From: Nicolas Date: Mon, 12 May 2014 20:28:42 +0200 Subject: [PATCH] Added Dawn's Reflection, Overgrowth and Deserted Temple --- .../mage/sets/fifthdawn/DawnsReflection.java | 166 ++++++++++++++++++ .../mage/sets/ninthedition/Overgrowth.java | 52 ++++++ .../src/mage/sets/odyssey/DesertedTemple.java | 70 ++++++++ .../src/mage/sets/stronghold/Overgrowth.java | 148 ++++++++++++++++ Mage.Sets/src/mage/sets/tenth/Overgrowth.java | 52 ++++++ 5 files changed, 488 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/fifthdawn/DawnsReflection.java create mode 100644 Mage.Sets/src/mage/sets/ninthedition/Overgrowth.java create mode 100644 Mage.Sets/src/mage/sets/odyssey/DesertedTemple.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/Overgrowth.java create mode 100644 Mage.Sets/src/mage/sets/tenth/Overgrowth.java diff --git a/Mage.Sets/src/mage/sets/fifthdawn/DawnsReflection.java b/Mage.Sets/src/mage/sets/fifthdawn/DawnsReflection.java new file mode 100644 index 00000000000..a9f25a725be --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthdawn/DawnsReflection.java @@ -0,0 +1,166 @@ +/* + * 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.fifthdawn; + +import java.util.UUID; +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.choices.ChoiceColor; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +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 DawnsReflection extends CardImpl { + + public DawnsReflection(UUID ownerId) { + super(ownerId, 85, "Dawn's Reflection", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{3}{G}"); + this.expansionSetCode = "5DN"; + this.subtype.add("Aura"); + + this.color.setGreen(true); + + // Enchant land + TargetPermanent auraTarget = new TargetLandPermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + // Whenever enchanted land is tapped for mana, its controller adds two mana in any combination of colors to his or her mana pool. + this.addAbility(new DawnsReflectionTriggeredAbility()); + } + + public DawnsReflection(final DawnsReflection card) { + super(card); + } + + @Override + public DawnsReflection copy() { + return new DawnsReflection(this); + } +} +class DawnsReflectionTriggeredAbility extends TriggeredManaAbility { + + public DawnsReflectionTriggeredAbility() { + super(Zone.BATTLEFIELD, new DawnsReflectionManaEffect()); + } + + public DawnsReflectionTriggeredAbility(final DawnsReflectionTriggeredAbility ability) { + super(ability); + } + + @Override + public DawnsReflectionTriggeredAbility copy() { + return new DawnsReflectionTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if(event.getType() == GameEvent.EventType.TAPPED_FOR_MANA){ + Permanent enchantment = game.getPermanent(this.getSourceId()); + 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 two mana in any combination of colors to his or her mana pool (in addition to the mana the land produces)."; + } +} + + +class DawnsReflectionManaEffect extends ManaEffect { + + public DawnsReflectionManaEffect() { + super(); + this.staticText = "its controller adds two mana in any combination of colors to his or her mana pool"; + } + + public DawnsReflectionManaEffect(final DawnsReflectionManaEffect effect) { + super(effect); + } + + @Override + public DawnsReflectionManaEffect copy() { + return new DawnsReflectionManaEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if(controller != null){ + int x = 2; + + Mana mana = new Mana(); + for(int i = 0; i < x; i++){ + ChoiceColor choiceColor = new ChoiceColor(); + while (!controller.choose(Outcome.Benefit, choiceColor, game)) { + if (!controller.isInGame()) { + return false; + } + } + + 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(); + } + } + + controller.getManaPool().addMana(mana, game, source); + return true; + + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/ninthedition/Overgrowth.java b/Mage.Sets/src/mage/sets/ninthedition/Overgrowth.java new file mode 100644 index 00000000000..1d355687c0e --- /dev/null +++ b/Mage.Sets/src/mage/sets/ninthedition/Overgrowth.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 Overgrowth extends mage.sets.stronghold.Overgrowth { + + public Overgrowth(UUID ownerId) { + super(ownerId); + this.cardNumber = 262; + this.expansionSetCode = "9ED"; + } + + public Overgrowth(final Overgrowth card) { + super(card); + } + + @Override + public Overgrowth copy() { + return new Overgrowth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/odyssey/DesertedTemple.java b/Mage.Sets/src/mage/sets/odyssey/DesertedTemple.java new file mode 100644 index 00000000000..5d9f5478fca --- /dev/null +++ b/Mage.Sets/src/mage/sets/odyssey/DesertedTemple.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.odyssey; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.mana.ColorlessManaAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.common.TargetLandPermanent; + +/** + * + * @author Plopman + */ +public class DesertedTemple extends CardImpl { + + public DesertedTemple(UUID ownerId) { + super(ownerId, 320, "Deserted Temple", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "ODY"; + + // {tap}: Add {1} to your mana pool. + this.addAbility(new ColorlessManaAbility()); + // {1}, {tap}: Untap target land. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new ManaCostsImpl("{1}")); + ability.addCost(new TapSourceCost()); + ability.addTarget(new TargetLandPermanent()); + this.addAbility(ability); + } + + public DesertedTemple(final DesertedTemple card) { + super(card); + } + + @Override + public DesertedTemple copy() { + return new DesertedTemple(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/Overgrowth.java b/Mage.Sets/src/mage/sets/stronghold/Overgrowth.java new file mode 100644 index 00000000000..fcc04c6f7de --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/Overgrowth.java @@ -0,0 +1,148 @@ +/* + * 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.stronghold; + +import java.util.UUID; +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.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +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 Overgrowth extends CardImpl { + + public Overgrowth(UUID ownerId) { + super(ownerId, 61, "Overgrowth", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); + this.expansionSetCode = "STH"; + this.subtype.add("Aura"); + + this.color.setGreen(true); + + // Enchant land + TargetPermanent auraTarget = new TargetLandPermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.AddAbility)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + // Whenever enchanted land is tapped for mana, its controller adds {G}{G} to his or her mana pool. + + this.addAbility(new OvergrowthTriggeredAbility()); + } + + public Overgrowth(final Overgrowth card) { + super(card); + } + + @Override + public Overgrowth copy() { + return new Overgrowth(this); + } +} + +class OvergrowthTriggeredAbility extends TriggeredManaAbility { + + + public OvergrowthTriggeredAbility() { + super(Zone.BATTLEFIELD, new OvergrowthEffect()); + } + + public OvergrowthTriggeredAbility(final OvergrowthTriggeredAbility ability) { + super(ability); + } + + @Override + public OvergrowthTriggeredAbility copy() { + return new OvergrowthTriggeredAbility(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}{G} to his or her mana pool"; + } +} + +class OvergrowthEffect extends ManaEffect { + + public OvergrowthEffect() { + super(); + staticText = "its controller adds {G}{G} to his or her mana pool"; + } + + public OvergrowthEffect(final OvergrowthEffect 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(2), game, source); + return true; + } + } + } + return false; + } + + @Override + public OvergrowthEffect copy() { + return new OvergrowthEffect(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tenth/Overgrowth.java b/Mage.Sets/src/mage/sets/tenth/Overgrowth.java new file mode 100644 index 00000000000..1281dcea5f7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tenth/Overgrowth.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.tenth; + +import java.util.UUID; + +/** + * + * @author Plopman + */ +public class Overgrowth extends mage.sets.stronghold.Overgrowth { + + public Overgrowth(UUID ownerId) { + super(ownerId); + this.cardNumber = 283; + this.expansionSetCode = "10E"; + } + + public Overgrowth(final Overgrowth card) { + super(card); + } + + @Override + public Overgrowth copy() { + return new Overgrowth(this); + } +}