diff --git a/Mage.Sets/src/mage/sets/futuresight/HorizonCanopy.java b/Mage.Sets/src/mage/sets/futuresight/HorizonCanopy.java new file mode 100644 index 0000000000..e139da914d --- /dev/null +++ b/Mage.Sets/src/mage/sets/futuresight/HorizonCanopy.java @@ -0,0 +1,77 @@ +/* + * 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.futuresight; + +import java.util.UUID; +import mage.Constants; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.PayLifeCost; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.DrawCardControllerEffect; +import mage.abilities.mana.GreenManaAbility; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class HorizonCanopy extends CardImpl { + + public HorizonCanopy(UUID ownerId) { + super(ownerId, 177, "Horizon Canopy", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "FUT"; + + // {tap}, Pay 1 life: Add {G} or {W} to your mana pool. + Ability ability1 = new GreenManaAbility(); + ability1.addCost(new PayLifeCost(1)); + this.addAbility(ability1); + Ability ability2 = new WhiteManaAbility(); + ability2.addCost(new PayLifeCost(1)); + this.addAbility(ability2); + // {1}, {tap}, Sacrifice Horizon Canopy: Draw a card. + Ability ability = new SimpleActivatedAbility(Constants.Zone.BATTLEFIELD, new DrawCardControllerEffect(1), new GenericManaCost(1)); + ability.addCost(new TapSourceCost()); + ability.addCost(new SacrificeSourceCost()); + this.addAbility(ability); + } + + public HorizonCanopy(final HorizonCanopy card) { + super(card); + } + + @Override + public HorizonCanopy copy() { + return new HorizonCanopy(this); + } +} diff --git a/Mage.Sets/src/mage/sets/futuresight/NewBenalia.java b/Mage.Sets/src/mage/sets/futuresight/NewBenalia.java new file mode 100644 index 0000000000..28ff795566 --- /dev/null +++ b/Mage.Sets/src/mage/sets/futuresight/NewBenalia.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.futuresight; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.ScryEffect; +import mage.abilities.mana.WhiteManaAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class NewBenalia extends CardImpl { + + public NewBenalia(UUID ownerId) { + super(ownerId, 172, "New Benalia", Rarity.UNCOMMON, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "FUT"; + + // New Benalia enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + // When New Benalia enters the battlefield, scry 1. + this.addAbility(new EntersBattlefieldTriggeredAbility(new ScryEffect(1))); + // {tap}: Add {W} to your mana pool. + this.addAbility(new WhiteManaAbility()); + } + + public NewBenalia(final NewBenalia card) { + super(card); + } + + @Override + public NewBenalia copy() { + return new NewBenalia(this); + } +} diff --git a/Mage.Sets/src/mage/sets/futuresight/TolariaWest.java b/Mage.Sets/src/mage/sets/futuresight/TolariaWest.java new file mode 100644 index 0000000000..2c73462a82 --- /dev/null +++ b/Mage.Sets/src/mage/sets/futuresight/TolariaWest.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.futuresight; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.abilities.common.EntersBattlefieldTappedAbility; +import mage.abilities.keyword.TransmuteAbility; +import mage.abilities.mana.BlueManaAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class TolariaWest extends CardImpl { + + public TolariaWest(UUID ownerId) { + super(ownerId, 173, "Tolaria West", Rarity.UNCOMMON, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "FUT"; + + // Tolaria West enters the battlefield tapped. + this.addAbility(new EntersBattlefieldTappedAbility()); + // {tap}: Add {U} to your mana pool. + this.addAbility(new BlueManaAbility()); + // Transmute {1}{U}{U} + this.addAbility(new TransmuteAbility("{1}{U}{U}")); + } + + public TolariaWest(final TolariaWest card) { + super(card); + } + + @Override + public TolariaWest copy() { + return new TolariaWest(this); + } +} diff --git a/Mage.Sets/src/mage/sets/lorwyn/CrypticCommand.java b/Mage.Sets/src/mage/sets/lorwyn/CrypticCommand.java new file mode 100644 index 0000000000..e0b3398fdd --- /dev/null +++ b/Mage.Sets/src/mage/sets/lorwyn/CrypticCommand.java @@ -0,0 +1,167 @@ +/* + * 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.lorwyn; + +import java.util.List; +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Outcome; +import mage.Constants.Rarity; +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CounterTargetEffect; +import mage.abilities.effects.common.DrawCardControllerEffect; +import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.ControllerIdPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.TargetPlayer; +import mage.target.TargetSpell; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author jonubuu + */ +public class CrypticCommand extends CardImpl { + + public CrypticCommand(UUID ownerId) { + super(ownerId, 56, "Cryptic Command", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{1}{U}{U}{U}"); + this.expansionSetCode = "LRW"; + + this.color.setBlue(true); + + // Choose two - Counter target spell; or return target permanent to its owner's hand; or tap all creatures your opponents control; or draw a card. + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetSpell()); + this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); + this.getSpellAbility().addEffect(new CounterSecondTargetEffect()); + + Mode mode1 = new Mode(); + mode1.getTargets().add(new TargetSpell()); + mode1.getEffects().add(new CounterTargetEffect()); + mode1.getEffects().add(new CrypticCommandEffect()); + this.getSpellAbility().addMode(mode1); + + Mode mode2 = new Mode(); + mode2.getTargets().add(new TargetSpell()); + mode2.getEffects().add(new CounterTargetEffect()); + mode2.getEffects().add(new DrawCardControllerEffect(1)); + this.getSpellAbility().addMode(mode2); + + Mode mode3 = new Mode(); + mode3.getTargets().add(new TargetCreaturePermanent()); + mode3.getEffects().add(new ReturnToHandTargetEffect()); + mode3.getEffects().add(new CrypticCommandEffect()); + this.getSpellAbility().addMode(mode3); + + Mode mode4 = new Mode(); + mode4.getTargets().add(new TargetCreaturePermanent()); + mode4.getEffects().add(new ReturnToHandTargetEffect()); + mode4.getEffects().add(new DrawCardControllerEffect(1)); + this.getSpellAbility().addMode(mode4); + + Mode mode5 = new Mode(); + mode5.getTargets().add(new TargetPlayer()); + mode5.getEffects().add(new CrypticCommandEffect()); + mode5.getEffects().add(new DrawCardControllerEffect(1)); + this.getSpellAbility().addMode(mode5); + } + + public CrypticCommand(final CrypticCommand card) { + super(card); + } + + @Override + public CrypticCommand copy() { + return new CrypticCommand(this); + } +} + +class CrypticCommandEffect extends OneShotEffect { + + public CrypticCommandEffect() { + super(Outcome.Tap); + staticText = "tap all creatures your opponents control"; + } + + public CrypticCommandEffect(final CrypticCommandEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Player player = game.getPlayer(source.getControllerId()); + if (player == null) { + return false; + } + + for (UUID playerId : player.getInRange()) { + FilterCreaturePermanent filter = new FilterCreaturePermanent(); + filter.add(new ControllerIdPredicate(playerId)); + + List creatures = game.getBattlefield().getActivePermanents(filter, player.getId(), source.getSourceId(), game); + for (Permanent creature : creatures) { + creature.tap(game); + } + } + + return true; + } + + @Override + public CrypticCommandEffect copy() { + return new CrypticCommandEffect(this); + } +} + +class CounterSecondTargetEffect extends OneShotEffect { + + public CounterSecondTargetEffect() { + super(Outcome.Detriment); + this.staticText = "counter target spell"; + } + + public CounterSecondTargetEffect(final CounterSecondTargetEffect effect) { + super(effect); + } + + @Override + public CounterSecondTargetEffect copy() { + return new CounterSecondTargetEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return game.getStack().counter(source.getTargets().get(1).getFirstTarget(), source.getSourceId(), game); + } +} diff --git a/Mage.Sets/src/mage/sets/morningtide/Mutavault.java b/Mage.Sets/src/mage/sets/morningtide/Mutavault.java new file mode 100644 index 0000000000..59dac3c108 --- /dev/null +++ b/Mage.Sets/src/mage/sets/morningtide/Mutavault.java @@ -0,0 +1,82 @@ +/* + * 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.morningtide; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continious.BecomesCreatureSourceEffect; +import mage.abilities.keyword.ChangelingAbility; +import mage.abilities.mana.ColorlessManaAbility; +import mage.cards.CardImpl; +import mage.game.permanent.token.Token; + +/** + * + * @author jonubuu + */ +public class Mutavault extends CardImpl { + + public Mutavault(UUID ownerId) { + super(ownerId, 148, "Mutavault", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "MOR"; + + // {tap}: Add {1} to your mana pool. + this.addAbility(new ColorlessManaAbility()); + // {1}: Mutavault becomes a 2/2 creature with all creature types until end of turn. It's still a land. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, + new BecomesCreatureSourceEffect(new MutavaultToken(), "land", Duration.EndOfTurn), + new ManaCostsImpl("{1}"))); + } + + public Mutavault(final Mutavault card) { + super(card); + } + + @Override + public Mutavault copy() { + return new Mutavault(this); + } +} + +class MutavaultToken extends Token { + + public MutavaultToken() { + super("", "2/2 creature with all creature types"); + cardType.add(CardType.CREATURE); + subtype.add("Changling"); + power = new MageInt(2); + toughness = new MageInt(2); + this.addAbility(ChangelingAbility.getInstance()); + } +} diff --git a/Mage.Sets/src/mage/sets/onslaught/BloodstainedMire.java b/Mage.Sets/src/mage/sets/onslaught/BloodstainedMire.java new file mode 100644 index 0000000000..5fe48858fd --- /dev/null +++ b/Mage.Sets/src/mage/sets/onslaught/BloodstainedMire.java @@ -0,0 +1,58 @@ +/* + * 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.FetchLandActivatedAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class BloodstainedMire extends CardImpl { + + public BloodstainedMire(UUID ownerId) { + super(ownerId, 313, "Bloodstained Mire", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "ONS"; + + // {tap}, Pay 1 life, Sacrifice Bloodstained Mire: Search your library for a Swamp or Mountain card and put it onto the battlefield. Then shuffle your library. + this.addAbility(new FetchLandActivatedAbility(new String[]{"Swamp", "Mountain"})); + } + + public BloodstainedMire(final BloodstainedMire card) { + super(card); + } + + @Override + public BloodstainedMire copy() { + return new BloodstainedMire(this); + } +} diff --git a/Mage.Sets/src/mage/sets/onslaught/FloodedStrand.java b/Mage.Sets/src/mage/sets/onslaught/FloodedStrand.java new file mode 100644 index 0000000000..3ab7cd091d --- /dev/null +++ b/Mage.Sets/src/mage/sets/onslaught/FloodedStrand.java @@ -0,0 +1,58 @@ +/* + * 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.FetchLandActivatedAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class FloodedStrand extends CardImpl { + + public FloodedStrand(UUID ownerId) { + super(ownerId, 316, "Flooded Strand", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "ONS"; + + // {tap}, Pay 1 life, Sacrifice Flooded Strand: Search your library for a Plains or Island card and put it onto the battlefield. Then shuffle your library. + this.addAbility(new FetchLandActivatedAbility(new String[]{"Plains", "Island"})); + } + + public FloodedStrand(final FloodedStrand card) { + super(card); + } + + @Override + public FloodedStrand copy() { + return new FloodedStrand(this); + } +} diff --git a/Mage.Sets/src/mage/sets/onslaught/PollutedDelta.java b/Mage.Sets/src/mage/sets/onslaught/PollutedDelta.java new file mode 100644 index 0000000000..e60e1a94fc --- /dev/null +++ b/Mage.Sets/src/mage/sets/onslaught/PollutedDelta.java @@ -0,0 +1,58 @@ +/* + * 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.FetchLandActivatedAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class PollutedDelta extends CardImpl { + + public PollutedDelta(UUID ownerId) { + super(ownerId, 321, "Polluted Delta", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "ONS"; + + // {tap}, Pay 1 life, Sacrifice Polluted Delta: Search your library for an Island or Swamp card and put it onto the battlefield. Then shuffle your library. + this.addAbility(new FetchLandActivatedAbility(new String[]{"Island", "Swamp"})); + } + + public PollutedDelta(final PollutedDelta card) { + super(card); + } + + @Override + public PollutedDelta copy() { + return new PollutedDelta(this); + } +} diff --git a/Mage.Sets/src/mage/sets/onslaught/WindsweptHeath.java b/Mage.Sets/src/mage/sets/onslaught/WindsweptHeath.java new file mode 100644 index 0000000000..847b8f67d6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/onslaught/WindsweptHeath.java @@ -0,0 +1,58 @@ +/* + * 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.FetchLandActivatedAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class WindsweptHeath extends CardImpl { + + public WindsweptHeath(UUID ownerId) { + super(ownerId, 328, "Windswept Heath", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "ONS"; + + // {tap}, Pay 1 life, Sacrifice Windswept Heath: Search your library for a Forest or Plains card and put it onto the battlefield. Then shuffle your library. + this.addAbility(new FetchLandActivatedAbility(new String[]{"Forest", "Plains"})); + } + + public WindsweptHeath(final WindsweptHeath card) { + super(card); + } + + @Override + public WindsweptHeath copy() { + return new WindsweptHeath(this); + } +} diff --git a/Mage.Sets/src/mage/sets/onslaught/WoodedFoothills.java b/Mage.Sets/src/mage/sets/onslaught/WoodedFoothills.java new file mode 100644 index 0000000000..3830e9d59c --- /dev/null +++ b/Mage.Sets/src/mage/sets/onslaught/WoodedFoothills.java @@ -0,0 +1,58 @@ +/* + * 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.FetchLandActivatedAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class WoodedFoothills extends CardImpl { + + public WoodedFoothills(UUID ownerId) { + super(ownerId, 330, "Wooded Foothills", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "ONS"; + + // {tap}, Pay 1 life, Sacrifice Wooded Foothills: Search your library for a Mountain or Forest card and put it onto the battlefield. Then shuffle your library. + this.addAbility(new FetchLandActivatedAbility(new String[]{"Mountain", "Forest"})); + } + + public WoodedFoothills(final WoodedFoothills card) { + super(card); + } + + @Override + public WoodedFoothills copy() { + return new WoodedFoothills(this); + } +} diff --git a/Mage.Sets/src/mage/sets/planechase/RelicOfProgenitus.java b/Mage.Sets/src/mage/sets/planechase/RelicOfProgenitus.java new file mode 100644 index 0000000000..1f7cf418d9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/planechase/RelicOfProgenitus.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.planechase; + +import java.util.UUID; + +/** + * + * @author jonubuu + */ +public class RelicOfProgenitus extends mage.sets.shardsofalara.RelicOfProgenitus { + + public RelicOfProgenitus(UUID ownerId) { + super(ownerId); + this.cardNumber = 124; + this.expansionSetCode = "HOP"; + } + + public RelicOfProgenitus(final RelicOfProgenitus card) { + super(card); + } + + @Override + public RelicOfProgenitus copy() { + return new RelicOfProgenitus(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ravnika/EtherealUsher.java b/Mage.Sets/src/mage/sets/ravnika/EtherealUsher.java new file mode 100644 index 0000000000..e268b5721c --- /dev/null +++ b/Mage.Sets/src/mage/sets/ravnika/EtherealUsher.java @@ -0,0 +1,80 @@ +/* + * 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.ravnika; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Duration; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.MageInt; +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.continious.GainAbilityTargetEffect; +import mage.abilities.keyword.TransmuteAbility; +import mage.abilities.keyword.UnblockableAbility; +import mage.cards.CardImpl; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author jonubuu + */ +public class EtherealUsher extends CardImpl { + + public EtherealUsher(UUID ownerId) { + super(ownerId, 47, "Ethereal Usher", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{5}{U}"); + this.expansionSetCode = "RAV"; + this.subtype.add("Spirit"); + + this.color.setBlue(true); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // {U}, {tap}: Target creature is unblockable this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, + new GainAbilityTargetEffect(UnblockableAbility.getInstance(), Duration.EndOfTurn), + new ManaCostsImpl("{U}")); + ability.addCost(new TapSourceCost()); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + // Transmute {1}{U}{U} + this.addAbility(new TransmuteAbility("{1}{U}{U}")); + } + + public EtherealUsher(final EtherealUsher card) { + super(card); + } + + @Override + public EtherealUsher copy() { + return new EtherealUsher(this); + } +} diff --git a/Mage.Sets/src/mage/sets/shadowmoor/MysticGate.java b/Mage.Sets/src/mage/sets/shadowmoor/MysticGate.java new file mode 100644 index 0000000000..250128b07c --- /dev/null +++ b/Mage.Sets/src/mage/sets/shadowmoor/MysticGate.java @@ -0,0 +1,75 @@ +/* + * 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.shadowmoor; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.Mana; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.mana.ColorlessManaAbility; +import mage.abilities.mana.SimpleManaAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class MysticGate extends CardImpl { + + public MysticGate(UUID ownerId) { + super(ownerId, 277, "Mystic Gate", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "SHM"; + + // {tap}: Add {1} to your mana pool. + this.addAbility(new ColorlessManaAbility()); + // {WU}, {tap}: Add {W}{W}, {W}{U}, or {U}{U} to your mana pool. + SimpleManaAbility ability = new SimpleManaAbility(Zone.BATTLEFIELD, Mana.WhiteMana(2), new ManaCostsImpl("{W/U}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + ability = new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0, 0, 1, 1, 0, 0, 0), new ManaCostsImpl("{W/U}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + ability = new SimpleManaAbility(Zone.BATTLEFIELD, Mana.BlueMana(2), new ManaCostsImpl("{W/U}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + public MysticGate(final MysticGate card) { + super(card); + } + + @Override + public MysticGate copy() { + return new MysticGate(this); + } +} diff --git a/Mage.Sets/src/mage/sets/shadowmoor/SunkenRuins.java b/Mage.Sets/src/mage/sets/shadowmoor/SunkenRuins.java new file mode 100644 index 0000000000..5f0e40aeb9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/shadowmoor/SunkenRuins.java @@ -0,0 +1,75 @@ +/* + * 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.shadowmoor; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.Mana; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.mana.ColorlessManaAbility; +import mage.abilities.mana.SimpleManaAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class SunkenRuins extends CardImpl { + + public SunkenRuins(UUID ownerId) { + super(ownerId, 280, "Sunken Ruins", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "SHM"; + + // {tap}: Add {1} to your mana pool. + this.addAbility(new ColorlessManaAbility()); + // {UB}, {tap}: Add {U}{U}, {U}{B}, or {B}{B} to your mana pool. + SimpleManaAbility ability = new SimpleManaAbility(Zone.BATTLEFIELD, Mana.BlueMana(2), new ManaCostsImpl("{U/B}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + ability = new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0, 0, 1, 0, 1, 0, 0), new ManaCostsImpl("{U/B}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + ability = new SimpleManaAbility(Zone.BATTLEFIELD, Mana.BlackMana(2), new ManaCostsImpl("{U/B}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + public SunkenRuins(final SunkenRuins card) { + super(card); + } + + @Override + public SunkenRuins copy() { + return new SunkenRuins(this); + } +} diff --git a/Mage.Sets/src/mage/sets/shadowmoor/WoodedBastion.java b/Mage.Sets/src/mage/sets/shadowmoor/WoodedBastion.java new file mode 100644 index 0000000000..4e95451e39 --- /dev/null +++ b/Mage.Sets/src/mage/sets/shadowmoor/WoodedBastion.java @@ -0,0 +1,75 @@ +/* + * 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.shadowmoor; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.Zone; +import mage.Mana; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.mana.ColorlessManaAbility; +import mage.abilities.mana.SimpleManaAbility; +import mage.cards.CardImpl; + +/** + * + * @author jonubuu + */ +public class WoodedBastion extends CardImpl { + + public WoodedBastion(UUID ownerId) { + super(ownerId, 281, "Wooded Bastion", Rarity.RARE, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "SHM"; + + // {tap}: Add {1} to your mana pool. + this.addAbility(new ColorlessManaAbility()); + // {GW}, {tap}: Add {G}{G}, {G}{W}, or {W}{W} to your mana pool. + SimpleManaAbility ability = new SimpleManaAbility(Zone.BATTLEFIELD, Mana.GreenMana(2), new ManaCostsImpl("{G/W}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + ability = new SimpleManaAbility(Zone.BATTLEFIELD, new Mana(0, 1, 0, 1, 0, 0, 0), new ManaCostsImpl("{G/W}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + + ability = new SimpleManaAbility(Zone.BATTLEFIELD, Mana.WhiteMana(2), new ManaCostsImpl("{G/W}")); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + public WoodedBastion(final WoodedBastion card) { + super(card); + } + + @Override + public WoodedBastion copy() { + return new WoodedBastion(this); + } +} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/JundCharm.java b/Mage.Sets/src/mage/sets/shardsofalara/JundCharm.java new file mode 100644 index 0000000000..b5c8f11d67 --- /dev/null +++ b/Mage.Sets/src/mage/sets/shardsofalara/JundCharm.java @@ -0,0 +1,112 @@ +/* + * 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.shardsofalara; + +import java.util.ArrayList; +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.Mode; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.counters.CounterType; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetPlayer; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author jonubuu + */ +public class JundCharm extends CardImpl { + + public JundCharm(UUID ownerId) { + super(ownerId, 175, "Jund Charm", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{B}{R}{G}"); + this.expansionSetCode = "ALA"; + + this.color.setRed(true); + this.color.setGreen(true); + this.color.setBlack(true); + + // Choose one - Exile all cards from target player's graveyard; + this.getSpellAbility().addEffect(new JundCharmEffect()); + this.getSpellAbility().addTarget(new TargetPlayer()); + // or Jund Charm deals 2 damage to each creature; + Mode mode = new Mode(); + mode.getEffects().add(new DamageAllEffect(2, new FilterCreaturePermanent())); + this.getSpellAbility().addMode(mode); + // or put two +1/+1 counters on target creature. + mode = new Mode(); + mode.getEffects().add(new AddCountersTargetEffect(CounterType.P1P1.createInstance(2), Constants.Outcome.BoostCreature)); + mode.getTargets().add(new TargetCreaturePermanent()); + this.getSpellAbility().addMode(mode); + } + + public JundCharm(final JundCharm card) { + super(card); + } + + @Override + public JundCharm copy() { + return new JundCharm(this); + } +} + +class JundCharmEffect extends OneShotEffect { + + public JundCharmEffect() { + super(Outcome.Exile); + staticText = "Exile all cards from target player's graveyard"; + } + + @Override + public JundCharmEffect copy() { + return new JundCharmEffect(); + } + + @Override + public boolean apply(Game game, Ability source) { + Player targetPlayer = game.getPlayer(source.getFirstTarget()); + if (targetPlayer != null) { + ArrayList graveyard = new ArrayList(targetPlayer.getGraveyard()); + for (UUID cardId : graveyard) { + game.getCard(cardId).moveToZone(Zone.EXILED, cardId, game, false); + } + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/shardsofalara/RelicOfProgenitus.java b/Mage.Sets/src/mage/sets/shardsofalara/RelicOfProgenitus.java new file mode 100644 index 0000000000..5a5d9edb0c --- /dev/null +++ b/Mage.Sets/src/mage/sets/shardsofalara/RelicOfProgenitus.java @@ -0,0 +1,151 @@ +/* + * 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.shardsofalara; + +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.common.SacrificeSourceCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DrawCardControllerEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.game.Game; +import mage.players.Player; +import mage.target.TargetPlayer; +import mage.target.common.TargetCardInYourGraveyard; + +/** + * + * @author jonubuu + */ +public class RelicOfProgenitus extends CardImpl { + + public RelicOfProgenitus(UUID ownerId) { + super(ownerId, 218, "Relic of Progenitus", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{1}"); + this.expansionSetCode = "ALA"; + + // {tap}: Target player exiles a card from his or her graveyard. + Ability firstAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RelicOfProgenitusEffect(), new TapSourceCost()); + firstAbility.addTarget(new TargetPlayer()); + this.addAbility(firstAbility); + // {1}, Exile Relic of Progenitus: Exile all cards from all graveyards. Draw a card. + Ability secondAbility = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RelicOfProgenitusEffect2(), new SacrificeSourceCost()); + secondAbility.addEffect(new DrawCardControllerEffect(1)); + this.addAbility(secondAbility); + + } + + public RelicOfProgenitus(final RelicOfProgenitus card) { + super(card); + } + + @Override + public RelicOfProgenitus copy() { + return new RelicOfProgenitus(this); + } +} + +class RelicOfProgenitusEffect extends OneShotEffect { + + public RelicOfProgenitusEffect() { + super(Outcome.Exile); + this.staticText = "Target player exiles a card from his or her graveyard."; + } + + public RelicOfProgenitusEffect(final RelicOfProgenitusEffect effect) { + super(effect); + } + + @Override + public RelicOfProgenitusEffect copy() { + return new RelicOfProgenitusEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player targetPlayer = game.getPlayer(source.getFirstTarget()); + if (targetPlayer != null) { + TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(); + target.setRequired(true); + if (targetPlayer.chooseTarget(Outcome.Exile, target, source, game)) { + Card card = game.getCard(target.getFirstTarget()); + if (card != null) { + targetPlayer.getGraveyard().remove(card); + card.moveToExile(null, null, source.getId(), game); + } + return true; + } + } + return false; + } +} + +class RelicOfProgenitusEffect2 extends OneShotEffect { + + public RelicOfProgenitusEffect2() { + super(Constants.Outcome.Detriment); + staticText = "Exile all cards from all graveyards."; + } + + public RelicOfProgenitusEffect2(final RelicOfProgenitusEffect2 effect) { + super(effect); + } + + @Override + public RelicOfProgenitusEffect2 copy() { + return new RelicOfProgenitusEffect2(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller == null) { + return false; + } + + for (UUID playerId : controller.getInRange()) { + Player player = game.getPlayer(playerId); + if (player != null) { + for (UUID cid : player.getGraveyard().copy()) { + Card card = game.getCard(cid); + if (card != null) { + card.moveToExile(null, null, source.getId(), game); + } + } + } + } + return true; + } +} diff --git a/Mage.Sets/src/mage/sets/timespiral/DreadReturn.java b/Mage.Sets/src/mage/sets/timespiral/DreadReturn.java new file mode 100644 index 0000000000..b6a541631f --- /dev/null +++ b/Mage.Sets/src/mage/sets/timespiral/DreadReturn.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.timespiral; + +import java.util.UUID; +import mage.Constants.CardType; +import mage.Constants.Rarity; +import mage.Constants.TimingRule; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.common.ReturnFromGraveyardToBattlefieldTargetEffect; +import mage.abilities.keyword.FlashbackAbility; +import mage.cards.CardImpl; +import mage.filter.common.FilterCreatureCard; +import mage.target.common.TargetCardInYourGraveyard; +import mage.target.common.TargetControlledCreaturePermanent; + +/** + * + * @author jonubuu + */ +public class DreadReturn extends CardImpl { + + public DreadReturn(UUID ownerId) { + super(ownerId, 104, "Dread Return", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{B}{B}"); + this.expansionSetCode = "TSP"; + + this.color.setBlack(true); + + // Return target creature card from your graveyard to the battlefield. + this.getSpellAbility().addEffect(new ReturnFromGraveyardToBattlefieldTargetEffect()); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(new FilterCreatureCard("creature card from your graveyard"))); + // Flashback-Sacrifice three creatures. + this.addAbility(new FlashbackAbility(new SacrificeTargetCost(new TargetControlledCreaturePermanent(3)), TimingRule.SORCERY)); + } + + public DreadReturn(final DreadReturn card) { + super(card); + } + + @Override + public DreadReturn copy() { + return new DreadReturn(this); + } +}