From 6b1fe53fac2f41259e547e4726ba80dce2b38f4e Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 27 Apr 2014 14:35:21 +0200 Subject: [PATCH] Added 8 cards (7 with replicate). --- Mage.Sets/src/mage/sets/apocalypse/Smash.java | 14 +-- .../src/mage/sets/coldsnap/OhranViper.java | 52 +++++++++ .../src/mage/sets/guildpact/Gigadrowse.java | 68 +++++++++++ .../src/mage/sets/guildpact/LeapOfFlame.java | 81 +++++++++++++ .../src/mage/sets/guildpact/Pyromatics.java | 66 +++++++++++ .../mage/sets/guildpact/ShatteringSpree.java | 66 +++++++++++ .../mage/sets/guildpact/SiegeOfTowers.java | 89 +++++++++++++++ .../mage/sets/guildpact/TrainOfThought.java | 64 +++++++++++ .../src/mage/sets/guildpact/Vacuumelt.java | 65 +++++++++++ .../mage/sets/innistrad/SnapcasterMage.java | 1 - Mage.Sets/src/mage/sets/invasion/Zap.java | 2 +- .../mage/sets/jacevsvraska/OhranViper.java | 108 ++++++++++++++++++ .../sets/returntoravnica/SwiftJustice.java | 15 ++- Mage.Sets/src/mage/sets/tenth/Unsummon.java | 2 +- 14 files changed, 678 insertions(+), 15 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/coldsnap/OhranViper.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/Gigadrowse.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/LeapOfFlame.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/Pyromatics.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/ShatteringSpree.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/SiegeOfTowers.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/TrainOfThought.java create mode 100644 Mage.Sets/src/mage/sets/guildpact/Vacuumelt.java create mode 100644 Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java diff --git a/Mage.Sets/src/mage/sets/apocalypse/Smash.java b/Mage.Sets/src/mage/sets/apocalypse/Smash.java index bdbe242b5bc..a195b2069eb 100644 --- a/Mage.Sets/src/mage/sets/apocalypse/Smash.java +++ b/Mage.Sets/src/mage/sets/apocalypse/Smash.java @@ -35,6 +35,7 @@ import mage.abilities.effects.common.DestroyTargetEffect; import mage.abilities.effects.common.DrawCardSourceControllerEffect; import mage.cards.CardImpl; import mage.filter.FilterPermanent; +import mage.filter.common.FilterArtifactPermanent; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.target.TargetPermanent; @@ -43,18 +44,15 @@ import mage.target.TargetPermanent; */ public class Smash extends CardImpl { - private static final FilterPermanent filter = new FilterPermanent("artifact"); - - static { - filter.add(new CardTypePredicate(CardType.ARTIFACT)); - } - public Smash(UUID ownerId) { super(ownerId, 69, "Smash", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{2}{R}"); this.expansionSetCode = "APC"; this.color.setRed(true); - this.getSpellAbility().addEffect(new DestroyTargetEffect()); - this.getSpellAbility().addTarget(new TargetPermanent(filter)); + + // Destroy target artifact. + this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); } diff --git a/Mage.Sets/src/mage/sets/coldsnap/OhranViper.java b/Mage.Sets/src/mage/sets/coldsnap/OhranViper.java new file mode 100644 index 00000000000..95e3bcb5bf9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/coldsnap/OhranViper.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.coldsnap; + +import java.util.UUID; + +/** + * + * @author LevelX2 + */ +public class OhranViper extends mage.sets.jacevsvraska.OhranViper { + + public OhranViper(UUID ownerId) { + super(ownerId); + this.cardNumber = 115; + this.expansionSetCode = "CSP"; + } + + public OhranViper(final OhranViper card) { + super(card); + } + + @Override + public OhranViper copy() { + return new OhranViper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/guildpact/Gigadrowse.java b/Mage.Sets/src/mage/sets/guildpact/Gigadrowse.java new file mode 100644 index 00000000000..de76193eb5c --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/Gigadrowse.java @@ -0,0 +1,68 @@ +/* + * 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.guildpact; + +import java.util.UUID; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.TapTargetEffect; +import mage.abilities.keyword.FlashbackAbility; +import mage.abilities.keyword.ReplicateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.TimingRule; +import mage.target.TargetPermanent; + +/** + * + * @author LevelX2 + */ +public class Gigadrowse extends CardImpl { + + public Gigadrowse(UUID ownerId) { + super(ownerId, 26, "Gigadrowse", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}"); + this.expansionSetCode = "GPT"; + + this.color.setBlue(true); + + // Replicate {U} + this.addAbility(new ReplicateAbility(this, "{U}")); + // Tap target permanent. + this.getSpellAbility().addEffect(new TapTargetEffect()); + this.getSpellAbility().addTarget(new TargetPermanent(true)); + } + + public Gigadrowse(final Gigadrowse card) { + super(card); + } + + @Override + public Gigadrowse copy() { + return new Gigadrowse(this); + } +} diff --git a/Mage.Sets/src/mage/sets/guildpact/LeapOfFlame.java b/Mage.Sets/src/mage/sets/guildpact/LeapOfFlame.java new file mode 100644 index 00000000000..af4489c10c2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/LeapOfFlame.java @@ -0,0 +1,81 @@ +/* + * 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.guildpact; + +import java.util.UUID; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continious.BoostTargetEffect; +import mage.abilities.effects.common.continious.GainAbilityTargetEffect; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.ReplicateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class LeapOfFlame extends CardImpl { + + public LeapOfFlame(UUID ownerId) { + super(ownerId, 121, "Leap of Flame", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}{R}"); + this.expansionSetCode = "GPT"; + + this.color.setRed(true); + this.color.setBlue(true); + + // Replicate {U}{R} + this.addAbility(new ReplicateAbility(this, "{U}{R}")); + // Target creature gets +1/+0 and gains flying and first strike until end of turn. + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); + Effect effect = new BoostTargetEffect(1,0,Duration.EndOfTurn); + effect.setText("Target creature gets +1/+0"); + this.getSpellAbility().addEffect(effect); + effect = new GainAbilityTargetEffect(FlyingAbility.getInstance(), Duration.EndOfTurn); + effect.setText("and gains flying"); + this.getSpellAbility().addEffect(effect); + effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); + effect.setText("and first strike until end of turn"); + this.getSpellAbility().addEffect(effect); + + + } + + public LeapOfFlame(final LeapOfFlame card) { + super(card); + } + + @Override + public LeapOfFlame copy() { + return new LeapOfFlame(this); + } +} diff --git a/Mage.Sets/src/mage/sets/guildpact/Pyromatics.java b/Mage.Sets/src/mage/sets/guildpact/Pyromatics.java new file mode 100644 index 00000000000..e1f7c998c0a --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/Pyromatics.java @@ -0,0 +1,66 @@ +/* + * 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.guildpact; + +import java.util.UUID; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.ReplicateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author LevelX2 + */ +public class Pyromatics extends CardImpl { + + public Pyromatics(UUID ownerId) { + super(ownerId, 72, "Pyromatics", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); + this.expansionSetCode = "GPT"; + + this.color.setRed(true); + + // Replicate {1}{R} + this.addAbility(new ReplicateAbility(this, "{1}{R}")); + // Pyromatics deals 1 damage to target creature or player. + this.getSpellAbility().addEffect(new DamageTargetEffect(1)); + this.getSpellAbility().addTarget(new TargetCreatureOrPlayer(true)); + + } + + public Pyromatics(final Pyromatics card) { + super(card); + } + + @Override + public Pyromatics copy() { + return new Pyromatics(this); + } +} diff --git a/Mage.Sets/src/mage/sets/guildpact/ShatteringSpree.java b/Mage.Sets/src/mage/sets/guildpact/ShatteringSpree.java new file mode 100644 index 00000000000..48a0eb07bb8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/ShatteringSpree.java @@ -0,0 +1,66 @@ +/* + * 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.guildpact; + +import java.util.UUID; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.keyword.ReplicateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterArtifactPermanent; +import mage.target.TargetPermanent; + +/** + * + * @author LevelX2 + */ +public class ShatteringSpree extends CardImpl { + + public ShatteringSpree(UUID ownerId) { + super(ownerId, 75, "Shattering Spree", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{R}"); + this.expansionSetCode = "GPT"; + + this.color.setRed(true); + + // Replicate {R} + this.addAbility(new ReplicateAbility(this, "{R}")); + // Destroy target artifact. + this.getSpellAbility().addEffect(new DestroyTargetEffect(true)); + this.getSpellAbility().addTarget(new TargetPermanent(new FilterArtifactPermanent())); + } + + public ShatteringSpree(final ShatteringSpree card) { + super(card); + } + + @Override + public ShatteringSpree copy() { + return new ShatteringSpree(this); + } +} diff --git a/Mage.Sets/src/mage/sets/guildpact/SiegeOfTowers.java b/Mage.Sets/src/mage/sets/guildpact/SiegeOfTowers.java new file mode 100644 index 00000000000..badb1f0ac8e --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/SiegeOfTowers.java @@ -0,0 +1,89 @@ +/* + * 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.guildpact; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continious.BecomesCreatureTargetEffect; +import mage.abilities.keyword.ReplicateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.game.permanent.token.Token; +import mage.target.TargetPermanent; + +/** + * + * @author LevelX2 + */ +public class SiegeOfTowers extends CardImpl { + + private static final FilterLandPermanent filter = new FilterLandPermanent("Mountain"); + + static { + filter.add(new SubtypePredicate("Mountain")); + } + + public SiegeOfTowers(UUID ownerId) { + super(ownerId, 76, "Siege of Towers", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{1}{R}"); + this.expansionSetCode = "GPT"; + + this.color.setRed(true); + + // Replicate {1}{R} + this.addAbility(new ReplicateAbility(this, "{1}{R}")); + // Target Mountain becomes a 3/1 creature. It's still a land. + Effect effect = new BecomesCreatureTargetEffect(new SiegeOfTowersToken(), "land", Duration.EndOfGame); + effect.setText("Target Mountain becomes a 3/1 creature. It's still a land"); + this.getSpellAbility().addEffect(effect); + this.getSpellAbility().addTarget(new TargetPermanent(filter, true)); + + } + + public SiegeOfTowers(final SiegeOfTowers card) { + super(card); + } + + @Override + public SiegeOfTowers copy() { + return new SiegeOfTowers(this); + } +} + +class SiegeOfTowersToken extends Token { + public SiegeOfTowersToken() { + super("", "3/1 creature"); + cardType.add(CardType.CREATURE); + power = new MageInt(3); + toughness = new MageInt(1); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/guildpact/TrainOfThought.java b/Mage.Sets/src/mage/sets/guildpact/TrainOfThought.java new file mode 100644 index 00000000000..12be8774cee --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/TrainOfThought.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.guildpact; + +import java.util.UUID; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.keyword.ReplicateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class TrainOfThought extends CardImpl { + + public TrainOfThought(UUID ownerId) { + super(ownerId, 39, "Train of Thought", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{1}{U}"); + this.expansionSetCode = "GPT"; + + this.color.setBlue(true); + + // Replicate {1}{U} + this.addAbility(new ReplicateAbility(this, "{1}{U}")); + + // Draw a card. + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + } + + public TrainOfThought(final TrainOfThought card) { + super(card); + } + + @Override + public TrainOfThought copy() { + return new TrainOfThought(this); + } +} diff --git a/Mage.Sets/src/mage/sets/guildpact/Vacuumelt.java b/Mage.Sets/src/mage/sets/guildpact/Vacuumelt.java new file mode 100644 index 00000000000..6414c716129 --- /dev/null +++ b/Mage.Sets/src/mage/sets/guildpact/Vacuumelt.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.guildpact; + +import java.util.UUID; +import mage.abilities.effects.common.ReturnToHandTargetEffect; +import mage.abilities.keyword.ReplicateAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class Vacuumelt extends CardImpl { + + public Vacuumelt(UUID ownerId) { + super(ownerId, 40, "Vacuumelt", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{U}"); + this.expansionSetCode = "GPT"; + + this.color.setBlue(true); + + // Replicate {2}{U} + this.addAbility(new ReplicateAbility(this, "{2}{U}")); + // Return target creature to its owner's hand. + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); + this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); + } + + public Vacuumelt(final Vacuumelt card) { + super(card); + } + + @Override + public Vacuumelt copy() { + return new Vacuumelt(this); + } +} diff --git a/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java b/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java index 0a8a003164b..d50a711cb3b 100644 --- a/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java +++ b/Mage.Sets/src/mage/sets/innistrad/SnapcasterMage.java @@ -47,7 +47,6 @@ import mage.filter.FilterCard; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.CardTypePredicate; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.target.common.TargetCardInYourGraveyard; /** diff --git a/Mage.Sets/src/mage/sets/invasion/Zap.java b/Mage.Sets/src/mage/sets/invasion/Zap.java index d71279caacd..21d27273a71 100644 --- a/Mage.Sets/src/mage/sets/invasion/Zap.java +++ b/Mage.Sets/src/mage/sets/invasion/Zap.java @@ -49,7 +49,7 @@ public class Zap extends CardImpl { // Zap deals 1 damage to target creature or player. this.getSpellAbility().addEffect(new DamageTargetEffect(1)); - this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); + this.getSpellAbility().addTarget(new TargetCreatureOrPlayer(true)); // Draw a card. this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); } diff --git a/Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java b/Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java new file mode 100644 index 00000000000..665bdb3ca0c --- /dev/null +++ b/Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java @@ -0,0 +1,108 @@ +/* + * 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.jacevsvraska; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DealsCombatDamageToACreatureTriggeredAbility; +import mage.abilities.common.DealsCombatDamageToAPlayerTriggeredAbility; +import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.targetpointer.FixedTarget; + +/** + * + * @author LevelX2 + */ +public class OhranViper extends CardImpl { + + public OhranViper(UUID ownerId) { + super(ownerId, 57, "Ohran Viper", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); + this.expansionSetCode = "DDM"; + this.supertype.add("Snow"); + this.subtype.add("Snake"); + + this.color.setGreen(true); + this.power = new MageInt(1); + this.toughness = new MageInt(3); + + // Whenever Ohran Viper deals combat damage to a creature, destroy that creature at end of combat. + this.addAbility(new DealsCombatDamageToACreatureTriggeredAbility(new OhranViperDestroyEffect(), false, true)); + // Whenever Ohran Viper deals combat damage to a player, you may draw a card. + this.addAbility(new DealsCombatDamageToAPlayerTriggeredAbility(new DrawCardSourceControllerEffect(1), false)); + } + + public OhranViper(final OhranViper card) { + super(card); + } + + @Override + public OhranViper copy() { + return new OhranViper(this); + } +} + +class OhranViperDestroyEffect extends OneShotEffect { + + OhranViperDestroyEffect() { + super(Outcome.DestroyPermanent); + staticText = "destroy that creature at end of combat"; + } + + OhranViperDestroyEffect(final OhranViperDestroyEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent targetCreature = game.getPermanent(this.getTargetPointer().getFirst(game, source)); + if (targetCreature != null) { + AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); + delayedAbility.setSourceId(source.getSourceId()); + delayedAbility.setControllerId(source.getControllerId()); + delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(targetCreature.getId())); + game.addDelayedTriggeredAbility(delayedAbility); + return true; + } + return false; + } + + @Override + public OhranViperDestroyEffect copy() { + return new OhranViperDestroyEffect(this); + } +} diff --git a/Mage.Sets/src/mage/sets/returntoravnica/SwiftJustice.java b/Mage.Sets/src/mage/sets/returntoravnica/SwiftJustice.java index 099094823c4..4481408a378 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/SwiftJustice.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/SwiftJustice.java @@ -29,6 +29,7 @@ package mage.sets.returntoravnica; import java.util.UUID; +import mage.abilities.effects.Effect; import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Rarity; @@ -51,10 +52,16 @@ public class SwiftJustice extends CardImpl { this.color.setWhite(true); // Until end of turn, target creature gets +1/+0 and gains first strike and lifelink. - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); - this.getSpellAbility().addEffect(new BoostTargetEffect(1,0,Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn)); - this.getSpellAbility().addEffect(new GainAbilityTargetEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); + Effect effect = new BoostTargetEffect(1,0,Duration.EndOfTurn); + effect.setText("Until end of turn, target creature gets +1/+0"); + this.getSpellAbility().addEffect(effect); + effect = new GainAbilityTargetEffect(FirstStrikeAbility.getInstance(), Duration.EndOfTurn); + effect.setText("and gains first strike"); + this.getSpellAbility().addEffect(effect); + effect = new GainAbilityTargetEffect(LifelinkAbility.getInstance(), Duration.EndOfTurn); + effect.setText("and lifelink"); + this.getSpellAbility().addEffect(effect); } public SwiftJustice(final SwiftJustice card) { diff --git a/Mage.Sets/src/mage/sets/tenth/Unsummon.java b/Mage.Sets/src/mage/sets/tenth/Unsummon.java index af6c432b45a..3fe7bea8d41 100644 --- a/Mage.Sets/src/mage/sets/tenth/Unsummon.java +++ b/Mage.Sets/src/mage/sets/tenth/Unsummon.java @@ -45,7 +45,7 @@ public class Unsummon extends CardImpl { super(ownerId, 122, "Unsummon", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{U}"); this.expansionSetCode = "10E"; this.color.setBlue(true); - this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(true)); this.getSpellAbility().addEffect(new ReturnToHandTargetEffect()); }