From 2a2b828870bd6d3da62904b347ede863fb55a535 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 30 Mar 2015 18:42:45 -0300 Subject: [PATCH 001/175] - Added Rith's Charm Also improved string generation for selecting a source of PreventDamageBySourceEffect --- .../phyrexiavsthecoalition/RithsCharm.java | 52 +++++++++++++ .../src/mage/sets/planeshift/RithsCharm.java | 74 +++++++++++++++++++ .../common/PreventDamageBySourceEffect.java | 6 +- 3 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.java create mode 100644 Mage.Sets/src/mage/sets/planeshift/RithsCharm.java diff --git a/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.java b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.java new file mode 100644 index 0000000000..58cd5a3c54 --- /dev/null +++ b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.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.phyrexiavsthecoalition; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class RithsCharm extends mage.sets.planeshift.RithsCharm { + + public RithsCharm(UUID ownerId) { + super(ownerId); + this.cardNumber = 60; + this.expansionSetCode = "DDE"; + } + + public RithsCharm(final RithsCharm card) { + super(card); + } + + @Override + public RithsCharm copy() { + return new RithsCharm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/planeshift/RithsCharm.java b/Mage.Sets/src/mage/sets/planeshift/RithsCharm.java new file mode 100644 index 0000000000..06a9185ac8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/planeshift/RithsCharm.java @@ -0,0 +1,74 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.planeshift; + +import java.util.UUID; +import mage.abilities.Mode; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.PreventDamageBySourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.game.permanent.token.SaprolingToken; +import mage.target.common.TargetNonBasicLandPermanent; + +/** + * + * @author FenrisulfrX + */ +public class RithsCharm extends CardImpl { + + public RithsCharm(UUID ownerId) { + super(ownerId, 122, "Rith's Charm", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{R}{G}{W}"); + this.expansionSetCode = "PLS"; + + // Choose one - Destroy target nonbasic land; + this.getSpellAbility().addEffect(new DestroyTargetEffect()); + this.getSpellAbility().addTarget(new TargetNonBasicLandPermanent()); + + // or put three 1/1 green Saproling creature tokens onto the battlefield; + Mode mode = new Mode(); + mode.getEffects().add(new CreateTokenEffect(new SaprolingToken(), 3)); + this.getSpellAbility().addMode(mode); + + // or prevent all damage a source of your choice would deal this turn. + mode = new Mode(); + mode.getEffects().add(new PreventDamageBySourceEffect()); + this.getSpellAbility().addMode(mode); + } + + public RithsCharm(final RithsCharm card) { + super(card); + } + + @Override + public RithsCharm copy() { + return new RithsCharm(this); + } +} diff --git a/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java b/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java index b3fb6f7777..86eb9f7482 100644 --- a/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java @@ -54,7 +54,11 @@ public class PreventDamageBySourceEffect extends PreventionEffectImpl { public PreventDamageBySourceEffect(FilterObject filterObject) { super(Duration.EndOfTurn); - this.target = new TargetSource(filterObject); + if (filterObject.getMessage().equals("a")) { + this.target = new TargetSource(new FilterObject("source")); + } else { + this.target = new TargetSource(new FilterObject(filterObject.getMessage() + " source")); + } staticText = "Prevent all damage " + filterObject.getMessage() + " source of your choice would deal this turn"; } From b2e132530ebd025ea82c49144aaa6d5eb305cadd Mon Sep 17 00:00:00 2001 From: emerald000 Date: Mon, 30 Mar 2015 17:54:18 -0400 Subject: [PATCH 002/175] DTK Oracle update. --- Utils/mtg-cards-data.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 441cd773e5..d0868c0260 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -8399,7 +8399,7 @@ Cephalid Pathmage|Legions|31|C|{2}{U}|Creature - Cephalid Wizard|1|2|Cephalid Pa Chromeshell Crab|Legions|32|R|{4}{U}|Creature - Crab Beast|3|3|Morph {4}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Chromeshell Crab is turned face up, you may exchange control of target creature you control and target creature an opponent controls.| Covert Operative|Legions|33|C|{4}{U}|Creature - Human Wizard|3|2|Covert Operative is unblockable.| Crookclaw Elder|Legions|34|U|{5}{U}|Creature - Bird Wizard|3|2|Flying$Tap two untapped Birds you control: Draw a card.$Tap two untapped Wizards you control: Target creature gains flying until end of turn.| -Dermoplasm|Legions|35|R|{2}{U}|Creature - Shapeshifter|1|1|Flying$Morph {2}{U}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Dermoplasm is turned face up, you may put a creature card with morph from your hand onto the battlefield face up. If you do, return Dermoplasm to its owner's hand.| +Dermoplasm|Legions|35|R|{2}{U}|Creature - Shapeshifter|1|1|Flying$Morph {2}{U}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Dermoplasm is turned face up, you may put a creature card with a morph ability from your hand onto the battlefield face up. If you do, return Dermoplasm to its owner's hand.| Dreamborn Muse|Legions|36|R|{2}{U}{U}|Creature - Spirit|2|2|At the beginning of each player's upkeep, that player puts the top X cards of his or her library into his or her graveyard, where X is the number of cards in his or her hand.| Echo Tracer|Legions|37|C|{2}{U}|Creature - Human Wizard|2|2|Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Echo Tracer is turned face up, return target creature to its owner's hand.| Fugitive Wizard|Legions|38|C|{U}|Creature - Human Wizard|1|1|| @@ -8408,7 +8408,7 @@ Aven Warhawk|Legions|4|U|{4}{W}|Creature - Bird Soldier|2|2|Amplify 1 (As thi Glintwing Invoker|Legions|40|C|{4}{U}|Creature - Human Wizard Mutant|3|3|{7}{U}: Glintwing Invoker gets +3/+3 and gains flying until end of turn.| Keeneye Aven|Legions|41|C|{3}{U}|Creature - Bird Soldier|2|3|Flying$Cycling {2} ({2}, Discard this card: Draw a card.)| Keeper of the Nine Gales|Legions|42|R|{2}{U}|Creature - Bird Wizard|1|2|Flying${tap}, Tap two untapped Birds you control: Return target permanent to its owner's hand.| -Master of the Veil|Legions|43|U|{2}{U}{U}|Creature - Human Wizard|2|3|Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Master of the Veil is turned face up, you may turn target creature with morph face down.| +Master of the Veil|Legions|43|U|{2}{U}{U}|Creature - Human Wizard|2|3|Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Master of the Veil is turned face up, you may turn target creature with a morph ability face down.| Merchant of Secrets|Legions|44|C|{2}{U}|Creature - Human Wizard|1|1|When Merchant of Secrets enters the battlefield, draw a card.| Mistform Seaswift|Legions|45|C|{3}{U}|Creature - Illusion|3|1|Flying${1}: Mistform Seaswift becomes the creature type of your choice until end of turn.$Morph {1}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Mistform Sliver|Legions|46|C|{1}{U}|Creature - Illusion Sliver|1|1|All Slivers have "{1}: This permanent becomes the creature type of your choice in addition to its other types until end of turn."| @@ -8423,7 +8423,7 @@ Synapse Sliver|Legions|53|R|{4}{U}|Creature - Sliver|3|3|Whenever a Sliver deals Voidmage Apprentice|Legions|54|C|{1}{U}|Creature - Human Wizard|1|1|Morph {2}{U}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Voidmage Apprentice is turned face up, counter target spell.| Wall of Deceit|Legions|55|U|{1}{U}|Creature - Wall|0|5|Defender (This creature can't attack.)${3}: Turn Wall of Deceit face down.$Morph {U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Warped Researcher|Legions|56|U|{4}{U}|Creature - Human Wizard Mutant|3|4|Whenever a player cycles a card, Warped Researcher gains flying and shroud until end of turn. (It can't be the target of spells or abilities.)| -Weaver of Lies|Legions|57|R|{5}{U}{U}|Creature - Beast|4|4|Morph {4}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Weaver of Lies is turned face up, turn any number of target creatures with morph other than Weaver of Lies face down.| +Weaver of Lies|Legions|57|R|{5}{U}{U}|Creature - Beast|4|4|Morph {4}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Weaver of Lies is turned face up, turn any number of target creatures with a morph ability other than Weaver of Lies face down.| Willbender|Legions|58|U|{1}{U}|Creature - Human Wizard|1|2|Morph {1}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Willbender is turned face up, change the target of target spell or ability with a single target.| Aphetto Exterminator|Legions|59|U|{2}{B}|Creature - Human Wizard|3|1|Morph {3}{B} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Aphetto Exterminator is turned face up, target creature gets -3/-3 until end of turn.| Celestial Gatekeeper|Legions|6|R|{3}{W}{W}|Creature - Bird Cleric|2|2|Flying$When Celestial Gatekeeper dies, exile it, then return up to two target Bird and/or Cleric permanent cards from your graveyard to the battlefield.| @@ -14279,7 +14279,7 @@ Artificial Evolution|Onslaught|67|R|{U}|Instant|||Change the text of target spel Ascending Aven|Onslaught|68|C|{2}{U}{U}|Creature - Bird Soldier|3|2|Flying$Ascending Aven can block only creatures with flying.$Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Aven Fateshaper|Onslaught|69|U|{6}{U}|Creature - Bird Wizard|4|5|Flying$When Aven Fateshaper enters the battlefield, look at the top four cards of your library, then put them back in any order.${4}{U}: Look at the top four cards of your library, then put them back in any order.| Aven Brigadier|Onslaught|7|R|{3}{W}{W}{W}|Creature - Bird Soldier|3|5|Flying$Other Bird creatures get +1/+1.$Other Soldier creatures get +1/+1.| -Backslide|Onslaught|70|C|{1}{U}|Instant|||Turn target creature with morph face down.$Cycling {U} ({U}, Discard this card: Draw a card.)| +Backslide|Onslaught|70|C|{1}{U}|Instant|||Turn target creature with a morph ability face down.$Cycling {U} ({U}, Discard this card: Draw a card.)| Blatant Thievery|Onslaught|71|R|{4}{U}{U}{U}|Sorcery|||For each opponent, gain control of target permanent that player controls. (This effect lasts indefinitely.)| Callous Oppressor|Onslaught|72|R|{1}{U}{U}|Creature - Cephalid|1|2|You may choose not to untap Callous Oppressor during your untap step.$As Callous Oppressor enters the battlefield, an opponent chooses a creature type.${tap}: Gain control of target creature that isn't of the chosen type for as long as Callous Oppressor remains tapped.| Chain of Vapor|Onslaught|73|U|{U}|Instant|||Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land. If the player does, he or she may copy this spell and may choose a new target for that copy.| From 42a3ca80836e0693adc202a28b39e0790c3777c8 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 31 Mar 2015 00:07:35 +0200 Subject: [PATCH 003/175] * Dryad Militant Test updated. --- .../src/mage/sets/returntoravnica/DryadMilitant.java | 9 ++++++--- .../mage/test/cards/replacement/DryadMilitantTest.java | 7 ++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java b/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java index 0649915a4a..ef147ed386 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java @@ -56,8 +56,6 @@ public class DryadMilitant extends CardImpl { this.subtype.add("Dryad"); this.subtype.add("Soldier"); - this.color.setGreen(true); - this.color.setWhite(true); this.power = new MageInt(2); this.toughness = new MageInt(1); @@ -108,9 +106,14 @@ class DryadMilitantReplacementEffect extends ReplacementEffectImpl { return false; } + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).getToZone() == Zone.GRAVEYARD) { + if (((ZoneChangeEvent)event).getToZone() == Zone.GRAVEYARD) { Card card = game.getCard(event.getTargetId()); if (card != null && (card.getCardType().contains(CardType.SORCERY) || card.getCardType().contains(CardType.INSTANT))) { return true; diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java index 1b2ce7f42e..451d18381c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java @@ -80,12 +80,12 @@ public class DryadMilitantTest extends CardTestPlayerBase { /** * Tests if Dryad Militant dies by damage spell, the - * spell don't gets exiled + * spell don't get exiled */ @Test public void testDiesByDestroy() { addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1); - addCard(Zone.BATTLEFIELD, playerA, "Plains", 1); + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1); addCard(Zone.HAND, playerA, "Terminate"); addCard(Zone.BATTLEFIELD, playerB, "Dryad Militant"); @@ -95,7 +95,8 @@ public class DryadMilitantTest extends CardTestPlayerBase { execute(); assertLife(playerB, 20); - + + assertHandCount(playerA, "Terminate", 0); assertGraveyardCount(playerB, "Terminate", 1); } } From 79eb4bf8ff17684f626aa34ca40bbf552e6486f2 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 30 Mar 2015 19:48:02 -0300 Subject: [PATCH 004/175] - Added Treva's Charm --- .../phyrexiavsthecoalition/TrevasCharm.java | 52 +++++++++++++ .../src/mage/sets/planeshift/TrevasCharm.java | 75 +++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/phyrexiavsthecoalition/TrevasCharm.java create mode 100644 Mage.Sets/src/mage/sets/planeshift/TrevasCharm.java diff --git a/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/TrevasCharm.java b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/TrevasCharm.java new file mode 100644 index 0000000000..0061ac6d9c --- /dev/null +++ b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/TrevasCharm.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.phyrexiavsthecoalition; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class TrevasCharm extends mage.sets.planeshift.TrevasCharm { + + public TrevasCharm(UUID ownerId) { + super(ownerId); + this.cardNumber = 61; + this.expansionSetCode = "DDE"; + } + + public TrevasCharm(final TrevasCharm card) { + super(card); + } + + @Override + public TrevasCharm copy() { + return new TrevasCharm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/planeshift/TrevasCharm.java b/Mage.Sets/src/mage/sets/planeshift/TrevasCharm.java new file mode 100644 index 0000000000..8339ebcbd2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/planeshift/TrevasCharm.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.planeshift; + +import java.util.UUID; +import mage.abilities.Mode; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.DrawDiscardControllerEffect; +import mage.abilities.effects.common.ExileTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetAttackingCreature; +import mage.target.common.TargetEnchantmentPermanent; + +/** + * + * @author FenrisulfrX + */ +public class TrevasCharm extends CardImpl { + + public TrevasCharm(UUID ownerId) { + super(ownerId, 129, "Treva's Charm", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{G}{W}{U}"); + this.expansionSetCode = "PLS"; + + // Choose one - Destroy target enchantment; + this.getSpellAbility().addEffect(new DestroyTargetEffect()); + this.getSpellAbility().addTarget(new TargetEnchantmentPermanent()); + + // or exile target attacking creature; + Mode mode = new Mode(); + mode.getEffects().add(new ExileTargetEffect()); + mode.getTargets().add(new TargetAttackingCreature()); + this.getSpellAbility().addMode(mode); + + // or draw a card, then discard a card. + mode = new Mode(); + mode.getEffects().add(new DrawDiscardControllerEffect()); + this.getSpellAbility().addMode(mode); + } + + public TrevasCharm(final TrevasCharm card) { + super(card); + } + + @Override + public TrevasCharm copy() { + return new TrevasCharm(this); + } +} From fa211acde734a9570e870c291c41294c534acb6b Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 30 Mar 2015 20:43:41 -0300 Subject: [PATCH 005/175] - Added Urza's Rage Also added the Coalition deck. --- .../Phyrexia vs. Coalition/Coalition.dck | 37 +++++++++ .../src/mage/sets/invasion/UrzasRage.java | 54 +++++++++++++ .../phyrexiavsthecoalition/UrzasRage.java | 80 +++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 Mage.Client/release/sample-decks/Duel Decks/Phyrexia vs. Coalition/Coalition.dck create mode 100644 Mage.Sets/src/mage/sets/invasion/UrzasRage.java create mode 100644 Mage.Sets/src/mage/sets/phyrexiavsthecoalition/UrzasRage.java diff --git a/Mage.Client/release/sample-decks/Duel Decks/Phyrexia vs. Coalition/Coalition.dck b/Mage.Client/release/sample-decks/Duel Decks/Phyrexia vs. Coalition/Coalition.dck new file mode 100644 index 0000000000..a3b079250b --- /dev/null +++ b/Mage.Client/release/sample-decks/Duel Decks/Phyrexia vs. Coalition/Coalition.dck @@ -0,0 +1,37 @@ +5 [DDE:70] Forest +5 [DDE:71] Forest +1 [DDE:49] Treva, the Renewer +4 [DDE:69] Mountain +1 [DDE:47] Darigaaz, the Igniter +1 [DDE:48] Rith, the Awakener +4 [DDE:67] Plains +1 [DDE:45] Charging Troll +1 [DDE:68] Island +1 [DDE:46] Gerrard Capashen +1 [DDE:65] Shivan Oasis +1 [DDE:43] Verduran Emissary +3 [DDE:66] Terramorphic Expanse +2 [DDE:44] Yavimaya Elder +1 [DDE:41] Thunderscape Battlemage +1 [DDE:63] Allied Strategies +1 [DDE:64] Elfhame Palace +2 [DDE:42] Thornscape Battlemage +1 [DDE:61] Treva's Charm +1 [DDE:40] Sunscape Battlemage +1 [DDE:62] Power Armor +1 [DDE:60] Rith's Charm +2 [DDE:38] Nomadic Elf +1 [DDE:39] Quirion Elves +2 [DDE:58] Armadillo Cloak +1 [DDE:36] Urza's Rage +2 [DDE:37] Thornscape Apprentice +1 [DDE:59] Darigaaz's Charm +1 [DDE:56] Exotic Curse +2 [DDE:57] Harrow +1 [DDE:32] Swamp +1 [DDE:54] Coalition Relic +1 [DDE:55] Narrow Escape +2 [DDE:52] Fertile Ground +1 [DDE:53] Gerrard's Command +1 [DDE:50] Evasive Action +1 [DDE:51] Tribal Flames diff --git a/Mage.Sets/src/mage/sets/invasion/UrzasRage.java b/Mage.Sets/src/mage/sets/invasion/UrzasRage.java new file mode 100644 index 0000000000..1db837504c --- /dev/null +++ b/Mage.Sets/src/mage/sets/invasion/UrzasRage.java @@ -0,0 +1,54 @@ +/* + * 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.invasion; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author FenrisulfrX + */ +public class UrzasRage extends mage.sets.phyrexiavsthecoalition.UrzasRage { + + public UrzasRage(UUID ownerId) { + super(ownerId); + this.cardNumber = 178; + this.expansionSetCode = "INV"; + this.rarity = Rarity.RARE; + } + + public UrzasRage(final UrzasRage card) { + super(card); + } + + @Override + public UrzasRage copy() { + return new UrzasRage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/UrzasRage.java b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/UrzasRage.java new file mode 100644 index 0000000000..27ac12b0b8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/UrzasRage.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.phyrexiavsthecoalition; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.KickedCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.CantBeCounteredSourceEffect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.KickerAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author FenrisulfrX + */ +public class UrzasRage extends CardImpl { + + public UrzasRage(UUID ownerId) { + super(ownerId, 36, "Urza's Rage", Rarity.MYTHIC, new CardType[]{CardType.INSTANT}, "{2}{R}"); + this.expansionSetCode = "DDE"; + + // Kicker {8}{R} + this.addAbility(new KickerAbility("{8}{R}")); + + // Urza's Rage can't be countered by spells or abilities. + Effect effect = new CantBeCounteredSourceEffect(); + effect.setText("{this} can't be countered by spells or abilities"); + Ability ability = new SimpleStaticAbility(Zone.STACK, effect); + ability.setRuleAtTheTop(true); + this.addAbility(ability); + + // Urza's Rage deals 3 damage to target creature or player. If Urza's Rage was kicked, instead it deals 10 damage to that creature or player and the damage can't be prevented. + this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageTargetEffect(10, false), + new DamageTargetEffect(3), KickedCondition.getInstance(), + "{this} deals 3 damage to target creature or player. If {this} was kicked, instead it deals 10 damage to that creature or player and the damage can't be prevented.")); + this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); + } + + public UrzasRage(final UrzasRage card) { + super(card); + } + + @Override + public UrzasRage copy() { + return new UrzasRage(this); + } +} From aa804258733d31d3d732bd9357139b60fd28f096 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 30 Mar 2015 22:57:14 -0300 Subject: [PATCH 006/175] - Added Alaborn Cavalier --- .../knightsvsdragons/AlabornCavalier.java | 52 ++++++++++++++ .../sets/portalsecondage/AlabornCavalier.java | 69 +++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/AlabornCavalier.java create mode 100644 Mage.Sets/src/mage/sets/portalsecondage/AlabornCavalier.java diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/AlabornCavalier.java b/Mage.Sets/src/mage/sets/knightsvsdragons/AlabornCavalier.java new file mode 100644 index 0000000000..ac34ffcf46 --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/AlabornCavalier.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.knightsvsdragons; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class AlabornCavalier extends mage.sets.portalsecondage.AlabornCavalier { + + public AlabornCavalier(UUID ownerId) { + super(ownerId); + this.cardNumber = 18; + this.expansionSetCode = "DDG"; + } + + public AlabornCavalier(final AlabornCavalier card) { + super(card); + } + + @Override + public AlabornCavalier copy() { + return new AlabornCavalier(this); + } +} diff --git a/Mage.Sets/src/mage/sets/portalsecondage/AlabornCavalier.java b/Mage.Sets/src/mage/sets/portalsecondage/AlabornCavalier.java new file mode 100644 index 0000000000..5124474523 --- /dev/null +++ b/Mage.Sets/src/mage/sets/portalsecondage/AlabornCavalier.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.portalsecondage; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksAllTriggeredAbility; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.effects.common.TapTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author FenrisulfrX + */ +public class AlabornCavalier extends CardImpl { + + public AlabornCavalier(UUID ownerId) { + super(ownerId, 121, "Alaborn Cavalier", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{W}{W}"); + this.expansionSetCode = "PO2"; + this.subtype.add("Human"); + this.subtype.add("Knight"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Whenever Alaborn Cavalier attacks, you may tap target creature. + Ability ability = new AttacksTriggeredAbility(new TapTargetEffect(), true); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public AlabornCavalier(final AlabornCavalier card) { + super(card); + } + + @Override + public AlabornCavalier copy() { + return new AlabornCavalier(this); + } +} From e13d87e4cca4f157f274b3eb66a2bb878810541e Mon Sep 17 00:00:00 2001 From: emerald000 Date: Mon, 30 Mar 2015 22:44:45 -0400 Subject: [PATCH 007/175] Added Oracle en-Vec. --- .../src/mage/sets/tempest/OracleEnVec.java | 289 ++++++++++++++++++ 1 file changed, 289 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/tempest/OracleEnVec.java diff --git a/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java b/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java new file mode 100644 index 0000000000..2c525b626d --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java @@ -0,0 +1,289 @@ +/* + * 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.tempest; + +import java.util.List; +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.DelayedTriggeredAbility; +import mage.abilities.Mode; +import mage.abilities.common.ActivateIfConditionActivatedAbility; +import mage.abilities.condition.common.MyTurnCondition; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.RequirementEffect; +import mage.abilities.effects.RestrictionEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.TurnPhase; +import mage.constants.Zone; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.Target; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetOpponent; +import mage.target.targetpointer.FixedTarget; +import mage.watchers.common.AttackedThisTurnWatcher; + +/** + * + * @author emerald000 + */ +public class OracleEnVec extends CardImpl { + + public OracleEnVec(UUID ownerId) { + super(ownerId, 243, "Oracle en-Vec", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}"); + this.expansionSetCode = "TMP"; + this.subtype.add("Human"); + this.subtype.add("Wizard"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {tap}: Target opponent chooses any number of creatures he or she controls. During that player's next turn, the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack. Activate this ability only during your turn. + Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new OracleEnVecEffect(), new TapSourceCost(), MyTurnCondition.getInstance()); + ability.addTarget(new TargetOpponent()); + this.addAbility(ability, new AttackedThisTurnWatcher()); + } + + public OracleEnVec(final OracleEnVec card) { + super(card); + } + + @Override + public OracleEnVec copy() { + return new OracleEnVec(this); + } +} + +class OracleEnVecEffect extends OneShotEffect { + + OracleEnVecEffect() { + super(Outcome.Benefit); + this.staticText = "Target opponent chooses any number of creatures he or she controls. During that player's next turn, the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack"; + } + + OracleEnVecEffect(final OracleEnVecEffect effect) { + super(effect); + } + + @Override + public OracleEnVecEffect copy() { + return new OracleEnVecEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player opponent = game.getPlayer(this.getTargetPointer().getFirst(game, source)); + if (opponent != null) { + Target target = new TargetControlledCreaturePermanent(0, Integer.MAX_VALUE, new FilterControlledCreaturePermanent(), true); + if (target.choose(Outcome.Neutral, opponent.getId(), source.getSourceId(), game)) { + for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), opponent.getId(), source.getSourceId(), game)) { + if (target.getTargets().contains(permanent.getId())) { + RequirementEffect effect = new OracleEnVecMustAttackRequirementEffect(); + effect.setTargetPointer(new FixedTarget(permanent.getId())); + game.addEffect(effect, source); + } + else { + RestrictionEffect effect = new OracleEnVecCantAttackRestrictionEffect(); + effect.setTargetPointer(new FixedTarget(permanent.getId())); + game.addEffect(effect, source); + } + } + DelayedTriggeredAbility delayedAbility = new OracleEnVecDelayedTriggeredAbility(game.getTurnNum(), target.getTargets()); + delayedAbility.setSourceId(source.getSourceId()); + delayedAbility.setControllerId(source.getControllerId()); + delayedAbility.setSourceObject(source.getSourceObject(game)); + game.addDelayedTriggeredAbility(delayedAbility); + return true; + } + } + return false; + } +} + +class OracleEnVecMustAttackRequirementEffect extends RequirementEffect { + + OracleEnVecMustAttackRequirementEffect() { + super(Duration.Custom); + } + + OracleEnVecMustAttackRequirementEffect(final OracleEnVecMustAttackRequirementEffect effect) { + super(effect); + } + + @Override + public OracleEnVecMustAttackRequirementEffect copy() { + return new OracleEnVecMustAttackRequirementEffect(this); + } + + @Override + public boolean applies(Permanent permanent, Ability source, Game game) { + return this.getTargetPointer().getFirst(game, source).equals(permanent.getId()); + } + + @Override + public boolean mustAttack(Game game) { + return true; + } + + @Override + public boolean mustBlock(Game game) { + return false; + } + + @Override + public boolean isInactive(Ability source, Game game) { + return startingTurn != game.getTurnNum() + && (game.getPhase().getType() == TurnPhase.END + && game.getActivePlayerId().equals(this.getTargetPointer().getFirst(game, source))); + } + + @Override + public String getText(Mode mode) { + return "{this} attack if able."; + } +} + +class OracleEnVecCantAttackRestrictionEffect extends RestrictionEffect { + + OracleEnVecCantAttackRestrictionEffect() { + super(Duration.Custom); + } + + OracleEnVecCantAttackRestrictionEffect(final OracleEnVecCantAttackRestrictionEffect effect) { + super(effect); + } + + @Override + public OracleEnVecCantAttackRestrictionEffect copy() { + return new OracleEnVecCantAttackRestrictionEffect(this); + } + + @Override + public boolean applies(Permanent permanent, Ability source, Game game) { + return this.getTargetPointer().getFirst(game, source).equals(permanent.getId()); + } + + @Override + public boolean canAttack(Game game) { + return false; + } + + @Override + public boolean isInactive(Ability source, Game game) { + return startingTurn != game.getTurnNum() + && (game.getPhase().getType() == TurnPhase.END + && game.getActivePlayerId().equals(this.getTargetPointer().getFirst(game, source))); + } + + @Override + public String getText(Mode mode) { + return "{this} can't attack."; + } +} + +class OracleEnVecDelayedTriggeredAbility extends DelayedTriggeredAbility { + + private final int startingTurn; + + OracleEnVecDelayedTriggeredAbility(int startingTurn, List chosenCreatures) { + super(new OracleEnVecDestroyEffect(chosenCreatures), Duration.EndOfGame, true); + this.startingTurn = startingTurn; + } + + OracleEnVecDelayedTriggeredAbility(final OracleEnVecDelayedTriggeredAbility ability) { + super(ability); + this.startingTurn = ability.startingTurn; + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.END_TURN_STEP_PRE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return startingTurn != game.getTurnNum() && game.getActivePlayerId().equals(event.getPlayerId()); + } + + @Override + public OracleEnVecDelayedTriggeredAbility copy() { + return new OracleEnVecDelayedTriggeredAbility(this); + } + + @Override + public String getRule() { + return "At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack."; + } +} + +class OracleEnVecDestroyEffect extends OneShotEffect { + + private final List chosenCreatures; + + OracleEnVecDestroyEffect(List chosenCreatures) { + super(Outcome.DestroyPermanent); + this.chosenCreatures = chosenCreatures; + this.staticText = "destroy each of the chosen creatures that didn't attack"; + } + + OracleEnVecDestroyEffect(final OracleEnVecDestroyEffect effect) { + super(effect); + this.chosenCreatures = effect.chosenCreatures; + } + + @Override + public OracleEnVecDestroyEffect copy() { + return new OracleEnVecDestroyEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + AttackedThisTurnWatcher watcher = (AttackedThisTurnWatcher) game.getState().getWatchers().get("AttackedThisTurn"); + if (watcher != null) { + for (UUID targetId : chosenCreatures) { + if (!watcher.getAttackedThisTurnCreatures().contains(targetId)) { + Effect effect = new DestroyTargetEffect(); + effect.setTargetPointer(new FixedTarget(targetId)); + effect.apply(game, source); + } + } + return true; + } + return false; + } +} From 2b2db2df6cd34ebf3c7e0b504d7614785f962cc5 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 30 Mar 2015 22:17:43 -0500 Subject: [PATCH 008/175] Added set Tempest Remastered and reprints. Added Pit Trap. Updated latest Game Day, FNM, Buy-a-box, WMCQ, and Release promos. --- .../client/util/sets/ConstructedFormats.java | 4 + .../plugins/card/dl/sources/GathererSets.java | 2 +- .../dl/sources/MagicCardsImageSource.java | 1 + .../dl/sources/WizardCardsImageSource.java | 1 + .../src/main/resources/card-pictures-tok.txt | 11 + .../src/main/resources/image.url.properties | 4 +- .../src/mage/sets/TempestRemastered.java | 57 + Mage.Sets/src/mage/sets/VintageMasters.java | 204 ++-- .../src/mage/sets/exodus/ExaltedDragon.java | 65 + .../fridaynightmagic/AbzanBeastmaster.java | 52 + .../sets/fridaynightmagic/FrostWalker.java | 52 + .../fridaynightmagic/HordelingOutburst.java | 52 + .../fridaynightmagic/SuspensionField.java | 52 + Mage.Sets/src/mage/sets/iceage/PitTrap.java | 52 + .../sets/launchparty/DeathbringerRegent.java | 52 + .../sets/launchparty/SandsteppeMastodon.java | 52 + .../sets/mediainserts/OjutaisCommand.java | 54 + .../sets/mediainserts/ShamanicRevelation.java | 54 + .../src/mage/sets/seventhedition/PitTrap.java | 52 + .../src/mage/sets/tempest/DauthiMarauder.java | 63 + .../sets/tempestremastered/AcidicSliver.java | 52 + .../sets/tempestremastered/Aftershock.java | 52 + .../mage/sets/tempestremastered/Aluren.java | 52 + .../sets/tempestremastered/Anarchist.java | 54 + .../tempestremastered/AngelicBlessing.java | 52 + .../tempestremastered/AngelicProtector.java | 52 + .../sets/tempestremastered/ArmorSliver.java | 54 + .../tempestremastered/ArmoredPegasus.java | 52 + .../mage/sets/tempestremastered/Bandage.java | 52 + .../sets/tempestremastered/BarbedSliver.java | 54 + .../sets/tempestremastered/BottleGnomes.java | 54 + .../sets/tempestremastered/CalderaLake.java | 54 + .../sets/tempestremastered/CanopySpider.java | 52 + .../sets/tempestremastered/CanyonWildcat.java | 52 + .../mage/sets/tempestremastered/Capsize.java | 54 + .../sets/tempestremastered/Carnassid.java | 54 + .../sets/tempestremastered/Carnophage.java | 52 + .../sets/tempestremastered/Cataclysm.java | 54 + .../tempestremastered/ChargingPaladin.java | 52 + .../sets/tempestremastered/CinderMarsh.java | 52 + .../tempestremastered/CityOfTraitors.java | 52 + .../sets/tempestremastered/ClotSliver.java | 52 + .../sets/tempestremastered/CoatOfArms.java | 52 + .../mage/sets/tempestremastered/Coercion.java | 52 + .../tempestremastered/CoiledTinviper.java | 52 + .../CommanderGrevenIlVec.java | 52 + .../sets/tempestremastered/CorpseDance.java | 52 + .../sets/tempestremastered/Counterspell.java | 54 + .../tempestremastered/CrystallineSliver.java | 52 + .../sets/tempestremastered/Curiosity.java | 52 + .../sets/tempestremastered/CursedFlesh.java | 52 + .../sets/tempestremastered/CursedScroll.java | 54 + .../sets/tempestremastered/DarkBanishing.java | 52 + .../sets/tempestremastered/DarkRitual.java | 52 + .../sets/tempestremastered/DauthiHorror.java | 52 + .../tempestremastered/DauthiMarauder.java | 54 + .../sets/tempestremastered/DauthiSlayer.java | 54 + .../tempestremastered/DeathPitsOfRath.java | 52 + .../sets/tempestremastered/DiabolicEdict.java | 52 + .../sets/tempestremastered/Disenchant.java | 52 + .../mage/sets/tempestremastered/Dismiss.java | 52 + .../sets/tempestremastered/DreamHalls.java | 54 + .../sets/tempestremastered/ElvishFury.java | 52 + .../sets/tempestremastered/EmmessiTome.java | 54 + .../sets/tempestremastered/Ephemeron.java | 52 + .../sets/tempestremastered/ErraticPortal.java | 52 + .../tempestremastered/EvincarsJustice.java | 54 + .../sets/tempestremastered/ExaltedDragon.java | 52 + .../sets/tempestremastered/FightingDrake.java | 52 + .../tempestremastered/FlowstoneWyvern.java | 54 + .../mage/sets/tempestremastered/Forbid.java | 54 + .../mage/sets/tempestremastered/Forest1.java | 51 + .../mage/sets/tempestremastered/Forest2.java | 51 + .../mage/sets/tempestremastered/Forest3.java | 51 + .../mage/sets/tempestremastered/Forest4.java | 51 + .../sets/tempestremastered/Gallantry.java | 52 + .../sets/tempestremastered/GaseousForm.java | 52 + .../tempestremastered/GerrardsBattleCry.java | 52 + .../tempestremastered/GoblinBombardment.java | 52 + .../sets/tempestremastered/Gravedigger.java | 52 + .../sets/tempestremastered/Grindstone.java | 54 + .../mage/sets/tempestremastered/Harrow.java | 52 + .../tempestremastered/HeartwoodGiant.java | 52 + .../sets/tempestremastered/HermitDruid.java | 54 + .../tempestremastered/HibernationSliver.java | 52 + .../sets/tempestremastered/HornedSliver.java | 54 + .../sets/tempestremastered/HornedTurtle.java | 52 + .../mage/sets/tempestremastered/Humility.java | 54 + .../sets/tempestremastered/Intuition.java | 52 + .../mage/sets/tempestremastered/Island1.java | 51 + .../mage/sets/tempestremastered/Island2.java | 51 + .../mage/sets/tempestremastered/Island3.java | 51 + .../mage/sets/tempestremastered/Island4.java | 51 + .../sets/tempestremastered/JinxedIdol.java | 52 + .../sets/tempestremastered/Kezzerdrix.java | 52 + .../mage/sets/tempestremastered/Kindle.java | 52 + .../mage/sets/tempestremastered/LabRats.java | 52 + .../sets/tempestremastered/LegacysAllure.java | 54 + .../tempestremastered/LightningBlast.java | 52 + .../sets/tempestremastered/LivingDeath.java | 54 + .../sets/tempestremastered/LotusPetal.java | 54 + .../sets/tempestremastered/LowlandGiant.java | 52 + .../mage/sets/tempestremastered/ManaLeak.java | 52 + .../mage/sets/tempestremastered/Manabond.java | 52 + .../sets/tempestremastered/ManiacalRage.java | 52 + .../sets/tempestremastered/MasterDecoy.java | 52 + .../mage/sets/tempestremastered/Mawcor.java | 52 + .../mage/sets/tempestremastered/Meditate.java | 52 + .../sets/tempestremastered/MerfolkLooter.java | 52 + .../tempestremastered/MetallicSliver.java | 52 + .../tempestremastered/MindlessAutomaton.java | 52 + .../tempestremastered/MirriCatWarrior.java | 52 + .../tempestremastered/MnemonicSliver.java | 54 + .../tempestremastered/MoggConscripts.java | 52 + .../sets/tempestremastered/MoggFanatic.java | 52 + .../sets/tempestremastered/MoggFlunkies.java | 52 + .../sets/tempestremastered/MoggHollows.java | 52 + .../sets/tempestremastered/Mountain1.java | 51 + .../sets/tempestremastered/Mountain2.java | 51 + .../sets/tempestremastered/Mountain3.java | 51 + .../sets/tempestremastered/Mountain4.java | 51 + .../sets/tempestremastered/MoxDiamond.java | 54 + .../mage/sets/tempestremastered/Mulch.java | 52 + .../sets/tempestremastered/MuscleSliver.java | 52 + .../sets/tempestremastered/NeedleStorm.java | 52 + .../sets/tempestremastered/NomadsEnKor.java | 52 + .../sets/tempestremastered/OathOfDruids.java | 54 + .../tempestremastered/OrimSamiteHealer.java | 52 + .../mage/sets/tempestremastered/Overrun.java | 52 + .../mage/sets/tempestremastered/Pacifism.java | 54 + .../sets/tempestremastered/PaladinEnVec.java | 52 + .../tempestremastered/PatchworkGnomes.java | 54 + .../sets/tempestremastered/PhyrexianHulk.java | 54 + .../sets/tempestremastered/PineBarrens.java | 54 + .../mage/sets/tempestremastered/Plains1.java | 51 + .../mage/sets/tempestremastered/Plains2.java | 51 + .../mage/sets/tempestremastered/Plains3.java | 51 + .../mage/sets/tempestremastered/Plains4.java | 51 + .../mage/sets/tempestremastered/Provoke.java | 52 + .../sets/tempestremastered/RampantGrowth.java | 52 + .../sets/tempestremastered/RatsOfRath.java | 52 + .../sets/tempestremastered/Reanimate.java | 52 + .../tempestremastered/RecurringNightmare.java | 54 + .../tempestremastered/RenegadeWarlord.java | 52 + .../tempestremastered/RootbreakerWurm.java | 54 + .../sets/tempestremastered/Rootwalla.java | 52 + .../tempestremastered/RootwaterDepths.java | 52 + .../tempestremastered/RootwaterHunter.java | 54 + .../tempestremastered/SabertoothWyvern.java | 52 + .../sets/tempestremastered/SaltFlats.java | 54 + .../tempestremastered/SandstoneWarrior.java | 52 + .../sets/tempestremastered/Sarcomancy.java | 54 + .../mage/sets/tempestremastered/Scabland.java | 54 + .../tempestremastered/ScreechingHarpy.java | 52 + .../sets/tempestremastered/Scrivener.java | 54 + .../sets/tempestremastered/SeaMonster.java | 52 + .../sets/tempestremastered/SearingTouch.java | 52 + .../tempestremastered/SeleniaDarkAngel.java | 52 + .../tempestremastered/SerpentWarrior.java | 52 + .../mage/sets/tempestremastered/Shackles.java | 52 + .../sets/tempestremastered/ShadowRift.java | 52 + .../sets/tempestremastered/ShamanEnKor.java | 52 + .../mage/sets/tempestremastered/Shatter.java | 52 + .../src/mage/sets/tempestremastered/Sift.java | 52 + .../sets/tempestremastered/SkyshroudElf.java | 52 + .../tempestremastered/SkyshroudForest.java | 54 + .../tempestremastered/SkyshroudTroll.java | 52 + .../sets/tempestremastered/SliverQueen.java | 54 + .../mage/sets/tempestremastered/Smite.java | 52 + .../tempestremastered/SoltariChampion.java | 54 + .../sets/tempestremastered/SoltariMonk.java | 52 + .../sets/tempestremastered/SoltariPriest.java | 52 + .../tempestremastered/SoltariTrooper.java | 52 + .../sets/tempestremastered/SpellBlast.java | 52 + .../sets/tempestremastered/SpikeFeeder.java | 54 + .../sets/tempestremastered/SpinedSliver.java | 52 + .../sets/tempestremastered/SpinedWurm.java | 52 + .../sets/tempestremastered/SpiritMirror.java | 52 + .../tempestremastered/StalkingStones.java | 52 + .../tempestremastered/StandingTroops.java | 52 + .../tempestremastered/StaunchDefenders.java | 54 + .../tempestremastered/StrongholdAssassin.java | 52 + .../src/mage/sets/tempestremastered/Stun.java | 52 + .../SurvivalOfTheFittest.java | 54 + .../mage/sets/tempestremastered/Swamp1.java | 51 + .../mage/sets/tempestremastered/Swamp2.java | 51 + .../mage/sets/tempestremastered/Swamp3.java | 51 + .../mage/sets/tempestremastered/Swamp4.java | 51 + .../sets/tempestremastered/Telethopter.java | 54 + .../tempestremastered/ThalakosLowlands.java | 52 + .../sets/tempestremastered/ThrullSurgeon.java | 54 + .../mage/sets/tempestremastered/TimeEbb.java | 52 + .../mage/sets/tempestremastered/TimeWarp.java | 52 + .../tempestremastered/TradewindRider.java | 52 + .../tempestremastered/TrainedArmodon.java | 52 + .../sets/tempestremastered/Tranquility.java | 54 + .../mage/sets/tempestremastered/Twitch.java | 52 + .../sets/tempestremastered/VecTownships.java | 52 + .../sets/tempestremastered/VerdantForce.java | 52 + .../sets/tempestremastered/Verdigris.java | 54 + .../sets/tempestremastered/VictualSliver.java | 52 + .../tempestremastered/VolrathsStronghold.java | 54 + .../tempestremastered/WallOfBlossoms.java | 52 + .../tempestremastered/WallOfDiffusion.java | 52 + .../sets/tempestremastered/WallOfEssence.java | 52 + .../sets/tempestremastered/Wasteland.java | 54 + .../tempestremastered/WhispersOfTheMuse.java | 54 + .../sets/tempestremastered/WindDancer.java | 52 + .../sets/tempestremastered/WindDrake.java | 52 + .../sets/tempestremastered/WindsOfRath.java | 52 + .../sets/tempestremastered/WingedSliver.java | 52 + .../tempestremastered/YouthfulKnight.java | 52 + .../src/mage/sets/urzassaga/PitTrap.java | 77 ++ .../ThaliaGuardianOfThraben.java | 52 + Utils/known-sets.txt | 1 + Utils/mtg-cards-data.txt | 1061 +++++++++++------ Utils/mtg-sets-data.txt | 1 + 217 files changed, 11697 insertions(+), 497 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/TempestRemastered.java create mode 100644 Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java create mode 100644 Mage.Sets/src/mage/sets/fridaynightmagic/AbzanBeastmaster.java create mode 100644 Mage.Sets/src/mage/sets/fridaynightmagic/FrostWalker.java create mode 100644 Mage.Sets/src/mage/sets/fridaynightmagic/HordelingOutburst.java create mode 100644 Mage.Sets/src/mage/sets/fridaynightmagic/SuspensionField.java create mode 100644 Mage.Sets/src/mage/sets/iceage/PitTrap.java create mode 100644 Mage.Sets/src/mage/sets/launchparty/DeathbringerRegent.java create mode 100644 Mage.Sets/src/mage/sets/launchparty/SandsteppeMastodon.java create mode 100644 Mage.Sets/src/mage/sets/mediainserts/OjutaisCommand.java create mode 100644 Mage.Sets/src/mage/sets/mediainserts/ShamanicRevelation.java create mode 100644 Mage.Sets/src/mage/sets/seventhedition/PitTrap.java create mode 100644 Mage.Sets/src/mage/sets/tempest/DauthiMarauder.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/AcidicSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Aftershock.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Aluren.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Anarchist.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/AngelicBlessing.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/AngelicProtector.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ArmorSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ArmoredPegasus.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Bandage.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/BarbedSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/BottleGnomes.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CalderaLake.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CanopySpider.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CanyonWildcat.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Capsize.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Carnassid.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Carnophage.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Cataclysm.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ChargingPaladin.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CinderMarsh.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CityOfTraitors.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ClotSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CoatOfArms.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Coercion.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CoiledTinviper.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CommanderGrevenIlVec.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CorpseDance.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Counterspell.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CrystallineSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Curiosity.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CursedFlesh.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CursedScroll.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DarkBanishing.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DarkRitual.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DauthiHorror.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DauthiMarauder.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DauthiSlayer.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DeathPitsOfRath.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DiabolicEdict.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Disenchant.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Dismiss.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DreamHalls.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ElvishFury.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/EmmessiTome.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Ephemeron.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ErraticPortal.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/EvincarsJustice.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FightingDrake.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FlowstoneWyvern.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Forbid.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Forest1.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Forest2.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Forest3.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Forest4.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Gallantry.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/GaseousForm.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/GerrardsBattleCry.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/GoblinBombardment.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Gravedigger.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Grindstone.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Harrow.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/HeartwoodGiant.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/HermitDruid.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/HibernationSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/HornedSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/HornedTurtle.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Humility.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Intuition.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Island1.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Island2.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Island3.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Island4.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/JinxedIdol.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Kezzerdrix.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Kindle.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/LabRats.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/LegacysAllure.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/LightningBlast.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/LivingDeath.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/LotusPetal.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/LowlandGiant.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ManaLeak.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Manabond.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ManiacalRage.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MasterDecoy.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Mawcor.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Meditate.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MerfolkLooter.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MetallicSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MindlessAutomaton.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MirriCatWarrior.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MnemonicSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MoggConscripts.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MoggFanatic.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MoggFlunkies.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MoggHollows.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Mountain1.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Mountain2.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Mountain3.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Mountain4.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MoxDiamond.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Mulch.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MuscleSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/NeedleStorm.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/NomadsEnKor.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/OathOfDruids.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/OrimSamiteHealer.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Overrun.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Pacifism.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/PaladinEnVec.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/PatchworkGnomes.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/PhyrexianHulk.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/PineBarrens.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Plains1.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Plains2.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Plains3.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Plains4.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Provoke.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RampantGrowth.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RatsOfRath.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Reanimate.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RecurringNightmare.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RenegadeWarlord.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RootbreakerWurm.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Rootwalla.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RootwaterDepths.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RootwaterHunter.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SabertoothWyvern.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SaltFlats.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SandstoneWarrior.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Sarcomancy.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Scabland.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ScreechingHarpy.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Scrivener.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SeaMonster.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SearingTouch.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SeleniaDarkAngel.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SerpentWarrior.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Shackles.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ShadowRift.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ShamanEnKor.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Shatter.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Sift.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SkyshroudElf.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SkyshroudForest.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SkyshroudTroll.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SliverQueen.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Smite.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SoltariChampion.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SoltariMonk.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SoltariPriest.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SoltariTrooper.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpellBlast.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpikeFeeder.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpinedSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpinedWurm.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpiritMirror.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/StalkingStones.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/StandingTroops.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/StaunchDefenders.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/StrongholdAssassin.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Stun.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SurvivalOfTheFittest.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Swamp1.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Swamp2.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Swamp3.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Swamp4.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Telethopter.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ThalakosLowlands.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ThrullSurgeon.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/TimeEbb.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/TimeWarp.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/TradewindRider.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/TrainedArmodon.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Tranquility.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Twitch.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VecTownships.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VerdantForce.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Verdigris.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VictualSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VolrathsStronghold.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WallOfBlossoms.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WallOfDiffusion.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WallOfEssence.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Wasteland.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WhispersOfTheMuse.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WindDancer.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WindDrake.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WindsOfRath.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WingedSliver.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/YouthfulKnight.java create mode 100644 Mage.Sets/src/mage/sets/urzassaga/PitTrap.java create mode 100644 Mage.Sets/src/mage/sets/worldmagiccupqualifier/ThaliaGuardianOfThraben.java diff --git a/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java b/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java index ce66d43b80..3655af9d90 100644 --- a/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java +++ b/Mage.Client/src/main/java/mage/client/util/sets/ConstructedFormats.java @@ -64,6 +64,7 @@ public class ConstructedFormats { "Fifth Edition", "Fourth Edition", "Revised Edition", "Unlimited Edition", "Limited Edition Beta", "Limited Edition Alpha", + "Tempest Remastered", "Vintage Masters", "Conspiracy", "Modern Masters 2015", @@ -460,6 +461,9 @@ public class ConstructedFormats { if (format.equals("Planechase 2012")) { return Arrays.asList("PC2"); } + if (format.equals("Tempest Remastered")) { + return Arrays.asList("TPR"); + } if (format.equals("Modern Masters")) { return Arrays.asList("MMA"); } diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java index c402cf1a40..28d05889d9 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/GathererSets.java @@ -43,7 +43,7 @@ public class GathererSets implements Iterable { "RTR", "GTC", "DGM", "MMA", "THS", "BNG", "JOU", - "CNS", "VMA", + "CNS", "VMA", "TPR", "KTK", "FRF", "DTK"}; private static final HashMap symbolsReplacements = new HashMap<>(); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java index 069a71940c..b09886d17c 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/MagicCardsImageSource.java @@ -16,6 +16,7 @@ public class MagicCardsImageSource implements CardImageSource { private static final Map setNameTokenReplacement = new HashMap() { { + put("TPR", "tempest-remastered"); put("ORI", "magic-origins"); put("MMB", "modern-masters-2015"); put("PTC", "prerelease-events"); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java index c1d4573685..cfc5e9bd27 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/dl/sources/WizardCardsImageSource.java @@ -164,6 +164,7 @@ public class WizardCardsImageSource implements CardImageSource { setsAliases.put("THS", "Theros"); setsAliases.put("TMP", "Tempest"); setsAliases.put("TOR", "Torment"); + setsAliases.put("TPR", "Tempest Remastered"); setsAliases.put("TSB", "Time Spiral 'Timeshifted'"); setsAliases.put("TSP", "Time Spiral"); setsAliases.put("UDS", "Urza's Destiny"); diff --git a/Mage.Client/src/main/resources/card-pictures-tok.txt b/Mage.Client/src/main/resources/card-pictures-tok.txt index c5af812823..93fdf9a8e0 100644 --- a/Mage.Client/src/main/resources/card-pictures-tok.txt +++ b/Mage.Client/src/main/resources/card-pictures-tok.txt @@ -1,3 +1,14 @@ +#Generate|TOK:TPR|Goblin| +#Generate|TOK:TPR|Pegasus| +#Generate|TOK:TPR|Rat| +#Generate|TOK:TPR|Reflection| +#Generate|TOK:TPR|Saproling| +#Generate|TOK:TPR|Sliver| +#Generate|TOK:TPR|Spike| +#Generate|TOK:TPR|Spirit| +#Generate|TOK:TPR|Thopter| +#Generate|TOK:TPR|Zombie| + #|Generate|TOK:ORI|Zombie| #|Generate|TOK:PTC|Angel| diff --git a/Mage.Client/src/main/resources/image.url.properties b/Mage.Client/src/main/resources/image.url.properties index 91752a2ede..06cd21f087 100644 --- a/Mage.Client/src/main/resources/image.url.properties +++ b/Mage.Client/src/main/resources/image.url.properties @@ -64,6 +64,6 @@ ddd=gvl unh=uh dde=pvc # Remove setname as soon as the images can be downloaded -ignore.urls=TOK,MMB,ORI +ignore.urls=TOK,MMB,ORI,TPR # sets ordered by release time (newest goes first) -token.lookup.order=MPRP,DD3,DDO,ORI,MMB,PTC,DTK,FRF,KTK,M15,VMA,CNS,JOU,BNG,THS,DDL,M14,MMA,DGM,GTC,RTR,M13,AVR,DDI,DKA,ISD,M12,NPH,MBS,SOM,M11,ROE,DDE,WWK,ZEN,M10,GVL,ARB,DVD,CFX,JVC,ALA,EVE,SHM,EVG,MOR,LRW,10E,CLS,CHK,GRC \ No newline at end of file +token.lookup.order=TPR,MPRP,DD3,DDO,ORI,MMB,PTC,DTK,FRF,KTK,M15,VMA,CNS,JOU,BNG,THS,DDL,M14,MMA,DGM,GTC,RTR,M13,AVR,DDI,DKA,ISD,M12,NPH,MBS,SOM,M11,ROE,DDE,WWK,ZEN,M10,GVL,ARB,DVD,CFX,JVC,ALA,EVE,SHM,EVG,MOR,LRW,10E,CLS,CHK,GRC \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/TempestRemastered.java b/Mage.Sets/src/mage/sets/TempestRemastered.java new file mode 100644 index 0000000000..cf18da587a --- /dev/null +++ b/Mage.Sets/src/mage/sets/TempestRemastered.java @@ -0,0 +1,57 @@ +/* +* 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; + +import java.util.GregorianCalendar; +import mage.cards.ExpansionSet; +import mage.constants.SetType; + +/** + * + * @author fireshoes + */ +public class TempestRemastered extends ExpansionSet { + + private static final TempestRemastered fINSTANCE = new TempestRemastered(); + + public static TempestRemastered getInstance() { + return fINSTANCE; + } + + private TempestRemastered() { + super("Tempest Remastered", "TPR", "mage.sets.tempestremastered", new GregorianCalendar(2015, 5, 6).getTime(), SetType.REPRINT); + this.hasBasicLands = true; + this.hasBoosters = true; + this.numBoosterLands = 1; + this.numBoosterCommon = 10; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 8; + } +} diff --git a/Mage.Sets/src/mage/sets/VintageMasters.java b/Mage.Sets/src/mage/sets/VintageMasters.java index 5d612fe9fc..06a50aec06 100644 --- a/Mage.Sets/src/mage/sets/VintageMasters.java +++ b/Mage.Sets/src/mage/sets/VintageMasters.java @@ -1,103 +1,101 @@ -/* -* 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; - -import java.util.ArrayList; -import java.util.GregorianCalendar; -import java.util.List; -import mage.cards.ExpansionSet; -import mage.cards.repository.CardCriteria; -import mage.cards.repository.CardInfo; -import mage.cards.repository.CardRepository; -import mage.constants.CardType; -import mage.constants.Rarity; -import mage.constants.SetType; - - - -/** - * - * @author LevelX2 - */ -public class VintageMasters extends ExpansionSet { - - private static final VintageMasters fINSTANCE = new VintageMasters(); - - public static VintageMasters getInstance() { - return fINSTANCE; - } - - private VintageMasters() { - super("Vintage Masters", "VMA", "mage.sets.vintagemasters", new GregorianCalendar(2014, 6, 16).getTime(), SetType.REPRINT); - this.hasBasicLands = false; - this.hasBoosters = true; - this.numBoosterSpecial = 1; - this.numBoosterLands = 0; - this.numBoosterCommon = 10; - this.numBoosterUncommon = 3; - this.numBoosterRare = 1; - this.ratioBoosterMythic = 8; - } - - @Override - public List getSpecialCommon() { - CardCriteria criteria = new CardCriteria(); - criteria.rarities(Rarity.COMMON).setCodes(this.code); - return CardRepository.instance.findCards(criteria); - } - - @Override - public List getSpecialUncommon() { - CardCriteria criteria = new CardCriteria(); - criteria.rarities(Rarity.UNCOMMON).setCodes(this.code); - return CardRepository.instance.findCards(criteria); - } - - @Override - public List getSpecialRare() { - CardCriteria criteria = new CardCriteria(); - criteria.rarities(Rarity.RARE).setCodes(this.code); - return CardRepository.instance.findCards(criteria); - } - - @Override - public List getSpecialMythic() { - CardCriteria criteria = new CardCriteria(); - criteria.rarities(Rarity.MYTHIC).setCodes(this.code); - return CardRepository.instance.findCards(criteria); - } - - @Override - public List getSpecialBonus() { - CardCriteria criteria = new CardCriteria(); - criteria.rarities(Rarity.BONUS).setCodes(this.code); - return CardRepository.instance.findCards(criteria); - } - -} +/* +* 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; + +import java.util.GregorianCalendar; +import java.util.List; +import mage.cards.ExpansionSet; +import mage.cards.repository.CardCriteria; +import mage.cards.repository.CardInfo; +import mage.cards.repository.CardRepository; +import mage.constants.Rarity; +import mage.constants.SetType; + + + +/** + * + * @author LevelX2 + */ +public class VintageMasters extends ExpansionSet { + + private static final VintageMasters fINSTANCE = new VintageMasters(); + + public static VintageMasters getInstance() { + return fINSTANCE; + } + + private VintageMasters() { + super("Vintage Masters", "VMA", "mage.sets.vintagemasters", new GregorianCalendar(2014, 6, 16).getTime(), SetType.REPRINT); + this.hasBasicLands = false; + this.hasBoosters = true; + this.numBoosterSpecial = 1; + this.numBoosterLands = 0; + this.numBoosterCommon = 10; + this.numBoosterUncommon = 3; + this.numBoosterRare = 1; + this.ratioBoosterMythic = 8; + } + + @Override + public List getSpecialCommon() { + CardCriteria criteria = new CardCriteria(); + criteria.rarities(Rarity.COMMON).setCodes(this.code); + return CardRepository.instance.findCards(criteria); + } + + @Override + public List getSpecialUncommon() { + CardCriteria criteria = new CardCriteria(); + criteria.rarities(Rarity.UNCOMMON).setCodes(this.code); + return CardRepository.instance.findCards(criteria); + } + + @Override + public List getSpecialRare() { + CardCriteria criteria = new CardCriteria(); + criteria.rarities(Rarity.RARE).setCodes(this.code); + return CardRepository.instance.findCards(criteria); + } + + @Override + public List getSpecialMythic() { + CardCriteria criteria = new CardCriteria(); + criteria.rarities(Rarity.MYTHIC).setCodes(this.code); + return CardRepository.instance.findCards(criteria); + } + + @Override + public List getSpecialBonus() { + CardCriteria criteria = new CardCriteria(); + criteria.rarities(Rarity.BONUS).setCodes(this.code); + return CardRepository.instance.findCards(criteria); + } + +} diff --git a/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java b/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java new file mode 100644 index 0000000000..f9831a815b --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.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.exodus; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.ExaltedAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ExaltedDragon extends CardImpl { + + public ExaltedDragon(UUID ownerId) { + super(ownerId, 6, "Exalted Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{W}{W}"); + this.expansionSetCode = "EXO"; + this.subtype.add("Dragon"); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + // Exalted Dragon can't attack unless you sacrifice a land. + this.addAbility(new ExaltedAbility()); + } + + public ExaltedDragon(final ExaltedDragon card) { + super(card); + } + + @Override + public ExaltedDragon copy() { + return new ExaltedDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fridaynightmagic/AbzanBeastmaster.java b/Mage.Sets/src/mage/sets/fridaynightmagic/AbzanBeastmaster.java new file mode 100644 index 0000000000..e94bec8845 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fridaynightmagic/AbzanBeastmaster.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.fridaynightmagic; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class AbzanBeastmaster extends mage.sets.fatereforged.AbzanBeastmaster { + + public AbzanBeastmaster(UUID ownerId) { + super(ownerId); + this.cardNumber = 180; + this.expansionSetCode = "FNMP"; + } + + public AbzanBeastmaster(final AbzanBeastmaster card) { + super(card); + } + + @Override + public AbzanBeastmaster copy() { + return new AbzanBeastmaster(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fridaynightmagic/FrostWalker.java b/Mage.Sets/src/mage/sets/fridaynightmagic/FrostWalker.java new file mode 100644 index 0000000000..9546267fe1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fridaynightmagic/FrostWalker.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.fridaynightmagic; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class FrostWalker extends mage.sets.fatereforged.FrostWalker { + + public FrostWalker(UUID ownerId) { + super(ownerId); + this.cardNumber = 181; + this.expansionSetCode = "FNMP"; + } + + public FrostWalker(final FrostWalker card) { + super(card); + } + + @Override + public FrostWalker copy() { + return new FrostWalker(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fridaynightmagic/HordelingOutburst.java b/Mage.Sets/src/mage/sets/fridaynightmagic/HordelingOutburst.java new file mode 100644 index 0000000000..c8346860d2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fridaynightmagic/HordelingOutburst.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.fridaynightmagic; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class HordelingOutburst extends mage.sets.khansoftarkir.HordelingOutburst { + + public HordelingOutburst(UUID ownerId) { + super(ownerId); + this.cardNumber = 178; + this.expansionSetCode = "FNMP"; + } + + public HordelingOutburst(final HordelingOutburst card) { + super(card); + } + + @Override + public HordelingOutburst copy() { + return new HordelingOutburst(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fridaynightmagic/SuspensionField.java b/Mage.Sets/src/mage/sets/fridaynightmagic/SuspensionField.java new file mode 100644 index 0000000000..a758f38654 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fridaynightmagic/SuspensionField.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.fridaynightmagic; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SuspensionField extends mage.sets.khansoftarkir.SuspensionField { + + public SuspensionField(UUID ownerId) { + super(ownerId); + this.cardNumber = 179; + this.expansionSetCode = "FNMP"; + } + + public SuspensionField(final SuspensionField card) { + super(card); + } + + @Override + public SuspensionField copy() { + return new SuspensionField(this); + } +} diff --git a/Mage.Sets/src/mage/sets/iceage/PitTrap.java b/Mage.Sets/src/mage/sets/iceage/PitTrap.java new file mode 100644 index 0000000000..dcf177c50a --- /dev/null +++ b/Mage.Sets/src/mage/sets/iceage/PitTrap.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.iceage; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class PitTrap extends mage.sets.urzassaga.PitTrap { + + public PitTrap(UUID ownerId) { + super(ownerId); + this.cardNumber = 308; + this.expansionSetCode = "ICE"; + } + + public PitTrap(final PitTrap card) { + super(card); + } + + @Override + public PitTrap copy() { + return new PitTrap(this); + } +} diff --git a/Mage.Sets/src/mage/sets/launchparty/DeathbringerRegent.java b/Mage.Sets/src/mage/sets/launchparty/DeathbringerRegent.java new file mode 100644 index 0000000000..84d35f8dc6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/launchparty/DeathbringerRegent.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.launchparty; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DeathbringerRegent extends mage.sets.dragonsoftarkir.DeathbringerRegent { + + public DeathbringerRegent(UUID ownerId) { + super(ownerId); + this.cardNumber = 30; + this.expansionSetCode = "MLP"; + } + + public DeathbringerRegent(final DeathbringerRegent card) { + super(card); + } + + @Override + public DeathbringerRegent copy() { + return new DeathbringerRegent(this); + } +} diff --git a/Mage.Sets/src/mage/sets/launchparty/SandsteppeMastodon.java b/Mage.Sets/src/mage/sets/launchparty/SandsteppeMastodon.java new file mode 100644 index 0000000000..20b14b6af4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/launchparty/SandsteppeMastodon.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.launchparty; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SandsteppeMastodon extends mage.sets.fatereforged.SandsteppeMastodon { + + public SandsteppeMastodon(UUID ownerId) { + super(ownerId); + this.cardNumber = 29; + this.expansionSetCode = "MLP"; + } + + public SandsteppeMastodon(final SandsteppeMastodon card) { + super(card); + } + + @Override + public SandsteppeMastodon copy() { + return new SandsteppeMastodon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/mediainserts/OjutaisCommand.java b/Mage.Sets/src/mage/sets/mediainserts/OjutaisCommand.java new file mode 100644 index 0000000000..7179988e6e --- /dev/null +++ b/Mage.Sets/src/mage/sets/mediainserts/OjutaisCommand.java @@ -0,0 +1,54 @@ +/* + * 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.mediainserts; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class OjutaisCommand extends mage.sets.dragonsoftarkir.OjutaisCommand { + + public OjutaisCommand(UUID ownerId) { + super(ownerId); + this.cardNumber = 106; + this.expansionSetCode = "MBP"; + this.rarity = Rarity.SPECIAL; + } + + public OjutaisCommand(final OjutaisCommand card) { + super(card); + } + + @Override + public OjutaisCommand copy() { + return new OjutaisCommand(this); + } +} diff --git a/Mage.Sets/src/mage/sets/mediainserts/ShamanicRevelation.java b/Mage.Sets/src/mage/sets/mediainserts/ShamanicRevelation.java new file mode 100644 index 0000000000..7cc4a651b9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/mediainserts/ShamanicRevelation.java @@ -0,0 +1,54 @@ +/* + * 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.mediainserts; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ShamanicRevelation extends mage.sets.fatereforged.ShamanicRevelation { + + public ShamanicRevelation(UUID ownerId) { + super(ownerId); + this.cardNumber = 105; + this.expansionSetCode = "MBP"; + this.rarity = Rarity.SPECIAL; + } + + public ShamanicRevelation(final ShamanicRevelation card) { + super(card); + } + + @Override + public ShamanicRevelation copy() { + return new ShamanicRevelation(this); + } +} diff --git a/Mage.Sets/src/mage/sets/seventhedition/PitTrap.java b/Mage.Sets/src/mage/sets/seventhedition/PitTrap.java new file mode 100644 index 0000000000..6af0148519 --- /dev/null +++ b/Mage.Sets/src/mage/sets/seventhedition/PitTrap.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.seventhedition; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class PitTrap extends mage.sets.urzassaga.PitTrap { + + public PitTrap(UUID ownerId) { + super(ownerId); + this.cardNumber = 313; + this.expansionSetCode = "7ED"; + } + + public PitTrap(final PitTrap card) { + super(card); + } + + @Override + public PitTrap copy() { + return new PitTrap(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/DauthiMarauder.java b/Mage.Sets/src/mage/sets/tempest/DauthiMarauder.java new file mode 100644 index 0000000000..ca1b9f45c3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/DauthiMarauder.java @@ -0,0 +1,63 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class DauthiMarauder extends CardImpl { + + public DauthiMarauder(UUID ownerId) { + super(ownerId, 17, "Dauthi Marauder", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}"); + this.expansionSetCode = "TMP"; + this.subtype.add("Dauthi"); + this.subtype.add("Minion"); + this.power = new MageInt(3); + this.toughness = new MageInt(1); + + // Shadow + this.addAbility(ShadowAbility.getInstance()); + } + + public DauthiMarauder(final DauthiMarauder card) { + super(card); + } + + @Override + public DauthiMarauder copy() { + return new DauthiMarauder(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/AcidicSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/AcidicSliver.java new file mode 100644 index 0000000000..315bd00353 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/AcidicSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class AcidicSliver extends mage.sets.stronghold.AcidicSliver { + + public AcidicSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 206; + this.expansionSetCode = "TPR"; + } + + public AcidicSliver(final AcidicSliver card) { + super(card); + } + + @Override + public AcidicSliver copy() { + return new AcidicSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Aftershock.java b/Mage.Sets/src/mage/sets/tempestremastered/Aftershock.java new file mode 100644 index 0000000000..bdecf0e5ef --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Aftershock.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Aftershock extends mage.sets.tempest.Aftershock { + + public Aftershock(UUID ownerId) { + super(ownerId); + this.cardNumber = 124; + this.expansionSetCode = "TPR"; + } + + public Aftershock(final Aftershock card) { + super(card); + } + + @Override + public Aftershock copy() { + return new Aftershock(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Aluren.java b/Mage.Sets/src/mage/sets/tempestremastered/Aluren.java new file mode 100644 index 0000000000..2a9f8e0b69 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Aluren.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Aluren extends mage.sets.tempest.Aluren { + + public Aluren(UUID ownerId) { + super(ownerId); + this.cardNumber = 165; + this.expansionSetCode = "TPR"; + } + + public Aluren(final Aluren card) { + super(card); + } + + @Override + public Aluren copy() { + return new Aluren(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Anarchist.java b/Mage.Sets/src/mage/sets/tempestremastered/Anarchist.java new file mode 100644 index 0000000000..615878a605 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Anarchist.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Anarchist extends mage.sets.ninthedition.Anarchist { + + public Anarchist(UUID ownerId) { + super(ownerId); + this.cardNumber = 125; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public Anarchist(final Anarchist card) { + super(card); + } + + @Override + public Anarchist copy() { + return new Anarchist(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/AngelicBlessing.java b/Mage.Sets/src/mage/sets/tempestremastered/AngelicBlessing.java new file mode 100644 index 0000000000..204c19315d --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/AngelicBlessing.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class AngelicBlessing extends mage.sets.tenth.AngelicBlessing { + + public AngelicBlessing(UUID ownerId) { + super(ownerId); + this.cardNumber = 1; + this.expansionSetCode = "TPR"; + } + + public AngelicBlessing(final AngelicBlessing card) { + super(card); + } + + @Override + public AngelicBlessing copy() { + return new AngelicBlessing(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/AngelicProtector.java b/Mage.Sets/src/mage/sets/tempestremastered/AngelicProtector.java new file mode 100644 index 0000000000..ce2c7ac5fb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/AngelicProtector.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class AngelicProtector extends mage.sets.tempest.AngelicProtector { + + public AngelicProtector(UUID ownerId) { + super(ownerId); + this.cardNumber = 2; + this.expansionSetCode = "TPR"; + } + + public AngelicProtector(final AngelicProtector card) { + super(card); + } + + @Override + public AngelicProtector copy() { + return new AngelicProtector(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ArmorSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/ArmorSliver.java new file mode 100644 index 0000000000..55158b8b19 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ArmorSliver.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ArmorSliver extends mage.sets.tempest.ArmorSliver { + + public ArmorSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 4; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public ArmorSliver(final ArmorSliver card) { + super(card); + } + + @Override + public ArmorSliver copy() { + return new ArmorSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ArmoredPegasus.java b/Mage.Sets/src/mage/sets/tempestremastered/ArmoredPegasus.java new file mode 100644 index 0000000000..045e73aeac --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ArmoredPegasus.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ArmoredPegasus extends mage.sets.tempest.ArmoredPegasus { + + public ArmoredPegasus(UUID ownerId) { + super(ownerId); + this.cardNumber = 5; + this.expansionSetCode = "TPR"; + } + + public ArmoredPegasus(final ArmoredPegasus card) { + super(card); + } + + @Override + public ArmoredPegasus copy() { + return new ArmoredPegasus(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Bandage.java b/Mage.Sets/src/mage/sets/tempestremastered/Bandage.java new file mode 100644 index 0000000000..f71b4752dd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Bandage.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Bandage extends mage.sets.tenth.Bandage { + + public Bandage(UUID ownerId) { + super(ownerId); + this.cardNumber = 7; + this.expansionSetCode = "TPR"; + } + + public Bandage(final Bandage card) { + super(card); + } + + @Override + public Bandage copy() { + return new Bandage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/BarbedSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/BarbedSliver.java new file mode 100644 index 0000000000..a282a9f438 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/BarbedSliver.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class BarbedSliver extends mage.sets.tempest.BarbedSliver { + + public BarbedSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 126; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public BarbedSliver(final BarbedSliver card) { + super(card); + } + + @Override + public BarbedSliver copy() { + return new BarbedSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/BottleGnomes.java b/Mage.Sets/src/mage/sets/tempestremastered/BottleGnomes.java new file mode 100644 index 0000000000..6c8f9ef0ac --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/BottleGnomes.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class BottleGnomes extends mage.sets.tempest.BottleGnomes { + + public BottleGnomes(UUID ownerId) { + super(ownerId); + this.cardNumber = 217; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public BottleGnomes(final BottleGnomes card) { + super(card); + } + + @Override + public BottleGnomes copy() { + return new BottleGnomes(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CalderaLake.java b/Mage.Sets/src/mage/sets/tempestremastered/CalderaLake.java new file mode 100644 index 0000000000..cdeaa22b01 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CalderaLake.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class CalderaLake extends mage.sets.tempest.CalderaLake { + + public CalderaLake(UUID ownerId) { + super(ownerId); + this.cardNumber = 235; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public CalderaLake(final CalderaLake card) { + super(card); + } + + @Override + public CalderaLake copy() { + return new CalderaLake(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CanopySpider.java b/Mage.Sets/src/mage/sets/tempestremastered/CanopySpider.java new file mode 100644 index 0000000000..889ea99482 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CanopySpider.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CanopySpider extends mage.sets.tempest.CanopySpider { + + public CanopySpider(UUID ownerId) { + super(ownerId); + this.cardNumber = 166; + this.expansionSetCode = "TPR"; + } + + public CanopySpider(final CanopySpider card) { + super(card); + } + + @Override + public CanopySpider copy() { + return new CanopySpider(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CanyonWildcat.java b/Mage.Sets/src/mage/sets/tempestremastered/CanyonWildcat.java new file mode 100644 index 0000000000..33e93aee73 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CanyonWildcat.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CanyonWildcat extends mage.sets.tempest.CanyonWildcat { + + public CanyonWildcat(UUID ownerId) { + super(ownerId); + this.cardNumber = 127; + this.expansionSetCode = "TPR"; + } + + public CanyonWildcat(final CanyonWildcat card) { + super(card); + } + + @Override + public CanyonWildcat copy() { + return new CanyonWildcat(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Capsize.java b/Mage.Sets/src/mage/sets/tempestremastered/Capsize.java new file mode 100644 index 0000000000..613b1acdf8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Capsize.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Capsize extends mage.sets.tempest.Capsize { + + public Capsize(UUID ownerId) { + super(ownerId); + this.cardNumber = 42; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public Capsize(final Capsize card) { + super(card); + } + + @Override + public Capsize copy() { + return new Capsize(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Carnassid.java b/Mage.Sets/src/mage/sets/tempestremastered/Carnassid.java new file mode 100644 index 0000000000..eff691f8a2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Carnassid.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Carnassid extends mage.sets.stronghold.Carnassid { + + public Carnassid(UUID ownerId) { + super(ownerId); + this.cardNumber = 167; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public Carnassid(final Carnassid card) { + super(card); + } + + @Override + public Carnassid copy() { + return new Carnassid(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Carnophage.java b/Mage.Sets/src/mage/sets/tempestremastered/Carnophage.java new file mode 100644 index 0000000000..0c2e302a63 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Carnophage.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Carnophage extends mage.sets.exodus.Carnophage { + + public Carnophage(UUID ownerId) { + super(ownerId); + this.cardNumber = 84; + this.expansionSetCode = "TPR"; + } + + public Carnophage(final Carnophage card) { + super(card); + } + + @Override + public Carnophage copy() { + return new Carnophage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Cataclysm.java b/Mage.Sets/src/mage/sets/tempestremastered/Cataclysm.java new file mode 100644 index 0000000000..edbd09d879 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Cataclysm.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Cataclysm extends mage.sets.exodus.Cataclysm { + + public Cataclysm(UUID ownerId) { + super(ownerId); + this.cardNumber = 8; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public Cataclysm(final Cataclysm card) { + super(card); + } + + @Override + public Cataclysm copy() { + return new Cataclysm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ChargingPaladin.java b/Mage.Sets/src/mage/sets/tempestremastered/ChargingPaladin.java new file mode 100644 index 0000000000..dee3c8bdaa --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ChargingPaladin.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ChargingPaladin extends mage.sets.divinevsdemonic.ChargingPaladin { + + public ChargingPaladin(UUID ownerId) { + super(ownerId); + this.cardNumber = 9; + this.expansionSetCode = "TPR"; + } + + public ChargingPaladin(final ChargingPaladin card) { + super(card); + } + + @Override + public ChargingPaladin copy() { + return new ChargingPaladin(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CinderMarsh.java b/Mage.Sets/src/mage/sets/tempestremastered/CinderMarsh.java new file mode 100644 index 0000000000..f9caecf3ee --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CinderMarsh.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CinderMarsh extends mage.sets.tempest.CinderMarsh { + + public CinderMarsh(UUID ownerId) { + super(ownerId); + this.cardNumber = 236; + this.expansionSetCode = "TPR"; + } + + public CinderMarsh(final CinderMarsh card) { + super(card); + } + + @Override + public CinderMarsh copy() { + return new CinderMarsh(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CityOfTraitors.java b/Mage.Sets/src/mage/sets/tempestremastered/CityOfTraitors.java new file mode 100644 index 0000000000..211232c204 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CityOfTraitors.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CityOfTraitors extends mage.sets.exodus.CityOfTraitors { + + public CityOfTraitors(UUID ownerId) { + super(ownerId); + this.cardNumber = 237; + this.expansionSetCode = "TPR"; + } + + public CityOfTraitors(final CityOfTraitors card) { + super(card); + } + + @Override + public CityOfTraitors copy() { + return new CityOfTraitors(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ClotSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/ClotSliver.java new file mode 100644 index 0000000000..00d4527dd9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ClotSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ClotSliver extends mage.sets.tempest.ClotSliver { + + public ClotSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 85; + this.expansionSetCode = "TPR"; + } + + public ClotSliver(final ClotSliver card) { + super(card); + } + + @Override + public ClotSliver copy() { + return new ClotSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CoatOfArms.java b/Mage.Sets/src/mage/sets/tempestremastered/CoatOfArms.java new file mode 100644 index 0000000000..c9941f4dd1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CoatOfArms.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CoatOfArms extends mage.sets.magic2010.CoatOfArms { + + public CoatOfArms(UUID ownerId) { + super(ownerId); + this.cardNumber = 218; + this.expansionSetCode = "TPR"; + } + + public CoatOfArms(final CoatOfArms card) { + super(card); + } + + @Override + public CoatOfArms copy() { + return new CoatOfArms(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Coercion.java b/Mage.Sets/src/mage/sets/tempestremastered/Coercion.java new file mode 100644 index 0000000000..b4664ccd84 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Coercion.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Coercion extends mage.sets.visions.Coercion { + + public Coercion(UUID ownerId) { + super(ownerId); + this.cardNumber = 86; + this.expansionSetCode = "TPR"; + } + + public Coercion(final Coercion card) { + super(card); + } + + @Override + public Coercion copy() { + return new Coercion(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CoiledTinviper.java b/Mage.Sets/src/mage/sets/tempestremastered/CoiledTinviper.java new file mode 100644 index 0000000000..75c73c7510 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CoiledTinviper.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CoiledTinviper extends mage.sets.tempest.CoiledTinviper { + + public CoiledTinviper(UUID ownerId) { + super(ownerId); + this.cardNumber = 219; + this.expansionSetCode = "TPR"; + } + + public CoiledTinviper(final CoiledTinviper card) { + super(card); + } + + @Override + public CoiledTinviper copy() { + return new CoiledTinviper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CommanderGrevenIlVec.java b/Mage.Sets/src/mage/sets/tempestremastered/CommanderGrevenIlVec.java new file mode 100644 index 0000000000..08a348def4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CommanderGrevenIlVec.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CommanderGrevenIlVec extends mage.sets.tempest.CommanderGrevenIlVec { + + public CommanderGrevenIlVec(UUID ownerId) { + super(ownerId); + this.cardNumber = 88; + this.expansionSetCode = "TPR"; + } + + public CommanderGrevenIlVec(final CommanderGrevenIlVec card) { + super(card); + } + + @Override + public CommanderGrevenIlVec copy() { + return new CommanderGrevenIlVec(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CorpseDance.java b/Mage.Sets/src/mage/sets/tempestremastered/CorpseDance.java new file mode 100644 index 0000000000..a613f5d459 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CorpseDance.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CorpseDance extends mage.sets.tempest.CorpseDance { + + public CorpseDance(UUID ownerId) { + super(ownerId); + this.cardNumber = 89; + this.expansionSetCode = "TPR"; + } + + public CorpseDance(final CorpseDance card) { + super(card); + } + + @Override + public CorpseDance copy() { + return new CorpseDance(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Counterspell.java b/Mage.Sets/src/mage/sets/tempestremastered/Counterspell.java new file mode 100644 index 0000000000..37bb1544ae --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Counterspell.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Counterspell extends mage.sets.tempest.Counterspell { + + public Counterspell(UUID ownerId) { + super(ownerId); + this.cardNumber = 43; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public Counterspell(final Counterspell card) { + super(card); + } + + @Override + public Counterspell copy() { + return new Counterspell(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CrystallineSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/CrystallineSliver.java new file mode 100644 index 0000000000..a5b7283bb0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CrystallineSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CrystallineSliver extends mage.sets.stronghold.CrystallineSliver { + + public CrystallineSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 207; + this.expansionSetCode = "TPR"; + } + + public CrystallineSliver(final CrystallineSliver card) { + super(card); + } + + @Override + public CrystallineSliver copy() { + return new CrystallineSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Curiosity.java b/Mage.Sets/src/mage/sets/tempestremastered/Curiosity.java new file mode 100644 index 0000000000..4d587ce793 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Curiosity.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Curiosity extends mage.sets.innistrad.Curiosity { + + public Curiosity(UUID ownerId) { + super(ownerId); + this.cardNumber = 44; + this.expansionSetCode = "TPR"; + } + + public Curiosity(final Curiosity card) { + super(card); + } + + @Override + public Curiosity copy() { + return new Curiosity(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CursedFlesh.java b/Mage.Sets/src/mage/sets/tempestremastered/CursedFlesh.java new file mode 100644 index 0000000000..2ce7e1208a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CursedFlesh.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CursedFlesh extends mage.sets.invasion.CursedFlesh { + + public CursedFlesh(UUID ownerId) { + super(ownerId); + this.cardNumber = 91; + this.expansionSetCode = "TPR"; + } + + public CursedFlesh(final CursedFlesh card) { + super(card); + } + + @Override + public CursedFlesh copy() { + return new CursedFlesh(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CursedScroll.java b/Mage.Sets/src/mage/sets/tempestremastered/CursedScroll.java new file mode 100644 index 0000000000..0713065898 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CursedScroll.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class CursedScroll extends mage.sets.tempest.CursedScroll { + + public CursedScroll(UUID ownerId) { + super(ownerId); + this.cardNumber = 220; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public CursedScroll(final CursedScroll card) { + super(card); + } + + @Override + public CursedScroll copy() { + return new CursedScroll(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DarkBanishing.java b/Mage.Sets/src/mage/sets/tempestremastered/DarkBanishing.java new file mode 100644 index 0000000000..996bfcfb41 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DarkBanishing.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DarkBanishing extends mage.sets.tempest.DarkBanishing { + + public DarkBanishing(UUID ownerId) { + super(ownerId); + this.cardNumber = 92; + this.expansionSetCode = "TPR"; + } + + public DarkBanishing(final DarkBanishing card) { + super(card); + } + + @Override + public DarkBanishing copy() { + return new DarkBanishing(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DarkRitual.java b/Mage.Sets/src/mage/sets/tempestremastered/DarkRitual.java new file mode 100644 index 0000000000..cde523508e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DarkRitual.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DarkRitual extends mage.sets.planechase.DarkRitual { + + public DarkRitual(UUID ownerId) { + super(ownerId); + this.cardNumber = 93; + this.expansionSetCode = "TPR"; + } + + public DarkRitual(final DarkRitual card) { + super(card); + } + + @Override + public DarkRitual copy() { + return new DarkRitual(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DauthiHorror.java b/Mage.Sets/src/mage/sets/tempestremastered/DauthiHorror.java new file mode 100644 index 0000000000..d174815b7f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DauthiHorror.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DauthiHorror extends mage.sets.tempest.DauthiHorror { + + public DauthiHorror(UUID ownerId) { + super(ownerId); + this.cardNumber = 94; + this.expansionSetCode = "TPR"; + } + + public DauthiHorror(final DauthiHorror card) { + super(card); + } + + @Override + public DauthiHorror copy() { + return new DauthiHorror(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DauthiMarauder.java b/Mage.Sets/src/mage/sets/tempestremastered/DauthiMarauder.java new file mode 100644 index 0000000000..99eb29ee32 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DauthiMarauder.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class DauthiMarauder extends mage.sets.tempest.DauthiMarauder { + + public DauthiMarauder(UUID ownerId) { + super(ownerId); + this.cardNumber = 96; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public DauthiMarauder(final DauthiMarauder card) { + super(card); + } + + @Override + public DauthiMarauder copy() { + return new DauthiMarauder(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DauthiSlayer.java b/Mage.Sets/src/mage/sets/tempestremastered/DauthiSlayer.java new file mode 100644 index 0000000000..e5ec0f5f2b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DauthiSlayer.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class DauthiSlayer extends mage.sets.tempest.DauthiSlayer { + + public DauthiSlayer(UUID ownerId) { + super(ownerId); + this.cardNumber = 97; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public DauthiSlayer(final DauthiSlayer card) { + super(card); + } + + @Override + public DauthiSlayer copy() { + return new DauthiSlayer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DeathPitsOfRath.java b/Mage.Sets/src/mage/sets/tempestremastered/DeathPitsOfRath.java new file mode 100644 index 0000000000..11d283648f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DeathPitsOfRath.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DeathPitsOfRath extends mage.sets.tempest.DeathPitsOfRath { + + public DeathPitsOfRath(UUID ownerId) { + super(ownerId); + this.cardNumber = 99; + this.expansionSetCode = "TPR"; + } + + public DeathPitsOfRath(final DeathPitsOfRath card) { + super(card); + } + + @Override + public DeathPitsOfRath copy() { + return new DeathPitsOfRath(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DiabolicEdict.java b/Mage.Sets/src/mage/sets/tempestremastered/DiabolicEdict.java new file mode 100644 index 0000000000..c933259250 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DiabolicEdict.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DiabolicEdict extends mage.sets.tempest.DiabolicEdict { + + public DiabolicEdict(UUID ownerId) { + super(ownerId); + this.cardNumber = 102; + this.expansionSetCode = "TPR"; + } + + public DiabolicEdict(final DiabolicEdict card) { + super(card); + } + + @Override + public DiabolicEdict copy() { + return new DiabolicEdict(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Disenchant.java b/Mage.Sets/src/mage/sets/tempestremastered/Disenchant.java new file mode 100644 index 0000000000..1feca7f484 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Disenchant.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Disenchant extends mage.sets.tempest.Disenchant { + + public Disenchant(UUID ownerId) { + super(ownerId); + this.cardNumber = 11; + this.expansionSetCode = "TPR"; + } + + public Disenchant(final Disenchant card) { + super(card); + } + + @Override + public Disenchant copy() { + return new Disenchant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Dismiss.java b/Mage.Sets/src/mage/sets/tempestremastered/Dismiss.java new file mode 100644 index 0000000000..7c8581331a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Dismiss.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Dismiss extends mage.sets.tempest.Dismiss { + + public Dismiss(UUID ownerId) { + super(ownerId); + this.cardNumber = 45; + this.expansionSetCode = "TPR"; + } + + public Dismiss(final Dismiss card) { + super(card); + } + + @Override + public Dismiss copy() { + return new Dismiss(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DreamHalls.java b/Mage.Sets/src/mage/sets/tempestremastered/DreamHalls.java new file mode 100644 index 0000000000..646f0654ec --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DreamHalls.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class DreamHalls extends mage.sets.stronghold.DreamHalls { + + public DreamHalls(UUID ownerId) { + super(ownerId); + this.cardNumber = 46; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public DreamHalls(final DreamHalls card) { + super(card); + } + + @Override + public DreamHalls copy() { + return new DreamHalls(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ElvishFury.java b/Mage.Sets/src/mage/sets/tempestremastered/ElvishFury.java new file mode 100644 index 0000000000..a234e3f9ab --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ElvishFury.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ElvishFury extends mage.sets.tempest.ElvishFury { + + public ElvishFury(UUID ownerId) { + super(ownerId); + this.cardNumber = 170; + this.expansionSetCode = "TPR"; + } + + public ElvishFury(final ElvishFury card) { + super(card); + } + + @Override + public ElvishFury copy() { + return new ElvishFury(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/EmmessiTome.java b/Mage.Sets/src/mage/sets/tempestremastered/EmmessiTome.java new file mode 100644 index 0000000000..cae6db04dd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/EmmessiTome.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class EmmessiTome extends mage.sets.tempest.EmmessiTome { + + public EmmessiTome(UUID ownerId) { + super(ownerId); + this.cardNumber = 221; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public EmmessiTome(final EmmessiTome card) { + super(card); + } + + @Override + public EmmessiTome copy() { + return new EmmessiTome(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Ephemeron.java b/Mage.Sets/src/mage/sets/tempestremastered/Ephemeron.java new file mode 100644 index 0000000000..0bb7bda2d7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Ephemeron.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Ephemeron extends mage.sets.exodus.Ephemeron { + + public Ephemeron(UUID ownerId) { + super(ownerId); + this.cardNumber = 48; + this.expansionSetCode = "TPR"; + } + + public Ephemeron(final Ephemeron card) { + super(card); + } + + @Override + public Ephemeron copy() { + return new Ephemeron(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ErraticPortal.java b/Mage.Sets/src/mage/sets/tempestremastered/ErraticPortal.java new file mode 100644 index 0000000000..072ed84e8a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ErraticPortal.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ErraticPortal extends mage.sets.exodus.ErraticPortal { + + public ErraticPortal(UUID ownerId) { + super(ownerId); + this.cardNumber = 222; + this.expansionSetCode = "TPR"; + } + + public ErraticPortal(final ErraticPortal card) { + super(card); + } + + @Override + public ErraticPortal copy() { + return new ErraticPortal(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/EvincarsJustice.java b/Mage.Sets/src/mage/sets/tempestremastered/EvincarsJustice.java new file mode 100644 index 0000000000..c06679f533 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/EvincarsJustice.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class EvincarsJustice extends mage.sets.tempest.EvincarsJustice { + + public EvincarsJustice(UUID ownerId) { + super(ownerId); + this.cardNumber = 104; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public EvincarsJustice(final EvincarsJustice card) { + super(card); + } + + @Override + public EvincarsJustice copy() { + return new EvincarsJustice(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java b/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java new file mode 100644 index 0000000000..cb56fb0cc8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ExaltedDragon extends mage.sets.exodus.ExaltedDragon { + + public ExaltedDragon(UUID ownerId) { + super(ownerId); + this.cardNumber = 12; + this.expansionSetCode = "TPR"; + } + + public ExaltedDragon(final ExaltedDragon card) { + super(card); + } + + @Override + public ExaltedDragon copy() { + return new ExaltedDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FightingDrake.java b/Mage.Sets/src/mage/sets/tempestremastered/FightingDrake.java new file mode 100644 index 0000000000..a93431f765 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FightingDrake.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class FightingDrake extends mage.sets.tempest.FightingDrake { + + public FightingDrake(UUID ownerId) { + super(ownerId); + this.cardNumber = 49; + this.expansionSetCode = "TPR"; + } + + public FightingDrake(final FightingDrake card) { + super(card); + } + + @Override + public FightingDrake copy() { + return new FightingDrake(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneWyvern.java b/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneWyvern.java new file mode 100644 index 0000000000..e54974e329 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneWyvern.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class FlowstoneWyvern extends mage.sets.tempest.FlowstoneWyvern { + + public FlowstoneWyvern(UUID ownerId) { + super(ownerId); + this.cardNumber = 134; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public FlowstoneWyvern(final FlowstoneWyvern card) { + super(card); + } + + @Override + public FlowstoneWyvern copy() { + return new FlowstoneWyvern(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Forbid.java b/Mage.Sets/src/mage/sets/tempestremastered/Forbid.java new file mode 100644 index 0000000000..3deb80158e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Forbid.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Forbid extends mage.sets.exodus.Forbid { + + public Forbid(UUID ownerId) { + super(ownerId); + this.cardNumber = 50; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.RARE; + } + + public Forbid(final Forbid card) { + super(card); + } + + @Override + public Forbid copy() { + return new Forbid(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Forest1.java b/Mage.Sets/src/mage/sets/tempestremastered/Forest1.java new file mode 100644 index 0000000000..42815ae232 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Forest1.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Forest1 extends mage.cards.basiclands.Forest { + + public Forest1(UUID ownerId) { + super(ownerId, 266); + this.expansionSetCode = "TPR"; + } + + public Forest1(final Forest1 card) { + super(card); + } + + @Override + public Forest1 copy() { + return new Forest1(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Forest2.java b/Mage.Sets/src/mage/sets/tempestremastered/Forest2.java new file mode 100644 index 0000000000..bafb02a829 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Forest2.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Forest2 extends mage.cards.basiclands.Forest { + + public Forest2(UUID ownerId) { + super(ownerId, 267); + this.expansionSetCode = "TPR"; + } + + public Forest2(final Forest2 card) { + super(card); + } + + @Override + public Forest2 copy() { + return new Forest2(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Forest3.java b/Mage.Sets/src/mage/sets/tempestremastered/Forest3.java new file mode 100644 index 0000000000..e07d818ebe --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Forest3.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Forest3 extends mage.cards.basiclands.Forest { + + public Forest3(UUID ownerId) { + super(ownerId, 268); + this.expansionSetCode = "TPR"; + } + + public Forest3(final Forest3 card) { + super(card); + } + + @Override + public Forest3 copy() { + return new Forest3(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Forest4.java b/Mage.Sets/src/mage/sets/tempestremastered/Forest4.java new file mode 100644 index 0000000000..e8d463f44a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Forest4.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Forest4 extends mage.cards.basiclands.Forest { + + public Forest4(UUID ownerId) { + super(ownerId, 269); + this.expansionSetCode = "TPR"; + } + + public Forest4(final Forest4 card) { + super(card); + } + + @Override + public Forest4 copy() { + return new Forest4(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Gallantry.java b/Mage.Sets/src/mage/sets/tempestremastered/Gallantry.java new file mode 100644 index 0000000000..491fac41a9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Gallantry.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Gallantry extends mage.sets.tempest.Gallantry { + + public Gallantry(UUID ownerId) { + super(ownerId); + this.cardNumber = 14; + this.expansionSetCode = "TPR"; + } + + public Gallantry(final Gallantry card) { + super(card); + } + + @Override + public Gallantry copy() { + return new Gallantry(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/GaseousForm.java b/Mage.Sets/src/mage/sets/tempestremastered/GaseousForm.java new file mode 100644 index 0000000000..ed37e0377a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/GaseousForm.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class GaseousForm extends mage.sets.tempest.GaseousForm { + + public GaseousForm(UUID ownerId) { + super(ownerId); + this.cardNumber = 51; + this.expansionSetCode = "TPR"; + } + + public GaseousForm(final GaseousForm card) { + super(card); + } + + @Override + public GaseousForm copy() { + return new GaseousForm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/GerrardsBattleCry.java b/Mage.Sets/src/mage/sets/tempestremastered/GerrardsBattleCry.java new file mode 100644 index 0000000000..a8ffeeabcd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/GerrardsBattleCry.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class GerrardsBattleCry extends mage.sets.tempest.GerrardsBattleCry { + + public GerrardsBattleCry(UUID ownerId) { + super(ownerId); + this.cardNumber = 15; + this.expansionSetCode = "TPR"; + } + + public GerrardsBattleCry(final GerrardsBattleCry card) { + super(card); + } + + @Override + public GerrardsBattleCry copy() { + return new GerrardsBattleCry(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/GoblinBombardment.java b/Mage.Sets/src/mage/sets/tempestremastered/GoblinBombardment.java new file mode 100644 index 0000000000..7777364c85 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/GoblinBombardment.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class GoblinBombardment extends mage.sets.tempest.GoblinBombardment { + + public GoblinBombardment(UUID ownerId) { + super(ownerId); + this.cardNumber = 136; + this.expansionSetCode = "TPR"; + } + + public GoblinBombardment(final GoblinBombardment card) { + super(card); + } + + @Override + public GoblinBombardment copy() { + return new GoblinBombardment(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Gravedigger.java b/Mage.Sets/src/mage/sets/tempestremastered/Gravedigger.java new file mode 100644 index 0000000000..8c53e2d5c5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Gravedigger.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Gravedigger extends mage.sets.tenth.Gravedigger { + + public Gravedigger(UUID ownerId) { + super(ownerId); + this.cardNumber = 106; + this.expansionSetCode = "TPR"; + } + + public Gravedigger(final Gravedigger card) { + super(card); + } + + @Override + public Gravedigger copy() { + return new Gravedigger(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Grindstone.java b/Mage.Sets/src/mage/sets/tempestremastered/Grindstone.java new file mode 100644 index 0000000000..a494ef2a41 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Grindstone.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Grindstone extends mage.sets.tempest.Grindstone { + + public Grindstone(UUID ownerId) { + super(ownerId); + this.cardNumber = 223; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public Grindstone(final Grindstone card) { + super(card); + } + + @Override + public Grindstone copy() { + return new Grindstone(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Harrow.java b/Mage.Sets/src/mage/sets/tempestremastered/Harrow.java new file mode 100644 index 0000000000..f490e3ecd9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Harrow.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Harrow extends mage.sets.zendikar.Harrow { + + public Harrow(UUID ownerId) { + super(ownerId); + this.cardNumber = 172; + this.expansionSetCode = "TPR"; + } + + public Harrow(final Harrow card) { + super(card); + } + + @Override + public Harrow copy() { + return new Harrow(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/HeartwoodGiant.java b/Mage.Sets/src/mage/sets/tempestremastered/HeartwoodGiant.java new file mode 100644 index 0000000000..9a19bc0a52 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/HeartwoodGiant.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class HeartwoodGiant extends mage.sets.tempest.HeartwoodGiant { + + public HeartwoodGiant(UUID ownerId) { + super(ownerId); + this.cardNumber = 174; + this.expansionSetCode = "TPR"; + } + + public HeartwoodGiant(final HeartwoodGiant card) { + super(card); + } + + @Override + public HeartwoodGiant copy() { + return new HeartwoodGiant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/HermitDruid.java b/Mage.Sets/src/mage/sets/tempestremastered/HermitDruid.java new file mode 100644 index 0000000000..071ddf9771 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/HermitDruid.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class HermitDruid extends mage.sets.stronghold.HermitDruid { + + public HermitDruid(UUID ownerId) { + super(ownerId); + this.cardNumber = 175; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public HermitDruid(final HermitDruid card) { + super(card); + } + + @Override + public HermitDruid copy() { + return new HermitDruid(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/HibernationSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/HibernationSliver.java new file mode 100644 index 0000000000..00a72e4fc9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/HibernationSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class HibernationSliver extends mage.sets.stronghold.HibernationSliver { + + public HibernationSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 209; + this.expansionSetCode = "TPR"; + } + + public HibernationSliver(final HibernationSliver card) { + super(card); + } + + @Override + public HibernationSliver copy() { + return new HibernationSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/HornedSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/HornedSliver.java new file mode 100644 index 0000000000..bf720f3cf2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/HornedSliver.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class HornedSliver extends mage.sets.tempest.HornedSliver { + + public HornedSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 176; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public HornedSliver(final HornedSliver card) { + super(card); + } + + @Override + public HornedSliver copy() { + return new HornedSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/HornedTurtle.java b/Mage.Sets/src/mage/sets/tempestremastered/HornedTurtle.java new file mode 100644 index 0000000000..b6ce591bab --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/HornedTurtle.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class HornedTurtle extends mage.sets.magic2010.HornedTurtle { + + public HornedTurtle(UUID ownerId) { + super(ownerId); + this.cardNumber = 53; + this.expansionSetCode = "TPR"; + } + + public HornedTurtle(final HornedTurtle card) { + super(card); + } + + @Override + public HornedTurtle copy() { + return new HornedTurtle(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Humility.java b/Mage.Sets/src/mage/sets/tempestremastered/Humility.java new file mode 100644 index 0000000000..1935712f06 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Humility.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Humility extends mage.sets.tempest.Humility { + + public Humility(UUID ownerId) { + super(ownerId); + this.cardNumber = 16; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public Humility(final Humility card) { + super(card); + } + + @Override + public Humility copy() { + return new Humility(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Intuition.java b/Mage.Sets/src/mage/sets/tempestremastered/Intuition.java new file mode 100644 index 0000000000..3e0e25ee22 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Intuition.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Intuition extends mage.sets.tempest.Intuition { + + public Intuition(UUID ownerId) { + super(ownerId); + this.cardNumber = 54; + this.expansionSetCode = "TPR"; + } + + public Intuition(final Intuition card) { + super(card); + } + + @Override + public Intuition copy() { + return new Intuition(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Island1.java b/Mage.Sets/src/mage/sets/tempestremastered/Island1.java new file mode 100644 index 0000000000..1785d1efc7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Island1.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Island1 extends mage.cards.basiclands.Island { + + public Island1(UUID ownerId) { + super(ownerId, 254); + this.expansionSetCode = "TPR"; + } + + public Island1(final Island1 card) { + super(card); + } + + @Override + public Island1 copy() { + return new Island1(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Island2.java b/Mage.Sets/src/mage/sets/tempestremastered/Island2.java new file mode 100644 index 0000000000..5f9bada053 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Island2.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Island2 extends mage.cards.basiclands.Island { + + public Island2(UUID ownerId) { + super(ownerId, 255); + this.expansionSetCode = "TPR"; + } + + public Island2(final Island2 card) { + super(card); + } + + @Override + public Island2 copy() { + return new Island2(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Island3.java b/Mage.Sets/src/mage/sets/tempestremastered/Island3.java new file mode 100644 index 0000000000..645031c4af --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Island3.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Island3 extends mage.cards.basiclands.Island { + + public Island3(UUID ownerId) { + super(ownerId, 256); + this.expansionSetCode = "TPR"; + } + + public Island3(final Island3 card) { + super(card); + } + + @Override + public Island3 copy() { + return new Island3(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Island4.java b/Mage.Sets/src/mage/sets/tempestremastered/Island4.java new file mode 100644 index 0000000000..90ac613b58 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Island4.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Island4 extends mage.cards.basiclands.Island { + + public Island4(UUID ownerId) { + super(ownerId, 257); + this.expansionSetCode = "TPR"; + } + + public Island4(final Island4 card) { + super(card); + } + + @Override + public Island4 copy() { + return new Island4(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/JinxedIdol.java b/Mage.Sets/src/mage/sets/tempestremastered/JinxedIdol.java new file mode 100644 index 0000000000..4bb4c0a166 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/JinxedIdol.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class JinxedIdol extends mage.sets.magic2011.JinxedIdol { + + public JinxedIdol(UUID ownerId) { + super(ownerId); + this.cardNumber = 224; + this.expansionSetCode = "TPR"; + } + + public JinxedIdol(final JinxedIdol card) { + super(card); + } + + @Override + public JinxedIdol copy() { + return new JinxedIdol(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Kezzerdrix.java b/Mage.Sets/src/mage/sets/tempestremastered/Kezzerdrix.java new file mode 100644 index 0000000000..bbf0446c47 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Kezzerdrix.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Kezzerdrix extends mage.sets.tempest.Kezzerdrix { + + public Kezzerdrix(UUID ownerId) { + super(ownerId); + this.cardNumber = 107; + this.expansionSetCode = "TPR"; + } + + public Kezzerdrix(final Kezzerdrix card) { + super(card); + } + + @Override + public Kezzerdrix copy() { + return new Kezzerdrix(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Kindle.java b/Mage.Sets/src/mage/sets/tempestremastered/Kindle.java new file mode 100644 index 0000000000..b8d66195f0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Kindle.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Kindle extends mage.sets.tempest.Kindle { + + public Kindle(UUID ownerId) { + super(ownerId); + this.cardNumber = 137; + this.expansionSetCode = "TPR"; + } + + public Kindle(final Kindle card) { + super(card); + } + + @Override + public Kindle copy() { + return new Kindle(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/LabRats.java b/Mage.Sets/src/mage/sets/tempestremastered/LabRats.java new file mode 100644 index 0000000000..a529989b66 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/LabRats.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class LabRats extends mage.sets.stronghold.LabRats { + + public LabRats(UUID ownerId) { + super(ownerId); + this.cardNumber = 108; + this.expansionSetCode = "TPR"; + } + + public LabRats(final LabRats card) { + super(card); + } + + @Override + public LabRats copy() { + return new LabRats(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/LegacysAllure.java b/Mage.Sets/src/mage/sets/tempestremastered/LegacysAllure.java new file mode 100644 index 0000000000..9f88acee8c --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/LegacysAllure.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class LegacysAllure extends mage.sets.tempest.LegacysAllure { + + public LegacysAllure(UUID ownerId) { + super(ownerId); + this.cardNumber = 57; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.RARE; + } + + public LegacysAllure(final LegacysAllure card) { + super(card); + } + + @Override + public LegacysAllure copy() { + return new LegacysAllure(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/LightningBlast.java b/Mage.Sets/src/mage/sets/tempestremastered/LightningBlast.java new file mode 100644 index 0000000000..69069d1cb7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/LightningBlast.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class LightningBlast extends mage.sets.tempest.LightningBlast { + + public LightningBlast(UUID ownerId) { + super(ownerId); + this.cardNumber = 138; + this.expansionSetCode = "TPR"; + } + + public LightningBlast(final LightningBlast card) { + super(card); + } + + @Override + public LightningBlast copy() { + return new LightningBlast(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/LivingDeath.java b/Mage.Sets/src/mage/sets/tempestremastered/LivingDeath.java new file mode 100644 index 0000000000..97e1833830 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/LivingDeath.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class LivingDeath extends mage.sets.tempest.LivingDeath { + + public LivingDeath(UUID ownerId) { + super(ownerId); + this.cardNumber = 109; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public LivingDeath(final LivingDeath card) { + super(card); + } + + @Override + public LivingDeath copy() { + return new LivingDeath(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/LotusPetal.java b/Mage.Sets/src/mage/sets/tempestremastered/LotusPetal.java new file mode 100644 index 0000000000..634303d1dd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/LotusPetal.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class LotusPetal extends mage.sets.tempest.LotusPetal { + + public LotusPetal(UUID ownerId) { + super(ownerId); + this.cardNumber = 225; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public LotusPetal(final LotusPetal card) { + super(card); + } + + @Override + public LotusPetal copy() { + return new LotusPetal(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/LowlandGiant.java b/Mage.Sets/src/mage/sets/tempestremastered/LowlandGiant.java new file mode 100644 index 0000000000..605895ea9c --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/LowlandGiant.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class LowlandGiant extends mage.sets.tempest.LowlandGiant { + + public LowlandGiant(UUID ownerId) { + super(ownerId); + this.cardNumber = 139; + this.expansionSetCode = "TPR"; + } + + public LowlandGiant(final LowlandGiant card) { + super(card); + } + + @Override + public LowlandGiant copy() { + return new LowlandGiant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ManaLeak.java b/Mage.Sets/src/mage/sets/tempestremastered/ManaLeak.java new file mode 100644 index 0000000000..39b071f57c --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ManaLeak.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ManaLeak extends mage.sets.magic2011.ManaLeak { + + public ManaLeak(UUID ownerId) { + super(ownerId); + this.cardNumber = 58; + this.expansionSetCode = "TPR"; + } + + public ManaLeak(final ManaLeak card) { + super(card); + } + + @Override + public ManaLeak copy() { + return new ManaLeak(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Manabond.java b/Mage.Sets/src/mage/sets/tempestremastered/Manabond.java new file mode 100644 index 0000000000..ea845fa6c9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Manabond.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Manabond extends mage.sets.exodus.Manabond { + + public Manabond(UUID ownerId) { + super(ownerId); + this.cardNumber = 179; + this.expansionSetCode = "TPR"; + } + + public Manabond(final Manabond card) { + super(card); + } + + @Override + public Manabond copy() { + return new Manabond(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ManiacalRage.java b/Mage.Sets/src/mage/sets/tempestremastered/ManiacalRage.java new file mode 100644 index 0000000000..36330594ae --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ManiacalRage.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ManiacalRage extends mage.sets.conflux.ManiacalRage { + + public ManiacalRage(UUID ownerId) { + super(ownerId); + this.cardNumber = 142; + this.expansionSetCode = "TPR"; + } + + public ManiacalRage(final ManiacalRage card) { + super(card); + } + + @Override + public ManiacalRage copy() { + return new ManiacalRage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MasterDecoy.java b/Mage.Sets/src/mage/sets/tempestremastered/MasterDecoy.java new file mode 100644 index 0000000000..ee4e5b29eb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MasterDecoy.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MasterDecoy extends mage.sets.tempest.MasterDecoy { + + public MasterDecoy(UUID ownerId) { + super(ownerId); + this.cardNumber = 18; + this.expansionSetCode = "TPR"; + } + + public MasterDecoy(final MasterDecoy card) { + super(card); + } + + @Override + public MasterDecoy copy() { + return new MasterDecoy(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Mawcor.java b/Mage.Sets/src/mage/sets/tempestremastered/Mawcor.java new file mode 100644 index 0000000000..5acc9c3890 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Mawcor.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Mawcor extends mage.sets.tempest.Mawcor { + + public Mawcor(UUID ownerId) { + super(ownerId); + this.cardNumber = 59; + this.expansionSetCode = "TPR"; + } + + public Mawcor(final Mawcor card) { + super(card); + } + + @Override + public Mawcor copy() { + return new Mawcor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Meditate.java b/Mage.Sets/src/mage/sets/tempestremastered/Meditate.java new file mode 100644 index 0000000000..511b921662 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Meditate.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Meditate extends mage.sets.tempest.Meditate { + + public Meditate(UUID ownerId) { + super(ownerId); + this.cardNumber = 60; + this.expansionSetCode = "TPR"; + } + + public Meditate(final Meditate card) { + super(card); + } + + @Override + public Meditate copy() { + return new Meditate(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MerfolkLooter.java b/Mage.Sets/src/mage/sets/tempestremastered/MerfolkLooter.java new file mode 100644 index 0000000000..bf84662bb6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MerfolkLooter.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MerfolkLooter extends mage.sets.magic2012.MerfolkLooter { + + public MerfolkLooter(UUID ownerId) { + super(ownerId); + this.cardNumber = 61; + this.expansionSetCode = "TPR"; + } + + public MerfolkLooter(final MerfolkLooter card) { + super(card); + } + + @Override + public MerfolkLooter copy() { + return new MerfolkLooter(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MetallicSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/MetallicSliver.java new file mode 100644 index 0000000000..fb828cc073 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MetallicSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MetallicSliver extends mage.sets.tempest.MetallicSliver { + + public MetallicSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 226; + this.expansionSetCode = "TPR"; + } + + public MetallicSliver(final MetallicSliver card) { + super(card); + } + + @Override + public MetallicSliver copy() { + return new MetallicSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MindlessAutomaton.java b/Mage.Sets/src/mage/sets/tempestremastered/MindlessAutomaton.java new file mode 100644 index 0000000000..9a0a8f094e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MindlessAutomaton.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MindlessAutomaton extends mage.sets.exodus.MindlessAutomaton { + + public MindlessAutomaton(UUID ownerId) { + super(ownerId); + this.cardNumber = 227; + this.expansionSetCode = "TPR"; + } + + public MindlessAutomaton(final MindlessAutomaton card) { + super(card); + } + + @Override + public MindlessAutomaton copy() { + return new MindlessAutomaton(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MirriCatWarrior.java b/Mage.Sets/src/mage/sets/tempestremastered/MirriCatWarrior.java new file mode 100644 index 0000000000..79d31a30b8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MirriCatWarrior.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MirriCatWarrior extends mage.sets.tenth.MirriCatWarrior { + + public MirriCatWarrior(UUID ownerId) { + super(ownerId); + this.cardNumber = 180; + this.expansionSetCode = "TPR"; + } + + public MirriCatWarrior(final MirriCatWarrior card) { + super(card); + } + + @Override + public MirriCatWarrior copy() { + return new MirriCatWarrior(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MnemonicSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/MnemonicSliver.java new file mode 100644 index 0000000000..cec43f5499 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MnemonicSliver.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class MnemonicSliver extends mage.sets.tempest.MnemonicSliver { + + public MnemonicSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 62; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public MnemonicSliver(final MnemonicSliver card) { + super(card); + } + + @Override + public MnemonicSliver copy() { + return new MnemonicSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MoggConscripts.java b/Mage.Sets/src/mage/sets/tempestremastered/MoggConscripts.java new file mode 100644 index 0000000000..6c3073644b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MoggConscripts.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MoggConscripts extends mage.sets.tempest.MoggConscripts { + + public MoggConscripts(UUID ownerId) { + super(ownerId); + this.cardNumber = 143; + this.expansionSetCode = "TPR"; + } + + public MoggConscripts(final MoggConscripts card) { + super(card); + } + + @Override + public MoggConscripts copy() { + return new MoggConscripts(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MoggFanatic.java b/Mage.Sets/src/mage/sets/tempestremastered/MoggFanatic.java new file mode 100644 index 0000000000..7e709a2f48 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MoggFanatic.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MoggFanatic extends mage.sets.tempest.MoggFanatic { + + public MoggFanatic(UUID ownerId) { + super(ownerId); + this.cardNumber = 144; + this.expansionSetCode = "TPR"; + } + + public MoggFanatic(final MoggFanatic card) { + super(card); + } + + @Override + public MoggFanatic copy() { + return new MoggFanatic(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MoggFlunkies.java b/Mage.Sets/src/mage/sets/tempestremastered/MoggFlunkies.java new file mode 100644 index 0000000000..d8855a1be8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MoggFlunkies.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MoggFlunkies extends mage.sets.magic2013.MoggFlunkies { + + public MoggFlunkies(UUID ownerId) { + super(ownerId); + this.cardNumber = 145; + this.expansionSetCode = "TPR"; + } + + public MoggFlunkies(final MoggFlunkies card) { + super(card); + } + + @Override + public MoggFlunkies copy() { + return new MoggFlunkies(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MoggHollows.java b/Mage.Sets/src/mage/sets/tempestremastered/MoggHollows.java new file mode 100644 index 0000000000..d4d75bd411 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MoggHollows.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MoggHollows extends mage.sets.tempest.MoggHollows { + + public MoggHollows(UUID ownerId) { + super(ownerId); + this.cardNumber = 239; + this.expansionSetCode = "TPR"; + } + + public MoggHollows(final MoggHollows card) { + super(card); + } + + @Override + public MoggHollows copy() { + return new MoggHollows(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Mountain1.java b/Mage.Sets/src/mage/sets/tempestremastered/Mountain1.java new file mode 100644 index 0000000000..059d4bed47 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Mountain1.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Mountain1 extends mage.cards.basiclands.Mountain { + + public Mountain1(UUID ownerId) { + super(ownerId, 262); + this.expansionSetCode = "TPR"; + } + + public Mountain1(final Mountain1 card) { + super(card); + } + + @Override + public Mountain1 copy() { + return new Mountain1(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Mountain2.java b/Mage.Sets/src/mage/sets/tempestremastered/Mountain2.java new file mode 100644 index 0000000000..a91ff0d8fe --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Mountain2.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Mountain2 extends mage.cards.basiclands.Mountain { + + public Mountain2(UUID ownerId) { + super(ownerId, 263); + this.expansionSetCode = "TPR"; + } + + public Mountain2(final Mountain2 card) { + super(card); + } + + @Override + public Mountain2 copy() { + return new Mountain2(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Mountain3.java b/Mage.Sets/src/mage/sets/tempestremastered/Mountain3.java new file mode 100644 index 0000000000..9fb98c1987 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Mountain3.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Mountain3 extends mage.cards.basiclands.Mountain { + + public Mountain3(UUID ownerId) { + super(ownerId, 264); + this.expansionSetCode = "TPR"; + } + + public Mountain3(final Mountain3 card) { + super(card); + } + + @Override + public Mountain3 copy() { + return new Mountain3(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Mountain4.java b/Mage.Sets/src/mage/sets/tempestremastered/Mountain4.java new file mode 100644 index 0000000000..a6c5bb7d72 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Mountain4.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Mountain4 extends mage.cards.basiclands.Mountain { + + public Mountain4(UUID ownerId) { + super(ownerId, 265); + this.expansionSetCode = "TPR"; + } + + public Mountain4(final Mountain4 card) { + super(card); + } + + @Override + public Mountain4 copy() { + return new Mountain4(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MoxDiamond.java b/Mage.Sets/src/mage/sets/tempestremastered/MoxDiamond.java new file mode 100644 index 0000000000..d22e3b038e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MoxDiamond.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class MoxDiamond extends mage.sets.stronghold.MoxDiamond { + + public MoxDiamond(UUID ownerId) { + super(ownerId); + this.cardNumber = 228; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public MoxDiamond(final MoxDiamond card) { + super(card); + } + + @Override + public MoxDiamond copy() { + return new MoxDiamond(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Mulch.java b/Mage.Sets/src/mage/sets/tempestremastered/Mulch.java new file mode 100644 index 0000000000..281fcc50ba --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Mulch.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Mulch extends mage.sets.innistrad.Mulch { + + public Mulch(UUID ownerId) { + super(ownerId); + this.cardNumber = 181; + this.expansionSetCode = "TPR"; + } + + public Mulch(final Mulch card) { + super(card); + } + + @Override + public Mulch copy() { + return new Mulch(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MuscleSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/MuscleSliver.java new file mode 100644 index 0000000000..fe9fbdc1fe --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MuscleSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MuscleSliver extends mage.sets.tempest.MuscleSliver { + + public MuscleSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 182; + this.expansionSetCode = "TPR"; + } + + public MuscleSliver(final MuscleSliver card) { + super(card); + } + + @Override + public MuscleSliver copy() { + return new MuscleSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/NeedleStorm.java b/Mage.Sets/src/mage/sets/tempestremastered/NeedleStorm.java new file mode 100644 index 0000000000..fac51386d8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/NeedleStorm.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class NeedleStorm extends mage.sets.tempest.NeedleStorm { + + public NeedleStorm(UUID ownerId) { + super(ownerId); + this.cardNumber = 183; + this.expansionSetCode = "TPR"; + } + + public NeedleStorm(final NeedleStorm card) { + super(card); + } + + @Override + public NeedleStorm copy() { + return new NeedleStorm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/NomadsEnKor.java b/Mage.Sets/src/mage/sets/tempestremastered/NomadsEnKor.java new file mode 100644 index 0000000000..982563363e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/NomadsEnKor.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class NomadsEnKor extends mage.sets.stronghold.NomadsEnKor { + + public NomadsEnKor(UUID ownerId) { + super(ownerId); + this.cardNumber = 20; + this.expansionSetCode = "TPR"; + } + + public NomadsEnKor(final NomadsEnKor card) { + super(card); + } + + @Override + public NomadsEnKor copy() { + return new NomadsEnKor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/OathOfDruids.java b/Mage.Sets/src/mage/sets/tempestremastered/OathOfDruids.java new file mode 100644 index 0000000000..c8b742198f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/OathOfDruids.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class OathOfDruids extends mage.sets.exodus.OathOfDruids { + + public OathOfDruids(UUID ownerId) { + super(ownerId); + this.cardNumber = 184; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public OathOfDruids(final OathOfDruids card) { + super(card); + } + + @Override + public OathOfDruids copy() { + return new OathOfDruids(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/OrimSamiteHealer.java b/Mage.Sets/src/mage/sets/tempestremastered/OrimSamiteHealer.java new file mode 100644 index 0000000000..b739f9985f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/OrimSamiteHealer.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class OrimSamiteHealer extends mage.sets.tempest.OrimSamiteHealer { + + public OrimSamiteHealer(UUID ownerId) { + super(ownerId); + this.cardNumber = 21; + this.expansionSetCode = "TPR"; + } + + public OrimSamiteHealer(final OrimSamiteHealer card) { + super(card); + } + + @Override + public OrimSamiteHealer copy() { + return new OrimSamiteHealer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Overrun.java b/Mage.Sets/src/mage/sets/tempestremastered/Overrun.java new file mode 100644 index 0000000000..6164eb1ffd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Overrun.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Overrun extends mage.sets.magic2010.Overrun { + + public Overrun(UUID ownerId) { + super(ownerId); + this.cardNumber = 185; + this.expansionSetCode = "TPR"; + } + + public Overrun(final Overrun card) { + super(card); + } + + @Override + public Overrun copy() { + return new Overrun(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Pacifism.java b/Mage.Sets/src/mage/sets/tempestremastered/Pacifism.java new file mode 100644 index 0000000000..5e853240fe --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Pacifism.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Pacifism extends mage.sets.tenth.Pacifism { + + public Pacifism(UUID ownerId) { + super(ownerId); + this.cardNumber = 22; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public Pacifism(final Pacifism card) { + super(card); + } + + @Override + public Pacifism copy() { + return new Pacifism(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/PaladinEnVec.java b/Mage.Sets/src/mage/sets/tempestremastered/PaladinEnVec.java new file mode 100644 index 0000000000..9dff8b4279 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/PaladinEnVec.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class PaladinEnVec extends mage.sets.ninthedition.PaladinEnVec { + + public PaladinEnVec(UUID ownerId) { + super(ownerId); + this.cardNumber = 23; + this.expansionSetCode = "TPR"; + } + + public PaladinEnVec(final PaladinEnVec card) { + super(card); + } + + @Override + public PaladinEnVec copy() { + return new PaladinEnVec(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/PatchworkGnomes.java b/Mage.Sets/src/mage/sets/tempestremastered/PatchworkGnomes.java new file mode 100644 index 0000000000..9d338e4b69 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/PatchworkGnomes.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class PatchworkGnomes extends mage.sets.tempest.PatchworkGnomes { + + public PatchworkGnomes(UUID ownerId) { + super(ownerId); + this.cardNumber = 229; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public PatchworkGnomes(final PatchworkGnomes card) { + super(card); + } + + @Override + public PatchworkGnomes copy() { + return new PatchworkGnomes(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/PhyrexianHulk.java b/Mage.Sets/src/mage/sets/tempestremastered/PhyrexianHulk.java new file mode 100644 index 0000000000..b038197913 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/PhyrexianHulk.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class PhyrexianHulk extends mage.sets.newphyrexia.PhyrexianHulk { + + public PhyrexianHulk(UUID ownerId) { + super(ownerId); + this.cardNumber = 230; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public PhyrexianHulk(final PhyrexianHulk card) { + super(card); + } + + @Override + public PhyrexianHulk copy() { + return new PhyrexianHulk(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/PineBarrens.java b/Mage.Sets/src/mage/sets/tempestremastered/PineBarrens.java new file mode 100644 index 0000000000..98acc6fce7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/PineBarrens.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class PineBarrens extends mage.sets.tempest.PineBarrens { + + public PineBarrens(UUID ownerId) { + super(ownerId); + this.cardNumber = 240; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public PineBarrens(final PineBarrens card) { + super(card); + } + + @Override + public PineBarrens copy() { + return new PineBarrens(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Plains1.java b/Mage.Sets/src/mage/sets/tempestremastered/Plains1.java new file mode 100644 index 0000000000..8580c15c8f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Plains1.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Plains1 extends mage.cards.basiclands.Plains { + + public Plains1(UUID ownerId) { + super(ownerId, 250); + this.expansionSetCode = "TPR"; + } + + public Plains1(final Plains1 card) { + super(card); + } + + @Override + public Plains1 copy() { + return new Plains1(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Plains2.java b/Mage.Sets/src/mage/sets/tempestremastered/Plains2.java new file mode 100644 index 0000000000..817bba2c85 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Plains2.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Plains2 extends mage.cards.basiclands.Plains { + + public Plains2(UUID ownerId) { + super(ownerId, 251); + this.expansionSetCode = "TPR"; + } + + public Plains2(final Plains2 card) { + super(card); + } + + @Override + public Plains2 copy() { + return new Plains2(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Plains3.java b/Mage.Sets/src/mage/sets/tempestremastered/Plains3.java new file mode 100644 index 0000000000..ca9e502082 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Plains3.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Plains3 extends mage.cards.basiclands.Plains { + + public Plains3(UUID ownerId) { + super(ownerId, 252); + this.expansionSetCode = "TPR"; + } + + public Plains3(final Plains3 card) { + super(card); + } + + @Override + public Plains3 copy() { + return new Plains3(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Plains4.java b/Mage.Sets/src/mage/sets/tempestremastered/Plains4.java new file mode 100644 index 0000000000..5dcbfe9d24 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Plains4.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Plains4 extends mage.cards.basiclands.Plains { + + public Plains4(UUID ownerId) { + super(ownerId, 253); + this.expansionSetCode = "TPR"; + } + + public Plains4(final Plains4 card) { + super(card); + } + + @Override + public Plains4 copy() { + return new Plains4(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Provoke.java b/Mage.Sets/src/mage/sets/tempestremastered/Provoke.java new file mode 100644 index 0000000000..910bb9d166 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Provoke.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Provoke extends mage.sets.stronghold.Provoke { + + public Provoke(UUID ownerId) { + super(ownerId); + this.cardNumber = 186; + this.expansionSetCode = "TPR"; + } + + public Provoke(final Provoke card) { + super(card); + } + + @Override + public Provoke copy() { + return new Provoke(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RampantGrowth.java b/Mage.Sets/src/mage/sets/tempestremastered/RampantGrowth.java new file mode 100644 index 0000000000..cc318bd2a9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RampantGrowth.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class RampantGrowth extends mage.sets.magic2010.RampantGrowth { + + public RampantGrowth(UUID ownerId) { + super(ownerId); + this.cardNumber = 187; + this.expansionSetCode = "TPR"; + } + + public RampantGrowth(final RampantGrowth card) { + super(card); + } + + @Override + public RampantGrowth copy() { + return new RampantGrowth(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RatsOfRath.java b/Mage.Sets/src/mage/sets/tempestremastered/RatsOfRath.java new file mode 100644 index 0000000000..f4f86ebddb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RatsOfRath.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class RatsOfRath extends mage.sets.tempest.RatsOfRath { + + public RatsOfRath(UUID ownerId) { + super(ownerId); + this.cardNumber = 111; + this.expansionSetCode = "TPR"; + } + + public RatsOfRath(final RatsOfRath card) { + super(card); + } + + @Override + public RatsOfRath copy() { + return new RatsOfRath(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Reanimate.java b/Mage.Sets/src/mage/sets/tempestremastered/Reanimate.java new file mode 100644 index 0000000000..292d1115b6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Reanimate.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Reanimate extends mage.sets.tempest.Reanimate { + + public Reanimate(UUID ownerId) { + super(ownerId); + this.cardNumber = 112; + this.expansionSetCode = "TPR"; + } + + public Reanimate(final Reanimate card) { + super(card); + } + + @Override + public Reanimate copy() { + return new Reanimate(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RecurringNightmare.java b/Mage.Sets/src/mage/sets/tempestremastered/RecurringNightmare.java new file mode 100644 index 0000000000..d0fe940546 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RecurringNightmare.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class RecurringNightmare extends mage.sets.exodus.RecurringNightmare { + + public RecurringNightmare(UUID ownerId) { + super(ownerId); + this.cardNumber = 113; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public RecurringNightmare(final RecurringNightmare card) { + super(card); + } + + @Override + public RecurringNightmare copy() { + return new RecurringNightmare(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RenegadeWarlord.java b/Mage.Sets/src/mage/sets/tempestremastered/RenegadeWarlord.java new file mode 100644 index 0000000000..82fd4a419f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RenegadeWarlord.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class RenegadeWarlord extends mage.sets.tempest.RenegadeWarlord { + + public RenegadeWarlord(UUID ownerId) { + super(ownerId); + this.cardNumber = 151; + this.expansionSetCode = "TPR"; + } + + public RenegadeWarlord(final RenegadeWarlord card) { + super(card); + } + + @Override + public RenegadeWarlord copy() { + return new RenegadeWarlord(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RootbreakerWurm.java b/Mage.Sets/src/mage/sets/tempestremastered/RootbreakerWurm.java new file mode 100644 index 0000000000..c55c169dd3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RootbreakerWurm.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class RootbreakerWurm extends mage.sets.tempest.RootbreakerWurm { + + public RootbreakerWurm(UUID ownerId) { + super(ownerId); + this.cardNumber = 190; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public RootbreakerWurm(final RootbreakerWurm card) { + super(card); + } + + @Override + public RootbreakerWurm copy() { + return new RootbreakerWurm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Rootwalla.java b/Mage.Sets/src/mage/sets/tempestremastered/Rootwalla.java new file mode 100644 index 0000000000..e4cad9c555 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Rootwalla.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Rootwalla extends mage.sets.tempest.Rootwalla { + + public Rootwalla(UUID ownerId) { + super(ownerId); + this.cardNumber = 191; + this.expansionSetCode = "TPR"; + } + + public Rootwalla(final Rootwalla card) { + super(card); + } + + @Override + public Rootwalla copy() { + return new Rootwalla(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RootwaterDepths.java b/Mage.Sets/src/mage/sets/tempestremastered/RootwaterDepths.java new file mode 100644 index 0000000000..f6258519aa --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RootwaterDepths.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class RootwaterDepths extends mage.sets.tempest.RootwaterDepths { + + public RootwaterDepths(UUID ownerId) { + super(ownerId); + this.cardNumber = 241; + this.expansionSetCode = "TPR"; + } + + public RootwaterDepths(final RootwaterDepths card) { + super(card); + } + + @Override + public RootwaterDepths copy() { + return new RootwaterDepths(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RootwaterHunter.java b/Mage.Sets/src/mage/sets/tempestremastered/RootwaterHunter.java new file mode 100644 index 0000000000..a2df32b384 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RootwaterHunter.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class RootwaterHunter extends mage.sets.tempest.RootwaterHunter { + + public RootwaterHunter(UUID ownerId) { + super(ownerId); + this.cardNumber = 63; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public RootwaterHunter(final RootwaterHunter card) { + super(card); + } + + @Override + public RootwaterHunter copy() { + return new RootwaterHunter(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SabertoothWyvern.java b/Mage.Sets/src/mage/sets/tempestremastered/SabertoothWyvern.java new file mode 100644 index 0000000000..169338dd3f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SabertoothWyvern.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SabertoothWyvern extends mage.sets.exodus.SabertoothWyvern { + + public SabertoothWyvern(UUID ownerId) { + super(ownerId); + this.cardNumber = 153; + this.expansionSetCode = "TPR"; + } + + public SabertoothWyvern(final SabertoothWyvern card) { + super(card); + } + + @Override + public SabertoothWyvern copy() { + return new SabertoothWyvern(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SaltFlats.java b/Mage.Sets/src/mage/sets/tempestremastered/SaltFlats.java new file mode 100644 index 0000000000..0491810332 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SaltFlats.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SaltFlats extends mage.sets.tempest.SaltFlats { + + public SaltFlats(UUID ownerId) { + super(ownerId); + this.cardNumber = 242; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public SaltFlats(final SaltFlats card) { + super(card); + } + + @Override + public SaltFlats copy() { + return new SaltFlats(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SandstoneWarrior.java b/Mage.Sets/src/mage/sets/tempestremastered/SandstoneWarrior.java new file mode 100644 index 0000000000..9ae4f54bd7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SandstoneWarrior.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SandstoneWarrior extends mage.sets.tempest.SandstoneWarrior { + + public SandstoneWarrior(UUID ownerId) { + super(ownerId); + this.cardNumber = 154; + this.expansionSetCode = "TPR"; + } + + public SandstoneWarrior(final SandstoneWarrior card) { + super(card); + } + + @Override + public SandstoneWarrior copy() { + return new SandstoneWarrior(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Sarcomancy.java b/Mage.Sets/src/mage/sets/tempestremastered/Sarcomancy.java new file mode 100644 index 0000000000..651fb1d0c8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Sarcomancy.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Sarcomancy extends mage.sets.tempest.Sarcomancy { + + public Sarcomancy(UUID ownerId) { + super(ownerId); + this.cardNumber = 115; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public Sarcomancy(final Sarcomancy card) { + super(card); + } + + @Override + public Sarcomancy copy() { + return new Sarcomancy(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Scabland.java b/Mage.Sets/src/mage/sets/tempestremastered/Scabland.java new file mode 100644 index 0000000000..f224e01751 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Scabland.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Scabland extends mage.sets.tempest.Scabland { + + public Scabland(UUID ownerId) { + super(ownerId); + this.cardNumber = 243; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public Scabland(final Scabland card) { + super(card); + } + + @Override + public Scabland copy() { + return new Scabland(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ScreechingHarpy.java b/Mage.Sets/src/mage/sets/tempestremastered/ScreechingHarpy.java new file mode 100644 index 0000000000..fac1e52cea --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ScreechingHarpy.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ScreechingHarpy extends mage.sets.tempest.ScreechingHarpy { + + public ScreechingHarpy(UUID ownerId) { + super(ownerId); + this.cardNumber = 116; + this.expansionSetCode = "TPR"; + } + + public ScreechingHarpy(final ScreechingHarpy card) { + super(card); + } + + @Override + public ScreechingHarpy copy() { + return new ScreechingHarpy(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Scrivener.java b/Mage.Sets/src/mage/sets/tempestremastered/Scrivener.java new file mode 100644 index 0000000000..9435574415 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Scrivener.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Scrivener extends mage.sets.exodus.Scrivener { + + public Scrivener(UUID ownerId) { + super(ownerId); + this.cardNumber = 64; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public Scrivener(final Scrivener card) { + super(card); + } + + @Override + public Scrivener copy() { + return new Scrivener(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SeaMonster.java b/Mage.Sets/src/mage/sets/tempestremastered/SeaMonster.java new file mode 100644 index 0000000000..91a65703a3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SeaMonster.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SeaMonster extends mage.sets.tempest.SeaMonster { + + public SeaMonster(UUID ownerId) { + super(ownerId); + this.cardNumber = 65; + this.expansionSetCode = "TPR"; + } + + public SeaMonster(final SeaMonster card) { + super(card); + } + + @Override + public SeaMonster copy() { + return new SeaMonster(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SearingTouch.java b/Mage.Sets/src/mage/sets/tempestremastered/SearingTouch.java new file mode 100644 index 0000000000..4b377dfb81 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SearingTouch.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SearingTouch extends mage.sets.tempest.SearingTouch { + + public SearingTouch(UUID ownerId) { + super(ownerId); + this.cardNumber = 155; + this.expansionSetCode = "TPR"; + } + + public SearingTouch(final SearingTouch card) { + super(card); + } + + @Override + public SearingTouch copy() { + return new SearingTouch(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SeleniaDarkAngel.java b/Mage.Sets/src/mage/sets/tempestremastered/SeleniaDarkAngel.java new file mode 100644 index 0000000000..eba0cdd802 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SeleniaDarkAngel.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SeleniaDarkAngel extends mage.sets.tempest.SeleniaDarkAngel { + + public SeleniaDarkAngel(UUID ownerId) { + super(ownerId); + this.cardNumber = 210; + this.expansionSetCode = "TPR"; + } + + public SeleniaDarkAngel(final SeleniaDarkAngel card) { + super(card); + } + + @Override + public SeleniaDarkAngel copy() { + return new SeleniaDarkAngel(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SerpentWarrior.java b/Mage.Sets/src/mage/sets/tempestremastered/SerpentWarrior.java new file mode 100644 index 0000000000..e58058512f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SerpentWarrior.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SerpentWarrior extends mage.sets.stronghold.SerpentWarrior { + + public SerpentWarrior(UUID ownerId) { + super(ownerId); + this.cardNumber = 117; + this.expansionSetCode = "TPR"; + } + + public SerpentWarrior(final SerpentWarrior card) { + super(card); + } + + @Override + public SerpentWarrior copy() { + return new SerpentWarrior(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Shackles.java b/Mage.Sets/src/mage/sets/tempestremastered/Shackles.java new file mode 100644 index 0000000000..a6ff38c8f7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Shackles.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Shackles extends mage.sets.invasion.Shackles { + + public Shackles(UUID ownerId) { + super(ownerId); + this.cardNumber = 26; + this.expansionSetCode = "TPR"; + } + + public Shackles(final Shackles card) { + super(card); + } + + @Override + public Shackles copy() { + return new Shackles(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ShadowRift.java b/Mage.Sets/src/mage/sets/tempestremastered/ShadowRift.java new file mode 100644 index 0000000000..28b143c5c4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ShadowRift.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ShadowRift extends mage.sets.tempest.ShadowRift { + + public ShadowRift(UUID ownerId) { + super(ownerId); + this.cardNumber = 66; + this.expansionSetCode = "TPR"; + } + + public ShadowRift(final ShadowRift card) { + super(card); + } + + @Override + public ShadowRift copy() { + return new ShadowRift(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ShamanEnKor.java b/Mage.Sets/src/mage/sets/tempestremastered/ShamanEnKor.java new file mode 100644 index 0000000000..12ff4d5b3f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ShamanEnKor.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ShamanEnKor extends mage.sets.stronghold.ShamanEnKor { + + public ShamanEnKor(UUID ownerId) { + super(ownerId); + this.cardNumber = 27; + this.expansionSetCode = "TPR"; + } + + public ShamanEnKor(final ShamanEnKor card) { + super(card); + } + + @Override + public ShamanEnKor copy() { + return new ShamanEnKor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Shatter.java b/Mage.Sets/src/mage/sets/tempestremastered/Shatter.java new file mode 100644 index 0000000000..19ec6d752d --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Shatter.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Shatter extends mage.sets.mirrodin.Shatter { + + public Shatter(UUID ownerId) { + super(ownerId); + this.cardNumber = 159; + this.expansionSetCode = "TPR"; + } + + public Shatter(final Shatter card) { + super(card); + } + + @Override + public Shatter copy() { + return new Shatter(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Sift.java b/Mage.Sets/src/mage/sets/tempestremastered/Sift.java new file mode 100644 index 0000000000..4b57d4b80a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Sift.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Sift extends mage.sets.tenth.Sift { + + public Sift(UUID ownerId) { + super(ownerId); + this.cardNumber = 67; + this.expansionSetCode = "TPR"; + } + + public Sift(final Sift card) { + super(card); + } + + @Override + public Sift copy() { + return new Sift(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudElf.java b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudElf.java new file mode 100644 index 0000000000..86e8c2eefb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudElf.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SkyshroudElf extends mage.sets.tempest.SkyshroudElf { + + public SkyshroudElf(UUID ownerId) { + super(ownerId); + this.cardNumber = 192; + this.expansionSetCode = "TPR"; + } + + public SkyshroudElf(final SkyshroudElf card) { + super(card); + } + + @Override + public SkyshroudElf copy() { + return new SkyshroudElf(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudForest.java b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudForest.java new file mode 100644 index 0000000000..3abdc42db9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudForest.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SkyshroudForest extends mage.sets.tempest.SkyshroudForest { + + public SkyshroudForest(UUID ownerId) { + super(ownerId); + this.cardNumber = 244; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public SkyshroudForest(final SkyshroudForest card) { + super(card); + } + + @Override + public SkyshroudForest copy() { + return new SkyshroudForest(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudTroll.java b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudTroll.java new file mode 100644 index 0000000000..8576a3c4de --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudTroll.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SkyshroudTroll extends mage.sets.tempest.SkyshroudTroll { + + public SkyshroudTroll(UUID ownerId) { + super(ownerId); + this.cardNumber = 193; + this.expansionSetCode = "TPR"; + } + + public SkyshroudTroll(final SkyshroudTroll card) { + super(card); + } + + @Override + public SkyshroudTroll copy() { + return new SkyshroudTroll(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SliverQueen.java b/Mage.Sets/src/mage/sets/tempestremastered/SliverQueen.java new file mode 100644 index 0000000000..b393ae07d7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SliverQueen.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SliverQueen extends mage.sets.stronghold.SliverQueen { + + public SliverQueen(UUID ownerId) { + super(ownerId); + this.cardNumber = 211; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public SliverQueen(final SliverQueen card) { + super(card); + } + + @Override + public SliverQueen copy() { + return new SliverQueen(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Smite.java b/Mage.Sets/src/mage/sets/tempestremastered/Smite.java new file mode 100644 index 0000000000..b15b66421a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Smite.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Smite extends mage.sets.riseoftheeldrazi.Smite { + + public Smite(UUID ownerId) { + super(ownerId); + this.cardNumber = 28; + this.expansionSetCode = "TPR"; + } + + public Smite(final Smite card) { + super(card); + } + + @Override + public Smite copy() { + return new Smite(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SoltariChampion.java b/Mage.Sets/src/mage/sets/tempestremastered/SoltariChampion.java new file mode 100644 index 0000000000..1eafd106e1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SoltariChampion.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SoltariChampion extends mage.sets.stronghold.SoltariChampion { + + public SoltariChampion(UUID ownerId) { + super(ownerId); + this.cardNumber = 29; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public SoltariChampion(final SoltariChampion card) { + super(card); + } + + @Override + public SoltariChampion copy() { + return new SoltariChampion(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SoltariMonk.java b/Mage.Sets/src/mage/sets/tempestremastered/SoltariMonk.java new file mode 100644 index 0000000000..654c7b0e3e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SoltariMonk.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SoltariMonk extends mage.sets.tempest.SoltariMonk { + + public SoltariMonk(UUID ownerId) { + super(ownerId); + this.cardNumber = 31; + this.expansionSetCode = "TPR"; + } + + public SoltariMonk(final SoltariMonk card) { + super(card); + } + + @Override + public SoltariMonk copy() { + return new SoltariMonk(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SoltariPriest.java b/Mage.Sets/src/mage/sets/tempestremastered/SoltariPriest.java new file mode 100644 index 0000000000..a8b5778b7b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SoltariPriest.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SoltariPriest extends mage.sets.tempest.SoltariPriest { + + public SoltariPriest(UUID ownerId) { + super(ownerId); + this.cardNumber = 32; + this.expansionSetCode = "TPR"; + } + + public SoltariPriest(final SoltariPriest card) { + super(card); + } + + @Override + public SoltariPriest copy() { + return new SoltariPriest(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SoltariTrooper.java b/Mage.Sets/src/mage/sets/tempestremastered/SoltariTrooper.java new file mode 100644 index 0000000000..f2d3118e90 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SoltariTrooper.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SoltariTrooper extends mage.sets.tempest.SoltariTrooper { + + public SoltariTrooper(UUID ownerId) { + super(ownerId); + this.cardNumber = 33; + this.expansionSetCode = "TPR"; + } + + public SoltariTrooper(final SoltariTrooper card) { + super(card); + } + + @Override + public SoltariTrooper copy() { + return new SoltariTrooper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpellBlast.java b/Mage.Sets/src/mage/sets/tempestremastered/SpellBlast.java new file mode 100644 index 0000000000..42bedcfd66 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpellBlast.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpellBlast extends mage.sets.limitedalpha.SpellBlast { + + public SpellBlast(UUID ownerId) { + super(ownerId); + this.cardNumber = 69; + this.expansionSetCode = "TPR"; + } + + public SpellBlast(final SpellBlast card) { + super(card); + } + + @Override + public SpellBlast copy() { + return new SpellBlast(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpikeFeeder.java b/Mage.Sets/src/mage/sets/tempestremastered/SpikeFeeder.java new file mode 100644 index 0000000000..30be0cafe1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpikeFeeder.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SpikeFeeder extends mage.sets.timeshifted.SpikeFeeder { + + public SpikeFeeder(UUID ownerId) { + super(ownerId); + this.cardNumber = 196; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public SpikeFeeder(final SpikeFeeder card) { + super(card); + } + + @Override + public SpikeFeeder copy() { + return new SpikeFeeder(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpinedSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/SpinedSliver.java new file mode 100644 index 0000000000..81fe62f496 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpinedSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpinedSliver extends mage.sets.stronghold.SpinedSliver { + + public SpinedSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 213; + this.expansionSetCode = "TPR"; + } + + public SpinedSliver(final SpinedSliver card) { + super(card); + } + + @Override + public SpinedSliver copy() { + return new SpinedSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpinedWurm.java b/Mage.Sets/src/mage/sets/tempestremastered/SpinedWurm.java new file mode 100644 index 0000000000..f204bb71a1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpinedWurm.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpinedWurm extends mage.sets.tenth.SpinedWurm { + + public SpinedWurm(UUID ownerId) { + super(ownerId); + this.cardNumber = 198; + this.expansionSetCode = "TPR"; + } + + public SpinedWurm(final SpinedWurm card) { + super(card); + } + + @Override + public SpinedWurm copy() { + return new SpinedWurm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpiritMirror.java b/Mage.Sets/src/mage/sets/tempestremastered/SpiritMirror.java new file mode 100644 index 0000000000..63bda5043f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpiritMirror.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpiritMirror extends mage.sets.tempest.SpiritMirror { + + public SpiritMirror(UUID ownerId) { + super(ownerId); + this.cardNumber = 35; + this.expansionSetCode = "TPR"; + } + + public SpiritMirror(final SpiritMirror card) { + super(card); + } + + @Override + public SpiritMirror copy() { + return new SpiritMirror(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/StalkingStones.java b/Mage.Sets/src/mage/sets/tempestremastered/StalkingStones.java new file mode 100644 index 0000000000..7beef6d8a0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/StalkingStones.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class StalkingStones extends mage.sets.tempest.StalkingStones { + + public StalkingStones(UUID ownerId) { + super(ownerId); + this.cardNumber = 245; + this.expansionSetCode = "TPR"; + } + + public StalkingStones(final StalkingStones card) { + super(card); + } + + @Override + public StalkingStones copy() { + return new StalkingStones(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/StandingTroops.java b/Mage.Sets/src/mage/sets/tempestremastered/StandingTroops.java new file mode 100644 index 0000000000..8be4953834 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/StandingTroops.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class StandingTroops extends mage.sets.eighthedition.StandingTroops { + + public StandingTroops(UUID ownerId) { + super(ownerId); + this.cardNumber = 36; + this.expansionSetCode = "TPR"; + } + + public StandingTroops(final StandingTroops card) { + super(card); + } + + @Override + public StandingTroops copy() { + return new StandingTroops(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/StaunchDefenders.java b/Mage.Sets/src/mage/sets/tempestremastered/StaunchDefenders.java new file mode 100644 index 0000000000..3ca6f557e6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/StaunchDefenders.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class StaunchDefenders extends mage.sets.tempest.StaunchDefenders { + + public StaunchDefenders(UUID ownerId) { + super(ownerId); + this.cardNumber = 37; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public StaunchDefenders(final StaunchDefenders card) { + super(card); + } + + @Override + public StaunchDefenders copy() { + return new StaunchDefenders(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/StrongholdAssassin.java b/Mage.Sets/src/mage/sets/tempestremastered/StrongholdAssassin.java new file mode 100644 index 0000000000..0d5b858f5f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/StrongholdAssassin.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class StrongholdAssassin extends mage.sets.stronghold.StrongholdAssassin { + + public StrongholdAssassin(UUID ownerId) { + super(ownerId); + this.cardNumber = 120; + this.expansionSetCode = "TPR"; + } + + public StrongholdAssassin(final StrongholdAssassin card) { + super(card); + } + + @Override + public StrongholdAssassin copy() { + return new StrongholdAssassin(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Stun.java b/Mage.Sets/src/mage/sets/tempestremastered/Stun.java new file mode 100644 index 0000000000..ed2001f493 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Stun.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Stun extends mage.sets.tempest.Stun { + + public Stun(UUID ownerId) { + super(ownerId); + this.cardNumber = 163; + this.expansionSetCode = "TPR"; + } + + public Stun(final Stun card) { + super(card); + } + + @Override + public Stun copy() { + return new Stun(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SurvivalOfTheFittest.java b/Mage.Sets/src/mage/sets/tempestremastered/SurvivalOfTheFittest.java new file mode 100644 index 0000000000..f50bfe8a80 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SurvivalOfTheFittest.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SurvivalOfTheFittest extends mage.sets.exodus.SurvivalOfTheFittest { + + public SurvivalOfTheFittest(UUID ownerId) { + super(ownerId); + this.cardNumber = 199; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public SurvivalOfTheFittest(final SurvivalOfTheFittest card) { + super(card); + } + + @Override + public SurvivalOfTheFittest copy() { + return new SurvivalOfTheFittest(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Swamp1.java b/Mage.Sets/src/mage/sets/tempestremastered/Swamp1.java new file mode 100644 index 0000000000..d44e45678b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Swamp1.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Swamp1 extends mage.cards.basiclands.Swamp { + + public Swamp1(UUID ownerId) { + super(ownerId, 258); + this.expansionSetCode = "TPR"; + } + + public Swamp1(final Swamp1 card) { + super(card); + } + + @Override + public Swamp1 copy() { + return new Swamp1(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Swamp2.java b/Mage.Sets/src/mage/sets/tempestremastered/Swamp2.java new file mode 100644 index 0000000000..a59a2940bb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Swamp2.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Swamp2 extends mage.cards.basiclands.Swamp { + + public Swamp2(UUID ownerId) { + super(ownerId, 259); + this.expansionSetCode = "TPR"; + } + + public Swamp2(final Swamp2 card) { + super(card); + } + + @Override + public Swamp2 copy() { + return new Swamp2(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Swamp3.java b/Mage.Sets/src/mage/sets/tempestremastered/Swamp3.java new file mode 100644 index 0000000000..320af4871b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Swamp3.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Swamp3 extends mage.cards.basiclands.Swamp { + + public Swamp3(UUID ownerId) { + super(ownerId, 260); + this.expansionSetCode = "TPR"; + } + + public Swamp3(final Swamp3 card) { + super(card); + } + + @Override + public Swamp3 copy() { + return new Swamp3(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Swamp4.java b/Mage.Sets/src/mage/sets/tempestremastered/Swamp4.java new file mode 100644 index 0000000000..ec9b6273f0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Swamp4.java @@ -0,0 +1,51 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Swamp4 extends mage.cards.basiclands.Swamp { + + public Swamp4(UUID ownerId) { + super(ownerId, 261); + this.expansionSetCode = "TPR"; + } + + public Swamp4(final Swamp4 card) { + super(card); + } + + @Override + public Swamp4 copy() { + return new Swamp4(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Telethopter.java b/Mage.Sets/src/mage/sets/tempestremastered/Telethopter.java new file mode 100644 index 0000000000..210465c8fc --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Telethopter.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Telethopter extends mage.sets.tempest.Telethopter { + + public Telethopter(UUID ownerId) { + super(ownerId); + this.cardNumber = 232; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public Telethopter(final Telethopter card) { + super(card); + } + + @Override + public Telethopter copy() { + return new Telethopter(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ThalakosLowlands.java b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosLowlands.java new file mode 100644 index 0000000000..74fd6fa7b7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosLowlands.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ThalakosLowlands extends mage.sets.tempest.ThalakosLowlands { + + public ThalakosLowlands(UUID ownerId) { + super(ownerId); + this.cardNumber = 246; + this.expansionSetCode = "TPR"; + } + + public ThalakosLowlands(final ThalakosLowlands card) { + super(card); + } + + @Override + public ThalakosLowlands copy() { + return new ThalakosLowlands(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ThrullSurgeon.java b/Mage.Sets/src/mage/sets/tempestremastered/ThrullSurgeon.java new file mode 100644 index 0000000000..45cad17511 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ThrullSurgeon.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ThrullSurgeon extends mage.sets.tenth.ThrullSurgeon { + + public ThrullSurgeon(UUID ownerId) { + super(ownerId); + this.cardNumber = 121; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public ThrullSurgeon(final ThrullSurgeon card) { + super(card); + } + + @Override + public ThrullSurgeon copy() { + return new ThrullSurgeon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/TimeEbb.java b/Mage.Sets/src/mage/sets/tempestremastered/TimeEbb.java new file mode 100644 index 0000000000..aca26e256e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/TimeEbb.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class TimeEbb extends mage.sets.tempest.TimeEbb { + + public TimeEbb(UUID ownerId) { + super(ownerId); + this.cardNumber = 73; + this.expansionSetCode = "TPR"; + } + + public TimeEbb(final TimeEbb card) { + super(card); + } + + @Override + public TimeEbb copy() { + return new TimeEbb(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/TimeWarp.java b/Mage.Sets/src/mage/sets/tempestremastered/TimeWarp.java new file mode 100644 index 0000000000..8f4267ab51 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/TimeWarp.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class TimeWarp extends mage.sets.magic2010.TimeWarp { + + public TimeWarp(UUID ownerId) { + super(ownerId); + this.cardNumber = 74; + this.expansionSetCode = "TPR"; + } + + public TimeWarp(final TimeWarp card) { + super(card); + } + + @Override + public TimeWarp copy() { + return new TimeWarp(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/TradewindRider.java b/Mage.Sets/src/mage/sets/tempestremastered/TradewindRider.java new file mode 100644 index 0000000000..9f415a4ba4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/TradewindRider.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class TradewindRider extends mage.sets.tempest.TradewindRider { + + public TradewindRider(UUID ownerId) { + super(ownerId); + this.cardNumber = 75; + this.expansionSetCode = "TPR"; + } + + public TradewindRider(final TradewindRider card) { + super(card); + } + + @Override + public TradewindRider copy() { + return new TradewindRider(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/TrainedArmodon.java b/Mage.Sets/src/mage/sets/tempestremastered/TrainedArmodon.java new file mode 100644 index 0000000000..eb2df01684 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/TrainedArmodon.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class TrainedArmodon extends mage.sets.tempest.TrainedArmodon { + + public TrainedArmodon(UUID ownerId) { + super(ownerId); + this.cardNumber = 200; + this.expansionSetCode = "TPR"; + } + + public TrainedArmodon(final TrainedArmodon card) { + super(card); + } + + @Override + public TrainedArmodon copy() { + return new TrainedArmodon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Tranquility.java b/Mage.Sets/src/mage/sets/tempestremastered/Tranquility.java new file mode 100644 index 0000000000..be0636766e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Tranquility.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Tranquility extends mage.sets.tempest.Tranquility { + + public Tranquility(UUID ownerId) { + super(ownerId); + this.cardNumber = 201; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public Tranquility(final Tranquility card) { + super(card); + } + + @Override + public Tranquility copy() { + return new Tranquility(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Twitch.java b/Mage.Sets/src/mage/sets/tempestremastered/Twitch.java new file mode 100644 index 0000000000..3481ada592 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Twitch.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Twitch extends mage.sets.worldwake.Twitch { + + public Twitch(UUID ownerId) { + super(ownerId); + this.cardNumber = 76; + this.expansionSetCode = "TPR"; + } + + public Twitch(final Twitch card) { + super(card); + } + + @Override + public Twitch copy() { + return new Twitch(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VecTownships.java b/Mage.Sets/src/mage/sets/tempestremastered/VecTownships.java new file mode 100644 index 0000000000..fe5d000582 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VecTownships.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class VecTownships extends mage.sets.tempest.VecTownships { + + public VecTownships(UUID ownerId) { + super(ownerId); + this.cardNumber = 247; + this.expansionSetCode = "TPR"; + } + + public VecTownships(final VecTownships card) { + super(card); + } + + @Override + public VecTownships copy() { + return new VecTownships(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VerdantForce.java b/Mage.Sets/src/mage/sets/tempestremastered/VerdantForce.java new file mode 100644 index 0000000000..3c03986a89 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VerdantForce.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class VerdantForce extends mage.sets.tempest.VerdantForce { + + public VerdantForce(UUID ownerId) { + super(ownerId); + this.cardNumber = 202; + this.expansionSetCode = "TPR"; + } + + public VerdantForce(final VerdantForce card) { + super(card); + } + + @Override + public VerdantForce copy() { + return new VerdantForce(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Verdigris.java b/Mage.Sets/src/mage/sets/tempestremastered/Verdigris.java new file mode 100644 index 0000000000..3be4194c51 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Verdigris.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Verdigris extends mage.sets.tempest.Verdigris { + + public Verdigris(UUID ownerId) { + super(ownerId); + this.cardNumber = 204; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public Verdigris(final Verdigris card) { + super(card); + } + + @Override + public Verdigris copy() { + return new Verdigris(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VictualSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/VictualSliver.java new file mode 100644 index 0000000000..e2cceb1bc3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VictualSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class VictualSliver extends mage.sets.stronghold.VictualSliver { + + public VictualSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 215; + this.expansionSetCode = "TPR"; + } + + public VictualSliver(final VictualSliver card) { + super(card); + } + + @Override + public VictualSliver copy() { + return new VictualSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VolrathsStronghold.java b/Mage.Sets/src/mage/sets/tempestremastered/VolrathsStronghold.java new file mode 100644 index 0000000000..02f2ba8336 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VolrathsStronghold.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class VolrathsStronghold extends mage.sets.stronghold.VolrathsStronghold { + + public VolrathsStronghold(UUID ownerId) { + super(ownerId); + this.cardNumber = 248; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.MYTHIC; + } + + public VolrathsStronghold(final VolrathsStronghold card) { + super(card); + } + + @Override + public VolrathsStronghold copy() { + return new VolrathsStronghold(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WallOfBlossoms.java b/Mage.Sets/src/mage/sets/tempestremastered/WallOfBlossoms.java new file mode 100644 index 0000000000..68ba56f2ec --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WallOfBlossoms.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WallOfBlossoms extends mage.sets.stronghold.WallOfBlossoms { + + public WallOfBlossoms(UUID ownerId) { + super(ownerId); + this.cardNumber = 205; + this.expansionSetCode = "TPR"; + } + + public WallOfBlossoms(final WallOfBlossoms card) { + super(card); + } + + @Override + public WallOfBlossoms copy() { + return new WallOfBlossoms(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WallOfDiffusion.java b/Mage.Sets/src/mage/sets/tempestremastered/WallOfDiffusion.java new file mode 100644 index 0000000000..da90a2ac8e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WallOfDiffusion.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WallOfDiffusion extends mage.sets.tempest.WallOfDiffusion { + + public WallOfDiffusion(UUID ownerId) { + super(ownerId); + this.cardNumber = 164; + this.expansionSetCode = "TPR"; + } + + public WallOfDiffusion(final WallOfDiffusion card) { + super(card); + } + + @Override + public WallOfDiffusion copy() { + return new WallOfDiffusion(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WallOfEssence.java b/Mage.Sets/src/mage/sets/tempestremastered/WallOfEssence.java new file mode 100644 index 0000000000..89e85d9845 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WallOfEssence.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WallOfEssence extends mage.sets.stronghold.WallOfEssence { + + public WallOfEssence(UUID ownerId) { + super(ownerId); + this.cardNumber = 38; + this.expansionSetCode = "TPR"; + } + + public WallOfEssence(final WallOfEssence card) { + super(card); + } + + @Override + public WallOfEssence copy() { + return new WallOfEssence(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Wasteland.java b/Mage.Sets/src/mage/sets/tempestremastered/Wasteland.java new file mode 100644 index 0000000000..c64ba71458 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Wasteland.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Wasteland extends mage.sets.tempest.Wasteland { + + public Wasteland(UUID ownerId) { + super(ownerId); + this.cardNumber = 249; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.RARE; + } + + public Wasteland(final Wasteland card) { + super(card); + } + + @Override + public Wasteland copy() { + return new Wasteland(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WhispersOfTheMuse.java b/Mage.Sets/src/mage/sets/tempestremastered/WhispersOfTheMuse.java new file mode 100644 index 0000000000..d315cc5fde --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WhispersOfTheMuse.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class WhispersOfTheMuse extends mage.sets.tempest.WhispersOfTheMuse { + + public WhispersOfTheMuse(UUID ownerId) { + super(ownerId); + this.cardNumber = 79; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public WhispersOfTheMuse(final WhispersOfTheMuse card) { + super(card); + } + + @Override + public WhispersOfTheMuse copy() { + return new WhispersOfTheMuse(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WindDancer.java b/Mage.Sets/src/mage/sets/tempestremastered/WindDancer.java new file mode 100644 index 0000000000..4ec67a43d8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WindDancer.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WindDancer extends mage.sets.tempest.WindDancer { + + public WindDancer(UUID ownerId) { + super(ownerId); + this.cardNumber = 80; + this.expansionSetCode = "TPR"; + } + + public WindDancer(final WindDancer card) { + super(card); + } + + @Override + public WindDancer copy() { + return new WindDancer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WindDrake.java b/Mage.Sets/src/mage/sets/tempestremastered/WindDrake.java new file mode 100644 index 0000000000..2b59ad6dd7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WindDrake.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WindDrake extends mage.sets.magic2010.WindDrake { + + public WindDrake(UUID ownerId) { + super(ownerId); + this.cardNumber = 81; + this.expansionSetCode = "TPR"; + } + + public WindDrake(final WindDrake card) { + super(card); + } + + @Override + public WindDrake copy() { + return new WindDrake(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WindsOfRath.java b/Mage.Sets/src/mage/sets/tempestremastered/WindsOfRath.java new file mode 100644 index 0000000000..62dee5a6ac --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WindsOfRath.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WindsOfRath extends mage.sets.heroesvsmonsters.WindsOfRath { + + public WindsOfRath(UUID ownerId) { + super(ownerId); + this.cardNumber = 40; + this.expansionSetCode = "TPR"; + } + + public WindsOfRath(final WindsOfRath card) { + super(card); + } + + @Override + public WindsOfRath copy() { + return new WindsOfRath(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WingedSliver.java b/Mage.Sets/src/mage/sets/tempestremastered/WingedSliver.java new file mode 100644 index 0000000000..5d39e4ce55 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WingedSliver.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WingedSliver extends mage.sets.tempest.WingedSliver { + + public WingedSliver(UUID ownerId) { + super(ownerId); + this.cardNumber = 82; + this.expansionSetCode = "TPR"; + } + + public WingedSliver(final WingedSliver card) { + super(card); + } + + @Override + public WingedSliver copy() { + return new WingedSliver(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/YouthfulKnight.java b/Mage.Sets/src/mage/sets/tempestremastered/YouthfulKnight.java new file mode 100644 index 0000000000..bd469de9da --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/YouthfulKnight.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class YouthfulKnight extends mage.sets.tenth.YouthfulKnight { + + public YouthfulKnight(UUID ownerId) { + super(ownerId); + this.cardNumber = 41; + this.expansionSetCode = "TPR"; + } + + public YouthfulKnight(final YouthfulKnight card) { + super(card); + } + + @Override + public YouthfulKnight copy() { + return new YouthfulKnight(this); + } +} diff --git a/Mage.Sets/src/mage/sets/urzassaga/PitTrap.java b/Mage.Sets/src/mage/sets/urzassaga/PitTrap.java new file mode 100644 index 0000000000..74821b5785 --- /dev/null +++ b/Mage.Sets/src/mage/sets/urzassaga/PitTrap.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.urzassaga; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterAttackingCreature; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.common.TargetAttackingCreature; + +/** + * + * @author fireshoes + */ +public class PitTrap extends CardImpl { + + private static final FilterAttackingCreature filter = new FilterAttackingCreature("creature without flying"); + + static { + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); + } + + public PitTrap(UUID ownerId) { + super(ownerId, 307, "Pit Trap", Rarity.UNCOMMON, new CardType[]{CardType.ARTIFACT}, "{2}"); + this.expansionSetCode = "USG"; + + // {2}, {tap}, Sacrifice Pit Trap: Destroy target attacking creature without flying. It can't be regenerated. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(true), new GenericManaCost(2)); + ability.addCost(new SacrificeSourceCost()); + ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + this.addAbility(ability); + } + + public PitTrap(final PitTrap card) { + super(card); + } + + @Override + public PitTrap copy() { + return new PitTrap(this); + } +} diff --git a/Mage.Sets/src/mage/sets/worldmagiccupqualifier/ThaliaGuardianOfThraben.java b/Mage.Sets/src/mage/sets/worldmagiccupqualifier/ThaliaGuardianOfThraben.java new file mode 100644 index 0000000000..b9ab3c534d --- /dev/null +++ b/Mage.Sets/src/mage/sets/worldmagiccupqualifier/ThaliaGuardianOfThraben.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.worldmagiccupqualifier; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ThaliaGuardianOfThraben extends mage.sets.darkascension.ThaliaGuardianOfThraben { + + public ThaliaGuardianOfThraben(UUID ownerId) { + super(ownerId); + this.cardNumber = 3; + this.expansionSetCode = "WMCQ"; + } + + public ThaliaGuardianOfThraben(final ThaliaGuardianOfThraben card) { + super(card); + } + + @Override + public ThaliaGuardianOfThraben copy() { + return new ThaliaGuardianOfThraben(this); + } +} diff --git a/Utils/known-sets.txt b/Utils/known-sets.txt index 1a74530bcf..50f4788578 100644 --- a/Utils/known-sets.txt +++ b/Utils/known-sets.txt @@ -111,6 +111,7 @@ Starter 1999|starter1999| Starter 2000|starter2000| Stronghold|stronghold| Tempest|tempest| +Tempest Remastered|tempestremastered| Tenth Edition|tenth| The Dark|thedark| Theros|theros| diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index a133f32c9e..b745c7415c 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -4385,61 +4385,24 @@ Voracious Hatchling|Eventide|97|U|{3}{WB}|Creature - Elemental|6|6|Lifelink$Vora Call the Skybreaker|Eventide|98|R|{5}{UR}{UR}|Sorcery|||Put a 5/5 blue and red Elemental creature token with flying onto the battlefield.$Retrace (You may cast this card from your graveyard by discarding a land card in addition to paying its other costs.)| Clout of the Dominus|Eventide|99|C|{UR}|Enchantment - Aura|||Enchant creature$As long as enchanted creature is blue, it gets +1/+1 and has shroud. (It can't be the target of spells or abilities.)$As long as enchanted creature is red, it gets +1/+1 and has haste.| Allay|Exodus|1|C|{1}{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Destroy target enchantment.| +Angelic Blessing|Exodus|2|C|{2}{W}|Sorcery|||Target creature gets +3/+3 and gains flying until end of turn. (It can't be blocked except by creatures with flying or reach.)| +Cataclysm|Exodus|3|R|{2}{W}{W}|Sorcery|||Each player chooses from among the permanents he or she controls an artifact, a creature, an enchantment, and a land, then sacrifices the rest.| +Charging Paladin|Exodus|4|C|{2}{W}|Creature - Human Knight|2|2|Whenever Charging Paladin attacks, it gets +0/+3 until end of turn.| +Convalescence|Exodus|5|R|{1}{W}|Enchantment|||At the beginning of your upkeep, if you have 10 or less life, you gain 1 life.| +Exalted Dragon|Exodus|6|R|{4}{W}{W}|Creature - Dragon|5|5|Flying$Exalted Dragon can't attack unless you sacrifice a land.| +High Ground|Exodus|7|U|{W}|Enchantment|||Each creature you control can block an additional creature.| +Keeper of the Light|Exodus|8|U|{W}{W}|Creature - Human Wizard|1|2|{W}, {tap}: Choose target opponent who had more life than you did as you activated this ability. You gain 3 life.| +Kor Chant|Exodus|9|C|{2}{W}|Instant|||All damage that would be dealt this turn to target creature you control by a source of your choice is dealt to another target creature instead.| Limited Resources|Exodus|10|R|{W}|Enchantment|||When Limited Resources enters the battlefield, each player chooses five lands he or she controls and sacrifices the rest.$Players can't play lands as long as ten or more lands are on the battlefield.| -Scalding Salamander|Exodus|100|U|{2}{R}|Creature - Salamander|2|1|Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls.| -Seismic Assault|Exodus|101|R|{R}{R}{R}|Enchantment|||Discard a land card: Seismic Assault deals 2 damage to target creature or player.| -Shattering Pulse|Exodus|102|C|{1}{R}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Destroy target artifact.| -Sonic Burst|Exodus|103|C|{1}{R}|Instant|||As an additional cost to cast Sonic Burst, discard a card at random.$Sonic Burst deals 4 damage to target creature or player.| -Spellshock|Exodus|104|U|{2}{R}|Enchantment|||Whenever a player casts a spell, Spellshock deals 2 damage to that player.| -Avenging Druid|Exodus|105|C|{2}{G}|Creature - Human Druid|1|3|Whenever Avenging Druid deals damage to an opponent, you may reveal cards from the top of your library until you reveal a land card. If you do, put that card onto the battlefield and put all other cards revealed this way into your graveyard.| -Bequeathal|Exodus|106|C|{G}|Enchantment - Aura|||Enchant creature$When enchanted creature dies, you draw two cards.| -Cartographer|Exodus|107|U|{2}{G}|Creature - Human|2|2|When Cartographer enters the battlefield, you may return target land card from your graveyard to your hand.| -Crashing Boars|Exodus|108|U|{3}{G}{G}|Creature - Boar|4|4|Whenever Crashing Boars attacks, defending player chooses an untapped creature he or she controls. That creature blocks Crashing Boars this turn if able.| -Elven Palisade|Exodus|109|U|{G}|Enchantment|||Sacrifice a Forest: Target attacking creature gets -3/-0 until end of turn.| Oath of Lieges|Exodus|11|R|{1}{W}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player who controls more lands than he or she does and is his or her opponent. The first player may search his or her library for a basic land card, put that card onto the battlefield, then shuffle his or her library.| -Elvish Berserker|Exodus|110|C|{G}|Creature - Elf Berserker|1|1|Whenever Elvish Berserker becomes blocked, it gets +1/+1 until end of turn for each creature blocking it.| -Jackalope Herd|Exodus|111|C|{3}{G}|Creature - Rabbit Beast|4|5|When you cast a spell, return Jackalope Herd to its owner's hand.| -Keeper of the Beasts|Exodus|112|U|{G}{G}|Creature - Human Wizard|1|2|{G}, {tap}: Choose target opponent who controlled more creatures than you did as you activated this ability. Put a 2/2 green Beast creature token onto the battlefield.| -Manabond|Exodus|113|R|{G}|Enchantment|||At the beginning of your end step, you may reveal your hand and put all land cards from it onto the battlefield. If you do, discard your hand.| -Mirri, Cat Warrior|Exodus|114|R|{1}{G}{G}|Legendary Creature - Cat Warrior|2|3|First strike, forestwalk, vigilance (This creature deals combat damage before creatures without first strike, it's unblockable as long as defending player controls a Forest, and attacking doesn't cause this creature to tap.)| -Oath of Druids|Exodus|115|R|{1}{G}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player who controls more creatures than he or she does and is his or her opponent. The first player may reveal cards from the top of his or her library until he or she reveals a creature card. If he or she does, that player puts that card onto the battlefield and all other cards revealed this way into his or her graveyard.| -Plated Rootwalla|Exodus|116|C|{4}{G}|Creature - Lizard|3|3|{2}{G}: Plated Rootwalla gets +3/+3 until end of turn. Activate this ability only once each turn.| -Predatory Hunger|Exodus|117|C|{G}|Enchantment - Aura|||Enchant creature$Whenever an opponent casts a creature spell, put a +1/+1 counter on enchanted creature.| -Pygmy Troll|Exodus|118|C|{1}{G}|Creature - Troll|1|1|Whenever Pygmy Troll becomes blocked by a creature, Pygmy Troll gets +1/+1 until end of turn.${G}: Regenerate Pygmy Troll.| -Rabid Wolverines|Exodus|119|C|{3}{G}{G}|Creature - Wolverine|4|4|Whenever Rabid Wolverines becomes blocked by a creature, Rabid Wolverines gets +1/+1 until end of turn.| Paladin en-Vec|Exodus|12|R|{1}{W}{W}|Creature - Human Knight|2|2|First strike, protection from black and from red (This creature deals combat damage before creatures without first strike. It can't be blocked, targeted, dealt damage, or enchanted by anything black or red.)| -Reclaim|Exodus|120|C|{G}|Instant|||Put target card from your graveyard on top of your library.| -Resuscitate|Exodus|121|U|{1}{G}|Instant|||Until end of turn, creatures you control gain "{1}: Regenerate this creature."| -Rootwater Alligator|Exodus|122|C|{3}{G}|Creature - Crocodile|3|2|Sacrifice a Forest: Regenerate Rootwater Alligator.| -Skyshroud Elite|Exodus|123|U|{G}|Creature - Elf|1|1|Skyshroud Elite gets +1/+2 as long as an opponent controls a nonbasic land.| -Skyshroud War Beast|Exodus|124|R|{1}{G}|Creature - Beast|*|*|Trample$As Skyshroud War Beast enters the battlefield, choose an opponent.$Skyshroud War Beast's power and toughness are each equal to the number of nonbasic lands the chosen player controls.| -Song of Serenity|Exodus|125|U|{1}{G}|Enchantment|||Creatures that are enchanted can't attack or block.| -Spike Hatcher|Exodus|126|R|{6}{G}|Creature - Spike|0|0|Spike Hatcher enters the battlefield with six +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Hatcher: Put a +1/+1 counter on target creature.${1}, Remove a +1/+1 counter from Spike Hatcher: Regenerate Spike Hatcher.| -Spike Rogue|Exodus|127|U|{1}{G}{G}|Creature - Spike|0|0|Spike Rogue enters the battlefield with two +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Rogue: Put a +1/+1 counter on target creature.${2}, Remove a +1/+1 counter from a creature you control: Put a +1/+1 counter on Spike Rogue.| -Spike Weaver|Exodus|128|R|{2}{G}{G}|Creature - Spike|0|0|Spike Weaver enters the battlefield with three +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Weaver: Put a +1/+1 counter on target creature.${1}, Remove a +1/+1 counter from Spike Weaver: Prevent all combat damage that would be dealt this turn.| -Survival of the Fittest|Exodus|129|R|{1}{G}|Enchantment|||{G}, Discard a creature card: Search your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library.| Peace of Mind|Exodus|13|U|{1}{W}|Enchantment|||{W}, Discard a card: You gain 3 life.| -Wood Elves|Exodus|130|C|{2}{G}|Creature - Elf Scout|1|1|When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.| -Coat of Arms|Exodus|131|R|{5}|Artifact|||Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Goblin Warriors and a Goblin Shaman are on the battlefield, each gets +2/+2.)| -Erratic Portal|Exodus|132|R|{4}|Artifact|||{1}, {tap}: Return target creature to its owner's hand unless its controller pays {1}.| -Medicine Bag|Exodus|133|U|{3}|Artifact|||{1}, {tap}, Discard a card: Regenerate target creature.| -Memory Crystal|Exodus|134|R|{3}|Artifact|||Buyback costs cost {2} less.| -Mindless Automaton|Exodus|135|R|{4}|Artifact Creature - Construct|0|0|Mindless Automaton enters the battlefield with two +1/+1 counters on it.${1}, Discard a card: Put a +1/+1 counter on Mindless Automaton.$Remove two +1/+1 counters from Mindless Automaton: Draw a card.| -Null Brooch|Exodus|136|R|{4}|Artifact|||{2}, {tap}, Discard your hand: Counter target noncreature spell.| -Skyshaper|Exodus|137|U|{2}|Artifact|||Sacrifice Skyshaper: Creatures you control gain flying until end of turn.| -Spellbook|Exodus|138|U|{0}|Artifact|||You have no maximum hand size.| -Sphere of Resistance|Exodus|139|R|{2}|Artifact|||Spells cost {1} more to cast.| Pegasus Stampede|Exodus|14|U|{1}{W}|Sorcery|||Buyback-Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell. If you do, put this card into your hand as it resolves.)$Put a 1/1 white Pegasus creature token with flying onto the battlefield.| -Thopter Squadron|Exodus|140|R|{5}|Artifact Creature - Thopter|0|0|Flying$Thopter Squadron enters the battlefield with three +1/+1 counters on it.${1}, Remove a +1/+1 counter from Thopter Squadron: Put a 1/1 colorless Thopter artifact creature token with flying onto the battlefield. Activate this ability only any time you could cast a sorcery.${1}, Sacrifice another Thopter: Put a +1/+1 counter on Thopter Squadron. Activate this ability only any time you could cast a sorcery.| -Transmogrifying Licid|Exodus|141|U|{3}|Artifact Creature - Licid|2|2|{1}, {tap}: Transmogrifying Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {1} to end this effect.$Enchanted creature gets +1/+1 and is an artifact in addition to its other types.| -Workhorse|Exodus|142|R|{6}|Artifact Creature - Horse|0|0|Workhorse enters the battlefield with four +1/+1 counters on it.$Remove a +1/+1 counter from Workhorse: Add {1} to your mana pool.| -City of Traitors|Exodus|143|R||Land|||When you play another land, sacrifice City of Traitors.${tap}: Add {2} to your mana pool.| Penance|Exodus|15|U|{2}{W}|Enchantment|||Put a card from your hand on top of your library: The next time a black or red source of your choice would deal damage this turn, prevent that damage.| Reaping the Rewards|Exodus|16|C|{W}|Instant|||Buyback-Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell. If you do, put this card into your hand as it resolves.)$You gain 2 life.| Reconnaissance|Exodus|17|U|{W}|Enchantment|||{0}: Remove target attacking creature you control from combat and untap it.| Shackles|Exodus|18|C|{2}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature doesn't untap during its controller's untap step.${W}: Return Shackles to its owner's hand.| Shield Mate|Exodus|19|C|{W}|Creature - Human Soldier|1|1|Sacrifice Shield Mate: Target creature gets +0/+4 until end of turn.| -Angelic Blessing|Exodus|2|C|{2}{W}|Sorcery|||Target creature gets +3/+3 and gains flying until end of turn. (It can't be blocked except by creatures with flying or reach.)| Soltari Visionary|Exodus|20|C|{1}{W}{W}|Creature - Soltari Cleric|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Soltari Visionary deals damage to a player, destroy target enchantment that player controls.| Soul Warden|Exodus|21|C|{W}|Creature - Human Cleric|1|1|Whenever another creature enters the battlefield, you gain 1 life.| Standing Troops|Exodus|22|C|{2}{W}|Creature - Human Soldier|1|4|Vigilance| @@ -4450,7 +4413,6 @@ Zealots en-Dal|Exodus|26|U|{3}{W}|Creature - Human Soldier|2|4|At the beginning AEther Tide|Exodus|27|C|{X}{U}|Sorcery|||As an additional cost to cast Æther Tide, discard X creature cards.$Return X target creatures to their owners' hands.| Cunning|Exodus|28|C|{1}{U}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +3/+3.$When enchanted creature attacks or blocks, sacrifice Cunning at the beginning of the next cleanup step.| Curiosity|Exodus|29|U|{U}|Enchantment - Aura|||Enchant creature$Whenever enchanted creature deals damage to an opponent, you may draw a card.| -Cataclysm|Exodus|3|R|{2}{W}{W}|Sorcery|||Each player chooses from among the permanents he or she controls an artifact, a creature, an enchantment, and a land, then sacrifices the rest.| Dominating Licid|Exodus|30|R|{1}{U}{U}|Creature - Licid|1|1|{1}{U}{U}, {tap}: Dominating Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect.$You control enchanted creature.| Ephemeron|Exodus|31|R|{4}{U}{U}|Creature - Illusion|4|4|Flying$Discard a card: Return Ephemeron to its owner's hand.| Equilibrium|Exodus|32|R|{1}{U}{U}|Enchantment|||Whenever you cast a creature spell, you may pay {1}. If you do, return target creature to its owner's hand.| @@ -4461,7 +4423,6 @@ Keeper of the Mind|Exodus|36|U|{U}{U}|Creature - Human Wizard|1|2|{U}, {tap}: Ch Killer Whale|Exodus|37|U|{3}{U}|Creature - Whale|3|5|{U}: Killer Whale gains flying until end of turn.| Mana Breach|Exodus|38|U|{2}{U}|Enchantment|||Whenever a player casts a spell, that player returns a land he or she controls to its owner's hand.| Merfolk Looter|Exodus|39|C|{1}{U}|Creature - Merfolk Rogue|1|1|{tap}: Draw a card, then discard a card.| -Charging Paladin|Exodus|4|C|{2}{W}|Creature - Human Knight|2|2|Whenever Charging Paladin attacks, it gets +0/+3 until end of turn.| Mind Over Matter|Exodus|40|R|{2}{U}{U}{U}{U}|Enchantment|||Discard a card: You may tap or untap target artifact, creature, or land.| Mirozel|Exodus|41|U|{3}{U}|Creature - Illusion|2|3|Flying$When Mirozel becomes the target of a spell or ability, return Mirozel to its owner's hand.| Oath of Scholars|Exodus|42|R|{3}{U}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player who has more cards in hand than he or she does and is his or her opponent. The first player may discard his or her hand and draw three cards.| @@ -4472,7 +4433,6 @@ Scrivener|Exodus|46|U|{4}{U}|Creature - Human Wizard|2|2|When Scrivener enters t Thalakos Drifters|Exodus|47|R|{2}{U}{U}|Creature - Thalakos|3|3|Discard a card: Thalakos Drifters gains shadow until end of turn. (This creature can block or be blocked by only creatures with shadow.)| Thalakos Scout|Exodus|48|C|{2}{U}|Creature - Thalakos Soldier Scout|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Discard a card: Return Thalakos Scout to its owner's hand.| Theft of Dreams|Exodus|49|C|{2}{U}|Sorcery|||Draw a card for each tapped creature target opponent controls.| -Convalescence|Exodus|5|R|{1}{W}|Enchantment|||At the beginning of your upkeep, if you have 10 or less life, you gain 1 life.| Treasure Trove|Exodus|50|U|{2}{U}{U}|Enchantment|||{2}{U}{U}: Draw a card.| Wayward Soul|Exodus|51|C|{2}{U}{U}|Creature - Spirit|3|2|Flying$${U}: Put Wayward Soul on top of its owner's library.| Whiptongue Frog|Exodus|52|C|{2}{U}|Creature - Frog|1|3|{U}: Whiptongue Frog gains flying until end of turn.| @@ -4483,7 +4443,6 @@ Cursed Flesh|Exodus|56|C|{B}|Enchantment - Aura|||Enchant creature$Enchanted cre Dauthi Cutthroat|Exodus|57|U|{1}{B}|Creature - Dauthi Minion|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)${1}{B}, {tap}: Destroy target creature with shadow.| Dauthi Jackal|Exodus|58|C|{2}{B}|Creature - Dauthi Hound|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)${B}{B}, Sacrifice Dauthi Jackal: Destroy target blocking creature.| Dauthi Warlord|Exodus|59|U|{1}{B}|Creature - Dauthi Soldier|*|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Warlord's power is equal to the number of creatures with shadow on the battlefield.| -Exalted Dragon|Exodus|6|R|{4}{W}{W}|Creature - Dragon|5|5|Flying$Exalted Dragon can't attack unless you sacrifice a land.| Death's Duet|Exodus|60|C|{2}{B}|Sorcery|||Return two target creature cards from your graveyard to your hand.| Entropic Specter|Exodus|61|R|{3}{B}{B}|Creature - Specter Spirit|*|*|Flying$As Entropic Specter enters the battlefield, choose an opponent.$Entropic Specter's power and toughness are each equal to the number of cards in the chosen player's hand.$Whenever Entropic Specter deals damage to a player, that player discards a card.| Fugue|Exodus|62|U|{3}{B}{B}|Sorcery|||Target player discards three cards.| @@ -4494,7 +4453,6 @@ Mind Maggots|Exodus|66|U|{3}{B}|Creature - Insect|2|2|When Mind Maggots enters t Nausea|Exodus|67|C|{1}{B}|Sorcery|||All creatures get -1/-1 until end of turn.| Necrologia|Exodus|68|U|{3}{B}{B}|Instant|||Cast Necrologia only during your end step.$As an additional cost to cast Necrologia, pay X life.$Draw X cards.| Oath of Ghouls|Exodus|69|R|{1}{B}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player whose graveyard has fewer creature cards in it than his or her graveyard does and is his or her opponent. The first player may return a creature card from his or her graveyard to his or her hand.| -High Ground|Exodus|7|U|{W}|Enchantment|||Each creature you control can block an additional creature.| Pit Spawn|Exodus|70|R|{4}{B}{B}{B}|Creature - Demon|6|4|First strike$At the beginning of your upkeep, sacrifice Pit Spawn unless you pay {B}{B}.$Whenever Pit Spawn deals damage to a creature, exile that creature.| Plaguebearer|Exodus|71|R|{1}{B}|Creature - Zombie|1|1|{X}{X}{B}: Destroy target nonblack creature with converted mana cost X.| Recurring Nightmare|Exodus|72|R|{2}{B}|Enchantment|||Sacrifice a creature, Return Recurring Nightmare to its owner's hand: Return target creature card from your graveyard to the battlefield. Activate this ability only any time you could cast a sorcery.| @@ -4505,7 +4463,6 @@ Thrull Surgeon|Exodus|76|C|{1}{B}|Creature - Thrull|1|1|{1}{B}, Sacrifice Thrull Vampire Hounds|Exodus|77|C|{2}{B}|Creature - Vampire Hound|2|2|Discard a creature card: Vampire Hounds gets +2/+2 until end of turn.| Volrath's Dungeon|Exodus|78|R|{2}{B}{B}|Enchantment|||Pay 5 life: Destroy Volrath's Dungeon. Any player may activate this ability but only during his or her turn.$Discard a card: Target player puts a card from his or her hand on top of his or her library. Activate this ability only any time you could cast a sorcery.| Anarchist|Exodus|79|C|{4}{R}|Creature - Human Wizard|2|2|When Anarchist enters the battlefield, you may return target sorcery card from your graveyard to your hand.| -Keeper of the Light|Exodus|8|U|{W}{W}|Creature - Human Wizard|1|2|{W}, {tap}: Choose target opponent who had more life than you did as you activated this ability. You gain 3 life.| Cinder Crawler|Exodus|80|C|{1}{R}|Creature - Salamander|1|2|{R}: Cinder Crawler gets +1/+0 until end of turn. Activate this ability only if Cinder Crawler is blocked.| Dizzying Gaze|Exodus|81|C|{R}|Enchantment - Aura|||Enchant creature you control${R}: Enchanted creature deals 1 damage to target creature with flying.| Fighting Chance|Exodus|82|R|{R}|Instant|||For each blocking creature, flip a coin. If you win the flip, prevent all combat damage that would be dealt by that creature this turn.| @@ -4516,7 +4473,6 @@ Mage il-Vec|Exodus|86|C|{2}{R}|Creature - Human Wizard|2|2|{tap}, Discard a card Maniacal Rage|Exodus|87|C|{1}{R}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2 and can't block.| Mogg Assassin|Exodus|88|U|{2}{R}|Creature - Goblin Assassin|2|1|{tap}: You choose target creature an opponent controls, and that opponent chooses target creature. Flip a coin. If you win the flip, destroy the creature you chose. If you lose the flip, destroy the creature your opponent chose.| Monstrous Hound|Exodus|89|R|{3}{R}|Creature - Hound|4|4|Monstrous Hound can't attack unless you control more lands than defending player.$Monstrous Hound can't block unless you control more lands than attacking player.| -Kor Chant|Exodus|9|C|{2}{W}|Instant|||All damage that would be dealt this turn to target creature you control by a source of your choice is dealt to another target creature instead.| Oath of Mages|Exodus|90|R|{1}{R}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player who has more life than he or she does and is his or her opponent. The first player may have Oath of Mages deal 1 damage to the second player.| Ogre Shaman|Exodus|91|R|{3}{R}{R}|Creature - Ogre Shaman|3|3|{2}, Discard a card at random: Ogre Shaman deals 2 damage to target creature or player.| Onslaught|Exodus|92|C|{R}|Enchantment|||Whenever you cast a creature spell, tap target creature.| @@ -4527,6 +4483,50 @@ Raging Goblin|Exodus|96|C|{R}|Creature - Goblin Berserker|1|1|Haste (This cre Ravenous Baboons|Exodus|97|R|{3}{R}|Creature - Ape|2|2|When Ravenous Baboons enters the battlefield, destroy target nonbasic land.| Reckless Ogre|Exodus|98|C|{3}{R}|Creature - Ogre|3|2|Whenever Reckless Ogre attacks alone, it gets +3/+0 until end of turn.| Sabertooth Wyvern|Exodus|99|U|{4}{R}|Creature - Drake|3|2|Flying, first strike| +Scalding Salamander|Exodus|100|U|{2}{R}|Creature - Salamander|2|1|Whenever Scalding Salamander attacks, you may have it deal 1 damage to each creature without flying defending player controls.| +Seismic Assault|Exodus|101|R|{R}{R}{R}|Enchantment|||Discard a land card: Seismic Assault deals 2 damage to target creature or player.| +Shattering Pulse|Exodus|102|C|{1}{R}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Destroy target artifact.| +Sonic Burst|Exodus|103|C|{1}{R}|Instant|||As an additional cost to cast Sonic Burst, discard a card at random.$Sonic Burst deals 4 damage to target creature or player.| +Spellshock|Exodus|104|U|{2}{R}|Enchantment|||Whenever a player casts a spell, Spellshock deals 2 damage to that player.| +Avenging Druid|Exodus|105|C|{2}{G}|Creature - Human Druid|1|3|Whenever Avenging Druid deals damage to an opponent, you may reveal cards from the top of your library until you reveal a land card. If you do, put that card onto the battlefield and put all other cards revealed this way into your graveyard.| +Bequeathal|Exodus|106|C|{G}|Enchantment - Aura|||Enchant creature$When enchanted creature dies, you draw two cards.| +Cartographer|Exodus|107|U|{2}{G}|Creature - Human|2|2|When Cartographer enters the battlefield, you may return target land card from your graveyard to your hand.| +Crashing Boars|Exodus|108|U|{3}{G}{G}|Creature - Boar|4|4|Whenever Crashing Boars attacks, defending player chooses an untapped creature he or she controls. That creature blocks Crashing Boars this turn if able.| +Elven Palisade|Exodus|109|U|{G}|Enchantment|||Sacrifice a Forest: Target attacking creature gets -3/-0 until end of turn.| +Elvish Berserker|Exodus|110|C|{G}|Creature - Elf Berserker|1|1|Whenever Elvish Berserker becomes blocked, it gets +1/+1 until end of turn for each creature blocking it.| +Jackalope Herd|Exodus|111|C|{3}{G}|Creature - Rabbit Beast|4|5|When you cast a spell, return Jackalope Herd to its owner's hand.| +Keeper of the Beasts|Exodus|112|U|{G}{G}|Creature - Human Wizard|1|2|{G}, {tap}: Choose target opponent who controlled more creatures than you did as you activated this ability. Put a 2/2 green Beast creature token onto the battlefield.| +Manabond|Exodus|113|R|{G}|Enchantment|||At the beginning of your end step, you may reveal your hand and put all land cards from it onto the battlefield. If you do, discard your hand.| +Mirri, Cat Warrior|Exodus|114|R|{1}{G}{G}|Legendary Creature - Cat Warrior|2|3|First strike, forestwalk, vigilance (This creature deals combat damage before creatures without first strike, it's unblockable as long as defending player controls a Forest, and attacking doesn't cause this creature to tap.)| +Oath of Druids|Exodus|115|R|{1}{G}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player who controls more creatures than he or she does and is his or her opponent. The first player may reveal cards from the top of his or her library until he or she reveals a creature card. If he or she does, that player puts that card onto the battlefield and all other cards revealed this way into his or her graveyard.| +Plated Rootwalla|Exodus|116|C|{4}{G}|Creature - Lizard|3|3|{2}{G}: Plated Rootwalla gets +3/+3 until end of turn. Activate this ability only once each turn.| +Predatory Hunger|Exodus|117|C|{G}|Enchantment - Aura|||Enchant creature$Whenever an opponent casts a creature spell, put a +1/+1 counter on enchanted creature.| +Pygmy Troll|Exodus|118|C|{1}{G}|Creature - Troll|1|1|Whenever Pygmy Troll becomes blocked by a creature, Pygmy Troll gets +1/+1 until end of turn.${G}: Regenerate Pygmy Troll.| +Rabid Wolverines|Exodus|119|C|{3}{G}{G}|Creature - Wolverine|4|4|Whenever Rabid Wolverines becomes blocked by a creature, Rabid Wolverines gets +1/+1 until end of turn.| +Reclaim|Exodus|120|C|{G}|Instant|||Put target card from your graveyard on top of your library.| +Resuscitate|Exodus|121|U|{1}{G}|Instant|||Until end of turn, creatures you control gain "{1}: Regenerate this creature."| +Rootwater Alligator|Exodus|122|C|{3}{G}|Creature - Crocodile|3|2|Sacrifice a Forest: Regenerate Rootwater Alligator.| +Skyshroud Elite|Exodus|123|U|{G}|Creature - Elf|1|1|Skyshroud Elite gets +1/+2 as long as an opponent controls a nonbasic land.| +Skyshroud War Beast|Exodus|124|R|{1}{G}|Creature - Beast|*|*|Trample$As Skyshroud War Beast enters the battlefield, choose an opponent.$Skyshroud War Beast's power and toughness are each equal to the number of nonbasic lands the chosen player controls.| +Song of Serenity|Exodus|125|U|{1}{G}|Enchantment|||Creatures that are enchanted can't attack or block.| +Spike Hatcher|Exodus|126|R|{6}{G}|Creature - Spike|0|0|Spike Hatcher enters the battlefield with six +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Hatcher: Put a +1/+1 counter on target creature.${1}, Remove a +1/+1 counter from Spike Hatcher: Regenerate Spike Hatcher.| +Spike Rogue|Exodus|127|U|{1}{G}{G}|Creature - Spike|0|0|Spike Rogue enters the battlefield with two +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Rogue: Put a +1/+1 counter on target creature.${2}, Remove a +1/+1 counter from a creature you control: Put a +1/+1 counter on Spike Rogue.| +Spike Weaver|Exodus|128|R|{2}{G}{G}|Creature - Spike|0|0|Spike Weaver enters the battlefield with three +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Weaver: Put a +1/+1 counter on target creature.${1}, Remove a +1/+1 counter from Spike Weaver: Prevent all combat damage that would be dealt this turn.| +Survival of the Fittest|Exodus|129|R|{1}{G}|Enchantment|||{G}, Discard a creature card: Search your library for a creature card, reveal that card, and put it into your hand. Then shuffle your library.| +Wood Elves|Exodus|130|C|{2}{G}|Creature - Elf Scout|1|1|When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.| +Coat of Arms|Exodus|131|R|{5}|Artifact|||Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Goblin Warriors and a Goblin Shaman are on the battlefield, each gets +2/+2.)| +Erratic Portal|Exodus|132|R|{4}|Artifact|||{1}, {tap}: Return target creature to its owner's hand unless its controller pays {1}.| +Medicine Bag|Exodus|133|U|{3}|Artifact|||{1}, {tap}, Discard a card: Regenerate target creature.| +Memory Crystal|Exodus|134|R|{3}|Artifact|||Buyback costs cost {2} less.| +Mindless Automaton|Exodus|135|R|{4}|Artifact Creature - Construct|0|0|Mindless Automaton enters the battlefield with two +1/+1 counters on it.${1}, Discard a card: Put a +1/+1 counter on Mindless Automaton.$Remove two +1/+1 counters from Mindless Automaton: Draw a card.| +Null Brooch|Exodus|136|R|{4}|Artifact|||{2}, {tap}, Discard your hand: Counter target noncreature spell.| +Skyshaper|Exodus|137|U|{2}|Artifact|||Sacrifice Skyshaper: Creatures you control gain flying until end of turn.| +Spellbook|Exodus|138|U|{0}|Artifact|||You have no maximum hand size.| +Sphere of Resistance|Exodus|139|R|{2}|Artifact|||Spells cost {1} more to cast.| +Thopter Squadron|Exodus|140|R|{5}|Artifact Creature - Thopter|0|0|Flying$Thopter Squadron enters the battlefield with three +1/+1 counters on it.${1}, Remove a +1/+1 counter from Thopter Squadron: Put a 1/1 colorless Thopter artifact creature token with flying onto the battlefield. Activate this ability only any time you could cast a sorcery.${1}, Sacrifice another Thopter: Put a +1/+1 counter on Thopter Squadron. Activate this ability only any time you could cast a sorcery.| +Transmogrifying Licid|Exodus|141|U|{3}|Artifact Creature - Licid|2|2|{1}, {tap}: Transmogrifying Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {1} to end this effect.$Enchanted creature gets +1/+1 and is an artifact in addition to its other types.| +Workhorse|Exodus|142|R|{6}|Artifact Creature - Horse|0|0|Workhorse enters the battlefield with four +1/+1 counters on it.$Remove a +1/+1 counter from Workhorse: Add {1} to your mana pool.| +City of Traitors|Exodus|143|R||Land|||When you play another land, sacrifice City of Traitors.${tap}: Add {2} to your mana pool.| Armor Thrull|Fallen Empires|1|C|{2}{B}|Creature - Thrull|1|3|{tap}, Sacrifice Armor Thrull: Put a +1/+2 counter on target creature.| Armor Thrull|Fallen Empires|1|C|{2}{B}|Creature - Thrull|1|3|{tap}, Sacrifice Armor Thrull: Put a +1/+2 counter on target creature.| Armor Thrull|Fallen Empires|1|C|{2}{B}|Creature - Thrull|1|3|{tap}, Sacrifice Armor Thrull: Put a +1/+2 counter on target creature.| @@ -5883,6 +5883,12 @@ Banishing Light|Friday Night Magic|172|U|{2}{W}|Enchantment|||When Banishing Lig Fanatic of Xenagos|Friday Night Magic|173|U|{1}{R}{G}|Creature - Centaur Warrior|3|3|Trample$Tribute 1 (As this creature enters the battlefield, an opponent of your choice may place a +1/+1 counter on it.)$When Fanatic of Xenagos enters the battlefield, if tribute wasn't paid, it gets +1/+1 and gains haste until end of turn.| Brain Maggot|Friday Night Magic||174|U|{1}{B}|Enchantment Creature - Insect|1|1|When Brain Maggot enters the battlefield, target opponent reveals his or her hand and you choose a nonland card from it. Exile that card until Brain Maggot leaves the battlefield.| Stoke the Flames|Friday Night Magic|175|U|{2}{R}{R}|Instant|||Convoke (Your creatures can help cast this spell. Each creature you tap while casting this spell pays for {1} or one mana of that creature's color.)$Stoke the Flames deals 4 damage to target creature or player.| +Frenzied Goblin|Friday Night Magic|176|U|{R}|Creature - Goblin Berserker|1|1|Whenever Frenzied Goblin attacks, you may pay {R}. If you do, target creature can't block this turn.| +Disdainful Stroke|Friday Night Magic|177|U|{1}{U}|Instant|||Counter target spell with converted mana cost 4 or greater.| +Hordeling Outburst|Friday Night Magic|178|U|{1}{R}{R}|Sorcery|||Put three 1/1 red Goblin creature tokens onto the battlefield.| +Suspension Field|Friday Night Magic|179|U|{1}{W}|Enchantment|||When Suspension Field enters the battlefield, you may exile target creature with toughness 3 or greater until Suspension Field leaves the battlefield. (That creature returns under its owner's control.)| +Abzan Beastmaster|Friday Night Magic|180|U|{2}{G}|Creature - Hound Shaman|2|1|At the beginning of your upkeep, draw a card if you control the creature with the greatest toughness or tied for the greatest toughness.| +Frost Walker|Friday Night Magic|181|U|{1}{U}|Creature - Elemental|4|1|When Frost Walker becomes the target of a spell or ability, sacrifice it.| Bladewing the Risen|From the Vault: Dragons|1|R|{3}{B}{B}{R}{R}|Legendary Creature - Zombie Dragon|4|4|Flying$When Bladewing the Risen enters the battlefield, you may return target Dragon permanent card from your graveyard to the battlefield.${B}{R}: Dragon creatures get +1/+1 until end of turn.| Nicol Bolas|From the Vault: Dragons|10|R|{2}{U}{U}{B}{B}{R}{R}|Legendary Creature - Elder Dragon|7|7|Flying$At the beginning of your upkeep, sacrifice Nicol Bolas unless you pay {U}{B}{R}.$Whenever Nicol Bolas deals damage to an opponent, that player discards his or her hand.| Niv-Mizzet, the Firemind|From the Vault: Dragons|11|R|{2}{U}{U}{R}{R}|Legendary Creature - Dragon Wizard|4|4|Flying$Whenever you draw a card, Niv-Mizzet, the Firemind deals 1 damage to target creature or player.${tap}: Draw a card.| @@ -18441,81 +18447,45 @@ Wind Drake|Starter 2000|75|C|{2}{U}|Creature - Drake|2|2|Flying| Lava Axe|Starter 2000|8|C|{4}{R}|Sorcery|||Lava Axe deals 5 damage to target player.| Mons's Goblin Raiders|Starter 2000|9|C|{R}|Creature - Goblin|1|1|| Bottomless Pit|Stronghold|1|U|{1}{B}{B}|Enchantment|||At the beginning of each player's upkeep, that player discards a card at random.| +Brush with Death|Stronghold|2|C|{2}{B}|Sorcery|||Buyback {2}{B}{B} (You may pay an additional {2}{B}{B} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target opponent loses 2 life. You gain 2 life.| +Cannibalize|Stronghold|3|C|{1}{B}|Sorcery|||Choose two target creatures controlled by the same player. Exile one of those creatures and put two +1/+1 counters on the other.| +Corrupting Licid|Stronghold|4|U|{2}{B}|Creature - Licid|2|2|{B}, {tap}: Corrupting Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {B} to end this effect.$Enchanted creature has fear. (It can't be blocked except by artifact creatures and/or black creatures.)| +Crovax the Cursed|Stronghold|5|R|{2}{B}{B}|Legendary Creature - Vampire|0|0|Crovax the Cursed enters the battlefield with four +1/+1 counters on it.$At the beginning of your upkeep, you may sacrifice a creature. If you do, put a +1/+1 counter on Crovax. If you don't, remove a +1/+1 counter from Crovax.${B}: Crovax gains flying until end of turn.| +Dauthi Trapper|Stronghold|6|U|{2}{B}|Creature - Dauthi Minion|1|1|{tap}: Target creature gains shadow until end of turn. (It can block or be blocked by only creatures with shadow.)| +Death Stroke|Stronghold|7|C|{B}{B}|Sorcery|||Destroy target tapped creature.| +Dungeon Shade|Stronghold|8|C|{3}{B}|Creature - Shade Spirit|1|1|Flying${B}: Dungeon Shade gets +1/+1 until end of turn.| +Foul Imp|Stronghold|9|C|{B}{B}|Creature - Imp|2|2|Flying$When Foul Imp enters the battlefield, you lose 2 life.| Grave Pact|Stronghold|10|R|{1}{B}{B}{B}|Enchantment|||Whenever a creature you control dies, each other player sacrifices a creature.| -Wall of Razors|Stronghold|100|U|{1}{R}|Creature - Wall|4|1|Defender (This creature can't attack.)$First strike| -Bandage|Stronghold|101|C|{W}|Instant|||Prevent the next 1 damage that would be dealt to target creature or player this turn.$Draw a card.| -Leap|Stronghold|101|C|{U}|Instant|||Target creature gains flying until end of turn.$$Draw a card.| -Calming Licid|Stronghold|102|U|{2}{W}|Creature - Licid|2|2|{W}, {tap}: Calming Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect.$Enchanted creature can't attack.| -Change of Heart|Stronghold|103|C|{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target creature can't attack this turn.| -Contemplation|Stronghold|104|U|{1}{W}{W}|Enchantment|||Whenever you cast a spell, you gain 1 life.| -Conviction|Stronghold|105|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +1/+3.${W}: Return Conviction to its owner's hand.| -Hidden Retreat|Stronghold|106|R|{2}{W}|Enchantment|||Put a card from your hand on top of your library: Prevent all damage that would be dealt by target instant or sorcery spell this turn.| -Honor Guard|Stronghold|107|C|{W}|Creature - Human Soldier|1|1|{W}: Honor Guard gets +0/+1 until end of turn.| -Lancers en-Kor|Stronghold|108|U|{3}{W}{W}|Creature - Kor Soldier|3|3|Trample${0}: The next 1 damage that would be dealt to Lancers en-Kor this turn is dealt to target creature you control instead.| -Nomads en-Kor|Stronghold|109|C|{W}|Creature - Kor Nomad Soldier|1|1|{0}: The next 1 damage that would be dealt to Nomads en-Kor this turn is dealt to target creature you control instead.| Lab Rats|Stronghold|11|C|{B}|Sorcery|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Put a 1/1 black Rat creature token onto the battlefield.| -Pursuit of Knowledge|Stronghold|110|R|{3}{W}|Enchantment|||If you would draw a card, you may put a study counter on Pursuit of Knowledge instead.$$Remove three study counters from Pursuit of Knowledge, Sacrifice Pursuit of Knowledge: Draw seven cards.| -Rolling Stones|Stronghold|111|R|{1}{W}|Enchantment|||Wall creatures can attack as though they didn't have defender.| -Sacred Ground|Stronghold|112|R|{1}{W}|Enchantment|||Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield.| -Samite Blessing|Stronghold|113|C|{W}|Enchantment - Aura|||Enchant creature$Enchanted creature has "{tap}: The next time a source of your choice would deal damage to target creature this turn, prevent that damage."| -Scapegoat|Stronghold|114|U|{W}|Instant|||As an additional cost to cast Scapegoat, sacrifice a creature.$Return any number of target creatures you control to their owner's hand.| -Shaman en-Kor|Stronghold|115|R|{1}{W}|Creature - Kor Cleric Shaman|1|2|{0}: The next 1 damage that would be dealt to Shaman en-Kor this turn is dealt to target creature you control instead.${1}{W}: The next time a source of your choice would deal damage to target creature this turn, that damage is dealt to Shaman en-Kor instead.| -Skyshroud Falcon|Stronghold|116|C|{1}{W}|Creature - Bird|1|1|Flying, vigilance| -Smite|Stronghold|117|C|{W}|Instant|||Destroy target blocked creature.| -Soltari Champion|Stronghold|118|R|{2}{W}|Creature - Soltari Soldier|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Soltari Champion attacks, all other creatures you control get +1/+1 until end of turn.| -Spirit en-Kor|Stronghold|119|C|{3}{W}|Creature - Kor Spirit|2|2|Flying${0}: The next 1 damage that would be dealt to Spirit en-Kor this turn is dealt to target creature you control instead.| Megrim|Stronghold|12|U|{2}{B}|Enchantment|||Whenever an opponent discards a card, Megrim deals 2 damage to that player.| -Venerable Monk|Stronghold|121|C|{2}{W}|Creature - Human Monk Cleric|2|2|When Venerable Monk enters the battlefield, you gain 2 life.| -Wall of Essence|Stronghold|122|U|{1}{W}|Creature - Wall|0|4|Defender (This creature can't attack.)$Whenever Wall of Essence is dealt combat damage, you gain that much life.| -Warrior Angel|Stronghold|123|R|{4}{W}{W}|Creature - Angel Warrior|3|4|Flying$Whenever Warrior Angel deals damage, you gain that much life.| -Warrior en-Kor|Stronghold|124|U|{W}{W}|Creature - Kor Warrior Knight|2|2|{0}: The next 1 damage that would be dealt to Warrior en-Kor this turn is dealt to target creature you control instead.| -Youthful Knight|Stronghold|125|C|{1}{W}|Creature - Human Knight|2|1|First strike (This creature deals combat damage before creatures without first strike.)| -Bullwhip|Stronghold|126|U|{4}|Artifact|||{2}, {tap}: Bullwhip deals 1 damage to target creature. That creature attacks this turn if able.| -Ensnaring Bridge|Stronghold|127|R|{3}|Artifact|||Creatures with power greater than the number of cards in your hand can't attack.| -Heartstone|Stronghold|128|U|{3}|Artifact|||Activated abilities of creatures cost {1} less to activate. This effect can't reduce the amount of mana an ability costs to activate to less than one mana.| -Horn of Greed|Stronghold|129|R|{3}|Artifact|||Whenever a player plays a land, that player draws a card.| Mind Peel|Stronghold|13|U|{B}|Sorcery|||Buyback {2}{B}{B} (You may pay an additional {2}{B}{B} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target player discards a card.| -Hornet Cannon|Stronghold|130|U|{4}|Artifact|||{3}, {tap}: Put a 1/1 colorless Insect artifact creature token with flying and haste named Hornet onto the battlefield. Destroy it at the beginning of the next end step.| -Jinxed Ring|Stronghold|131|R|{2}|Artifact|||Whenever a nontoken permanent is put into your graveyard from the battlefield, Jinxed Ring deals 1 damage to you.$Sacrifice a creature: Target opponent gains control of Jinxed Ring. (This effect lasts indefinitely.)| -Mox Diamond|Stronghold|132|R|{0}|Artifact|||If Mox Diamond would enter the battlefield, you may discard a land card instead. If you do, put Mox Diamond onto the battlefield. If you don't, put it into its owner's graveyard.${tap}: Add one mana of any color to your mana pool.| -Portcullis|Stronghold|133|R|{4}|Artifact|||Whenever a creature enters the battlefield, if there are two or more other creatures on the battlefield, exile that creature. Return that card to the battlefield under its owner's control when Portcullis leaves the battlefield.| -Shifting Wall|Stronghold|134|U|{X}|Artifact Creature - Wall|0|0|Defender (This creature can't attack.)$Shifting Wall enters the battlefield with X +1/+1 counters on it.| -Sword of the Chosen|Stronghold|135|R|{2}|Legendary Artifact|||{tap}: Target legendary creature gets +2/+2 until end of turn.| -Volrath's Laboratory|Stronghold|136|R|{5}|Artifact|||As Volrath's Laboratory enters the battlefield, choose a color and a creature type.${5}, {tap}: Put a 2/2 creature token of the chosen color and type onto the battlefield.| -Volrath's Stronghold|Stronghold|137|R||Legendary Land|||{tap}: Add {1} to your mana pool.$${1}{B}, {tap}: Put target creature card from your graveyard on top of your library.| -Acidic Sliver|Stronghold|138|U|{B}{R}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: This permanent deals 2 damage to target creature or player."| -Crystalline Sliver|Stronghold|139|U|{W}{U}|Creature - Sliver|2|2|All Slivers have shroud. (They can't be the targets of spells or abilities.)| Mindwarper|Stronghold|14|R|{2}{B}{B}|Creature - Spirit|0|0|Mindwarper enters the battlefield with three +1/+1 counters on it.${2}{B}, Remove a +1/+1 counter from Mindwarper: Target player discards a card. Activate this ability only any time you could cast a sorcery.| -Hibernation Sliver|Stronghold|140|U|{U}{B}|Creature - Sliver|2|2|All Slivers have "Pay 2 life: Return this permanent to its owner's hand."| -Sliver Queen|Stronghold|141|R|{W}{U}{B}{R}{G}|Legendary Creature - Sliver|7|7|{2}: Put a 1/1 colorless Sliver creature token onto the battlefield.| -Spined Sliver|Stronghold|142|U|{R}{G}|Creature - Sliver|2|2|Whenever a Sliver becomes blocked, that Sliver gets +1/+1 until end of turn for each creature blocking it.| -Victual Sliver|Stronghold|143|U|{G}{W}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: You gain 4 life."| Morgue Thrull|Stronghold|15|C|{2}{B}|Creature - Thrull|2|2|Sacrifice Morgue Thrull: Put the top three cards of your library into your graveyard.| Mortuary|Stronghold|16|R|{3}{B}|Enchantment|||Whenever a creature is put into your graveyard from the battlefield, put that card on top of your library.| Rabid Rats|Stronghold|17|C|{1}{B}|Creature - Rat|1|1|{tap}: Target blocking creature gets -1/-1 until end of turn.| +Revenant|Stronghold|18|R|{4}{B}|Creature - Spirit|*|*|Flying$Revenant's power and toughness are each equal to the number of creature cards in your graveyard.| Serpent Warrior|Stronghold|19|C|{2}{B}|Creature - Snake Warrior|3|3|When Serpent Warrior enters the battlefield, you lose 3 life.| -Brush with Death|Stronghold|2|C|{2}{B}|Sorcery|||Buyback {2}{B}{B} (You may pay an additional {2}{B}{B} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target opponent loses 2 life. You gain 2 life.| Skeleton Scavengers|Stronghold|20|R|{2}{B}|Creature - Skeleton|0|0|Skeleton Scavengers enters the battlefield with a +1/+1 counter on it.$Pay {1} for each +1/+1 counter on Skeleton Scavengers: Regenerate Skeleton Scavengers. When it regenerates this way, put a +1/+1 counter on it.| Stronghold Assassin|Stronghold|21|R|{1}{B}{B}|Creature - Zombie Assassin|2|1|{tap}, Sacrifice a creature: Destroy target nonblack creature.| Stronghold Taskmaster|Stronghold|22|U|{2}{B}{B}|Creature - Giant Minion|4|3|Other black creatures get -1/-1.| +Torment|Stronghold|23|C|{1}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets -3/-0.| Tortured Existence|Stronghold|24|C|{B}|Enchantment|||{B}, Discard a creature card: Return target creature card from your graveyard to your hand.| Wall of Souls|Stronghold|25|U|{1}{B}|Creature - Wall|0|4|Defender (This creature can't attack.)$Whenever Wall of Souls is dealt combat damage, it deals that much damage to target opponent.| -Rebound|Stronghold|256|U|{1}{U}|Instant|||Change the target of target spell that targets only a player. The new target must be a player.| Cloud Spirit|Stronghold|26|C|{2}{U}|Creature - Spirit|3|1|Flying$Cloud Spirit can block only creatures with flying.| Contempt|Stronghold|27|C|{1}{U}|Enchantment - Aura|||Enchant creature$Whenever enchanted creature attacks, return it and Contempt to their owners' hands at end of combat.| Dream Halls|Stronghold|28|R|{3}{U}|Enchantment|||Rather than pay the mana cost for a spell, its controller may discard a card that shares a color with that spell.| Dream Prowler|Stronghold|29|C|{2}{U}{U}|Creature - Illusion|1|5|Dream Prowler is unblockable as long as it's attacking alone.| -Cannibalize|Stronghold|3|C|{1}{B}|Sorcery|||Choose two target creatures controlled by the same player. Exile one of those creatures and put two +1/+1 counters on the other.| Evacuation|Stronghold|30|R|{3}{U}{U}|Instant|||Return all creatures to their owners' hands.| Gliding Licid|Stronghold|31|U|{2}{U}|Creature - Licid|2|2|{U}, {tap}: Gliding Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect.$Enchanted creature has flying.| Hammerhead Shark|Stronghold|32|C|{1}{U}|Creature - Fish|2|3|Hammerhead Shark can't attack unless defending player controls an Island.| Hesitation|Stronghold|33|U|{1}{U}|Enchantment|||When a player casts a spell, sacrifice Hesitation and counter that spell.| Intruder Alarm|Stronghold|34|R|{2}{U}|Enchantment|||Creatures don't untap during their controllers' untap steps.$Whenever a creature enters the battlefield, untap all creatures.| +Leap|Stronghold|35|C|{U}|Instant|||Target creature gains flying until end of turn.$$Draw a card.| Mana Leak|Stronghold|36|C|{1}{U}|Instant|||Counter target spell unless its controller pays {3}.| Mask of the Mimic|Stronghold|37|U|{U}|Instant|||As an additional cost to cast Mask of the Mimic, sacrifice a creature.$Search your library for a card with the same name as target nontoken creature and put that card onto the battlefield. Then shuffle your library.| Mind Games|Stronghold|38|C|{U}|Instant|||Buyback {2}{U} (You may pay an additional {2}{U} as you cast this spell. If you do, put this card into your hand as it resolves.)$Tap target artifact, creature, or land.| Ransack|Stronghold|39|U|{3}{U}|Sorcery|||Look at the top five cards of target player's library. Put any number of them on the bottom of that library in any order and the rest on top of the library in any order.| -Corrupting Licid|Stronghold|4|U|{2}{B}|Creature - Licid|2|2|{B}, {tap}: Corrupting Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {B} to end this effect.$Enchanted creature has fear. (It can't be blocked except by artifact creatures and/or black creatures.)| +Rebound|Stronghold|40|U|{1}{U}|Instant|||Change the target of target spell that targets only a player. The new target must be a player.| Reins of Power|Stronghold|41|R|{2}{U}{U}|Instant|||Untap all creatures you control and all creatures target opponent controls. You and that opponent each gain control of all creatures the other controls until end of turn. Those creatures gain haste until end of turn.| Sift|Stronghold|42|C|{3}{U}|Sorcery|||Draw three cards, then discard a card.| Silver Wyvern|Stronghold|43|R|{3}{U}|Creature - Drake|4|3|Flying${U}: Change the target of target spell or ability that targets only Silver Wyvern. The new target must be a creature.| @@ -18525,7 +18495,6 @@ Tidal Surge|Stronghold|46|C|{1}{U}|Sorcery|||Tap up to three target creatures wi Tidal Warrior|Stronghold|47|C|{U}|Creature - Merfolk Warrior|1|1|{tap}: Target land becomes an Island until end of turn.| Volrath's Shapeshifter|Stronghold|48|R|{1}{U}{U}|Creature - Shapeshifter|0|1|As long as the top card of your graveyard is a creature card, Volrath's Shapeshifter has the full text of that card and has the text "{2}: Discard a card." (Volrath's Shapeshifter has that card's name, mana cost, color, types, abilities, power, and toughness.)${2}: Discard a card.| Walking Dream|Stronghold|49|U|{3}{U}|Creature - Illusion|3|3|Walking Dream is unblockable.$$Walking Dream doesn't untap during your untap step if an opponent controls two or more creatures.| -Crovax the Cursed|Stronghold|5|R|{2}{B}{B}|Legendary Creature - Vampire|0|0|Crovax the Cursed enters the battlefield with four +1/+1 counters on it.$At the beginning of your upkeep, you may sacrifice a creature. If you do, put a +1/+1 counter on Crovax. If you don't, remove a +1/+1 counter from Crovax.${B}: Crovax gains flying until end of turn.| Wall of Tears|Stronghold|50|U|{1}{U}|Creature - Wall|0|4|Defender (This creature can't attack.)$Whenever Wall of Tears blocks a creature, return that creature to its owner's hand at end of combat.| Awakening|Stronghold|51|R|{2}{G}{G}|Enchantment|||At the beginning of each upkeep, untap all creatures and lands.| Burgeoning|Stronghold|52|R|{G}|Enchantment|||Whenever an opponent plays a land, you may put a land card from your hand onto the battlefield.| @@ -18536,11 +18505,8 @@ Elven Rite|Stronghold|56|U|{1}{G}|Sorcery|||Distribute two +1/+1 counters among Endangered Armodon|Stronghold|57|C|{2}{G}{G}|Creature - Elephant|4|5|When you control a creature with toughness 2 or less, sacrifice Endangered Armodon.| Hermit Druid|Stronghold|58|R|{1}{G}|Creature - Human Druid|1|1|{G}, {tap}: Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard.| Lowland Basilisk|Stronghold|59|C|{2}{G}|Creature - Basilisk|1|3|Whenever Lowland Basilisk deals damage to a creature, destroy that creature at end of combat.| -Dauthi Trapper|Stronghold|6|U|{2}{B}|Creature - Dauthi Minion|1|1|{tap}: Target creature gains shadow until end of turn. (It can block or be blocked by only creatures with shadow.)| Mulch|Stronghold|60|C|{1}{G}|Sorcery|||Reveal the top four cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard.| Overgrowth|Stronghold|61|C|{2}{G}|Enchantment - Aura|||Enchant land (Target a land as you cast this. This card enters the battlefield attached to that land.)$Whenever enchanted land is tapped for mana, its controller adds {G}{G} to his or her mana pool (in addition to the mana the land produces).| -Revenant|Stronghold|61|R|{4}{B}|Creature - Spirit|*|*|Flying$Revenant's power and toughness are each equal to the number of creature cards in your graveyard.| -Temper|Stronghold|61|U|{X}{1}{W}|Instant|||Prevent the next X damage that would be dealt to target creature this turn. For each 1 damage prevented this way, put a +1/+1 counter on that creature.| Primal Rage|Stronghold|62|U|{1}{G}|Enchantment|||Creatures you control have trample. (If a creature you control would assign enough damage to its blockers to destroy them, you may have it assign the rest of its damage to defending player or planeswalker.)| Provoke|Stronghold|63|C|{1}{G}|Instant|||Untap target creature you don't control. That creature blocks this turn if able.$$Draw a card.| Skyshroud Archer|Stronghold|64|C|{G}|Creature - Elf Archer|1|1|{tap}: Target creature with flying gets -1/-1 until end of turn.| @@ -18549,7 +18515,6 @@ Spike Breeder|Stronghold|66|R|{3}{G}|Creature - Spike|0|0|Spike Breeder enters t Spike Colony|Stronghold|67|C|{4}{G}|Creature - Spike|0|0|Spike Colony enters the battlefield with four +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Colony: Put a +1/+1 counter on target creature.| Spike Feeder|Stronghold|68|U|{1}{G}{G}|Creature - Spike|0|0|Spike Feeder enters the battlefield with two +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Feeder: Put a +1/+1 counter on target creature.$Remove a +1/+1 counter from Spike Feeder: You gain 2 life.| Spike Soldier|Stronghold|69|U|{2}{G}{G}|Creature - Spike Soldier|0|0|Spike Soldier enters the battlefield with three +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Soldier: Put a +1/+1 counter on target creature.$Remove a +1/+1 counter from Spike Soldier: Spike Soldier gets +2/+2 until end of turn.| -Death Stroke|Stronghold|7|C|{B}{B}|Sorcery|||Destroy target tapped creature.| Spike Worker|Stronghold|70|C|{2}{G}|Creature - Spike|0|0|Spike Worker enters the battlefield with two +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Worker: Put a +1/+1 counter on target creature.| Spined Wurm|Stronghold|71|C|{4}{G}|Creature - Wurm|5|4|| Tempting Licid|Stronghold|72|U|{2}{G}|Creature - Licid|2|2|{G}, {tap}: Tempting Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {G} to end this effect.$All creatures able to block enchanted creature do so.| @@ -18560,7 +18525,6 @@ Amok|Stronghold|76|R|{1}{R}|Enchantment|||{1}, Discard a card at random: Put a + Convulsing Licid|Stronghold|77|U|{2}{R}|Creature - Licid|2|2|{R}, {tap}: Convulsing Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {R} to end this effect.$Enchanted creature can't block.| Craven Giant|Stronghold|78|C|{2}{R}|Creature - Giant|4|1|Craven Giant can't block.| Duct Crawler|Stronghold|79|C|{R}|Creature - Insect|1|1|{1}{R}: Target creature can't block Duct Crawler this turn.| -Dungeon Shade|Stronghold|8|C|{3}{B}|Creature - Shade Spirit|1|1|Flying${B}: Dungeon Shade gets +1/+1 until end of turn.| Fanning the Flames|Stronghold|80|U|{X}{R}{R}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Fanning the Flames deals X damage to target creature or player.| Flame Wave|Stronghold|81|U|{3}{R}{R}{R}{R}|Sorcery|||Flame Wave deals 4 damage to target player and each creature he or she controls.| Fling|Stronghold|82|C|{1}{R}|Instant|||As an additional cost to cast Fling, sacrifice a creature.$Fling deals damage equal to the sacrificed creature's power to target creature or player.| @@ -18571,8 +18535,6 @@ Flowstone Shambler|Stronghold|86|C|{2}{R}|Creature - Beast|2|2|{R}: Flowstone Sh Furnace Spirit|Stronghold|87|C|{2}{R}|Creature - Spirit|1|1|Haste${R}: Furnace Spirit gets +1/+0 until end of turn.| Heat of Battle|Stronghold|88|U|{1}{R}|Enchantment|||Whenever a creature blocks, Heat of Battle deals 1 damage to that creature's controller.| Invasion Plans|Stronghold|89|R|{2}{R}|Enchantment|||All creatures block each turn if able.$The attacking player chooses how each creature blocks each turn.| -Foul Imp|Stronghold|9|C|{B}{B}|Creature - Imp|2|2|Flying$When Foul Imp enters the battlefield, you lose 2 life.| -Torment|Stronghold|9|C|{1}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets -3/-0.| Mob Justice|Stronghold|90|C|{1}{R}|Sorcery|||Mob Justice deals damage to target player equal to the number of creatures you control.| Mogg Bombers|Stronghold|91|C|{3}{R}|Creature - Goblin|3|4|When another creature enters the battlefield, sacrifice Mogg Bombers and it deals 3 damage to target player.| Mogg Flunkies|Stronghold|92|C|{1}{R}|Creature - Goblin|3|3|Mogg Flunkies can't attack or block alone.| @@ -18583,290 +18545,89 @@ Seething Anger|Stronghold|96|C|{R}|Sorcery|||Buyback {3} (You may pay an addi Shard Phoenix|Stronghold|97|R|{4}{R}|Creature - Phoenix|2|2|Flying (This creature can't be blocked except by creatures with flying or reach.)$Sacrifice Shard Phoenix: Shard Phoenix deals 2 damage to each creature without flying.${R}{R}{R}: Return Shard Phoenix from your graveyard to your hand. Activate this ability only during your upkeep.| Shock|Stronghold|98|C|{R}|Instant|||Shock deals 2 damage to target creature or player.| Spitting Hydra|Stronghold|99|R|{3}{R}{R}|Creature - Hydra|0|0|Spitting Hydra enters the battlefield with four +1/+1 counters on it.${1}{R}, Remove a +1/+1 counter from Spitting Hydra: Spitting Hydra deals 1 damage to target creature.| +Wall of Razors|Stronghold|100|U|{1}{R}|Creature - Wall|4|1|Defender (This creature can't attack.)$First strike| +Bandage|Stronghold|101|C|{W}|Instant|||Prevent the next 1 damage that would be dealt to target creature or player this turn.$Draw a card.| +Calming Licid|Stronghold|102|U|{2}{W}|Creature - Licid|2|2|{W}, {tap}: Calming Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect.$Enchanted creature can't attack.| +Change of Heart|Stronghold|103|C|{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target creature can't attack this turn.| +Contemplation|Stronghold|104|U|{1}{W}{W}|Enchantment|||Whenever you cast a spell, you gain 1 life.| +Conviction|Stronghold|105|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +1/+3.${W}: Return Conviction to its owner's hand.| +Hidden Retreat|Stronghold|106|R|{2}{W}|Enchantment|||Put a card from your hand on top of your library: Prevent all damage that would be dealt by target instant or sorcery spell this turn.| +Honor Guard|Stronghold|107|C|{W}|Creature - Human Soldier|1|1|{W}: Honor Guard gets +0/+1 until end of turn.| +Lancers en-Kor|Stronghold|108|U|{3}{W}{W}|Creature - Kor Soldier|3|3|Trample${0}: The next 1 damage that would be dealt to Lancers en-Kor this turn is dealt to target creature you control instead.| +Nomads en-Kor|Stronghold|109|C|{W}|Creature - Kor Nomad Soldier|1|1|{0}: The next 1 damage that would be dealt to Nomads en-Kor this turn is dealt to target creature you control instead.| +Pursuit of Knowledge|Stronghold|110|R|{3}{W}|Enchantment|||If you would draw a card, you may put a study counter on Pursuit of Knowledge instead.$$Remove three study counters from Pursuit of Knowledge, Sacrifice Pursuit of Knowledge: Draw seven cards.| +Rolling Stones|Stronghold|111|R|{1}{W}|Enchantment|||Wall creatures can attack as though they didn't have defender.| +Sacred Ground|Stronghold|112|R|{1}{W}|Enchantment|||Whenever a spell or ability an opponent controls causes a land to be put into your graveyard from the battlefield, return that card to the battlefield.| +Samite Blessing|Stronghold|113|C|{W}|Enchantment - Aura|||Enchant creature$Enchanted creature has "{tap}: The next time a source of your choice would deal damage to target creature this turn, prevent that damage."| +Scapegoat|Stronghold|114|U|{W}|Instant|||As an additional cost to cast Scapegoat, sacrifice a creature.$Return any number of target creatures you control to their owner's hand.| +Shaman en-Kor|Stronghold|115|R|{1}{W}|Creature - Kor Cleric Shaman|1|2|{0}: The next 1 damage that would be dealt to Shaman en-Kor this turn is dealt to target creature you control instead.${1}{W}: The next time a source of your choice would deal damage to target creature this turn, that damage is dealt to Shaman en-Kor instead.| +Skyshroud Falcon|Stronghold|116|C|{1}{W}|Creature - Bird|1|1|Flying, vigilance| +Smite|Stronghold|117|C|{W}|Instant|||Destroy target blocked creature.| +Soltari Champion|Stronghold|118|R|{2}{W}|Creature - Soltari Soldier|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Soltari Champion attacks, all other creatures you control get +1/+1 until end of turn.| +Spirit en-Kor|Stronghold|119|C|{3}{W}|Creature - Kor Spirit|2|2|Flying${0}: The next 1 damage that would be dealt to Spirit en-Kor this turn is dealt to target creature you control instead.| +Temper|Stronghold|120|U|{X}{1}{W}|Instant|||Prevent the next X damage that would be dealt to target creature this turn. For each 1 damage prevented this way, put a +1/+1 counter on that creature.| +Venerable Monk|Stronghold|121|C|{2}{W}|Creature - Human Monk Cleric|2|2|When Venerable Monk enters the battlefield, you gain 2 life.| +Wall of Essence|Stronghold|122|U|{1}{W}|Creature - Wall|0|4|Defender (This creature can't attack.)$Whenever Wall of Essence is dealt combat damage, you gain that much life.| +Warrior Angel|Stronghold|123|R|{4}{W}{W}|Creature - Angel Warrior|3|4|Flying$Whenever Warrior Angel deals damage, you gain that much life.| +Warrior en-Kor|Stronghold|124|U|{W}{W}|Creature - Kor Warrior Knight|2|2|{0}: The next 1 damage that would be dealt to Warrior en-Kor this turn is dealt to target creature you control instead.| +Youthful Knight|Stronghold|125|C|{1}{W}|Creature - Human Knight|2|1|First strike (This creature deals combat damage before creatures without first strike.)| +Bullwhip|Stronghold|126|U|{4}|Artifact|||{2}, {tap}: Bullwhip deals 1 damage to target creature. That creature attacks this turn if able.| +Ensnaring Bridge|Stronghold|127|R|{3}|Artifact|||Creatures with power greater than the number of cards in your hand can't attack.| +Heartstone|Stronghold|128|U|{3}|Artifact|||Activated abilities of creatures cost {1} less to activate. This effect can't reduce the amount of mana an ability costs to activate to less than one mana.| +Horn of Greed|Stronghold|129|R|{3}|Artifact|||Whenever a player plays a land, that player draws a card.| +Hornet Cannon|Stronghold|130|U|{4}|Artifact|||{3}, {tap}: Put a 1/1 colorless Insect artifact creature token with flying and haste named Hornet onto the battlefield. Destroy it at the beginning of the next end step.| +Jinxed Ring|Stronghold|131|R|{2}|Artifact|||Whenever a nontoken permanent is put into your graveyard from the battlefield, Jinxed Ring deals 1 damage to you.$Sacrifice a creature: Target opponent gains control of Jinxed Ring. (This effect lasts indefinitely.)| +Mox Diamond|Stronghold|132|R|{0}|Artifact|||If Mox Diamond would enter the battlefield, you may discard a land card instead. If you do, put Mox Diamond onto the battlefield. If you don't, put it into its owner's graveyard.${tap}: Add one mana of any color to your mana pool.| +Portcullis|Stronghold|133|R|{4}|Artifact|||Whenever a creature enters the battlefield, if there are two or more other creatures on the battlefield, exile that creature. Return that card to the battlefield under its owner's control when Portcullis leaves the battlefield.| +Shifting Wall|Stronghold|134|U|{X}|Artifact Creature - Wall|0|0|Defender (This creature can't attack.)$Shifting Wall enters the battlefield with X +1/+1 counters on it.| +Sword of the Chosen|Stronghold|135|R|{2}|Legendary Artifact|||{tap}: Target legendary creature gets +2/+2 until end of turn.| +Volrath's Laboratory|Stronghold|136|R|{5}|Artifact|||As Volrath's Laboratory enters the battlefield, choose a color and a creature type.${5}, {tap}: Put a 2/2 creature token of the chosen color and type onto the battlefield.| +Volrath's Stronghold|Stronghold|137|R||Legendary Land|||{tap}: Add {1} to your mana pool.$${1}{B}, {tap}: Put target creature card from your graveyard on top of your library.| +Acidic Sliver|Stronghold|138|U|{B}{R}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: This permanent deals 2 damage to target creature or player."| +Crystalline Sliver|Stronghold|139|U|{W}{U}|Creature - Sliver|2|2|All Slivers have shroud. (They can't be the targets of spells or abilities.)| +Hibernation Sliver|Stronghold|140|U|{U}{B}|Creature - Sliver|2|2|All Slivers have "Pay 2 life: Return this permanent to its owner's hand."| +Sliver Queen|Stronghold|141|R|{W}{U}{B}{R}{G}|Legendary Creature - Sliver|7|7|{2}: Put a 1/1 colorless Sliver creature token onto the battlefield.| +Spined Sliver|Stronghold|142|U|{R}{G}|Creature - Sliver|2|2|Whenever a Sliver becomes blocked, that Sliver gets +1/+1 until end of turn for each creature blocking it.| +Victual Sliver|Stronghold|143|U|{G}{W}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: You gain 4 life."| Abandon Hope|Tempest|1|U|{X}{1}{B}|Sorcery|||As an additional cost to cast Abandon Hope, discard X cards.$Look at target opponent's hand and choose X cards from it. That player discards those cards.| -Corpse Dance|Tempest|10|R|{2}{B}|Instant|||Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return the top creature card of your graveyard to the battlefield. That creature gains haste until end of turn. Exile it at the beginning of the next end step.| -Unstable Shapeshifter|Tempest|100|R|{3}{U}|Creature - Shapeshifter|0|1|Whenever another creature enters the battlefield, Unstable Shapeshifter becomes a copy of that creature and gains this ability.| -Volrath's Curse|Tempest|101|C|{1}{U}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block, and its activated abilities can't be activated. That creature's controller may sacrifice a permanent for that player to ignore this effect until end of turn.${1}{U}: Return Volrath's Curse to its owner's hand.| -Whim of Volrath|Tempest|102|R|{U}|Instant|||Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.)$Change the text of target permanent by replacing all instances of one color word with another or one basic land type with another until end of turn. (For example, you may change "nonred creature" to "nongreen creature" or "plainswalk" to "swampwalk.")| -Whispers of the Muse|Tempest|103|U|{U}|Instant|||Buyback {5} (You may pay an additional {5} as you cast this spell. If you do, put this card into your hand as it resolves.)$Draw a card.| -Wind Dancer|Tempest|104|U|{1}{U}|Creature - Faerie|1|1|Flying$${tap}: Target creature gains flying until end of turn.| -Wind Drake|Tempest|105|C|{2}{U}|Creature - Drake|2|2|Flying| -Winged Sliver|Tempest|106|C|{1}{U}|Creature - Sliver|1|1|All Sliver creatures have flying.| -Aluren|Tempest|107|R|{2}{G}{G}|Enchantment|||Any player may play creature cards with converted mana cost 3 or less without paying their mana cost and as though they had flash.| -Apes of Rath|Tempest|108|U|{2}{G}{G}|Creature - Ape|5|4|Whenever Apes of Rath attacks, it doesn't untap during its controller's next untap step.| -Bayou Dragonfly|Tempest|109|C|{1}{G}|Creature - Insect|1|1|Flying, swampwalk| -Dark Banishing|Tempest|11|C|{2}{B}|Instant|||Destroy target nonblack creature. It can't be regenerated.| -Broken Fall|Tempest|110|C|{2}{G}|Enchantment|||Return Broken Fall to its owner's hand: Regenerate target creature.| -Canopy Spider|Tempest|111|C|{1}{G}|Creature - Spider|1|3|Reach (This creature can block creatures with flying.)| -Charging Rhino|Tempest|112|U|{3}{G}{G}|Creature - Rhino|4|4|Charging Rhino can't be blocked by more than one creature.| -Choke|Tempest|113|U|{2}{G}|Enchantment|||Islands don't untap during their controllers' untap steps.| -Crazed Armodon|Tempest|114|R|{2}{G}{G}|Creature - Elephant|3|3|{G}: Crazed Armodon gets +3/+0 and gains trample until end of turn. Destroy Crazed Armodon at the beginning of the next end step. Activate this ability only once each turn.| -Dirtcowl Wurm|Tempest|115|R|{4}{G}|Creature - Wurm|3|4|Whenever an opponent plays a land, put a +1/+1 counter on Dirtcowl Wurm.| -Earthcraft|Tempest|116|R|{1}{G}|Enchantment|||Tap an untapped creature you control: Untap target basic land.| -Eladamri, Lord of Leaves|Tempest|117|R|{G}{G}|Legendary Creature - Elf Warrior|2|2|Other Elf creatures have forestwalk.$Other Elves have shroud. (They can't be the targets of spells or abilities.)| -Eladamri's Vineyard|Tempest|118|R|{G}|Enchantment|||At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool.| -Elven Warhounds|Tempest|119|R|{3}{G}|Creature - Hound|2|2|Whenever Elven Warhounds becomes blocked by a creature, put that creature on top of its owner's library.| -Dark Ritual|Tempest|12|C|{B}|Instant|||Add {B}{B}{B} to your mana pool.| -Elvish Fury|Tempest|120|C|{G}|Instant|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target creature gets +2/+2 until end of turn.| -Flailing Drake|Tempest|121|U|{3}{G}|Creature - Drake|2|3|Flying$Whenever Flailing Drake blocks or becomes blocked by a creature, that creature gets +1/+1 until end of turn.| -Frog Tongue|Tempest|122|C|{G}|Enchantment - Aura|||Enchant creature$When Frog Tongue enters the battlefield, draw a card.$Enchanted creature has reach. (It can block creatures with flying.)| -Fugitive Druid|Tempest|123|R|{3}{G}|Creature - Human Druid|3|2|Whenever Fugitive Druid becomes the target of an Aura spell, you draw a card.| -Harrow|Tempest|124|U|{2}{G}|Instant|||As an additional cost to cast Harrow, sacrifice a land.$Search your library for up to two basic land cards and put them onto the battlefield. Then shuffle your library.| -Heartwood Dryad|Tempest|125|C|{1}{G}|Creature - Dryad|2|1|Heartwood Dryad can block creatures with shadow as though Heartwood Dryad had shadow.| -Heartwood Giant|Tempest|126|R|{3}{G}{G}|Creature - Giant|4|4|{tap}, Sacrifice a Forest: Heartwood Giant deals 2 damage to target player.| -Heartwood Treefolk|Tempest|127|U|{2}{G}{G}|Creature - Treefolk|3|4|Forestwalk| -Horned Sliver|Tempest|128|U|{2}{G}|Creature - Sliver|2|2|All Sliver creatures have trample.| -Krakilin|Tempest|129|U|{X}{G}{G}|Creature - Beast|0|0|Krakilin enters the battlefield with X +1/+1 counters on it.${1}{G}: Regenerate Krakilin.| -Darkling Stalker|Tempest|13|C|{3}{B}|Creature - Shade Spirit|1|1|{B}: Regenerate Darkling Stalker.${B}: Darkling Stalker gets +1/+1 until end of turn.| -Mirri's Guile|Tempest|130|R|{G}|Enchantment|||At the beginning of your upkeep, you may look at the top three cards of your library, then put them back in any order.| -Mongrel Pack|Tempest|131|R|{3}{G}|Creature - Hound|4|1|When Mongrel Pack dies during combat, put four 1/1 green Hound creature tokens onto the battlefield.| -Muscle Sliver|Tempest|132|C|{1}{G}|Creature - Sliver|1|1|All Sliver creatures get +1/+1.| -Natural Spring|Tempest|133|C|{3}{G}{G}|Sorcery|||Target player gains 8 life.| -Nature's Revolt|Tempest|134|R|{3}{G}{G}|Enchantment|||All lands are 2/2 creatures that are still lands.| -Needle Storm|Tempest|135|U|{2}{G}|Sorcery|||Needle Storm deals 4 damage to each creature with flying.| -Nurturing Licid|Tempest|136|U|{1}{G}|Creature - Licid|1|1|{G}, {tap}: Nurturing Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {G} to end this effect.${G}: Regenerate enchanted creature.| -Overrun|Tempest|137|U|{2}{G}{G}{G}|Sorcery|||Creatures you control get +3/+3 and gain trample until end of turn.| -Pincher Beetles|Tempest|138|C|{2}{G}|Creature - Insect|3|1|Shroud (This creature can't be the target of spells or abilities.)| -Rampant Growth|Tempest|139|C|{1}{G}|Sorcery|||Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.| -Wasteland|Tempest|139|U||Land|||{tap}: Add {1} to your mana pool.$${tap}, Sacrifice Wasteland: Destroy target nonbasic land.| -Dauthi Embrace|Tempest|14|U|{2}{B}|Enchantment|||{B}{B}: Target creature gains shadow until end of turn. (It can block or be blocked by only creatures with shadow.)| -Reality Anchor|Tempest|140|C|{1}{G}|Instant|||Target creature loses shadow until end of turn.$$Draw a card.| -Recycle|Tempest|142|R|{4}{G}{G}|Enchantment|||Skip your draw step.$Whenever you play a card, draw a card.$Your maximum hand size is two.| -Root Maze|Tempest|144|R|{G}|Enchantment|||Artifacts and lands enter the battlefield tapped.| -Shocker|Tempest|144|R|{1}{R}|Creature - Insect|1|1|Whenever Shocker deals damage to a player, that player discards all the cards in his or her hand, then draws that many cards.| -Rootbreaker Wurm|Tempest|145|C|{5}{G}{G}|Creature - Wurm|6|6|Trample (If this creature would assign enough damage to its blockers to destroy them, you may have it assign the rest of its damage to defending player or planeswalker.)| -Rootwalla|Tempest|146|C|{2}{G}|Creature - Lizard|2|2|{1}{G}: Rootwalla gets +2/+2 until end of turn. Activate this ability only once each turn.| -Scragnoth|Tempest|147|U|{4}{G}|Creature - Beast|3|4|Scragnoth can't be countered.$Protection from blue| -Seeker of Skybreak|Tempest|148|C|{1}{G}|Creature - Elf|2|1|{tap}: Untap target creature.| -Skyshroud Elf|Tempest|149|C|{1}{G}|Creature - Elf Druid|1|1|{tap}: Add {G} to your mana pool.${1}: Add {R} or {W} to your mana pool.| -Dauthi Ghoul|Tempest|15|U|{1}{B}|Creature - Dauthi Zombie|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever a creature with shadow dies, put a +1/+1 counter on Dauthi Ghoul.| -Skyshroud Ranger|Tempest|150|C|{G}|Creature - Elf|1|1|{tap}: You may put a land card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery.| -Skyshroud Troll|Tempest|151|C|{2}{G}{G}|Creature - Troll Giant|3|3|{1}{G}: Regenerate Skyshroud Troll.| -Spike Drone|Tempest|152|C|{G}|Creature - Spike Drone|0|0|Spike Drone enters the battlefield with a +1/+1 counter on it.${2}, Remove a +1/+1 counter from Spike Drone: Put a +1/+1 counter on target creature.| -Storm Front|Tempest|153|U|{G}|Enchantment|||{G}{G}: Tap target creature with flying.| -Trained Armodon|Tempest|154|C|{1}{G}{G}|Creature - Elephant|3|3|| -Tranquility|Tempest|155|C|{2}{G}|Sorcery|||Destroy all enchantments.| -Trumpeting Armodon|Tempest|156|U|{3}{G}|Creature - Elephant|3|3|{1}{G}: Target creature blocks Trumpeting Armodon this turn if able.| -Verdant Force|Tempest|157|R|{5}{G}{G}{G}|Creature - Elemental|7|7|At the beginning of each upkeep, put a 1/1 green Saproling creature token onto the battlefield.| -Verdigris|Tempest|158|U|{2}{G}|Instant|||Destroy target artifact.| -Winter's Grasp|Tempest|159|U|{1}{G}{G}|Sorcery|||Destroy target land.| -Dauthi Horror|Tempest|16|C|{1}{B}|Creature - Dauthi Horror|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Horror can't be blocked by white creatures.| -Aftershock|Tempest|160|C|{2}{R}{R}|Sorcery|||Destroy target artifact, creature, or land. Aftershock deals 3 damage to you.| -Ancient Runes|Tempest|161|U|{2}{R}|Enchantment|||At the beginning of each player's upkeep, Ancient Runes deals damage to that player equal to the number of artifacts he or she controls.| -Apocalypse|Tempest|162|R|{2}{R}{R}{R}|Sorcery|||Exile all permanents. You discard your hand.| -Barbed Sliver|Tempest|163|U|{2}{R}|Creature - Sliver|2|2|All Sliver creatures have "{2}: This creature gets +1/+0 until end of turn."| -Blood Frenzy|Tempest|164|C|{1}{R}|Instant|||Cast Blood Frenzy only before the combat damage step.$Target attacking or blocking creature gets +4/+0 until end of turn. Destroy that creature at the beginning of the next end step.| -Boil|Tempest|165|U|{3}{R}|Instant|||Destroy all Islands.| -Canyon Drake|Tempest|166|R|{2}{R}{R}|Creature - Drake|1|2|Flying${1}, Discard a card at random: Canyon Drake gets +2/+0 until end of turn.| -Canyon Wildcat|Tempest|167|C|{1}{R}|Creature - Cat|2|1|Mountainwalk| -Chaotic Goo|Tempest|168|R|{2}{R}{R}|Creature - Ooze|0|0|Chaotic Goo enters the battlefield with three +1/+1 counters on it.$At the beginning of your upkeep, you may flip a coin. If you win the flip, put a +1/+1 counter on Chaotic Goo. If you lose the flip, remove a +1/+1 counter from Chaotic Goo.| -Crown of Flames|Tempest|169|C|{R}|Enchantment - Aura|||Enchant creature${R}: Enchanted creature gets +1/+0 until end of turn.${R}: Return Crown of Flames to its owner's hand.| -Dauthi Marauder|Tempest|17|C|{2}{B}|Creature - Dauthi Minion|3|1|Shadow (This creature can block or be blocked by only creatures with shadow.)| -Deadshot|Tempest|170|R|{3}{R}|Sorcery|||Tap target creature. It deals damage equal to its power to another target creature.| -Enraging Licid|Tempest|171|U|{1}{R}|Creature - Licid|1|1|{R}, {tap}: Enraging Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {R} to end this effect.$Enchanted creature has haste.| -Firefly|Tempest|172|U|{3}{R}|Creature - Insect|1|1|Flying${R}: Firefly gets +1/+0 until end of turn.| -Fireslinger|Tempest|173|C|{1}{R}|Creature - Human Wizard|1|1|{tap}: Fireslinger deals 1 damage to target creature or player and 1 damage to you.| -Flowstone Giant|Tempest|174|C|{2}{R}{R}|Creature - Giant|3|3|{R}: Flowstone Giant gets +2/-2 until end of turn.| -Flowstone Salamander|Tempest|175|U|{3}{R}{R}|Creature - Salamander|3|4|{R}: Flowstone Salamander deals 1 damage to target creature blocking it.| -Flowstone Wyvern|Tempest|176|R|{3}{R}{R}|Creature - Drake|3|3|Flying${R}: Flowstone Wyvern gets +2/-2 until end of turn.| -Furnace of Rath|Tempest|177|R|{1}{R}{R}{R}|Enchantment|||If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead.| -Giant Strength|Tempest|178|C|{R}{R}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2.| -Goblin Bombardment|Tempest|179|U|{1}{R}|Enchantment|||Sacrifice a creature: Goblin Bombardment deals 1 damage to target creature or player.| -Dauthi Mercenary|Tempest|18|U|{2}{B}|Creature - Dauthi Knight Mercenary|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)${1}{B}: Dauthi Mercenary gets +1/+0 until end of turn.| -Havoc|Tempest|181|U|{1}{R}|Enchantment|||Whenever an opponent casts a white spell, he or she loses 2 life.| -Heart Sliver|Tempest|182|C|{1}{R}|Creature - Sliver|1|1|All Sliver creatures have haste.| -Jackal Pup|Tempest|183|U|{R}|Creature - Hound|2|1|Whenever Jackal Pup is dealt damage, it deals that much damage to you.| -Kindle|Tempest|184|C|{1}{R}|Instant|||Kindle deals X damage to target creature or player, where X is 2 plus the number of cards named Kindle in all graveyards.| -Lightning Blast|Tempest|185|C|{3}{R}|Instant|||Lightning Blast deals 4 damage to target creature or player.| -Lightning Elemental|Tempest|186|C|{3}{R}|Creature - Elemental|4|1|Haste (This creature can attack and {tap} as soon as it comes under your control.)| -Lowland Giant|Tempest|187|C|{2}{R}{R}|Creature - Giant|4|3|| -Magmasaur|Tempest|188|R|{3}{R}{R}|Creature - Elemental Lizard|0|0|Magmasaur enters the battlefield with five +1/+1 counters on it.$At the beginning of your upkeep, you may remove a +1/+1 counter from Magmasaur. If you don't, sacrifice Magmasaur and it deals damage equal to the number of +1/+1 counters on it to each creature without flying and each player.| -Mogg Conscripts|Tempest|189|C|{R}|Creature - Goblin|2|2|Mogg Conscripts can't attack unless you've cast a creature spell this turn.| -Dauthi Mindripper|Tempest|19|U|{3}{B}|Creature - Dauthi Minion|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Dauthi Mindripper attacks and isn't blocked, you may sacrifice it. If you do, defending player discards three cards.| -Mogg Fanatic|Tempest|190|C|{R}|Creature - Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.| -Mogg Raider|Tempest|191|C|{R}|Creature - Goblin|1|1|Sacrifice a Goblin: Target creature gets +1/+1 until end of turn.| -Mogg Squad|Tempest|192|U|{1}{R}|Creature - Goblin|3|3|Mogg Squad gets -1/-1 for each other creature on the battlefield.| -No Quarter|Tempest|193|R|{3}{R}|Enchantment|||Whenever a creature becomes blocked by a creature with lesser power, destroy the blocking creature.$$Whenever a creature blocks a creature with lesser power, destroy the attacking creature.| -Opportunist|Tempest|194|U|{2}{R}|Creature - Human Soldier|2|2|{tap}: Opportunist deals 1 damage to target creature that was dealt damage this turn.| -Pallimud|Tempest|195|R|{2}{R}|Creature - Beast|*|3|As Pallimud enters the battlefield, choose an opponent.$Pallimud's power is equal to the number of tapped lands the chosen player controls.| -Rathi Dragon|Tempest|196|R|{2}{R}{R}|Creature - Dragon|5|5|Flying (This creature can't be blocked except by creatures with flying or reach.)$When Rathi Dragon enters the battlefield, sacrifice it unless you sacrifice two Mountains.| -Renegade Warlord|Tempest|197|U|{4}{R}|Creature - Human Warrior|3|3|First strike$Whenever Renegade Warlord attacks, each other attacking creature gets +1/+0 until end of turn.| -Rolling Thunder|Tempest|198|C|{X}{R}{R}|Sorcery|||Rolling Thunder deals X damage divided as you choose among any number of target creatures and/or players.| -Sandstone Warrior|Tempest|199|C|{2}{R}{R}|Creature - Human Soldier Warrior|1|3|First strike (This creature deals combat damage before creatures without first strike.)${R}: Sandstone Warrior gets +1/+0 until end of turn.| Bellowing Fiend|Tempest|2|R|{4}{B}|Creature - Spirit|3|3|Flying$$Whenever Bellowing Fiend deals damage to a creature, Bellowing Fiend deals 3 damage to that creature's controller and 3 damage to you.| -Dauthi Slayer|Tempest|20|C|{B}{B}|Creature - Dauthi Soldier|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Slayer attacks each turn if able.| -Scorched Earth|Tempest|200|R|{X}{R}|Sorcery|||As an additional cost to cast Scorched Earth, discard X land cards.$Destroy X target lands.| -Searing Touch|Tempest|201|U|{R}|Instant|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Searing Touch deals 1 damage to target creature or player.| -Shadowstorm|Tempest|202|U|{R}|Sorcery|||Shadowstorm deals 2 damage to each creature with shadow.| -Shatter|Tempest|203|C|{1}{R}|Instant|||Destroy target artifact.| -Starke of Rath|Tempest|205|R|{1}{R}{R}|Legendary Creature - Human Rogue|2|2|{tap}: Destroy target artifact or creature. That permanent's controller gains control of Starke of Rath. (This effect lasts indefinitely.)| -Stone Rain|Tempest|206|C|{2}{R}|Sorcery|||Destroy target land.| -Stun|Tempest|207|C|{1}{R}|Instant|||Target creature can't block this turn.$Draw a card.| -Sudden Impact|Tempest|208|U|{3}{R}|Instant|||Sudden Impact deals damage to target player equal to the number of cards in that player's hand.| -Tahngarth's Rage|Tempest|209|U|{R}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +3/+0 as long as it's attacking. Otherwise, it gets -2/-1.| -Death Pits of Rath|Tempest|21|R|{3}{B}{B}|Enchantment|||Whenever a creature is dealt damage, destroy it. It can't be regenerated.| -Tooth and Claw|Tempest|210|R|{3}{R}|Enchantment|||Sacrifice two creatures: Put a 3/1 red Beast creature token named Carnivore onto the battlefield.| -Wall of Diffusion|Tempest|211|C|{1}{R}|Creature - Wall|0|5|Defender (This creature can't attack.)$Wall of Diffusion can block creatures with shadow as though Wall of Diffusion had shadow.| -Wild Wurm|Tempest|212|U|{3}{R}|Creature - Wurm|5|4|When Wild Wurm enters the battlefield, flip a coin. If you lose the flip, return Wild Wurm to its owner's hand.| -Advance Scout|Tempest|213|C|{1}{W}|Creature - Human Soldier Scout|1|1|First strike${W}: Target creature gains first strike until end of turn.| -Angelic Protector|Tempest|214|U|{3}{W}|Creature - Angel|2|2|Flying$Whenever Angelic Protector becomes the target of a spell or ability, Angelic Protector gets +0/+3 until end of turn.| -Anoint|Tempest|215|C|{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Prevent the next 3 damage that would be dealt to target creature this turn.| -Armor Sliver|Tempest|216|U|{2}{W}|Creature - Sliver|2|2|All Sliver creatures have "{2}: This creature gets +0/+1 until end of turn."| -Respite|Tempest|216|C|{1}{G}|Instant|||Prevent all combat damage that would be dealt this turn. You gain 1 life for each attacking creature.| -Armored Pegasus|Tempest|217|C|{1}{W}|Creature - Pegasus|1|2|Flying| -Auratog|Tempest|218|R|{1}{W}|Creature - Atog|1|2|Sacrifice an enchantment: Auratog gets +2/+2 until end of turn.| -Avenging Angel|Tempest|219|R|{3}{W}{W}|Creature - Angel|3|3|Flying$When Avenging Angel dies, you may put it on top of its owner's library.| -Diabolic Edict|Tempest|22|C|{1}{B}|Instant|||Target player sacrifices a creature.| -Circle of Protection: Black|Tempest|220|C|{1}{W}|Enchantment|||{1}: The next time a black source of your choice would deal damage to you this turn, prevent that damage.| -Circle of Protection: Blue|Tempest|221|C|{1}{W}|Enchantment|||{1}: The next time a blue source of your choice would deal damage to you this turn, prevent that damage.| -Circle of Protection: Green|Tempest|222|C|{1}{W}|Enchantment|||{1}: The next time a green source of your choice would deal damage to you this turn, prevent that damage.| -Circle of Protection: Red|Tempest|223|C|{1}{W}|Enchantment|||{1}: The next time a red source of your choice would deal damage to you this turn, prevent that damage.| -Circle of Protection: Shadow|Tempest|224|C|{1}{W}|Enchantment|||{1}: The next time a creature of your choice with shadow would deal damage to you this turn, prevent that damage.| -Circle of Protection: White|Tempest|225|C|{1}{W}|Enchantment|||{1}: The next time a white source of your choice would deal damage to you this turn, prevent that damage.| -Clergy en-Vec|Tempest|226|C|{1}{W}|Creature - Human Cleric|1|1|{tap}: Prevent the next 1 damage that would be dealt to target creature or player this turn.| -Cloudchaser Eagle|Tempest|227|C|{3}{W}|Creature - Bird|2|2|Flying$When Cloudchaser Eagle enters the battlefield, destroy target enchantment.| -Disenchant|Tempest|228|C|{1}{W}|Instant|||Destroy target artifact or enchantment.| -Elite Javelineer|Tempest|229|C|{2}{W}|Creature - Human Soldier|2|2|Whenever Elite Javelineer blocks, it deals 1 damage to target attacking creature.| -Disturbed Burial|Tempest|23|C|{1}{B}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return target creature card from your graveyard to your hand.| -Intuition|Tempest|23|R|{2}{U}|Instant|||Search your library for three cards and reveal them. Target opponent chooses one. Put that card into your hand and the rest into your graveyard. Then shuffle your library.| -Field of Souls|Tempest|230|R|{2}{W}{W}|Enchantment|||Whenever a nontoken creature is put into your graveyard from the battlefield, put a 1/1 white Spirit creature token with flying onto the battlefield.| -Flickering Ward|Tempest|231|U|{W}|Enchantment - Aura|||Enchant creature$As Flickering Ward enters the battlefield, choose a color.$Enchanted creature has protection from the chosen color. This effect doesn't remove Flickering Ward.${W}: Return Flickering Ward to its owner's hand.| -Gallantry|Tempest|232|U|{1}{W}|Instant|||Target blocking creature gets +4/+4 until end of turn.$$Draw a card.| -Gerrard's Battle Cry|Tempest|233|R|{W}|Enchantment|||{2}{W}: Creatures you control get +1/+1 until end of turn.| -Hanna's Custody|Tempest|234|R|{2}{W}|Enchantment|||All artifacts have shroud. (They can't be the targets of spells or abilities.)| -Hero's Resolve|Tempest|235|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +1/+5.| -Humility|Tempest|236|R|{2}{W}{W}|Enchantment|||All creatures lose all abilities and are 1/1.| -Invulnerability|Tempest|237|U|{1}{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$The next time a source of your choice would deal damage to you this turn, prevent that damage.| -Knight of Dawn|Tempest|238|U|{1}{W}{W}|Creature - Human Knight|2|2|First strike${W}{W}: Knight of Dawn gains protection from the color of your choice until end of turn.| -Light of Day|Tempest|239|U|{3}{W}|Enchantment|||Black creatures can't attack or block.| -Dread of Night|Tempest|24|U|{B}|Enchantment|||White creatures get -1/-1.| -Marble Titan|Tempest|240|R|{3}{W}|Creature - Giant|3|3|Creatures with power 3 or greater don't untap during their controllers' untap steps.| -Master Decoy|Tempest|241|C|{1}{W}|Creature - Human Soldier|1|2|{W}, {tap}: Tap target creature.| -Mounted Archers|Tempest|242|C|{3}{W}|Creature - Human Soldier Archer|2|3|Reach (This creature can block creatures with flying.)${W}: Mounted Archers can block an additional creature this turn.| -Oracle en-Vec|Tempest|243|R|{1}{W}|Creature - Human Wizard|1|1|{tap}: Target opponent chooses any number of creatures he or she controls. During that player's next turn, the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack. Activate this ability only during your turn.| -Orim, Samite Healer|Tempest|244|R|{1}{W}{W}|Legendary Creature - Human Cleric|1|3|{tap}: Prevent the next 3 damage that would be dealt to target creature or player this turn.| -Safeguard|Tempest|244|R|{3}{W}{W}|Enchantment|||{2}{W}: Prevent all combat damage that would be dealt by target creature this turn.| -Orim's Prayer|Tempest|245|U|{1}{W}{W}|Enchantment|||Whenever one or more creatures attack you, you gain 1 life for each attacking creature.| -Pacifism|Tempest|246|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block.| -Pegasus Refuge|Tempest|247|R|{3}{W}|Enchantment|||{2}, Discard a card: Put a 1/1 white Pegasus creature token with flying onto the battlefield.| -Quickening Licid|Tempest|248|U|{1}{W}|Creature - Licid|1|1|{1}{W}, {tap}: Quickening Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect.$Enchanted creature has first strike.| -Repentance|Tempest|249|U|{2}{W}|Sorcery|||Target creature deals damage to itself equal to its power.| -Dregs of Sorrow|Tempest|25|R|{X}{4}{B}|Sorcery|||Destroy X target nonblack creatures. Draw X cards.| -Sacred Guide|Tempest|250|R|{W}|Creature - Human Cleric|1|1|{1}{W}, Sacrifice Sacred Guide: Reveal cards from the top of your library until you reveal a white card. Put that card into your hand and exile all other cards revealed this way.| -Serene Offering|Tempest|252|U|{1}{W}|Instant|||Destroy target enchantment. You gain life equal to its converted mana cost.| -Soltari Crusader|Tempest|253|U|{2}{W}|Creature - Soltari Knight|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)${1}{W}: Soltari Crusader gets +1/+0 until end of turn.| -Soltari Emissary|Tempest|254|R|{1}{W}|Creature - Soltari Soldier|2|1|{W}: Soltari Emissary gains shadow until end of turn. (This creature can block or be blocked by only creatures with shadow.)| -Soltari Foot Soldier|Tempest|255|C|{W}|Creature - Soltari Soldier|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)| -Soltari Lancer|Tempest|256|C|{2}{W}|Creature - Soltari Knight|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Soltari Lancer has first strike as long as it's attacking.| -Soltari Monk|Tempest|257|U|{W}{W}|Creature - Soltari Monk Cleric|2|1|Protection from black$Shadow (This creature can block or be blocked by only creatures with shadow.)| -Soltari Priest|Tempest|258|U|{W}{W}|Creature - Soltari Cleric|2|1|Protection from red$Shadow (This creature can block or be blocked by only creatures with shadow.)| -Soltari Trooper|Tempest|259|C|{1}{W}|Creature - Soltari Soldier|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Soltari Trooper attacks, it gets +1/+1 until end of turn.| -Endless Scream|Tempest|26|C|{X}{B}|Enchantment - Aura|||Enchant creature$Endless Scream enters the battlefield with X scream counters on it.$Enchanted creature gets +1/+0 for each scream counter on Endless Scream.| -Spirit Mirror|Tempest|260|R|{2}{W}{W}|Enchantment|||At the beginning of your upkeep, if there are no Reflection tokens on the battlefield, put a 2/2 white Reflection creature token onto the battlefield.${0}: Destroy target Reflection.| -Staunch Defenders|Tempest|261|U|{3}{W}{W}|Creature - Human Soldier|3|4|When Staunch Defenders enters the battlefield, you gain 4 life.| -Talon Sliver|Tempest|262|C|{1}{W}|Creature - Sliver|1|1|All Sliver creatures have first strike.| -Warmth|Tempest|263|U|{1}{W}|Enchantment|||Whenever an opponent casts a red spell, you gain 2 life.| -Winds of Rath|Tempest|264|R|{3}{W}{W}|Sorcery|||Destroy all creatures that aren't enchanted. They can't be regenerated.| -Worthy Cause|Tempest|265|U|{W}|Instant|||Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.)$As an additional cost to cast Worthy Cause, sacrifice a creature.$You gain life equal to the sacrificed creature's toughness.| -Altar of Dementia|Tempest|266|R|{2}|Artifact|||Sacrifice a creature: Target player puts a number of cards equal to the sacrificed creature's power from the top of his or her library into his or her graveyard.| -Booby Trap|Tempest|267|R|{6}|Artifact|||As Booby Trap enters the battlefield, name a card other than a basic land card and choose an opponent.$The chosen player reveals each card he or she draws.$When the chosen player draws the named card, sacrifice Booby Trap. If you do, Booby Trap deals 10 damage to that player.| -Bottle Gnomes|Tempest|268|U|{3}|Artifact Creature - Gnome|1|3|Sacrifice Bottle Gnomes: You gain 3 life.| -Coiled Tinviper|Tempest|269|C|{3}|Artifact Creature - Snake|2|1|First strike| -Enfeeblement|Tempest|27|C|{B}{B}|Enchantment - Aura|||Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)$Enchanted creature gets -2/-2.| -Cold Storage|Tempest|270|R|{4}|Artifact|||{3}: Exile target creature you control.$Sacrifice Cold Storage: Return each creature card exiled with Cold Storage to the battlefield under your control.| -Cursed Scroll|Tempest|271|R|{1}|Artifact|||{3}, {tap}: Name a card. Reveal a card at random from your hand. If it's the named card, Cursed Scroll deals 2 damage to target creature or player.| -Echo Chamber|Tempest|272|R|{4}|Artifact|||{4}, {tap}: An opponent chooses target creature he or she controls. Put a token that's a copy of that creature onto the battlefield. That token gains haste until end of turn. Exile the token at the beginning of the next end step. Activate this ability only any time you could cast a sorcery.| -Emerald Medallion|Tempest|273|R|{2}|Artifact|||Green spells you cast cost {1} less to cast.| -Emmessi Tome|Tempest|274|R|{4}|Artifact|||{5}, {tap}: Draw two cards, then discard a card.| -Energizer|Tempest|275|R|{4}|Artifact Creature - Juggernaut|2|2|{2}, {tap}: Put a +1/+1 counter on Energizer.| -Essence Bottle|Tempest|276|U|{2}|Artifact|||{3}, {tap}: Put an elixir counter on Essence Bottle.${tap}, Remove all elixir counters from Essence Bottle: You gain 2 life for each elixir counter removed this way.| -Excavator|Tempest|277|U|{2}|Artifact|||{tap}, Sacrifice a basic land: Target creature gains landwalk of each of the land types of the sacrificed land until end of turn.| -Flowstone Sculpture|Tempest|278|R|{6}|Artifact Creature - Shapeshifter|4|4|{2}, Discard a card: Put a +1/+1 counter on Flowstone Sculpture or Flowstone Sculpture gains flying, first strike, or trample. (This effect lasts indefinitely.)| -Fool's Tome|Tempest|279|R|{4}|Artifact|||{2}, {tap}: Draw a card. Activate this ability only if you have no cards in hand.| -Evincar's Justice|Tempest|28|C|{2}{B}{B}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Evincar's Justice deals 2 damage to each creature and each player.| -Grindstone|Tempest|280|R|{1}|Artifact|||{3}, {tap}: Target player puts the top two cards of his or her library into his or her graveyard. If both cards share a color, repeat this process.| -Helm of Possession|Tempest|281|R|{4}|Artifact|||You may choose not to untap Helm of Possession during your untap step.${2}, {tap}, Sacrifice a creature: Gain control of target creature for as long as you control Helm of Possession and Helm of Possession remains tapped.| -Jet Medallion|Tempest|282|R|{2}|Artifact|||Black spells you cast cost {1} less to cast.| -Jinxed Idol|Tempest|283|R|{2}|Artifact|||At the beginning of your upkeep, Jinxed Idol deals 2 damage to you.$Sacrifice a creature: Target opponent gains control of Jinxed Idol.| -Lotus Petal|Tempest|284|C|{0}|Artifact|||{tap}, Sacrifice Lotus Petal: Add one mana of any color to your mana pool.| -Magnetic Web|Tempest|285|R|{2}|Artifact|||If a creature with a magnet counter on it attacks, all creatures with magnet counters on them attack if able.$Whenever a creature with a magnet counter on it attacks, all creatures with magnet counters on them block that creature this turn if able.${1}, {tap}: Put a magnet counter on target creature.| -Manakin|Tempest|286|C|{2}|Artifact Creature - Construct|1|1|{tap}: Add {1} to your mana pool.| -Metallic Sliver|Tempest|287|C|{1}|Artifact Creature - Sliver|1|1|| -Mogg Cannon|Tempest|288|U|{2}|Artifact|||{tap}: Target creature you control gets +1/+0 and gains flying until end of turn. Destroy that creature at the beginning of the next end step.| -Patchwork Gnomes|Tempest|289|U|{3}|Artifact Creature - Gnome|2|1|Discard a card: Regenerate Patchwork Gnomes.| -Extinction|Tempest|29|R|{4}{B}|Sorcery|||Destroy all creatures of the creature type of your choice.| -Pearl Medallion|Tempest|290|R|{2}|Artifact|||White spells you cast cost {1} less to cast.| -Phyrexian Grimoire|Tempest|291|R|{3}|Artifact|||{4}, {tap}: Target opponent chooses one of the top two cards of your graveyard. Exile that card and put the other one into your hand.| -Phyrexian Hulk|Tempest|292|U|{6}|Artifact Creature - Golem|5|4|| -Phyrexian Splicer|Tempest|293|U|{2}|Artifact|||{2}, {tap}: Choose flying, first strike, trample, or shadow: Until end of turn, target creature with the chosen ability loses it and another target creature gains it.| -Puppet Strings|Tempest|294|U|{3}|Artifact|||{2}, {tap}: You may tap or untap target creature.| -Ruby Medallion|Tempest|295|R|{2}|Artifact|||Red spells you cast cost {1} less to cast.| -Sapphire Medallion|Tempest|296|R|{2}|Artifact|||Blue spells you cast cost {1} less to cast.| -Scalding Tongs|Tempest|297|R|{2}|Artifact|||At the beginning of your upkeep, if you have three or fewer cards in hand, Scalding Tongs deals 1 damage to target opponent.| -Scroll Rack|Tempest|298|R|{2}|Artifact|||{1}, {tap}: Exile any number of cards from your hand face down. Put that many cards from the top of your library into your hand. Then look at the exiled cards and put them on top of your library in any order.| -Squee's Toy|Tempest|299|C|{1}|Artifact|||{tap}: Prevent the next 1 damage that would be dealt to target creature this turn.| Blood Pet|Tempest|3|C|{B}|Creature - Thrull|1|1|Sacrifice Blood Pet: Add {B} to your mana pool.| +Bounty Hunter|Tempest|4|R|{2}{B}{B}|Creature - Human Archer Minion|2|2|{tap}: Put a bounty counter on target nonblack creature.${tap}: Destroy target creature with a bounty counter on it.| +Carrionette|Tempest|5|R|{1}{B}|Creature - Skeleton|1|1|{2}{B}{B}: Exile Carrionette and target creature unless that creature's controller pays {2}. Activate this ability only if Carrionette is in your graveyard.| +Clot Sliver|Tempest|6|C|{1}{B}|Creature - Sliver|1|1|All Slivers have "{2}: Regenerate this permanent."| +Coercion|Tempest|7|C|{2}{B}|Sorcery|||Target opponent reveals his or her hand. You choose a card from it. That player discards that card.| +Coffin Queen|Tempest|8|R|{2}{B}|Creature - Zombie Wizard|1|1|You may choose not to untap Coffin Queen during your untap step.${2}{B}, {tap}: Put target creature card from a graveyard onto the battlefield under your control. When Coffin Queen becomes untapped or you lose control of Coffin Queen, exile that creature.| +Commander Greven il-Vec|Tempest|9|R|{3}{B}{B}{B}|Legendary Creature - Human Warrior|7|5|Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)$When Commander Greven il-Vec enters the battlefield, sacrifice a creature.| +Corpse Dance|Tempest|10|R|{2}{B}|Instant|||Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return the top creature card of your graveyard to the battlefield. That creature gains haste until end of turn. Exile it at the beginning of the next end step.| +Dark Banishing|Tempest|11|C|{2}{B}|Instant|||Destroy target nonblack creature. It can't be regenerated.| +Dark Ritual|Tempest|12|C|{B}|Instant|||Add {B}{B}{B} to your mana pool.| +Darkling Stalker|Tempest|13|C|{3}{B}|Creature - Shade Spirit|1|1|{B}: Regenerate Darkling Stalker.${B}: Darkling Stalker gets +1/+1 until end of turn.| +Dauthi Embrace|Tempest|14|U|{2}{B}|Enchantment|||{B}{B}: Target creature gains shadow until end of turn. (It can block or be blocked by only creatures with shadow.)| +Dauthi Ghoul|Tempest|15|U|{1}{B}|Creature - Dauthi Zombie|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever a creature with shadow dies, put a +1/+1 counter on Dauthi Ghoul.| +Dauthi Horror|Tempest|16|C|{1}{B}|Creature - Dauthi Horror|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Horror can't be blocked by white creatures.| +Dauthi Marauder|Tempest|17|C|{2}{B}|Creature - Dauthi Minion|3|1|Shadow (This creature can block or be blocked by only creatures with shadow.)| +Dauthi Mercenary|Tempest|18|U|{2}{B}|Creature - Dauthi Knight Mercenary|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)${1}{B}: Dauthi Mercenary gets +1/+0 until end of turn.| +Dauthi Mindripper|Tempest|19|U|{3}{B}|Creature - Dauthi Minion|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Dauthi Mindripper attacks and isn't blocked, you may sacrifice it. If you do, defending player discards three cards.| +Dauthi Slayer|Tempest|20|C|{B}{B}|Creature - Dauthi Soldier|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Slayer attacks each turn if able.| +Death Pits of Rath|Tempest|21|R|{3}{B}{B}|Enchantment|||Whenever a creature is dealt damage, destroy it. It can't be regenerated.| +Diabolic Edict|Tempest|22|C|{1}{B}|Instant|||Target player sacrifices a creature.| +Disturbed Burial|Tempest|23|C|{1}{B}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return target creature card from your graveyard to your hand.| +Dread of Night|Tempest|24|U|{B}|Enchantment|||White creatures get -1/-1.| +Dregs of Sorrow|Tempest|25|R|{X}{4}{B}|Sorcery|||Destroy X target nonblack creatures. Draw X cards.| +Endless Scream|Tempest|26|C|{X}{B}|Enchantment - Aura|||Enchant creature$Endless Scream enters the battlefield with X scream counters on it.$Enchanted creature gets +1/+0 for each scream counter on Endless Scream.| +Enfeeblement|Tempest|27|C|{B}{B}|Enchantment - Aura|||Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)$Enchanted creature gets -2/-2.| +Evincar's Justice|Tempest|28|C|{2}{B}{B}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Evincar's Justice deals 2 damage to each creature and each player.| +Extinction|Tempest|29|R|{4}{B}|Sorcery|||Destroy all creatures of the creature type of your choice.| Fevered Convulsions|Tempest|30|R|{B}{B}|Enchantment|||{2}{B}{B}: Put a -1/-1 counter on target creature.| -Static Orb|Tempest|300|R|{3}|Artifact|||As long as Static Orb is untapped, players can't untap more than two permanents during their untap steps.| -Telethopter|Tempest|301|U|{4}|Artifact Creature - Thopter|3|1|Tap an untapped creature you control: Telethopter gains flying until end of turn.| -Thumbscrews|Tempest|302|R|{2}|Artifact|||At the beginning of your upkeep, if you have five or more cards in hand, Thumbscrews deals 1 damage to target opponent.| -Torture Chamber|Tempest|303|R|{3}|Artifact|||At the beginning of your upkeep, put a pain counter on Torture Chamber.$At the beginning of your end step, Torture Chamber deals damage to you equal to the number of pain counters on it.${1}, {tap}, Remove all pain counters from Torture Chamber: Torture Chamber deals damage to target creature equal to the number of pain counters removed this way.| -Watchdog|Tempest|304|U|{3}|Artifact Creature - Hound|1|2|Watchdog blocks each turn if able.$As long as Watchdog is untapped, all creatures attacking you get -1/-0.| -Ancient Tomb|Tempest|305|U||Land|||{tap}: Add {2} to your mana pool. Ancient Tomb deals 2 damage to you.| -Caldera Lake|Tempest|306|R||Land|||Caldera Lake enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {U} or {R} to your mana pool. Caldera Lake deals 1 damage to you.| -Cinder Marsh|Tempest|307|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {B} or {R} to your mana pool. Cinder Marsh doesn't untap during your next untap step.| -Forest|Tempest|308|L||Basic Land - Forest|||G| -Forest|Tempest|308|L||Basic Land - Forest|||G| -Forest|Tempest|308|L||Basic Land - Forest|||G| -Forest|Tempest|308|L||Basic Land - Forest|||G| Gravedigger|Tempest|31|C|{3}{B}|Creature - Zombie|2|2|When Gravedigger enters the battlefield, you may return target creature card from your graveyard to your hand.| -Ghost Town|Tempest|312|U||Land|||{tap}: Add {1} to your mana pool.${0}: Return Ghost Town to its owner's hand. Activate this ability only if it's not your turn.| -Island|Tempest|313|L||Basic Land - Island|||U| -Island|Tempest|313|L||Basic Land - Island|||U| -Island|Tempest|313|L||Basic Land - Island|||U| -Island|Tempest|313|L||Basic Land - Island|||U| -Maze of Shadows|Tempest|317|U||Land|||{tap}: Add {1} to your mana pool.$${tap}: Untap target attacking creature with shadow. Prevent all combat damage that would be dealt to and dealt by that creature this turn.| -Mogg Hollows|Tempest|318|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {R} or {G} to your mana pool. Mogg Hollows doesn't untap during your next untap step.| -Mountain|Tempest|319|L||Basic Land - Mountain|||R| -Mountain|Tempest|319|L||Basic Land - Mountain|||R| -Mountain|Tempest|319|L||Basic Land - Mountain|||R| -Mountain|Tempest|319|L||Basic Land - Mountain|||R| Imps' Taunt|Tempest|32|U|{1}{B}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target creature attacks this turn if able.| -Pine Barrens|Tempest|323|R||Land|||Pine Barrens enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {B} or {G} to your mana pool. Pine Barrens deals 1 damage to you.| -Plains|Tempest|324|L||Basic Land - Plains|||W| -Plains|Tempest|324|L||Basic Land - Plains|||W| -Plains|Tempest|324|L||Basic Land - Plains|||W| -Plains|Tempest|324|L||Basic Land - Plains|||W| -Reflecting Pool|Tempest|328|R||Land|||{tap}: Add to your mana pool one mana of any type that a land you control could produce.| -Rootwater Depths|Tempest|329|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {U} or {B} to your mana pool. Rootwater Depths doesn't untap during your next untap step.| Kezzerdrix|Tempest|33|R|{2}{B}{B}|Creature - Rabbit Beast|4|4|First strike$At the beginning of your upkeep, if your opponents control no creatures, Kezzerdrix deals 4 damage to you.| -Salt Flats|Tempest|330|R||Land|||Salt Flats enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {W} or {B} to your mana pool. Salt Flats deals 1 damage to you.| -Scabland|Tempest|331|R||Land|||Scabland enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {R} or {W} to your mana pool. Scabland deals 1 damage to you.| -Skyshroud Forest|Tempest|332|R||Land|||Skyshroud Forest enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {G} or {U} to your mana pool. Skyshroud Forest deals 1 damage to you.| -Stalking Stones|Tempest|333|U||Land|||{tap}: Add {1} to your mana pool.${6}: Stalking Stones becomes a 3/3 Elemental artifact creature that's still a land. (This effect lasts indefinitely.)| -Swamp|Tempest|334|L||Basic Land - Swamp|||B| -Swamp|Tempest|334|L||Basic Land - Swamp|||B| -Swamp|Tempest|334|L||Basic Land - Swamp|||B| -Swamp|Tempest|334|L||Basic Land - Swamp|||B| -Thalakos Lowlands|Tempest|338|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {W} or {U} to your mana pool. Thalakos Lowlands doesn't untap during your next untap step.| -Vec Townships|Tempest|339|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {G} or {W} to your mana pool. Vec Townships doesn't untap during your next untap step.| Knight of Dusk|Tempest|34|U|{1}{B}{B}|Creature - Human Knight|2|2|{B}{B}: Destroy target creature blocking Knight of Dusk.| -Dracoplasm|Tempest|341|R|{U}{R}|Creature - Shapeshifter|0|0|Flying$As Dracoplasm enters the battlefield, sacrifice any number of creatures. Dracoplasm's power becomes the total power of those creatures and its toughness becomes their total toughness.${R}: Dracoplasm gets +1/+0 until end of turn.| -Lobotomy|Tempest|342|U|{2}{U}{B}|Sorcery|||Target player reveals his or her hand, then you choose a card other than a basic land card from it. Search that player's graveyard, hand, and library for all cards with the same name as the chosen card and exile them. Then that player shuffles his or her library.| -Ranger en-Vec|Tempest|343|U|{1}{G}{W}|Creature - Human Soldier Archer|2|2|First strike${G}: Regenerate Ranger en-Vec.| -Segmented Wurm|Tempest|344|U|{3}{R}{G}|Creature - Wurm|5|5|Whenever Segmented Wurm becomes the target of a spell or ability, put a -1/-1 counter on it.| -Selenia, Dark Angel|Tempest|345|R|{3}{W}{B}|Legendary Creature - Angel|3|3|Flying$Pay 2 life: Return Selenia, Dark Angel to its owner's hand.| -Sky Spirit|Tempest|346|U|{1}{W}{U}|Creature - Spirit|2|2|Flying, first strike| -Soltari Guerrillas|Tempest|347|R|{2}{W}{R}|Creature - Soltari Soldier|3|2|Shadow (This creature can block or be blocked by only creatures with shadow.)${0}: The next time Soltari Guerrillas would deal combat damage to an opponent this turn, it deals that damage to target creature instead.| -Spontaneous Combustion|Tempest|348|U|{1}{B}{R}|Instant|||As an additional cost to cast Spontaneous Combustion, sacrifice a creature.$Spontaneous Combustion deals 3 damage to each creature.| -Vhati il-Dal|Tempest|349|R|{2}{B}{G}|Legendary Creature - Human Warrior|3|3|{tap}: Target creature's power or toughness becomes 1 until end of turn.| Leeching Licid|Tempest|35|U|{1}{B}|Creature - Licid|1|1|{B}, {tap}: Leeching Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {B} to end this effect.$At the beginning of the upkeep of enchanted creature's controller, Leeching Licid deals 1 damage to that player.| -Wood Sage|Tempest|350|R|{G}{U}|Creature - Human Druid|1|1|{tap}: Name a creature card. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard.| Living Death|Tempest|36|R|{3}{B}{B}|Sorcery|||Each player exiles all creature cards from his or her graveyard, then sacrifices all creatures he or she controls, then puts all cards he or she exiled this way onto the battlefield.| Maddening Imp|Tempest|37|R|{2}{B}|Creature - Imp|1|1|Flying${tap}: Non-Wall creatures the active player controls attack this turn if able. At the beginning of the next end step, destroy each of those creatures that didn't attack this turn. Activate this ability only during an opponent's turn and only before combat.| Marsh Lurker|Tempest|38|C|{3}{B}|Creature - Beast|3|2|Sacrifice a Swamp: Marsh Lurker gains fear until end of turn. (It can't be blocked except by artifact creatures and/or black creatures.)| Mindwhip Sliver|Tempest|39|U|{2}{B}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: Target player discards a card at random. Activate this ability only any time you could cast a sorcery."| -Bounty Hunter|Tempest|4|R|{2}{B}{B}|Creature - Human Archer Minion|2|2|{tap}: Put a bounty counter on target nonblack creature.${tap}: Destroy target creature with a bounty counter on it.| Minion of the Wastes|Tempest|40|R|{3}{B}{B}{B}|Creature - Minion|*|*|Trample$As Minion of the Wastes enters the battlefield, pay any amount of life.$Minion of the Wastes's power and toughness are each equal to the life paid as it entered the battlefield.| Perish|Tempest|41|U|{2}{B}|Sorcery|||Destroy all green creatures. They can't be regenerated.| Pit Imp|Tempest|42|C|{B}|Creature - Imp|0|1|Flying${B}: Pit Imp gets +1/+0 until end of turn. Activate this ability no more than twice each turn.| @@ -18877,17 +18638,16 @@ Reckless Spite|Tempest|46|U|{1}{B}{B}|Instant|||Destroy two target nonblack crea Sadistic Glee|Tempest|47|C|{B}|Enchantment - Aura|||Enchant creature$Whenever a creature dies, put a +1/+1 counter on enchanted creature.| Sarcomancy|Tempest|48|R|{B}|Enchantment|||When Sarcomancy enters the battlefield, put a 2/2 black Zombie creature token onto the battlefield.$At the beginning of your upkeep, if there are no Zombies on the battlefield, Sarcomancy deals 1 damage to you.| Screeching Harpy|Tempest|49|U|{2}{B}{B}|Creature - Harpy Beast|2|2|Flying${1}{B}: Regenerate Screeching Harpy.| -Carrionette|Tempest|5|R|{1}{B}|Creature - Skeleton|1|1|{2}{B}{B}: Exile Carrionette and target creature unless that creature's controller pays {2}. Activate this ability only if Carrionette is in your graveyard.| Servant of Volrath|Tempest|50|C|{2}{B}|Creature - Minion|3|3|When Servant of Volrath leaves the battlefield, sacrifice a creature.| Skyshroud Vampire|Tempest|51|U|{3}{B}{B}|Creature - Vampire|3|3|Flying$Discard a creature card: Skyshroud Vampire gets +2/+2 until end of turn.| Souldrinker|Tempest|52|U|{3}{B}|Creature - Spirit|2|2|Pay 3 life: Put a +1/+1 counter on Souldrinker.| Spinal Graft|Tempest|53|C|{1}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +3/+3.$When enchanted creature becomes the target of a spell or ability, destroy that creature. It can't be regenerated.| Benthic Behemoth|Tempest|54|R|{5}{U}{U}{U}|Creature - Serpent|7|6|Islandwalk| Capsize|Tempest|55|C|{1}{U}{U}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return target permanent to its owner's hand.| -Counterspell|Tempest|57|C|{U}{U}|Instant|||Counter target spell.| -Dream Cache|Tempest|59|C|{2}{U}|Sorcery|||Draw three cards, then put two cards from your hand both on top of your library or both on the bottom of your library.| -Clot Sliver|Tempest|6|C|{1}{B}|Creature - Sliver|1|1|All Slivers have "{2}: Regenerate this permanent."| Chill|Tempest|56|U|{1}{U}|Enchantment|||Red spells cost {2} more to cast.| +Counterspell|Tempest|57|C|{U}{U}|Instant|||Counter target spell.| +Dismiss|Tempest|58|U|{2}{U}{U}|Instant|||Counter target spell.$Draw a card.| +Dream Cache|Tempest|59|C|{2}{U}|Sorcery|||Draw three cards, then put two cards from your hand both on top of your library or both on the bottom of your library.| Duplicity|Tempest|60|R|{3}{U}|Enchantment|||When Duplicity enters the battlefield, exile the top five cards of your library face down.$At the beginning of your upkeep, you may exile all cards from your hand face down. If you do, put all other cards you own exiled with Duplicity into your hand.$At the beginning of your end step, discard a card.$When you lose control of Duplicity, put all cards exiled with Duplicity into their owner's graveyard.| Ertai's Meddling|Tempest|61|R|{X}{U}|Instant|||X can't be 0.$Target spell's controller exiles it with X delay counters on it.$At the beginning of each of that player's upkeeps, if that card is exiled, remove a delay counter from it. If the card has no delay counters on it, he or she puts it onto the stack as a copy of the original spell.| Escaped Shapeshifter|Tempest|62|R|{3}{U}{U}|Creature - Shapeshifter|3|4|As long as an opponent controls a creature with flying not named Escaped Shapeshifter, Escaped Shapeshifter has flying. The same is true for first strike, trample, and protection from any color.| @@ -18895,14 +18655,12 @@ Fighting Drake|Tempest|63|U|{2}{U}{U}|Creature - Drake|2|4|Flying| Fylamarid|Tempest|64|U|{1}{U}{U}|Creature - Squid Beast|1|3|Flying$Fylamarid can't be blocked by blue creatures.${U}: Target creature becomes blue until end of turn.| Gaseous Form|Tempest|65|C|{2}{U}|Enchantment - Aura|||Enchant creature$Prevent all combat damage that would be dealt to and dealt by enchanted creature.| Giant Crab|Tempest|66|C|{4}{U}|Creature - Crab|3|3|{U}: Giant Crab gains shroud until end of turn. (It can't be the target of spells or abilities.)| -Hand to Hand|Tempest|66|R|{2}{R}|Enchantment|||During combat, players can't cast instant spells or activate abilities that aren't mana abilities.| Horned Turtle|Tempest|67|C|{2}{U}|Creature - Turtle|1|4|| Insight|Tempest|68|U|{2}{U}|Enchantment|||Whenever an opponent casts a green spell, you draw a card.| Interdict|Tempest|69|U|{1}{U}|Instant|||Counter target activated ability from an artifact, creature, enchantment, or land. That permanent's activated abilities can't be activated this turn. (Mana abilities can't be targeted.)$Draw a card.| -Coercion|Tempest|7|C|{2}{B}|Sorcery|||Target opponent reveals his or her hand. You choose a card from it. That player discards that card.| +Intuition|Tempest|70|R|{2}{U}|Instant|||Search your library for three cards and reveal them. Target opponent chooses one. Put that card into your hand and the rest into your graveyard. Then shuffle your library.| Legacy's Allure|Tempest|71|U|{U}{U}|Enchantment|||At the beginning of your upkeep, you may put a treasure counter on Legacy's Allure.$Sacrifice Legacy's Allure: Gain control of target creature with power less than or equal to the number of treasure counters on Legacy's Allure. (This effect lasts indefinitely.)| Legerdemain|Tempest|72|U|{2}{U}{U}|Sorcery|||Exchange control of target artifact or creature and another target permanent that shares one of those types with it. (This effect lasts indefinitely.)| -Dismiss|Tempest|73|U|{2}{U}{U}|Instant|||Counter target spell.$Draw a card.| Mana Severance|Tempest|73|R|{1}{U}|Sorcery|||Search your library for any number of land cards and exile them. Then shuffle your library.| Manta Riders|Tempest|74|C|{U}|Creature - Merfolk|1|1|{U}: Manta Riders gains flying until end of turn.| Mawcor|Tempest|75|R|{3}{U}|Creature - Beast|3|3|Flying$${tap}: Mawcor deals 1 damage to target creature or player.| @@ -18910,7 +18668,6 @@ Meditate|Tempest|76|R|{2}{U}|Instant|||Draw four cards. You skip your next turn. Mnemonic Sliver|Tempest|77|U|{2}{U}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: Draw a card."| Power Sink|Tempest|78|C|{X}{U}|Instant|||Counter target spell unless its controller pays {X}. If he or she doesn't, that player taps all lands with mana abilities he or she controls and empties his or her mana pool.| Precognition|Tempest|79|R|{4}{U}|Enchantment|||At the beginning of your upkeep, you may look at the top card of target opponent's library. If you do, you may put that card on the bottom of that player's library.| -Coffin Queen|Tempest|8|R|{2}{B}|Creature - Zombie Wizard|1|1|You may choose not to untap Coffin Queen during your untap step.${2}{B}, {tap}: Put target creature card from a graveyard onto the battlefield under your control. When Coffin Queen becomes untapped or you lose control of Coffin Queen, exile that creature.| Propaganda|Tempest|80|U|{2}{U}|Enchantment|||Creatures can't attack you unless their controller pays {2} for each creature he or she controls that's attacking you.| Rootwater Diver|Tempest|81|U|{U}|Creature - Merfolk|1|1|{tap}, Sacrifice Rootwater Diver: Return target artifact card from your graveyard to your hand.| Rootwater Hunter|Tempest|82|C|{2}{U}|Creature - Merfolk|1|1|{tap}: Rootwater Hunter deals 1 damage to target creature or player.| @@ -18918,11 +18675,9 @@ Rootwater Matriarch|Tempest|83|R|{2}{U}{U}|Creature - Merfolk|2|3|{tap}: Gain co Rootwater Shaman|Tempest|84|R|{2}{U}|Creature - Merfolk Shaman|2|2|You may cast Aura cards with enchant creature as though they had flash.| Sea Monster|Tempest|85|C|{4}{U}{U}|Creature - Serpent|6|6|Sea Monster can't attack unless defending player controls an Island.| Shadow Rift|Tempest|86|C|{U}|Instant|||Target creature gains shadow until end of turn. (It can block or be blocked by only creatures with shadow.)$Draw a card.| -Reap|Tempest|86|U|{1}{G}|Instant|||Return up to X target cards from your graveyard to your hand, where X is the number of black permanents target opponent controls as you cast Reap.| Shimmering Wings|Tempest|87|C|{U}|Enchantment - Aura|||Enchant creature (Target a creature as you cast this. This card enters the battlefield attached to that creature.)$Enchanted creature has flying. (It can't be blocked except by creatures with flying or reach.)${U}: Return Shimmering Wings to its owner's hand.| Skyshroud Condor|Tempest|88|U|{1}{U}|Creature - Bird|2|2|Flying$Cast Skyshroud Condor only if you've cast another spell this turn.| Spell Blast|Tempest|89|C|{X}{U}|Instant|||Counter target spell with converted mana cost X.| -Commander Greven il-Vec|Tempest|9|R|{3}{B}{B}{B}|Legendary Creature - Human Warrior|7|5|Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)$When Commander Greven il-Vec enters the battlefield, sacrifice a creature.| Steal Enchantment|Tempest|90|U|{U}{U}|Enchantment - Aura|||Enchant enchantment$You control enchanted enchantment.| Stinging Licid|Tempest|91|U|{1}{U}|Creature - Licid|1|1|{1}{U}, {tap}: Stinging Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {U} to end this effect.$Whenever enchanted creature becomes tapped, Stinging Licid deals 2 damage to that creature's controller.| Thalakos Dreamsower|Tempest|92|U|{2}{U}|Creature - Thalakos Wizard|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$You may choose not to untap Thalakos Dreamsower during your untap step.$Whenever Thalakos Dreamsower deals damage to an opponent, tap target creature. That creature doesn't untap during its controller's untap step for as long as Thalakos Dreamsower remains tapped.| @@ -18933,6 +18688,257 @@ Time Ebb|Tempest|96|C|{2}{U}|Sorcery|||Put target creature on top of its owner's Time Warp|Tempest|97|R|{3}{U}{U}|Sorcery|||Target player takes an extra turn after this one.| Tradewind Rider|Tempest|98|R|{3}{U}|Creature - Spirit|1|4|Flying${tap}, Tap two untapped creatures you control: Return target permanent to its owner's hand.| Twitch|Tempest|99|C|{2}{U}|Instant|||You may tap or untap target artifact, creature, or land.$Draw a card.| +Unstable Shapeshifter|Tempest|100|R|{3}{U}|Creature - Shapeshifter|0|1|Whenever another creature enters the battlefield, Unstable Shapeshifter becomes a copy of that creature and gains this ability.| +Volrath's Curse|Tempest|101|C|{1}{U}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block, and its activated abilities can't be activated. That creature's controller may sacrifice a permanent for that player to ignore this effect until end of turn.${1}{U}: Return Volrath's Curse to its owner's hand.| +Whim of Volrath|Tempest|102|R|{U}|Instant|||Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.)$Change the text of target permanent by replacing all instances of one color word with another or one basic land type with another until end of turn. (For example, you may change "nonred creature" to "nongreen creature" or "plainswalk" to "swampwalk.")| +Whispers of the Muse|Tempest|103|U|{U}|Instant|||Buyback {5} (You may pay an additional {5} as you cast this spell. If you do, put this card into your hand as it resolves.)$Draw a card.| +Wind Dancer|Tempest|104|U|{1}{U}|Creature - Faerie|1|1|Flying$${tap}: Target creature gains flying until end of turn.| +Wind Drake|Tempest|105|C|{2}{U}|Creature - Drake|2|2|Flying| +Winged Sliver|Tempest|106|C|{1}{U}|Creature - Sliver|1|1|All Sliver creatures have flying.| +Aluren|Tempest|107|R|{2}{G}{G}|Enchantment|||Any player may play creature cards with converted mana cost 3 or less without paying their mana cost and as though they had flash.| +Apes of Rath|Tempest|108|U|{2}{G}{G}|Creature - Ape|5|4|Whenever Apes of Rath attacks, it doesn't untap during its controller's next untap step.| +Bayou Dragonfly|Tempest|109|C|{1}{G}|Creature - Insect|1|1|Flying, swampwalk| +Broken Fall|Tempest|110|C|{2}{G}|Enchantment|||Return Broken Fall to its owner's hand: Regenerate target creature.| +Canopy Spider|Tempest|111|C|{1}{G}|Creature - Spider|1|3|Reach (This creature can block creatures with flying.)| +Charging Rhino|Tempest|112|U|{3}{G}{G}|Creature - Rhino|4|4|Charging Rhino can't be blocked by more than one creature.| +Choke|Tempest|113|U|{2}{G}|Enchantment|||Islands don't untap during their controllers' untap steps.| +Crazed Armodon|Tempest|114|R|{2}{G}{G}|Creature - Elephant|3|3|{G}: Crazed Armodon gets +3/+0 and gains trample until end of turn. Destroy Crazed Armodon at the beginning of the next end step. Activate this ability only once each turn.| +Dirtcowl Wurm|Tempest|115|R|{4}{G}|Creature - Wurm|3|4|Whenever an opponent plays a land, put a +1/+1 counter on Dirtcowl Wurm.| +Earthcraft|Tempest|116|R|{1}{G}|Enchantment|||Tap an untapped creature you control: Untap target basic land.| +Eladamri, Lord of Leaves|Tempest|117|R|{G}{G}|Legendary Creature - Elf Warrior|2|2|Other Elf creatures have forestwalk.$Other Elves have shroud. (They can't be the targets of spells or abilities.)| +Eladamri's Vineyard|Tempest|118|R|{G}|Enchantment|||At the beginning of each player's precombat main phase, add {G}{G} to that player's mana pool.| +Elven Warhounds|Tempest|119|R|{3}{G}|Creature - Hound|2|2|Whenever Elven Warhounds becomes blocked by a creature, put that creature on top of its owner's library.| +Elvish Fury|Tempest|120|C|{G}|Instant|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target creature gets +2/+2 until end of turn.| +Flailing Drake|Tempest|121|U|{3}{G}|Creature - Drake|2|3|Flying$Whenever Flailing Drake blocks or becomes blocked by a creature, that creature gets +1/+1 until end of turn.| +Frog Tongue|Tempest|122|C|{G}|Enchantment - Aura|||Enchant creature$When Frog Tongue enters the battlefield, draw a card.$Enchanted creature has reach. (It can block creatures with flying.)| +Fugitive Druid|Tempest|123|R|{3}{G}|Creature - Human Druid|3|2|Whenever Fugitive Druid becomes the target of an Aura spell, you draw a card.| +Harrow|Tempest|124|U|{2}{G}|Instant|||As an additional cost to cast Harrow, sacrifice a land.$Search your library for up to two basic land cards and put them onto the battlefield. Then shuffle your library.| +Heartwood Dryad|Tempest|125|C|{1}{G}|Creature - Dryad|2|1|Heartwood Dryad can block creatures with shadow as though Heartwood Dryad had shadow.| +Heartwood Giant|Tempest|126|R|{3}{G}{G}|Creature - Giant|4|4|{tap}, Sacrifice a Forest: Heartwood Giant deals 2 damage to target player.| +Heartwood Treefolk|Tempest|127|U|{2}{G}{G}|Creature - Treefolk|3|4|Forestwalk| +Horned Sliver|Tempest|128|U|{2}{G}|Creature - Sliver|2|2|All Sliver creatures have trample.| +Krakilin|Tempest|129|U|{X}{G}{G}|Creature - Beast|0|0|Krakilin enters the battlefield with X +1/+1 counters on it.${1}{G}: Regenerate Krakilin.| +Mirri's Guile|Tempest|130|R|{G}|Enchantment|||At the beginning of your upkeep, you may look at the top three cards of your library, then put them back in any order.| +Mongrel Pack|Tempest|131|R|{3}{G}|Creature - Hound|4|1|When Mongrel Pack dies during combat, put four 1/1 green Hound creature tokens onto the battlefield.| +Muscle Sliver|Tempest|132|C|{1}{G}|Creature - Sliver|1|1|All Sliver creatures get +1/+1.| +Natural Spring|Tempest|133|C|{3}{G}{G}|Sorcery|||Target player gains 8 life.| +Nature's Revolt|Tempest|134|R|{3}{G}{G}|Enchantment|||All lands are 2/2 creatures that are still lands.| +Needle Storm|Tempest|135|U|{2}{G}|Sorcery|||Needle Storm deals 4 damage to each creature with flying.| +Nurturing Licid|Tempest|136|U|{1}{G}|Creature - Licid|1|1|{G}, {tap}: Nurturing Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {G} to end this effect.${G}: Regenerate enchanted creature.| +Overrun|Tempest|137|U|{2}{G}{G}{G}|Sorcery|||Creatures you control get +3/+3 and gain trample until end of turn.| +Pincher Beetles|Tempest|138|C|{2}{G}|Creature - Insect|3|1|Shroud (This creature can't be the target of spells or abilities.)| +Rampant Growth|Tempest|139|C|{1}{G}|Sorcery|||Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.| +Reality Anchor|Tempest|140|C|{1}{G}|Instant|||Target creature loses shadow until end of turn.$$Draw a card.| +Reap|Tempest|141|U|{1}{G}|Instant|||Return up to X target cards from your graveyard to your hand, where X is the number of black permanents target opponent controls as you cast Reap.| +Recycle|Tempest|142|R|{4}{G}{G}|Enchantment|||Skip your draw step.$Whenever you play a card, draw a card.$Your maximum hand size is two.| +Respite|Tempest|143|C|{1}{G}|Instant|||Prevent all combat damage that would be dealt this turn. You gain 1 life for each attacking creature.| +Root Maze|Tempest|144|R|{G}|Enchantment|||Artifacts and lands enter the battlefield tapped.| +Rootbreaker Wurm|Tempest|145|C|{5}{G}{G}|Creature - Wurm|6|6|Trample (If this creature would assign enough damage to its blockers to destroy them, you may have it assign the rest of its damage to defending player or planeswalker.)| +Rootwalla|Tempest|146|C|{2}{G}|Creature - Lizard|2|2|{1}{G}: Rootwalla gets +2/+2 until end of turn. Activate this ability only once each turn.| +Scragnoth|Tempest|147|U|{4}{G}|Creature - Beast|3|4|Scragnoth can't be countered.$Protection from blue| +Seeker of Skybreak|Tempest|148|C|{1}{G}|Creature - Elf|2|1|{tap}: Untap target creature.| +Skyshroud Elf|Tempest|149|C|{1}{G}|Creature - Elf Druid|1|1|{tap}: Add {G} to your mana pool.${1}: Add {R} or {W} to your mana pool.| +Skyshroud Ranger|Tempest|150|C|{G}|Creature - Elf|1|1|{tap}: You may put a land card from your hand onto the battlefield. Activate this ability only any time you could cast a sorcery.| +Skyshroud Troll|Tempest|151|C|{2}{G}{G}|Creature - Troll Giant|3|3|{1}{G}: Regenerate Skyshroud Troll.| +Spike Drone|Tempest|152|C|{G}|Creature - Spike Drone|0|0|Spike Drone enters the battlefield with a +1/+1 counter on it.${2}, Remove a +1/+1 counter from Spike Drone: Put a +1/+1 counter on target creature.| +Storm Front|Tempest|153|U|{G}|Enchantment|||{G}{G}: Tap target creature with flying.| +Trained Armodon|Tempest|154|C|{1}{G}{G}|Creature - Elephant|3|3|| +Tranquility|Tempest|155|C|{2}{G}|Sorcery|||Destroy all enchantments.| +Trumpeting Armodon|Tempest|156|U|{3}{G}|Creature - Elephant|3|3|{1}{G}: Target creature blocks Trumpeting Armodon this turn if able.| +Verdant Force|Tempest|157|R|{5}{G}{G}{G}|Creature - Elemental|7|7|At the beginning of each upkeep, put a 1/1 green Saproling creature token onto the battlefield.| +Verdigris|Tempest|158|U|{2}{G}|Instant|||Destroy target artifact.| +Winter's Grasp|Tempest|159|U|{1}{G}{G}|Sorcery|||Destroy target land.| +Aftershock|Tempest|160|C|{2}{R}{R}|Sorcery|||Destroy target artifact, creature, or land. Aftershock deals 3 damage to you.| +Ancient Runes|Tempest|161|U|{2}{R}|Enchantment|||At the beginning of each player's upkeep, Ancient Runes deals damage to that player equal to the number of artifacts he or she controls.| +Apocalypse|Tempest|162|R|{2}{R}{R}{R}|Sorcery|||Exile all permanents. You discard your hand.| +Barbed Sliver|Tempest|163|U|{2}{R}|Creature - Sliver|2|2|All Sliver creatures have "{2}: This creature gets +1/+0 until end of turn."| +Blood Frenzy|Tempest|164|C|{1}{R}|Instant|||Cast Blood Frenzy only before the combat damage step.$Target attacking or blocking creature gets +4/+0 until end of turn. Destroy that creature at the beginning of the next end step.| +Boil|Tempest|165|U|{3}{R}|Instant|||Destroy all Islands.| +Canyon Drake|Tempest|166|R|{2}{R}{R}|Creature - Drake|1|2|Flying${1}, Discard a card at random: Canyon Drake gets +2/+0 until end of turn.| +Canyon Wildcat|Tempest|167|C|{1}{R}|Creature - Cat|2|1|Mountainwalk| +Chaotic Goo|Tempest|168|R|{2}{R}{R}|Creature - Ooze|0|0|Chaotic Goo enters the battlefield with three +1/+1 counters on it.$At the beginning of your upkeep, you may flip a coin. If you win the flip, put a +1/+1 counter on Chaotic Goo. If you lose the flip, remove a +1/+1 counter from Chaotic Goo.| +Crown of Flames|Tempest|169|C|{R}|Enchantment - Aura|||Enchant creature${R}: Enchanted creature gets +1/+0 until end of turn.${R}: Return Crown of Flames to its owner's hand.| +Deadshot|Tempest|170|R|{3}{R}|Sorcery|||Tap target creature. It deals damage equal to its power to another target creature.| +Enraging Licid|Tempest|171|U|{1}{R}|Creature - Licid|1|1|{R}, {tap}: Enraging Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {R} to end this effect.$Enchanted creature has haste.| +Firefly|Tempest|172|U|{3}{R}|Creature - Insect|1|1|Flying${R}: Firefly gets +1/+0 until end of turn.| +Fireslinger|Tempest|173|C|{1}{R}|Creature - Human Wizard|1|1|{tap}: Fireslinger deals 1 damage to target creature or player and 1 damage to you.| +Flowstone Giant|Tempest|174|C|{2}{R}{R}|Creature - Giant|3|3|{R}: Flowstone Giant gets +2/-2 until end of turn.| +Flowstone Salamander|Tempest|175|U|{3}{R}{R}|Creature - Salamander|3|4|{R}: Flowstone Salamander deals 1 damage to target creature blocking it.| +Flowstone Wyvern|Tempest|176|R|{3}{R}{R}|Creature - Drake|3|3|Flying${R}: Flowstone Wyvern gets +2/-2 until end of turn.| +Furnace of Rath|Tempest|177|R|{1}{R}{R}{R}|Enchantment|||If a source would deal damage to a creature or player, it deals double that damage to that creature or player instead.| +Giant Strength|Tempest|178|C|{R}{R}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2.| +Goblin Bombardment|Tempest|179|U|{1}{R}|Enchantment|||Sacrifice a creature: Goblin Bombardment deals 1 damage to target creature or player.| +Hand to Hand|Tempest|180|R|{2}{R}|Enchantment|||During combat, players can't cast instant spells or activate abilities that aren't mana abilities.| +Havoc|Tempest|181|U|{1}{R}|Enchantment|||Whenever an opponent casts a white spell, he or she loses 2 life.| +Heart Sliver|Tempest|182|C|{1}{R}|Creature - Sliver|1|1|All Sliver creatures have haste.| +Jackal Pup|Tempest|183|U|{R}|Creature - Hound|2|1|Whenever Jackal Pup is dealt damage, it deals that much damage to you.| +Kindle|Tempest|184|C|{1}{R}|Instant|||Kindle deals X damage to target creature or player, where X is 2 plus the number of cards named Kindle in all graveyards.| +Lightning Blast|Tempest|185|C|{3}{R}|Instant|||Lightning Blast deals 4 damage to target creature or player.| +Lightning Elemental|Tempest|186|C|{3}{R}|Creature - Elemental|4|1|Haste (This creature can attack and {tap} as soon as it comes under your control.)| +Lowland Giant|Tempest|187|C|{2}{R}{R}|Creature - Giant|4|3|| +Magmasaur|Tempest|188|R|{3}{R}{R}|Creature - Elemental Lizard|0|0|Magmasaur enters the battlefield with five +1/+1 counters on it.$At the beginning of your upkeep, you may remove a +1/+1 counter from Magmasaur. If you don't, sacrifice Magmasaur and it deals damage equal to the number of +1/+1 counters on it to each creature without flying and each player.| +Mogg Conscripts|Tempest|189|C|{R}|Creature - Goblin|2|2|Mogg Conscripts can't attack unless you've cast a creature spell this turn.| +Mogg Fanatic|Tempest|190|C|{R}|Creature - Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.| +Mogg Raider|Tempest|191|C|{R}|Creature - Goblin|1|1|Sacrifice a Goblin: Target creature gets +1/+1 until end of turn.| +Mogg Squad|Tempest|192|U|{1}{R}|Creature - Goblin|3|3|Mogg Squad gets -1/-1 for each other creature on the battlefield.| +No Quarter|Tempest|193|R|{3}{R}|Enchantment|||Whenever a creature becomes blocked by a creature with lesser power, destroy the blocking creature.$$Whenever a creature blocks a creature with lesser power, destroy the attacking creature.| +Opportunist|Tempest|194|U|{2}{R}|Creature - Human Soldier|2|2|{tap}: Opportunist deals 1 damage to target creature that was dealt damage this turn.| +Pallimud|Tempest|195|R|{2}{R}|Creature - Beast|*|3|As Pallimud enters the battlefield, choose an opponent.$Pallimud's power is equal to the number of tapped lands the chosen player controls.| +Rathi Dragon|Tempest|196|R|{2}{R}{R}|Creature - Dragon|5|5|Flying (This creature can't be blocked except by creatures with flying or reach.)$When Rathi Dragon enters the battlefield, sacrifice it unless you sacrifice two Mountains.| +Renegade Warlord|Tempest|197|U|{4}{R}|Creature - Human Soldier|3|3|First strike$Whenever Renegade Warlord attacks, each other attacking creature gets +1/+0 until end of turn.| +Rolling Thunder|Tempest|198|C|{X}{R}{R}|Sorcery|||Rolling Thunder deals X damage divided as you choose among any number of target creatures and/or players.| +Sandstone Warrior|Tempest|199|C|{2}{R}{R}|Creature - Human Soldier Warrior|1|3|First strike (This creature deals combat damage before creatures without first strike.)${R}: Sandstone Warrior gets +1/+0 until end of turn.| +Scorched Earth|Tempest|200|R|{X}{R}|Sorcery|||As an additional cost to cast Scorched Earth, discard X land cards.$Destroy X target lands.| +Searing Touch|Tempest|201|U|{R}|Instant|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Searing Touch deals 1 damage to target creature or player.| +Shadowstorm|Tempest|202|U|{R}|Sorcery|||Shadowstorm deals 2 damage to each creature with shadow.| +Shatter|Tempest|203|C|{1}{R}|Instant|||Destroy target artifact.| +Shocker|Tempest|204|R|{1}{R}|Creature - Insect|1|1|Whenever Shocker deals damage to a player, that player discards all the cards in his or her hand, then draws that many cards.| +Starke of Rath|Tempest|205|R|{1}{R}{R}|Legendary Creature - Human Rogue|2|2|{tap}: Destroy target artifact or creature. That permanent's controller gains control of Starke of Rath. (This effect lasts indefinitely.)| +Stone Rain|Tempest|206|C|{2}{R}|Sorcery|||Destroy target land.| +Stun|Tempest|207|C|{1}{R}|Instant|||Target creature can't block this turn.$Draw a card.| +Sudden Impact|Tempest|208|U|{3}{R}|Instant|||Sudden Impact deals damage to target player equal to the number of cards in that player's hand.| +Tahngarth's Rage|Tempest|209|U|{R}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +3/+0 as long as it's attacking. Otherwise, it gets -2/-1.| +Tooth and Claw|Tempest|210|R|{3}{R}|Enchantment|||Sacrifice two creatures: Put a 3/1 red Beast creature token named Carnivore onto the battlefield.| +Wall of Diffusion|Tempest|211|C|{1}{R}|Creature - Wall|0|5|Defender (This creature can't attack.)$Wall of Diffusion can block creatures with shadow as though Wall of Diffusion had shadow.| +Wild Wurm|Tempest|212|U|{3}{R}|Creature - Wurm|5|4|When Wild Wurm enters the battlefield, flip a coin. If you lose the flip, return Wild Wurm to its owner's hand.| +Advance Scout|Tempest|213|C|{1}{W}|Creature - Human Soldier Scout|1|1|First strike${W}: Target creature gains first strike until end of turn.| +Angelic Protector|Tempest|214|U|{3}{W}|Creature - Angel|2|2|Flying$Whenever Angelic Protector becomes the target of a spell or ability, Angelic Protector gets +0/+3 until end of turn.| +Anoint|Tempest|215|C|{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Prevent the next 3 damage that would be dealt to target creature this turn.| +Armor Sliver|Tempest|216|U|{2}{W}|Creature - Sliver|2|2|All Sliver creatures have "{2}: This creature gets +0/+1 until end of turn."| +Armored Pegasus|Tempest|217|C|{1}{W}|Creature - Pegasus|1|2|Flying| +Auratog|Tempest|218|R|{1}{W}|Creature - Atog|1|2|Sacrifice an enchantment: Auratog gets +2/+2 until end of turn.| +Avenging Angel|Tempest|219|R|{3}{W}{W}|Creature - Angel|3|3|Flying$When Avenging Angel dies, you may put it on top of its owner's library.| +Circle of Protection: Black|Tempest|220|C|{1}{W}|Enchantment|||{1}: The next time a black source of your choice would deal damage to you this turn, prevent that damage.| +Circle of Protection: Blue|Tempest|221|C|{1}{W}|Enchantment|||{1}: The next time a blue source of your choice would deal damage to you this turn, prevent that damage.| +Circle of Protection: Green|Tempest|222|C|{1}{W}|Enchantment|||{1}: The next time a green source of your choice would deal damage to you this turn, prevent that damage.| +Circle of Protection: Red|Tempest|223|C|{1}{W}|Enchantment|||{1}: The next time a red source of your choice would deal damage to you this turn, prevent that damage.| +Circle of Protection: Shadow|Tempest|224|C|{1}{W}|Enchantment|||{1}: The next time a creature of your choice with shadow would deal damage to you this turn, prevent that damage.| +Circle of Protection: White|Tempest|225|C|{1}{W}|Enchantment|||{1}: The next time a white source of your choice would deal damage to you this turn, prevent that damage.| +Clergy en-Vec|Tempest|226|C|{1}{W}|Creature - Human Cleric|1|1|{tap}: Prevent the next 1 damage that would be dealt to target creature or player this turn.| +Cloudchaser Eagle|Tempest|227|C|{3}{W}|Creature - Bird|2|2|Flying$When Cloudchaser Eagle enters the battlefield, destroy target enchantment.| +Disenchant|Tempest|228|C|{1}{W}|Instant|||Destroy target artifact or enchantment.| +Elite Javelineer|Tempest|229|C|{2}{W}|Creature - Human Soldier|2|2|Whenever Elite Javelineer blocks, it deals 1 damage to target attacking creature.| +Field of Souls|Tempest|230|R|{2}{W}{W}|Enchantment|||Whenever a nontoken creature is put into your graveyard from the battlefield, put a 1/1 white Spirit creature token with flying onto the battlefield.| +Flickering Ward|Tempest|231|U|{W}|Enchantment - Aura|||Enchant creature$As Flickering Ward enters the battlefield, choose a color.$Enchanted creature has protection from the chosen color. This effect doesn't remove Flickering Ward.${W}: Return Flickering Ward to its owner's hand.| +Gallantry|Tempest|232|U|{1}{W}|Instant|||Target blocking creature gets +4/+4 until end of turn.$$Draw a card.| +Gerrard's Battle Cry|Tempest|233|R|{W}|Enchantment|||{2}{W}: Creatures you control get +1/+1 until end of turn.| +Hanna's Custody|Tempest|234|R|{2}{W}|Enchantment|||All artifacts have shroud. (They can't be the targets of spells or abilities.)| +Hero's Resolve|Tempest|235|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +1/+5.| +Humility|Tempest|236|R|{2}{W}{W}|Enchantment|||All creatures lose all abilities and are 1/1.| +Invulnerability|Tempest|237|U|{1}{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$The next time a source of your choice would deal damage to you this turn, prevent that damage.| +Knight of Dawn|Tempest|238|U|{1}{W}{W}|Creature - Human Knight|2|2|First strike${W}{W}: Knight of Dawn gains protection from the color of your choice until end of turn.| +Light of Day|Tempest|239|U|{3}{W}|Enchantment|||Black creatures can't attack or block.| +Marble Titan|Tempest|240|R|{3}{W}|Creature - Giant|3|3|Creatures with power 3 or greater don't untap during their controllers' untap steps.| +Master Decoy|Tempest|241|C|{1}{W}|Creature - Human Soldier|1|2|{W}, {tap}: Tap target creature.| +Mounted Archers|Tempest|242|C|{3}{W}|Creature - Human Soldier Archer|2|3|Reach (This creature can block creatures with flying.)${W}: Mounted Archers can block an additional creature this turn.| +Oracle en-Vec|Tempest|243|R|{1}{W}|Creature - Human Wizard|1|1|{tap}: Target opponent chooses any number of creatures he or she controls. During that player's next turn, the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack. Activate this ability only during your turn.| +Orim, Samite Healer|Tempest|244|R|{1}{W}{W}|Legendary Creature - Human Cleric|1|3|{tap}: Prevent the next 3 damage that would be dealt to target creature or player this turn.| +Orim's Prayer|Tempest|245|U|{1}{W}{W}|Enchantment|||Whenever one or more creatures attack you, you gain 1 life for each attacking creature.| +Pacifism|Tempest|246|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block.| +Pegasus Refuge|Tempest|247|R|{3}{W}|Enchantment|||{2}, Discard a card: Put a 1/1 white Pegasus creature token with flying onto the battlefield.| +Quickening Licid|Tempest|248|U|{1}{W}|Creature - Licid|1|1|{1}{W}, {tap}: Quickening Licid loses this ability and becomes an Aura enchantment with enchant creature. Attach it to target creature. You may pay {W} to end this effect.$Enchanted creature has first strike.| +Repentance|Tempest|249|U|{2}{W}|Sorcery|||Target creature deals damage to itself equal to its power.| +Sacred Guide|Tempest|250|R|{W}|Creature - Human Cleric|1|1|{1}{W}, Sacrifice Sacred Guide: Reveal cards from the top of your library until you reveal a white card. Put that card into your hand and exile all other cards revealed this way.| +Safeguard|Tempest|251|R|{3}{W}{W}|Enchantment|||{2}{W}: Prevent all combat damage that would be dealt by target creature this turn.| +Serene Offering|Tempest|252|U|{1}{W}|Instant|||Destroy target enchantment. You gain life equal to its converted mana cost.| +Soltari Crusader|Tempest|253|U|{2}{W}|Creature - Soltari Knight|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)${1}{W}: Soltari Crusader gets +1/+0 until end of turn.| +Soltari Emissary|Tempest|254|R|{1}{W}|Creature - Soltari Soldier|2|1|{W}: Soltari Emissary gains shadow until end of turn. (This creature can block or be blocked by only creatures with shadow.)| +Soltari Foot Soldier|Tempest|255|C|{W}|Creature - Soltari Soldier|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)| +Soltari Lancer|Tempest|256|C|{2}{W}|Creature - Soltari Knight|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Soltari Lancer has first strike as long as it's attacking.| +Soltari Monk|Tempest|257|U|{W}{W}|Creature - Soltari Monk Cleric|2|1|Protection from black$Shadow (This creature can block or be blocked by only creatures with shadow.)| +Soltari Priest|Tempest|258|U|{W}{W}|Creature - Soltari Cleric|2|1|Protection from red$Shadow (This creature can block or be blocked by only creatures with shadow.)| +Soltari Trooper|Tempest|259|C|{1}{W}|Creature - Soltari Soldier|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Soltari Trooper attacks, it gets +1/+1 until end of turn.| +Spirit Mirror|Tempest|260|R|{2}{W}{W}|Enchantment|||At the beginning of your upkeep, if there are no Reflection tokens on the battlefield, put a 2/2 white Reflection creature token onto the battlefield.${0}: Destroy target Reflection.| +Staunch Defenders|Tempest|261|U|{3}{W}{W}|Creature - Human Soldier|3|4|When Staunch Defenders enters the battlefield, you gain 4 life.| +Talon Sliver|Tempest|262|C|{1}{W}|Creature - Sliver|1|1|All Sliver creatures have first strike.| +Warmth|Tempest|263|U|{1}{W}|Enchantment|||Whenever an opponent casts a red spell, you gain 2 life.| +Winds of Rath|Tempest|264|R|{3}{W}{W}|Sorcery|||Destroy all creatures that aren't enchanted. They can't be regenerated.| +Worthy Cause|Tempest|265|U|{W}|Instant|||Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.)$As an additional cost to cast Worthy Cause, sacrifice a creature.$You gain life equal to the sacrificed creature's toughness.| +Altar of Dementia|Tempest|266|R|{2}|Artifact|||Sacrifice a creature: Target player puts a number of cards equal to the sacrificed creature's power from the top of his or her library into his or her graveyard.| +Booby Trap|Tempest|267|R|{6}|Artifact|||As Booby Trap enters the battlefield, name a card other than a basic land card and choose an opponent.$The chosen player reveals each card he or she draws.$When the chosen player draws the named card, sacrifice Booby Trap. If you do, Booby Trap deals 10 damage to that player.| +Bottle Gnomes|Tempest|268|U|{3}|Artifact Creature - Gnome|1|3|Sacrifice Bottle Gnomes: You gain 3 life.| +Coiled Tinviper|Tempest|269|C|{3}|Artifact Creature - Snake|2|1|First strike| +Cold Storage|Tempest|270|R|{4}|Artifact|||{3}: Exile target creature you control.$Sacrifice Cold Storage: Return each creature card exiled with Cold Storage to the battlefield under your control.| +Cursed Scroll|Tempest|271|R|{1}|Artifact|||{3}, {tap}: Name a card. Reveal a card at random from your hand. If it's the named card, Cursed Scroll deals 2 damage to target creature or player.| +Echo Chamber|Tempest|272|R|{4}|Artifact|||{4}, {tap}: An opponent chooses target creature he or she controls. Put a token that's a copy of that creature onto the battlefield. That token gains haste until end of turn. Exile the token at the beginning of the next end step. Activate this ability only any time you could cast a sorcery.| +Emerald Medallion|Tempest|273|R|{2}|Artifact|||Green spells you cast cost {1} less to cast.| +Emmessi Tome|Tempest|274|R|{4}|Artifact|||{5}, {tap}: Draw two cards, then discard a card.| +Energizer|Tempest|275|R|{4}|Artifact Creature - Juggernaut|2|2|{2}, {tap}: Put a +1/+1 counter on Energizer.| +Essence Bottle|Tempest|276|U|{2}|Artifact|||{3}, {tap}: Put an elixir counter on Essence Bottle.${tap}, Remove all elixir counters from Essence Bottle: You gain 2 life for each elixir counter removed this way.| +Excavator|Tempest|277|U|{2}|Artifact|||{tap}, Sacrifice a basic land: Target creature gains landwalk of each of the land types of the sacrificed land until end of turn.| +Flowstone Sculpture|Tempest|278|R|{6}|Artifact Creature - Shapeshifter|4|4|{2}, Discard a card: Put a +1/+1 counter on Flowstone Sculpture or Flowstone Sculpture gains flying, first strike, or trample. (This effect lasts indefinitely.)| +Fool's Tome|Tempest|279|R|{4}|Artifact|||{2}, {tap}: Draw a card. Activate this ability only if you have no cards in hand.| +Grindstone|Tempest|280|R|{1}|Artifact|||{3}, {tap}: Target player puts the top two cards of his or her library into his or her graveyard. If both cards share a color, repeat this process.| +Helm of Possession|Tempest|281|R|{4}|Artifact|||You may choose not to untap Helm of Possession during your untap step.${2}, {tap}, Sacrifice a creature: Gain control of target creature for as long as you control Helm of Possession and Helm of Possession remains tapped.| +Jet Medallion|Tempest|282|R|{2}|Artifact|||Black spells you cast cost {1} less to cast.| +Jinxed Idol|Tempest|283|R|{2}|Artifact|||At the beginning of your upkeep, Jinxed Idol deals 2 damage to you.$Sacrifice a creature: Target opponent gains control of Jinxed Idol.| +Lotus Petal|Tempest|284|C|{0}|Artifact|||{tap}, Sacrifice Lotus Petal: Add one mana of any color to your mana pool.| +Magnetic Web|Tempest|285|R|{2}|Artifact|||If a creature with a magnet counter on it attacks, all creatures with magnet counters on them attack if able.$Whenever a creature with a magnet counter on it attacks, all creatures with magnet counters on them block that creature this turn if able.${1}, {tap}: Put a magnet counter on target creature.| +Manakin|Tempest|286|C|{2}|Artifact Creature - Construct|1|1|{tap}: Add {1} to your mana pool.| +Metallic Sliver|Tempest|287|C|{1}|Artifact Creature - Sliver|1|1|| +Mogg Cannon|Tempest|288|U|{2}|Artifact|||{tap}: Target creature you control gets +1/+0 and gains flying until end of turn. Destroy that creature at the beginning of the next end step.| +Patchwork Gnomes|Tempest|289|U|{3}|Artifact Creature - Gnome|2|1|Discard a card: Regenerate Patchwork Gnomes.| +Pearl Medallion|Tempest|290|R|{2}|Artifact|||White spells you cast cost {1} less to cast.| +Phyrexian Grimoire|Tempest|291|R|{3}|Artifact|||{4}, {tap}: Target opponent chooses one of the top two cards of your graveyard. Exile that card and put the other one into your hand.| +Phyrexian Hulk|Tempest|292|U|{6}|Artifact Creature - Golem|5|4|| +Phyrexian Splicer|Tempest|293|U|{2}|Artifact|||{2}, {tap}: Choose flying, first strike, trample, or shadow: Until end of turn, target creature with the chosen ability loses it and another target creature gains it.| +Puppet Strings|Tempest|294|U|{3}|Artifact|||{2}, {tap}: You may tap or untap target creature.| +Ruby Medallion|Tempest|295|R|{2}|Artifact|||Red spells you cast cost {1} less to cast.| +Sapphire Medallion|Tempest|296|R|{2}|Artifact|||Blue spells you cast cost {1} less to cast.| +Scalding Tongs|Tempest|297|R|{2}|Artifact|||At the beginning of your upkeep, if you have three or fewer cards in hand, Scalding Tongs deals 1 damage to target opponent.| +Scroll Rack|Tempest|298|R|{2}|Artifact|||{1}, {tap}: Exile any number of cards from your hand face down. Put that many cards from the top of your library into your hand. Then look at the exiled cards and put them on top of your library in any order.| +Squee's Toy|Tempest|299|C|{1}|Artifact|||{tap}: Prevent the next 1 damage that would be dealt to target creature this turn.| +Static Orb|Tempest|300|R|{3}|Artifact|||As long as Static Orb is untapped, players can't untap more than two permanents during their untap steps.| +Telethopter|Tempest|301|U|{4}|Artifact Creature - Thopter|3|1|Tap an untapped creature you control: Telethopter gains flying until end of turn.| +Thumbscrews|Tempest|302|R|{2}|Artifact|||At the beginning of your upkeep, if you have five or more cards in hand, Thumbscrews deals 1 damage to target opponent.| +Torture Chamber|Tempest|303|R|{3}|Artifact|||At the beginning of your upkeep, put a pain counter on Torture Chamber.$At the beginning of your end step, Torture Chamber deals damage to you equal to the number of pain counters on it.${1}, {tap}, Remove all pain counters from Torture Chamber: Torture Chamber deals damage to target creature equal to the number of pain counters removed this way.| +Watchdog|Tempest|304|U|{3}|Artifact Creature - Hound|1|2|Watchdog blocks each turn if able.$As long as Watchdog is untapped, all creatures attacking you get -1/-0.| +Ancient Tomb|Tempest|305|U||Land|||{tap}: Add {2} to your mana pool. Ancient Tomb deals 2 damage to you.| +Caldera Lake|Tempest|306|R||Land|||Caldera Lake enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {U} or {R} to your mana pool. Caldera Lake deals 1 damage to you.| +Cinder Marsh|Tempest|307|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {B} or {R} to your mana pool. Cinder Marsh doesn't untap during your next untap step.| +Forest|Tempest|308|L||Basic Land - Forest|||G| +Forest|Tempest|309|L||Basic Land - Forest|||G| +Forest|Tempest|310|L||Basic Land - Forest|||G| +Forest|Tempest|311|L||Basic Land - Forest|||G| +Ghost Town|Tempest|312|U||Land|||{tap}: Add {1} to your mana pool.${0}: Return Ghost Town to its owner's hand. Activate this ability only if it's not your turn.| +Island|Tempest|313|L||Basic Land - Island|||U| +Island|Tempest|314|L||Basic Land - Island|||U| +Island|Tempest|315|L||Basic Land - Island|||U| +Island|Tempest|316|L||Basic Land - Island|||U| +Maze of Shadows|Tempest|317|U||Land|||{tap}: Add {1} to your mana pool.$${tap}: Untap target attacking creature with shadow. Prevent all combat damage that would be dealt to and dealt by that creature this turn.| +Mogg Hollows|Tempest|318|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {R} or {G} to your mana pool. Mogg Hollows doesn't untap during your next untap step.| +Mountain|Tempest|319|L||Basic Land - Mountain|||R| +Mountain|Tempest|320|L||Basic Land - Mountain|||R| +Mountain|Tempest|321|L||Basic Land - Mountain|||R| +Mountain|Tempest|322|L||Basic Land - Mountain|||R| +Pine Barrens|Tempest|323|R||Land|||Pine Barrens enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {B} or {G} to your mana pool. Pine Barrens deals 1 damage to you.| +Plains|Tempest|324|L||Basic Land - Plains|||W| +Plains|Tempest|325|L||Basic Land - Plains|||W| +Plains|Tempest|326|L||Basic Land - Plains|||W| +Plains|Tempest|327|L||Basic Land - Plains|||W| +Reflecting Pool|Tempest|328|R||Land|||{tap}: Add to your mana pool one mana of any type that a land you control could produce.| +Rootwater Depths|Tempest|329|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {U} or {B} to your mana pool. Rootwater Depths doesn't untap during your next untap step.| +Salt Flats|Tempest|330|R||Land|||Salt Flats enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {W} or {B} to your mana pool. Salt Flats deals 1 damage to you.| +Scabland|Tempest|331|R||Land|||Scabland enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {R} or {W} to your mana pool. Scabland deals 1 damage to you.| +Skyshroud Forest|Tempest|332|R||Land|||Skyshroud Forest enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {G} or {U} to your mana pool. Skyshroud Forest deals 1 damage to you.| +Stalking Stones|Tempest|333|U||Land|||{tap}: Add {1} to your mana pool.${6}: Stalking Stones becomes a 3/3 Elemental artifact creature that's still a land. (This effect lasts indefinitely.)| +Swamp|Tempest|334|L||Basic Land - Swamp|||B| +Swamp|Tempest|335|L||Basic Land - Swamp|||B| +Swamp|Tempest|336|L||Basic Land - Swamp|||B| +Swamp|Tempest|337|L||Basic Land - Swamp|||B| +Thalakos Lowlands|Tempest|338|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {W} or {U} to your mana pool. Thalakos Lowlands doesn't untap during your next untap step.| +Vec Townships|Tempest|339|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {G} or {W} to your mana pool. Vec Townships doesn't untap during your next untap step.| +Wasteland|Tempest|340|U||Land|||{tap}: Add {1} to your mana pool.$${tap}, Sacrifice Wasteland: Destroy target nonbasic land.| +Dracoplasm|Tempest|341|R|{U}{R}|Creature - Shapeshifter|0|0|Flying$As Dracoplasm enters the battlefield, sacrifice any number of creatures. Dracoplasm's power becomes the total power of those creatures and its toughness becomes their total toughness.${R}: Dracoplasm gets +1/+0 until end of turn.| +Lobotomy|Tempest|342|U|{2}{U}{B}|Sorcery|||Target player reveals his or her hand, then you choose a card other than a basic land card from it. Search that player's graveyard, hand, and library for all cards with the same name as the chosen card and exile them. Then that player shuffles his or her library.| +Ranger en-Vec|Tempest|343|U|{1}{G}{W}|Creature - Human Soldier Archer|2|2|First strike${G}: Regenerate Ranger en-Vec.| +Segmented Wurm|Tempest|344|U|{3}{R}{G}|Creature - Wurm|5|5|Whenever Segmented Wurm becomes the target of a spell or ability, put a -1/-1 counter on it.| +Selenia, Dark Angel|Tempest|345|R|{3}{W}{B}|Legendary Creature - Angel|3|3|Flying$Pay 2 life: Return Selenia, Dark Angel to its owner's hand.| +Sky Spirit|Tempest|346|U|{1}{W}{U}|Creature - Spirit|2|2|Flying, first strike| +Soltari Guerrillas|Tempest|347|R|{2}{R}{W}|Creature - Soltari Soldier|3|2|Shadow (This creature can block or be blocked by only creatures with shadow.)${0}: The next time Soltari Guerrillas would deal combat damage to an opponent this turn, it deals that damage to target creature instead.| +Spontaneous Combustion|Tempest|348|U|{1}{B}{R}|Instant|||As an additional cost to cast Spontaneous Combustion, sacrifice a creature.$Spontaneous Combustion deals 3 damage to each creature.| +Vhati il-Dal|Tempest|349|R|{2}{B}{G}|Legendary Creature - Human Warrior|3|3|{tap}: Until end of turn, target creature has base power 1 or base toughness 1.| +Wood Sage|Tempest|350|R|{G}{U}|Creature - Human Druid|1|1|{tap}: Name a creature card. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard.| Ancestor's Chosen|Tenth Edition|1|U|{5}{W}{W}|Creature - Human Cleric|4|4|First strike (This creature deals combat damage before creatures without first strike.)$When Ancestor's Chosen enters the battlefield, you gain 1 life for each card in your graveyard.| Beacon of Immortality|Tenth Edition|10|R|{5}{W}|Instant|||Double target player's life total. Shuffle Beacon of Immortality into its owner's library.| Remove Soul|Tenth Edition|100|C|{1}{U}|Instant|||Counter target creature spell.| @@ -19742,7 +19748,7 @@ Sol'kanar the Swamp King|Time Spiral "Timeshifted"|100|Special|{2}{U}{B}{R}|Lege Spined Sliver|Time Spiral "Timeshifted"|101|Special|{R}{G}|Creature - Sliver|2|2|Whenever a Sliver becomes blocked, that Sliver gets +1/+1 until end of turn for each creature blocking it.| Stormbind|Time Spiral "Timeshifted"|102|Special|{1}{R}{G}|Enchantment|||{2}, Discard a card at random: Stormbind deals 2 damage to target creature or player.| Teferi's Moat|Time Spiral "Timeshifted"|103|Special|{3}{W}{U}|Enchantment|||As Teferi's Moat enters the battlefield, choose a color.$Creatures of the chosen color without flying can't attack you.| -Vhati il-Dal|Time Spiral "Timeshifted"|104|Special|{2}{B}{G}|Legendary Creature - Human Warrior|3|3|{tap}: Target creature's power or toughness becomes 1 until end of turn.| +Vhati il-Dal|Time Spiral "Timeshifted"|104|Special|{2}{B}{G}|Legendary Creature - Human Warrior|3|3|{tap}: Until end of turn, target creature has base power 1 or base toughness 1.| Void|Time Spiral "Timeshifted"|105|Special|{3}{B}{R}|Sorcery|||Choose a number. Destroy all artifacts and creatures with converted mana cost equal to that number. Then target player reveals his or her hand and discards all nonland cards with converted mana cost equal to the number.| Assault|Time Spiral "Timeshifted"|106a|Special|{R}|Sorcery|||Assault deals 2 damage to target creature or player.$| Battery|Time Spiral "Timeshifted"|106b|Special|{3}{G}|Sorcery|||$Put a 3/3 green Elephant creature token onto the battlefield.| @@ -21285,6 +21291,7 @@ Dwarven Thaumaturgist|Weatherlight|98|R|{2}{R}|Creature - Dwarf Shaman|1|2|{tap} Fervor|Weatherlight|99|R|{2}{R}|Enchantment|||Creatures you control have haste. (They can attack and {tap} as soon as they come under your control.)| Vengevine|World Magic Cup Qualifier|1|M|{2}{G}{G}|Creature - Elemental|4|3|Haste$Whenever you cast a spell, if it's the second creature spell you cast this turn, you may return Vengevine from your graveyard to the battlefield.| Geist of Saint Traft|World Magic Cup Qualifier|2|M|{1}{W}{U{|Legendary Creature - Spirit Cleric|2|2|Hexproof (This creature can't be the target of spells or abilities your opponents control.)$Whenever Geist of Saint Traft attacks, put a 4/4 white Angel creature token with flying onto the battlefield tapped and attacking. Exile that token at end of combat.| +Thalia, Guardian of Thraben|World Magic Cup Qualifier|3|R|{1}{W}|Legendary Creature - Human Soldier|2|1|First strike$Noncreature spells cost {1} more to cast.| Admonition Angel|Worldwake|1|M|{3}{W}{W}{W}|Creature - Angel|6|6|Flying$Landfall - Whenever a land enters the battlefield under your control, you may exile target nonland permanent other than Admonition Angel.$When Admonition Angel leaves the battlefield, return all cards exiled with it to the battlefield under their owners' control.| Kitesail Apprentice|Worldwake|10|C|{W}|Creature - Kor Soldier|1|1|As long as Kitesail Apprentice is equipped, it gets +1/+1 and has flying.| Feral Contest|Worldwake|100|C|{3}{G}|Sorcery|||Put a +1/+1 counter on target creature you control. Another target creature blocks it this turn if able.| @@ -25512,6 +25519,8 @@ Liliana Vess|Media Inserts|101|Special|{3}{B}{B}|Planeswalker - Liliana||5|+1: T Chandra, Pyromaster|Media Inserts|102|Special|{2}{R}{R}|Planeswalker - Chandra||4|+1: Chandra, Pyromaster deals 1 damage to target player and 1 damage to up to one target creature that player controls. That creature can't block this turn.$0: Exile the top card of your library. You may play it this turn.$-7: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs.| Nissa, Worldwaker|Media Inserts|103|Special|{3}{G}{G}|Planeswalker - Nissa||3|+1: Target land you control becomes a 4/4 Elemental creature with trample. It's still a land.$+1: Untap up to four target Forests.$-7: Search your library for any number of basic land cards, put them onto the battlefield, then shuffle your library. Those lands become 4/4 Elemental creatures with trample. They're still lands.| Garruk, Apex Predator|Media Inserts|104|Special|{5}{B}{G}|Planeswalker - Garruk||5|+1: Destroy another target planeswalker.$+1: Put a 3/3 black Beast creature token with deathtouch onto the battlefield.$-3: Destroy target creature. You gain life equal to its toughness.$-8: Target opponent gets an emblem with "Whenever a creature attacks you, it gets +5/+5 and gains trample until end of turn."| +Shamanic Revelation|Media Inserts|105|Special|{2}{G}{G}|Sorcery|||Draw a card for each creature you control.$Ferocious - You gain 4 life for each creature you control with power 4 or greater.| +Ojutai's Command|Media Inserts|106|Special|{2}{W}{U}|Instant|||Choose two - Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield; or You gain 4 life; or Counter target creature spell; or Draw a card.| Sultai|Media Inserts|999|Special|{{U}{B}{G}|Legendary Creature - Placeholder|2|2|| Wood Elves|WPN Gateway|1|Special|{2}{G}|Creature — Elf Scout|1|1|When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.| Icatian Javelineers|WPN Gateway|2|Special|{W}|Creature — Human Soldier|1|1|Icatian Javelineers enters the battlefield with a javelin counter on it.${T}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to target creature or player.| @@ -26302,4 +26311,274 @@ Day of Judgment|Magic Player Rewards|49|Special|{2}{W}{W}|Sorcery|||Destroy all Brave the Elements|Magic Player Rewards|50|Special|{W}|Instant|||Choose a color. White creatures you control gain protection from the chosen color until end of turn.| Doom Blade|Magic Player Rewards|51|Special|{1}{B}|Instant|||Destroy target nonblack creature.| Treasure Hunt|Magic Player Rewards|52|Special|{1}{U}|Sorcery|||Reveal cards from the top of your library until you reveal a nonland card, then put all cards revealed this way into your hand.| -Searing Blaze|Magic Player Rewards|53|Special|{R}{R}|Instant|||Searing Blaze deals 1 damage to target player and 1 damage to target creature that player controls.$Landfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player and 3 damage to that creature instead.| \ No newline at end of file +Searing Blaze|Magic Player Rewards|53|Special|{R}{R}|Instant|||Searing Blaze deals 1 damage to target player and 1 damage to target creature that player controls.$Landfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player and 3 damage to that creature instead.| + +Angelic Blessing|Tempest Remastered|1|C|{2}{W}|Sorcery|||Target creature gets +3/+3 and gains flying until end of turn.| +Angelic Protector|Tempest Remastered|2|U|{3}{W}|Creature - Angel|2|2|Flying$Whenever Angelic Protector becomes the target of a spell or ability, Angelic Protector gets +0/+3 until end of turn.| +Anoint|Tempest Remastered|3|C|{W}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Prevent the next 3 damage that would be dealt to target creature this turn.| +Armor Sliver|Tempest Remastered|4|C|{2}{W}|Creature - Sliver|2|2|All Sliver creatures have "{2}: This creature gets +0/+1 until end of turn."| +Armored Pegasus|Tempest Remastered|5|C|{1}{W}|Creature - Pegasus|1|2|Flying| +Avenging Angel|Tempest Remastered|6|U|{3}{W}{W}|Creature - Angel|3|3|Flying$When Avenging Angel dies, you may put it on top of its owner's library.| +Bandage|Tempest Remastered|7|C|{W}|Instant|||Prevent the next 1 damage that would be dealt to target creature or player this turn.$Draw a card.| +Cataclysm|Tempest Remastered|8|M|{2}{W}{W}|Sorcery|||Each player chooses from among the permanents he or she controls an artifact, a creature, an enchantment, and a land, then sacrifices the rest.| +Charging Paladin|Tempest Remastered|9|C|{2}{W}|Creature - Human Knight|2|2|Whenever Charging Paladin attacks, it gets +0/+3 until end of turn.| +Conviction|Tempest Remastered|10|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +1/+3.${W}: Return Conviction to its owner's hand.| +Disenchant|Tempest Remastered|11|C|{1}{W}|Instant|||Destroy target artifact or enchantment.| +Exalted Dragon|Tempest Remastered|12|R|{4}{W}{W}|Creature - Dragon|5|5|Flying$Exalted Dragon can't attack unless you sacrifice a land.| +Field of Souls|Tempest Remastered|13|R|{2}{W}{W}|Enchantment|||Whenever a nontoken creature is put into your graveyard from the battlefield, put a 1/1 white Spirit creature token with flying onto the battlefield.| +Gallantry|Tempest Remastered|14|U|{1}{W}|Instant|||Target blocking creature gets +4/+4 until end of turn.$Draw a card.| +Gerrard's Battle Cry|Tempest Remastered|15|R|{W}|Enchantment|||{2}{W}: Creatures you control get +1/+1 until end of turn.| +Humility|Tempest Remastered|16|M|{2}{W}{W}|Enchantment|||All creatures lose all abilities and have base power and toughness 1/1.| +Kor Chant|Tempest Remastered|17|U|{2}{W}|Instant|||All damage that would be dealt this turn to target creature you control by a source of your choice is dealt to another target creature instead.| +Master Decoy|Tempest Remastered|18|C|{1}{W}|Creature - Human Soldier|1|2|{W}, {tap}: Tap target creature.| +Mounted Archers|Tempest Remastered|19|C|{3}{W}|Creature - Human Soldier Archer|2|3|Reach (This creature can block creatures with flying.)${W}: Mounted Archers can block an additional creature this turn.| +Nomads en-Kor|Tempest Remastered|20|C|{W}|Creature - Kor Nomad Soldier|1|1|{0}: The next 1 damage that would be dealt to Nomads en-Kor this turn is dealt to target creature you control instead.| +Orim, Samite Healer|Tempest Remastered|21|R|{1}{W}{W}|Legendary Creature - Human Cleric|1|3|{tap}: Prevent the next 3 damage that would be dealt to target creature or player this turn.| +Pacifism|Tempest Remastered|22|U|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block.| +Paladin en-Vec|Tempest Remastered|23|R|{1}{W}{W}|Creature - Human Knight|2|2|First strike, protection from black and from red| +Pegasus Stampede|Tempest Remastered|24|U|{1}{W}|Sorcery|||Buyback - Sacrifice a land. (You may sacrifice a land in addition to any other costs as you cast this spell. If you do, put this card into your hand as it resolves.)$Put a 1/1 white Pegasus creature token with flying onto the battlefield.| +Repentance|Tempest Remastered|25|U|{2}{W}|Sorcery|||Target creature deals damage to itself equal to its power.| +Shackles|Tempest Remastered|26|C|{2}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature doesn't untap during its controller's untap step.${W} Return Shackles to its owner's hand.| +Shaman en-Kor|Tempest Remastered|27|R|{1}{W}|Creature - Kor Cleric Shaman|1|2|{0}: The next 1 damage that would be dealt to Shaman en-Kor this turn is dealt to target creature you control instead.${1}{W}: The next time a source of your choice would deal damage to target creature this turn, that damage is dealt to Shaman en-Kor instead.| +Smite|Tempest Remastered|28|C|{W}|Instant|||Destroy target blocked creature.| +Soltari Champion|Tempest Remastered|29|U|{2}{W}|Creature - Soltari Soldier|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Soltari Champion attacks, other creatures you control get +1/+1 until end of turn.| +Soltari Lancer|Tempest Remastered|30|C|{2}{W}|Creature - Soltari Knight|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Soltari Lancer has first strike as long as it's attacking.| +Soltari Monk|Tempest Remastered|31|U|{W}{W}|Creature - Soltari Monk Cleric|2|1|Protection from black$Shadow (This creature can block or be blocked by only creatures with shadow.)| +Soltari Priest|Tempest Remastered|32|U|{W}{W}|Creature - Soltari Cleric|2|1|Protection from red$Shadow (This creature can block or be blocked by only creatures with shadow.)| +Soltari Trooper|Tempest Remastered|33|C|{1}{W}|Creature - Soltari Soldier|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Whenever Soltari Trooper attacks, it gets +1/+1 until end of turn.| +Spirit en-Kor|Tempest Remastered|34|C|{3}{W}|Creature - Kor Spirit|2|2|Flying${0}: The next 1 damage that would be dealt to Spirit en-Kor this turn is dealt to target creature you control instead.| +Spirit Mirror|Tempest Remastered|35|R|{2}{W}{W}|Enchantment|||At the beginning of your upkeep, if there are no Reflection tokens on the battlefield, put a 2/2 white Reflection creature token onto the battlefield.${0}: Destroy target Reflection.| +Standing Troops|Tempest Remastered|36|C|{2}{W}|Creature - Human Soldier|1|4|Vigilance| +Staunch Defenders|Tempest Remastered|37|C|{3}{W}{W}|Creature - Human Soldier|3|4|When Staunch Defenders enters the battlefield, you gain 4 life.| +Wall of Essence|Tempest Remastered|38|U|{1}{W}|Creature - Wall|0|4|Defender$Whenever Wall of Essence is dealt combat damage, you gain that much life.| +Warrior en-Kor|Tempest Remastered|39|U|{W}{W}|Creature - Kor Warrior Knight|2|2|{0}: The next 1 damage that would be dealt to Warrior en-Kor this turn is dealt to target creature you control instead.| +Winds of Rath|Tempest Remastered|40|R|{3}{W}{W}|Sorcery|||Destroy all creatures that aren't enchanted. They can't be regenerated.| +Youthful Knight|Tempest Remastered|41|C|{1}{W}|Creature - Human Knight|2|1|First strike| +Capsize|Tempest Remastered|42|U|{1}{U}{U}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return target permanent to its owner's hand.| +Counterspell|Tempest Remastered|43|U|{U}{U}|Instant|||Counter target spell.| +Curiosity|Tempest Remastered|44|U|{U}|Enchantment - Aura|||Enchant creature$Whenever enchanted creature deals damage to an opponent, you may draw a card.| +Dismiss|Tempest Remastered|45|U|{2}{U}{U}|Instant|||Counter target spell.$Draw a card.| +Dream Halls|Tempest Remastered|46|M|{3}{U}{U}|Enchantment|||Rather than pay the mana cost for a spell, its controller may discard a card that shares a color with that spell.| +Dream Prowler|Tempest Remastered|47|U|{2}{U}{U}|Creature - Illusion|1|5|Dream Prowler can't be blocked as long as it's attacking alone.| +Ephemeron|Tempest Remastered|48|R|{4}{U}{U}|Creature - Illusion|4|4|Flying$Discard a card: Return Ephemeron to its owner's hand.| +Fighting Drake|Tempest Remastered|49|U|{2}{U}{U}|Creature - Drake|2|4|Flying| +Forbid|Tempest Remastered|50|R|{1}{U}{U}|Instant|||Buyback - Discard two cards. (You may discard two cards in addition to any other costs as you you cast this spell. If you do, put this card into your hand as it resolves.)$Counter target spell.| +Gaseous Form|Tempest Remastered|51|C|{2}{U}|Enchantment - Aura|||Enchant creature$Prevent all combat damage that would be dealt to and dealt by enchanted creature.| +Hammerhead Shark|Tempest Remastered|52|C|{1}{U}|Creature - Fish|2|3|Hammerhead Shark can't attack unless defending player controls an Island.| +Horned Turtle|Tempest Remastered|53|C|{2}{U}|Creature - Turtle|1|4|| +Intuition|Tempest Remastered|54|R|{2}{U}|Instant|||Search your library for three cards and reveal them. Target opponent chooses one. Put that card into your hand and the rest into your graveyard. Then shuffle your library.| +Killer Whale|Tempest Remastered|55|U|{3}{U}{U}|Creature - Whale|3|5|{U}: Killer Whale gains flying until end of turn.| +Legacy's Allure|Tempest Remastered|57|R|{U}{U}|Enchantment|||At the beginning of your upkeep, you may put a treasure counter on Legacy's Allure.$Sacrifice Legacy's Allure: Gain control of target creature with power less than or equal to the number of treasure counters on Legacy's Allure.| +Legerdemain|Tempest Remastered|57|U|{2}{U}{U}|Sorcery|||Exchange control of target artifact or creature and another target permanent that shares one of those types with it.| +Mana Leak|Tempest Remastered|58|C|{1}{U}|Instant|||Counter target spell unless its controller pays {3}.| +Mawcor|Tempest Remastered|59|R|{3}{U}{U}|Creature - Beast|3|3|Flying$${tap}: Mawcor deals 1 damage to target creature or player.| +Meditate|Tempest Remastered|60|R|{2}{U}|Instant|||Draw four cards. You skip your next turn.| +Merfolk Looter|Tempest Remastered|61|C|{1}{U}|Creature - Merfolk Rogue|1|1|{T}: Draw a card, then discard a card.| +Mnemonic Sliver|Tempest Remastered|62|C|{2}{U}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: Draw a card."| +Rootwater Hunter|Tempest Remastered|63|U|{2}{U}|Creature - Merfolk|1|1|{tap}: Rootwater Hunter deals 1 damage to target creature or player.| +Scrivener|Tempest Remastered|64|C|{4}{U}|Creature - Human Wizard|2|2|When Scrivener enters the battlefield, you may return target instant card from your graveyard to your hand.| +Sea Monster|Tempest Remastered|65|C|{4}{U}{U}|Creature - Serpent|6|6|Sea Monster can't attack unless defending player controls an Island.| +Shadow Rift|Tempest Remastered|66|C|{U}|Instant|||Target creature gains shadow until end of turn. (It can block or be blocked by only creatures with shadow.)$Draw a card.| +Sift|Tempest Remastered|67|C|{3}{U}|Sorcery|||Draw three cards, then discard a card.| +Silver Wyvern|Tempest Remastered|68|R|{3}{U}{U}|Creature - Drake|4|3|Flying${U}: Change the target of target spell or ability that targets only Silver Wyvern. The new target must be a creature.| +Spell Blast|Tempest Remastered|69|C|{X}{U}|Instant|||Counter target spell with converted mana cost X.| +Thalakos Drifters|Tempest Remastered|70|U|{2}{U}{U}|Creature - Thalakos|3|3|Discard a card: Thalakos Drifters gains shadow until end of turn. (It can block or be blocked by only creatures with shadow.)| +Thalakos Scout|Tempest Remastered|71|C|{2}{U}|Creature - Thalakos Soldier Scout|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Discard a card: Return Thalakos Scout to its owner's hand.| +Thalakos Seer|Tempest Remastered|72|C|{U}{U}|Creature - Thalakos Wizard|1|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$When Thalakos Seer leaves the battlefield, draw a card.| +Time Ebb|Tempest Remastered|73|C|{2}{U}|Sorcery|||Put target creature on top of its owner's library.| +Time Warp|Tempest Remastered|74|M|{3}{U}{U}|Sorcery|||Target player takes an extra turn after this one.| +Tradewind Rider|Tempest Remastered|75|R|{3}{U}|Creature - Spirit|1|4|Flying${tap}, Tap two untapped creatures you control: Return target permanent to its owner's hand.| +Twitch|Tempest Remastered|76|C|{2}{U}|Instant|||You may tap or untap target artifact, creature, or land.$Draw a card.| +Volrath's Curse|Tempest Remastered|77|U|{1}{U}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block, and its activated abilities can't be activated. That creature's controller may sacrifice a permanent for that player to ignore this effect until end of turn.${1}{U}: Return Volrath's Curse to its owner's hand.| +Wayward Soul|Tempest Remastered|78|C|{2}{U}{U}|Creature - Spirit|3|2|Flying${U}: Put Wayward Soul on top of its owner's library.| +Whispers of the Muse|Tempest Remastered|79|C|{U}|Instant|||Buyback {5} (You may pay an additional {5} as you cast this spell. If you do, put this card into your hand as it resolves.)$Draw a card.| +Wind Dancer|Tempest Remastered|80|U|{1}{U}|Creature - Faerie|1|1|Flying$${tap}: Target creature gains flying until end of turn.| +Wind Drake|Tempest Remastered|81|C|{2}{U}|Creature - Drake|2|2|Flying| +Winged Sliver|Tempest Remastered|82|C|{1}{U}|Creature - Sliver|1|1|All Sliver creatures have flying.| +Cannibalize|Tempest Remastered|83|U|{1}{B}|Sorcery|||Choose two target creature controlled by the same player. Exile one of the creatures and put two +1/+1 counters on the other.| +Carnophage|Tempest Remastered|84|C|{B}|Creature - Zombie|2|2|At the beginning of your upkeep, tap Carnophage unless you pay 1 life.| +Clot Sliver|Tempest Remastered|85|C|{1}{B}|Creature - Sliver|1|1|All Slivers have "{2}: Regenerate this permanent."| +Coercion|Tempest Remastered|86|C|{2}{B}|Sorcery|||Target opponent reveals his or her hand. You choose a card from it. That player discards that card.| +Coffin Queen|Tempest Remastered|87|R|{2}{B}|Creature - Zombie Wizard|1|1|You may choose not to untap Coffin Queen during your untap step.${2}{B}, {tap}: Put target creature card from a graveyard onto the battlefield under your control. When Coffin Queen becomes untapped or you lose control of Coffin Queen, exile that creature.| +Commander Greven il-Vec|Tempest Remastered|88|R|{3}{B}{B}{B}|Legendary Creature - Human Warrior|7|5|Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)$When Commander Greven il-Vec enters the battlefield, sacrifice a creature.| +Corpse Dance|Tempest Remastered|89|R|{2}{B}|Instant|||Buyback {2} (You may pay an additional {2} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return the top creature card of your graveyard to the battlefield. That creature gains haste until end of turn. Exile it at the beginning of the next end step.| +Crovax the Cursed|Tempest Remastered|90|R|{2}{B}{B}|Legendary Creature - Vampire|0|0|Crovax the Cursed entered the battlefield with four +1/+1 counters on it.$At the beginning of your upkeep, you may sacrifice a creature. If you do, put a +1/+1 counter on Crovax. If you don't, remove a +1/+1 counter from Crovax.${B}: Crovax gains flying until end of turn.| +Cursed Flesh|Tempest Remastered|91|C|{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets -1/-1 and has fear. (It can't be blocked except by artifact creatures and/or black creatures.)| +Dark Banishing|Tempest Remastered|92|C|{2}{B}|Instant|||Destroy target nonblack creature. It can't be regenerated.| +Dark Ritual|Tempest Remastered|93|C|{B}|Instant|||Add {B}{B}{B} to your mana pool.| +Dauthi Horror|Tempest Remastered|94|C|{1}{B}|Creature - Dauthi Horror|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Horror can't be blocked by white creatures.| +Dauthi Jackal|Tempest Remastered|95|C|{2}{B}|Creature - Dauthi Hound|2|1|Shadow (This creature can block or be blocked by only creatures with shadow.)${B}{B}, Sacrifice Dauthi Jackal: Destroy target blocking creature.| +Dauthi Marauder|Tempest Remastered|96|U|{2}{B}|Creature - Dauthi Minion|3|1|Shadow (This creature can block or be blocked by only creatures with shadow.)| +Dauthi Slayer|Tempest Remastered|97|U|{B}{B}|Creature - Dauthi Soldier|2|2|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Slayer attacks each turn if able.| +Dauthi Warlord|Tempest Remastered|98|U|{1}{B}|Creature - Dauthi Soldier|*|1|Shadow (This creature can block or be blocked by only creatures with shadow.)$Dauthi Warlord's power is equal to the number of creatures with shadow on the battlefield.| +Death Pits of Rath|Tempest Remastered|99|R|{3}{B}{B}|Enchantment|||Whenever a creature is dealt damage, destroy it. It can't be regenerated.| +Death Stroke|Tempest Remastered|100|C|{B}{B}|Sorcery|||Destroy target tapped creature.| +Death's Duet|Tempest Remastered|101|C|{2}{B}|Sorcery|||Return two target creature cards from your graveyard to your hand.| +Diabolic Edict|Tempest Remastered|102|C|{1}{B}|Instant|||Target player sacrifices a creature.| +Dungeon Shade|Tempest Remastered|103|C|{3}{B}|Creature - Shade Spirit|1|1|Flying${B}: Dungeon Shade gets +1/+1 until end of turn.| +Evincar's Justice|Tempest Remastered|104|U|{2}{B}{B}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Evincar's Justice deals 2 damage to each creature and each player.| +Fugue|Tempest Remastered|105|U|{3}{B}{B}|Sorcery|||Target player discards three cards.| +Gravedigger|Tempest Remastered|106|C|{3}{B}|Creature - Zombie|2|2|When Gravedigger enters the battlefield, you may return target creature card from your graveyard to your hand.| +Kezzerdrix|Tempest Remastered|107|R|{2}{B}{B}|Creature - Rabbit Beast|4|4|First strike$At the beginning of your upkeep, if your opponents control no creatures, Kezzerdrix deals 4 damage to you.| +Lab Rats|Tempest Remastered|108|C|{B}|Sorcery|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card back into your hand as it resolves.)$Put a 1/1 Rat creature token ontol the battlefield.| +Living Death|Tempest Remastered|109|M|{3}{B}{B}|Sorcery|||Each player exiles all creature cards from his or her graveyard, then sacrifices all creatures he or she controls, then puts all cards he or she exiled this way onto the battlefield.| +Necrologia|Tempest Remastered|110|R|{3}{B}{B}|Instant|||Cast Necrologia only during your end step.$As an additional cost to cast to Necrologia, pay X life.$Draw X cards.| +Rats of Rath|Tempest Remastered|111|C|{1}{B}|Creature - Rat|2|1|{B}: Destroy target artifact, creature, or land you control.| +Reanimate|Tempest Remastered|112|U|{B}|Sorcery|||Put target creature card from a graveyard onto the battlefield under your control. You lose life equal to its converted mana cost.| +Recurring Nightmare|Tempest Remastered|113|M|{2}{B}|Enchantment|||Sacrifice a creature, Return Recurring Nightmare to its owner's hand: Return target creature card from your graveyard to the battlefield. Activate this ability only any time you could cast a sorcery.| +Revenant|Tempest Remastered|114|U|{4}{B}|Creature - Spirit|*|*|Flying$Revenant's power and toughness are each equal to the number of creature cards in your graveyard.| +Sarcomancy|Tempest Remastered|115|U|{B}|Enchantment|||When Sarcomancy enters the battlefield, put a 2/2 black Zombie creature token onto the battlefield.$At the beginning of your upkeep, if there are no Zombies on the battlefield, Sarcomancy deals 1 damage to you.| +Screeching Harpy|Tempest Remastered|116|U|{2}{B}{B}|Creature - Harpy Beast|2|2|Flying${1}{B}: Regenerate Screeching Harpy.| +Serpent Warrior|Tempest Remastered|117|C|{2}{B}|Creature - Snake Warrior|3|3|When Serpent Warrior enters the battlefield, you lose 3 life.| +Skyshroud Vampire|Tempest Remastered|118|U|{3}{B}{B}|Creature - Vampire|3|3|Flying$Discard a creature card: Skyshroud Vampire gets +2/+2 until end of turn.| +Spinal Graft|Tempest Remastered|119|C|{1}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +3/+3.$When enchanted creature becomes the target of a spell or ability, destroy that creature. It can't be regenerated.| +Stronghold Assassin|Tempest Remastered|120|R|{1}{B}{B}|Creature - Zombie Assassin|2|1|, Sacrifice a creature: Destroy target nonblack creature.| +Thrull Surgeon|Tempest Remastered|121|C|{1}{B}|Creature - Thrull|1|1|{1}{B}, Sacrifice Thrull Surgeon: Look at target player's hand and choose a card from it. That player discards that card. Activate this ability only any time you could cast a sorcery.| +Vampire Hounds|Tempest Remastered|122|C|{2}{B}|Creature - Vampire Hound|2|2|Discard a creature card: Vampire Hounds gets +2/+2 until end of turn.| +Wall of Souls|Tempest Remastered|123|U|{1}{B}|Creature - Wall|0|4|Defender$Whenever Wall of Souls is dealt combat damage, it deals that much damage to target opponent.| +Aftershock|Tempest Remastered|124|C|{2}{R}{R}|Sorcery|||Destroy target artifact, creature, or land. Aftershock deals 3 damage to you.| +Anarchist|Tempest Remastered|125|C|{4}{R}|Creature - Human Wizard|2|2|When Anarchist enters the battlefield, you may return target sorcery card from your graveyard to your hand.| +Barbed Sliver|Tempest Remastered|126|C|{2}{R}|Creature - Sliver|2|2|All Sliver creatures have "{2}: This creature gets +1/+0 until end of turn."| +Canyon Wildcat|Tempest Remastered|127|C|{1}{R}|Creature - Cat|2|1|Mountainwalk (This creature can't be blocked as long as defending player controls a Mountain.)| +Craven Giant|Tempest Remastered|128|C|{2}{R}|Creature - Giant|4|1|Craven Giant can't block.| +Deadshot|Tempest Remastered|129|U|{3}{R}|Sorcery|||Tap target creature. It deals damage equal to its power to another target creature.| +Fanning the Flames|Tempest Remastered|130|R|{X}{R}{R}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Fanning the Flames deals X damage to target creature or player.| +Flame Wave|Tempest Remastered|131|R|{3}{R}{R}{R}{R}|Sorcery|||Flame Wave deals 4 damage to target player and each creature he or she controls.| +Flowstone Blade|Tempest Remastered|132|C|{R}|Enchantment - Aura|||Enchant creature|||{R}: Enchanted creature gets +1/-1 until end of turn.| +Flowstone Mauler|Tempest Remastered|133|U|{4}{R}{R}|Creature - Beast|4|5|Trample${R}: Flowstone Mauler gets +1/-1 until end of turn.| +Flowstone Wyvern|Tempest Remastered|134|U|{3}{R}{R}|Creature - Drake|3|3|Flying${R}: Flowstone Wyvern gets +2/-2 until end of turn.| +Furnace Brood|Tempest Remastered|135|C|{3}{R}|Creature - Elemental|3|3|{R}: Target creature can't be regenerated this turn.| +Goblin Bombardment|Tempest Remastered|136|U|{1}{R}|Enchantment|||Sacrifice a creature: Goblin Bombardment deals 1 damage to target creature or player.| +Kindle|Tempest Remastered|137|C|{1}{R}|Instant|||Kindle deals X damage to target creature or player, where X is 2 plus the number of cards named Kindle in all graveyards.| +Lightning Blast|Tempest Remastered|138|C|{3}{R}|Instant|||Lightning Blast deals 4 damage to target creature or player.| +Lowland Giant|Tempest Remastered|139|C|{2}{R}{R}|Creature - Giant|4|3|| +Mage il-Vec|Tempest Remastered|140|U|{2}{R}|Creature - Human Wizard|2|2|{T}, Discard a card at random: Mage il-Vec deals 1 damage to target creature or player.| +Magmasaur|Tempest Remastered|141|R|{3}{R}{R}|Creature - Elemental Lizard|0|0|Magmasaur enters the battlefield with five +1/+1 counters on it.$At the beginning of your upkeep, you may remove a +1/+1 counter from Magmasaur. If you don't, sacrifice Magmasaur and it deals damage equal to the number of +1/+1 counters on it to each creature without flying and each player.| +Maniacal Rage|Tempest Remastered|142|C|{1}{R}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2 and can't block.| +Mogg Conscripts|Tempest Remastered|143|C|{R}|Creature - Goblin|2|2|Mogg Conscripts can't attack unless you've cast a creature spell this turn.| +Mogg Fanatic|Tempest Remastered|144|C|{R}|Creature - Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.| +Mogg Flunkies|Tempest Remastered|145|C|{1}{R}|Creature - Goblin|3|3|Mogg Flunkies can't attack or block alone.| +Mogg Infestation|Tempest Remastered|146|R|{3}{R}{R}|Sorcery|||Destroy all creatures target player controls. For each creature that died this way, put two 1/1 red Goblin creature tokens onto the battlefield under that player's control.| +Mogg Maniac|Tempest Remastered|147|U|{1}{R}|Creature - Goblin|1|1|Whenever Mogg Maniac is dealt damage, it deals that much damage to target opponent.| +Ogre Shaman|Tempest Remastered|148|R|{3}{R}{R}|Creature - Ogre Shaman|3|3|{2}, Discard a card at random: Ogre Shaman deals 2 damage to target creature or player.| +Pandemonium|Tempest Remastered|149|R|{3}{R}|Enchantment|||Whenever a creature enters the battlefield, that creature's controller may have it deal damage equal to its power to target creature or player of his or her choice.| +Rathi Dragon|Tempest Remastered|150|R|{2}{R}{R}|Creature - Dragon|5|5|Flying$When Rathi Dragon enters the battlefield, sacrifice it unless you sacrifice two Mountains.| +Renegade Warlord|Tempest Remastered|151|U|{4}{R}|Creature - Human Soldier|3|3|First strike$Whenever Renegade Warlord attacks, each other attacking creature gets +1/+0 until end of turn.| +Rolling Thunder|Tempest Remastered|152|U|{X}{R}{R}|Sorcery|||Rolling Thunder deals X damage divided as you choose among any number of target creatures and/or players.| +Sabertooth Wyvern|Tempest Remastered|153|U|{4}{R}|3|2|Flying, first strike| +Sandstone Warrior|Tempest Remastered|154|C|{2}{R}{R}|Creature - Human Soldier Warrior|1|3|First strike${R}: Sandstone Warrior gets +1/+0 until end of turn.| +Searing Touch|Tempest Remastered|155|U|{R}|Instant|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Searing Touch deals 1 damage to target creature or player.| +Seething Anger|Tempest Remastered|156|C|{R}|Sorcery|||Buyback {3}(You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target creature gets +3/+0 until end of turn.| +Shadowstorm|Tempest Remastered|157|U|{R}|Sorcery|||Shadowstorm deals 2 damage to each creature with shadow.| +Shard Phoenix|Tempest Remastered|158|M|{4}{R}|Creature - Phoenix|2|2|Flying$Sacrifice Shard Phoenix: Shard Phoenix deals 2 damage to each creature without flying.${R}{R}{R}: Return Shard Phoenix from your graveyard to your hand. Activate this ability only during your upkeep.| +Shatter|Tempest Remastered|159|C|{1}{R}|Instant|||Destroy target artifact.| +Spellshock|Tempest Remastered|160|U|{2}{R}|Enchantment|||Whenever a player casts a spell, Spellshock deals 2 damage to that player.| +Spitting Hydra|Tempest Remastered|161|R|{3}{R}{R}|Creature - Hydra|0|0|Spitting Hydra enteres the battlefield wtih four +1/+1 counters on it.${1}{R}, Remove a +1/+1 counter from Spitting Hydra: Spitting Hydra deals 1 damage to target creature.| +Starke of Rath|Tempest Remastered|162|M|{1}{R}{R}|Legendary Creature - Human Rogue|2|2|{tap}: Destroy target artifact or creature. That permanent's controller gains control of Starke of Rath.| +Stun|Tempest Remastered|163|C|{1}{R}|Instant|||Target creature can't block this turn.$Draw a card.| +Wall of Diffusion|Tempest Remastered|164|C|{1}{R}|Creature - Wall|0|5|Defender$Wall of Diffusion can block creatures with shadow as though Wall of Diffusion had shadow.| +Aluren|Tempest Remastered|165|R|{2}{G}{G}|Enchantment|||Any player may play creature cards with converted mana cost 3 or less without paying their mana cost and as though they had flash.| +Canopy Spider|Tempest Remastered|166|C|{1}{G}|Creature - Spider|1|3|Reach (This creature can block creatures with flying.)| +Carnassid|Tempest Remastered|167|U|{4}{G}{G}|Creature - Beast|5|4|Trample${1}{G}: Regenerate Carnassid.| +Crashing Boars|Tempest Remastered|168|U|{3}{G}{G}|Creature - Boar|4|4|Whenever Crashing Boars attacks, defending player chooses an untapped creature he or she controls. That creature block Crashing Boars this turn if able.| +Elven Rite|Tempest Remastered|169|C|{1}{G}|Sorcery|||Distribute two +1/+1 counters among one or two target creatures.| +Elvish Fury|Tempest Remastered|170|C|{G}|Instant|||Buyback {4} (You may pay an additional {4} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target creature gets +2/+2 until end of turn.| +Endangered Armodon|Tempest Remastered|171|C|{2}{G}{G}|Creature - Elephant|4|5|When you control a creature with toughness 2 or less, sacrifice Endangered Armodon.| +Harrow|Tempest Remastered|172|C|{2}{G}|Instant|||As an additional cost to cast Harrow, sacrifice a land.$Search your library for up to two basic land cards and put them onto the battlefield. Then shuffle your library.| +Heartwood Dryad|Tempest Remastered|173|C|{1}{G}|Creature - Dryad|2|1|Heartwood Dryad can block creatures with shadow as though Heartwood Dryad had shadow.| +Heartwood Giant|Tempest Remastered|174|R|{3}{G}{G}|Creature - Giant|4|4|{tap}, Sacrifice a Forest: Heartwood Giant deals 2 damage to target player.| +Hermit Druid|Tempest Remastered|175|U|{1}{G}|Creature - Human Druid|1|1|{G}, {T}: Reveal cards from the top of your library until you reveal a basic a land card. Put that card into your hand and all other cards revealed this way into your graveyard.| +Horned Sliver|Tempest Remastered|176|C|{2}{G}|Creature - Sliver|2|2|All Sliver creatures have trample.| +Krakilin|Tempest Remastered|177|R|{X}{G}{G}|Creature - Beast|0|0|Krakilin enters the battlefield with X +1/+1 counters on it.${1}{G}: Regenerate Krakilin.| +Lowland Basilisk|Tempest Remastered|178|U|{2}{G}|Creature - Basilisk|1|3|Whenever Lowland Basilisk deals damage to a creature, destroy that creature at end of combat.| +Manabond|Tempest Remastered|179|R|{G}|Enchantment|||At the beginning of your end step, you may reveal your hand and put all land cards from it onto the battlefield. If you do, discard you hand.| +Mirri, Cat Warrior|Tempest Remastered|180|R|{1}{G}{G}|Legendary Creature - Cat Warrior|2|3|First strike, forestwalk, vigilance| +Mulch|Tempest Remastered|181|C|{1}{G}|Sorcery|||Reveal the top four cards of your library. Put all land cards revealed this way into your hand and the rest into your graveyard.| +Muscle Sliver|Tempest Remastered|182|C|{1}{G}|Creature - Sliver|1|1|All Sliver creatures get +1/+1.| +Needle Storm|Tempest Remastered|183|U|{2}{G}|Sorcery|||Needle Storm deals 4 damage to each creature with flying.| +Oath of Druids|Tempest Remastered|184|M|{1}{G}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player who controls more creatures than he or she does and is his or her opponent. The first player may reveal cards from the top of his or her library until he or she reveals a creature card. If he or she does, that player puts that card onto the battlefield and all other cards revealed this way into his or her graveyard.| +Overrun|Tempest Remastered|185|U|{2}{G}{G}{G}|Sorcery|||Creatures you control get +3/+3 and gain trample until end of turn.| +Provoke|Tempest Remastered|186|C|{1}{G}|Instant|||Untap target creature you don't control. That creature blocks this turn if able.$Draw a card.| +Rampant Growth|Tempest Remastered|187|C|{1}{G}|Sorcery|||Search your library for a basic land card and put that card onto the battlefield tapped. Then shuffle your library.| +Reality Anchor|Tempest Remastered|188|C|{1}{G}|Instant|||Target creature loses shadow until end of turn.$Draw a card.| +Recycle|Tempest Remastered|189|R|{4}{G}{G}|Enchantment|||Skip your draw step.$Whenever you play a card, draw a card.$Your maximum hand size is two.| +Rootbreaker Wurm|Tempest Remastered|190|U|{5}{G}{G}|Creature - Wurm|6|6|Trample| +Rootwalla|Tempest Remastered|191|C|{2}{G}|Creature - Lizard|2|2|{1}{G}: Rootwalla gets +2/+2 until end of turn. Activate this ability only once each turn.| +Skyshroud Elf|Tempest Remastered|192|C|{1}{G}|Creature - Elf Druid|1|1|{tap}: Add {G} to your mana pool.${1}: Add {R} or {W} to your mana pool.| +Skyshroud Troll|Tempest Remastered|193|C|{2}{G}{G}|Creature - Troll Giant|3|3|{1}{G}: Regenerate Skyshroud Troll.| +Spike Breeder|Tempest Remastered|194|U|{3}{G}|Creature - Spike|0|0|Spike Breeder enters the battlefield with three +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Breeder: Put a +1/+1 counter on target creature.${2}, Remove a +1/+1 counter from Spike Breeder: Put a 1/1 green Spike creature token onto the battlefield.| +Spike Colony|Tempest Remastered|195|C|{4}{G}|Creature - Spike|0|0|Spike Colony enters the battlefield with four +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Colony: Put a +1/+1 counter on target creature.| +Spike Feeder|Tempest Remastered|196|U|{1}{G}{G}|Creature - Spike|0|0|Spike Feeder enters the battlefield with two +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Feeder: Put a +1/+1 counter on target creature.$Remove a +1/+1 counter from Spike Feeder: You gain 2 life.| +Spike Hatcher|Tempest Remastered|197|R|{6}{G}|Creature - Spike|0|0|Spike Hatcher enters the battlefield with six +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Hatcher: Put a +1/+1 counter on target creature.${1}, Remove a +1/+1 counter from Spike Hatcher: Regenerate Spike Hatcher.| +Spined Wurm|Tempest Remastered|198|C|{4}{G}|Creature - Wurm|5|4|| +Survival of the Fittest|Tempest Remastered|199|M|{1}{G}|Enchantment|||{G}, Discard a creature card: Search your library from a creature card, reveal that card, and put it into your hand. Then shuffle your library.| +Trained Armodon|Tempest Remastered|200|C|{1}{G}{G}|Creature - Elephant|3|3|| +Tranquility|Tempest Remastered|201|U|{2}{G}|Sorcery|||Destroy all enchantments.| +Verdant Force|Tempest Remastered|202|R|{5}{G}{G}{G}|Creature - Elemental|7|7|At the beginning of each upkeep, put a 1/1 green Saproling creature token onto the battlefield.| +Verdant Touch|Tempest Remastered|203|U|{1}{G}|Sorcery|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Target land becomes a 2/2 creature that's still a land.| +Verdigris|Tempest Remastered|204|C|{2}{G}|Instant|||Destroy target artifact.| +Wall of Blossoms|Tempest Remastered|205|U|{1}{G}|Creature - Plant Wall|0|4|Defender$When Wall of Blossoms enters the battlefield, draw a card.| +Acidic Sliver|Tempest Remastered|206|U|{B}{R}|Creature - Sliver|2|2|All Slivers have "{2}, Sacrifice this permanent: This permanent dealls 2 damage to target creature or player."| +Crystalline Sliver|Tempest Remastered|207|U|{W}{U}|Creature - Sliver|2|2|All Slivers have shroud. (They can't be the targets of spells or abilities.)| +Dracoplasm|Tempest Remastered|208|R|{U}{R}|Creature - Shapeshifter|0|0|Flying$As Dracoplasm enters the battlefield, sacrifice any number of creatures. Dracoplasm's power becomes the total power of those creatures and its toughness becomes their total toughness.${R}: Dracoplasm gets +1/+0 until end of turn.| +Hibernation Sliver|Tempest Remastered|209|U|{U}{B}|Creature - Sliver|2|2|All Slivers have "Pay 2 life: Return this permanent to its owner's hand."| +Selenia, Dark Angel|Tempest Remastered|210|R|{3}{W}{B}|Legendary Creature - Angel|3|3|Flying$Pay 2 life: Return Selenia, Dark Angel to its owner's hand.| +Sliver Queen|Tempest Remastered|211|M|{W}{U}{B}{R}{G}|Legendary Creature - Sliver|7|7|{2}: Put a 1/1 colorless Sliver creature token onto the battlefield.| +Soltari Guerrillas|Tempest Remastered|212|R|{2}{R}{W}|Creature - Soltari Soldier|3|2|Shadow (This creature can block or be blocked by only creatures with shadow.)${0}: The next time Soltari Guerrillas would deal combat damage to an opponent this turn, it deals that damage to target creature instead.| +Spined Sliver|Tempest Remastered|213|U|{R}{G}|Creature - Sliver|2|2|Whenever a Sliver becomes blocked, that Sliver gets +1/+1 until end of turn for each creature blocking it.| +Vhati il-Dal|Tempest Remastered|214|R|{2}{B}{G}|Legendary Creature - Human Warrior|3|3|{tap}: Until end of turn, target creature has base power 1 or base toughness 1.| +Victual Sliver|Tempest Remastered|215|U|{G}{W}|Creature - Sliver|2|2|All Sliver have "{2}, Sacrifice this permanent: You gain 4 life."| +Wood Sage|Tempest Remastered|216|R|{G}{U}|Creature - Human Druid|1|1|{tap}: Name a creature card. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard.| +Bottle Gnomes|Tempest Remastered|217|C|{3}|Artifact Creature - Gnome|1|3|Sacrifice Bottle Gnomes: You gain 3 life.| +Coat of Arms|Tempest Remastered|218|R|{5}|Artifact|||Each creature gets +1/+1 for each other creature on the battlefield that shares at least one creature type with it. (For example, if two Goblin Warriors and a Goblin Shaman are on the battlefield, each gets +2/+2.)| +Coiled Tinviper|Tempest Remastered|219|C|{3}|Artifact Creature - Snake|2|1|First strike| +Cursed Scroll|Tempest Remastered|220|M|{1}|Artifact|||{3}, {tap}: Name a card. Reveal a card at random from your hand. If it's the named card, Cursed Scroll deals 2 damage to target creature or player.| +Emmessi Tome|Tempest Remastered|221|U|{4}|Artifact|||{5}, {tap}: Draw two cards, then discard a card.| +Erratic Portal|Tempest Remastered|222|R|{4}|Artifact|||{1}, {T}: Return target creature to its owner's hand unless its controller pays {1}.| +Grindstone|Tempest Remastered|223|M|{1}|Artifact|||{3}, {tap}: Target player puts the top two cards of his or her library into his or her graveyard. If both cards share a color, repeat this process.| +Jinxed Idol|Tempest Remastered|224|R|{2}|Artifact|||At the beginning of your upkeep, Jinxed Idol deals 2 damage to you.$Sacrifice a creature: Target opponent gains control of Jinxed Idol.| +Lotus Petal|Tempest Remastered|225|U|{0}|Artifact|||{tap}, Sacrifice Lotus Petal: Add one mana of any color to your mana pool.| +Metallic Sliver|Tempest Remastered|226|C|{1}|Artifact Creature - Sliver|1|1|| +Mindless Automaton|Tempest Remastered|227|R|{4}|Artifact Creature - Construct|0|0|Mindless Automaton enters the battlefield with two +1/+1 counters on it.${1}, Discard a card: Put a +1/+1 counter on Mindless Automaton.$Remove two +1/+1 counters from Mindless Automaton: Draw a card.| +Mox Diamond|Tempest Remastered|228|M|{0}|Artifact|||If Mox Diamond would enter the battlefield, you may discard a land card instead. If you do, put Mox Diamond onto the battlefield. If you don't, put it into its owner's graveyard.${T}: Add one mana of any color to your mana pool.| +Patchwork Gnomes|Tempest Remastered|229|C|{3}|Artifact Creature - Gnome|2|1|Discard a card: Regenerate Patchwork Gnomes.| +Phyrexian Hulk|Tempest Remastered|230|U|{6}|Artifact Creature - Golem|5|4|| +Skyshaper|Tempest Remastered|231|C|{2}|Artifact|||Sacrifice Skyshaper: Creature you control gain flying until end of turn.| +Telethopter|Tempest Remastered|232|C|{4}|Artifact Creature - Thopter|3|1|Tap an untapped creature you control: Telethopter gains flying until end of turn.| +Thopter Squadron|Temperest Remastered|233|R|{5}|Artifact Creature - Thopter|0|0|Flying$Thopter Squadron enters the battlefield with three +1/+1 counters on it.${1}, Remove a +1/+1 counter from Thopter Squadron: Put a +1/+1 colorless Thopter artifact creature token with flying onto the battlefield. Activate this ability only any time you could cast a sorcery.${1}, Sacrifice another Thopter: Put a +1/+1 counter on Thopter Squardon. Activate this ability only any time you could cast a sorcery.| +Volrath's Labratory|Tempest Remastered|234|R|{5}|Artifact|||As Volrath's Labratory enters the battlefield, choose a color and a creature type.${5}, {T}: Put a 2/2 creature token of the chosen color and type onto the battlefield.| +Caldera Lake|Tempest Remastered|235|U||Land|||Caldera Lake enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {U} or {R} to your mana pool. Caldera Lake deals 1 damage to you.| +Cinder Marsh|Tempest Remastered|236|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {B} or {R} to your mana pool. Cinder Marsh doesn't untap during your next untap step.| +City of Traitors|Tempest Remastered|237|R||Land|||When you play another land, sacrifice City of Traitors.${T}: Add {2} to your mana pool.| +Forest|Tempest Remastered|266|L||Basic Land - Forest|||G| +Forest|Tempest Remastered|267|L||Basic Land - Forest|||G| +Forest|Tempest Remastered|268|L||Basic Land - Forest|||G| +Forest|Tempest Remastered|269|L||Basic Land - Forest|||G| +Island|Tempest Remastered|254|L||Basic Land - Island|||U| +Island|Tempest Remastered|255|L||Basic Land - Island|||U| +Island|Tempest Remastered|256|L||Basic Land - Island|||U| +Island|Tempest Remastered|257|L||Basic Land - Island|||U| +Maze of Shadows|Tempest Remastered|238|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Untap target attacking creature with shadow. Prevent all combat damage that would be dealt to and dealt by that creature this turn.| +Mogg Hollows|Tempest Remastered|239|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {R} or {G} to your mana pool. Mogg Hollows doesn't untap during your next untap step.| +Mountain|Tempest Remastered|262|L||Basic Land - Mountain|||R| +Mountain|Tempest Remastered|263|L||Basic Land - Mountain|||R| +Mountain|Tempest Remastered|264|L||Basic Land - Mountain|||R| +Mountain|Tempest Remastered|265|L||Basic Land - Mountain|||R| +Pine Barrens|Tempest Remastered|240|U||Land|||Pine Barrens enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {B} or {G} to your mana pool. Pine Barrens deals 1 damage to you.| +Plains|Tempest Remastered|250|L||Basic Land - Plains|||W| +Plains|Tempest Remastered|251|L||Basic Land - Plains|||W| +Plains|Tempest Remastered|252|L||Basic Land - Plains|||W| +Plains|Tempest Remastered|253|L||Basic Land - Plains|||W| +Rootwater Depths|Tempest Remastered|241|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {U} or {B} to your mana pool. Rootwater Depths doesn't untap during your next untap step.| +Salt Flats|Tempest Remastered|242|U||Land|||Salt Flats enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {W} or {B} to your mana pool. Salt Flats deals 1 damage to you.| +Scabland|Tempest Remastered|243|U||Land|||Scabland enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {R} or {W} to your mana pool. Scabland deals 1 damage to you.| +Skyshroud Forest|Tempest Remastered|244|U||Land|||Skyshroud Forest enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {G} or {U} to your mana pool. Skyshroud Forest deals 1 damage to you.| +Stalking Stones|Tempest Remastered|245|U||Land|||{tap}: Add {1} to your mana pool.${6}: Stalking Stones becomes a 3/3 Elemental artifact creature that's still a land.| +Swamp|Tempest Remastered|258|L||Basic Land - Swamp|||B| +Swamp|Tempest Remastered|259|L||Basic Land - Swamp|||B| +Swamp|Tempest Remastered|260|L||Basic Land - Swamp|||B| +Swamp|Tempest Remastered|261|L||Basic Land - Swamp|||B| +Thalakos Lowlands|Tempest Remastered|246|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {W} or {U} to your mana pool. Thalakos Lowlands doesn't untap during your next untap step.| +Vec Townships|Tempest Remastered|247|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {G} or {W} to your mana pool. Vec Townships doesn't untap during your next untap step.| +Volrath's Stronghold|Tempest Remastered|248|M||Legendary Land|||{T}: Add {1} to your mana pool.${1}{B}, {T}: Put target creature card from your graveyard on top of your library.| +Wasteland|Tempest Remastered|249|R||Land|||{tap}: Add {1} to your mana pool.${tap}, Sacrifice Wasteland: Destroy target nonbasic land.| \ No newline at end of file diff --git a/Utils/mtg-sets-data.txt b/Utils/mtg-sets-data.txt index 169f8ccbcf..e93541caf6 100644 --- a/Utils/mtg-sets-data.txt +++ b/Utils/mtg-sets-data.txt @@ -129,6 +129,7 @@ Starter 2000|S00| Starter 1999|S99| Stronghold|STH| Tempest|TMP| +Tempest Remastered|TPR| Theros|THS| Torment|TOR| Time Spiral|TSP| From 0fbe4303ae76fefdf9a4d1dff44e6d17bb95ff1c Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 30 Mar 2015 22:51:34 -0500 Subject: [PATCH 009/175] Added set Tempest Remastered and reprints. Added Pit Trap. Updated latest Game Day, FNM, Buy-a-box, WMCQ, and Release promos. --- .../ShorecrasherElemental.java | 13 +- .../phyrexiavsthecoalition/RithsCharm.java | 52 ++ .../src/mage/sets/planeshift/RithsCharm.java | 74 ++ .../sets/returntoravnica/DryadMilitant.java | 9 +- .../src/mage/sets/tempest/OracleEnVec.java | 289 +++++++ .../cards/replacement/DryadMilitantTest.java | 7 +- .../common/PreventDamageBySourceEffect.java | 6 +- Utils/mtg-cards-data.txt | 783 +++++++++--------- 8 files changed, 833 insertions(+), 400 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.java create mode 100644 Mage.Sets/src/mage/sets/planeshift/RithsCharm.java create mode 100644 Mage.Sets/src/mage/sets/tempest/OracleEnVec.java diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/ShorecrasherElemental.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/ShorecrasherElemental.java index f379a8096d..e61983447f 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/ShorecrasherElemental.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/ShorecrasherElemental.java @@ -29,10 +29,14 @@ package mage.sets.dragonsoftarkir; import java.util.UUID; import mage.MageInt; +import mage.MageObject; +import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continuous.BecomesFaceDownCreatureEffect; +import mage.abilities.effects.common.continuous.BecomesFaceDownCreatureEffect.FaceDownType; import mage.abilities.effects.common.continuous.BoostSourceEffect; import mage.abilities.keyword.MorphAbility; import mage.cards.Card; @@ -101,11 +105,16 @@ class ShorecrasherElementalEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Permanent shorecrasherElemental = game.getPermanent(source.getSourceId()); - if (shorecrasherElemental != null) { - if (shorecrasherElemental.moveToExile(source.getSourceId(), "Shorecrasher Elemental", source.getSourceId(), game)) { + MageObject sourceObject = source.getSourceObject(game); + if (shorecrasherElemental != null && + sourceObject != null && + new MageObjectReference(sourceObject, game).refersTo(shorecrasherElemental, game)) { + if (shorecrasherElemental.moveToExile(source.getSourceId(), sourceObject.getLogName(), source.getSourceId(), game)) { Card card = game.getExile().getCard(source.getSourceId(), game); if (card != null) { + game.addEffect(new BecomesFaceDownCreatureEffect(Duration.Custom, FaceDownType.MEGAMORPHED), source); return card.putOntoBattlefield(game, Zone.EXILED, source.getSourceId(), card.getOwnerId(), false, true); + } } } diff --git a/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.java b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.java new file mode 100644 index 0000000000..58cd5a3c54 --- /dev/null +++ b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/RithsCharm.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.phyrexiavsthecoalition; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class RithsCharm extends mage.sets.planeshift.RithsCharm { + + public RithsCharm(UUID ownerId) { + super(ownerId); + this.cardNumber = 60; + this.expansionSetCode = "DDE"; + } + + public RithsCharm(final RithsCharm card) { + super(card); + } + + @Override + public RithsCharm copy() { + return new RithsCharm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/planeshift/RithsCharm.java b/Mage.Sets/src/mage/sets/planeshift/RithsCharm.java new file mode 100644 index 0000000000..06a9185ac8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/planeshift/RithsCharm.java @@ -0,0 +1,74 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.planeshift; + +import java.util.UUID; +import mage.abilities.Mode; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.PreventDamageBySourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.game.permanent.token.SaprolingToken; +import mage.target.common.TargetNonBasicLandPermanent; + +/** + * + * @author FenrisulfrX + */ +public class RithsCharm extends CardImpl { + + public RithsCharm(UUID ownerId) { + super(ownerId, 122, "Rith's Charm", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{R}{G}{W}"); + this.expansionSetCode = "PLS"; + + // Choose one - Destroy target nonbasic land; + this.getSpellAbility().addEffect(new DestroyTargetEffect()); + this.getSpellAbility().addTarget(new TargetNonBasicLandPermanent()); + + // or put three 1/1 green Saproling creature tokens onto the battlefield; + Mode mode = new Mode(); + mode.getEffects().add(new CreateTokenEffect(new SaprolingToken(), 3)); + this.getSpellAbility().addMode(mode); + + // or prevent all damage a source of your choice would deal this turn. + mode = new Mode(); + mode.getEffects().add(new PreventDamageBySourceEffect()); + this.getSpellAbility().addMode(mode); + } + + public RithsCharm(final RithsCharm card) { + super(card); + } + + @Override + public RithsCharm copy() { + return new RithsCharm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java b/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java index 0649915a4a..ef147ed386 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/DryadMilitant.java @@ -56,8 +56,6 @@ public class DryadMilitant extends CardImpl { this.subtype.add("Dryad"); this.subtype.add("Soldier"); - this.color.setGreen(true); - this.color.setWhite(true); this.power = new MageInt(2); this.toughness = new MageInt(1); @@ -108,9 +106,14 @@ class DryadMilitantReplacementEffect extends ReplacementEffectImpl { return false; } + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (event.getType() == GameEvent.EventType.ZONE_CHANGE && ((ZoneChangeEvent)event).getToZone() == Zone.GRAVEYARD) { + if (((ZoneChangeEvent)event).getToZone() == Zone.GRAVEYARD) { Card card = game.getCard(event.getTargetId()); if (card != null && (card.getCardType().contains(CardType.SORCERY) || card.getCardType().contains(CardType.INSTANT))) { return true; diff --git a/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java b/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java new file mode 100644 index 0000000000..2c525b626d --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java @@ -0,0 +1,289 @@ +/* + * 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.tempest; + +import java.util.List; +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.DelayedTriggeredAbility; +import mage.abilities.Mode; +import mage.abilities.common.ActivateIfConditionActivatedAbility; +import mage.abilities.condition.common.MyTurnCondition; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.RequirementEffect; +import mage.abilities.effects.RestrictionEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.TurnPhase; +import mage.constants.Zone; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.Target; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetOpponent; +import mage.target.targetpointer.FixedTarget; +import mage.watchers.common.AttackedThisTurnWatcher; + +/** + * + * @author emerald000 + */ +public class OracleEnVec extends CardImpl { + + public OracleEnVec(UUID ownerId) { + super(ownerId, 243, "Oracle en-Vec", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{1}{W}"); + this.expansionSetCode = "TMP"; + this.subtype.add("Human"); + this.subtype.add("Wizard"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {tap}: Target opponent chooses any number of creatures he or she controls. During that player's next turn, the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack. Activate this ability only during your turn. + Ability ability = new ActivateIfConditionActivatedAbility(Zone.BATTLEFIELD, new OracleEnVecEffect(), new TapSourceCost(), MyTurnCondition.getInstance()); + ability.addTarget(new TargetOpponent()); + this.addAbility(ability, new AttackedThisTurnWatcher()); + } + + public OracleEnVec(final OracleEnVec card) { + super(card); + } + + @Override + public OracleEnVec copy() { + return new OracleEnVec(this); + } +} + +class OracleEnVecEffect extends OneShotEffect { + + OracleEnVecEffect() { + super(Outcome.Benefit); + this.staticText = "Target opponent chooses any number of creatures he or she controls. During that player's next turn, the chosen creatures attack if able, and other creatures can't attack. At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack"; + } + + OracleEnVecEffect(final OracleEnVecEffect effect) { + super(effect); + } + + @Override + public OracleEnVecEffect copy() { + return new OracleEnVecEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player opponent = game.getPlayer(this.getTargetPointer().getFirst(game, source)); + if (opponent != null) { + Target target = new TargetControlledCreaturePermanent(0, Integer.MAX_VALUE, new FilterControlledCreaturePermanent(), true); + if (target.choose(Outcome.Neutral, opponent.getId(), source.getSourceId(), game)) { + for (Permanent permanent : game.getBattlefield().getActivePermanents(new FilterControlledCreaturePermanent(), opponent.getId(), source.getSourceId(), game)) { + if (target.getTargets().contains(permanent.getId())) { + RequirementEffect effect = new OracleEnVecMustAttackRequirementEffect(); + effect.setTargetPointer(new FixedTarget(permanent.getId())); + game.addEffect(effect, source); + } + else { + RestrictionEffect effect = new OracleEnVecCantAttackRestrictionEffect(); + effect.setTargetPointer(new FixedTarget(permanent.getId())); + game.addEffect(effect, source); + } + } + DelayedTriggeredAbility delayedAbility = new OracleEnVecDelayedTriggeredAbility(game.getTurnNum(), target.getTargets()); + delayedAbility.setSourceId(source.getSourceId()); + delayedAbility.setControllerId(source.getControllerId()); + delayedAbility.setSourceObject(source.getSourceObject(game)); + game.addDelayedTriggeredAbility(delayedAbility); + return true; + } + } + return false; + } +} + +class OracleEnVecMustAttackRequirementEffect extends RequirementEffect { + + OracleEnVecMustAttackRequirementEffect() { + super(Duration.Custom); + } + + OracleEnVecMustAttackRequirementEffect(final OracleEnVecMustAttackRequirementEffect effect) { + super(effect); + } + + @Override + public OracleEnVecMustAttackRequirementEffect copy() { + return new OracleEnVecMustAttackRequirementEffect(this); + } + + @Override + public boolean applies(Permanent permanent, Ability source, Game game) { + return this.getTargetPointer().getFirst(game, source).equals(permanent.getId()); + } + + @Override + public boolean mustAttack(Game game) { + return true; + } + + @Override + public boolean mustBlock(Game game) { + return false; + } + + @Override + public boolean isInactive(Ability source, Game game) { + return startingTurn != game.getTurnNum() + && (game.getPhase().getType() == TurnPhase.END + && game.getActivePlayerId().equals(this.getTargetPointer().getFirst(game, source))); + } + + @Override + public String getText(Mode mode) { + return "{this} attack if able."; + } +} + +class OracleEnVecCantAttackRestrictionEffect extends RestrictionEffect { + + OracleEnVecCantAttackRestrictionEffect() { + super(Duration.Custom); + } + + OracleEnVecCantAttackRestrictionEffect(final OracleEnVecCantAttackRestrictionEffect effect) { + super(effect); + } + + @Override + public OracleEnVecCantAttackRestrictionEffect copy() { + return new OracleEnVecCantAttackRestrictionEffect(this); + } + + @Override + public boolean applies(Permanent permanent, Ability source, Game game) { + return this.getTargetPointer().getFirst(game, source).equals(permanent.getId()); + } + + @Override + public boolean canAttack(Game game) { + return false; + } + + @Override + public boolean isInactive(Ability source, Game game) { + return startingTurn != game.getTurnNum() + && (game.getPhase().getType() == TurnPhase.END + && game.getActivePlayerId().equals(this.getTargetPointer().getFirst(game, source))); + } + + @Override + public String getText(Mode mode) { + return "{this} can't attack."; + } +} + +class OracleEnVecDelayedTriggeredAbility extends DelayedTriggeredAbility { + + private final int startingTurn; + + OracleEnVecDelayedTriggeredAbility(int startingTurn, List chosenCreatures) { + super(new OracleEnVecDestroyEffect(chosenCreatures), Duration.EndOfGame, true); + this.startingTurn = startingTurn; + } + + OracleEnVecDelayedTriggeredAbility(final OracleEnVecDelayedTriggeredAbility ability) { + super(ability); + this.startingTurn = ability.startingTurn; + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.END_TURN_STEP_PRE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return startingTurn != game.getTurnNum() && game.getActivePlayerId().equals(event.getPlayerId()); + } + + @Override + public OracleEnVecDelayedTriggeredAbility copy() { + return new OracleEnVecDelayedTriggeredAbility(this); + } + + @Override + public String getRule() { + return "At the beginning of that turn's end step, destroy each of the chosen creatures that didn't attack."; + } +} + +class OracleEnVecDestroyEffect extends OneShotEffect { + + private final List chosenCreatures; + + OracleEnVecDestroyEffect(List chosenCreatures) { + super(Outcome.DestroyPermanent); + this.chosenCreatures = chosenCreatures; + this.staticText = "destroy each of the chosen creatures that didn't attack"; + } + + OracleEnVecDestroyEffect(final OracleEnVecDestroyEffect effect) { + super(effect); + this.chosenCreatures = effect.chosenCreatures; + } + + @Override + public OracleEnVecDestroyEffect copy() { + return new OracleEnVecDestroyEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + AttackedThisTurnWatcher watcher = (AttackedThisTurnWatcher) game.getState().getWatchers().get("AttackedThisTurn"); + if (watcher != null) { + for (UUID targetId : chosenCreatures) { + if (!watcher.getAttackedThisTurnCreatures().contains(targetId)) { + Effect effect = new DestroyTargetEffect(); + effect.setTargetPointer(new FixedTarget(targetId)); + effect.apply(game, source); + } + } + return true; + } + return false; + } +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java index 1b2ce7f42e..451d18381c 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java @@ -80,12 +80,12 @@ public class DryadMilitantTest extends CardTestPlayerBase { /** * Tests if Dryad Militant dies by damage spell, the - * spell don't gets exiled + * spell don't get exiled */ @Test public void testDiesByDestroy() { addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1); - addCard(Zone.BATTLEFIELD, playerA, "Plains", 1); + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 1); addCard(Zone.HAND, playerA, "Terminate"); addCard(Zone.BATTLEFIELD, playerB, "Dryad Militant"); @@ -95,7 +95,8 @@ public class DryadMilitantTest extends CardTestPlayerBase { execute(); assertLife(playerB, 20); - + + assertHandCount(playerA, "Terminate", 0); assertGraveyardCount(playerB, "Terminate", 1); } } diff --git a/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java b/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java index b3fb6f7777..86eb9f7482 100644 --- a/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/PreventDamageBySourceEffect.java @@ -54,7 +54,11 @@ public class PreventDamageBySourceEffect extends PreventionEffectImpl { public PreventDamageBySourceEffect(FilterObject filterObject) { super(Duration.EndOfTurn); - this.target = new TargetSource(filterObject); + if (filterObject.getMessage().equals("a")) { + this.target = new TargetSource(new FilterObject("source")); + } else { + this.target = new TargetSource(new FilterObject(filterObject.getMessage() + " source")); + } staticText = "Prevent all damage " + filterObject.getMessage() + " source of your choice would deal this turn"; } diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index b745c7415c..f359587a5a 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -1,4 +1,4 @@ -Ardent Plea|Alara Reborn|1|U|{1}{W}{U}|Enchantment|||Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)$Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)| +Ardent Plea|Alara Reborn|1|U|{1}{W}{U}|Enchantment|||Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)$Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)| Aven Mimeomancer|Alara Reborn|2|R|{1}{W}{U}|Creature - Bird Wizard|3|1|Flying$At the beginning of your upkeep, you may put a feather counter on target creature. If you do, that creature is 3/1 and has flying for as long as it has a feather counter on it.| Ethercaste Knight|Alara Reborn|3|C|{W}{U}|Artifact Creature - Human Knight|1|3|Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)| Ethersworn Shieldmage|Alara Reborn|4|C|{1}{W}{U}|Artifact Creature - Vedalken Wizard|2|2|Flash$When Ethersworn Shieldmage enters the battlefield, prevent all damage that would be dealt to artifact creatures this turn.| @@ -415,19 +415,19 @@ Strip Mine|Antiquities|71|R||Land|||{tap}: Add {1} to your mana pool.$${tap}, Sa Strip Mine|Antiquities|71|R||Land|||{tap}: Add {1} to your mana pool.$${tap}, Sacrifice Strip Mine: Destroy target land.| Strip Mine|Antiquities|71|R||Land|||{tap}: Add {1} to your mana pool.$${tap}, Sacrifice Strip Mine: Destroy target land.| Strip Mine|Antiquities|71|U||Land|||{tap}: Add {1} to your mana pool.$${tap}, Sacrifice Strip Mine: Destroy target land.| -Urza's Mine|Antiquities|75|C||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Antiquities|75|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Antiquities|75|C||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Antiquities|75|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Antiquities|79|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Antiquities|79|C||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Antiquities|79|C||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Antiquities|79|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Antiquities|75|C||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Antiquities|75|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Antiquities|75|C||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Antiquities|75|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Antiquities|79|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Antiquities|79|C||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Antiquities|79|C||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Antiquities|79|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| Candelabra of Tawnos|Antiquities|8|R|{1}|Artifact|||{X}, {tap}: Untap X target lands.| -Urza's Tower|Antiquities|83|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Antiquities|83|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Antiquities|83|C||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Antiquities|83|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Antiquities|83|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Antiquities|83|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Antiquities|83|C||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Antiquities|83|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| Artifact Blast|Antiquities|87|C|{R}|Instant|||Counter target artifact spell.| Atog|Antiquities|88|C|{1}{R}|Creature - Atog|1|2|Sacrifice an artifact: Atog gets +2/+2 until end of turn.| Detonate|Antiquities|89|U|{X}{R}|Sorcery|||Destroy target artifact with converted mana cost X. It can't be regenerated. Detonate deals X damage to that artifact's controller.| @@ -628,7 +628,7 @@ Desert Twister|Arabian Nights|30|U|{4}{G}{G}|Sorcery|||Destroy target permanent. Drop of Honey|Arabian Nights|31|R|{G}|Enchantment|||At the beginning of your upkeep, destroy the creature with the least power. It can't be regenerated. If two or more creatures are tied for least power, you choose one of them.$When there are no creatures on the battlefield, sacrifice Drop of Honey.| Erhnam Djinn|Arabian Nights|32|R|{3}{G}|Creature - Djinn|4|5|At the beginning of your upkeep, target non-Wall creature an opponent controls gains forestwalk until your next upkeep.| Ghazban Ogre|Arabian Nights|33|C|{G}|Creature - Ogre|2|2|At the beginning of your upkeep, if a player has more life than each other player, the player with the most life gains control of Ghazbán Ogre.| -Ifh-B�ff Efreet|Arabian Nights|34|R|{2}{G}{G}|Creature - Efreet|3|3|Flying${G}: Ifh-Bíff Efreet deals 1 damage to each creature with flying and each player. Any player may activate this ability.| +Ifh-B ff Efreet|Arabian Nights|34|R|{2}{G}{G}|Creature - Efreet|3|3|Flying${G}: Ifh-Bíff Efreet deals 1 damage to each creature with flying and each player. Any player may activate this ability.| Metamorphosis|Arabian Nights|35|C|{G}|Sorcery|||As an additional cost to cast Metamorphosis, sacrifice a creature.$Add X mana of any one color to your mana pool, where X is one plus the sacrificed creature's converted mana cost. Spend this mana only to cast creature spells.| Nafs Asp|Arabian Nights|36|C|{G}|Creature - Snake|1|1|Whenever Nafs Asp deals damage to a player, that player loses 1 life at the beginning of his or her next draw step unless he or she pays {1} before that draw step.| Nafs Asp|Arabian Nights|36|C|{G}|Creature - Snake|1|1|Whenever Nafs Asp deals damage to a player, that player loses 1 life at the beginning of his or her next draw step unless he or she pays {1} before that draw step.| @@ -677,7 +677,7 @@ Ebony Horse|Arabian Nights|76|R|{3}|Artifact|||{2}, {tap}: Untap target attackin Flying Carpet|Arabian Nights|77|U|{4}|Artifact|||{2}, {tap}: Target creature gains flying until end of turn.| Jandor's Ring|Arabian Nights|78|R|{6}|Artifact|||{2}, {tap}, Discard the last card you drew this turn: Draw a card.| Jandor's Saddlebags|Arabian Nights|79|R|{2}|Artifact|||{3}, {tap}: Untap target creature.| -Jun�n Efreet|Arabian Nights|8|R|{1}{B}{B}|Creature - Efreet|3|3|Flying$At the beginning of your upkeep, sacrifice Junún Efreet unless you pay {B}{B}.| +Jun n Efreet|Arabian Nights|8|R|{1}{B}{B}|Creature - Efreet|3|3|Flying$At the beginning of your upkeep, sacrifice Junún Efreet unless you pay {B}{B}.| Jeweled Bird|Arabian Nights|80|U|{1}|Artifact|||Remove Jeweled Bird from your deck before playing if you're not playing for ante.${tap}: Put Jeweled Bird into the ante. If you do, put all other cards you own from the ante into your graveyard, then draw a card.| Pyramids|Arabian Nights|81|R|{6}|Artifact|||{2}: Choose one - Destroy target Aura attached to a land; or the next time target land would be destroyed this turn, remove all damage marked on it instead.| Ring of Ma'ruf|Arabian Nights|82|R|{5}|Artifact|||{5}, {tap}, Exile Ring of Ma'rûf: The next time you would draw a card this turn, instead choose a card you own from outside the game and put it into your hand.| @@ -1797,10 +1797,10 @@ Time Stop|Champions of Kamigawa|97|R|{4}{U}{U}|Instant|||End the turn. (Exile The Unspeakable|Champions of Kamigawa|98|R|{6}{U}{U}{U}|Legendary Creature - Spirit|6|7|Flying, trample$Whenever The Unspeakable deals combat damage to a player, you may return target Arcane card from your graveyard to your hand.| Uyo, Silent Prophet|Champions of Kamigawa|99|R|{4}{U}{U}|Legendary Creature - Moonfolk Wizard|4|4|Flying${2}, Return two lands you control to their owner's hand: Copy target instant or sorcery spell. You may choose new targets for the copy.| Banshee|Chronicles|1|U|{2}{B}{B}|Creature - Spirit|0|1|{X}, {tap}: Banshee deals half X damage, rounded down, to target creature or player, and half X damage, rounded up, to you.| -Urza's Tower|Chronicles|102|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Chronicles|102|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Chronicles|102|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Chronicles|102|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Chronicles|102|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Chronicles|102|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Chronicles|102|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Chronicles|102|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| Arcades Sabboth|Chronicles|106|R|{2}{G}{G}{W}{W}{U}{U}|Legendary Creature - Elder Dragon|7|7|Flying$At the beginning of your upkeep, sacrifice Arcades Sabboth unless you pay {G}{W}{U}.$Each untapped creature you control gets +0/+2 as long as it's not attacking.${W}: Arcades Sabboth gets +0/+1 until end of turn.| Axelrod Gunnarson|Chronicles|107|R|{4}{B}{B}{R}{R}|Legendary Creature - Giant|5|5|Trample$Whenever a creature dealt damage by Axelrod Gunnarson this turn dies, you gain 1 life and Axelrod deals 1 damage to target player.| Ayesha Tanaka|Chronicles|108|R|{W}{W}{U}{U}|Legendary Creature - Human Artificer|2|2|Banding (Any creatures with banding, and up to one without, can attack in a band. Bands are blocked as a group. If any creatures with banding you control are blocking or being blocked by a creature, you divide that creature's combat damage, not its controller, among any of the creatures it's being blocked by or is blocking.)${tap}: Counter target activated ability from an artifact source unless that ability's controller pays {W}. (Mana abilities can't be targeted.)| @@ -1913,14 +1913,14 @@ Triassic Egg|Chronicles|90|R|{4}|Artifact|||{3}, {tap}: Put a hatchling counter Voodoo Doll|Chronicles|91|R|{6}|Artifact|||At the beginning of your upkeep, put a pin counter on Voodoo Doll.$At the beginning of your end step, if Voodoo Doll is untapped, destroy Voodoo Doll and it deals damage to you equal to the number of pin counters on it.${X}{X}, {tap}: Voodoo Doll deals damage equal to the number of pin counters on it to target creature or player. X is the number of pin counters on Voodoo Doll.| City of Brass|Chronicles|92|R||Land|||Whenever City of Brass becomes tapped, it deals 1 damage to you.${tap}: Add one mana of any color to your mana pool.| Safe Haven|Chronicles|93|R||Land|||{2}, {tap}: Exile target creature you control.$At the beginning of your upkeep, you may sacrifice Safe Haven. If you do, return each card exiled with Safe Haven to the battlefield under its owner's control.| -Urza's Mine|Chronicles|94|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Chronicles|94|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Chronicles|94|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Chronicles|94|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Chronicles|98|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Chronicles|98|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Chronicles|98|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Chronicles|98|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Chronicles|94|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Chronicles|94|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Chronicles|94|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Chronicles|94|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Chronicles|98|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Chronicles|98|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Chronicles|98|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Chronicles|98|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| Animate Wall|Classic Sixth Edition|1|R|{W}|Enchantment - Aura|||Enchant Wall$Enchanted Wall can attack as though it didn't have defender.| Circle of Protection: Green|Classic Sixth Edition|10|C|{1}{W}|Enchantment|||{1}: The next time a green source of your choice would deal damage to you this turn, prevent that damage.| Spell Blast|Classic Sixth Edition|100|C|{X}{U}|Instant|||Counter target spell with converted mana cost X.| @@ -3808,7 +3808,7 @@ Plains|Duel Decks: Venser vs. Koth|40|L||Basic Land - Plains|||W| Island|Duel Decks: Venser vs. Koth|41|L||Basic Land - Island|||U| Island|Duel Decks: Venser vs. Koth|42|L||Basic Land - Island|||U| Island|Duel Decks: Venser vs. Koth|43|L||Basic Land - Island|||U| -Koth of the Hammer|Duel Decks: Venser vs. Koth|44|M|{2}{R}{R}|Planeswalker - Koth|||+1: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land.$-2: Add {R} to your mana pool for each Mountain you control.$-5: You get an emblem with "Mountains you control have �{tap}: This land deals 1 damage to target creature or player.'"| +Koth of the Hammer|Duel Decks: Venser vs. Koth|44|M|{2}{R}{R}|Planeswalker - Koth|||+1: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land.$-2: Add {R} to your mana pool for each Mountain you control.$-5: You get an emblem with "Mountains you control have {tap}: This land deals 1 damage to target creature or player.'"| Plated Geopede|Duel Decks: Venser vs. Koth|45|C|{1}{R}|Creature - Insect|1|1|First strike$Landfall - Whenever a land enters the battlefield under your control, Plated Geopede gets +2/+2 until end of turn.| Pygmy Pyrosaur|Duel Decks: Venser vs. Koth|46|C|{1}{R}|Creature - Lizard|1|1|Pygmy Pyrosaur can't block.$${R}: Pygmy Pyrosaur gets +1/+0 until end of turn.| Pilgrim's Eye|Duel Decks: Venser vs. Koth|47|C|{3}|Artifact Creature - Thopter|1|1|Flying$When Pilgrim's Eye enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.| @@ -4104,10 +4104,10 @@ Elfhame Palace|Eighth Edition|324|U||Land|||Elfhame Palace enters the battlefiel Salt Marsh|Eighth Edition|325|U||Land|||Salt Marsh enters the battlefield tapped.${tap}: Add {U} or {B} to your mana pool.| Shivan Oasis|Eighth Edition|326|U||Land|||Shivan Oasis enters the battlefield tapped.${tap}: Add {R} or {G} to your mana pool.| Urborg Volcano|Eighth Edition|327|U||Land|||Urborg Volcano enters the battlefield tapped.${tap}: Add {B} or {R} to your mana pool.| -Urza's Mine|Eighth Edition|328|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Eighth Edition|329|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Eighth Edition|328|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Eighth Edition|329|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| Pacifism|Eighth Edition|33|C|{1}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature can't attack or block.| -Urza's Tower|Eighth Edition|330|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Eighth Edition|330|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| Plains|Eighth Edition|331|L||Basic Land - Plains|||W| Plains|Eighth Edition|332|L||Basic Land - Plains|||W| Plains|Eighth Edition|333|L||Basic Land - Plains|||W| @@ -5257,9 +5257,9 @@ Swamp|Fifth Edition|442|L||Basic Land - Swamp|||B| Swamp|Fifth Edition|442|L||Basic Land - Swamp|||B| Swamp|Fifth Edition|442|L||Basic Land - Swamp|||B| Underground River|Fifth Edition|446|R||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {U} or {B} to your mana pool. Underground River deals 1 damage to you.| -Urza's Mine|Fifth Edition|447|C||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Fifth Edition|448|C||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Tower|Fifth Edition|449|C||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Mine|Fifth Edition|447|C||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Fifth Edition|448|C||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Tower|Fifth Edition|449|C||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| Nether Shadow|Fifth Edition|45|R|{B}{B}|Creature - Spirit|1|1|Haste$At the beginning of your upkeep, if Nether Shadow is in your graveyard with three or more creature cards above it, you may put Nether Shadow onto the battlefield.| Nightmare|Fifth Edition|46|R|{5}{B}|Creature - Nightmare Horse|*|*|Flying$Nightmare's power and toughness are each equal to the number of Swamps you control.| Paralyze|Fifth Edition|47|C|{B}|Enchantment - Aura|||Enchant creature$When Paralyze enters the battlefield, tap enchanted creature.$Enchanted creature doesn't untap during its controller's untap step.$At the beginning of the upkeep of enchanted creature's controller, that player may pay {4}. If he or she does, untap the creature.| @@ -5516,7 +5516,7 @@ Circle of Protection: Green|Fourth Edition|266|C|{1}{W}|Enchantment|||{1}: The n Circle of Protection: Red|Fourth Edition|267|C|{1}{W}|Enchantment|||{1}: The next time a red source of your choice would deal damage to you this turn, prevent that damage.| Circle of Protection: White|Fourth Edition|268|C|{1}{W}|Enchantment|||{1}: The next time a white source of your choice would deal damage to you this turn, prevent that damage.| Conversion|Fourth Edition|269|U|{2}{W}{W}|Enchantment|||At the beginning of your upkeep, sacrifice Conversion unless you pay {W}{W}.$All Mountains are Plains.| -Jun�n Efreet|Fourth Edition|27|U|{1}{B}{B}|Creature - Efreet|3|3|Flying$At the beginning of your upkeep, sacrifice Junún Efreet unless you pay {B}{B}.| +Jun n Efreet|Fourth Edition|27|U|{1}{B}{B}|Creature - Efreet|3|3|Flying$At the beginning of your upkeep, sacrifice Junún Efreet unless you pay {B}{B}.| Crusade|Fourth Edition|270|R|{W}{W}|Enchantment|||White creatures get +1/+1.| Death Ward|Fourth Edition|271|C|{W}|Instant|||Regenerate target creature.| Disenchant|Fourth Edition|272|C|{1}{W}|Instant|||Destroy target artifact or enchantment.| @@ -5706,66 +5706,66 @@ Venom|Fourth Edition|96|C|{1}{G}{G}|Enchantment - Aura|||Enchant creature$Whenev Relic Bind|Fourth Edition|97|R|{2}{U}|Enchantment - Aura|||Enchant artifact an opponent controls$Whenever enchanted artifact becomes tapped, choose one - Relic Bind deals 1 damage to target player; or target player gains 1 life.| Sea Serpent|Fourth Edition|98|C|{5}{U}|Creature - Serpent|5|5|Sea Serpent can't attack unless defending player controls an Island.$$When you control no Islands, sacrifice Sea Serpent.| Segovian Leviathan|Fourth Edition|99|U|{4}{U}|Creature - Leviathan|3|3|Islandwalk| -River Boa|Friday Night Magic|1|U|{1}{G}|Creature � Snake|2|1|Islandwalk${G}: Regenerate River Boa.| +River Boa|Friday Night Magic|1|U|{1}{G}|Creature Snake|2|1|Islandwalk${G}: Regenerate River Boa.| Terror|Friday Night Magic|2|U|{1}{B}|Instant|||Destroy target nonartifact, nonblack creature. It can't be regenerated.| -Longbow Archer|Friday Night Magic|3|U|{W}{W}| Creature � Human Soldier Archer|2|2|First strike$Reach (This creature can block creatures with flying.)| +Longbow Archer|Friday Night Magic|3|U|{W}{W}| Creature Human Soldier Archer|2|2|First strike$Reach (This creature can block creatures with flying.)| Volcanic Geyser|Friday Night Magic|4|U|{X}{R}{R}|Instant|||Volcanic Geyser deals X damage to target creature or player.| Mind Warp|Friday Night Magic|5|U|{X}{3}{B}|Sorcery|||Look at target player's hand and choose X cards from it. That player discards those cards.| Shock|Friday Night Magic|6|U|{R}|Instant|||Shock deals 2 damage to target creature or player.| -Staunch Defenders|Friday Night Magic|7|U|{3}{W}{W}|Creature � Human Soldier|3|4|When Staunch Defenders enters the battlefield, you gain 4 life.| +Staunch Defenders|Friday Night Magic|7|U|{3}{W}{W}|Creature Human Soldier|3|4|When Staunch Defenders enters the battlefield, you gain 4 life.| Giant Growth|Friday Night Magic|8|U|{G}|Instant|||Target creature gets +3/+3 until end of turn.| -Prodigal Sorcerer|Friday Night Magic|9|U|{2}{U}|Creature � Human Wizard|1|1|{tap}: Prodigal Sorcerer deals 1 damage to target creature or player.| +Prodigal Sorcerer|Friday Night Magic|9|U|{2}{U}|Creature Human Wizard|1|1|{tap}: Prodigal Sorcerer deals 1 damage to target creature or player.| Stone Rain|Friday Night Magic|10|U|{2}{R}|Sorcery|||Destroy target land.| -Llanowar Elves|Friday Night Magic|11|U|{G}|Creature � Elf Druid|1|1|{tap}: Add {G} to your mana pool.| +Llanowar Elves|Friday Night Magic|11|U|{G}|Creature Elf Druid|1|1|{tap}: Add {G} to your mana pool.| Swords to Plowshares|Friday Night Magic|12|U|{W}|Instant|||Exile target creature. Its controller gains life equal to its power.| -Ophidian|Friday Night Magic|13|U|{2}{U}|Creature � Snake|1|3|Whenever Ophidian attacks and isn't blocked, you may draw a card. If you do, Ophidian assigns no combat damage this turn.| -Jackal Pup|Friday Night Magic|14|U|{R}|Creature � Hound|2|1|Whenever Jackal Pup is dealt damage, it deals that much damage to you.| -Quirion Ranger|Friday Night Magic|15|U|{G}|Creature � Elf|1|1|Return a Forest you control to its owner's hand: Untap target creature. Activate this ability only once each turn.| -Carnophage|Friday Night Magic|16|U|{B}|Creature � Zombie|2|2|At the beginning of your upkeep, tap Carnophage unless you pay 1 life.| +Ophidian|Friday Night Magic|13|U|{2}{U}|Creature Snake|1|3|Whenever Ophidian attacks and isn't blocked, you may draw a card. If you do, Ophidian assigns no combat damage this turn.| +Jackal Pup|Friday Night Magic|14|U|{R}|Creature Hound|2|1|Whenever Jackal Pup is dealt damage, it deals that much damage to you.| +Quirion Ranger|Friday Night Magic|15|U|{G}|Creature Elf|1|1|Return a Forest you control to its owner's hand: Untap target creature. Activate this ability only once each turn.| +Carnophage|Friday Night Magic|16|U|{B}|Creature Zombie|2|2|At the beginning of your upkeep, tap Carnophage unless you pay 1 life.| Impulse|Friday Night Magic|17|U|{1}{U}|Instant|||Look at the top four cards of your library. Put one of them into your hand and the rest on the bottom of your library in any order.| Fireblast|Friday Night Magic|18|U|{4}{R}{R}|Instant|||You may sacrifice two Mountains rather than pay Fireblast's mana cost.$Fireblast deals 4 damage to target creature or player.| -Soltari Priest|Friday Night Magic|19|U|{W}{W}|Creature � Soltari Cleric|2|1|Protection from red$Shadow (This creature can block or be blocked by only creatures with shadow.)| -Albino Troll|Friday Night Magic|20|U|{1}{G}|Creature � Troll|3|3|Echo {1}{G} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)${1}{G}: Regenerate Albino Troll.| +Soltari Priest|Friday Night Magic|19|U|{W}{W}|Creature Soltari Cleric|2|1|Protection from red$Shadow (This creature can block or be blocked by only creatures with shadow.)| +Albino Troll|Friday Night Magic|20|U|{1}{G}|Creature Troll|3|3|Echo {1}{G} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)${1}{G}: Regenerate Albino Troll.| Dissipate|Friday Night Magic|21|U|{1}{U}{U}|Instant|||Counter target spell. If that spell is countered this way, exile it instead of putting it into its owner's graveyard.| -Black Knight|Friday Night Magic|22|U|{B}{B}|Creature � Human Knight|2|2|First strike (This creature deals combat damage before creatures without first strike.)$Protection from white (This creature can't be blocked, targeted, dealt damage, or enchanted by anything white.)| -Wall of Blossoms|Friday Night Magic|23|U|{1}{G}|Creature � Plant Wall|0|4|Defender$When Wall of Blossoms enters the battlefield, draw a card.| -Fireslinger|Friday Night Magic|24|U|{1}{R}|Creature � Human Wizard|1|1|{tap}: Fireslinger deals 1 damage to target creature or player and 1 damage to you.| +Black Knight|Friday Night Magic|22|U|{B}{B}|Creature Human Knight|2|2|First strike (This creature deals combat damage before creatures without first strike.)$Protection from white (This creature can't be blocked, targeted, dealt damage, or enchanted by anything white.)| +Wall of Blossoms|Friday Night Magic|23|U|{1}{G}|Creature Plant Wall|0|4|Defender$When Wall of Blossoms enters the battlefield, draw a card.| +Fireslinger|Friday Night Magic|24|U|{1}{R}|Creature Human Wizard|1|1|{tap}: Fireslinger deals 1 damage to target creature or player and 1 damage to you.| Drain Life|Friday Night Magic|25|U|{X}{1}{B}|Sorcery|||Spend only black mana on X.$Drain Life deals X damage to target creature or player. You gain life equal to the damage dealt, but not more life than the player's life total before Drain Life dealt damage or the creature's toughness.| Aura of Silence|Friday Night Magic|26|U|{1}{W}{W}|Enchantment|||Artifact and enchantment spells your opponents cast cost {2} more to cast.$Sacrifice Aura of Silence: Destroy target artifact or enchantment.| -Forbid|Friday Night Magic|27|U|{1}{U}{U}|Instant|||Buyback�Discard two cards. (You may discard two cards in addition to any other costs as you cast this spell. If you do, put this card into your hand as it resolves.)$Counter target spell.| -Spike Feeder|Friday Night Magic|28|U|{1}{G}{G}|Creature � Spike|0|0|Spike Feeder enters the battlefield with two +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Feeder: Put a +1/+1 counter on target creature.$Remove a +1/+1 counter from Spike Feeder: You gain 2 life.| -Mogg Fanatic|Friday Night Magic|29|U|{R}|Creature � Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.| -White Knight|Friday Night Magic|30|U|{W}{W}|Creature � Human Knight|2|2|First strike (This creature deals combat damage before creatures without first strike.)$Protection from black (This creature can't be blocked, targeted, dealt damage, or enchanted by anything black.)| +Forbid|Friday Night Magic|27|U|{1}{U}{U}|Instant|||Buyback Discard two cards. (You may discard two cards in addition to any other costs as you cast this spell. If you do, put this card into your hand as it resolves.)$Counter target spell.| +Spike Feeder|Friday Night Magic|28|U|{1}{G}{G}|Creature Spike|0|0|Spike Feeder enters the battlefield with two +1/+1 counters on it.${2}, Remove a +1/+1 counter from Spike Feeder: Put a +1/+1 counter on target creature.$Remove a +1/+1 counter from Spike Feeder: You gain 2 life.| +Mogg Fanatic|Friday Night Magic|29|U|{R}|Creature Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.| +White Knight|Friday Night Magic|30|U|{W}{W}|Creature Human Knight|2|2|First strike (This creature deals combat damage before creatures without first strike.)$Protection from black (This creature can't be blocked, targeted, dealt damage, or enchanted by anything black.)| Disenchant|Friday Night Magic|31|U|{1}{W}|Instant|||Destroy target artifact or enchantment.| -Bottle Gnomes|Friday Night Magic|32|U|{3}|Artifact Creature � Gnome|1|3|Sacrifice Bottle Gnomes: You gain 3 life.| -Muscle Sliver|Friday Night Magic|33|U|{1}{G}|Creature � Sliver|1|1|All Sliver creatures get +1/+1.| -Crystalline Sliver|Friday Night Magic|34|U|{W}{U}|Creature � Sliver|2|2|All Slivers have shroud. (They can't be the targets of spells or abilities.)| +Bottle Gnomes|Friday Night Magic|32|U|{3}|Artifact Creature Gnome|1|3|Sacrifice Bottle Gnomes: You gain 3 life.| +Muscle Sliver|Friday Night Magic|33|U|{1}{G}|Creature Sliver|1|1|All Sliver creatures get +1/+1.| +Crystalline Sliver|Friday Night Magic|34|U|{W}{U}|Creature Sliver|2|2|All Slivers have shroud. (They can't be the targets of spells or abilities.)| Capsize|Friday Night Magic|35|U|{1}{U}{U}|Instant|||Buyback {3} (You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.)$Return target permanent to its owner's hand.| -Priest of Titania|Friday Night Magic|36|U|{1}{G}|Creature � Elf Druid|1|1|{tap}: Add {G} to your mana pool for each Elf on the battlefield.| +Priest of Titania|Friday Night Magic|36|U|{1}{G}|Creature Elf Druid|1|1|{tap}: Add {G} to your mana pool for each Elf on the battlefield.| Goblin Bombardment|Friday Night Magic|37|U|{1}{R}|Enchantment|||Sacrifice a creature: Goblin Bombardment deals 1 damage to target creature or player.| -Scragnoth|Friday Night Magic|38|U|{4}{G}|Creature � Beast|3|4|Scragnoth can't be countered.$Protection from blue| +Scragnoth|Friday Night Magic|38|U|{4}{G}|Creature Beast|3|4|Scragnoth can't be countered.$Protection from blue| Smother|Friday Night Magic|39|U|{1}{B}|Instant|||Destroy target creature with converted mana cost 3 or less. It can't be regenerated.| -Whipcorder|Friday Night Magic|40|U|{W}{W}|Creature � Human Soldier Rebel|2|2|{W}, {tap}: Tap target creature.$Morph {W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| -Sparksmith|Friday Night Magic|41|U|{1}{R}|Creature � Goblin|1|1|{tap}: Sparksmith deals X damage to target creature and X damage to you, where X is the number of Goblins on the battlefield.| -Krosan Tusker|Friday Night Magic|42|U|{5}{G}{G}|Creature � Boar Beast|6|5|Cycling {2}{G} ({2}{G}, Discard this card: Draw a card.)$When you cycle Krosan Tusker, you may search your library for a basic land card, reveal that card, put it into your hand, then shuffle your library.| -Withered Wretch|Friday Night Magic|43|U|{B}{B}|Creature � Zombie Cleric|2|2|{1}: Exile target card from a graveyard.| -Willbender|Friday Night Magic|44|U|{1}{U}|Creature � Human Wizard|Morph {1}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Willbender is turned face up, change the target of target spell or ability with a single target.| +Whipcorder|Friday Night Magic|40|U|{W}{W}|Creature Human Soldier Rebel|2|2|{W}, {tap}: Tap target creature.$Morph {W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| +Sparksmith|Friday Night Magic|41|U|{1}{R}|Creature Goblin|1|1|{tap}: Sparksmith deals X damage to target creature and X damage to you, where X is the number of Goblins on the battlefield.| +Krosan Tusker|Friday Night Magic|42|U|{5}{G}{G}|Creature Boar Beast|6|5|Cycling {2}{G} ({2}{G}, Discard this card: Draw a card.)$When you cycle Krosan Tusker, you may search your library for a basic land card, reveal that card, put it into your hand, then shuffle your library.| +Withered Wretch|Friday Night Magic|43|U|{B}{B}|Creature Zombie Cleric|2|2|{1}: Exile target card from a graveyard.| +Willbender|Friday Night Magic|44|U|{1}{U}|Creature Human Wizard|Morph {1}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Willbender is turned face up, change the target of target spell or ability with a single target.| Slice and Dice|Friday Night Magic|45|U|{4}{R}{R}|Sorcery|||Slice and Dice deals 4 damage to each creature.$Cycling {2}{R} ({2}{R}, Discard this card: Draw a card.)$When you cycle Slice and Dice, you may have it deal 1 damage to each creature.| -Silver Knight|Friday Night Magic|46|U|{W}{W}|Creature � Human Knight|2|2|First strike$Protection from red| -Krosan Warchief|Friday Night Magic|47|U|{2}{G}|Creature � Beast|2|2|Beast spells you cast cost {1} less to cast.${1}{G}: Regenerate target Beast.| +Silver Knight|Friday Night Magic|46|U|{W}{W}|Creature Human Knight|2|2|First strike$Protection from red| +Krosan Warchief|Friday Night Magic|47|U|{2}{G}|Creature Beast|2|2|Beast spells you cast cost {1} less to cast.${1}{G}: Regenerate target Beast.| Lightning Rift|Friday Night Magic|48|U|{1}{R}|Enchantment|||Whenever a player cycles a card, you may pay {1}. If you do, Lightning Rift deals 2 damage to target creature or player.| -Carrion Feeder|Friday Night Magic|49|U|{B}|Creature � Zombie|1|1|Carrion Feeder can't block.$acrifice a creature: Put a +1/+1 counter on Carrion Feeder.| +Carrion Feeder|Friday Night Magic|49|U|{B}|Creature Zombie|1|1|Carrion Feeder can't block.$acrifice a creature: Put a +1/+1 counter on Carrion Feeder.| Treetop Village|Friday Night Magic|50|U|||Land|||Treetop Village enters the battlefield tapped.${tap}: Add {G} to your mana pool.${1}{G}: Treetop Village becomes a 3/3 green Ape creature with trample until end of turn. It's still a land. (If it would assign enough damage to its blockers to destroy them, you may have it assign the rest of its damage to defending player or planeswalker.)| Accumulated Knowledge|Friday Night Magic|51|U|{1}{U}|Instant|||Draw a card, then draw cards equal to the number of cards named Accumulated Knowledge in all graveyards.| -Avalanche Riders|Friday Night Magic|52|U|{3}{R}|Creature � Human Nomad|2|2|Haste$Echo {3}{R} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)$When Avalanche Riders enters the battlefield, destroy target land.| +Avalanche Riders|Friday Night Magic|52|U|{3}{R}|Creature Human Nomad|2|2|Haste$Echo {3}{R} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)$When Avalanche Riders enters the battlefield, destroy target land.| Reanimate|Friday Night Magic|53|U|{B}|Sorcery|||Put target creature card from a graveyard onto the battlefield under your control. You lose life equal to its converted mana cost.| -Mother of Runes|Friday Night Magic|54|U|{W}|Creature � Human Cleric|1|1|{tap}: Target creature you control gains protection from the color of your choice until end of turn.| +Mother of Runes|Friday Night Magic|54|U|{W}|Creature Human Cleric|1|1|{tap}: Target creature you control gains protection from the color of your choice until end of turn.| Brainstorm|Friday Night Magic|55|U|{U}|Instant|||Draw three cards, then put two cards from your hand on top of your library in any order.| Rancor|Friday Night Magic|56|U|{G}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+0 and has trample.$When Rancor is put into a graveyard from the battlefield, return Rancor to its owner's hand.| Seal of Cleansing|Friday Night Magic|57|U|{1}{W}|Enchantment|||Sacrifice Seal of Cleansing: Destroy target artifact or enchantment.| -Flametongue Kavu|Friday Night Magic|58|U|{2}{R}|Creature � Kavu|4|2|When Flametongue Kavu enters the battlefield, it deals 4 damage to target creature.| -Blastoderm|Friday Night Magic|59|U|{2}{G}{G}|Creature � Beast|5|5|Shroud (This creature can't be the target of spells or abilities.)$Fading 3 (This creature enters the battlefield with three fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)| -Cabal Therapy|Friday Night Magic|60|U|{B}|Sorcery|||Name a nonland card. Target player reveals his or her hand and discards all cards with that name.$Flashback�Sacrifice a creature. (You may cast this card from your graveyard for its flashback cost. Then exile it.)| +Flametongue Kavu|Friday Night Magic|58|U|{2}{R}|Creature Kavu|4|2|When Flametongue Kavu enters the battlefield, it deals 4 damage to target creature.| +Blastoderm|Friday Night Magic|59|U|{2}{G}{G}|Creature Beast|5|5|Shroud (This creature can't be the target of spells or abilities.)$Fading 3 (This creature enters the battlefield with three fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.)| +Cabal Therapy|Friday Night Magic|60|U|{B}|Sorcery|||Name a nonland card. Target player reveals his or her hand and discards all cards with that name.$Flashback Sacrifice a creature. (You may cast this card from your graveyard for its flashback cost. Then exile it.)| Fact or Fiction|Friday Night Magic|61|U|{3}{U}|Instant|||Reveal the top five cards of your library. An opponent separates those cards into two piles. Put one pile into your hand and the other into your graveyard.| Juggernaut|Friday Night Magic|62|U|{4}|Artifact Creature - Juggernaut|5|3|Juggernaut attacks each turn if able.$Juggernaut can't be blocked by Walls.| Circle of Protection: Red|Friday Night Magic|63|U|{1}{W}|Enchantment|||{1}: The next time a red source of your choice would deal damage to you this turn, prevent that damage.| @@ -5773,22 +5773,22 @@ Kird Ape|Friday Night Magic|64|U|{R}|Creature - Ape|1|1|Kird Ape gets +1/+2 as l Duress|Friday Night Magic|65|U|{B}|Sorcery|||Target opponent reveals his or her hand. You choose a noncreature, nonland card from it. That player discards that card.| Counterspell|Friday Night Magic|66|U|{U}{U}|Instant|||Counter target spell.| Icy Manipulator|Friday Night Magic|67|U|{4}|Artifact|||{1}, {T}: Tap target artifact, creature, or land.| -Elves of Deep Shadow|Friday Night Magic|68|U|{G}|Creature � Elf Druid|1|1|{tap}: Add {B} to your mana pool. Elves of Deep Shadow deals 1 damage to you.| -Armadillo Cloak|Friday Night Magic|69|U|{1}{W}{G}|Enchantment � Aura|||Enchant creature$Enchanted creature gets +2/+2 and has trample.$Whenever enchanted creature deals damage, you gain that much life.| +Elves of Deep Shadow|Friday Night Magic|68|U|{G}|Creature Elf Druid|1|1|{tap}: Add {B} to your mana pool. Elves of Deep Shadow deals 1 damage to you.| +Armadillo Cloak|Friday Night Magic|69|U|{1}{W}{G}|Enchantment Aura|||Enchant creature$Enchanted creature gets +2/+2 and has trample.$Whenever enchanted creature deals damage, you gain that much life.| Terminate|Friday Night Magic|70|U|{B}{R}|Instant|||Destroy target creature. It can't be regenerated.| Lobotomy|Friday Night Magic|71|U|{2}{U}{B}|Sorcery|||Target player reveals his or her hand, then you choose a card other than a basic land card from it. Search that player's graveyard, hand, and library for all cards with the same name as the chosen card and exile them. Then that player shuffles his or her library.| -Goblim Warchief|Friday Night Magic|72|U|{1}{R}{R}|Creature � Goblin|2|2|Goblin spells you cast cost {1} less to cast.$Goblin creatures you control have haste.| -Wild Mongrel|Friday Night Magic|73|U|{1}{G}|Creature � Hound|2|2|Discard a card: Wild Mongrel gets +1/+1 and becomes the color of your choice until end of turn.| +Goblim Warchief|Friday Night Magic|72|U|{1}{R}{R}|Creature Goblin|2|2|Goblin spells you cast cost {1} less to cast.$Goblin creatures you control have haste.| +Wild Mongrel|Friday Night Magic|73|U|{1}{G}|Creature Hound|2|2|Discard a card: Wild Mongrel gets +1/+1 and becomes the color of your choice until end of turn.| Chainer's Edict|Friday Night Magic|74|U|{1}{B}|Sorcery|||Target player sacrifices a creature.$Flashback {5}{B}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.)| Circular Logic|Friday Night Magic|75|U|{2}{U}|Instant|||Counter target spell unless its controller pays {1} for each card in your graveyard.$Madness {U} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)| Astral Slide|Friday Night Magic|76|U|{2}{W}|Enchantment|||Whenever a player cycles a card, you may exile target creature. If you do, return that card to the battlefield under its owner's control at the beginning of the next end step.| -Arrogant Wurm|Friday Night Magic|77|U|{3}{G}{G}|Creature � Wurm|4|4|Trample$Madness {2}{G} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)| +Arrogant Wurm|Friday Night Magic|77|U|{3}{G}{G}|Creature Wurm|4|4|Trample$Madness {2}{G} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)| Life|Friday Night Magic|78a|U|{G}|Sorcery|||All lands you control become 1/1 creatures until end of turn. They're still lands.| Death|Friday Night Magic|78b|U|{1}{B}|Sorcery|||Return target creature card from your graveyard to the battlefield. You lose life equal to its converted mana cost.| Fire|Friday Night Magic|79a|U|{1}{R}|Instant|||Fire deals 2 damage divided as you choose among one or two target creatures and/or players.| Ice|Friday Night Magic|79b|U|{1}{U}|Instant|||Tap target permanent.$Draw a card.| Firebolt|Friday Night Magic|80|U|{R}|Sorcery|||Firebolt deals 2 damage to target creature or player.$Flashback {4}{R} $(You may cast this card from your graveyard for its flashback cost. Then exile it.)| -Deep Analysis|Friday Night Magic|81|U|{3}{U}|Sorcery|||Target player draws two cards.$Flashback�{1}{U}, Pay 3 life. (You may cast this card from your graveyard for its flashback cost. Then exile it.)| +Deep Analysis|Friday Night Magic|81|U|{3}{U}|Sorcery|||Target player draws two cards.$Flashback {1}{U}, Pay 3 life. (You may cast this card from your graveyard for its flashback cost. Then exile it.)| Gerrard's Verdict|Friday Night Magic|82|U|{W}{B}|Sorcery|||Target player discards two cards. You gain 3 life for each land card discarded this way.| Basking Rootwalla|Friday Night Magic|83|U|{G}|Creature - Lizard|1|1|{1}{G}: Basking Rootwalla gets +2/+2 until end of turn. Activate this ability only once each turn.$Madness {0} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)| Wonder|Friday Night Magic|84|U|{3}{U}|Creature - Incarnation|2|2|Flying$As long as Wonder is in your graveyard and you control an Island, creatures you control have flying.| @@ -5801,60 +5801,60 @@ Roar of the Wurm|Friday Night Magic|90|U|{6}{G}|Sorcery|||Put a 6/6 green Wurm c Force Spike|Friday Night Magic|91|U|{U}|Instant|||Counter target spell unless its controller pays {1}.| Remand|Friday Night Magic|92|U|{1}{U}|Instant|||Counter target spell. If that spell is countered this way, put it into its owner's hand instead of into that player's graveyard.$Draw a card.| Tormod's Crypt|Friday Night Magic|93|U|{0}|Artifact|||{tap}, Sacrifice Tormod's Crypt: Exile all cards from target player's graveyard.| -Eternal Witness|Friday Night Magic|94|U|{1}{G}{G}|Creature � Human Shaman|2|1|When Eternal Witness enters the battlefield, you may return target card from your graveyard to your hand.| +Eternal Witness|Friday Night Magic|94|U|{1}{G}{G}|Creature Human Shaman|2|1|When Eternal Witness enters the battlefield, you may return target card from your graveyard to your hand.| Tendrils of Agony|Friday Night Magic|95|U|{2}{B}{B}|Sorcery|||Target player loses 2 life and you gain 2 life.$Storm (When you cast this spell, copy it for each spell cast before it this turn. You may choose new targets for the copies.)| Pendelhaven|Friday Night Magic|96|U||Legendary Land|||{T}: Add {G} to your mana pool.${T}: Target 1/1 creature gets +1/+2 until end of turn.| Resurrection|Friday Night Magic|97|U|{2}{W}{W}|Sorcery|||Return target creature card from your graveyard to the battlefield.| -Wall of Roots|Friday Night Magic|98|U|{1}{G}|Creature � Plant Wall|0|5|Defender$Put a -0/-1 counter on Wall of Roots: Add {G} to your mana pool. Activate this ability only once each turn.| +Wall of Roots|Friday Night Magic|98|U|{1}{G}|Creature Plant Wall|0|5|Defender$Put a -0/-1 counter on Wall of Roots: Add {G} to your mana pool. Activate this ability only once each turn.| Desert|Friday Night Magic|99|U||Land - Desert|||{T}: Add {1} to your mana pool.${T}: Desert deals 1 damage to target attacking creature. Activate this ability only during the end of combat step.| Thirst for Knowledge|Friday Night Magic|100|U|{2}{U}|Instant|||Draw three cards. Then discard two cards unless you discard an artifact card.| Serrated Arrows|Friday Night Magic|101|U|{4}|Artifact|||Serrated Arrows enters the battlefield with three arrowhead counters on it.$At the beginning of your upkeep, if there are no arrowhead counters on Serrated Arrows, sacrifice it.${T}, Remove an arrowhead counter from Serrated Arrows: Put a -1/-1 counter on target creature.| -Isochron Scepter|Friday Night Magic|102|U|{2}|Artifact|||Imprint � When Isochron Scepter enters the battlefield, you may exile an instant card with converted mana cost 2 or less from your hand.${2}, {T}: You may copy the exiled card. If you do, you may cast the copy without paying its mana cost.| +Isochron Scepter|Friday Night Magic|102|U|{2}|Artifact|||Imprint When Isochron Scepter enters the battlefield, you may exile an instant card with converted mana cost 2 or less from your hand.${2}, {T}: You may copy the exiled card. If you do, you may cast the copy without paying its mana cost.| Shrapnel Blast|Friday Night Magic|103|U|{1}{R}|Instant|||As an additional cost to cast Shrapnel Blast, sacrifice an artifact.$Shrapnel Blast deals 5 damage to target creature or player.| Magma Jet|Friday Night Magic|104|U|{1}{R}|Instant|||Magma Jet deals 2 damage to target creature or player. Scry 2. (Look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)| -Myr Enforcer|Friday Night Magic|105|U|{7}|Artifact Creature � Myr|4|4|Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.)| -Kitchen Finks|Friday Night Magic|106|U|{1}{GW}{GW}|Creature � Ouphe|3|2|When Kitchen Finks enters the battlefield, you gain 2 life.$Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)| -Merrow Reejerey|Friday Night Magic|107|U|{2}{U}|Creature � Merfolk Soldier|2|2|Other Merfolk creatures you control get +1/+1.$Whenever you cast a Merfolk spell, you may tap or untap target permanent.| -Wren's Run Vanquisher|Friday Night Magic|108|U|{1}{G}|Creature � Elf Warrior|3|3|As an additional cost to cast Wren's Run Vanquisher, reveal an Elf card from your hand or pay {3}.$Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)| -Mulldrifter|Friday Night Magic|109|U|{4}{U}|Creature � Elemental|2|2|Flying$When Mulldrifter enters the battlefield, draw two cards.$Evoke {2}{U} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.)| -Murderous Redcap|Friday Night Magic|110|U|{2}{BR}{BR}|Creature � Goblin Assassin|2|2|When Murderous Redcap enters the battlefield, it deals damage equal to its power to target creature or player.$Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)| -Lightning Greaves|Friday Night Magic|111|U|{2}|Artifact � Equipment|||Equipped creature has haste and shroud. (It can't be the target of spells or abilities.)$Equip {0}| -Watchwolf|Friday Night Magic|112|U|{W}{G}|Creature � Wolf|3|3|| +Myr Enforcer|Friday Night Magic|105|U|{7}|Artifact Creature Myr|4|4|Affinity for artifacts (This spell costs {1} less to cast for each artifact you control.)| +Kitchen Finks|Friday Night Magic|106|U|{1}{GW}{GW}|Creature Ouphe|3|2|When Kitchen Finks enters the battlefield, you gain 2 life.$Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)| +Merrow Reejerey|Friday Night Magic|107|U|{2}{U}|Creature Merfolk Soldier|2|2|Other Merfolk creatures you control get +1/+1.$Whenever you cast a Merfolk spell, you may tap or untap target permanent.| +Wren's Run Vanquisher|Friday Night Magic|108|U|{1}{G}|Creature Elf Warrior|3|3|As an additional cost to cast Wren's Run Vanquisher, reveal an Elf card from your hand or pay {3}.$Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)| +Mulldrifter|Friday Night Magic|109|U|{4}{U}|Creature Elemental|2|2|Flying$When Mulldrifter enters the battlefield, draw two cards.$Evoke {2}{U} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.)| +Murderous Redcap|Friday Night Magic|110|U|{2}{BR}{BR}|Creature Goblin Assassin|2|2|When Murderous Redcap enters the battlefield, it deals damage equal to its power to target creature or player.$Persist (When this creature dies, if it had no -1/-1 counters on it, return it to the battlefield under its owner's control with a -1/-1 counter on it.)| +Lightning Greaves|Friday Night Magic|111|U|{2}|Artifact Equipment|||Equipped creature has haste and shroud. (It can't be the target of spells or abilities.)$Equip {0}| +Watchwolf|Friday Night Magic|112|U|{W}{G}|Creature Wolf|3|3|| Browbeat|Friday Night Magic|113|U|{2}{R}|Sorcery|||Any player may have Browbeat deal 5 damage to him or her. If no one does, target player draws three cards.| Oblivion Ring|Friday Night Magic|114|U|{2}{W}|Enchantment|||When Oblivion Ring enters the battlefield, exile another target nonland permanent.$When Oblivion Ring leaves the battlefield, return the exiled card to the battlefield under its owner's control.| -Sakura-Tribe Elder|Friday Night Magic|115|U|{1}{G}|Creature � Snake Shaman|1|1|Sacrifice Sakura-Tribe Elder: Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.| -Tidehollow Sculler|Friday Night Magic|116|U|{W}{B}|Artifact Zombie � Creature|2|2|When Tidehollow Sculler enters the battlefield, target opponent reveals his or her hand and you choose a nonland card from it. Exile that card.$When Tidehollow Sculler leaves the battlefield, return the exiled card to its owner's hand.| +Sakura-Tribe Elder|Friday Night Magic|115|U|{1}{G}|Creature Snake Shaman|1|1|Sacrifice Sakura-Tribe Elder: Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library.| +Tidehollow Sculler|Friday Night Magic|116|U|{W}{B}|Artifact Zombie Creature|2|2|When Tidehollow Sculler enters the battlefield, target opponent reveals his or her hand and you choose a nonland card from it. Exile that card.$When Tidehollow Sculler leaves the battlefield, return the exiled card to its owner's hand.| Ghostly Prison|Friday Night Magic|117|U|{2}{W}|Enchantment|||Creatures can't attack you unless their controller pays {2} for each creature he or she controls that's attacking you.| Ancient Ziggurat|Friday Night Magic|118|U||Land|||{T}: Add one mana of any color to your mana pool. Spend this mana only to cast a creature spell.| -Bloodbraid Elf|Friday Night Magic|119|U|{2}{R}{G}|Creature � Elf Berserker|3|2|Haste$Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)| +Bloodbraid Elf|Friday Night Magic|119|U|{2}{R}{G}|Creature Elf Berserker|3|2|Haste$Cascade (When you cast this spell, exile cards from the top of your library until you exile a nonland card that costs less. You may cast it without paying its mana cost. Put the exiled cards on the bottom in a random order.)| Cloudpost|Friday Night Magic|120|U||Land - Locus|||Cloudpost enters the battlefield tapped.${T}: Add {1} to your mana pool for each Locus on the battlefield.| -Elvish Visionary|Friday Night Magic|121|U|{1}{G}|Creature � Elf Shaman|1|1|When Elvish Visionary enters the battlefield, draw a card.| -Anathemancer|Friday Night Magic|122|U|{1}{B}{R}|Creature � Zombie Wizard|2|2|When Anathemancer enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.$Unearth {5}{B}{R} ({5}{B}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)| +Elvish Visionary|Friday Night Magic|121|U|{1}{G}|Creature Elf Shaman|1|1|When Elvish Visionary enters the battlefield, draw a card.| +Anathemancer|Friday Night Magic|122|U|{1}{B}{R}|Creature Zombie Wizard|2|2|When Anathemancer enters the battlefield, it deals damage to target player equal to the number of nonbasic lands that player controls.$Unearth {5}{B}{R} ({5}{B}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)| Krosan Grip|Friday Night Magic|123|U|{2}{G}|Instant|||Split second (As long as this spell is on the stack, players can't cast spells or activate abilities that aren't mana abilities.)$Destroy target artifact or enchantment.| -Qasali Pridemage|Friday Night Magic|124|U|{W}{G}|Creature � Cat Wizard|2|2|Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)${1}, Sacrifice Qasali Pridemage: Destroy target artifact or enchantment.| -Rift Bolt|Friday Night Magic|125|U|{2}{R}|Sorcery|||Rift Bolt deals 3 damage to target creature or player.$Suspend 1�{R} (Rather than cast this card from your hand, you may pay {R} and exile it with a time counter on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)| -Gatekeeper of Malakir|Friday Night Magic|126|U|{B}{B}|Creature � Vampire Warrior|2|2|Kicker {B} (You may pay an additional {B} as you cast this spell.)$When Gatekeeper of Malakir enters the battlefield, if it was kicked, target player sacrifices a creature.| -Wild Nacatl|Friday Night Magic|127|U|{G}|Creature � Cat Warrior|1|1|Wild Nacatl gets +1/+1 as long as you control a Mountain.$Wild Nacatl gets +1/+1 as long as you control a Plains.| +Qasali Pridemage|Friday Night Magic|124|U|{W}{G}|Creature Cat Wizard|2|2|Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)${1}, Sacrifice Qasali Pridemage: Destroy target artifact or enchantment.| +Rift Bolt|Friday Night Magic|125|U|{2}{R}|Sorcery|||Rift Bolt deals 3 damage to target creature or player.$Suspend 1 {R} (Rather than cast this card from your hand, you may pay {R} and exile it with a time counter on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)| +Gatekeeper of Malakir|Friday Night Magic|126|U|{B}{B}|Creature Vampire Warrior|2|2|Kicker {B} (You may pay an additional {B} as you cast this spell.)$When Gatekeeper of Malakir enters the battlefield, if it was kicked, target player sacrifices a creature.| +Wild Nacatl|Friday Night Magic|127|U|{G}|Creature Cat Warrior|1|1|Wild Nacatl gets +1/+1 as long as you control a Mountain.$Wild Nacatl gets +1/+1 as long as you control a Plains.| Everflowing Chalice|Friday Night Magic|128|U|{0}|Artifact|||Multikicker {2} (You may pay an additional {2} any number of times as you cast this spell.)$Everflowing Chalice enters the battlefield with a charge counter on it for each time it was kicked.${T}: Add {1} to your mana pool for each charge counter on Everflowing Chalice.| -Spellstutter Sprite|Friday Night Magic|129|U|{1}{U}|Creature � Faerie Wizard|1|1|Flash$Flying$When Spellstutter Sprite enters the battlefield, counter target spell with converted mana cost X or less, where X is the number of Faeries you control.| -Wall of Omens|Friday Night Magic|130|U|{1}{W}|Creature � Wall|0|4|Defender$When Wall of Omens enters the battlefield, draw a card.| -Artisan of Kozilek|Friday Night Magic|131|U|{9}|Creature � Eldrazi|10|9|When you cast Artisan of Kozilek, you may return target creature card from your graveyard to the battlefield.$Annihilator 2 (Whenever this creature attacks, defending player sacrifices two permanents.)| -Squadron Hawk|Friday Night Magic|132|U|{1}{W}|Creature � Bird|1|1|Flying$When Squadron Hawk enters the battlefield, you may search your library for up to three cards named Squadron Hawk, reveal them, put them into your hand, then shuffle your library.| -Rhox War Monk|Friday Night Magic|133|U|{W}{U}{G}|Creature � Rhino Monk|3|4|Lifelink| +Spellstutter Sprite|Friday Night Magic|129|U|{1}{U}|Creature Faerie Wizard|1|1|Flash$Flying$When Spellstutter Sprite enters the battlefield, counter target spell with converted mana cost X or less, where X is the number of Faeries you control.| +Wall of Omens|Friday Night Magic|130|U|{1}{W}|Creature Wall|0|4|Defender$When Wall of Omens enters the battlefield, draw a card.| +Artisan of Kozilek|Friday Night Magic|131|U|{9}|Creature Eldrazi|10|9|When you cast Artisan of Kozilek, you may return target creature card from your graveyard to the battlefield.$Annihilator 2 (Whenever this creature attacks, defending player sacrifices two permanents.)| +Squadron Hawk|Friday Night Magic|132|U|{1}{W}|Creature Bird|1|1|Flying$When Squadron Hawk enters the battlefield, you may search your library for up to three cards named Squadron Hawk, reveal them, put them into your hand, then shuffle your library.| +Rhox War Monk|Friday Night Magic|133|U|{W}{U}{G}|Creature Rhino Monk|3|4|Lifelink| Jace's Ingenuity|Friday Night Magic|134|U|{3}{U}{U}|Instant|||Draw three cards.| Cultivate|Friday Night Magic|135|U|{2}{G}|Sorcery|||Search your library for up to two basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. Then shuffle your library.| Teetering Peaks|Friday Night Magic|136|U||Land|||Teetering Peaks enters the battlefield tapped.$When Teetering Peaks enters the battlefield, target creature gets +2/+0 until end of turn.${T}: Add {R} to your mana pool.| Contagion Clasp|Friday Night Magic|137|U|{2}|Artifact|||When Contagion Clasp enters the battlefield, put a -1/-1 counter on target creature.${4}, {T}: Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.)| Go for the Throat|Friday Night Magic|138|U|{1}{B}|Instant|||Destroy target nonartifact creature.| Savage Lands|Friday Night Magic|139|U||Land|||Savage Lands enters the battlefield tapped.${T}: Add {B}, {R}, or {G} to your mana pool.| -Glistener Elf|Friday Night Magic|140|U|{G}|Creature � Elf Warrior|1|1|Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)| +Glistener Elf|Friday Night Magic|140|U|{G}|Creature Elf Warrior|1|1|Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)| Despise|Friday Night Magic|141|U|{B}|Sorcery|||Target opponent reveals his or her hand. You choose a creature or planeswalker card from it. That player discards that card.| Tectonic Edge|Friday Night Magic|142|U||Land|||{T}: Add {1} to your mana pool.${1}, {T}, Sacrifice Tectonic Edge: Destroy target nonbasic land. Activate this ability only if an opponent controls four or more lands.| Dismember|Friday Night Magic|143|U|{1}{BP}{BP}|Instant|||({BP} can be paid with either {B} or 2 life.)$Target creature gets -5/-5 until end of turn.| Ancient Grudge|Friday Night Magic|144|U|{1}{R}|Instant|||Destroy target artifact.$Flashback {G} (You may cast this card from your graveyard for its flashback cost. Then exile it.)| -Acidic Slime|Friday Night Magic|145|U|{3}{G}{G}|Creature � Ooze|2|2|Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)$When Acidic Slime enters the battlefield, destroy target artifact, enchantment, or land.| +Acidic Slime|Friday Night Magic|145|U|{3}{G}{G}|Creature Ooze|2|2|Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)$When Acidic Slime enters the battlefield, destroy target artifact, enchantment, or land.| Forbidden Alchemy|Friday Night Magic|146|U|{3}{U}|Instant|||Look at the top four cards of your library. Put one of them into your hand and the rest into your graveyard.$Flashback {6}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.)| -Avacyn's Pilgrim|Friday Night Magic|147|U|{G}|Creature � Human Monk|1|1|{T}: Add {W} to your mana pool.| +Avacyn's Pilgrim|Friday Night Magic|147|U|{G}|Creature Human Monk|1|1|{T}: Add {W} to your mana pool.| Lingering Souls|Friday Night Magic|148|U|{2}{W}|Sorcery|||Put two 1/1 white Spirit creature tokens with flying onto the battlefield.$Flashback {1}{B} (You may cast this card from your graveyard for its flashback cost. Then exile it.)| Evolving Wilds|Friday Night Magic|149|U||Land|||{T}, Sacrifice Evolving Wilds: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.| Pillar of Flame|Friday Night Magic|150|U|{R}|Sorcery|||Pillar of Flame deals 2 damage to target creature or player. If a creature dealt damage this way would die this turn, exile it instead.| @@ -5864,18 +5864,18 @@ Reliquary Tower|Friday Night Magic|153|U||Land|||You have no maximum hand size.$ Farseek|Friday Night Magic|154|U|{1}{G}|Sorcery|||Search your library for a Plains, Island, Swamp, or Mountain card and put it onto the battlefield tapped. Then shuffle your library.| call of the Conclave|Friday Night Magic|155|U|{W}{G}|Sorcery|||Put a 3/3 green Centaur creature token onto the battlefield.| Judge's Familiar|Friday Night Magic|156|U|{WU}|Creature - Bird|1|1|Flying$Sacrifice Judge's Familiar: Counter target instant or sorcery spell unless its controller pays {1}.| -Izzet Charm|Friday Night Magic|157|U|{U}{R}|Instant|||Choose one � Counter target noncreature spell unless its controller pays {2}; or Izzet Charm deals 2 damage to target creature; or draw two cards, then discard two cards.| +Izzet Charm|Friday Night Magic|157|U|{U}{R}|Instant|||Choose one Counter target noncreature spell unless its controller pays {2}; or Izzet Charm deals 2 damage to target creature; or draw two cards, then discard two cards.| Rakdos Cackler|Friday Night Magic|158|U|{BR}|Creature - Devil|1|1|Unleash (You may have this creature enter the battlefield with a +1/+1 counter on it. It can't block as long as it has a +1/+1 counter on it.)| -Dimir Charm|Friday Night Magic|159|U|{U}{B}|Instant|||Choose one � Counter target sorcery spell; or destroy target creature with power 2 or less; or look at the top three cards of target player's library, then put one back and the rest into that player's graveyard.| +Dimir Charm|Friday Night Magic|159|U|{U}{B}|Instant|||Choose one Counter target sorcery spell; or destroy target creature with power 2 or less; or look at the top three cards of target player's library, then put one back and the rest into that player's graveyard.| Experiment One|Friday Night Magic|160|U|{G}|Creature - Human Oooze|1|1|Evolve (Whenever a creature enters the battlefield under your control, if that creature has greater power or toughness than this creature, put a +1/+1 counter on this creature.)|Remove two +1/+1 counters from Experiment One: Regenerate Experiment One.| -Ghor-Clan Rampager|Friday Night Magic|161|U|{2}{R}{G}|Creature - Beast|4|4|Trample$Bloodrush � {R}{G}, Discard Ghor-Clan Rampager: Target attacking creature gets +4/+4 and gains trample until end of turn.| +Ghor-Clan Rampager|Friday Night Magic|161|U|{2}{R}{G}|Creature - Beast|4|4|Trample$Bloodrush {R}{G}, Discard Ghor-Clan Rampager: Target attacking creature gets +4/+4 and gains trample until end of turn.| Grisly Salvage|Friday Night Magic|162|U|{B}{G}|Instant|||Reveal the top five cards of your library. You may put a creature or land card from among them into your hand. Put the rest into your graveyard.| Sin COllector|Friday Night Magic|163|U|{1}{W}{B}|Creature - Human Cleric|2|1|When Sin Collector enters the battlefield, target opponent reveals his or her hand. You choose an instant or sorcery card from it and exile that card.| Warleader's Helix|Friday Night Magic|164|U|{2}{W}{R}|Instant|||Warleader's Helix deals 4 damage to target creature or player and you gain 4 life.| Elvish Mystic|Friday Night Magic|165|U|{G}|Creature - Elf Druid|1|1|{T}: Add {G} to your mana pool.| Banisher Priest|Friday Night Magic|166|U|{1}{W}{W}Creature - Human Cleric||2|2|When Banisher Priest enters the battlefield, exile target creature an opponent controls until Banisher Priest leaves the battlefield. (That creature returns under its owner's control.)| Encroaching Wastes|Friday Night Magic|167|U||Land|||{T}: Add {1} to your mana pool.${4}, {T}, Sacrifice Encroaching Wastes: Destroy target nonbasic land.| -Tormented Hero|Friday Night Magic|168|U|{B}|Creature - Human Warrior|2|1|Tormented Hero enters the battlefield tapped.$Heroic � Whenever you cast a spell that targets Tormented Hero, each opponent loses 1 life. You gain life equal to the life lost this way.| +Tormented Hero|Friday Night Magic|168|U|{B}|Creature - Human Warrior|2|1|Tormented Hero enters the battlefield tapped.$Heroic Whenever you cast a spell that targets Tormented Hero, each opponent loses 1 life. You gain life equal to the life lost this way.| Dissolve|Friday Night Magic|169|U|{1}{U}{U}|Instant|||Counter target spell. Scry 1. (Look at the top card of your library. You may put that card on the bottom of your library.)| Magma Spray|Friday Night Magic|170|U|{R}|Instant|||Magma Spray deals 2 damage to target creature. If that creature would die this turn, exile it instead.| Bile Blight|Friday Night Magic|171|U|{B}{B}|Instant|||Target creature and all other creatures with the same name as that creature get -3/-3 until end of turn.| @@ -6144,46 +6144,46 @@ Char-Rumbler|Future Sight|96|U|{2}{R}{R}|Creature - Elemental|-1|3|Double strike Emberwilde Augur|Future Sight|97|C|{1}{R}|Creature - Goblin Shaman|2|1|Sacrifice Emberwilde Augur: Emberwilde Augur deals 3 damage to target player. Activate this ability only during your upkeep.| Fatal Attraction|Future Sight|98|C|{2}{R}|Enchantment - Aura|||Enchant creature$When Fatal Attraction enters the battlefield, it deals 2 damage to enchanted creature.$At the beginning of your upkeep, Fatal Attraction deals 4 damage to enchanted creature.| Gathan Raiders|Future Sight|99|C|{3}{R}{R}|Creature - Human Warrior|3|3|Hellbent - Gathan Raiders gets +2/+2 as long as you have no cards in hand.$Morph-Discard a card. (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| -Reya Dawnbringer|Game Day|1|R|{6}{W}{W}{W}|Legendary Creature � Angel|4|6|Flying$At the beginning of your upkeep, you may return target creature card from your graveyard to the battlefield.| -Liliana's Specter|Game Day|2|C|{1}{B}{B}|Creature � Specter|2|1|Flying$When Liliana's Specter enters the battlefield, each opponent discards a card.| -Mitotic Slime|Game Day|3|R|{4}{G}|Creature � Ooze|4|4|When Mitotic Slime dies, put two 2/2 green Ooze creature tokens onto the battlefield. They have "When this creature dies, put two 1/1 green Ooze creature tokens onto the battlefield."| -Memnite|Game Day|4|U|{0}|Artifact Creature � Construct|1|1|| +Reya Dawnbringer|Game Day|1|R|{6}{W}{W}{W}|Legendary Creature Angel|4|6|Flying$At the beginning of your upkeep, you may return target creature card from your graveyard to the battlefield.| +Liliana's Specter|Game Day|2|C|{1}{B}{B}|Creature Specter|2|1|Flying$When Liliana's Specter enters the battlefield, each opponent discards a card.| +Mitotic Slime|Game Day|3|R|{4}{G}|Creature Ooze|4|4|When Mitotic Slime dies, put two 2/2 green Ooze creature tokens onto the battlefield. They have "When this creature dies, put two 1/1 green Ooze creature tokens onto the battlefield."| +Memnite|Game Day|4|U|{0}|Artifact Creature Construct|1|1|| Tempered Steel|Game Day|5|R|{1}{W}{W}|Enchantment|||Artifact creatures you control get +2/+2.| -Treasure Mage|Game Day|6|U|{2}{U}|Creature � Human Wizard|2|2|When Treasure Mage enters the battlefield, you may search your library for an artifact card with converted mana cost 6 or greater, reveal that card, and put it into your hand. If you do, shuffle your library.| +Treasure Mage|Game Day|6|U|{2}{U}|Creature Human Wizard|2|2|When Treasure Mage enters the battlefield, you may search your library for an artifact card with converted mana cost 6 or greater, reveal that card, and put it into your hand. If you do, shuffle your library.| Black Sun's Zenith|Game Day|7|R|{X}{B}{B}|Sorcery|||Put X -1/-1 counters on each creature. Shuffle Black Sun's Zenith into its owner's library.| -Myr Superion|Game Day|8|R|{2}|Artifact Creature � Myr|5|6|Spend only mana produced by creatures to cast Myr Superion.| -Priest of Urabrask|Game Day|9|U|{2}{R}|Creature � Human Cleric|2|1|When Priest of Urabrask enters the battlefield, add {R}{R}{R} to your mana pool.| -Stormblood Berserker|Game Day|10|U|{1}{R}|Creature � Human Berserker|1|1|Bloodthirst 2 (If an opponent was dealt damage this turn, this creature enters the battlefield with two +1/+1 counters on it.)$Stormblood Berserker can't be blocked except by two or more creatures.| -Dungrove Elder|Game Day|11|R|{2}{G}|Creature � Treefolk|*|*| Hexproof (This creature can't be the target of spells or abilities your opponents control.)$Dungrove Elder's power and toughness are each equal to the number of Forests you control.| -Diregraf Ghoul|Game Day|12|U|{B}|Creature � Zombie|2|2|Diregraf Ghoul enters the battlefield tapped.| -Elite Inquisitor|Game Day|13|R|{W}{W}|Creature � Human Soldier|2|2|First strike$Vigilance$Protection from Vampires, from Werewolves, and from Zombies| +Myr Superion|Game Day|8|R|{2}|Artifact Creature Myr|5|6|Spend only mana produced by creatures to cast Myr Superion.| +Priest of Urabrask|Game Day|9|U|{2}{R}|Creature Human Cleric|2|1|When Priest of Urabrask enters the battlefield, add {R}{R}{R} to your mana pool.| +Stormblood Berserker|Game Day|10|U|{1}{R}|Creature Human Berserker|1|1|Bloodthirst 2 (If an opponent was dealt damage this turn, this creature enters the battlefield with two +1/+1 counters on it.)$Stormblood Berserker can't be blocked except by two or more creatures.| +Dungrove Elder|Game Day|11|R|{2}{G}|Creature Treefolk|*|*| Hexproof (This creature can't be the target of spells or abilities your opponents control.)$Dungrove Elder's power and toughness are each equal to the number of Forests you control.| +Diregraf Ghoul|Game Day|12|U|{B}|Creature Zombie|2|2|Diregraf Ghoul enters the battlefield tapped.| +Elite Inquisitor|Game Day|13|R|{W}{W}|Creature Human Soldier|2|2|First strike$Vigilance$Protection from Vampires, from Werewolves, and from Zombies| Zombie Apocalypse|Game Day|14|R|{3}{B}{B}{B}|Sorcery|||Return all Zombie creature cards from your graveyard to the battlefield tapped, then destroy all Humans.| -Strangleroot Geist|Game Day|15|U|{G}{G}|Creature � Spirit|2|1|Haste$Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)| -Suture Priest|Game Day|16|C|{1}{W}|Creature � Cleric|1|1|Whenever another creature enters the battlefield under your control, you may gain 1 life.$Whenever a creature enters the battlefield under an opponent's control, you may have that player lose 1 life.| +Strangleroot Geist|Game Day|15|U|{G}{G}|Creature Spirit|2|1|Haste$Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)| +Suture Priest|Game Day|16|C|{1}{W}|Creature Cleric|1|1|Whenever another creature enters the battlefield under your control, you may gain 1 life.$Whenever a creature enters the battlefield under an opponent's control, you may have that player lose 1 life.| Pristine Talisman|Game Day|17|C|{3}|Artifact|||{T}: Add {1} to your mana pool. You gain 1 life.| -Latch Seeker|Game Day|18|U|{1}{U}{U}|Creature � Spirit|3|1|Latch Seeker can't be blocked.| +Latch Seeker|Game Day|18|U|{1}{U}{U}|Creature Spirit|3|1|Latch Seeker can't be blocked.| Killing Wave|Game Day|19|R|{X}{B}|Sorcery|||For each creature, its controller sacrifices it unless he or she pays X life.| Magmaquake|Game Day|20|R|{X}{R}{R}|Instant|||Magmaquake deals X damage to each creature without flying and each planeswalker.| -Mwonvuli Beast Tracker|Game Day|21|U|{1}{G}{G}|Creature � Human Scout|2|1|When Mwonvuli Beast Tracker enters the battlefield, search your library for a creature card with deathtouch, hexproof, reach, or trample and reveal it. Shuffle your library and put that card on top of it.| -Cryptborn Horror|Game Day|22|R|{1}{BR}{BR}||Creature � Horror|0|0|Trample$Cryptborn Horror enters the battlefield with X +1/+1 counters on it, where X is the total life lost by your opponents this turn.| -Dryad Militant|Game Day|23|U|{GW}|Creature � Dryad Soldier|2|1|If an instant or sorcery card would be put into a graveyard from anywhere, exile it instead.| -Firemane Avenger|Game Day|24|R|{2}{W}{R}|Creature � Angel|3|3|Flying$Battalion � Whenever Firemane Avenger and at least two other creatures attack, Firemane Avenger deals 3 damage to target creature or player and you gain 3 life.| -Zameck Guildmage|Game Day|25|U|{U}{G}|Creature � Elf Wizard|2|2|{G}{U}: This turn, each creature you control enters the battlefield with an additional +1/+1 counter on it.${G}{U}, Remove a +1/+1 counter from a creature you control: Draw a card.| -Melek, Izzet Paragon|Game Day|26|R|{4}{U}{R}|Legendary Creature � Weird Wizard|2|4|Play with the top card of your library revealed.$You may cast the top card of your library if it's an instant or sorcery card.$Whenever you cast an instant or sorcery spell from your library, copy it. You may choose new targets for the copy.| -Trostani's Summoner|Game Day|27|U|{5}{W}{G}|Creature � Elf Shaman|1|1|When Trostani's Summoner enters the battlefield, put a 2/2 white Knight creature token with vigilance, a 3/3 green Centaur creature token, and a 4/4 green Rhino creature token with trample onto the battlefield.| +Mwonvuli Beast Tracker|Game Day|21|U|{1}{G}{G}|Creature Human Scout|2|1|When Mwonvuli Beast Tracker enters the battlefield, search your library for a creature card with deathtouch, hexproof, reach, or trample and reveal it. Shuffle your library and put that card on top of it.| +Cryptborn Horror|Game Day|22|R|{1}{BR}{BR}||Creature Horror|0|0|Trample$Cryptborn Horror enters the battlefield with X +1/+1 counters on it, where X is the total life lost by your opponents this turn.| +Dryad Militant|Game Day|23|U|{GW}|Creature Dryad Soldier|2|1|If an instant or sorcery card would be put into a graveyard from anywhere, exile it instead.| +Firemane Avenger|Game Day|24|R|{2}{W}{R}|Creature Angel|3|3|Flying$Battalion Whenever Firemane Avenger and at least two other creatures attack, Firemane Avenger deals 3 damage to target creature or player and you gain 3 life.| +Zameck Guildmage|Game Day|25|U|{U}{G}|Creature Elf Wizard|2|2|{G}{U}: This turn, each creature you control enters the battlefield with an additional +1/+1 counter on it.${G}{U}, Remove a +1/+1 counter from a creature you control: Draw a card.| +Melek, Izzet Paragon|Game Day|26|R|{4}{U}{R}|Legendary Creature Weird Wizard|2|4|Play with the top card of your library revealed.$You may cast the top card of your library if it's an instant or sorcery card.$Whenever you cast an instant or sorcery spell from your library, copy it. You may choose new targets for the copy.| +Trostani's Summoner|Game Day|27|U|{5}{W}{G}|Creature Elf Shaman|1|1|When Trostani's Summoner enters the battlefield, put a 2/2 white Knight creature token with vigilance, a 3/3 green Centaur creature token, and a 4/4 green Rhino creature token with trample onto the battlefield.| Hive Stirrings|Game Day|28|C|{2}{W}|Sorcery|||Put two 1/1 colorless Sliver creature tokens onto the battlefield.| -Goblin Diplomats|Game Day|29|R|{1}{R}|Creature � Goblin|2|1|{T}: Each creature attacks this turn if able.| -Phalanx Leader|Game Day|30|U|{W}{W}|Creature � Human Soldier|1|1|Heroic � Whenever you cast a spell that targets Phalanx Leader, put a +1/+1 counter on each creature you control.| -Nighthowler|Game Day|31|R|{1}{B}{B}|Enchantment Creature � Horror|0|0|Bestow {2}{B}{B} (If you cast this card for its bestow cost, it's an Aura spell with enchant creature. It becomes a creature again if it's not attached to a creature.)$Nighthowler and enchanted creature each get +X/+X, where X is the number of creature cards in all graveyards.| -Pain Seer|Game Day|32|R|{1}{B}|Creature � Human Wizard|2|2|Inspired � Whenever Pain Seer becomes untapped, reveal the top card of your library and put that card into your hand. You lose life equal to that card's converted mana cost.| -Kiora's Follower|Game Day|33|U|{U}{G}|Creature � Merfolk|2|2|{T}: Untap another target permanent.| -Squelching Leeches|Game Day|34|U|{2}{B}{B}|Creature � Leech|*|*|Squelching Leeches's power and toughness are each equal to the number of Swamps you control.| +Goblin Diplomats|Game Day|29|R|{1}{R}|Creature Goblin|2|1|{T}: Each creature attacks this turn if able.| +Phalanx Leader|Game Day|30|U|{W}{W}|Creature Human Soldier|1|1|Heroic Whenever you cast a spell that targets Phalanx Leader, put a +1/+1 counter on each creature you control.| +Nighthowler|Game Day|31|R|{1}{B}{B}|Enchantment Creature Horror|0|0|Bestow {2}{B}{B} (If you cast this card for its bestow cost, it's an Aura spell with enchant creature. It becomes a creature again if it's not attached to a creature.)$Nighthowler and enchanted creature each get +X/+X, where X is the number of creature cards in all graveyards.| +Pain Seer|Game Day|32|R|{1}{B}|Creature Human Wizard|2|2|Inspired Whenever Pain Seer becomes untapped, reveal the top card of your library and put that card into your hand. You lose life equal to that card's converted mana cost.| +Kiora's Follower|Game Day|33|U|{U}{G}|Creature Merfolk|2|2|{T}: Untap another target permanent.| +Squelching Leeches|Game Day|34|U|{2}{B}{B}|Creature Leech|*|*|Squelching Leeches's power and toughness are each equal to the number of Swamps you control.| Dictate of Kruphix|Game Day|35|R|{1}{U}{U}|Enchantment|||Flash$At the beginning of each player's draw step, that player draws an additional card.| Hall of Triumph|Game Day|36|R|{3}|Legendary Artifact|||As Hall of Triumph enters the battlefield, choose a color.$Creatures you control of the chosen color get +1/+1.| -Heir of the Wilds|Game Day|37|U|{1}{G}|Creature � Human Warrior|2|2|Deathtouch$Ferocious � Whenever Heir of the Wilds attacks, if you control a creature with power 4 or greater, Heir of the Wilds gets +1/+1 until end of turn.| +Heir of the Wilds|Game Day|37|U|{1}{G}|Creature Human Warrior|2|2|Deathtouch$Ferocious Whenever Heir of the Wilds attacks, if you control a creature with power 4 or greater, Heir of the Wilds gets +1/+1 until end of turn.| Utter End|Game Day|38|R|{2}{W}{B}|Instant|||Exile target nonland permanent.| -Reclamation Sage|Game Day|39|U|{2}{G}|Creature � Elf Shaman|2|1|When Reclamation Sage enters the battlefield, you may destroy target artifact or enchantment.| -Chief Engineer|Game Day|40|R|{1}{U}|Creature � Vedalken Artificer|1|3|Artifact spells you cast have convoke. (Your creatures can help cast those spells. Each creature you tap while casting an artifact spell pays for {1} or one mana of that creature's color.)| +Reclamation Sage|Game Day|39|U|{2}{G}|Creature Elf Shaman|2|1|When Reclamation Sage enters the battlefield, you may destroy target artifact or enchantment.| +Chief Engineer|Game Day|40|R|{1}{U}|Creature Vedalken Artificer|1|3|Artifact spells you cast have convoke. (Your creatures can help cast those spells. Each creature you tap while casting an artifact spell pays for {1} or one mana of that creature's color.)| Mardu Shadowspear|Game Day|41|U|{B}|Creature - Human Warrior|1|1|Whenever Mardu Shadowspear attacks, each opponent loses 1 life.$Dash {1}{B} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| Supplant Form|Game Day|42|R|{4}{U}{U}|Instant|||Return target creature to its owner's hand. You put a token onto the battlefield that's a copy of that creature.| Scaleguard Sentinels|Game Day|43|U|{G}{G}|Creature - Human Soldier|2|3|As an additional cost to cast Scaleguard Sentinels, you may reveal a Dragon card from your hand.$Scaleguard Sentinels enters the battlefield with a +1/+1 counter on it if you revealed a Dragon card or controlled a Dragon as you cast Scaleguard Sentinels.| @@ -6439,11 +6439,11 @@ Madcap Skills|Gatecrash|98|C|{1}{R}|Enchantment - Aura|||Enchant creature$Enchan Mark for Death|Gatecrash|99|U|{3}{R}|Sorcery|||Target creature an opponent controls blocks this turn if able. Untap that creature. Other creatures that player controls can't block this turn.| Spiritmonger|Grand Prix|1|R|{3}{B}{G}|Creature - Beast|6|6|Whenever Spiritmonger deals damage to a creature, put a +1/+1 counter on Spiritmonger.${B}: Regenerate Spiritmonger.${G}: Spiritmonger becomes the color of your choice until end of turn.| Call of the Herd|Grand Prix|2|R|{2}{G}|Sorcery|||Put a 3/3 green Elephant creature token onto the battlefield.$Flashback {3}{G} (You may cast this card from your graveyard for its flashback cost. Then exile it.)| -Chrome Mox|Grand Prix|3|R|{0}|Artifact|||Imprint � When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand.${T}: Add one mana of any of the exiled card's colors to your mana pool.| -Umezawa's Jitte|Grand Prix|4|R|{2}|Legendary Artifact - Equipment|||Whenever equipped creature deals combat damage, put two charge counters on Umezawa's Jitte.$Remove a charge counter from Umezawa's Jitte: Choose one � Equipped creature gets +2/+2 until end of turn; or target creature gets -1/-1 until end of turn; or you gain 2 life.$Equip {2}| +Chrome Mox|Grand Prix|3|R|{0}|Artifact|||Imprint When Chrome Mox enters the battlefield, you may exile a nonartifact, nonland card from your hand.${T}: Add one mana of any of the exiled card's colors to your mana pool.| +Umezawa's Jitte|Grand Prix|4|R|{2}|Legendary Artifact - Equipment|||Whenever equipped creature deals combat damage, put two charge counters on Umezawa's Jitte.$Remove a charge counter from Umezawa's Jitte: Choose one Equipped creature gets +2/+2 until end of turn; or target creature gets -1/-1 until end of turn; or you gain 2 life.$Equip {2}| Maelstrom Pulse|Grand Prix|5|R|{1}{B}{G}|Sorcery|||Destroy target nonland permanent and all other permanents with the same name as that permanent.| Goblin Guide|Grand Prix|6|R|{R}|Creature - Goblin Scout|2|2|Haste$Whenever Goblin Guide attacks, defending player reveals the top card of his or her library. If it's a land card, that player puts it into his or her hand.| -Lotus Cobra|Grand Prix|7|M|{1}{G}|Creature - Snake|2|1|Landfall � Whenever a land enters the battlefield under your control, you may add one mana of any color to your mana pool.| +Lotus Cobra|Grand Prix|7|M|{1}{G}|Creature - Snake|2|1|Landfall Whenever a land enters the battlefield under your control, you may add one mana of any color to your mana pool.| Primeval Titan|Grand Prix|8|M|{4}{G}{G}|Creature - Giant|6|6|Trample$Whenever Primeval Titan enters the battlefield or attacks, you may search your library for up to two land cards, put them onto the battlefield tapped, then shuffle your library.| All Is Dust|Grand Prix|9|M|{7}|Tribal Sorcery - Eldrazi|||Each player sacrifices all colored permanents he or she controls.| Batterskull|Grand Prix|10|M|{5}|Artifact - Equipment|||Living weapon (When this Equipment enters the battlefield, put a 0/0 black Germ creature token onto the battlefield, then attach this to it.)$Equipped creature gets +4/+4 and has vigilance and lifelink.${3}: Return Batterskull to its owner's hand.$Equip {5}| @@ -7791,28 +7791,28 @@ Gaea's Cradle|Judge Promo|3|R||Legendary Land|||{T}: Add {G} to your mana pool f Memory Lapse|Judge Promo|4|C|{1}{U}|Instant|||Counter target spell. If that spell is countered this way, put it on top of its owner's library instead of into that player's graveyard.| Counterspell|Judge Promo|5|C|{U}{U}|Instant|||Counter target spell.| Vampiric Tutor|Judge Promo|6|R|{B}|Instant|||Search your library for a card, then shuffle your library and put that card on top of it. You lose 2 life.| -Ball Lightning|Judge Promo|7|R|{R}{R}{R}|Creature � Elemental|6|1|Trample (If this creature would assign enough damage to its blockers to destroy them, you may have it assign the rest of its damage to defending player or planeswalker.)$Haste (This creature can attack and {T} as soon as it comes under your control.)$At the beginning of the end step, sacrifice Ball Lightning.| +Ball Lightning|Judge Promo|7|R|{R}{R}{R}|Creature Elemental|6|1|Trample (If this creature would assign enough damage to its blockers to destroy them, you may have it assign the rest of its damage to defending player or planeswalker.)$Haste (This creature can attack and {T} as soon as it comes under your control.)$At the beginning of the end step, sacrifice Ball Lightning.| Oath of Druids|Judge Promo|8|R|{1}{G}|Enchantment|||At the beginning of each player's upkeep, that player chooses target player who controls more creatures than he or she does and is his or her opponent. The first player may reveal cards from the top of his or her library until he or she reveals a creature card. If he or she does, that player puts that card onto the battlefield and all other cards revealed this way into his or her graveyard.| Hammer of Bogardan|Judge Promo|9|R|{1}{R}{R}|Sorcery|||Hammer of Bogardan deals 3 damage to target creature or player.${2}{R}{R}{R}: Return Hammer of Bogardan from your graveyard to your hand. Activate this ability only during your upkeep.| -Tradewind Rider|Judge Promo|10|R|{3}{U}|Creature � Spirit|1|4|Flying$${T}, Tap two untapped creatures you control: Return target permanent to its owner's hand.| +Tradewind Rider|Judge Promo|10|R|{3}{U}|Creature Spirit|1|4|Flying$${T}, Tap two untapped creatures you control: Return target permanent to its owner's hand.| Intuition|Judge Promo|11|R|{2}{U}|Instant|||Search your library for three cards and reveal them. Target opponent chooses one. Put that card into your hand and the rest into your graveyard. Then shuffle your library.| -Argothian Enchantress|Judge Promo|12|R|{1}{G}|Creature � Human Druid|0|1|Shroud (This creature can't be the target of spells or abilities.)$Whenever you cast an enchantment spell, draw a card.| +Argothian Enchantress|Judge Promo|12|R|{1}{G}|Creature Human Druid|0|1|Shroud (This creature can't be the target of spells or abilities.)$Whenever you cast an enchantment spell, draw a card.| Living Death|Judge Promo|13|R|{3}{B}{B}|Sorcery|||Each player exiles all creature cards from his or her graveyard, then sacrifices all creatures he or she controls, then puts all cards he or she exiled this way onto the battlefield. Armageddon|Judge Promo|14|R|{3}{W}|Sorcery|||Destroy all lands.| Balance|Judge Promo|15|R|{1}{W}|Sorcery|||Each player chooses a number of lands he or she controls equal to the number of lands controlled by the player who controls the fewest, then sacrifices the rest. Players discard cards and sacrifice creatures the same way.| Time Warp|Judge Promo|16|M|{3}{U}{U}|Sorcery|||Target player takes an extra turn after this one.| -Phyrexian Negator|Judge Promo|17|R|{2}{B}|Creature � Horror|5|5|Trample$Whenever Phyrexian Negator is dealt damage, sacrifice that many permanents.| -Deranged Hermit|Judge Promo|18|R|{3}{G}{G}|Creature � Elf|1|1|Echo {3}{G}{G} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)$When Deranged Hermit enters the battlefield, put four 1/1 green Squirrel creature tokens onto the battlefield.$Squirrel creatures get +1/+1.| -Hermit Druid|Judge Promo|19|R|{1}{G}|Creature � Human Druid|1|1|{G}, {T}: Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard.| +Phyrexian Negator|Judge Promo|17|R|{2}{B}|Creature Horror|5|5|Trample$Whenever Phyrexian Negator is dealt damage, sacrifice that many permanents.| +Deranged Hermit|Judge Promo|18|R|{3}{G}{G}|Creature Elf|1|1|Echo {3}{G}{G} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)$When Deranged Hermit enters the battlefield, put four 1/1 green Squirrel creature tokens onto the battlefield.$Squirrel creatures get +1/+1.| +Hermit Druid|Judge Promo|19|R|{1}{G}|Creature Human Druid|1|1|{G}, {T}: Reveal cards from the top of your library until you reveal a basic land card. Put that card into your hand and all other cards revealed this way into your graveyard.| Gemstone Mine|Judge Promo|20|U||Land|||Gemstone Mine enters the battlefield with three mining counters on it.${T}, Remove a mining counter from Gemstone Mine: Add one mana of any color to your mana pool. If there are no mining counters on Gemstone Mine, sacrifice it.| Regrowth|Judge Promo|21|U|{1}{G}|Sorcery|||Return target card from your graveyard to your hand.| Sol Ring|Judge Promo|22|U|{1}|Artifact||{T}: Add {2} to your mana pool.| Mishra's Factory|Judge Promo|23|U||Land|||{T}: Add {1} to your mana pool.${1}: Mishra's Factory becomes a 2/2 Assembly-Worker artifact creature until end of turn. It's still a land.${T}: Target Assembly-Worker creature gets +1/+1 until end of turn.| -Exalted Angel|Judge Promo|24|R|{4}{W}{W}|Creature � Angel|4|5|Flying$Whenever Exalted Angel deals damage, you gain that much life.$Morph {2}{W}{W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| -Grim Lavamancer|Judge Promo|25|R|{R}|Creature � Human Wizard|1|1|{R}, {T}, Exile two cards from your graveyard: Grim Lavamancer deals 2 damage to target creature or player.| -Meddling Mage|Judge Promo|26|R|{W}{U}|Creature � Human Wizard|2|2|As Meddling Mage enters the battlefield, name a nonland card.$The named card can't be cast.| +Exalted Angel|Judge Promo|24|R|{4}{W}{W}|Creature Angel|4|5|Flying$Whenever Exalted Angel deals damage, you gain that much life.$Morph {2}{W}{W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| +Grim Lavamancer|Judge Promo|25|R|{R}|Creature Human Wizard|1|1|{R}, {T}, Exile two cards from your graveyard: Grim Lavamancer deals 2 damage to target creature or player.| +Meddling Mage|Judge Promo|26|R|{W}{U}|Creature Human Wizard|2|2|As Meddling Mage enters the battlefield, name a nonland card.$The named card can't be cast.| Pernicious Deed|Judge Promo|27|R|{1}{B}{G}|Enchantment|||{X}, Sacrifice Pernicious Deed: Destroy each artifact, creature, and enchantment with converted mana cost X or less.| -Ravenous Baloth|Judge Promo|28|R|{2}{G}{G}|Creature � Beast|4|4|Sacrifice a Beast: You gain 4 life.| +Ravenous Baloth|Judge Promo|28|R|{2}{G}{G}|Creature Beast|4|4|Sacrifice a Beast: You gain 4 life.| Cunning Wish|Judge Promo|29|R|{2}{U}|Instant|||You may choose an instant card you own from outside the game, reveal that card, and put it into your hand. Exile Cunning Wish.| Yawgmoth's Will|Judge Promo|30|R|{2}{B}|Sorcery|||Until end of turn, you may play cards from your graveyard.$If a card would be put into your graveyard from anywhere this turn, exile that card instead.| Vindicate|Judge Promo|31|R|{1}{W}{B}|Sorcery|||Destroy target permanent.| @@ -7820,7 +7820,7 @@ Decree of Justice|Judge Promo|32|R|{X}{X}{2}{W}{W}|Sorcery|||Put X 4/4 white Ang Orim's Chant|Judge Promo|33|R|{W}|Instant|||Kicker {W} (You may pay an additional {W} as you cast this spell.)$Target player can't cast spells this turn.$If Orim's Chant was kicked, creatures can't attack this turn.| Mind's Desire|Judge Promo|34|R|{4}{U}{U}|Sorcery|||Shuffle your library. Then exile the top card of your library. Until end of turn, you may play that card without paying its mana cost. (If it has X in its mana cost, X is 0.)$Storm (When you cast this spell, copy it for each spell cast before it this turn.)| Demonic Tutor|Judge Promo|35|U|{1}{B}|Sorcery|||Search your library for a card and put that card into your hand. Then shuffle your library.| -Goblin Piledriver|Judge Promo|36|R|{1}{R}|Creature � Goblin Warrior|1|2|Protection from blue$Whenever Goblin Piledriver attacks, it gets +2/+0 until end of turn for each other attacking Goblin.| +Goblin Piledriver|Judge Promo|36|R|{1}{R}|Creature Goblin Warrior|1|2|Protection from blue$Whenever Goblin Piledriver attacks, it gets +2/+0 until end of turn for each other attacking Goblin.| Living Wish|Judge Promo|37|R|{1}{G}|Sorecery|||You may choose a creature or land card you own from outside the game, reveal that card, and put it into your hand. Exile Living Wish.| Dark Ritual|Judge Promo|38|C|{B}|Instant|||Add {B}{B}{B} to your mana pool.| Maze of Ith|Judge Promo|39|U||Land|||{T}: Untap target attacking creature. Prevent all combat damage that would be dealt to and dealt by that creature this turn.| @@ -7834,45 +7834,45 @@ Windswept Heath|Judge Promo|46|R||Land|||{T}, Pay 1 life, Sacrifice Windswept He Wooded Foothills|Judge Promo|47|R||Land|||{T}, 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.| Sinkhole|Judge Promo|48|C|{B}{B}|Sorcery|||Destroy target land.| Natural Order|Judge Promo|49|R|{2}{G}{G}|Sorcery|||As an additional cost to cast Natural Order, sacrifice a green creature.$Search your library for a green creature card and put it onto the battlefield. Then shuffle your library.| -Phyrexian Dreadnought|Judge Promo|50|R|{1}|Artifact Creature � Dreadnought|12|12|Trample$When Phyrexian Dreadnought enters the battlefield, sacrifice it unless you sacrifice any number of creatures with total power 12 or greater.| +Phyrexian Dreadnought|Judge Promo|50|R|{1}|Artifact Creature Dreadnought|12|12|Trample$When Phyrexian Dreadnought enters the battlefield, sacrifice it unless you sacrifice any number of creatures with total power 12 or greater.| Thawing Glaciers|Judge Promo|51|R||Land|||Thawing Glaciers enters the battlefield tapped.${1}, {T}: Search your library for a basic land card, put that card onto the battlefield tapped, then shuffle your library. Return Thawing Glaciers to its owner's hand at the beginning of the next cleanup step.| Land Tax|Judge Promo|52|R|{W}|Enchantment|||At the beginning of your upkeep, if an opponent controls more lands than you, you may search your library for up to three basic land cards, reveal them, and put them into your hand. If you do, shuffle your library.| -Morphling|Judge Promo|53|R|{3}{U}{U}|Creature � Shapeshifter|3|3|{U}: Untap Morphling.${U}: Morphling gains flying until end of turn.${U}: Morphling gains shroud until end of turn. (It can't be the target of spells or abilities.)${1}: Morphling gets +1/-1 until end of turn.${1}: Morphling gets -1/+1 until end of turn.| +Morphling|Judge Promo|53|R|{3}{U}{U}|Creature Shapeshifter|3|3|{U}: Untap Morphling.${U}: Morphling gains flying until end of turn.${U}: Morphling gains shroud until end of turn. (It can't be the target of spells or abilities.)${1}: Morphling gets +1/-1 until end of turn.${1}: Morphling gets -1/+1 until end of turn.| Wheel of Fortune|Judge Promo|54|R|{2}{R}|Sorcery|||Each player discards his or her hand, then draws seven cards.| Wasteland|Judge Promo|55|U||Land|||{T}: Add {1} to your mana pool.${T}, Sacrifice Wasteland: Destroy target nonbasic land.| Entomb|Judge Promo|56|R|{B}|Instant|||Search your library for a card and put that card into your graveyard. Then shuffle your library.| -Sword of Fire and Ice|Judge Promo|57|R|{3}|Artifact � Equipment|||Equipped creature gets +2/+2 and has protection from red and from blue.$Whenever equipped creature deals combat damage to a player, Sword of Fire and Ice deals 2 damage to target creature or player and you draw a card.$Equip {2}| -Vendilion Clique|Judge Promo|58|R|{1}{U}{U}|Legendary Creature � Faerie Wizard|3|1|Flash$Flying$When Vendilion Clique enters the battlefield, look at target player's hand. You may choose a nonland card from it. If you do, that player reveals the chosen card, puts it on the bottom of his or her library, then draws a card.| -Bitterblossom|Judge Promo|59|R|{1}{B}|Tribal Enchantment � Faerie||At the beginning of your upkeep, you lose 1 life and put a 1/1 black Faerie Rogue creature token with flying onto the battlefield.| +Sword of Fire and Ice|Judge Promo|57|R|{3}|Artifact Equipment|||Equipped creature gets +2/+2 and has protection from red and from blue.$Whenever equipped creature deals combat damage to a player, Sword of Fire and Ice deals 2 damage to target creature or player and you draw a card.$Equip {2}| +Vendilion Clique|Judge Promo|58|R|{1}{U}{U}|Legendary Creature Faerie Wizard|3|1|Flash$Flying$When Vendilion Clique enters the battlefield, look at target player's hand. You may choose a nonland card from it. If you do, that player reveals the chosen card, puts it on the bottom of his or her library, then draws a card.| +Bitterblossom|Judge Promo|59|R|{1}{B}|Tribal Enchantment Faerie||At the beginning of your upkeep, you lose 1 life and put a 1/1 black Faerie Rogue creature token with flying onto the battlefield.| Mana Crypt|Judge Promo|60|R|{0}|Artifact|||At the beginning of your upkeep, flip a coin. If you lose the flip, Mana Crypt deals 3 damage to you.${T}: Add {2} to your mana pool.| -Dark Confidant|Judge Promo|61|R|{1}{B}|Creature � Human Wizard|2|1|At the beginning of your upkeep, reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost.| +Dark Confidant|Judge Promo|61|R|{1}{B}|Creature Human Wizard|2|1|At the beginning of your upkeep, reveal the top card of your library and put that card into your hand. You lose life equal to its converted mana cost.| Doubling Season|Judge Promo|62|R|{4}{G}|Enchantment|||If an effect would put one or more tokens onto the battlefield under your control, it puts twice that many of those tokens onto the battlefield instead.$If an effect would place one or more counters on a permanent you control, it places twice that many of those counters on that permanent instead.| -Goblin Welder|Judge Promo|63|R|{R}|Creature � Goblin Artificer|1|1|{T}: Choose target artifact a player controls and target artifact card in that player's graveyard. If both targets are still legal as this ability resolves, that player simultaneously sacrifices the artifact and returns the artifact card to the battlefield.| -Xiahou Dun, the One-Eyed|Judge Promo|64|R|{2}{B}{B}|Legendary Creature � Human Soldier|3|2|Horsemanship (This creature can't be blocked except by creatures with horsemanship.)$Sacrifice Xiahou Dun, the One-Eyed: Return target black card from your graveyard to your hand. Activate this ability only during your turn, before attackers are declared.| +Goblin Welder|Judge Promo|63|R|{R}|Creature Goblin Artificer|1|1|{T}: Choose target artifact a player controls and target artifact card in that player's graveyard. If both targets are still legal as this ability resolves, that player simultaneously sacrifices the artifact and returns the artifact card to the battlefield.| +Xiahou Dun, the One-Eyed|Judge Promo|64|R|{2}{B}{B}|Legendary Creature Human Soldier|3|2|Horsemanship (This creature can't be blocked except by creatures with horsemanship.)$Sacrifice Xiahou Dun, the One-Eyed: Return target black card from your graveyard to your hand. Activate this ability only during your turn, before attackers are declared.| Flusterstorm|Judge Promo|65|R|{U}|Instant|||Counter target instant or sorcery spell unless its controller pays {1}.$Storm (When you cast this spell, copy it for each spell cast before it this turn. You may choose new targets for the copies.)| -Noble Hierarch|Judge Promo|66|R|{G}|Creature � Human Druid|0|1|Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)${T}: Add {G}, {W}, or {U} to your mana pool.| -Karmic Guide|Judge Promo|67|R|{3}{W}{W}|Creature � Angel Spirit|2|2|Flying, protection from black$Echo {3}{W}{W} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)$When Karmic Guide enters the battlefield, return target creature card from your graveyard to the battlefield.| +Noble Hierarch|Judge Promo|66|R|{G}|Creature Human Druid|0|1|Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)${T}: Add {G}, {W}, or {U} to your mana pool.| +Karmic Guide|Judge Promo|67|R|{3}{W}{W}|Creature Angel Spirit|2|2|Flying, protection from black$Echo {3}{W}{W} (At the beginning of your upkeep, if this came under your control since the beginning of your last upkeep, sacrifice it unless you pay its echo cost.)$When Karmic Guide enters the battlefield, return target creature card from your graveyard to the battlefield.| Sneak Attack|Judge Promo|68|R|{3}{R}|Enchantment|||{R}: You may put a creature card from your hand onto the battlefield. That creature gains haste. Sacrifice the creature at the beginning of the next end step.| Karakas|Judge Promo|69|U||Legendary Land|||{T}: Add {W} to your mana pool.${T}: Return target legendary creature to its owner's hand.| -Sword of Light and Shadow|Judge Promo|70|R|{3}|Artifact � Equipment|||Equipped creature gets +2/+2 and has protection from white and from black.$Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.$Equip {2}| +Sword of Light and Shadow|Judge Promo|70|R|{3}|Artifact Equipment|||Equipped creature gets +2/+2 and has protection from white and from black.$Whenever equipped creature deals combat damage to a player, you gain 3 life and you may return up to one target creature card from your graveyard to your hand.$Equip {2}| Command Tower|Judge Promo|71|C||Land|||{T}: Add to your mana pool one mana of any color in your commander's color identity.| Swords to Plowshares|Judge Promo|72|U|{W}|Instant|||Exile target creature. Its controller gains life equal to its power.| Bribery|Judge Promo|73|R|{3}{U}{U}|Sorcery|||Search target opponent's library for a creature card and put that card onto the battlefield under your control. Then that player shuffles his or her library.| -Imperial Recruiter|Judge Promo|74|U|{2}{R}|Creature � Human Advisor|1|1|When Imperial Recruiter enters the battlefield, search your library for a creature card with power 2 or less, reveal it, and put it into your hand. Then shuffle your library.| +Imperial Recruiter|Judge Promo|74|U|{2}{R}|Creature Human Advisor|1|1|When Imperial Recruiter enters the battlefield, search your library for a creature card with power 2 or less, reveal it, and put it into your hand. Then shuffle your library.| Crucible of Worlds|Judge Promo|75|R|{3}|Artifact|||You may play land cards from your graveyard.| Overwhelming Forces|Judge Promo|76|R|{6}{B}{B}|Sorcery|||Destroy all creatures target opponent controls. Draw a card for each creature destroyed this way.| Show and Tell|Judge Promo|77|R|{2}{U}|Sorcery|||Each player may put an artifact, creature, enchantment, or land card from his or her hand onto the battlefield.| Vindicate|Judge Promo|78|R|{1}{W}{B}|Sorcery|||Destroy target permanent.| -Genesis|Judge Promo|79|R|{4}{G}|Creature � Incarnation|4|4|At the beginning of your upkeep, if Genesis is in your graveyard, you may pay {2}{G}. If you do, return target creature card from your graveyard to your hand.| -Karador, Ghost Chieftain|Judge Promo|80|M|{5}{W}{B}{G}|Legendary Creature � Centaur Spirit|3|4|Karador, Ghost Chieftain costs {1} less to cast for each creature card in your graveyard.$During each of your turns, you may cast one creature card from your graveyard.| +Genesis|Judge Promo|79|R|{4}{G}|Creature Incarnation|4|4|At the beginning of your upkeep, if Genesis is in your graveyard, you may pay {2}{G}. If you do, return target creature card from your graveyard to your hand.| +Karador, Ghost Chieftain|Judge Promo|80|M|{5}{W}{B}{G}|Legendary Creature Centaur Spirit|3|4|Karador, Ghost Chieftain costs {1} less to cast for each creature card in your graveyard.$During each of your turns, you may cast one creature card from your graveyard.| Greater Good|Judge Promo|81|R|{2}{G}{G}|Enchantment|||Sacrifice a creature: Draw cards equal to the sacrificed creature's power, then discard three cards.| -Riku of Two Reflections|Judge Promo|82|M|{2}{U}{R}{G}|Legendary Creature � Human Wizard|2|2|Whenever you cast an instant or sorcery spell, you may pay {U}{R}. If you do, copy that spell. You may choose new targets for the copy.$Whenever another nontoken creature enters the battlefield under your control, you may pay {G}{U}. If you do, put a token that's a copy of that creature onto the battlefield.| +Riku of Two Reflections|Judge Promo|82|M|{2}{U}{R}{G}|Legendary Creature Human Wizard|2|2|Whenever you cast an instant or sorcery spell, you may pay {U}{R}. If you do, copy that spell. You may choose new targets for the copy.$Whenever another nontoken creature enters the battlefield under your control, you may pay {G}{U}. If you do, put a token that's a copy of that creature onto the battlefield.| Force of Will|Judge Promo|83|U|{3}{U}{U}|Instant|||You may pay 1 life and exile a blue card from your hand rather than pay Force of Will's mana cost.$Counter target spell.| -Hanna, Ship's Navigator|Judge Promo|84|R|{1}{W}{U}|Legendary Creature � Human Artificer|1|2|{1}{W}{U}, {T}: Return target artifact or enchantment card from your graveyard to your hand.| -Sword of Feast and Famine|Judge Promo|85|M|{3}|Artifact � Equipment|||Equipped creature gets +2/+2 and has protection from black and from green.$Whenever equipped creature deals combat damage to a player, that player discards a card and you untap all lands you control.$Equip {2}| -Nekusar, the Mindrazer|Judge Promo|86|M|{2}{U}{B}{R}|Legendary Creature � Zombie Wizard|2|4|At the beginning of each player's draw step, that player draws an additional card.$Whenever an opponent draws a card, Nekusar, the Mindrazer deals 1 damage to that player.| -Elesh Norn, Grand Cenobite|Judge Promo|87|M|{5}{W}{W}|Legendary Creature � Praetor|4|7|Vigilance$Other creatures you control get +2/+2.$Creatures your opponents control get -2/-2.| -Oloro, Ageless Ascetic|Judge Promo|88|M|{3}{W}{U}{B}|Legendary Creature � Giant Soldier|4|5|At the beginning of your upkeep, you gain 2 life.$Whenever you gain life, you may pay {1}. If you do, draw a card and each opponent loses 1 life.$At the beginning of your upkeep, if Oloro, Ageless Ascetic is in the command zone, you gain 2 life.| +Hanna, Ship's Navigator|Judge Promo|84|R|{1}{W}{U}|Legendary Creature Human Artificer|1|2|{1}{W}{U}, {T}: Return target artifact or enchantment card from your graveyard to your hand.| +Sword of Feast and Famine|Judge Promo|85|M|{3}|Artifact Equipment|||Equipped creature gets +2/+2 and has protection from black and from green.$Whenever equipped creature deals combat damage to a player, that player discards a card and you untap all lands you control.$Equip {2}| +Nekusar, the Mindrazer|Judge Promo|86|M|{2}{U}{B}{R}|Legendary Creature Zombie Wizard|2|4|At the beginning of each player's draw step, that player draws an additional card.$Whenever an opponent draws a card, Nekusar, the Mindrazer deals 1 damage to that player.| +Elesh Norn, Grand Cenobite|Judge Promo|87|M|{5}{W}{W}|Legendary Creature Praetor|4|7|Vigilance$Other creatures you control get +2/+2.$Creatures your opponents control get -2/-2.| +Oloro, Ageless Ascetic|Judge Promo|88|M|{3}{W}{U}{B}|Legendary Creature Giant Soldier|4|5|At the beginning of your upkeep, you gain 2 life.$Whenever you gain life, you may pay {1}. If you do, draw a card and each opponent loses 1 life.$At the beginning of your upkeep, if Oloro, Ageless Ascetic is in the command zone, you gain 2 life.| Plains|Judge Promo|89|L||Land|||({T}: Add {W} to your mana pool.)| Island|Judge Promo|90|L||Land|||({T}: Add {U} to your mana pool.)| Swamp|Judge Promo|91|L||Land|||({T}: Add {B} to your mana pool.)| @@ -8405,7 +8405,7 @@ Cephalid Pathmage|Legions|31|C|{2}{U}|Creature - Cephalid Wizard|1|2|Cephalid Pa Chromeshell Crab|Legions|32|R|{4}{U}|Creature - Crab Beast|3|3|Morph {4}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Chromeshell Crab is turned face up, you may exchange control of target creature you control and target creature an opponent controls.| Covert Operative|Legions|33|C|{4}{U}|Creature - Human Wizard|3|2|Covert Operative is unblockable.| Crookclaw Elder|Legions|34|U|{5}{U}|Creature - Bird Wizard|3|2|Flying$Tap two untapped Birds you control: Draw a card.$Tap two untapped Wizards you control: Target creature gains flying until end of turn.| -Dermoplasm|Legions|35|R|{2}{U}|Creature - Shapeshifter|1|1|Flying$Morph {2}{U}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Dermoplasm is turned face up, you may put a creature card with morph from your hand onto the battlefield face up. If you do, return Dermoplasm to its owner's hand.| +Dermoplasm|Legions|35|R|{2}{U}|Creature - Shapeshifter|1|1|Flying$Morph {2}{U}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Dermoplasm is turned face up, you may put a creature card with a morph ability from your hand onto the battlefield face up. If you do, return Dermoplasm to its owner's hand.| Dreamborn Muse|Legions|36|R|{2}{U}{U}|Creature - Spirit|2|2|At the beginning of each player's upkeep, that player puts the top X cards of his or her library into his or her graveyard, where X is the number of cards in his or her hand.| Echo Tracer|Legions|37|C|{2}{U}|Creature - Human Wizard|2|2|Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Echo Tracer is turned face up, return target creature to its owner's hand.| Fugitive Wizard|Legions|38|C|{U}|Creature - Human Wizard|1|1|| @@ -8414,7 +8414,7 @@ Aven Warhawk|Legions|4|U|{4}{W}|Creature - Bird Soldier|2|2|Amplify 1 (As thi Glintwing Invoker|Legions|40|C|{4}{U}|Creature - Human Wizard Mutant|3|3|{7}{U}: Glintwing Invoker gets +3/+3 and gains flying until end of turn.| Keeneye Aven|Legions|41|C|{3}{U}|Creature - Bird Soldier|2|3|Flying$Cycling {2} ({2}, Discard this card: Draw a card.)| Keeper of the Nine Gales|Legions|42|R|{2}{U}|Creature - Bird Wizard|1|2|Flying${tap}, Tap two untapped Birds you control: Return target permanent to its owner's hand.| -Master of the Veil|Legions|43|U|{2}{U}{U}|Creature - Human Wizard|2|3|Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Master of the Veil is turned face up, you may turn target creature with morph face down.| +Master of the Veil|Legions|43|U|{2}{U}{U}|Creature - Human Wizard|2|3|Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Master of the Veil is turned face up, you may turn target creature with a morph ability face down.| Merchant of Secrets|Legions|44|C|{2}{U}|Creature - Human Wizard|1|1|When Merchant of Secrets enters the battlefield, draw a card.| Mistform Seaswift|Legions|45|C|{3}{U}|Creature - Illusion|3|1|Flying${1}: Mistform Seaswift becomes the creature type of your choice until end of turn.$Morph {1}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Mistform Sliver|Legions|46|C|{1}{U}|Creature - Illusion Sliver|1|1|All Slivers have "{1}: This permanent becomes the creature type of your choice in addition to its other types until end of turn."| @@ -8429,7 +8429,7 @@ Synapse Sliver|Legions|53|R|{4}{U}|Creature - Sliver|3|3|Whenever a Sliver deals Voidmage Apprentice|Legions|54|C|{1}{U}|Creature - Human Wizard|1|1|Morph {2}{U}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Voidmage Apprentice is turned face up, counter target spell.| Wall of Deceit|Legions|55|U|{1}{U}|Creature - Wall|0|5|Defender (This creature can't attack.)${3}: Turn Wall of Deceit face down.$Morph {U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Warped Researcher|Legions|56|U|{4}{U}|Creature - Human Wizard Mutant|3|4|Whenever a player cycles a card, Warped Researcher gains flying and shroud until end of turn. (It can't be the target of spells or abilities.)| -Weaver of Lies|Legions|57|R|{5}{U}{U}|Creature - Beast|4|4|Morph {4}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Weaver of Lies is turned face up, turn any number of target creatures with morph other than Weaver of Lies face down.| +Weaver of Lies|Legions|57|R|{5}{U}{U}|Creature - Beast|4|4|Morph {4}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Weaver of Lies is turned face up, turn any number of target creatures with a morph ability other than Weaver of Lies face down.| Willbender|Legions|58|U|{1}{U}|Creature - Human Wizard|1|2|Morph {1}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Willbender is turned face up, change the target of target spell or ability with a single target.| Aphetto Exterminator|Legions|59|U|{2}{B}|Creature - Human Wizard|3|1|Morph {3}{B} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Aphetto Exterminator is turned face up, target creature gets -3/-3 until end of turn.| Celestial Gatekeeper|Legions|6|R|{3}{W}{W}|Creature - Bird Cleric|2|2|Flying$When Celestial Gatekeeper dies, exile it, then return up to two target Bird and/or Cleric permanent cards from your graveyard to the battlefield.| @@ -10367,7 +10367,7 @@ Essence Drain|Magic 2013|93|C|{4}{B}|Sorcery|||Essence Drain deals 3 damage to t Giant Scorpion|Magic 2013|94|C|{2}{B}|Creature - Scorpion|1|3|Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)| Harbor Bandit|Magic 2013|95|U|{2}{B}|Creature - Human Rogue|2|2|Harbor Bandit gets +1/+1 as long as you control an Island.${1}{U}: Harbor Bandit is unblockable this turn.| Knight of Infamy|Magic 2013|96|U|{1}{B}|Creature - Human Knight|2|1|Protection from white (This creature can't be blocked, targeted, dealt damage, or enchanted by anything white.)$Exalted (Whenever a creature you control attacks alone, that creature gets +1/+1 until end of turn.)| -Liliana of the Dark Realms|Magic 2013|97|M|{2}{B}{B}|Planeswalker - Liliana|||+1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library.$-3: Target creature gets +X/+X or -X/-X until end of turn, where X is the number of Swamps you control.$-6: You get an emblem with "Swamps you control have �{tap}: Add {B}{B}{B}{B} to your mana pool.'"| +Liliana of the Dark Realms|Magic 2013|97|M|{2}{B}{B}|Planeswalker - Liliana|||+1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library.$-3: Target creature gets +X/+X or -X/-X until end of turn, where X is the number of Swamps you control.$-6: You get an emblem with "Swamps you control have {tap}: Add {B}{B}{B}{B} to your mana pool.'"| Liliana's Shade|Magic 2013|98|C|{2}{B}{B}|Creature - Shade|1|1|When Liliana's Shade enters the battlefield, you may search your library for a Swamp card, reveal it, put it into your hand, then shuffle your library.${B}: Liliana's Shade gets +1/+1 until end of turn.| Mark of the Vampire|Magic 2013|99|C|{3}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2 and has lifelink. (Damage dealt by the creature also causes its controller to gain that much life.)| Artisan of Kozilek|Magic: The Gathering-Commander|1|U|{9}|Creature - Eldrazi|10|9|When you cast Artisan of Kozilek, you may return target creature card from your graveyard to the battlefield.$Annihilator 2 (Whenever this creature attacks, defending player sacrifices two permanents.)| @@ -10717,7 +10717,7 @@ Exile|Masters Edition|12|C|{2}{W}|Instant|||Exile target nonwhite attacking crea Ghazban Ogre|Masters Edition|120|C|{G}|Creature - Ogre|2|2|At the beginning of your upkeep, if a player has more life than each other player, the player with the most life gains control of Ghazbán Ogre.| Hungry Mist|Masters Edition|121|C|{2}{G}{G}|Creature - Elemental|6|2|At the beginning of your upkeep, sacrifice Hungry Mist unless you pay {G}{G}.| Ice Storm|Masters Edition|122|U|{2}{G}|Sorcery|||Destroy target land.| -Ifh-B�ff Efreet|Masters Edition|123|R|{2}{G}{G}|Creature - Efreet|3|3|Flying${G}: Ifh-Bíff Efreet deals 1 damage to each creature with flying and each player. Any player may activate this ability.| +Ifh-B ff Efreet|Masters Edition|123|R|{2}{G}{G}|Creature - Efreet|3|3|Flying${G}: Ifh-Bíff Efreet deals 1 damage to each creature with flying and each player. Any player may activate this ability.| Nature's Lore|Masters Edition|124|C|{1}{G}|Sorcery|||Search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.| Primal Order|Masters Edition|125|R|{2}{G}{G}|Enchantment|||At the beginning of each player's upkeep, Primal Order deals damage to that player equal to the number of nonbasic lands he or she controls.| Rabid Wombat|Masters Edition|126|U|{2}{G}{G}|Creature - Wombat|0|1|Vigilance$Rabid Wombat gets +2/+2 for each Aura attached to it.| @@ -11535,18 +11535,18 @@ Taiga|Masters Edition IV|253|R||Land - Mountain Forest|||| Tropical Island|Masters Edition IV|254|R||Land - Forest Island|||| Tundra|Masters Edition IV|255|R||Land - Plains Island|||| Underground Sea|Masters Edition IV|256|R||Land - Island Swamp|||| -Urza's Mine|Masters Edition IV|257|L||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Masters Edition IV|257|L||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Masters Edition IV|257|L||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Mine|Masters Edition IV|257|L||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Masters Edition IV|258|L||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Masters Edition IV|258|L||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Masters Edition IV|258|L||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Masters Edition IV|258|L||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Tower|Masters Edition IV|259|L||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Masters Edition IV|259|L||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Masters Edition IV|259|L||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| -Urza's Tower|Masters Edition IV|259|L||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Mine|Masters Edition IV|257|L||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Masters Edition IV|257|L||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Masters Edition IV|257|L||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Mine|Masters Edition IV|257|L||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Masters Edition IV|258|L||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Masters Edition IV|258|L||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Masters Edition IV|258|L||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Masters Edition IV|258|L||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Tower|Masters Edition IV|259|L||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Masters Edition IV|259|L||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Masters Edition IV|259|L||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Tower|Masters Edition IV|259|L||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| Serra Aviary|Masters Edition IV|26|U|{3}{W}|World Enchantment|||Creatures with flying get +1/+1.| Volcanic Island|Masters Edition IV|260|R||Land - Island Mountain|||| Serra Bestiary|Masters Edition IV|27|C|{W}{W}|Enchantment - Aura|||Enchant creature$At the beginning of your upkeep, sacrifice Serra Bestiary unless you pay {W}{W}.$Enchanted creature can't attack or block, and its activated abilities with {tap} in their costs can't be activated.| @@ -11616,7 +11616,7 @@ Gravebind|Masters Edition IV|84|C|{B}|Instant|||Target creature can't be regener Guardian Beast|Masters Edition IV|85|R|{3}{B}|Creature - Beast|2|4|As long as Guardian Beast is untapped, noncreature artifacts you control can't be enchanted, they're indestructible, and other players can't gain control of them. This effect doesn't remove Auras already attached to those artifacts.| Hasran Ogress|Masters Edition IV|86|C|{B}{B}|Creature - Ogre|3|2|Whenever Hasran Ogress attacks, it deals 3 damage to you unless you pay {2}.| Howl from Beyond|Masters Edition IV|87|C|{X}{B}|Instant|||Target creature gets +X/+0 until end of turn.| -Jun�n Efreet|Masters Edition IV|88|U|{1}{B}{B}|Creature - Efreet|3|3|Flying$At the beginning of your upkeep, sacrifice Junún Efreet unless you pay {B}{B}.| +Jun n Efreet|Masters Edition IV|88|U|{1}{B}{B}|Creature - Efreet|3|3|Flying$At the beginning of your upkeep, sacrifice Junún Efreet unless you pay {B}{B}.| Lich|Masters Edition IV|89|R|{B}{B}{B}{B}|Enchantment|||As Lich enters the battlefield, you lose life equal to your life total.$You don't lose the game for having 0 or less life.$If you would gain life, draw that many cards instead.$Whenever you're dealt damage, sacrifice that many nontoken permanents. If you can't, you lose the game.$When Lich is put into a graveyard from the battlefield, you lose the game.| Conversion|Masters Edition IV|9|R|{2}{W}{W}|Enchantment|||At the beginning of your upkeep, sacrifice Conversion unless you pay {W}{W}.$All Mountains are Plains.| Lim-Dul's Cohort|Masters Edition IV|90|C|{1}{B}{B}|Creature - Zombie|2|3|Whenever Lim-Dûl's Cohort blocks or becomes blocked by a creature, that creature can't be regenerated this turn.| @@ -13515,9 +13515,9 @@ Quicksand|Ninth Edition|323|U||Land|||{tap}: Add {1} to your mana pool.${tap}, S Shivan Reef|Ninth Edition|324|R||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {U} or {R} to your mana pool. Shivan Reef deals 1 damage to you.| Sulfurous Springs|Ninth Edition|325|R||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {B} or {R} to your mana pool. Sulfurous Springs deals 1 damage to you.| Underground River|Ninth Edition|326|R||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {U} or {B} to your mana pool. Underground River deals 1 damage to you.| -Urza's Mine|Ninth Edition|327|U||Land - Urza�s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Power Plant|Ninth Edition|328|U||Land - Urza�s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| -Urza's Tower|Ninth Edition|329|U||Land - Urza�s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| +Urza's Mine|Ninth Edition|327|U||Land - Urza s Mine|||{tap}: Add {1} to your mana pool. If you control an Urza's Power-Plant and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Power Plant|Ninth Edition|328|U||Land - Urza s Power-Plant|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Tower, add {2} to your mana pool instead.| +Urza's Tower|Ninth Edition|329|U||Land - Urza s Tower|||{tap}: Add {1} to your mana pool. If you control an Urza's Mine and an Urza's Power-Plant, add {3} to your mana pool instead.| Peace of Mind|Ninth Edition|33|U|{1}{W}|Enchantment|||{W}, Discard a card: You gain 3 life.| Yavimaya Coast|Ninth Edition|330|R||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {G} or {U} to your mana pool. Yavimaya Coast deals 1 damage to you.| Plains|Ninth Edition|331|L||Basic Land - Plains|||W| @@ -14285,7 +14285,7 @@ Artificial Evolution|Onslaught|67|R|{U}|Instant|||Change the text of target spel Ascending Aven|Onslaught|68|C|{2}{U}{U}|Creature - Bird Soldier|3|2|Flying$Ascending Aven can block only creatures with flying.$Morph {2}{U} You may cast this card face downn as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Aven Fateshaper|Onslaught|69|U|{6}{U}|Creature - Bird Wizard|4|5|Flying$When Aven Fateshaper enters the battlefield, look at the top four cards of your library, then put them back in any order.${4}{U}: Look at the top four cards of your library, then put them back in any order.| Aven Brigadier|Onslaught|7|R|{3}{W}{W}{W}|Creature - Bird Soldier|3|5|Flying$Other Bird creatures get +1/+1.$Other Soldier creatures get +1/+1.| -Backslide|Onslaught|70|C|{1}{U}|Instant|||Turn target creature with morph face down.$Cycling {U} ({U}, Discard this card: Draw a card.)| +Backslide|Onslaught|70|C|{1}{U}|Instant|||Turn target creature with a morph ability face down.$Cycling {U} ({U}, Discard this card: Draw a card.)| Blatant Thievery|Onslaught|71|R|{4}{U}{U}{U}|Sorcery|||For each opponent, gain control of target permanent that player controls. (This effect lasts indefinitely.)| Callous Oppressor|Onslaught|72|R|{1}{U}{U}|Creature - Cephalid|1|2|You may choose not to untap Callous Oppressor during your untap step.$As Callous Oppressor enters the battlefield, an opponent chooses a creature type.${tap}: Gain control of target creature that isn't of the chosen type for as long as Callous Oppressor remains tapped.| Chain of Vapor|Onslaught|73|U|{U}|Instant|||Return target nonland permanent to its owner's hand. Then that permanent's controller may sacrifice a land. If the player does, he or she may copy this spell and may choose a new target for that copy.| @@ -15127,7 +15127,7 @@ Bog Wraith|Portal|5|U|{3}{B}|Creature - Wraith|3|3|Swampwalk (This creature i Coral Eel|Portal|50|C|{1}{U}|Creature - Fish|2|1|| Cruel Fate|Portal|51|R|{4}{U}|Sorcery|||Look at the top five cards of target opponent's library. Put one of those cards into that player's graveyard and the rest on top of his or her library in any order.| Deep-Sea Serpent|Portal|52|U|{4}{U}{U}|Creature - Serpent|5|5|Deep-Sea Serpent can't attack unless defending player controls an Island.| -Dej� Vu|Portal|53|C|{2}{U}|Sorcery|||Return target sorcery card from your graveyard to your hand.| +Dej Vu|Portal|53|C|{2}{U}|Sorcery|||Return target sorcery card from your graveyard to your hand.| Djinn of the Lamp|Portal|54|R|{5}{U}{U}|Creature - Djinn|5|6|Flying| Flux|Portal|56|U|{2}{U}|Sorcery|||Each player discards any number of cards, then draws that many cards.$Draw a card.| Tidal Surge|Portal|56|C|{1}{U}|Sorcery|||Tap up to three target creatures without flying.| @@ -15275,7 +15275,7 @@ Air Elemental|Portal Second Age|31|U|{3}{U}{U}|Creature - Elemental|4|4|Flying| Apprentice Sorcerer|Portal Second Age|32|U|{2}{U}|Creature - Human Wizard|1|1|{tap}: Apprentice Sorcerer deals 1 damage to target creature or player. Activate this ability only during your turn, before attackers are declared.| Armored Galleon|Portal Second Age|33|U|{4}{U}|Creature - Human Pirate|5|4|Armored Galleon can't attack unless defending player controls an Island.| Coastal Wizard|Portal Second Age|34|R|{2}{U}{U}|Creature - Human Wizard|1|1|{tap}: Return Coastal Wizard and another target creature to their owners' hands. Activate this ability only during your turn, before attackers are declared.| -Dej� Vu|Portal Second Age|35|C|{2}{U}|Sorcery|||Return target sorcery card from your graveyard to your hand.| +Dej Vu|Portal Second Age|35|C|{2}{U}|Sorcery|||Return target sorcery card from your graveyard to your hand.| Denizen of the Deep|Portal Second Age|36|R|{6}{U}{U}|Creature - Serpent|11|11|When Denizen of the Deep enters the battlefield, return each other creature you control to its owner's hand.| Exhaustion|Portal Second Age|37|R|{2}{U}|Sorcery|||Creatures and lands target opponent controls don't untap during his or her next untap step.| Extinguish|Portal Second Age|38|C|{1}{U}|Instant|||Counter target sorcery spell.| @@ -17167,7 +17167,7 @@ Furnace Celebration|Scars of Mirrodin|90|U|{1}{R}{R}|Enchantment|||Whenever you Galvanic Blast|Scars of Mirrodin|91|C|{R}|Instant|||Galvanic Blast deals 2 damage to target creature or player.$Metalcraft - Galvanic Blast deals 4 damage to that creature or player instead if you control three or more artifacts.| Goblin Gaveleer|Scars of Mirrodin|92|C|{R}|Creature - Goblin Warrior|1|1|Trample$Goblin Gaveleer gets +2/+0 for each Equipment attached to it.| Hoard-Smelter Dragon|Scars of Mirrodin|93|R|{4}{R}{R}|Creature - Dragon|5|5|Flying${3}{R}: Destroy target artifact. Hoard-Smelter Dragon gets +X/+0 until end of turn, where X is that artifact's converted mana cost.| -Koth of the Hammer|Scars of Mirrodin|94|M|{2}{R}{R}|Planeswalker - Koth|||+1: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land.$-2: Add {R} to your mana pool for each Mountain you control.$-5: You get an emblem with "Mountains you control have �{tap}: This land deals 1 damage to target creature or player.'"| +Koth of the Hammer|Scars of Mirrodin|94|M|{2}{R}{R}|Planeswalker - Koth|||+1: Untap target Mountain. It becomes a 4/4 red Elemental creature until end of turn. It's still a land.$-2: Add {R} to your mana pool for each Mountain you control.$-5: You get an emblem with "Mountains you control have {tap}: This land deals 1 damage to target creature or player.'"| Kuldotha Phoenix|Scars of Mirrodin|95|R|{2}{R}{R}{R}|Creature - Phoenix|4|4|Flying, haste$Metalcraft - {4}: Return Kuldotha Phoenix from your graveyard to the battlefield. Activate this ability only during your upkeep and only if you control three or more artifacts.| Kuldotha Rebirth|Scars of Mirrodin|96|C|{R}|Sorcery|||As an additional cost to cast Kuldotha Rebirth, sacrifice an artifact.$Put three 1/1 red Goblin creature tokens onto the battlefield.| Melt Terrain|Scars of Mirrodin|97|C|{2}{R}{R}|Sorcery|||Destroy target land. Melt Terrain deals 2 damage to that land's controller.| @@ -19642,7 +19642,7 @@ Saltcrusted Steppe|Time Spiral|277|U||Land|||{tap}: Add {1} to your mana pool.${ Swarmyard|Time Spiral|278|R||Land|||{tap}: Add {1} to your mana pool.${tap}: Regenerate target Insect, Rat, Spider, or Squirrel.| Terramorphic Expanse|Time Spiral|279|C||Land|||{tap}, Sacrifice Terramorphic Expanse: Search your library for a basic land card and put it onto the battlefield tapped. Then shuffle your library.| Mangara of Corondor|Time Spiral|28|R|{1}{W}{W}|Legendary Creature - Human Wizard|1|1|{tap}: Exile Mangara of Corondor and target permanent.| -Urza's Factory|Time Spiral|280|U||Land - Urza�s|||{tap}: Add {1} to your mana pool.${7}, {tap}: Put a 2/2 colorless Assembly-Worker artifact creature token onto the battlefield.| +Urza's Factory|Time Spiral|280|U||Land - Urza s|||{tap}: Add {1} to your mana pool.${7}, {tap}: Put a 2/2 colorless Assembly-Worker artifact creature token onto the battlefield.| Vesuva|Time Spiral|281|R||Land|||You may have Vesuva enter the battlefield tapped as a copy of any land on the battlefield.| Plains|Time Spiral|282|L||Basic Land - Plains|||W| Plains|Time Spiral|283|L||Basic Land - Plains|||W| @@ -22124,7 +22124,7 @@ Dawnstrike Paladin|Magic 2014|15|C|{3}{W}{W}|Creature - Human Knight|2|4|Vigilan Devout Invocation|Magic 2014|16|M|{6}{W}|Sorcery|||Tap any number of untapped creatures you control. Put a 4/4 white Angel creature token with flying onto the battlefield for each creature tapped this way. | Divine Favor|Magic 2014|17|C|{1}{W}|Enchantment - Aura|||Enchant creature$When Divine Favor enters the battlefield, you gain 3 life.$Enchanted creature gets +1/+3.| Fiendslayer Paladin|Magic 2014|18|R|{1}{W}{W}|Creature - Human Knight|2|2|First strike, lifelink$Fiendslayer Paladin can't be the target of black or red spells your opponents control.| -Fortify|Magic 2014|19|C|{2}{W}|Instant|||Choose one � Creatures you control get +2/+0 until end of turn; or creatures you control get +0/+2 until end of turn.| +Fortify|Magic 2014|19|C|{2}{W}|Instant|||Choose one Creatures you control get +2/+0 until end of turn; or creatures you control get +0/+2 until end of turn.| Griffin Sentinel|Magic 2014|20|C|{2}{W}|Creature - Griffin|1|3|Flying, vigilance| Hive Stirrings|Magic 2014|21|C|{2}{W}|Sorcery|||Put two 1/1 colorless Sliver creature tokens onto the battlefield.| Imposing Sovereign|Magic 2014|22|R|{1}{W}|Creature - Human|2|1|Creatures your opponents control enter the battlefield tapped.| @@ -22185,7 +22185,7 @@ Trained Condor|Magic 2014|76|C|{2}{U}|Creature - Bird|2|1|Flying$Whenever Traine Traumatize|Magic 2014|77|M|{3}{U}{U}|Sorcery|||Target player puts the top half of his or her library, rounded down, into his or her graveyard.| Wall of Frost|Magic 2014|78|U|{1}{U}{U}|Creature - Wall|0|7|Defender$Whenever Wall of Frost blocks a creature, that creature doesn't untap during its controller's next untap step.| Warden of Evos Isle|Magic 2014|79|U|{2}{U}|Creature - Bird Wizard|2|2|Flying$Creature spells with flying you cast cost {1} less to cast.| -Water Servant|Magic 2014|80|U|{2}{U}{U}|Creature � Elemental|3|4|{U}: Water Servant gets +1/-1 until end of turn.${U}: Water Servant gets -1/+1 until end of turn.| +Water Servant|Magic 2014|80|U|{2}{U}{U}|Creature Elemental|3|4|{U}: Water Servant gets +1/-1 until end of turn.${U}: Water Servant gets -1/+1 until end of turn.| Windreader Sphinx|Magic 2014|81|M|{5}{U}{U}|Creature - Sphinx|3|7|Flying$Whenever a creature with flying attacks, you may draw a card.| Zephyr Charge|Magic 2014|82|C|{1}{U}|Enchantment|||{1}{U}: Target creature gains flying until end of turn.| Accursed Spirit|Magic 2014|83|C|{3}{B}|Creature - Spirit|3|2|Intimidate| @@ -22207,7 +22207,7 @@ Festering Newt|Magic 2014|98|C|{B}|Creature - Salamander|1|1|When Festering Newt Gnawing Zombie|Magic 2014|99|U|{1}{B}|Creature - Zombie|1|3|{1}{B}, Sacrifice a creature: Target player loses 1 life and you gain 1 life.| Grim Return|Magic 2014|100|R|{2}{B}|Instant|||Choose target creature card in a graveyard that was put there from the battlefield this turn. Put that card onto the battlefield under your control. | Lifebane Zombie|Magic 2014|101|R|{1}{B}{B}|Creature - Zombie Warrior|3|1|Intimidate$When Lifebane Zombie enters the battlefield, target opponent reveals his or her hand. You choose a green or white creature card from it and exile that card.| -Liliana of the Dark Realms|Magic 2014|102|M|{2}{B}{B}|Planeswalker - Liliana|3|+1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library.$-3: Target creature gets +X/+X or -X/-X until end of turn, where X is the number of Swamps you control.$-6: You get an emblem with "Swamps you control have �Tap: Add {B}{B}{B}{B} to your mana pool.'"| +Liliana of the Dark Realms|Magic 2014|102|M|{2}{B}{B}|Planeswalker - Liliana|3|+1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library.$-3: Target creature gets +X/+X or -X/-X until end of turn, where X is the number of Swamps you control.$-6: You get an emblem with "Swamps you control have Tap: Add {B}{B}{B}{B} to your mana pool.'"| Liliana's Reaver|Magic 2014|103|R|{2}{B}{B}|Creature - Zombie|4|3|Deathtouch$Whenever Liliana's Reaver deals combat damage to a player, that player discards a card and you put a 2/2 black Zombie creature token onto the battlefield tapped.| Liturgy of Blood|Magic 2014|104|C|{3}{B}{B}|Sorcery|||Destroy target creature. Add {B}{B}{B} to your mana pool.| Mark of the Vampire|Magic 2014|105|C|{3}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2 and has lifelink.| @@ -22942,7 +22942,7 @@ Terramorphic Expanse|Commander 2013 Edition|328|C||Land|||{tap}, Sacrifice Terra Tranquil Thicket|Commander 2013 Edition|329|C||Land|||Tranquil Thicket enters the battlefield tapped.${tap}: Add {G} to your mana pool.$Cycling {G} ({G}, Discard this card: Draw a card.)| Borrowing 100,000 Arrows|Commander 2013 Edition|33|U|{2}{U}|Sorcery|||Draw a card for each tapped creature target opponent controls.| Transguild Promenade|Commander 2013 Edition|330|C||Land|||Transguild Promenade enters the battlefield tapped.$When Transguild Promenade enters the battlefield, sacrifice it unless you pay {1}.${tap}: Add one mana of any color to your mana pool.| -Urza's Factory|Commander 2013 Edition|331|U||Land - Urza�s|||{tap}: Add {1} to your mana pool.${7}, {tap}: Put a 2/2 colorless Assembly-Worker artifact creature token onto the battlefield.| +Urza's Factory|Commander 2013 Edition|331|U||Land - Urza s|||{tap}: Add {1} to your mana pool.${7}, {tap}: Put a 2/2 colorless Assembly-Worker artifact creature token onto the battlefield.| Vitu-Ghazi, the City-Tree|Commander 2013 Edition|332|U||Land|||{tap}: Add {1} to your mana pool.${2}{G}{W}, {tap}: Put a 1/1 green Saproling creature token onto the battlefield.| Vivid Crag|Commander 2013 Edition|333|U||Land|||Vivid Crag enters the battlefield tapped with two charge counters on it.${tap}: Add {R} to your mana pool.${tap}, Remove a charge counter from Vivid Crag: Add one mana of any color to your mana pool.| Vivid Creek|Commander 2013 Edition|334|U||Land|||Vivid Creek enters the battlefield tapped with two charge counters on it.${tap}: Add {U} to your mana pool.${tap}, Remove a charge counter from Vivid Creek: Add one mana of any color to your mana pool.| @@ -23103,11 +23103,11 @@ Nekrataal|Commander 2014 Edition|152|U|{2}{B}{B}|Creature - Human Assassin|2|1|F Pestilence Demon|Commander 2014 Edition|153|R|{5}{B}{B}{B}|Creature - Demon|7|6|Flying${B}: Pestilence Demon deals 1 damage to each creature and each player.| Phyrexian Gargantua|Commander 2014 Edition|154|U|{4}{B}{B}|Creature - Horror|4|4|When Phyrexian Gargantua enters the battlefield, you draw two cards and you lose 2 life.| Pontiff of Blight|Commander 2014 Edition|155|R|{4}{B}{B}|Creature - Zombie Cleric|2|7|Extort (Whenever you cast a spell, you may pay {WB}. If you do, each opponent loses 1 life and you gain that much life.)$Other creatures you control have extort. (If a creature has multiple instances of extort, each triggers separately.)| -Profane Command|Commander 2014 Edition|156|R|{X}{B}{B}|Sorcery|||Choose two -$� Target player loses X life.$� Return target creature card with converted mana cost X or less from your graveyard to the battlefield.$� Target creature gets -X/-X until end of turn.$� Up to X target creatures gain fear until end of turn. (They can't be blocked except by artifact creatures and/or black creatures.)| -Promise of Power|Commander 2014 Edition|157|R|{2}{B}{B}{B}|Sorcery|||Choose one -$� You draw five cards and you lose 5 life.$� Put an X/X black Demon creature token with flying onto the battlefield, where X is the number of cards in your hand as the token enters the battlefield.$Entwine {4} (Choose both if you pay the entwine cost.)| +Profane Command|Commander 2014 Edition|156|R|{X}{B}{B}|Sorcery|||Choose two -$ Target player loses X life.$ Return target creature card with converted mana cost X or less from your graveyard to the battlefield.$ Target creature gets -X/-X until end of turn.$ Up to X target creatures gain fear until end of turn. (They can't be blocked except by artifact creatures and/or black creatures.)| +Promise of Power|Commander 2014 Edition|157|R|{2}{B}{B}{B}|Sorcery|||Choose one -$ You draw five cards and you lose 5 life.$ Put an X/X black Demon creature token with flying onto the battlefield, where X is the number of cards in your hand as the token enters the battlefield.$Entwine {4} (Choose both if you pay the entwine cost.)| Read the Bones|Commander 2014 Edition|158|C|{2}{B}|Sorcery|||Scry 2, then draw two cards. You lose 2 life. (To scry 2, look at the top two cards of your library, then put any number of them on the bottom of your library and the rest on top in any order.)| Reaper from the Abyss|Commander 2014 Edition|159|M|{3}{B}{B}{B}|Creature - Demon|6|6|Flying$Morbid - At the beginning of each end step, if a creature died this turn, destroy target non-Demon creature.| -Reef Worm|Commander 2014 Edition|16|R|{3}{U}|Creature - Worm|0|1|When Reef Worm dies, put a 3/3 blue Fish creature token onto the battlefield with "When this creature dies, put a 6/6 blue Whale creature token onto the battlefield with �When this creature dies, put a 9/9 blue Kraken creature token onto the battlefield.'"| +Reef Worm|Commander 2014 Edition|16|R|{3}{U}|Creature - Worm|0|1|When Reef Worm dies, put a 3/3 blue Fish creature token onto the battlefield with "When this creature dies, put a 6/6 blue Whale creature token onto the battlefield with When this creature dies, put a 9/9 blue Kraken creature token onto the battlefield.'"| Shriekmaw|Commander 2014 Edition|160|U|{4}{B}|Creature - Elemental|3|2|Fear (This creature can't be blocked except by artifact creatures and/or black creatures.)$When Shriekmaw enters the battlefield, destroy target nonartifact, nonblack creature.$Evoke {1}{B} (You may cast this spell for its evoke cost. If you do, it's sacrificed when it enters the battlefield.)| Sign in Blood|Commander 2014 Edition|161|C|{B}{B}|Sorcery|||Target player draws two cards and loses 2 life.| Skeletal Scrying|Commander 2014 Edition|162|U|{X}{B}|Instant|||As an additional cost to cast Skeletal Scrying, exile X cards from your graveyard.$You draw X cards and you lose X life.| @@ -23380,35 +23380,35 @@ Brine Elemental|Commander 2014 Edition|99|U|{4}{U}{U}|Creature - Elemental|5|4|M Acolyte's Reward|Born of the Gods|1|U|{1}{W}|Instant|||Prevent the next X damage that would be dealt to target creature this turn, where X is your devotion to white. If damage is prevented this way, Acolyte's Reward deals that much damage to target creature or player.| Akroan Phalanx|Born of the Gods|2|U|{3}{W}|Creature - Human Soldier|3|3|Vigilance${2}{R}: Creatures you control get +1/+0 until end of turn.| Akroan Skyguard|Born of the Gods|3|C|{1}{W}|Creature - Human Soldier|1|1|Flying$Heroic - Whenever you cast a spell that targets Akroan Skyguard, put a +1/+1 counter on Akroan Skyguard.| -Archetype of Courage|Born of the Gods|4|U|{1}{W}{W}|Enchantment Creature � Human Soldier|2|2|Creatures you control have first strike.$Creatures your opponents control lose first strike and can't have or gain first strike.| -Brimaz, King of Oreskos|Born of the Gods|5|M|{1}{W}{W}|Legendary Creature � Cat Soldier|3|4|Vigilance$Whenever Brimaz, King of Oreskos attacks, put a 1/1 white Cat Soldier creature token with vigilance onto the battlefield attacking.$Whenever Brimaz blocks a creature, put a 1/1 white Cat Soldier creature token with vigilance onto the battlefield blocking that creature.| -Dawn to Dusk|Born of the Gods|6|U|{2}{W}{W}|Sorcery|||Choose one or both � Return target enchantment card from your graveyard to your hand; and/or destroy target enchantment.| -Eidolon of Countless Battles|Born of the Gods|7|R|{1}{W}{W}|Enchantment Creature � Spirit|0|0|Bestow {2}{W}{W}$Eidolon of Countless Battles and enchanted creature get +1/+1 for each creature you control and +1/+1 for each Aura you control.| +Archetype of Courage|Born of the Gods|4|U|{1}{W}{W}|Enchantment Creature Human Soldier|2|2|Creatures you control have first strike.$Creatures your opponents control lose first strike and can't have or gain first strike.| +Brimaz, King of Oreskos|Born of the Gods|5|M|{1}{W}{W}|Legendary Creature Cat Soldier|3|4|Vigilance$Whenever Brimaz, King of Oreskos attacks, put a 1/1 white Cat Soldier creature token with vigilance onto the battlefield attacking.$Whenever Brimaz blocks a creature, put a 1/1 white Cat Soldier creature token with vigilance onto the battlefield blocking that creature.| +Dawn to Dusk|Born of the Gods|6|U|{2}{W}{W}|Sorcery|||Choose one or both Return target enchantment card from your graveyard to your hand; and/or destroy target enchantment.| +Eidolon of Countless Battles|Born of the Gods|7|R|{1}{W}{W}|Enchantment Creature Spirit|0|0|Bestow {2}{W}{W}$Eidolon of Countless Battles and enchanted creature get +1/+1 for each creature you control and +1/+1 for each Aura you control.| Elite Skirmisher|Born of the Gods|8|C|{2}{W}|Creature - Human Soldier|3|1|Heroic - Whenever you cast a spell that targets Elite Skirmisher, you may tap target creature.| Ephara's Radiance|Born of the Gods|9|C|{W}|Enchantment - Aura|||Enchant creature$Enchanted creature has "{1}{W}, {T}: You gain 3 life."| Excoriate|Born of the Gods|10|C|{3}{W}|Sorcery|||Exile target tapped creature.| Fated Retribution|Born of the Gods|11|R|{4}{W}{W}{W}|Instant|||Destroy all creatures and planeswalkers. If it's your turn, scry 2.| Ghostblade Eidolon|Born of the Gods|12|U|{2}{W}|Enchantment Creature - Spirit|1|1|Bestow {5}{W}$Double strike$Enchanted creature gets +1/+1 and has double strike.| Glimpse the Sun God|Born of the Gods|13|U|{X}{W}|Instant|||Tap X target creatures. Scry 1.| -God-Favored General|Born of the Gods|14|U|{1}{W}|Creature � Human Soldier|1|1|Inspired � Whenever God-Favored General becomes untapped, you may pay {2}{W}. If you do, put two 1/1 white Soldier enchantment creature tokens onto the battlefield.| +God-Favored General|Born of the Gods|14|U|{1}{W}|Creature Human Soldier|1|1|Inspired Whenever God-Favored General becomes untapped, you may pay {2}{W}. If you do, put two 1/1 white Soldier enchantment creature tokens onto the battlefield.| Great Hart|Born of the Gods|15|C|{3}{W}|Creature - Elk|2|4|| Griffin Dreamfinder|Born of the Gods|16|C|{3}{W}{W}|Creature - Griffin|1|4|Flying$When Griffin Dreamfinder enters the battlefield, return target enchantment card from your graveyard to your hand.| -Hero of Iroas|Born of the Gods|17|R|{1}{W}|Creature � Human Soldier|2|2|Aura spells you cast cost {1} less to cast.$Heroic � Whenever you cast a spell that targets Hero of Iroas, put a +1/+1 counter on Hero of Iroas.| +Hero of Iroas|Born of the Gods|17|R|{1}{W}|Creature Human Soldier|2|2|Aura spells you cast cost {1} less to cast.$Heroic Whenever you cast a spell that targets Hero of Iroas, put a +1/+1 counter on Hero of Iroas.| Hold at Bay|Born of the Gods|18|C|{1}{W}|Instant|||Prevent the next 7 damage that would be dealt to target creature or player this turn.| -Loyal Pegasus|Born of the Gods|19|C|{W}|Creature � Pegasus|2|1|Flying$Loyal Pegasus can't attack or block alone.| +Loyal Pegasus|Born of the Gods|19|C|{W}|Creature Pegasus|2|1|Flying$Loyal Pegasus can't attack or block alone.| Mortal's Ardor|Born of the Gods|20|C|{W}|Instant|||Target creature gets +1/+1 and gains lifelink until end of turn.| -Nyxborn Shieldmate|Born of the Gods|21|C|{W}|Enchantment Creature � Human Soldier|1|2|Bestow {2}{W}$Enchanted creature gets +1/+2.| -Oreskos Sun Guide|Born of the Gods|22|C|{1}{W}|Creature � Cat Monk|2|2|Inspired - Whenever Oreskos Sun Guide becomes untapped, you gain 2 life.| +Nyxborn Shieldmate|Born of the Gods|21|C|{W}|Enchantment Creature Human Soldier|1|2|Bestow {2}{W}$Enchanted creature gets +1/+2.| +Oreskos Sun Guide|Born of the Gods|22|C|{1}{W}|Creature Cat Monk|2|2|Inspired - Whenever Oreskos Sun Guide becomes untapped, you gain 2 life.| Ornitharch|Born of the Gods|23|U|{3}{W}{W}|Creature - Archon|3|3|Flying$Tribute 2$When Ornitharch enters the battlefield, if tribute wasn't paid, put two 1/1 white Bird creature tokens with flying onto the battlefield.| Plea for Guidance|Born of the Gods|24|R|{5}{W}|Sorcery|||Search your library for up to two enchantment cards, reveal them, and put them into your hand. Then shuffle your library.| Revoke Existence|Born of the Gods|25|C|{1}{W}|Sorcery|||Exile target artifact or enchantment.| -Silent Sentinel|Born of the Gods|26|R|{5}{W}{W}|Creature � Archon|4|6|Flying$Whenever Silent Sentinel attacks, you may return target enchantment card from your graveyard to the battlefield.| -Spirit of the Labyrinth|Born of the Gods|27|R|{1}{W}|Enchantment Creature � Spirit|3|1|Each player can't draw more than one card each turn.| -Sunbond|Born of the Gods|28|U|{3}{W}|Enchantment � Aura|||Enchant creature$Enchanted creature has "Whenever you gain life, put that many +1/+1 counters on this creature."| -Vanguard of Brimaz|Born of the Gods|29|U|{W}{W}|Creature � Cat Soldier|2|2|Vigilance$Heroic � Whenever you cast a spell that targets Vanguard of Brimaz, put a 1/1 white Cat Soldier creature token with vigilance onto the battlefield.| -Aerie Worshippers|Born of the Gods|30|U|{3}{U}|Creature � Human Cleric|2|4|Inspired - Whenever Aerie Worshipers becomes untapped, you may pay {2}{U}. If you do, put a 2/2 blue Bird enchantment creature token with flying onto the battlefield.| -Arbiter of the Ideal|Born of the Gods|31|R|{4}{U}{U}|Creature � Sphinx|4|5|Flying$Inspired - Whenever Arbiter of the Ideal becomes untapped, reveal the top card of your library. If it's an artifact, creature, or land card, you may put it onto the battlefield with a manifestation counter on it. It's an enchantment in addition to its other types.| -Archetype of Imagination|Born of the Gods|32|U|{4}{U}{U}|Enchantment Creature � Human Wizard|3|2|Creatures you control have flying.$Creatures your opponents control lose flying and can't have or gain flying.| +Silent Sentinel|Born of the Gods|26|R|{5}{W}{W}|Creature Archon|4|6|Flying$Whenever Silent Sentinel attacks, you may return target enchantment card from your graveyard to the battlefield.| +Spirit of the Labyrinth|Born of the Gods|27|R|{1}{W}|Enchantment Creature Spirit|3|1|Each player can't draw more than one card each turn.| +Sunbond|Born of the Gods|28|U|{3}{W}|Enchantment Aura|||Enchant creature$Enchanted creature has "Whenever you gain life, put that many +1/+1 counters on this creature."| +Vanguard of Brimaz|Born of the Gods|29|U|{W}{W}|Creature Cat Soldier|2|2|Vigilance$Heroic Whenever you cast a spell that targets Vanguard of Brimaz, put a 1/1 white Cat Soldier creature token with vigilance onto the battlefield.| +Aerie Worshippers|Born of the Gods|30|U|{3}{U}|Creature Human Cleric|2|4|Inspired - Whenever Aerie Worshipers becomes untapped, you may pay {2}{U}. If you do, put a 2/2 blue Bird enchantment creature token with flying onto the battlefield.| +Arbiter of the Ideal|Born of the Gods|31|R|{4}{U}{U}|Creature Sphinx|4|5|Flying$Inspired - Whenever Arbiter of the Ideal becomes untapped, reveal the top card of your library. If it's an artifact, creature, or land card, you may put it onto the battlefield with a manifestation counter on it. It's an enchantment in addition to its other types.| +Archetype of Imagination|Born of the Gods|32|U|{4}{U}{U}|Enchantment Creature Human Wizard|3|2|Creatures you control have flying.$Creatures your opponents control lose flying and can't have or gain flying.| Chorus of the Tides|Born of the Gods|33|C|{3}{U}|Creature - Siren|3|2|Flying$Heroic - Whenever you cast a spell that targets Chorus of the Tides, scry 1.| Crypsis|Born of the Gods|34|C|{1}{U}|Instant|||Target creature you control gains protection from creatures your opponents control until end of turn. Untap it.| Deepwater Hypnotist|Born of the Gods|35|C|{1}{U}|Creature - Merfolk Wizard|2|1|Inspired - Whenever Deepwater Hypnotist becomes untapped, target creature an opponent controls gets -3/-0 until end of turn.| @@ -23417,127 +23417,127 @@ Eternity Snare|Born of the Gods|37|U|{5}{U}|Enchantment - Aura|||Enchant creatur Evanescent Intellect|Born of the Gods|38|C|{U}|Enchantment - Aura|||Enchant creature$Enchanted creature has "{1}{U}, {T}: Target player puts the top three cards of his or her library into his or her graveyard."| Fated Infatuation|Born of the Gods|39|R|{U}{U}{U}|Instant|||Put a token onto the battlefield that's a copy of target creature you control. If it's your turn, scry 2.| Flitterstep Eidolon|Born of the Gods|40|U|{1}{U}|Enchantment Creature - Spirit|1|1|Bestow {5}{U}$Flitterstep Eidolon can't be blocked.$Enchanted creature gets +1/+1 and can't be blocked.| -Floodtide Serpent|Born of the Gods|41|C|{4}{U}|Creature � Serpent|4|4|Floodtide Serpent can't attack unless you return an enchantment you control to its owner's hand. (This cost is paid as attackers are declared.)| -Kraken of the Straits|Born of the Gods|42|U|{5}{U}{U}|Creature � Kraken|6|6|Creatures with power less than the number of Islands you control can't block Kraken of the Straits.| -Meletis Astronomer|Born of the Gods|43|U|{1}{U}|Creature � Human Wizard|1|3|Heroic � Whenever you cast a spell that targets Meletis Astronomer, look at the top three cards of your library. You may reveal an enchantment card from among them and put it into your hand. Put the rest on the bottom of your library in any order.| -Mindreaver|Born of the Gods|44|R|{U}{U}|Creature � Human Wizard|2|1|Heroic � Whenever you cast a spell that targets Mindreaver, exile the top three cards of target player's library.${U}{U}, Sacrifice Mindreaver: Counter target spell with the same name as a card exiled with mindreaver.| +Floodtide Serpent|Born of the Gods|41|C|{4}{U}|Creature Serpent|4|4|Floodtide Serpent can't attack unless you return an enchantment you control to its owner's hand. (This cost is paid as attackers are declared.)| +Kraken of the Straits|Born of the Gods|42|U|{5}{U}{U}|Creature Kraken|6|6|Creatures with power less than the number of Islands you control can't block Kraken of the Straits.| +Meletis Astronomer|Born of the Gods|43|U|{1}{U}|Creature Human Wizard|1|3|Heroic Whenever you cast a spell that targets Meletis Astronomer, look at the top three cards of your library. You may reveal an enchantment card from among them and put it into your hand. Put the rest on the bottom of your library in any order.| +Mindreaver|Born of the Gods|44|R|{U}{U}|Creature Human Wizard|2|1|Heroic Whenever you cast a spell that targets Mindreaver, exile the top three cards of target player's library.${U}{U}, Sacrifice Mindreaver: Counter target spell with the same name as a card exiled with mindreaver.| Nullify|Born of the Gods|45|C|{U}{U}|Instant|||Counter target creature or Aura spell.| -Nyxborn Triton|Born of the Gods|46|C|{2}{U}|Enchantment Creature � Merfolk|2|3|Bestow {4}{U}$Enchanted creature gets +2/+3.| +Nyxborn Triton|Born of the Gods|46|C|{2}{U}|Enchantment Creature Merfolk|2|3|Bestow {4}{U}$Enchanted creature gets +2/+3.| Oracle's Insight|Born of the Gods|47|U|{3}{U}|Enchantment - Aura|||Enchant creature$Enchanted creature has "{T}: Scry 1, then draw a card."| -Perplexing Chimera|Born of the Gods|48|R|{4}{U}|Enchantment Creature � Chimera|3|3|Whenever an opponent casts a spell, you may exchange control of Perplexing Chimera and that spell. If you do, you may choose new targets for the spell. (If the spell becomes a permanent, you control that permanent.)| +Perplexing Chimera|Born of the Gods|48|R|{4}{U}|Enchantment Creature Chimera|3|3|Whenever an opponent casts a spell, you may exchange control of Perplexing Chimera and that spell. If you do, you may choose new targets for the spell. (If the spell becomes a permanent, you control that permanent.)| Retraction Helix|Born of the Gods|49|C|{U}|Instant|||Until end of turn, target creature gains "{T}: Return target nonland permanent to its owner's hand."| Siren of the Fanged Coast|Born of the Gods|50|U|{3}{U}{U}|Creature - Siren|1|1|Flying$Tribute 3$When Siren of the Fanged Coast enters the battlefield, if tribute wasn't paid, gain control of target creature.| Sphinx's Disciple|Born of the Gods|51|C|{3}{U}{U}|Creature - Human Wizard|2|2|Flying$Inspired - Whenever Sphinx's Disciple becomes untapped, draw a card.| Stratus Walk|Born of the Gods|52|C|{1}{U}|Enchantment - Aura|||Enchant creature$When Stratus Walk enters the battlefield, draw a card.$Enchanted creature has flying.$Enchanted creature can block only creatures with flying.| Sudden Storm|Born of the Gods|53|C|{3}{U}|Instant|||Tap up to two target creatures. Those creatures don't untap during their controllers' next untap steps. Scry 1.| Thassa's Rebuff|Born of the Gods|54|U|{1}{U}|Instant|||Counter target spell unless its controller pays {X}, where X is your devotion to blue.| -Tromokratis|Born of the Gods|55|R|{5}{U}{U}|Legendary Creature � Kraken|8|8|Tromokratis has hexproof unless it's attacking or blocking.$Tromokratis can't be blocked unless all creatures defending player controls block it. (If any creature that player controls doesn't block this creature, it can't be blocked.)| -Vortex Elemental|Born of the Gods|56|U|{U}|Creature � Elemental|0|1|{U}: Put Vortex Elemental and each creature blocking or blocked by it on top of their owners' libraries, then those players shuffle their libraries.${3}{U}{U}: Target creature blocks Vortex Elemental this turn if able.| +Tromokratis|Born of the Gods|55|R|{5}{U}{U}|Legendary Creature Kraken|8|8|Tromokratis has hexproof unless it's attacking or blocking.$Tromokratis can't be blocked unless all creatures defending player controls block it. (If any creature that player controls doesn't block this creature, it can't be blocked.)| +Vortex Elemental|Born of the Gods|56|U|{U}|Creature Elemental|0|1|{U}: Put Vortex Elemental and each creature blocking or blocked by it on top of their owners' libraries, then those players shuffle their libraries.${3}{U}{U}: Target creature blocks Vortex Elemental this turn if able.| Whelming Wave|Born of the Gods|57|R|{2}{U}{U}|Sorcery|||Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses and Serpents.| Archetype of Finality|Born of the Gods|58|U|{4}{B}{B}|Enchantment Creature - Gorgon|2|3|Creatures you control have deathtouch.$Creatures your opponents control lose deathtouch and can't have or gain deathtouch.| -Ashiok's Adept|Born of the Gods|59|U|{2}{B}|Creature � Human Wizard|1|3|Heroic � Whenever you cast a spell that targets Ashiok's Adept, each opponent discards a card.| +Ashiok's Adept|Born of the Gods|59|U|{2}{B}|Creature Human Wizard|1|3|Heroic Whenever you cast a spell that targets Ashiok's Adept, each opponent discards a card.| Asphyxiate|Born of the Gods|60|C|{1}{B}{B}|Sorcery|||Destroy target untapped creature.| Bile Blight|Born of the Gods|61|U|{B}{B}|Instant|||Target creature and all creatures with the same name as that creature get -3/-3 until end of turn.| -Black Oak of Odunos|Born of the Gods|62|U|{2}{B}|Creature � Zombie Treefolk|0|5|Defender${B}, Tap another untapped creature you control: Black Oak of Odunos gets +1/+1 until end of turn.| -Champion of Stray Souls|Born of the Gods|63|M|{4}{B}{B}|Creature � Skeleton Warrior|4|4|{3}{B}{B}, {T}, Sacrifice X other creatures: Return X target creatures from your graveyard to the battlefield.${5}{B}{B}: Put Champion of Stray Souls on top of your library from your graveyard.| +Black Oak of Odunos|Born of the Gods|62|U|{2}{B}|Creature Zombie Treefolk|0|5|Defender${B}, Tap another untapped creature you control: Black Oak of Odunos gets +1/+1 until end of turn.| +Champion of Stray Souls|Born of the Gods|63|M|{4}{B}{B}|Creature Skeleton Warrior|4|4|{3}{B}{B}, {T}, Sacrifice X other creatures: Return X target creatures from your graveyard to the battlefield.${5}{B}{B}: Put Champion of Stray Souls on top of your library from your graveyard.| Claim of Erebos|Born of the Gods|64|C|{1}{B}|Enchantment - Aura|||Enchant creature$Enchanted creature has "{1}{B}, {T}: Target player loses 2 life."| Drown in Sorrow|Born of the Gods|65|U|{1}{B}{B}|Sorcery|||All creatures get -2/-2 until end of turn. Scry 1.| -Eater of Hope|Born of the Gods|66|R|{5}{B}{B}|Creature � Demon|6|4|Flying${B}, Sacrifice another creature: Regenerate Eater of Hope.${2}{B}, Sacrifice two other creatures: Destroy target creature.| +Eater of Hope|Born of the Gods|66|R|{5}{B}{B}|Creature Demon|6|4|Flying${B}, Sacrifice another creature: Regenerate Eater of Hope.${2}{B}, Sacrifice two other creatures: Destroy target creature.| Eye Gouge|Born of the Gods|67|C|{B}|Instant|||Target creature gets -1/-1 until end of turn. If it's a Cyclops, destroy it.| -Fate Unraveler|Born of the Gods|68|R|{3}{B}|Enchantment Creature � Hag|3|4|Whenever an opponent draws a card, Fate Unraveler deals 1 damage to that player.| +Fate Unraveler|Born of the Gods|68|R|{3}{B}|Enchantment Creature Hag|3|4|Whenever an opponent draws a card, Fate Unraveler deals 1 damage to that player.| Fated Return|Born of the Gods|69|R|{4}{B}{B}{B}|Instant|||Put target creature card from a graveyard onto the battlefield under your control. It gains indestructible. If it's your turn, scry 2.| -Felhide Brawler|Born of the Gods|70|C|{1}{B}|Creature � Minotaur|2|2|Felhide Brawler can't block unless you control another Minotaur.| -Forlorn Pseudamma|Born of the Gods|71|U|{3}{B}|Creature � Zombie|2|1|Intimidate$Inspired - Whenever Forlorn Pseudamma becomes untapped, you may pay {2}{B}. If you do, put a 2/2 black Zombie enchantment creature token onto the battlefield.| +Felhide Brawler|Born of the Gods|70|C|{1}{B}|Creature Minotaur|2|2|Felhide Brawler can't block unless you control another Minotaur.| +Forlorn Pseudamma|Born of the Gods|71|U|{3}{B}|Creature Zombie|2|1|Intimidate$Inspired - Whenever Forlorn Pseudamma becomes untapped, you may pay {2}{B}. If you do, put a 2/2 black Zombie enchantment creature token onto the battlefield.| Forsaken Drifters|Born of the Gods|72|C|{3}{B}|Creature - Zombie|4|2|When Forsaken Drifters dies, put the top four cards of your library into your graveyard.| Gild|Born of the Gods|73|R|{3}{B}|Sorcery|||Exile target creature. Put a colorless artifact token named Gold onto the battlefield. It has "Sacrifice this artifact: Add one mana of any color to your mana pool."| Grisly Transformation|Born of the Gods|74|C|{2}{B}|Enchantment - Aura|||Enchant creature$When Grisly Transformation enters the battlefield, draw a card.$Enchanted creature has intimidate.| -Herald of Torment|Born of the Gods|75|R|{1}{B}{B}|Enchantment Creature � Demon|3|3|Bestow {3}{B}{B}$Flying$At the beginning of your upkeep, you lose 1 life.$Enchanted creature gets +3/+3 and has flying.| -Marshmist Titan|Born of the Gods|76|C|{6}{B}|Creature � Giant|4|5|Marshmist Titan costs {X} less to cast, where X is your devotion to black.| +Herald of Torment|Born of the Gods|75|R|{1}{B}{B}|Enchantment Creature Demon|3|3|Bestow {3}{B}{B}$Flying$At the beginning of your upkeep, you lose 1 life.$Enchanted creature gets +3/+3 and has flying.| +Marshmist Titan|Born of the Gods|76|C|{6}{B}|Creature Giant|4|5|Marshmist Titan costs {X} less to cast, where X is your devotion to black.| Necrobite|Born of the Gods|77|C|{2}{B}|Instant|||Target creature gains deathtouch until end of turn. Regenerate it.| -Nyxborn Eidolon|Born of the Gods|78|C|{1}{B}|Enchantment Creature � Spirit|2|1|Bestow {4}{B}$Enchanted creature gets +2/+1.| +Nyxborn Eidolon|Born of the Gods|78|C|{1}{B}|Enchantment Creature Spirit|2|1|Bestow {4}{B}$Enchanted creature gets +2/+1.| Odunos River Trawler|Born of the Gods|79|U|{2}{B}|Creature - Zombie|2|2|When Odunos River Trawler enters the battlefield, return target enchantment creature card from your graveyard to your hand.${W}, Sacrifice Odunos River Trawler: Return target enchantment creature card from your graveyard to your hand.| -Pain Seer|Born of the Gods|80|R|{1}{B}|Creature � Human Wizard|2|2|Inspired - Whenever Pain Seer becomes untapped, reveal the top card of your library and put that card into your hand. You lose life equal to that card's converted mana cost.| +Pain Seer|Born of the Gods|80|R|{1}{B}|Creature Human Wizard|2|2|Inspired - Whenever Pain Seer becomes untapped, reveal the top card of your library and put that card into your hand. You lose life equal to that card's converted mana cost.| Sanguimancy|Born of the Gods|81|U|{4}{B}|Sorcery|||You draw X cards and you lose X life, where X is your devotion to black.| -Servant of Tymaret|Born of the Gods|82|C|{2}{B}|Creature � Zombie|1|3|Inspired - Whenever Servant of Tymaret becomes untapped, each opponent loses 1 life. You gain life equal to the life lost this way.${2}{B}: Regenerate Servant of Tymaret.| -Shrike Harpy|Born of the Gods|83|U|{3}{B}{B}|Creature � Harpy|2|2|Flying$Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Shrike Harpy enters the battlefield, if tribute wasn't paid, target opponent sacrifices a creature.| -Spiteful Returned|Born of the Gods|84|U|{1}{B}|Enchantment Creature � Zombie|1|1|Bestow {3}{B}$Whenever Spiteful Returned or enchanted creature attacks, defending player loses 2 life.$Enchanted creature gets +1/+1.| -Warchanter of Mogis|Born of the Gods|85|C|{3}{B}{B}|Creature � Minotaur Shaman|3|3|Inspired - Whenever Warchanter of Mogis becomes untapped, target creature you control gains intimidate until end of turn.| -Weight of the Underworld|Born of the Gods|86|C|{3}{B}|Enchantment � Aura|||Enchant creature$Enchanted creature gets -3/-2.| -Akroan Conscriptor|Born of the Gods|87|U|{4}{R}|Creature � Human Shaman|3|2|Heroic � Whenever you cast a spell that targets Akroan Conscriptor, gain control of another target creature until end of turn. Untap that creature. It gains haste until end of turn.| -Archetype of Aggression|Born of the Gods|88|U|{1}{R}{R}|Enchantment Creature � Human Warrior|3|2|Creatures you control have trample.$Creatures your opponents control lose trample and can't have or gain trample.| +Servant of Tymaret|Born of the Gods|82|C|{2}{B}|Creature Zombie|1|3|Inspired - Whenever Servant of Tymaret becomes untapped, each opponent loses 1 life. You gain life equal to the life lost this way.${2}{B}: Regenerate Servant of Tymaret.| +Shrike Harpy|Born of the Gods|83|U|{3}{B}{B}|Creature Harpy|2|2|Flying$Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Shrike Harpy enters the battlefield, if tribute wasn't paid, target opponent sacrifices a creature.| +Spiteful Returned|Born of the Gods|84|U|{1}{B}|Enchantment Creature Zombie|1|1|Bestow {3}{B}$Whenever Spiteful Returned or enchanted creature attacks, defending player loses 2 life.$Enchanted creature gets +1/+1.| +Warchanter of Mogis|Born of the Gods|85|C|{3}{B}{B}|Creature Minotaur Shaman|3|3|Inspired - Whenever Warchanter of Mogis becomes untapped, target creature you control gains intimidate until end of turn.| +Weight of the Underworld|Born of the Gods|86|C|{3}{B}|Enchantment Aura|||Enchant creature$Enchanted creature gets -3/-2.| +Akroan Conscriptor|Born of the Gods|87|U|{4}{R}|Creature Human Shaman|3|2|Heroic Whenever you cast a spell that targets Akroan Conscriptor, gain control of another target creature until end of turn. Untap that creature. It gains haste until end of turn.| +Archetype of Aggression|Born of the Gods|88|U|{1}{R}{R}|Enchantment Creature Human Warrior|3|2|Creatures you control have trample.$Creatures your opponents control lose trample and can't have or gain trample.| Bolt of Keranos|Born of the Gods|89|C|{1}{R}{R}|Sorcery|||Bolt of Keranos deals 3 damage to target creature and/or player. Scry 1.| -Cyclops of One-Eyed Pass|Born of the Gods|90|C|{2}{R}{R}|Creature � Cyclops|5|2|| -Epiphany Storm|Born of the Gods|91|C|{R}|Enchantment � Aura|||Enchant creature$Enchanted creature has "{R}, {T}, Discard a card: Draw a card."| -Everflame Eidolon|Born of the Gods|92|U|{1}{R}|Enchantment Creature � Spirit|1|1|Bestow {2}{R}${R}: Everflame Eidolon gets +1/+0 until end of turn. If it's an Aura, enchanted creature gets +1/+0 until end of turn instead.$Enchanted creature gets +1/+1.| +Cyclops of One-Eyed Pass|Born of the Gods|90|C|{2}{R}{R}|Creature Cyclops|5|2|| +Epiphany Storm|Born of the Gods|91|C|{R}|Enchantment Aura|||Enchant creature$Enchanted creature has "{R}, {T}, Discard a card: Draw a card."| +Everflame Eidolon|Born of the Gods|92|U|{1}{R}|Enchantment Creature Spirit|1|1|Bestow {2}{R}${R}: Everflame Eidolon gets +1/+0 until end of turn. If it's an Aura, enchanted creature gets +1/+0 until end of turn instead.$Enchanted creature gets +1/+1.| Fall of the Hammer|Born of the Gods|93|C|{1}{R}|Instant|||Target creature you control deals damage equal to its power to another target creature.| Fated Conflagration|Born of the Gods|94|R|{1}{R}{R}{R}|Instant|||Fated Conflagration deals 5 damage to target creature or planewalker. If it's your turn, scry 2.| -Fearsome Temper|Born of the Gods|95|C|{2}{R}|Enchantment � Aura|||Enchant creature$Enchanted creature gets +2/+2 and has "{2}{R}: Target creature can't block this creature this turn."| -Felhide Spiritbinder|Born of the Gods|96|R|{3}{R}|Creature � Minotaur Shaman|3|4|Inspired - Whenever Felhide Spiritbinder becomes untapped, you may pay {1}{R}. If you do, put a token onto the battlefield that's a copy of another target creature except it's an enchantment in addition to its other types. It gains haste. Exile it at the beginning of the next end step.| -Flame-Wreathed Phoenix|Born of the Gods|97|M|{2}{R}{R}|Creature � Phoenix|3|3|Flying$Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Flame-Wreathed Phoenix enters the battlefield, if tribute wasn't paid, it gains haste and "When this creature dies, return it to its owner's hand."| -Forgestoker Dragon|Born of the Gods|98|R|{4}{R}{R}|Creature � Dragon|5|4|Flying${1}{R}: Forgestoker Dragon deals 1 damage to target creature. That creature can't block this combat. Activate this ability only if Forgestoker Dragon is attacking.| -Impetuous Sunchaser|Born of the Gods|99|C|{1}{R}|Creature � Human Soldier|1|1|Flying, haste$Impetuous Sunchaser attacks each turn if able.| -Kragma Butcher|Born of the Gods|100|C|{2}{R}|Creature � Minotaur Warrior|2|3|Inspired - Whenever Kragma Butcher becomes untapped, it gets +2/+0 until end of turn.| +Fearsome Temper|Born of the Gods|95|C|{2}{R}|Enchantment Aura|||Enchant creature$Enchanted creature gets +2/+2 and has "{2}{R}: Target creature can't block this creature this turn."| +Felhide Spiritbinder|Born of the Gods|96|R|{3}{R}|Creature Minotaur Shaman|3|4|Inspired - Whenever Felhide Spiritbinder becomes untapped, you may pay {1}{R}. If you do, put a token onto the battlefield that's a copy of another target creature except it's an enchantment in addition to its other types. It gains haste. Exile it at the beginning of the next end step.| +Flame-Wreathed Phoenix|Born of the Gods|97|M|{2}{R}{R}|Creature Phoenix|3|3|Flying$Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Flame-Wreathed Phoenix enters the battlefield, if tribute wasn't paid, it gains haste and "When this creature dies, return it to its owner's hand."| +Forgestoker Dragon|Born of the Gods|98|R|{4}{R}{R}|Creature Dragon|5|4|Flying${1}{R}: Forgestoker Dragon deals 1 damage to target creature. That creature can't block this combat. Activate this ability only if Forgestoker Dragon is attacking.| +Impetuous Sunchaser|Born of the Gods|99|C|{1}{R}|Creature Human Soldier|1|1|Flying, haste$Impetuous Sunchaser attacks each turn if able.| +Kragma Butcher|Born of the Gods|100|C|{2}{R}|Creature Minotaur Warrior|2|3|Inspired - Whenever Kragma Butcher becomes untapped, it gets +2/+0 until end of turn.| Lightning Volley|Born of the Gods|101|U|{3}{R}|Instant|||Until end of turn, creatures you control gain "{T}: This creature deals 1 damage to target creature or player."| -Nyxborn Rollicker|Born of the Gods|102|C|{R}|Enchantment Creature � Satyr|1|1|Bestow {1}{R}$Enchanted creature gets +1/+1.| -Oracle of Bones|Born of the Gods|103|R|{2}{R}{R}|Creature � Minotaur Shaman|3|1|Haste$Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Oracle of Bones enters the battlefield, if tribute wasn't paid, you may cast an instant or sorcery card from your hand without paying its mana cost.| -Pharagax Giant|Born of the Gods|104|C|{4}{R}|Creature � Giant|3|3|Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Pharagax Giant enters the battlefield, if tribute wasn't paid, Pharagax Giant deals 5 damage to each opponent.| +Nyxborn Rollicker|Born of the Gods|102|C|{R}|Enchantment Creature Satyr|1|1|Bestow {1}{R}$Enchanted creature gets +1/+1.| +Oracle of Bones|Born of the Gods|103|R|{2}{R}{R}|Creature Minotaur Shaman|3|1|Haste$Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Oracle of Bones enters the battlefield, if tribute wasn't paid, you may cast an instant or sorcery card from your hand without paying its mana cost.| +Pharagax Giant|Born of the Gods|104|C|{4}{R}|Creature Giant|3|3|Tribute 2 (As this creature enters the battlefield, an opponent of your choice may place two +1/+1 counters on it.)$When Pharagax Giant enters the battlefield, if tribute wasn't paid, Pharagax Giant deals 5 damage to each opponent.| Pinnacle of Rage|Born of the Gods|105|U|{4}{R}{R}|Sorcery|||Pinnacle of Rage deals 3 damage to each of two target creatures and/or players.| -Reckless Reveler|Born of the Gods|106|C|{1}{R}|Creature � Satyr|2|1|{R}, Sacrifice Reckless Reveler: Destroy target artifact.| +Reckless Reveler|Born of the Gods|106|C|{1}{R}|Creature Satyr|2|1|{R}, Sacrifice Reckless Reveler: Destroy target artifact.| Rise to the Challenge|Born of the Gods|107|C|{1}{R}|Instant|||Target creature gets +2/+0 and gains first strike until end of turn.| -Satyr Firedancer|Born of the Gods|108|R|{1}{R}|Enchantment Creature � Satyr|1|1|Whenever an instant or sorcery spell you control deals damage to an opponent, Satyr Firedancer deals that much damage to target creature that player controls.| -Satyr Nyx-Smith|Born of the Gods|109|U|{2}{R}|Creature � Satyr Shaman|2|1|Haste$Inspired - Whenever Satyr Nyx-Smith becomes untapped, you may pay {2}{R}. If you do, put a 3/1 red Elemental enchantment creature token with haste onto the battlefield.| +Satyr Firedancer|Born of the Gods|108|R|{1}{R}|Enchantment Creature Satyr|1|1|Whenever an instant or sorcery spell you control deals damage to an opponent, Satyr Firedancer deals that much damage to target creature that player controls.| +Satyr Nyx-Smith|Born of the Gods|109|U|{2}{R}|Creature Satyr Shaman|2|1|Haste$Inspired - Whenever Satyr Nyx-Smith becomes untapped, you may pay {2}{R}. If you do, put a 3/1 red Elemental enchantment creature token with haste onto the battlefield.| Scouring Sands|Born of the Gods|110|C|{1}{R}|Sorcery|||Scouring Sands deals 1 damage to each creature your opponents control. Scry 1.| Searing Blood|Born of the Gods|111|U|{R}{R}|Instant|||Searing Blood deals 2 damage to target creature. When that creature dies this turn, Searing Blood deals 3 damage to that creature's controller.| -Stormcaller of Keranos|Born of the Gods|112|U|{2}{R}|Creature � Human Shaman|2|2|Haste${1}{U}: Scry 1.| -Thunder Brute|Born of the Gods|113|U|{4}{R}{R}|Creature � Cyclops|5|5|Trample$Tribute 3 (As this creature enters the battlefield, an opponent of your choice may place three +1/+1 counters on it.)$When Thunder Brute enters the battlefield, if tribute wasn't paid, it gains haste until end of turn.| -Thunderous Might|Born of the Gods|114|U|{1}{R}|Enchantment � Aura|||Enchant creature$Whenever enchanted creature attacks, it gets +X/+0 until end of turn, where X is your devotion to red.| +Stormcaller of Keranos|Born of the Gods|112|U|{2}{R}|Creature Human Shaman|2|2|Haste${1}{U}: Scry 1.| +Thunder Brute|Born of the Gods|113|U|{4}{R}{R}|Creature Cyclops|5|5|Trample$Tribute 3 (As this creature enters the battlefield, an opponent of your choice may place three +1/+1 counters on it.)$When Thunder Brute enters the battlefield, if tribute wasn't paid, it gains haste until end of turn.| +Thunderous Might|Born of the Gods|114|U|{1}{R}|Enchantment Aura|||Enchant creature$Whenever enchanted creature attacks, it gets +X/+0 until end of turn, where X is your devotion to red.| Whims of the Fates|Born of the Gods|115|R|{5}{R}|Sorcery|||Starting with you, each player separates all permanents he or she controls into three piles. Then each player chooses one of his or her piles at random and sacrifices those permanents. (Piles can be empty.)| -Archetype of Endurance|Born of the Gods|116|U|{6}{G}{G}|Enchantment Creature � Boar|6|5|Creatures you control have hexproof.$Creatures your opponents control lose hexproof and can't have or gain hexproof.| +Archetype of Endurance|Born of the Gods|116|U|{6}{G}{G}|Enchantment Creature Boar|6|5|Creatures you control have hexproof.$Creatures your opponents control lose hexproof and can't have or gain hexproof.| Aspect of Hydra|Born of the Gods|117|C|{G}|Instant|||Target creature gets +X/+X until end of turn, where X is your devotion to green.| -Charging Badger|Born of the Gods|118|C|{G}|Creature � Badger|1|1|Trample| -Courser of Kruphix|Born of the Gods|119|R|{1}{G}{G}|Enchantment Creature � Centaur|2|4|Play with the top card of your library revealed.$You may play the top card of your library if it's a land card.$Whenever a land enters the battlefield under your control, you gain 1 life.| +Charging Badger|Born of the Gods|118|C|{G}|Creature Badger|1|1|Trample| +Courser of Kruphix|Born of the Gods|119|R|{1}{G}{G}|Enchantment Creature Centaur|2|4|Play with the top card of your library revealed.$You may play the top card of your library if it's a land card.$Whenever a land enters the battlefield under your control, you gain 1 life.| Culling Mark|Born of the Gods|120|C|{2}{G}|Sorcery|||Target creature blocks this turn if able.| Fated Intervention|Born of the Gods|121|R|{2}{G}{G}{G}|Instant|||Put two 3/3 green Centaur enchantment creature tokens onto the battlefield. If it's your turn, scry 2.| -Graverobber Spider|Born of the Gods|122|U|{3}{G}|Creature � Spider|2|4|Reach${3}{B}: Graverobber Spider gets +X/+X until end of turn, where X is the number of creature cards in your graveyard. Activate this ability only once each turn.| -Hero of Leina Tower|Born of the Gods|123|R|{G}|Creature � Human Warrior|1|1|Heroic � Whenever you cast a spell that targets Hero of Leina Tower, you may pay {X}. If you do, put X +1/+1 counters on Hero of Leina Tower.| +Graverobber Spider|Born of the Gods|122|U|{3}{G}|Creature Spider|2|4|Reach${3}{B}: Graverobber Spider gets +X/+X until end of turn, where X is the number of creature cards in your graveyard. Activate this ability only once each turn.| +Hero of Leina Tower|Born of the Gods|123|R|{G}|Creature Human Warrior|1|1|Heroic Whenever you cast a spell that targets Hero of Leina Tower, you may pay {X}. If you do, put X +1/+1 counters on Hero of Leina Tower.| Hunter's Prowess|Born of the Gods|124|R|{4}{G}|Sorcery|||Until end of turn, target creature gets +3/+3 and gains trample and "Whenever this creature deals combat damage to a player, draw that many cards."| -Karametra's Favor|Born of the Gods|125|C|{1}{G}|Enchantment � Aura|||Enchant creature$When Karametra's Favor enters the battlefield, draw a card.$Enchanted creature has "{T}: Add one mana of any color to your mana pool."| +Karametra's Favor|Born of the Gods|125|C|{1}{G}|Enchantment Aura|||Enchant creature$When Karametra's Favor enters the battlefield, draw a card.$Enchanted creature has "{T}: Add one mana of any color to your mana pool."| Mischief and Mayhem|Born of the Gods|126|U|{4}{G}|Sorcery|||Up to two target creatures each get +4/+4 until end of turn.| Mortal's Resolve|Born of the Gods|127|C|{1}{G}|Instant|||Target creature gets +1/+1 and gains indestructible until end of turn.| -Nessian Demolok|Born of the Gods|128|U|{3}{G}{G}|Creature � Beast|3|3|Tribute 3 (As this creature enters the battlefield, an opponent of your choice may place three +1/+1 counters on it.)$When Nessian Demolok enters the battlefield, if tribute wasn't paid, destroy target noncreature permanent.| -Nessian Wilds Ravager|Born of the Gods|129|R|{4}{G}{G}|Creature � Hydra|6|6|Tribute 6 (As this creature enters the battlefield, an opponent of your choice may place six +1/+1 counters on it.)$When Nessian Wilds Ravager enters the battlefield, if tribute wasn't paid, you may have Nessian Wilds Ravager fight another target creature.| -Noble Quarry|Born of the Gods|130|U|{2}{G}|Enchantment Creature � Unicorn|1|1|Bestow {5}{G}$All creatures able to block Noble Quarry or enchanted creature do so.$Enchanted creature gets +1/+1.| -Nyxborn Wolf|Born of the Gods|131|C|{2}{G}|Enchantment Creature � Wolf|3|1|Bestow {4}{G}$Enchanted creature gets +3/+1.| +Nessian Demolok|Born of the Gods|128|U|{3}{G}{G}|Creature Beast|3|3|Tribute 3 (As this creature enters the battlefield, an opponent of your choice may place three +1/+1 counters on it.)$When Nessian Demolok enters the battlefield, if tribute wasn't paid, destroy target noncreature permanent.| +Nessian Wilds Ravager|Born of the Gods|129|R|{4}{G}{G}|Creature Hydra|6|6|Tribute 6 (As this creature enters the battlefield, an opponent of your choice may place six +1/+1 counters on it.)$When Nessian Wilds Ravager enters the battlefield, if tribute wasn't paid, you may have Nessian Wilds Ravager fight another target creature.| +Noble Quarry|Born of the Gods|130|U|{2}{G}|Enchantment Creature Unicorn|1|1|Bestow {5}{G}$All creatures able to block Noble Quarry or enchanted creature do so.$Enchanted creature gets +1/+1.| +Nyxborn Wolf|Born of the Gods|131|C|{2}{G}|Enchantment Creature Wolf|3|1|Bestow {4}{G}$Enchanted creature gets +3/+1.| Peregrination|Born of the Gods|132|U|{3}{G}|Sorcery|||Seach your library for up to two basic land cards, reveal those cards, and put one onto the battlefield tapped and the other into your hand. Shuffle your library, then scry 1.| -Pheres-Band Raiders|Born of the Gods|133|U|{5}{G}|Creature � Centaur Warrior|5|5|Inspired - Whenever Pheres-Band Raiders becomes untapped, you may pay {2}{G}. If you do, put a 3/3 green Centaur enchantment creature token onto the battlefield.| -Pheres-Band Tromper|Born of the Gods|134|C|{3}{G}|Creature � Centaur Warrior|3|3|Inspired - Whenever Pheres-Band Tromper becomes untapped, put a +1/+1 counter on it.| -Raised by Wolves|Born of the Gods|135|U|{3}{G}{G}|Enchantment � Aura|||Enchant creature$When Raised by Wolves enters the battlefield, put two 2/2 green Wolf creature tokens onto the battlefield.$Enchanted creature gets +1/+1 for each Wolf you control.| -Satyr Wayfinder|Born of the Gods|136|C|{1}{G}|Creature � Satyr|1|1|When Satyr Wayfinder enters the battlefield, reveal the top four cards of your library. You may put a land card from among them into your hand. Put the rest into your graveyard.| -Scourge of Skola Vale|Born of the Gods|137|R|{2}{G}|Creature � Hydra|0|0|Trample$Scourge of Skola Vale enters the battlefield with two +1/+1 counters on it.${T}, Sacrifice another creature: Put a number of +1/+1 counters on Scourge of Skola Vale equal to the sacrificed creature's toughness.| -Setessan Oathsworn|Born of the Gods|138|C|{1}{G}{G}|Creature � Satyr Warrior|1|1|Heroic � Whenever you cast a spell that targets Setessan Oathsworn, put two +1/+1 counters on Setessan Oathsworn.| -Setessan Starbreaker|Born of the Gods|139|C|{3}{G}|Creature � Human Warrior|2|1|When Setessa Starbreaker enters the battlefield, you may destroy target Aura.| +Pheres-Band Raiders|Born of the Gods|133|U|{5}{G}|Creature Centaur Warrior|5|5|Inspired - Whenever Pheres-Band Raiders becomes untapped, you may pay {2}{G}. If you do, put a 3/3 green Centaur enchantment creature token onto the battlefield.| +Pheres-Band Tromper|Born of the Gods|134|C|{3}{G}|Creature Centaur Warrior|3|3|Inspired - Whenever Pheres-Band Tromper becomes untapped, put a +1/+1 counter on it.| +Raised by Wolves|Born of the Gods|135|U|{3}{G}{G}|Enchantment Aura|||Enchant creature$When Raised by Wolves enters the battlefield, put two 2/2 green Wolf creature tokens onto the battlefield.$Enchanted creature gets +1/+1 for each Wolf you control.| +Satyr Wayfinder|Born of the Gods|136|C|{1}{G}|Creature Satyr|1|1|When Satyr Wayfinder enters the battlefield, reveal the top four cards of your library. You may put a land card from among them into your hand. Put the rest into your graveyard.| +Scourge of Skola Vale|Born of the Gods|137|R|{2}{G}|Creature Hydra|0|0|Trample$Scourge of Skola Vale enters the battlefield with two +1/+1 counters on it.${T}, Sacrifice another creature: Put a number of +1/+1 counters on Scourge of Skola Vale equal to the sacrificed creature's toughness.| +Setessan Oathsworn|Born of the Gods|138|C|{1}{G}{G}|Creature Satyr Warrior|1|1|Heroic Whenever you cast a spell that targets Setessan Oathsworn, put two +1/+1 counters on Setessan Oathsworn.| +Setessan Starbreaker|Born of the Gods|139|C|{3}{G}|Creature Human Warrior|2|1|When Setessa Starbreaker enters the battlefield, you may destroy target Aura.| Skyreaping|Born of the Gods|140|U|{1}{G}|Sorcery|||Skyreaping deals damage to each creature with flying equal to your devotion to green.| -Snake of the Golden Grove|Born of the Gods|141|C|{4}{G}|Creature � Snake|4|4|Tribute 3 (As this creature enters the battlefield, an opponent of your choice may place three +1/+1 counters on it.)$When Snake of the Golden Grove enters the battlefield, if tribute wasn't paid, you gain 4 life.| -Swordwise Centaur|Born of the Gods|142|C|{G}{G}|Creature � Centaur Warrior|3|2|| +Snake of the Golden Grove|Born of the Gods|141|C|{4}{G}|Creature Snake|4|4|Tribute 3 (As this creature enters the battlefield, an opponent of your choice may place three +1/+1 counters on it.)$When Snake of the Golden Grove enters the battlefield, if tribute wasn't paid, you gain 4 life.| +Swordwise Centaur|Born of the Gods|142|C|{G}{G}|Creature Centaur Warrior|3|2|| Unravel the AEther|Born of the Gods|143|U|{1}{G}|Instant|||Choose target artifact or enchantment. Its owner shuffles it into his or her library.| -Chromanticore|Born of the Gods|144|M|{W}{U}{B}{R}{G}|Enchantment Creature � Manticore|4|4|Bestow {2}{W}{U}{B}{R}{G}$Flying, first strike, vigilance, trample, lifelink$Enchanted creature gets +4/+4 and has flying, first strike, vigilance, trample and lifelink.| -Ephara, God of the Polis|Born of the Gods|145|M|{2}{W}{U}|Legendary Enchantment Creature � God|6|5|Indestructible$As long as your devotion to white and blue is less than seven, Ephara isn't a creature.$At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.| -Ephara's Enlightenment|Born of the Gods|146|U|{1}{W}{U}|Enchantment � Aura|||Enchant creature$When Ephara's Enlightenment enters the battlefield, put a +1/+1 counter on enchanted creature.$Enchanted creature has flying.$Whenever a creature enters the battlefield under your control, you may return Ephara's Enlightenment to its owner's hand.| -Fanatic of Xenagos|Born of the Gods|147|U|{1}{R}{G}|Creature � Centaur Warrior|3|3|Trample$Tribute 1 (As this creature enters the battlefield, an opponent of your choice may place a +1/+1 counter on it.)$When Fanatic of Xenagos enters the battlefield, if tribute wasn't paid, it gets +1/+1 and gains haste until end of turn.| -Karametra, God of Harvests|Born of the Gods|148|M|{3}{G}{W}|Legendary Enchantment Creature � God|6|7|Indestructible$As long as your devotion to green and white is less than seven, Karametra isn't a creature.$Whenever you cast a creature spell, you may search your library for a Forest or Plains card, put it onto the battlefield tapped, then shuffle your library.| -Kiora, the Crashing Wave|Born of the Gods|149|M|{2}{G}{U}|Planeswalker � Kiora|2|+1: Until your next turn, prevent all damage that would be dealt to and dealt by target permanent an opponent controls.$-1: Draw a card. You may play an additional land this turn.$-5: You get an emblem with "At the beginning of your end step, put a 9/9 blue Kraken creature token onto the battlefield."| -Kiora's Follower|Born of the Gods|150|U|{G}{U}|Creature � Merfolk|2|2|{T}: Untap another target permanent.| -Mogis, God of Slaughter|Born of the Gods|151|M|{2}{B}{R}|Legendary Enchantment Creature � God|7|5|Indestructible$As long as your devotion to black and red is less than seven, Mogis isn't a creature.$At the beginning of each opponent's upkeep, Mogis deals 2 damage to that player unless he or she sacrifices a creature.| -Phenax, God of Deception|Born of the Gods|152|M|{3}{U}{B}|Legendary Enchantment Creature � God|4|7|Indestructible$As long as your devotion to blue and black is less than seven, Phenax isn't a creature.$Creatures you control have "{T}: Target player puts the top X cards of his or her library into his or her graveyard, where X is this creature's toughness."| -Ragemonger|Born of the Gods|153|U|{1}{B}{R}|Creature � Minotaur Shaman|2|3|Minotaur spells you cast cost {B}{R} less to cast. This effect reduces only the amount of colored mana you pay. (For example, if you cast a Minotaur spell with mana cost {2}{R}, it costs {2} to cast.)| +Chromanticore|Born of the Gods|144|M|{W}{U}{B}{R}{G}|Enchantment Creature Manticore|4|4|Bestow {2}{W}{U}{B}{R}{G}$Flying, first strike, vigilance, trample, lifelink$Enchanted creature gets +4/+4 and has flying, first strike, vigilance, trample and lifelink.| +Ephara, God of the Polis|Born of the Gods|145|M|{2}{W}{U}|Legendary Enchantment Creature God|6|5|Indestructible$As long as your devotion to white and blue is less than seven, Ephara isn't a creature.$At the beginning of each upkeep, if you had another creature enter the battlefield under your control last turn, draw a card.| +Ephara's Enlightenment|Born of the Gods|146|U|{1}{W}{U}|Enchantment Aura|||Enchant creature$When Ephara's Enlightenment enters the battlefield, put a +1/+1 counter on enchanted creature.$Enchanted creature has flying.$Whenever a creature enters the battlefield under your control, you may return Ephara's Enlightenment to its owner's hand.| +Fanatic of Xenagos|Born of the Gods|147|U|{1}{R}{G}|Creature Centaur Warrior|3|3|Trample$Tribute 1 (As this creature enters the battlefield, an opponent of your choice may place a +1/+1 counter on it.)$When Fanatic of Xenagos enters the battlefield, if tribute wasn't paid, it gets +1/+1 and gains haste until end of turn.| +Karametra, God of Harvests|Born of the Gods|148|M|{3}{G}{W}|Legendary Enchantment Creature God|6|7|Indestructible$As long as your devotion to green and white is less than seven, Karametra isn't a creature.$Whenever you cast a creature spell, you may search your library for a Forest or Plains card, put it onto the battlefield tapped, then shuffle your library.| +Kiora, the Crashing Wave|Born of the Gods|149|M|{2}{G}{U}|Planeswalker Kiora|2|+1: Until your next turn, prevent all damage that would be dealt to and dealt by target permanent an opponent controls.$-1: Draw a card. You may play an additional land this turn.$-5: You get an emblem with "At the beginning of your end step, put a 9/9 blue Kraken creature token onto the battlefield."| +Kiora's Follower|Born of the Gods|150|U|{G}{U}|Creature Merfolk|2|2|{T}: Untap another target permanent.| +Mogis, God of Slaughter|Born of the Gods|151|M|{2}{B}{R}|Legendary Enchantment Creature God|7|5|Indestructible$As long as your devotion to black and red is less than seven, Mogis isn't a creature.$At the beginning of each opponent's upkeep, Mogis deals 2 damage to that player unless he or she sacrifices a creature.| +Phenax, God of Deception|Born of the Gods|152|M|{3}{U}{B}|Legendary Enchantment Creature God|4|7|Indestructible$As long as your devotion to blue and black is less than seven, Phenax isn't a creature.$Creatures you control have "{T}: Target player puts the top X cards of his or her library into his or her graveyard, where X is this creature's toughness."| +Ragemonger|Born of the Gods|153|U|{1}{B}{R}|Creature Minotaur Shaman|2|3|Minotaur spells you cast cost {B}{R} less to cast. This effect reduces only the amount of colored mana you pay. (For example, if you cast a Minotaur spell with mana cost {2}{R}, it costs {2} to cast.)| Reap What Is Sown|Born of the Gods|154|U|{1}{G}{W}|Instant|||Put a +1/+1 counter on each of up to three target creatures.| -Siren of the Silent Song|Born of the Gods|155|U|{1}{U}{B}|Creature � Zombie Siren|2|1|Flying$Inspired - Whenever Siren of the Silent Song becomes untapped, each opponent discards a card, then puts the top card of his or her library into his or her graveyard.| -Xenagos, God of Revels|Born of the Gods|156|M|{3}{R}{G}|Legendary Enchantment Creature � God|6|5|Indestructible$As long as your devotion to red and green is less than seven, Xenagos isn't a creature.$At the beginning of combat on your turn, another target creature you control gains haste and gets +X/+X until end of turn, where X is that creature's power.| +Siren of the Silent Song|Born of the Gods|155|U|{1}{U}{B}|Creature Zombie Siren|2|1|Flying$Inspired - Whenever Siren of the Silent Song becomes untapped, each opponent discards a card, then puts the top card of his or her library into his or her graveyard.| +Xenagos, God of Revels|Born of the Gods|156|M|{3}{R}{G}|Legendary Enchantment Creature God|6|5|Indestructible$As long as your devotion to red and green is less than seven, Xenagos isn't a creature.$At the beginning of combat on your turn, another target creature you control gains haste and gets +X/+X until end of turn, where X is that creature's power.| Astral Cornucopia|Born of the Gods|157|R|{X}{X}{X}|Artifact|||Astral Cornucopia enters the battlefield with X charge counters on it.${T}: Choose a color. Add one mana of that color to your mana pool for each charge counter on Astral Cornucopia.| -Gorgon's Head|Born of the Gods|158|U|{1}|Artifact � Equipment|||Equipped creature has deathtouch.$Equip {2}| +Gorgon's Head|Born of the Gods|158|U|{1}|Artifact Equipment|||Equipped creature has deathtouch.$Equip {2}| Heroes' Podium|Born of the Gods|159|R|{5}|Legendary Artifact|||Each legendary creature you control gets +1/+1 for each other legendary creature you control.${X}, {T}: Look at the top X cards of your library. You may reveal a legendary creature card from among them and put it into your hand. Put the rest on the bottom of your library in a random order.| -Pillar of War|Born of the Gods|160|U|{3}|Artifact Creature � Golem|3|3|Defender$As long as Pillar of War is enchanted, it can attack as though it didn't have defender.| -Siren Song Lyre|Born of the Gods|161|U|{2}|Artifact � Equipment|||Equipped creature has "{2}, {T}: Tap target creature."$Equip {2}| +Pillar of War|Born of the Gods|160|U|{3}|Artifact Creature Golem|3|3|Defender$As long as Pillar of War is enchanted, it can attack as though it didn't have defender.| +Siren Song Lyre|Born of the Gods|161|U|{2}|Artifact Equipment|||Equipped creature has "{2}, {T}: Tap target creature."$Equip {2}| Springleaf Drum|Born of the Gods|162|U|{1}|Artifact|||{T}, Tap an untapped creature you control: Add one mana of any color to your mana pool.| Temple of Enlightenment|Born of the Gods|163|R||Land|||Temple of Enlightenment enters the battlefield tapped.$When Temple of Enlightenment enters the battlefield, scry 1.${T}: Add {W} or {U} to your mana pool.| Temple of Malice|Born of the Gods|164|R||Land|||Temple of Malice enters the battlefield tapped.$When Temple of Malice enters the battlefield, scry 1.${T}: Add {B} or {R} to your mana pool.| @@ -24164,11 +24164,11 @@ Vexing Shusher|Launch Party|2|R|{RG}{RG}|Creature - Goblin Shaman|2|2|Vexing Shu Figure of Destiny|Launch Party|3|R|{RW}|Creature - Kithkin|1|1|{RW}: Figure of Destiny becomes a Kithkin Spirit with base power and toughness 2/2.${RW}{RW}{RW}: If Figure of Destiny is a Spirit, it becomes a Kithkin Spirit Warrior with base power and toughness 4/4.${RW}{RW}{RW}{RW}{RW}{RW}: If Figure of Destiny is a Warrior, it becomes a Kithkin Spirit Warrior Avatar with base power and toughness 8/8, flying, and first strike.| Ajani Vengeant|Launch Party|4|M|{2}{W}{R}|Planeswalker - Ajani|||+1: Target permanent doesn't untap during its controller's next untap step.$-2: Ajani Vengeant deals 3 damage to target creature or player and you gain 3 life.$-7: Destroy all lands target player controls.| Obelisk of Alara|Launch Party|5|R|{6}|Artifact|||{1}{W}, {T}: You gain 5 life.${1}{U}, {T}: Draw a card, then discard a card.${1}{B}, {T}: Target creature gets -2/-2 until end of turn.${1}{R}, {T}: Obelisk of Alara deals 3 damage to target player.${1}{G}, {T}: Target creature gets +4/+4 until end of turn.| -Knight of New Alara|Launch Party|6|R|{2}{W}{G}|Creature � Human Knight|2|2|Each other multicolored creature you control gets +1/+1 for each of its colors.| -Ant Queen|Launch Party|7|R|{3}{G}{G}|Creature � Insect|5|5|{1}{G}: Put a 1/1 green Insect creature token onto the battlefield.| +Knight of New Alara|Launch Party|6|R|{2}{W}{G}|Creature Human Knight|2|2|Each other multicolored creature you control gets +1/+1 for each of its colors.| +Ant Queen|Launch Party|7|R|{3}{G}{G}|Creature Insect|5|5|{1}{G}: Put a 1/1 green Insect creature token onto the battlefield.| Valakut, the Molten Pinnacle|Launch Party|8|R||Land|||Valakut, the Molten Pinnacle enters the battlefield tapped.$Whenever a Mountain enters the battlefield under your control, if you control at least five other Mountains, you may have Valakut, the Molten Pinnacle deal 3 damage to target creature or player.${T}: Add {R} to your mana pool.| -Joraga Warcaller|Launch Party|9|R|{G}|Creature � Elf Warrior|1|1|Multikicker {1}{G} (You may pay an additional {1}{G} any number of times as you cast this spell.)$Joraga Warcaller enters the battlefield with a +1/+1 counter on it for each time it was kicked.$Other Elf creatures you control get +1/+1 for each +1/+1 counter on Joraga Warcaller.| -Lord of Shatterskull Pass|Launch Party|10|R|{3}{R}|Creature � Minotaur Shaman|3|3|Level up {1}{R} ({1}{R}: Put a level counter on this. Level up only as a sorcery.)$LEVEL 1-5$6/6$$LEVEL 6+$6/6$Whenever Lord of Shatterskull Pass attacks, it deals 6 damage to each creature defending player controls.| +Joraga Warcaller|Launch Party|9|R|{G}|Creature Elf Warrior|1|1|Multikicker {1}{G} (You may pay an additional {1}{G} any number of times as you cast this spell.)$Joraga Warcaller enters the battlefield with a +1/+1 counter on it for each time it was kicked.$Other Elf creatures you control get +1/+1 for each +1/+1 counter on Joraga Warcaller.| +Lord of Shatterskull Pass|Launch Party|10|R|{3}{R}|Creature Minotaur Shaman|3|3|Level up {1}{R} ({1}{R}: Put a level counter on this. Level up only as a sorcery.)$LEVEL 1-5$6/6$$LEVEL 6+$6/6$Whenever Lord of Shatterskull Pass attacks, it deals 6 damage to each creature defending player controls.| Ancient Hellkite|Launch Party|11|R|{4}{R}{R}{R}|Creature - Dragon|6|6|Flying${R}: Ancient Hellkite deals 1 damage to target creature defending player controls. Activate this ability only if Ancient Hellkite is attacking.| Steel Hellkite|Launch Party|12|R|{6}|Artifact Creature - Dragon|5|5|Flying${2}: Steel Hellkite gets +1/+0 until end of turn.${X}: Destroy each nonland permanent with converted mana cost X whose controller was dealt combat damage by Steel Hellkite this turn. Activate this ability only once each turn.| Thopter Assembly|Launch Party|13|R|{6}|Artifact Creature - Thopter|5|5|Flying$At the beginning of your upkeep, if you control no Thopters other than Thopter Assembly, return Thopter Assembly to its owner's hand and put five 1/1 colorless Thopter artifact creature tokens with flying onto the battlefield.| @@ -24181,14 +24181,14 @@ Tovolar's Magehunter|Launch Party|17b|R||Creature - Werewolf|5|5|Whenever an opp Restoration Angel|Launch Party|18|R|{3}{W}|Creature - Angel|3|4|Flash$Flying$When Restoration Angel enters the battlefield, you may exile target non-Angel creature you control, then return that card to the battlefield under your control.| Staff of Nin|Launch Party|19|R|{6}|{6}|Artifact|||At the beginning of your upkeep, draw a card.${T}: Staff of Nin deals 1 damage to target creature or player.| Deadbridge Goliath|Launch Party|20|R|{2}{G}{G}|Creature - Insect|5|5|Scavenge {4}{G}{G} ({4}{G}{G}, Exile this card from your graveyard: Put a number of +1/+1 counters equal to this card's power on target creature. Scavenge only as a sorcery.)| -Skarrg Goliath|Launch Party|21|R|{6}{G}{G}|Creature - Beast|9|9|Trample$Bloodrush � {5}{G}{G}, Discard Skarrg Goliath: Target attacking creature gets +9/+9 and gains trample until end of turn.| +Skarrg Goliath|Launch Party|21|R|{6}{G}{G}|Creature - Beast|9|9|Trample$Bloodrush {5}{G}{G}, Discard Skarrg Goliath: Target attacking creature gets +9/+9 and gains trample until end of turn.| Breaking|Launch Party|22a|R|{U}{B}|Sorcery|||Target player puts the top eight cards of his or her library into his or her graveyard.$Fuse (You may cast one or both halves of this card from your hand.)| Entering|Launch Party|22b|R|{4}{B}{R}|Sorcery|||Put a creature card from a graveyard onto the battlefield under your control. It gains haste until end of turn.$Fuse (You may cast one or both halves of this card from your hand.)| Colossal Whale|Launch Party|23|R|{5}{U}{U}|Creature - Whale|5|5|Islandwalk (This creature can't be blocked as long as defending player controls an Island.)$Whenever Colossal Whale attacks, you may exile target creature defending player controls until Colossal Whale leaves the battlefield. (That creature returns under its owner's control.)| Bident of Thassa|Launch Party|24|R|{2}{U}{U}|Legendary Enchantment Artifact|||Whenever a creature you control deals combat damage to a player, you may draw a card.${1}{U}, {T}: Creatures your opponents control attack this turn if able.| -Tromokratis|Launch Party|25|R|{5}{U}{U}|Legendary Creature � Kraken|8|8|Tromokratis has hexproof unless it's attacking or blocking.$Tromokratis can't be blocked unless all creatures defending player controls block it. (If any creature that player controls doesn't block this creature, it can't be blocked.)| +Tromokratis|Launch Party|25|R|{5}{U}{U}|Legendary Creature Kraken|8|8|Tromokratis has hexproof unless it's attacking or blocking.$Tromokratis can't be blocked unless all creatures defending player controls block it. (If any creature that player controls doesn't block this creature, it can't be blocked.)| Dictate of the Twin Gods|Launch Party|26|R|{3}{R}{R}|Enchantment|||Flash$If a source would deal damage to a permanent or player, it deals double that damage to that permanent or player instead.| -Dragon Throne of Tarkir|Launch Party|27|R|{4}|Legendary Artifact � Equipment|||Equipped creature has defender and "{2}, {T}: Other creatures you control gain trample and get +X/+X until end of turn, where X is this creature's power."$Equip {3}| +Dragon Throne of Tarkir|Launch Party|27|R|{4}|Legendary Artifact Equipment|||Equipped creature has defender and "{2}, {T}: Other creatures you control gain trample and get +X/+X until end of turn, where X is this creature's power."$Equip {3}| In Garruk's Wake|Launch Party|28|R|{7}{B}{B}|Sorcery|||Destroy all creatures you don't control and all planeswalkers you don't control.| Sandsteppe Mastodon|Launch Party|29|R|{5}{G}{G}|Creature - Elephant|5|5|Reach$When Sandsteppe Mastodon enters the battlefield, bolster 5. (Choose a creature with the least toughness among creatures you control and put five +1/+1 counters on it.)| Deathbringer Regent|Launch Party|30|R|{5}{B}{B}|Creature - Dragon|5|6|Flying$When Deathbringer Regent enters the battlefield, if you cast it from your hand and there are five or more other creatures on the battlefield, destroy all other creatures.| @@ -24870,7 +24870,7 @@ Woolly Loxodon|Khans of Tarkir|158|C|{5}{G}{G}|Creature - Elephant Warrior|6|7|M Abomination of Gudul|Khans of Tarkir|159|C|{3}{B}{G}{U}|Creature - Horror|3|4|Flying$Whenever Abomination of Gudul deals combat damage to a player, you may draw a card. If you do, discard a card.$Morph {2}{B}{G}{U} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Mardu Hateblade|Khans of Tarkir|16|C|{W}|Creature - Human Warrior|1|1|{B}: Mardu Hateblade gains deathtouch until end of turn. (Any amount of damage it deals to a creature is enough to destroy it.)| Abzan Ascendancy|Khans of Tarkir|160|R|{W}{B}{G}|Enchantment|||When Abzan Ascendancy enters the battlefield, put a +1/+1 counter on each creature you control.$Whenever a nontoken creature you control dies, put a 1/1 white Spirit creature token with flying onto the battlefield.| -Abzan Charm|Khans of Tarkir|161|U|{W}{B}{G}|Instant|||Choose one -$� Exile target creature with power 3 or greater.$� You draw two cards and you lose 2 life.$� Distribute two +1/+1 counters among one or two target creatures.| +Abzan Charm|Khans of Tarkir|161|U|{W}{B}{G}|Instant|||Choose one -$ Exile target creature with power 3 or greater.$ You draw two cards and you lose 2 life.$ Distribute two +1/+1 counters among one or two target creatures.| Abzan Guide|Khans of Tarkir|162|C|{3}{W}{B}{G}|Creature - Human Warrior|4|4|Lifelink (Damage dealt by this creature also causes you to gain that much life.)$Morph {2}{W}{B}{G} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Anafenza, the Foremost|Khans of Tarkir|163|M|{W}{B}{G}|Legendary Creature - Human Soldier|4|4|Whenever Anafenza, the Foremost attacks, put a +1/+1 counter on another target tapped creature you control.$If a creature card would be put into an opponent's graveyard from anywhere, exile it instead.| Ankle Shanker|Khans of Tarkir|164|R|{2}{R}{W}{B}|Creature - Goblin Berserker|2|2|Haste$Whenever Ankle Shanker attacks, creatures you control gain first strike and deathtouch until end of turn.| @@ -24892,12 +24892,12 @@ Icefeather Aven|Khans of Tarkir|178|U|{G}{U}|Creature - Bird Shaman|2|2|Flying$M Ivorytusk Fortress|Khans of Tarkir|179|R|{2}{W}{B}{G}|Creature - Elephant|5|7|Untap each creature you control with a +1/+1 counter on it during each other player's untap step.| Master of Pearls|Khans of Tarkir|18|R|{1}{W}|Creature - Human Monk|2|2|Morph {3}{W}{W} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)$When Master of Pearls is turned face up, creatures you control get +2/+2 until end of turn.| Jeskai Ascendancy|Khans of Tarkir|180|R|{U}{R}{W}|Enchantment|||Whenever you cast a noncreature spell, creatures you control get +1/+1 until end of turn. Untap those creatures.$Whenever you cast a noncreature spell, you may draw a card. If you do, discard a card.| -Jeskai Charm|Khans of Tarkir|181|U|{U}{R}{W}|Instant|||Choose one -$� Put target creature on top of its owner's library.$� Jeskai Charm deals 4 damage to target opponent.$� Creatures you control get +1/+1 and gain lifelink until end of turn.| +Jeskai Charm|Khans of Tarkir|181|U|{U}{R}{W}|Instant|||Choose one -$ Put target creature on top of its owner's library.$ Jeskai Charm deals 4 damage to target opponent.$ Creatures you control get +1/+1 and gain lifelink until end of turn.| Kheru Lich Lord|Khans of Tarkir|182|R|{3}{B}{G}{U}|Creature - Zombie Wizard|4|4|At the beginning of your upkeep, you may pay {2}{B}. If you do, return a creature card at random from your graveyard to the battlefield. It gains flying, trample, and haste. Exile that card at the beginning of your next end step. If it would leave the battlefield, exile it instead of putting it anywhere else.| Kin-Tree Invocation|Khans of Tarkir|183|U|{B}{G}|Sorcery|||Put an X/X black and green Spirit Warrior creature token onto the battlefield, where X is the greatest toughness among creatures you control.| Mantis Rider|Khans of Tarkir|184|R|{U}{R}{W}|Creature - Human Monk|3|3|Flying, vigilance, haste| Mardu Ascendancy|Khans of Tarkir|185|R|{R}{W}{B}|Enchantment|||Whenever a nontoken creature you control attacks, put a 1/1 red Goblin creature token onto the battlefield tapped and attacking.$Sacrifice Mardu Ascendancy: Creatures you control get +0/+3 until end of turn.| -Mardu Charm|Khans of Tarkir|186|U|{R}{W}{B}|Instant|||Choose one -$� Mardu Charm deals 4 damage to target creature.$� Put two 1/1 white Warrior creature tokens onto the battlefield. They gain first strike until end of turn.$� Target opponent reveals his or her hand. You choose a noncreature, nonland card from it. That player discards that card.| +Mardu Charm|Khans of Tarkir|186|U|{R}{W}{B}|Instant|||Choose one -$ Mardu Charm deals 4 damage to target creature.$ Put two 1/1 white Warrior creature tokens onto the battlefield. They gain first strike until end of turn.$ Target opponent reveals his or her hand. You choose a noncreature, nonland card from it. That player discards that card.| Mardu Roughrider|Khans of Tarkir|187|U|{2}{R}{W}{B}|Creature - Orc Warrior|5|4|Whenever Mardu Roughrider attacks, target creature can't block this turn.| Master the Way|Khans of Tarkir|188|U|{3}{U}{R}|Sorcery|||Draw a card. Master the Way deals damage to target creature or player equal to the number of cards in your hand.| Mindswipe|Khans of Tarkir|189|R|{X}{U}{R}|Instant|||Counter target spell unless its controller pays {X}. Mindswipe deals X damage to that spell's controller.| @@ -24918,17 +24918,17 @@ Siege Rhino|Khans of Tarkir|200|R|{1}{W}{B}{G}|Creature - Rhino|4|5|Trample$When Snowhorn Rider|Khans of Tarkir|201|C|{3}{G}{U}{R}|Creature - Human Warrior|5|5|Trample$Morph {2}{G}{U}{R} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| Sorin, Solemn Visitor|Khans of Tarkir|202|M|{2}{W}{B}|Planeswalker - Sorin|||+1: Until your next turn, creatures you control get +1/+0 and gain lifelink.$?2: Put a 2/2 black Vampire creature token with flying onto the battlefield.$?6: You get an emblem with "At the beginning of each opponent's upkeep, that player sacrifices a creature."| Sultai Ascendancy|Khans of Tarkir|203|R|{B}{G}{U}|Enchantment|||At the beginning of your upkeep, look at the top two cards of your library. Put any number of them into your graveyard and the rest back on top of your library in any order.| -Sultai Charm|Khans of Tarkir|204|U|{B}{G}{U}|Instant|||Choose one -$� Destroy target monocolored creature.$� Destroy target artifact or enchantment.$� Draw two cards, then discard a card.| +Sultai Charm|Khans of Tarkir|204|U|{B}{G}{U}|Instant|||Choose one -$ Destroy target monocolored creature.$ Destroy target artifact or enchantment.$ Draw two cards, then discard a card.| Sultai Soothsayer|Khans of Tarkir|205|U|{2}{B}{G}{U}|Creature - Naga Shaman|2|5|When Sultai Soothsayer enters the battlefield, look at the top four cards of your library. Put one of them into your hand and the rest into your graveyard.| Surrak Dragonclaw|Khans of Tarkir|206|M|{2}{G}{U}{R}|Legendary Creature - Human Warrior|6|6|Flash$Surrak Dragonclaw can't be countered.$Creature spells you control can't be countered.$Other creatures you control have trample.| Temur Ascendancy|Khans of Tarkir|207|R|{G}{U}{R}|Enchantment|||Creatures you control have haste.$Whenever a creature with power 4 or greater enters the battlefield under your control, you may draw a card.| -Temur Charm|Khans of Tarkir|208|U|{G}{U}{R}|Instant|||Choose one -$� Target creature you control gets +1/+1 until end of turn. It fights target creature you don't control.$� Counter target spell unless its controller pays {3}.$� Creatures with power 3 or less can't block this turn.| +Temur Charm|Khans of Tarkir|208|U|{G}{U}{R}|Instant|||Choose one -$ Target creature you control gets +1/+1 until end of turn. It fights target creature you don't control.$ Counter target spell unless its controller pays {3}.$ Creatures with power 3 or less can't block this turn.| Trap Essence|Khans of Tarkir|209|R|{G}{U}{R}|Instant|||Counter target creature spell. Put two +1/+1 counters on up to one target creature.| Salt Road Patrol|Khans of Tarkir|21|C|{3}{W}|Creature - Human Scout|2|5|Outlast {1}{W} ({1}{W}, {tap}: Put a +1/+1 counter on this creature. Outlast only as a sorcery.)| Utter End|Khans of Tarkir|210|R|{2}{W}{B}|Instant|||Exile target nonland permanent.| Villainous Wealth|Khans of Tarkir|211|R|{X}{B}{G}{U}|Sorcery|||Target opponent exiles the top X cards of his or her library. You may cast any number of nonland cards with converted mana cost X or less from among them without paying their mana costs.| Warden of the Eye|Khans of Tarkir|212|U|{2}{U}{R}{W}|Creature - Djinn Wizard|3|3|When Warden of the Eye enters the battlefield, return target noncreature, nonland card from your graveyard to your hand.| -Winterflame|Khans of Tarkir|213|U|{1}{U}{R}|Instant|||Choose one or both -$� Tap target creature.$� Winterflame deals 2 damage to target creature.| +Winterflame|Khans of Tarkir|213|U|{1}{U}{R}|Instant|||Choose one or both -$ Tap target creature.$ Winterflame deals 2 damage to target creature.| Zurgo Helmsmasher|Khans of Tarkir|214|M|{2}{R}{W}{B}|Legendary Creature - Orc Warrior|7|2|Haste$Zurgo Helmsmasher attacks each combat if able.$Zurgo Helmsmasher has indestructible as long as it's your turn.$Whenever a creature dealt damage by Zurgo Helmsmasher this turn dies, put a +1/+1 counter on Zurgo Helmsmasher.| Abzan Banner|Khans of Tarkir|215|C|{3}|Artifact|||{tap}: Add {W}, {B}, or {G} to your mana pool.${W}{B}{G}, {tap}, Sacrifice Abzan Banner: Draw a card.| Altar of the Brood|Khans of Tarkir|216|R|{1}|Artifact|||Whenever another permanent enters the battlefield under your control, each opponent puts the top card of his or her library into his or her graveyard.| @@ -25242,9 +25242,9 @@ Hungering Yeti|Fate Reforged|105|U|{4}{R}|Creature - Yeti|4|4|As long as you con Lightning Shrieker|Fate Reforged|106|C|{4}{R}|Creature - Dragon|5|5|Flying, trample, haste$At the beginning of the end step, Lightning Shrieker's owner shuffles it into his or her library.| Mardu Runemark|Fate Reforged|107|C|{2}{R}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2.$Enchanted creature has first strike as long as you control a white or black permanent.| Mardu Scout|Fate Reforged|108|C|{R}{R}|Creature - Goblin Scout|3|1|Dash {1}{R} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| -Mob Rule|Fate Reforged|109|R|{4}{R}{R}|Sorcery|||Choose one -$� Gain control of all creatures with power 4 or greater until end of turn. Untap those creatures. They gain haste until end of turn.$� Gain control of all creatures with power 3 or less until end of turn. Untap those creatures. They gain haste until end of turn.| +Mob Rule|Fate Reforged|109|R|{4}{R}{R}|Sorcery|||Choose one -$ Gain control of all creatures with power 4 or greater until end of turn. Untap those creatures. They gain haste until end of turn.$ Gain control of all creatures with power 3 or less until end of turn. Untap those creatures. They gain haste until end of turn.| Dragonscale General|Fate Reforged|11|R|{3}{W}|Creature - Human Warrior|2|3|At the beginning of your end step, bolster X, where X is the number of tapped creatures you control. (Choose a creature with the least toughness among creatures you control and put X +1/+1 counters on it.)| -Outpost Siege|Fate Reforged|110|R|{3}{R}|Enchantment|||As Outpost Siege enters the battlefield, choose Khans or Dragons.$� Khans - At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.$� Dragons - Whenever a creature you control leaves the battlefield, Outpost Siege deals 1 damage to target creature or player.| +Outpost Siege|Fate Reforged|110|R|{3}{R}|Enchantment|||As Outpost Siege enters the battlefield, choose Khans or Dragons.$ Khans - At the beginning of your upkeep, exile the top card of your library. Until end of turn, you may play that card.$ Dragons - Whenever a creature you control leaves the battlefield, Outpost Siege deals 1 damage to target creature or player.| Pyrotechnics|Fate Reforged|111|U|{4}{R}|Sorcery|||Pyrotechnics deals 4 damage divided as you choose among any number of target creatures and/or players.| Rageform|Fate Reforged|112|U|{2}{R}{R}|Enchantment|||When Rageform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Rageform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)$Enchanted creature has double strike. (It deals both first-strike and regular combat damage.)| Shaman of the Great Hunt|Fate Reforged|113|M|{3}{R}|Creature - Orc Shaman|4|2|Haste$Whenever a creature you control deals combat damage to a player, put a +1/+1 counter on it.$Ferocious - {2}{GU}{GU}: Draw a card for each creature you control with power 4 or greater.| @@ -25256,7 +25256,7 @@ Wild Slash|Fate Reforged|118|U|{R}|Instant|||Ferocious - If you control a creatu Abzan Beastmaster|Fate Reforged|119|U|{2}{G}|Creature - Hound Shaman|2|1|At the beginning of your upkeep, draw a card if you control the creature with the greatest toughness or tied for the greatest toughness.| Elite Scaleguard|Fate Reforged|12|U|{4}{W}|Creature - Human Soldier|2|3|When Elite Scaleguard enters the battlefield, bolster 2. (Choose a creature with the least toughness among creatures you control and put two +1/+1 counters on it.)$Whenever a creature you control with a +1/+1 counter on it attacks, tap target creature defending player controls.| Abzan Kin-Guard|Fate Reforged|120|U|{3}{G}|Creature - Human Warrior|3|3|Abzan Kin-Guard has lifelink as long as you control a white or black permanent.| -Ainok Guide|Fate Reforged|121|C|{1}{G}|Creature - Hound Scout|1|1|When Ainok Guide enters the battlefield, choose one -$� Put a +1/+1 counter on Ainok Guide.$� Search your library for a basic land card, reveal it, then shuffle your library and put that card on top of it.| +Ainok Guide|Fate Reforged|121|C|{1}{G}|Creature - Hound Scout|1|1|When Ainok Guide enters the battlefield, choose one -$ Put a +1/+1 counter on Ainok Guide.$ Search your library for a basic land card, reveal it, then shuffle your library and put that card on top of it.| Ambush Krotiq|Fate Reforged|122|C|{5}{G}|Creature - Insect|5|5|Trample$When Ambush Krotiq enters the battlefield, return another creature you control to its owner's hand.| Arashin War Beast|Fate Reforged|123|U|{5}{G}{G}|Creature - Beast|6|6|Whenever Arashin War Beast deals combat damage to one or more blocking creatures, manifest the top card of your library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)| Archers of Qarsi|Fate Reforged|124|C|{3}{G}|Creature - Naga Archer|5|2|Defender$Reach (This creature can block creatures with flying.)| @@ -25267,12 +25267,12 @@ Feral Krushok|Fate Reforged|128|C|{4}{G}|Creature - Beast|5|4|| Formless Nurturing|Fate Reforged|129|C|{3}{G}|Sorcery|||Manifest the top card of your library, then put a +1/+1 counter on it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)| Great-Horn Krushok|Fate Reforged|13|C|{4}{W}|Creature - Beast|3|5|| Frontier Mastodon|Fate Reforged|130|C|{2}{G}|Creature - Elephant|3|2|Ferocious - Frontier Mastodon enters the battlefield with a +1/+1 counter on it if you control a creature with power 4 or greater.| -Frontier Siege|Fate Reforged|131|R|{3}{G}|Enchantment|||As Frontier Siege enters the battlefield, choose Khans or Dragons.$� Khans - At the beginning of each of your main phases, add {G}{G} to your mana pool.$� Dragons - Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control.| +Frontier Siege|Fate Reforged|131|R|{3}{G}|Enchantment|||As Frontier Siege enters the battlefield, choose Khans or Dragons.$ Khans - At the beginning of each of your main phases, add {G}{G} to your mana pool.$ Dragons - Whenever a creature with flying enters the battlefield under your control, you may have it fight target creature you don't control.| Fruit of the First Tree|Fate Reforged|132|U|{3}{G}|Enchantment - Aura|||Enchant creature$When enchanted creature dies, you gain X life and draw X cards, where X is its toughness.| Hunt the Weak|Fate Reforged|133|C|{3}{G}|Sorcery|||Put a +1/+1 counter on target creature you control. Then that creature fights target creature you don't control. (Each deals damage equal to its power to the other.)| Map the Wastes|Fate Reforged|134|C|{2}{G}|Sorcery|||Search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. Bolster 1. (Choose a creature with the least toughness among creatures you control and put a +1/+1 counter on it.)| Return to the Earth|Fate Reforged|135|C|{3}{G}|Instant|||Destroy target artifact, enchantment, or creature with flying.| -Ruthless Instincts|Fate Reforged|136|U|{2}{G}|Instant|||Choose one -$� Target nonattacking creature gains reach and deathtouch until end of turn. Untap it.$� Target attacking creature gets +2/+2 and gains trample until end of turn.| +Ruthless Instincts|Fate Reforged|136|U|{2}{G}|Instant|||Choose one -$ Target nonattacking creature gains reach and deathtouch until end of turn. Untap it.$ Target attacking creature gets +2/+2 and gains trample until end of turn.| Sandsteppe Mastodon|Fate Reforged|137|R|{5}{G}{G}|Creature - Elephant|5|5|Reach$When Sandsteppe Mastodon enters the battlefield, bolster 5. (Choose a creature with the least toughness among creatures you control and put five +1/+1 counters on it.)| Shamanic Revelation|Fate Reforged|138|R|{3}{G}{G}|Sorcery|||Draw a card for each creature you control.$Ferocious - You gain 4 life for each creature you control with power 4 or greater.| Sudden Reclamation|Fate Reforged|139|U|{3}{G}|Instant|||Put the top four cards of your library into your graveyard, then return a creature card and a land card from your graveyard to your hand.| @@ -25334,17 +25334,17 @@ Pressure Point|Fate Reforged|21|C|{1}{W}|Instant|||Tap target creature.$Draw a c Rally the Ancestors|Fate Reforged|22|R|{X}{W}{W}|Instant|||Return each creature card with converted mana cost X or less from your graveyard to the battlefield. Exile those creatures at the beginning of your next upkeep. Exile Rally the Ancestors.| Sage's Reverie|Fate Reforged|23|U|{3}{W}|Enchantment - Aura|||Enchant creature$When Sage's Reverie enters the battlefield, draw a card for each Aura you control that's attached to a creature.$Enchanted creature gets +1/+1 for each Aura you control that's attached to a creature.| Sandblast|Fate Reforged|24|C|{2}{W}|Instant|||Sandblast deals 5 damage to target attacking or blocking creature.| -Sandsteppe Outcast|Fate Reforged|25|C|{2}{W}|Creature - Human Warrior|2|1|When Sandsteppe Outcast enters the battlefield, choose one -$� Put a +1/+1 counter on Sandsteppe Outcast.$� Put a 1/1 white Spirit creature token with flying onto the battlefield.| +Sandsteppe Outcast|Fate Reforged|25|C|{2}{W}|Creature - Human Warrior|2|1|When Sandsteppe Outcast enters the battlefield, choose one -$ Put a +1/+1 counter on Sandsteppe Outcast.$ Put a 1/1 white Spirit creature token with flying onto the battlefield.| Soul Summons|Fate Reforged|26|C|{1}{W}|Sorcery|||Manifest the top card of your library. (Put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)| Soulfire Grand Master|Fate Reforged|27|M|{1}{W}|Creature - Human Monk|2|2|Lifelink$Instant and sorcery spells you control have lifelink.${2}{UR}{UR}: The next time you cast an instant or sorcery spell from your hand this turn, put that card into your hand instead of into your graveyard as it resolves.| -Valorous Stance|Fate Reforged|28|U|{1}{W}|Instant|||Choose one -$� Target creature gains indestructible until end of turn.$� Destroy target creature with toughness 4 or greater.| +Valorous Stance|Fate Reforged|28|U|{1}{W}|Instant|||Choose one -$ Target creature gains indestructible until end of turn.$ Destroy target creature with toughness 4 or greater.| Wandering Champion|Fate Reforged|29|U|{1}{W}|Creature - Human Monk|3|1|Whenever Wandering Champion deals combat damage to a player, if you control a blue or red permanent, you may discard a card. If you do, draw a card.| Abzan Runemark|Fate Reforged|3|C|{2}{W}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2.$Enchanted creature has vigilance as long as you control a black or green permanent.| Wardscale Dragon|Fate Reforged|30|U|{4}{W}{W}|Creature - Dragon|4|4|Flying$As long as Wardscale Dragon is attacking, defending player can't cast spells.| -Aven Surveyor|Fate Reforged|31|C|{3}{U}{U}|Creature - Bird Scout|2|2|Flying$When Aven Surveyor enters the battlefield, choose one -$� Put a +1/+1 counter on Aven Surveyor.$� Return target creature to its owner's hand.| +Aven Surveyor|Fate Reforged|31|C|{3}{U}{U}|Creature - Bird Scout|2|2|Flying$When Aven Surveyor enters the battlefield, choose one -$ Put a +1/+1 counter on Aven Surveyor.$ Return target creature to its owner's hand.| Cloudform|Fate Reforged|32|U|{1}{U}{U}|Enchantment|||When Cloudform enters the battlefield, it becomes an Aura with enchant creature. Manifest the top card of your library and attach Cloudform to it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)$Enchanted creature has flying and hexproof.| Enhanced Awareness|Fate Reforged|33|C|{4}{U}|Instant|||Draw three cards, then discard a card.| -Fascination|Fate Reforged|34|U|{X}{U}{U}|Sorcery|||Choose one -$� Each player draws X cards.$� Each player puts the top X cards of his or her library into his or her graveyard.| +Fascination|Fate Reforged|34|U|{X}{U}{U}|Sorcery|||Choose one -$ Each player draws X cards.$ Each player puts the top X cards of his or her library into his or her graveyard.| Frost Walker|Fate Reforged|35|U|{1}{U}|Creature - Elemental|4|1|When Frost Walker becomes the target of a spell or ability, sacrifice it.| Jeskai Infiltrator|Fate Reforged|36|R|{2}{U}|Creature - Human Monk|2|3|Jeskai Infiltrator can't be blocked as long as you control no other creatures.$When Jeskai Infiltrator deals combat damage to a player, exile it and the top card of your library in a face-down pile, shuffle that pile, then manifest those cards. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)| Jeskai Runemark|Fate Reforged|37|C|{2}{U}|Enchantment - Aura|||Enchant creature$Enchanted creature gets +2/+2.$Enchanted creature has flying as long as you control a red or white permanent.| @@ -25354,7 +25354,7 @@ Abzan Skycaptain|Fate Reforged|4|C|{3}{W}|Creature - Bird Soldier|2|2|Flying$Whe Marang River Prowler|Fate Reforged|40|U|{2}{U}|Creature - Human Rogue|2|1|Marang River Prowler can't block and can't be blocked.$You may cast Marang River Prowler from your graveyard as long as you control a black or green permanent.| Mindscour Dragon|Fate Reforged|41|U|{4}{U}{U}|Creature - Dragon|4|4|Flying$Whenever Mindscour Dragon deals combat damage to an opponent, target player puts the top four cards of his or her library into his or her graveyard.| Mistfire Adept|Fate Reforged|42|U|{3}{U}|Creature - Human Monk|3|3|Prowess (Whenever you cast a noncreature spell, this creature gets +1/+1 until end of turn.)$Whenever you cast a noncreature spell, target creature gains flying until end of turn.| -Monastery Siege|Fate Reforged|43|R|{2}{U}|Enchantment|||As Monastery Siege enters the battlefield, choose Khans or Dragons.$� Khans - At the beginning of your draw step, draw an additional card, then discard a card.$� Dragons - Spells your opponents cast that target you or a permanent you control cost {2} more to cast.| +Monastery Siege|Fate Reforged|43|R|{2}{U}|Enchantment|||As Monastery Siege enters the battlefield, choose Khans or Dragons.$ Khans - At the beginning of your draw step, draw an additional card, then discard a card.$ Dragons - Spells your opponents cast that target you or a permanent you control cost {2} more to cast.| Neutralizing Blast|Fate Reforged|44|U|{1}{U}|Instant|||Counter target multicolored spell.| Rakshasa's Disdain|Fate Reforged|45|C|{2}{U}|Instant|||Counter target spell unless its controller pays {1} for each card in your graveyard.| Reality Shift|Fate Reforged|46|U|{1}{U}|Instant|||Exile target creature. Its controller manifests the top card of his or her library. (That player puts the top card of his or her library onto the battlefield face down as a 2/2 creature. If it's a creature card, it can be turned face up any time for its mana cost.)| @@ -25378,7 +25378,7 @@ Ancestral Vengeance|Fate Reforged|61|C|{B}{B}|Enchantment - Aura|||Enchant creat Archfiend of Depravity|Fate Reforged|62|R|{3}{B}{B}|Creature - Demon|5|4|Flying$At the beginning of each opponent's end step, that player chooses up to two creatures he or she controls, then sacrifices the rest.| Battle Brawler|Fate Reforged|63|U|{1}{B}|Creature - Orc Warrior|2|2|As long as you control a red or white permanent, Battle Brawler gets +1/+0 and has first strike.| Brutal Hordechief|Fate Reforged|64|M|{3}{B}|Creature - Orc Warrior|3|3|Whenever a creature you control attacks, defending player loses 1 life and you gain 1 life.${3}{RW}{RW}: Creatures your opponents control block this turn if able, and you choose how those creatures block.| -Crux of Fate|Fate Reforged|65|R|{3}{B}{B}|Sorcery|||Choose one -$� Destroy all Dragon creatures.$� Destroy all non-Dragon creatures.| +Crux of Fate|Fate Reforged|65|R|{3}{B}{B}|Sorcery|||Choose one -$ Destroy all Dragon creatures.$ Destroy all non-Dragon creatures.| Dark Deal|Fate Reforged|66|U|{2}{B}|Sorcery|||Each player discards all the cards in his or her hand, then draws that many cards minus one.| Diplomacy of the Wastes|Fate Reforged|67|U|{2}{B}|Sorcery|||Target opponent reveals his or her hand. You choose a nonland card from it. That player discards that card. If you control a Warrior, that player loses 2 life.| Douse in Gloom|Fate Reforged|68|C|{2}{B}|Instant|||Douse in Gloom deals 2 damage to target creature and you gain 2 life.| @@ -25387,14 +25387,14 @@ Channel Harm|Fate Reforged|7|U|{5}{W}|Instant|||Prevent all damage that would be Ghastly Conscription|Fate Reforged|70|M|{5}{B}{B}|Sorcery|||Exile all creature cards from target player's graveyard in a face-down pile, shuffle that pile, then manifest those cards. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)| Grave Strength|Fate Reforged|71|U|{1}{B}|Sorcery|||Choose target creature. Put the top three cards of your library into your graveyard, then put a +1/+1 counter on that creature for each creature card in your graveyard.| Gurmag Angler|Fate Reforged|72|C|{6}{B}|Creature - Zombie Fish|5|5|Delve (Each card you exile from your graveyard while casting this spell pays for {1}.)| -Hooded Assassin|Fate Reforged|73|C|{2}{B}|Creature - Human Assassin|1|2|When Hooded Assassin enters the battlefield, choose one -$� Put a +1/+1 counter on Hooded Assassin.$� Destroy target creature that was dealt damage this turn.| +Hooded Assassin|Fate Reforged|73|C|{2}{B}|Creature - Human Assassin|1|2|When Hooded Assassin enters the battlefield, choose one -$ Put a +1/+1 counter on Hooded Assassin.$ Destroy target creature that was dealt damage this turn.| Mardu Shadowspear|Fate Reforged|74|U|{B}|Creature - Human Warrior|1|1|Whenever Mardu Shadowspear attacks, each opponent loses 1 life.$Dash {1}{B} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| Mardu Strike Leader|Fate Reforged|75|R|{2}{B}|Creature - Human Warrior|3|2|Whenever Mardu Strike Leader attacks, put a 2/1 black Warrior creature token onto the battlefield.$Dash {3}{B} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| Merciless Executioner|Fate Reforged|76|U|{2}{B}|Creature - Orc Warrior|3|1|When Merciless Executioner enters the battlefield, each player sacrifices a creature.| Noxious Dragon|Fate Reforged|77|U|{4}{B}{B}|Creature - Dragon|4|4|Flying$When Noxious Dragon dies, you may destroy target creature with converted mana cost 3 or less.| Orc Sureshot|Fate Reforged|78|U|{3}{B}|Creature - Orc Archer|4|2|Whenever another creature enters the battlefield under your control, target creature an opponent controls gets -1/-1 until end of turn.| -Palace Siege|Fate Reforged|79|R|{3}{B}{B}|Enchantment|||As Palace Siege enters the battlefield, choose Khans or Dragons.$� Khans - At the beginning of your upkeep, return target creature card from your graveyard to your hand.$� Dragons - At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.| -Citadel Siege|Fate Reforged|8|R|{2}{W}{W}|Enchantment|||As Citadel Siege enters the battlefield, choose Khans or Dragons.$� Khans - At the beginning of combat on your turn, put two +1/+1 counters on target creature you control.$� Dragons - At the beginning of combat on each opponent's turn, tap target creature that player controls.| +Palace Siege|Fate Reforged|79|R|{3}{B}{B}|Enchantment|||As Palace Siege enters the battlefield, choose Khans or Dragons.$ Khans - At the beginning of your upkeep, return target creature card from your graveyard to your hand.$ Dragons - At the beginning of your upkeep, each opponent loses 2 life and you gain 2 life.| +Citadel Siege|Fate Reforged|8|R|{2}{W}{W}|Enchantment|||As Citadel Siege enters the battlefield, choose Khans or Dragons.$ Khans - At the beginning of combat on your turn, put two +1/+1 counters on target creature you control.$ Dragons - At the beginning of combat on each opponent's turn, tap target creature that player controls.| Qarsi High Priest|Fate Reforged|80|U|{B}|Creature - Human Cleric|0|2|{1}{B}, {tap}, Sacrifice another creature: Manifest the top card of your library. (Put that card onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)| Reach of Shadows|Fate Reforged|81|C|{4}{B}|Instant|||Destroy target creature that's one or more colors.| Sibsig Host|Fate Reforged|82|C|{4}{B}|Creature - Zombie|2|6|When Sibsig Host enters the battlefield, each player puts the top three cards of his or her library into his or her graveyard.| @@ -25412,7 +25412,7 @@ Bathe in Dragonfire|Fate Reforged|92|C|{2}{R}|Sorcery|||Bathe in Dragonfire deal Bloodfire Enforcers|Fate Reforged|93|U|{3}{R}|Creature - Human Monk|5|2|Bloodfire Enforcers has first strike and trample as long as an instant card and a sorcery card are in your graveyard.| Break Through the Line|Fate Reforged|94|U|{1}{R}|Enchantment|||{R}: Target creature with power 2 or less gains haste until end of turn and can't be blocked this turn.| Collateral Damage|Fate Reforged|95|C|{R}|Instant|||As an additional cost to cast Collateral Damage, sacrifice a creature.$Collateral Damage deals 3 damage to target creature or player.| -Defiant Ogre|Fate Reforged|96|C|{5}{R}|Creature - Ogre Warrior|3|5|When Defiant Ogre enters the battlefield, choose one -$� Put a +1/+1 counter on Defiant Ogre.$� Destroy target artifact.| +Defiant Ogre|Fate Reforged|96|C|{5}{R}|Creature - Ogre Warrior|3|5|When Defiant Ogre enters the battlefield, choose one -$ Put a +1/+1 counter on Defiant Ogre.$ Destroy target artifact.| Dragonrage|Fate Reforged|97|U|{2}{R}|Instant|||Add {R} to your mana pool for each attacking creature you control. Until end of turn, attacking creatures you control gain "{R}: This creature gets +1/+0 until end of turn."| Fierce Invocation|Fate Reforged|98|C|{4}{R}|Sorcery|||Manifest the top card of your library, then put two +1/+1 counters on it. (To manifest a card, put it onto the battlefield face down as a 2/2 creature. Turn it face up any time for its mana cost if it's a creature card.)| Flamerush Rider|Fate Reforged|99|R|{4}{R}|Creature - Human Warrior|3|3|Whenever Flamerush Rider attacks, put a token onto the battlefield tapped and attacking that's a copy of another target attacking creature. Exile the token at end of combat.$Dash {2}{R}{R} (You may cast this spell for its dash cost. If you do, it gains haste, and it's returned from the battlefield to its owner's hand at the beginning of the next end step.)| @@ -25489,7 +25489,7 @@ Scavenging Ooze|Media Inserts|70|Special|{1}{G}|Creature - Ooze|2|2|{G}: Exile t Hamletback Goliath|Media Inserts|71|Special|{6}{R}|Creature - Giant Warrior|6|6|Whenever another creature enters the battlefield, you may put X +1/+1 counters on Hamletback Goliath, where X is that creature's power.| Ajani, Caller of the Pride|Media Inserts|72|Special|{1}{W}{W}|Planeswalker - Ajani|4|+1: Put a +1/+1 counter on up to one target creature.$-3: Target creature gains flying and double strike until end of turn.$-8: Put X 2/2 white Cat creature tokens onto the battlefield, where X is your life total.| Jace, Memory Adept|Meda Inserts|73|Special|{3}{U}{U}|Planeswalker - Jace|4|+1: Draw a card. Target player puts the top card of his or her library into his or her graveyard.$0: Target player puts the top ten cards of his or her library into his or her graveyard.$-7: Any number of target players each draw twenty cards.| -Liliana of the Dark Realms|Media Inserts|74|Special|{2}{B}{B}|Planeswalker - Liliana|3|+1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library.$-3: Target creature gets +X/+X or -X/-X until end of turn, where X is the number of Swamps you control.$-6: You get an emblem with "Swamps you control have �Tap: Add {B}{B}{B}{B} to your mana pool.'"| +Liliana of the Dark Realms|Media Inserts|74|Special|{2}{B}{B}|Planeswalker - Liliana|3|+1: Search your library for a Swamp card, reveal it, and put it into your hand. Then shuffle your library.$-3: Target creature gets +X/+X or -X/-X until end of turn, where X is the number of Swamps you control.$-6: You get an emblem with "Swamps you control have Tap: Add {B}{B}{B}{B} to your mana pool.'"| Chandra, Pyromaster|Media Inserts|75|Special|{2}{R}{R}|Planeswalker - Chandra||4|+1: Chandra, Pyromaster deals 1 damage to target player and 1 damage to up to one target creature that player controls. That creature can't block this turn.$0: Exile the top card of your library. You may play it this turn.$-7: Exile the top ten cards of your library. Choose an instant or sorcery card exiled this way and copy it three times. You may cast the copies without paying their mana costs.| Garruk, Caller of Beasts|Media Inserts|76|Special|{4}{G}{G}|Planeswalker - Garruk|4|+1: Reveal the top 5 cards of your library. Put all creature cards revealed this way into your hand and the rest on the bottom of your library in any order.$-3: You may put a green creature card from your hand onto the battlefield.$-7: You get an emblem with "Whenever you cast a creature spell, you may search your library for a creature card, put it onto the battlefield, then shuffle your library."| Sylvan Caryatid|Media Inserts|77|Special|{1}{G}|Creature - Plant|0|3|Defender, hexproof${tap}: Add one mana of any color to your mana pool.| @@ -25522,71 +25522,71 @@ Garruk, Apex Predator|Media Inserts|104|Special|{5}{B}{G}|Planeswalker - Garruk| Shamanic Revelation|Media Inserts|105|Special|{2}{G}{G}|Sorcery|||Draw a card for each creature you control.$Ferocious - You gain 4 life for each creature you control with power 4 or greater.| Ojutai's Command|Media Inserts|106|Special|{2}{W}{U}|Instant|||Choose two - Return target creature card with converted mana cost 2 or less from your graveyard to the battlefield; or You gain 4 life; or Counter target creature spell; or Draw a card.| Sultai|Media Inserts|999|Special|{{U}{B}{G}|Legendary Creature - Placeholder|2|2|| -Wood Elves|WPN Gateway|1|Special|{2}{G}|Creature — Elf Scout|1|1|When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.| -Icatian Javelineers|WPN Gateway|2|Special|{W}|Creature — Human Soldier|1|1|Icatian Javelineers enters the battlefield with a javelin counter on it.${T}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to target creature or player.| +Wood Elves|WPN Gateway|1|Special|{2}{G}|Creature Elf Scout|1|1|When Wood Elves enters the battlefield, search your library for a Forest card and put that card onto the battlefield. Then shuffle your library.| +Icatian Javelineers|WPN Gateway|2|Special|{W}|Creature Human Soldier|1|1|Icatian Javelineers enters the battlefield with a javelin counter on it.${T}, Remove a javelin counter from Icatian Javelineers: Icatian Javelineers deals 1 damage to target creature or player.| Fiery Temper|WPN Gateway|3|Special|{1}{R}{R}|Instant|||Fiery Temper deals 3 damage to target creature or player.$Madness {R} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)| Boomerang|WPN Gateway|4|Special|{U}{U}|Instant|||Return target permanent to its owner's hand.| -Calciderm|WPN Gateway|5|Special|{2}{W}{W}|Creature — Beast|5|5|Shroud (This creature can't be the target of spells or abilities.)$Vanishing 4 (This permanent enters the battlefield with four time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.)| -Reckless Wurm|WPN Gateway|6|Special|{3}{R}{R}|Creature — Wurm|4|4|Trample$Madness {2}{R} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)| -Yixlid Jailer|WPN Gateway|7|Special|{1}{B}|Creature — Zombie Wizard|2|1|Cards in graveyards lose all abilities.| +Calciderm|WPN Gateway|5|Special|{2}{W}{W}|Creature Beast|5|5|Shroud (This creature can't be the target of spells or abilities.)$Vanishing 4 (This permanent enters the battlefield with four time counters on it. At the beginning of your upkeep, remove a time counter from it. When the last is removed, sacrifice it.)| +Reckless Wurm|WPN Gateway|6|Special|{3}{R}{R}|Creature Wurm|4|4|Trample$Madness {2}{R} (If you discard this card, you may cast it for its madness cost instead of putting it into your graveyard.)| +Yixlid Jailer|WPN Gateway|7|Special|{1}{B}|Creature Zombie Wizard|2|1|Cards in graveyards lose all abilities.| Zoetic Cavern|WPN Gateway|8|Special||Land|||{T}: Add {1} to your mana pool.$Morph {2} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| -Llanowar Elves|WPN Gateway|9|Special|{G}|Creature — Elf Druid|1|1|{T}: Add {G} to your mana pool.| -Mogg Fanatic|WPN Gateway|10|Special|{R}|Creature — Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.| +Llanowar Elves|WPN Gateway|9|Special|{G}|Creature Elf Druid|1|1|{T}: Add {G} to your mana pool.| +Mogg Fanatic|WPN Gateway|10|Special|{R}|Creature Goblin|1|1|Sacrifice Mogg Fanatic: Mogg Fanatic deals 1 damage to target creature or player.| Mind Stone|WPN Gateway|11|Special|{2}|Artifact|||{T}: Add {1} to your mana pool.${1}, {T}, Sacrifice Mind Stone: Draw a card.| -Dauntless Dourbark|WPN Gateway|12|Special|{3}{G}|Creature — Treefolk Warrior|*|*|Dauntless Dourbark's power and toughness are each equal to the number of Forests you control plus the number of Treefolk you control.$Dauntless Dourbark has trample as long as you control another Treefolk.| +Dauntless Dourbark|WPN Gateway|12|Special|{3}{G}|Creature Treefolk Warrior|*|*|Dauntless Dourbark's power and toughness are each equal to the number of Forests you control plus the number of Treefolk you control.$Dauntless Dourbark has trample as long as you control another Treefolk.| Lava Axe|WPN Gateway|13|Special|{4}{R}|Sorcery|||Lava Axe deals 5 damage to target player.| -Cenn's Tactician|WPN Gateway|14|Special|{W}|Creature — Kithkin Soldier|1|1|{W}, {T}: Put a +1/+1 counter on target Soldier creature.$Each creature you control with a +1/+1 counter on it can block an additional creature.| -Oona's Blackguard|WPN Gateway|15|Special|{1}{B}|Creature — Faerie Rogue|1|1|Flying$Each other Rogue creature you control enters the battlefield with an additional +1/+1 counter on it.$Whenever a creature you control with a +1/+1 counter on it deals combat damage to a player, that player discards a card.| -Gravedigger|WPN Gateway|16|Special|{3}{B}|Creature — Zombie|2|2|When Gravedigger enters the battlefield, you may return target creature card from your graveyard to your hand.| -Boggart Ram-Gang|WPN Gateway|17|Special|{RG}{RG}{RG}|Creature — Goblin Warrior|3|3|Haste$Wither (This deals damage to creatures in the form of -1/-1 counters.)| -Wilt-Leaf Cavaliers|WPN Gateway|18|Special|{GW}{GW}{GW}|Creature — Elf Knight|3|4|Vigilance| -Duergar Hedge-Mage|WPN Gateway|19|Special|{2}{RW}|Creature — Dwarf Shaman|2|2|When Duergar Hedge-Mage enters the battlefield, if you control two or more Mountains, you may destroy target artifact.$When Duergar Hedge-Mage enters the battlefield, if you control two or more Plains, you may destroy target enchantment.| -Selkie Hedge-Mage|WPN Gateway|20|Special|{2}{GU}|Creature — Merfolk Wizard|2|2|When Selkie Hedge-Mage enters the battlefield, if you control two or more Forests, you may gain 3 life.$When Selkie Hedge-Mage enters the battlefield, if you control two or more Islands, you may return target tapped creature to its owner's hand.| -Sprouting Thrinax|WPN Gateway|21|Special|{B}{R}{G}|Creature — Lizard|3|3|When Sprouting Thrinax dies, put three 1/1 green Saproling creature tokens onto the battlefield.| -Woolly Thoctar|WPN Gateway|22|Special|{W}{R}{G}|Creature — Beast|5|4|| +Cenn's Tactician|WPN Gateway|14|Special|{W}|Creature Kithkin Soldier|1|1|{W}, {T}: Put a +1/+1 counter on target Soldier creature.$Each creature you control with a +1/+1 counter on it can block an additional creature.| +Oona's Blackguard|WPN Gateway|15|Special|{1}{B}|Creature Faerie Rogue|1|1|Flying$Each other Rogue creature you control enters the battlefield with an additional +1/+1 counter on it.$Whenever a creature you control with a +1/+1 counter on it deals combat damage to a player, that player discards a card.| +Gravedigger|WPN Gateway|16|Special|{3}{B}|Creature Zombie|2|2|When Gravedigger enters the battlefield, you may return target creature card from your graveyard to your hand.| +Boggart Ram-Gang|WPN Gateway|17|Special|{RG}{RG}{RG}|Creature Goblin Warrior|3|3|Haste$Wither (This deals damage to creatures in the form of -1/-1 counters.)| +Wilt-Leaf Cavaliers|WPN Gateway|18|Special|{GW}{GW}{GW}|Creature Elf Knight|3|4|Vigilance| +Duergar Hedge-Mage|WPN Gateway|19|Special|{2}{RW}|Creature Dwarf Shaman|2|2|When Duergar Hedge-Mage enters the battlefield, if you control two or more Mountains, you may destroy target artifact.$When Duergar Hedge-Mage enters the battlefield, if you control two or more Plains, you may destroy target enchantment.| +Selkie Hedge-Mage|WPN Gateway|20|Special|{2}{GU}|Creature Merfolk Wizard|2|2|When Selkie Hedge-Mage enters the battlefield, if you control two or more Forests, you may gain 3 life.$When Selkie Hedge-Mage enters the battlefield, if you control two or more Islands, you may return target tapped creature to its owner's hand.| +Sprouting Thrinax|WPN Gateway|21|Special|{B}{R}{G}|Creature Lizard|3|3|When Sprouting Thrinax dies, put three 1/1 green Saproling creature tokens onto the battlefield.| +Woolly Thoctar|WPN Gateway|22|Special|{W}{R}{G}|Creature Beast|5|4|| Path to Exile|WPN Gateway|24|Special|{W}|Instant|||Exile target creature. Its controller may search his or her library for a basic land card, put that card onto the battlefield tapped, then shuffle his or her library.| -Hellspark Elemental|WPN Gateway|25|Special|{1}{R}|Creature — Elemental|3|1|Trample, haste$At the beginning of the end step, sacrifice Hellspark Elemental.$Unearth {1}{R} ({1}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)| -Marisi's Twinclaws|WPN Gateway|26|Special|{2}{RW}{G}|Creature — Cat Warrior|2|4|Double strike| +Hellspark Elemental|WPN Gateway|25|Special|{1}{R}|Creature Elemental|3|1|Trample, haste$At the beginning of the end step, sacrifice Hellspark Elemental.$Unearth {1}{R} ({1}{R}: Return this card from your graveyard to the battlefield. It gains haste. Exile it at the beginning of the next end step or if it would leave the battlefield. Unearth only as a sorcery.)| +Marisi's Twinclaws|WPN Gateway|26|Special|{2}{RW}{G}|Creature Cat Warrior|2|4|Double strike| Slave of Bolas|WPN Gateway|27|Special|{3}{UR}{B}|Sorcery|||Gain control of target creature. Untap that creature. It gains haste until end of turn. Sacrifice it at the beginning of the next end step.| -Mycoid Shepherd|WPN Gateway|28|Special|{1}{W}{G}{G}|Creature — Fungus|5|4|Whenever Mycoid Shepherd or another creature you control with power 5 or greater dies, you may gain 5 life.| -Naya Sojourners|WPN Gateway|29|Special|{2}{W}{R}{G}|Creature — Elf Shaman|5|3|When you cycle Naya Sojourners or it dies, you may put a +1/+1 counter on target creature.$Cycling {2}{G} ({2}{G}, Discard this card: Draw a card.)| -Mind Control|WPN Gateway|30|Special|{3}{U}{U}|Enchantment — Aura|||Enchant creature$You control enchanted creature.| +Mycoid Shepherd|WPN Gateway|28|Special|{1}{W}{G}{G}|Creature Fungus|5|4|Whenever Mycoid Shepherd or another creature you control with power 5 or greater dies, you may gain 5 life.| +Naya Sojourners|WPN Gateway|29|Special|{2}{W}{R}{G}|Creature Elf Shaman|5|3|When you cycle Naya Sojourners or it dies, you may put a +1/+1 counter on target creature.$Cycling {2}{G} ({2}{G}, Discard this card: Draw a card.)| +Mind Control|WPN Gateway|30|Special|{3}{U}{U}|Enchantment Aura|||Enchant creature$You control enchanted creature.| Rise from the Grave|WPN Gateway|31|Special|{4}{B}|Sorcery|||Put target creature card from a graveyard onto the battlefield under your control. That creature is a black Zombie in addition to its other colors and types.| -Kor Duelist|WPN Gateway|32|Special|{W}|Creature — Kor Soldier|1|1|As long as Kor Duelist is equipped, it has double strike. (It deals both first-strike and regular combat damage.)| -Vampire Nighthawk|WPN Gateway|33|Special|{1}{B}{B}|Creature — Vampire Shaman|2|3|Flying$Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)$Lifelink (Damage dealt by this creature also causes you to gain that much life.)| -Nissa's Chosen|WPN Gateway|34|Special|{G}{G}|Creature — Elf Warrior|2|3|If Nissa's Chosen would die, put it on the bottom of its owner's library instead.| -Emeria Angel|WPN Gateway|35|Special|{2}{W}{W}|Creature — Angel|3|3|Flying$Landfall — Whenever a land enters the battlefield under your control, you may put a 1/1 white Bird creature token with flying onto the battlefield.| -Kor Firewalker|WPN Gateway|36|Special|{W}{W}|Creature — Kor Soldier|2|2|Protection from red$Whenever a player casts a red spell, you may gain 1 life.| -Leatherback Baloth|WPN Gateway|37|Special|{G}{G}{G}|Creature — Beast|4|5|| -Hada Freeblade|WPN Gateway|38|Special|{W}|Creature — Human Soldier Ally|0|1|Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +1/+1 counter on Hada Freeblade.| -Kalastria Highborn|WPN Gateway|39|Special|{B}{B}|Creature — Vampire Shaman|2|2|Whenever Kalastria Highborn or another Vampire you control dies, you may pay {B}. If you do, target player loses 2 life and you gain 2 life.| +Kor Duelist|WPN Gateway|32|Special|{W}|Creature Kor Soldier|1|1|As long as Kor Duelist is equipped, it has double strike. (It deals both first-strike and regular combat damage.)| +Vampire Nighthawk|WPN Gateway|33|Special|{1}{B}{B}|Creature Vampire Shaman|2|3|Flying$Deathtouch (Any amount of damage this deals to a creature is enough to destroy it.)$Lifelink (Damage dealt by this creature also causes you to gain that much life.)| +Nissa's Chosen|WPN Gateway|34|Special|{G}{G}|Creature Elf Warrior|2|3|If Nissa's Chosen would die, put it on the bottom of its owner's library instead.| +Emeria Angel|WPN Gateway|35|Special|{2}{W}{W}|Creature Angel|3|3|Flying$Landfall Whenever a land enters the battlefield under your control, you may put a 1/1 white Bird creature token with flying onto the battlefield.| +Kor Firewalker|WPN Gateway|36|Special|{W}{W}|Creature Kor Soldier|2|2|Protection from red$Whenever a player casts a red spell, you may gain 1 life.| +Leatherback Baloth|WPN Gateway|37|Special|{G}{G}{G}|Creature Beast|4|5|| +Hada Freeblade|WPN Gateway|38|Special|{W}|Creature Human Soldier Ally|0|1|Whenever Hada Freeblade or another Ally enters the battlefield under your control, you may put a +1/+1 counter on Hada Freeblade.| +Kalastria Highborn|WPN Gateway|39|Special|{B}{B}|Creature Vampire Shaman|2|2|Whenever Kalastria Highborn or another Vampire you control dies, you may pay {B}. If you do, target player loses 2 life and you gain 2 life.| Syphon Mind|WPN Gateway|40|Special|{3}{B}|Sorcery|||Each other player discards a card. You draw a card for each card discarded this way.| -Pathrazer of Ulamog|WPN Gateway|46|Special|{11}|Creature — Eldrazi|9|9|Annihilator 3 (Whenever this creature attacks, defending player sacrifices three permanents.)$Pathrazer of Ulamog can't be blocked except by three or more creatures.| +Pathrazer of Ulamog|WPN Gateway|46|Special|{11}|Creature Eldrazi|9|9|Annihilator 3 (Whenever this creature attacks, defending player sacrifices three permanents.)$Pathrazer of Ulamog can't be blocked except by three or more creatures.| Curse of Wizardry|WPN Gateway|47|Special|{2}{B}{B}|Enchantment|||As Curse of Wizardry enters the battlefield, choose a color.$Whenever a player casts a spell of the chosen color, that player loses 1 life.| Staggershock|WPN Gateway|48|Special|{2}{R}|Instant|||Staggershock deals 2 damage to target creature or player.$Rebound (If you cast this spell from your hand, exile it as it resolves. At the beginning of your next upkeep, you may cast this card from exile without paying its mana cost.)| -Deathless Angel|WPN Gateway|49|Special|{4}{W}{W}|Creature — Angel|5|7|Flying${W}{W}: Target creature gains indestructible until end of turn.| +Deathless Angel|WPN Gateway|49|Special|{4}{W}{W}|Creature Angel|5|7|Flying${W}{W}: Target creature gains indestructible until end of turn.| Fling|WPN Gateway|50|Special|{1}{R}|Instant|||As an additional cost to cast Fling, sacrifice a creature.$Fling deals damage equal to the sacrificed creature's power to target creature or player.| -Sylvan Ranger|WPN Gateway|51|Special|{1}{G}|Creature — Elf Scout|1|1|When Sylvan Ranger enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.| -Plague Stinger|WPN Gateway|59|Special|{1}{B}|Creature — Insect Horror|1|1|Flying$Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)| +Sylvan Ranger|WPN Gateway|51|Special|{1}{G}|Creature Elf Scout|1|1|When Sylvan Ranger enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.| +Plague Stinger|WPN Gateway|59|Special|{1}{B}|Creature Insect Horror|1|1|Flying$Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)| Golem's Heart|WPN Gateway|60|Special|{2}|Artifact|||Whenever a player casts an artifact spell, you may gain 1 life.| -Skinrender|WPN Gateway|63|Special|{2}{B}{B}|Creature — Zombie|3|3|When Skinrender enters the battlefield, put three -1/-1 counters on target creature.| +Skinrender|WPN Gateway|63|Special|{2}{B}{B}|Creature Zombie|3|3|When Skinrender enters the battlefield, put three -1/-1 counters on target creature.| Master's Call|WPN Gateway|64|Special|{2}{W}|Instant|||Put two 1/1 colorless Myr artifact creature tokens onto the battlefield.| -Plague Myr|WPN Gateway|65|Special|{2}|Artifact Creature — Myr|1|1|Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)${T}: Add {1} to your mana pool.| -Signal Pest|WPN Gateway|66|Special|{1}|Artifact Creature — Pest|0|1|Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)$Signal Pest can't be blocked except by creatures with flying or reach.| +Plague Myr|WPN Gateway|65|Special|{2}|Artifact Creature Myr|1|1|Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.)${T}: Add {1} to your mana pool.| +Signal Pest|WPN Gateway|66|Special|{1}|Artifact Creature Pest|0|1|Battle cry (Whenever this creature attacks, each other attacking creature gets +1/+0 until end of turn.)$Signal Pest can't be blocked except by creatures with flying or reach.| Fling|WPN Gateway|69|Special|{1}{R}|Instant|||As an additional cost to cast Fling, sacrifice a creature.$Fling deals damage equal to the sacrificed creature's power to target creature or player.| -Sylvan Ranger|WPN Gateway|70|Special|{1}{G}|Creature — Elf Scout|1|1|When Sylvan Ranger enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.| -Vault Skirge|WPN Gateway|71|Special|{1}{BP}|Artifact Creature — Imp|1|1|({BP} can be paid with either {B} or 2 life.)$Flying$Lifelink (Damage dealt by this creature also causes you to gain that much life.)| -Maul Splicer|WPN Gateway|72|Special|{6}{G}|Creature — Human Artificer|1|1|When Maul Splicer enters the battlefield, put two 3/3 colorless Golem artifact creature tokens onto the battlefield.$Golem creatures you control have trample.| +Sylvan Ranger|WPN Gateway|70|Special|{1}{G}|Creature Elf Scout|1|1|When Sylvan Ranger enters the battlefield, you may search your library for a basic land card, reveal it, put it into your hand, then shuffle your library.| +Vault Skirge|WPN Gateway|71|Special|{1}{BP}|Artifact Creature Imp|1|1|({BP} can be paid with either {B} or 2 life.)$Flying$Lifelink (Damage dealt by this creature also causes you to gain that much life.)| +Maul Splicer|WPN Gateway|72|Special|{6}{G}|Creature Human Artificer|1|1|When Maul Splicer enters the battlefield, put two 3/3 colorless Golem artifact creature tokens onto the battlefield.$Golem creatures you control have trample.| Shrine of Burning Rage|WPN Gateway|73|Special|{2}|Artifact|||At the beginning of your upkeep or whenever you cast a red spell, put a charge counter on Shrine of Burning Rage.${3}, {T}, Sacrifice Shrine of Burning Rage: Shrine of Burning Rage deals damage equal to the number of charge counters on it to target creature or player.| -Tormented Soul|WPN Gateway|76|Special|{B}|Creature — Spirit|1|1|Tormented Soul can't block and can't be blocked.| -Auramancer|WPN Gateway|77|Special|{2}{W}|Creature — Human Wizard|2|2|When Auramancer enters the battlefield, you may return target enchantment card from your graveyard to your hand.| +Tormented Soul|WPN Gateway|76|Special|{B}|Creature Spirit|1|1|Tormented Soul can't block and can't be blocked.| +Auramancer|WPN Gateway|77|Special|{2}{W}|Creature Human Wizard|2|2|When Auramancer enters the battlefield, you may return target enchantment card from your graveyard to your hand.| Circle of Flame|WPN Gateway|78|Special|{1}{R}|Enchantment|||Whenever a creature without flying attacks you or a planeswalker you control, Circle of Flame deals 1 damage to that creature.| -Gather the Townsfolk|WPN Gateway|79|Special|{1}{W}|Sorcery|||Put two 1/1 white Human creature tokens onto the battlefield.$Fateful hour — If you have 5 or less life, put five of those tokens onto the battlefield instead.| -Curse of the Bloody Tome|WPN Gateway|80|Special|{2}{U}|Enchantment — Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, that player puts the top two cards of his or her library into his or her graveyard.| -Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment — Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, Curse of Thirst deals damage to that player equal to the number of Curses attached to him or her.| -Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature — Vampire Rogue|4|1|Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)| -Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature — Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.| -Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature — Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.| +Gather the Townsfolk|WPN Gateway|79|Special|{1}{W}|Sorcery|||Put two 1/1 white Human creature tokens onto the battlefield.$Fateful hour If you have 5 or less life, put five of those tokens onto the battlefield instead.| +Curse of the Bloody Tome|WPN Gateway|80|Special|{2}{U}|Enchantment Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, that player puts the top two cards of his or her library into his or her graveyard.| +Curse of Thirst|WPN Gateway|81|Special|{4}{B}|Enchantment Aura Curse|||Enchant player$At the beginning of enchanted player's upkeep, Curse of Thirst deals damage to that player equal to the number of Curses attached to him or her.| +Nearheath Stalker|WPN Gateway|82|Special|{4}{R}|Creature Vampire Rogue|4|1|Undying (When this creature dies, if it had no +1/+1 counters on it, return it to the battlefield under its owner's control with a +1/+1 counter on it.)| +Bloodcrazed Neonate|WPN Gateway|83|Special|{1}{R}|Creature Vampire|2|1|Bloodcrazed Neonate attacks each turn if able.$Whenever Bloodcrazed Neonate deals combat damage to a player, put a +1/+1 counter on it.| +Boneyard Wurm|WPN Gateway|84|Special|{1}{G}|Creature Wurm|*|*|Boneyard Wurm's power and toughness are each equal to the number of creature cards in your graveyard.| Dirtcowl Wurm|Prerelease Events|1|Special|{4}{G}|Creature - Wurm|3|4|Whenever an opponent plays a land, put a +1/+1 counter on Dirtcowl Wurm.| Revenant|Prerelease Events|2|Special|{4}{B}|Creature - Spirit|*|*|Flying$Revenant's power and toughness are each equal to the number of creature cards in your graveyard.| Monstrous Hount|Prerelease Events|3|Special|{3}{R}|Creature - Hound|4|4|Monstrous Hound can't attack unless you control more lands than defending player.$Monstrous Hound can't block unless you control more lands than attacking player.| @@ -25601,7 +25601,7 @@ Avatar of Hope|Prerelease Events|11|Special|{6}{W}{W}|Creature - Avatar|4|9|If y Raging Kavu|Prerelease Events|12|Special|{4}{1}{R}{G}|Creature - Kavu|3|1|Flash$Haste| Questing Phelddagrif|Prerelease Events|13|Special|{1}{W}{U}{G}|Creature - Phelddagrif|4|4|{G}: Questing Phelddagrif gets +1/+1 until end of turn. Target opponent puts a 1/1 green Hippo creature token onto the battlefield.${W}: Questing Phelddagrif gains protection from black and from red until end of turn. Target opponent gains 2 life.${U}: Questing Phelddagrif gains flying until end of turn. Target opponent may draw a card.| Fungal Shambler|Prerelease Events|14|Special|{4}{U}{B}{G}|Creature - Fungus Beast|6|4|Trample$Whenever Fungal Shambler deals damage to an opponent, you draw a card and that opponent discards a card.| -Stone-Tongue Baselisk|Prerelease Events|15|Special|{4}{G}{G}{G}|Creature - Basilisk|4|5|Whenever Stone-Tongue Basilisk deals combat damage to a creature, destroy that creature at end of combat.$Threshold — As long as seven or more cards are in your graveyard, all creatures able to block Stone-Tongue Basilisk do so.| +Stone-Tongue Baselisk|Prerelease Events|15|Special|{4}{G}{G}{G}|Creature - Basilisk|4|5|Whenever Stone-Tongue Basilisk deals combat damage to a creature, destroy that creature at end of combat.$Threshold As long as seven or more cards are in your graveyard, all creatures able to block Stone-Tongue Basilisk do so.| Laquatus's Champion|Prerelease Events|16|Special|{4}{B}{B}|Creature - Nightmare Horror|6|3|When Laquatus's Champion enters the battlefield, target player loses 6 life.$When Laquatus's Champion leaves the battlefield, that player gains 6 life.${B}: Regenerate Laquatus's Champion.| Glory|Prerelease Events|17|Special|{{3}{W}{W}|Creature - Incarnation|3|3|Flying${2}{W}: Choose a color. Creatures you control gain protection from the chosen color until end of turn. Activate this ability only if Glory is in your graveyard.| Silent Specter|Prerelease Events|18|Special|{4}{B}{B}|Creature - Specter|4|4|Flying$Whenever Silent Specter deals combat damage to a player, that player discards two cards.$Morph {3}{B}{B} (You may cast this card face down as a 2/2 creature for {3}. Turn it face up any time for its morph cost.)| @@ -25617,18 +25617,18 @@ Gleancrawler|Prerelease Events|27|Special|{3}{BG}{BG}{BG}|Creature - Insect Horr Djinn Illuminatus|Prerelease Events|28|Special|{5}{UR}{UR}|Creature - Djinn|3|5|({U/R} can be paid with either {U} or {R}.)$Flying$Each instant and sorcery spell you cast has replicate. The replicate cost is equal to its mana cost. (When you cast it, copy it for each time you paid its replicate cost. You may choose new targets for the copies.)| Avatar of Discord|Prerelease Events|29|Special|{BR}{BR}{BR}|Creature - Avatar|5|3|({B/R} can be paid with either {B} or {R}.)$Flying$When Avatar of Discord enters the battlefield, sacrifice it unless you discard two cards.| Allosaurus Rider|Prerelease Events|30|Special|{5}{G}{G}|Creature - Elf Warrior|1+*|1+*|You may exile two green cards from your hand rather than pay Allosaurus Rider's mana cost.$Allosaurus Rider's power and toughness are each equal to 1 plus the number of lands you control.| -Lotus Bloom|Prerelease Events|31|Special||Artifact|||Suspend 3—{0} (Rather than cast this card from your hand, pay {0} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)${T}, Sacrifice Lotus Bloom: Add three mana of any one color to your mana pool. +Lotus Bloom|Prerelease Events|31|Special||Artifact|||Suspend 3{0} (Rather than cast this card from your hand, pay {0} and exile it with three time counters on it. At the beginning of your upkeep, remove a time counter. When the last is removed, cast it without paying its mana cost.)${T}, Sacrifice Lotus Bloom: Add three mana of any one color to your mana pool. Oros, the Avenger|Prerelease Events|32|Special|{3}{W}{B}{R}|Legendary Creature - Dragon|6|6|Flying$Whenever Oros, the Avenger deals combat damage to a player, you may pay {2}{W}. If you do, Oros deals 3 damage to each nonwhite creature.| -Korlash, Heir to Blackblade|Prerelease Events|33|Special|{2}{B}{B}|Legendary Creature - Zombie Warrior|*|*|Korlash, Heir to Blackblade's power and toughness are each equal to the number of Swamps you control.${1}{B}: Regenerate Korlash.$Grandeur — Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.| +Korlash, Heir to Blackblade|Prerelease Events|33|Special|{2}{B}{B}|Legendary Creature - Zombie Warrior|*|*|Korlash, Heir to Blackblade's power and toughness are each equal to the number of Swamps you control.${1}{B}: Regenerate Korlash.$Grandeur Discard another card named Korlash, Heir to Blackblade: Search your library for up to two Swamp cards, put them onto the battlefield tapped, then shuffle your library.| Wren's Run Packmaster|Prerelease Events|34|Special|{3}{G}|Creature - Elf Warrior|5|5|Champion an Elf (When this creature enters the battlefield, sacrifice it unless you exile another Elf you control. When this creature leaves the battlefield, that card returns to the battlefield.)${2}{G}: Put a 2/2 green Wolf creature token onto the battlefield.$Wolves you control have deathtouch.| Door of Destinies|Prerelease Events|35|Special|{4}|Artifact|||As Door of Destinies enters the battlefield, choose a creature type.$Whenever you cast a spell of the chosen type, put a charge counter on Door of Destinies.$Creatures you control of the chosen type get +1/+1 for each charge counter on Door of Destinies.| Demigod of Revenge|Prerelease Events|36|Special|{BR}{BR}{BR}{BR}{BR}|Creature - Spirit Avatar|5|4|Flying$Haste$When you cast Demigod of Revenge, return all cards named Demigod of Revenge from your graveyard to the battlefield.| Overbeing of Myth|Prerelease Events|37|Special|{GU}{GU}{GU}{GU}{GU}|Creature - Spirit Avatar|*|*|Overbeing of Myth's power and toughness are each equal to the number of cards in your hand.$At the beginning of your draw step, draw an additional card.| -Ajani Vengeant|Prerelease Events|38|Special|{2}{W}{R}|Planeswalker - Ajani|||+1: Target permanent doesn't untap during its controller's next untap step.$−2: Ajani Vengeant deals 3 damage to target creature or player and you gain 3 life.$−7: Destroy all lands target player controls.| +Ajani Vengeant|Prerelease Events|38|Special|{2}{W}{R}|Planeswalker - Ajani|||+1: Target permanent doesn't untap during its controller's next untap step.$?2: Ajani Vengeant deals 3 damage to target creature or player and you gain 3 life.$?7: Destroy all lands target player controls.| Malfegor|Prerelease Events|39|Special|{2}{B}{B}{R}{R}|Legendary Creature - Demon Dragon|6|6|Flying$When Malfegor enters the battlefield, discard your hand. Each opponent sacrifices a creature for each card discarded this way.| Dragon Broodmother|Prerelease Events|40|Special|{2}{R}{R}{R}{G}|Creature - Dragon|4|4|Flying$At the beginning of each upkeep, put a 1/1 red and green Dragon creature token with flying and devour 2 onto the battlefield. (As the token enters the battlefield, you may sacrifice any number of creatures. It enters the battlefield with twice that many +1/+1 counters on it.)| Vampire Nocturnus|Prerelease Events|41|Special|{1}{B}{B}{B}|Creature - Vampire|3|3|Play with the top card of your library revealed.$As long as the top card of your library is black, Vampire Nocturnus and other Vampire creatures you control get +2/+1 and have flying.| -Rampaging Baloths|Prerelease Events|42|Special|{4}{G}{G}|Creature - Beast|6|6|Trample$Landfall — Whenever a land enters the battlefield under your control, you may put a 4/4 green Beast creature token onto the battlefield.| +Rampaging Baloths|Prerelease Events|42|Special|{4}{G}{G}|Creature - Beast|6|6|Trample$Landfall Whenever a land enters the battlefield under your control, you may put a 4/4 green Beast creature token onto the battlefield.| Comet Storm|Prerelease Events|43|Special|{X}{R}{R}|Instant|||Multikicker {1} (You may pay an additional {1} any number of times as you cast this spell.)$Choose target creature or player, then choose another target creature or player for each time Comet Storm was kicked. Comet Storm deals X damage to each of them.| Emrakul, the Aeons Torn|Prerelease Events|44|Special|{15}|Legendary Creature - Eldrazi|15|15|Emrakul, the Aeons Torn can't be countered.$When you cast Emrakul, take an extra turn after this one.$Flying, protection from colored spells, annihilator 6$When Emrakul is put into a graveyard from anywhere, its owner shuffles his or her graveyard into his or her library.| Sun Titan|Prerelease Events|45|Special|{4}{W}{W}|Creature - Giant|6|6|Vigilance$Whenever Sun Titan enters the battlefield or attacks, you may return target permanent card with converted mana cost 3 or less from your graveyard to the battlefield.| @@ -25651,7 +25651,7 @@ Grove of the Guardian|Prerelease Events|59|Special||Land|||{T}: Add {1} to your Consuming Aberration|Prerelease Events|60|Special|{3}{U}{B}|Creature - Horror|*|*|Consuming Aberration's power and toughness are each equal to the number of cards in your opponents' graveyards.$Whenever you cast a spell, each opponent reveals cards from the top of his or her library until he or she reveals a land card, then puts those cards into his or her graveyard.| Fathom Mage|Prerelease Events|61|Special|{2}{U}{G}|Creature - Human Wizard|1|1|Evolve (Whenever a creature enters the battlefield under your control, if that creature has greater power or toughness than this creature, put a +1/+1 counter on this creature.)$Whenever a +1/+1 counter is placed on Fathom Mage, you may draw a card.| Foundry Champion|Prerelease Events|62|Special|{4}{W}{R}|Creature - Elemental Soldier|4|4When Foundry Champion enters the battlefield, it deals damage to target creature or player equal to the number of creatures you control.${R}: Foundry Champion gets +1/+0 until end of turn.${W}: Foundry Champion gets +0/+1 until end of turn.| -Rubblehulk|Prerelease Events|63|Special|{4}{R}{G}|Creature - Elemental|*|*|Rubblehulk's power and toughness are each equal to the number of lands you control.$Bloodrush — {1}{R}{G}, Discard Rubblehulk: Target attacking creature gets +X/+X until end of turn, where X is the number of lands you control.| +Rubblehulk|Prerelease Events|63|Special|{4}{R}{G}|Creature - Elemental|*|*|Rubblehulk's power and toughness are each equal to the number of lands you control.$Bloodrush {1}{R}{G}, Discard Rubblehulk: Target attacking creature gets +X/+X until end of turn, where X is the number of lands you control.| Treasury Thrull|Prerelease Events|64|Special|{4}{W}{B}|Creature - Thrull|4|4|Extort (Whenever you cast a spell, you may pay {WB}. If you do, each opponent loses 1 life and you gain that much life.)$Whenever Treasury Thrull attacks, you may return target artifact, creature, or enchantment card from your graveyard to your hand.| Maze's End|Prerelease Events|65|Special||Land|||Maze's End enters the battlefield tapped.${T}: Add {1} to your mana pool.${3}, {T}, Return Maze's End to its owner's hand: Search your library for a Gate card, put it onto the battlefield, then shuffle your library. If you control ten or more Gates with different names, you win the game.| Plains|Prerelease Events|66|Special||Basic Land - Plains|||({T}: Add {W} to your mana pool.)| @@ -25660,15 +25660,15 @@ Celestial Archon|Prerelease Events|68|Special|{3}{W}{W}|Enchantment Creature - A Shipbreaker Kraken|Prerelease Events|69|Special|{4}{U}{U}|Creature - Kraken|6|6|{6}{U}{U}: Monstrosity 4. (If this creature isn't monstrous, put four +1/+1 counters on it and it becomes monstrous.)$When Shipbreaker Kraken becomes monstrous, tap up to four target creatures. Those creatures don't untap during their controllers' untap steps for as long as you control Shipbreaker Kraken.| Abhorrent Overlord|Prerelease Events|70|Special|{5}{B}{B}|Creature - Demon|6|6|Flying$When Abhorrent Overlord enters the battlefield, put a number of 1/1 black Harpy creature tokens with flying onto the battlefield equal to your devotion to black. (Each {B} in the mana costs of permanents you control counts toward your devotion to black.)$At the beginning of your upkeep, sacrifice a creature.| Ember Swallower|Prerelease Events|71|Special|{2}{R}{R}|Creature - Elemental|4|5|{5}{R}{R}: Monstrosity 3. (If this creature isn't monstrous, put three +1/+1 counters on it and it becomes monstrous.)$When Ember Swallower becomes monstrous, each player sacrifices three lands.| -Anthousa, Setessan Hero|Prerelease Events|72|Special|{3}{G}{G}|Legendary Creature - Human Warrior|4|5|Heroic — Whenever you cast a spell that targets Anthousa, Setessan Hero, up to three target lands you control each become 2/2 Warrior creatures until end of turn. They're still lands.| +Anthousa, Setessan Hero|Prerelease Events|72|Special|{3}{G}{G}|Legendary Creature - Human Warrior|4|5|Heroic Whenever you cast a spell that targets Anthousa, Setessan Hero, up to three target lands you control each become 2/2 Warrior creatures until end of turn. They're still lands.| Silent Sentinel|Prerelease Events|73|Special|{5}{W}{W}|Creature - Archon|4|6|Flying$Whenever Silent Sentinel attacks, you may return target enchantment card from your graveyard to the battlefield.| -Arbiter of the Ideal|Prerelease Events|74|Special|{4}{U}{U}|Creature - Sphinx|4|5|Flying$Inspired — Whenever Arbiter of the Ideal becomes untapped, reveal the top card of your library. If it's an artifact, creature, or land card, you may put it onto the battlefield with a manifestation counter on it. That permanent is an enchantment in addition to its other types.| +Arbiter of the Ideal|Prerelease Events|74|Special|{4}{U}{U}|Creature - Sphinx|4|5|Flying$Inspired Whenever Arbiter of the Ideal becomes untapped, reveal the top card of your library. If it's an artifact, creature, or land card, you may put it onto the battlefield with a manifestation counter on it. That permanent is an enchantment in addition to its other types.| Eater of Hope|Prerelease Events|75|Special|{5}{B}{B}|Creature - Demon|6|4|Flying${B}, Sacrifice another creature: Regenerate Eater of Hope.${2}{B}, Sacrifice two other creatures: Destroy target creature.| Forgestoker Dragon|Prerelease Events|76|Special|{4}{R}{R}|Creature - Dragon|5|4|Flying${1}{R}: Forgestoker Dragon deals 1 damage to target creature. That creature can't block this combat. Activate this ability only if Forgestoker Dragon is attacking.| Nessian Wilds Ravager|Prerelease Events|77|Special|{4}{G}{G}|Creature - Hydra|6|6|Tribute 6 (As this creature enters the battlefield, an opponent of your choice may place six +1/+1 counters on it.)$When Nessian Wilds Ravager enters the battlefield, if tribute wasn't paid, you may have Nessian Wilds Ravager fight another target creature. (Each deals damage equal to its power to the other.)| -Dawnbringer Charioteers|Prerelease Events|78|Special|{2}{W}{W}|Creature - Human Soldier|2|4|Flying, lifelink$Heroic — Whenever you cast a spell that targets Dawnbringer Charioteers, put a +1/+1 counter on Dawnbringer Charioteers.| +Dawnbringer Charioteers|Prerelease Events|78|Special|{2}{W}{W}|Creature - Human Soldier|2|4|Flying, lifelink$Heroic Whenever you cast a spell that targets Dawnbringer Charioteers, put a +1/+1 counter on Dawnbringer Charioteers.| Scourge of Fleets|Prerelease Events|79|Special|{5}{U}{U}|Creature - Kraken|6|6|When Scourge of Fleets enters the battlefield, return each creature your opponents control with toughness X or less to its owner's hand, where X is the number of Islands you control.| -Doomwake Giant|Prerelease Events|80|Special|{4}{B}|Enchantment Creature - Giant|4|6|Constellation — Whenever Doomwake Giant or another enchantment enters the battlefield under your control, creatures your opponents control get -1/-1 until end of turn.| +Doomwake Giant|Prerelease Events|80|Special|{4}{B}|Enchantment Creature - Giant|4|6|Constellation Whenever Doomwake Giant or another enchantment enters the battlefield under your control, creatures your opponents control get -1/-1 until end of turn.| Spawn of Thraxes|Prerelease Events|81|Special|{5}{R}{R}|Creature - Dragon|5|5|Flying$When Spawn of Thraxes enters the battlefield, it deals damage to target creature or player equal to the number of Mountains you control.| Heroes' Bane|Prerelease Events|82|Special|{3}{G}{G}|Creature - Hydra|0|0|Heroes' Bane enters the battlefield with four +1/+1 counters on it.${2}{G}{G}: Put X +1/+1 counters on Heroes' Bane, where X is its power.| Resolute Archangel|Prerelease Events|83|Special|{5}{W}{W}|Creature - Angel|4|4|Flying$When Resolute Archangel enters the battlefield, if your life total is less than your starting life total, it becomes equal to your starting life total.| @@ -26227,7 +26227,7 @@ Plains|Duel Decks: Elspeth vs. Kiora|30|L||Basic Land - Plains|||({T}: Add {W Plains|Duel Decks: Elspeth vs. Kiora|31|L||Basic Land - Plains|||({T}: Add {W} to your mana pool.)| Plains|Duel Decks: Elspeth vs. Kiora|32|L||Basic Land - Plains|||({T}: Add {W} to your mana pool.)| Plains|Duel Decks: Elspeth vs. Kiora|33|L||Basic Land - Plains|||({T}: Add {W} to your mana pool.)| -Kiora, the Crashing Wave|Duel Decks: Elspeth vs. Kiora|34|M|{2}{G}{U}|Planeswalker � Kiora|2|+1: Until your next turn, prevent all damage that would be dealt to and dealt by target permanent an opponent controls.$-1: Draw a card. You may play an additional land this turn.$-5: You get an emblem with "At the beginning of your end step, put a 9/9 blue Kraken creature token onto the battlefield."| +Kiora, the Crashing Wave|Duel Decks: Elspeth vs. Kiora|34|M|{2}{G}{U}|Planeswalker Kiora|2|+1: Until your next turn, prevent all damage that would be dealt to and dealt by target permanent an opponent controls.$-1: Draw a card. You may play an additional land this turn.$-5: You get an emblem with "At the beginning of your end step, put a 9/9 blue Kraken creature token onto the battlefield."| Accumulated Knowledge|Duel Decks: Elspeth vs. Kiora|35|C|{1}{U}|Instant|||Draw a card, then draw cards equal to the number of cards named Accumulated Knowledge in all graveyards.| AEtherize|Duel Decks: Elspeth vs. Kiora|36|U|{3}{U}|Instant|||Return all attacking creatures to their owner's hand.| Inkwell Leviathan|Duel Decks: Elspeth vs. Kiora|37|R|{7}{U}{U}|Artifact Creature - Leviathan|7|11|Islandwalk, trample$Shroud (This creature can't be the target of spells or abilities.)| @@ -26240,7 +26240,7 @@ Surrakar Banisher|Duel Decks: Elspeth vs. Kiora|43|C|{4}{U}|Creature - Surrakar| Whelming Wave|Duel Decks: Elspeth vs. Kiora|44|R|{2}{U}{U}|Sorcery|||Return all creatures to their owners' hands except for Krakens, Leviathans, Octopuses, and Serpents.| Explore|Duel Decks: Elspeth vs. Kiora|45|C|{1}{G}|Sorcery|||You may play an additional land this turn.$Draw a card.| Explosive Vegetation|Duel Decks: Elspeth vs. Kiora|46|U|{3}{G}|Sorcery|||Search your library for up to two basic land cards and put them onto the battlefield tapped. Then shuffle your library.| -Grazing Gladehart|Duel Decks: Elspeth vs. Kiora|47|C|{2}{G}|Creature - Antelope|2|2|Landfall — Whenever a land enters the battlefield under your control, you may gain 2 life.| +Grazing Gladehart|Duel Decks: Elspeth vs. Kiora|47|C|{2}{G}|Creature - Antelope|2|2|Landfall Whenever a land enters the battlefield under your control, you may gain 2 life.| Nessian Asp|Duel Decks: Elspeth vs. Kiora|48|C|{4}{G}|Creature - Snake|4|5|Reach${6}{G}: Monstrosity 4. (If this creature isn't monstrous, put four +1/+1 counters on it and it becomes monstrous.)| Netcaster Spider|Duel Decks: Elspeth vs. Kiora|49|C|{2}{G}|Creature - Spider|2|3|Reach (This creature can block creatures with flying.)$Whenever Netcaster Spider blocks a creature with flying, Netcaster Spider gets +2/+0 until end of turn.| Time to Feed|Duel Decks: Elspeth vs. Kiora|50|C|{2}{G}|Sorcery|||Choose target creature an opponent controls. When that creature dies this turn, you gain 3 life. Target creature you control fights that creature. (Each deals damage equal to its power to the other.)| @@ -26311,7 +26311,8 @@ Day of Judgment|Magic Player Rewards|49|Special|{2}{W}{W}|Sorcery|||Destroy all Brave the Elements|Magic Player Rewards|50|Special|{W}|Instant|||Choose a color. White creatures you control gain protection from the chosen color until end of turn.| Doom Blade|Magic Player Rewards|51|Special|{1}{B}|Instant|||Destroy target nonblack creature.| Treasure Hunt|Magic Player Rewards|52|Special|{1}{U}|Sorcery|||Reveal cards from the top of your library until you reveal a nonland card, then put all cards revealed this way into your hand.| -Searing Blaze|Magic Player Rewards|53|Special|{R}{R}|Instant|||Searing Blaze deals 1 damage to target player and 1 damage to target creature that player controls.$Landfall — If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player and 3 damage to that creature instead.| +Searing Blaze|Magic Player Rewards|53|Special|{R}{R}|Instant|||Searing Blaze deals 1 damage to target player and 1 damage to target creature that player controls.$Landfall If you had a land enter the battlefield under your control this turn, Searing Blaze deals 3 damage to that player and 3 damage to that creature instead.| +<<<<<<< HEAD Angelic Blessing|Tempest Remastered|1|C|{2}{W}|Sorcery|||Target creature gets +3/+3 and gains flying until end of turn.| Angelic Protector|Tempest Remastered|2|U|{3}{W}|Creature - Angel|2|2|Flying$Whenever Angelic Protector becomes the target of a spell or ability, Angelic Protector gets +0/+3 until end of turn.| @@ -26581,4 +26582,4 @@ Swamp|Tempest Remastered|261|L||Basic Land - Swamp|||B| Thalakos Lowlands|Tempest Remastered|246|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {W} or {U} to your mana pool. Thalakos Lowlands doesn't untap during your next untap step.| Vec Townships|Tempest Remastered|247|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {G} or {W} to your mana pool. Vec Townships doesn't untap during your next untap step.| Volrath's Stronghold|Tempest Remastered|248|M||Legendary Land|||{T}: Add {1} to your mana pool.${1}{B}, {T}: Put target creature card from your graveyard on top of your library.| -Wasteland|Tempest Remastered|249|R||Land|||{tap}: Add {1} to your mana pool.${tap}, Sacrifice Wasteland: Destroy target nonbasic land.| \ No newline at end of file +Wasteland|Tempest Remastered|249|R||Land|||{tap}: Add {1} to your mana pool.${tap}, Sacrifice Wasteland: Destroy target nonbasic land.| From 900d26365715891dbd7341963c96099cc1e9bf65 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Mon, 30 Mar 2015 23:06:32 -0500 Subject: [PATCH 010/175] Deleted Exalted Dragon (wrongly made with gen-simple-cards-by-set) --- .../src/mage/sets/exodus/ExaltedDragon.java | 65 ------------------- .../sets/tempestremastered/ExaltedDragon.java | 52 --------------- 2 files changed, 117 deletions(-) delete mode 100644 Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java delete mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java diff --git a/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java b/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java deleted file mode 100644 index f9831a815b..0000000000 --- a/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.exodus; - -import java.util.UUID; -import mage.MageInt; -import mage.abilities.keyword.FlyingAbility; -import mage.abilities.keyword.ExaltedAbility; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Rarity; - -/** - * - * @author fireshoes - */ -public class ExaltedDragon extends CardImpl { - - public ExaltedDragon(UUID ownerId) { - super(ownerId, 6, "Exalted Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{W}{W}"); - this.expansionSetCode = "EXO"; - this.subtype.add("Dragon"); - this.power = new MageInt(5); - this.toughness = new MageInt(5); - - // Flying - this.addAbility(FlyingAbility.getInstance()); - // Exalted Dragon can't attack unless you sacrifice a land. - this.addAbility(new ExaltedAbility()); - } - - public ExaltedDragon(final ExaltedDragon card) { - super(card); - } - - @Override - public ExaltedDragon copy() { - return new ExaltedDragon(this); - } -} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java b/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java deleted file mode 100644 index cb56fb0cc8..0000000000 --- a/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java +++ /dev/null @@ -1,52 +0,0 @@ -/* - * 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.tempestremastered; - -import java.util.UUID; - -/** - * - * @author fireshoes - */ -public class ExaltedDragon extends mage.sets.exodus.ExaltedDragon { - - public ExaltedDragon(UUID ownerId) { - super(ownerId); - this.cardNumber = 12; - this.expansionSetCode = "TPR"; - } - - public ExaltedDragon(final ExaltedDragon card) { - super(card); - } - - @Override - public ExaltedDragon copy() { - return new ExaltedDragon(this); - } -} From 4030d7d067a633c5a9c87d9cf64c76d5ad718d34 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Tue, 31 Mar 2015 03:14:57 -0300 Subject: [PATCH 011/175] - Added Breath of Darigaaz --- .../mage/sets/archenemy/BreathOfDarigaaz.java | 52 +++++++++++++ .../mage/sets/commander/BreathOfDarigaaz.java | 76 +++++++++++++++++++ .../mage/sets/invasion/BreathOfDarigaaz.java | 52 +++++++++++++ .../knightsvsdragons/BreathOfDarigaaz.java | 52 +++++++++++++ 4 files changed, 232 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/archenemy/BreathOfDarigaaz.java create mode 100644 Mage.Sets/src/mage/sets/commander/BreathOfDarigaaz.java create mode 100644 Mage.Sets/src/mage/sets/invasion/BreathOfDarigaaz.java create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/BreathOfDarigaaz.java diff --git a/Mage.Sets/src/mage/sets/archenemy/BreathOfDarigaaz.java b/Mage.Sets/src/mage/sets/archenemy/BreathOfDarigaaz.java new file mode 100644 index 0000000000..19857c0f07 --- /dev/null +++ b/Mage.Sets/src/mage/sets/archenemy/BreathOfDarigaaz.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.archenemy; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class BreathOfDarigaaz extends mage.sets.commander.BreathOfDarigaaz { + + public BreathOfDarigaaz(UUID ownerId) { + super(ownerId); + this.cardNumber = 31; + this.expansionSetCode = "ARC"; + } + + public BreathOfDarigaaz(final BreathOfDarigaaz card) { + super(card); + } + + @Override + public BreathOfDarigaaz copy() { + return new BreathOfDarigaaz(this); + } +} diff --git a/Mage.Sets/src/mage/sets/commander/BreathOfDarigaaz.java b/Mage.Sets/src/mage/sets/commander/BreathOfDarigaaz.java new file mode 100644 index 0000000000..ec5f86d074 --- /dev/null +++ b/Mage.Sets/src/mage/sets/commander/BreathOfDarigaaz.java @@ -0,0 +1,76 @@ +/* + * 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.commander; + +import java.util.UUID; +import mage.abilities.condition.common.KickedCondition; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.common.DamageEverythingEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.abilities.keyword.KickerAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; + +/** + * + * @author FenrisulfrX + */ +public class BreathOfDarigaaz extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); + + static { + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); + } + + public BreathOfDarigaaz(UUID ownerId) { + super(ownerId, 112, "Breath of Darigaaz", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{R}"); + this.expansionSetCode = "CMD"; + + // Kicker {2} + this.addAbility(new KickerAbility("{2}")); + + // Breath of Darigaaz deals 1 damage to each creature without flying and each player. If Breath of Darigaaz was kicked, it deals 4 damage to each creature without flying and each player instead. + this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new DamageEverythingEffect(4, filter), + new DamageEverythingEffect(1, filter), KickedCondition.getInstance(), + "{this} deals 1 damage to each creature without flying and each player. If {this} was kicked, it deals 4 damage to each creature without flying and each player instead.")); + } + + public BreathOfDarigaaz(final BreathOfDarigaaz card) { + super(card); + } + + @Override + public BreathOfDarigaaz copy() { + return new BreathOfDarigaaz(this); + } +} diff --git a/Mage.Sets/src/mage/sets/invasion/BreathOfDarigaaz.java b/Mage.Sets/src/mage/sets/invasion/BreathOfDarigaaz.java new file mode 100644 index 0000000000..8b76b34493 --- /dev/null +++ b/Mage.Sets/src/mage/sets/invasion/BreathOfDarigaaz.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.invasion; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class BreathOfDarigaaz extends mage.sets.commander.BreathOfDarigaaz { + + public BreathOfDarigaaz(UUID ownerId) { + super(ownerId); + this.cardNumber = 138; + this.expansionSetCode = "INV"; + } + + public BreathOfDarigaaz(final BreathOfDarigaaz card) { + super(card); + } + + @Override + public BreathOfDarigaaz copy() { + return new BreathOfDarigaaz(this); + } +} diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/BreathOfDarigaaz.java b/Mage.Sets/src/mage/sets/knightsvsdragons/BreathOfDarigaaz.java new file mode 100644 index 0000000000..234763f560 --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/BreathOfDarigaaz.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.knightsvsdragons; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class BreathOfDarigaaz extends mage.sets.commander.BreathOfDarigaaz { + + public BreathOfDarigaaz(UUID ownerId) { + super(ownerId); + this.cardNumber = 64; + this.expansionSetCode = "DDG"; + } + + public BreathOfDarigaaz(final BreathOfDarigaaz card) { + super(card); + } + + @Override + public BreathOfDarigaaz copy() { + return new BreathOfDarigaaz(this); + } +} From e2b5546afc81b1f84c9cee209035283c015b9c36 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 30 Mar 2015 23:45:14 -0300 Subject: [PATCH 012/175] - Added Benalish Lancer --- .../mage/sets/invasion/BenalishLancer.java | 78 +++++++++++++++++++ .../sets/knightsvsdragons/BenalishLancer.java | 52 +++++++++++++ 2 files changed, 130 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/invasion/BenalishLancer.java create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/BenalishLancer.java diff --git a/Mage.Sets/src/mage/sets/invasion/BenalishLancer.java b/Mage.Sets/src/mage/sets/invasion/BenalishLancer.java new file mode 100644 index 0000000000..7fc7d46ab0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/invasion/BenalishLancer.java @@ -0,0 +1,78 @@ +/* + * 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.invasion; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.condition.common.KickedCondition; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.abilities.keyword.KickerAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.counters.CounterType; + +/** + * + * @author FenrisulfrX + */ +public class BenalishLancer extends CardImpl { + + public BenalishLancer(UUID ownerId) { + super(ownerId, 7, "Benalish Lancer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}"); + this.expansionSetCode = "INV"; + this.subtype.add("Human"); + this.subtype.add("Knight"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Kicker {2}{W} + this.addAbility(new KickerAbility("{2}{W}")); + + // If Benalish Lancer was kicked, it enters the battlefield with two +1/+1 counters on it and with first strike. + Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), + KickedCondition.getInstance(), true, + "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with first strike.", ""); + ability.addEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance(), Duration.WhileOnBattlefield)); + this.addAbility(ability); + } + + public BenalishLancer(final BenalishLancer card) { + super(card); + } + + @Override + public BenalishLancer copy() { + return new BenalishLancer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/BenalishLancer.java b/Mage.Sets/src/mage/sets/knightsvsdragons/BenalishLancer.java new file mode 100644 index 0000000000..d9b88abbb4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/BenalishLancer.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.knightsvsdragons; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class BenalishLancer extends mage.sets.invasion.BenalishLancer { + + public BenalishLancer(UUID ownerId) { + super(ownerId); + this.cardNumber = 12; + this.expansionSetCode = "DDG"; + } + + public BenalishLancer(final BenalishLancer card) { + super(card); + } + + @Override + public BenalishLancer copy() { + return new BenalishLancer(this); + } +} From 61f9ad73e9853473e3c80e5674d9779934041d97 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Tue, 31 Mar 2015 01:17:44 -0500 Subject: [PATCH 013/175] [TPR] Added some additional white and blue Tempest Remastered cards --- .../src/mage/sets/exodus/KillerWhale.java | 52 ++++ .../src/mage/sets/exodus/PegasusStampede.java | 81 ++++++ .../mage/sets/exodus/ThalakosDrifters.java | 54 ++++ .../src/mage/sets/exodus/ThalakosScout.java | 52 ++++ .../sets/fatereforged/ShiftingLoyalties.java | 240 +++++++++--------- .../mage/sets/sorinvstibalt/FieldOfSouls.java | 52 ++++ .../src/mage/sets/stronghold/Conviction.java | 81 ++++++ .../mage/sets/stronghold/HammerheadShark.java | 52 ++++ .../src/mage/sets/stronghold/SpiritEnKor.java | 52 ++++ .../mage/sets/stronghold/WarriorEnKor.java | 52 ++++ Mage.Sets/src/mage/sets/tempest/Anoint.java | 65 +++++ .../src/mage/sets/tempest/FieldOfSouls.java | 52 ++++ .../src/mage/sets/tempest/MountedArchers.java | 52 ++++ .../src/mage/sets/tempest/Repentance.java | 52 ++++ .../src/mage/sets/tempest/SoltariLancer.java | 52 ++++ .../src/mage/sets/tempest/ThalakosSeer.java | 52 ++++ .../mage/sets/tempestremastered/Anoint.java | 52 ++++ .../sets/tempestremastered/Conviction.java | 52 ++++ .../sets/tempestremastered/FieldOfSouls.java | 71 ++++++ .../tempestremastered/HammerheadShark.java | 65 +++++ .../sets/tempestremastered/KillerWhale.java | 70 +++++ .../tempestremastered/MountedArchers.java | 72 ++++++ .../tempestremastered/PegasusStampede.java | 52 ++++ .../sets/tempestremastered/Repentance.java | 95 +++++++ .../sets/tempestremastered/SoltariLancer.java | 76 ++++++ .../sets/tempestremastered/SpiritEnKor.java | 121 +++++++++ .../tempestremastered/ThalakosDrifters.java | 67 +++++ .../sets/tempestremastered/ThalakosScout.java | 71 ++++++ .../sets/tempestremastered/ThalakosSeer.java | 68 +++++ .../sets/tempestremastered/WarriorEnKor.java | 118 +++++++++ .../mage/sets/vintagemasters/KillerWhale.java | 54 ++++ .../sets/vintagemasters/ThalakosDrifters.java | 52 ++++ 32 files changed, 2129 insertions(+), 120 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/exodus/KillerWhale.java create mode 100644 Mage.Sets/src/mage/sets/exodus/PegasusStampede.java create mode 100644 Mage.Sets/src/mage/sets/exodus/ThalakosDrifters.java create mode 100644 Mage.Sets/src/mage/sets/exodus/ThalakosScout.java create mode 100644 Mage.Sets/src/mage/sets/sorinvstibalt/FieldOfSouls.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/Conviction.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/HammerheadShark.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/SpiritEnKor.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/WarriorEnKor.java create mode 100644 Mage.Sets/src/mage/sets/tempest/Anoint.java create mode 100644 Mage.Sets/src/mage/sets/tempest/FieldOfSouls.java create mode 100644 Mage.Sets/src/mage/sets/tempest/MountedArchers.java create mode 100644 Mage.Sets/src/mage/sets/tempest/Repentance.java create mode 100644 Mage.Sets/src/mage/sets/tempest/SoltariLancer.java create mode 100644 Mage.Sets/src/mage/sets/tempest/ThalakosSeer.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Anoint.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Conviction.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FieldOfSouls.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/HammerheadShark.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/KillerWhale.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MountedArchers.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/PegasusStampede.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Repentance.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SoltariLancer.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpiritEnKor.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ThalakosDrifters.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ThalakosScout.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ThalakosSeer.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WarriorEnKor.java create mode 100644 Mage.Sets/src/mage/sets/vintagemasters/KillerWhale.java create mode 100644 Mage.Sets/src/mage/sets/vintagemasters/ThalakosDrifters.java diff --git a/Mage.Sets/src/mage/sets/exodus/KillerWhale.java b/Mage.Sets/src/mage/sets/exodus/KillerWhale.java new file mode 100644 index 0000000000..d680c1c17a --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/KillerWhale.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class KillerWhale extends mage.sets.tempestremastered.KillerWhale { + + public KillerWhale(UUID ownerId) { + super(ownerId); + this.cardNumber = 37; + this.expansionSetCode = "EXO"; + } + + public KillerWhale(final KillerWhale card) { + super(card); + } + + @Override + public KillerWhale copy() { + return new KillerWhale(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/PegasusStampede.java b/Mage.Sets/src/mage/sets/exodus/PegasusStampede.java new file mode 100644 index 0000000000..908aee2eb2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/PegasusStampede.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.exodus; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.keyword.BuybackAbility; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterControlledLandPermanent; +import mage.game.permanent.token.Token; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author fireshoes + */ +public class PegasusStampede extends CardImpl { + + public PegasusStampede(UUID ownerId) { + super(ownerId, 14, "Pegasus Stampede", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{W}"); + this.expansionSetCode = "EXO"; + + // Buyback-Sacrifice a land. + this.addAbility(new BuybackAbility(new SacrificeTargetCost(new TargetControlledPermanent(1,1, new FilterControlledLandPermanent(), true)))); + + // Put a 1/1 white Pegasus creature token with flying onto the battlefield. + this.getSpellAbility().addEffect(new CreateTokenEffect(new PegasusToken())); + } + + public PegasusStampede(final PegasusStampede card) { + super(card); + } + + @Override + public PegasusStampede copy() { + return new PegasusStampede(this); + } +} + +class PegasusToken extends Token { + + PegasusToken() { + super("Pegasus", "1/1 white Pegasus creature token with flying"); + cardType.add(CardType.CREATURE); + color.setWhite(true); + subtype.add("Pegasus"); + power = new MageInt(1); + toughness = new MageInt(1); + addAbility(FlyingAbility.getInstance()); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/exodus/ThalakosDrifters.java b/Mage.Sets/src/mage/sets/exodus/ThalakosDrifters.java new file mode 100644 index 0000000000..7af7154f67 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/ThalakosDrifters.java @@ -0,0 +1,54 @@ +/* + * 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.exodus; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ThalakosDrifters extends mage.sets.tempestremastered.ThalakosDrifters { + + public ThalakosDrifters(UUID ownerId) { + super(ownerId); + this.cardNumber = 47; + this.expansionSetCode = "EXO"; + this.rarity = Rarity.RARE; + } + + public ThalakosDrifters(final ThalakosDrifters card) { + super(card); + } + + @Override + public ThalakosDrifters copy() { + return new ThalakosDrifters(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/ThalakosScout.java b/Mage.Sets/src/mage/sets/exodus/ThalakosScout.java new file mode 100644 index 0000000000..00dde053ca --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/ThalakosScout.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ThalakosScout extends mage.sets.tempestremastered.ThalakosScout { + + public ThalakosScout(UUID ownerId) { + super(ownerId); + this.cardNumber = 48; + this.expansionSetCode = "EXO"; + } + + public ThalakosScout(final ThalakosScout card) { + super(card); + } + + @Override + public ThalakosScout copy() { + return new ThalakosScout(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fatereforged/ShiftingLoyalties.java b/Mage.Sets/src/mage/sets/fatereforged/ShiftingLoyalties.java index 591c89c465..30049ba806 100644 --- a/Mage.Sets/src/mage/sets/fatereforged/ShiftingLoyalties.java +++ b/Mage.Sets/src/mage/sets/fatereforged/ShiftingLoyalties.java @@ -1,120 +1,120 @@ -/* - * 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.fatereforged; - -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; -import mage.MageObject; -import mage.abilities.Ability; -import mage.abilities.effects.common.continuous.ExchangeControlTargetEffect; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Duration; -import mage.constants.Rarity; -import mage.filter.FilterPermanent; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.target.TargetPermanent; -import mage.util.CardUtil; - -/** - * - * @author LevelX2 - */ -public class ShiftingLoyalties extends CardImpl { - - public ShiftingLoyalties(UUID ownerId) { - super(ownerId, 51, "Shifting Loyalties", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{5}{U}"); - this.expansionSetCode = "FRF"; - - // Exchange control of two target permanents that share a card type. (Artifact, creature, enchantment, land, and planeswalker are card types.) - this.getSpellAbility().addEffect(new ExchangeControlTargetEffect(Duration.EndOfGame, "Exchange control of two target permanents that share a card type. (Artifact, creature, enchantment, land, and planeswalker are card types.)")); - this.getSpellAbility().addTarget(new TargetpermanentsThatShareCardType()); - - } - - public ShiftingLoyalties(final ShiftingLoyalties card) { - super(card); - } - - @Override - public ShiftingLoyalties copy() { - return new ShiftingLoyalties(this); - } -} - -class TargetpermanentsThatShareCardType extends TargetPermanent { - - public TargetpermanentsThatShareCardType() { - super(2, 2, new FilterPermanent(), false); - targetName = "permanents that share a card type"; - } - - public TargetpermanentsThatShareCardType(final TargetpermanentsThatShareCardType target) { - super(target); - } - - @Override - public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { - if (super.canTarget(controllerId, id, source, game)) { - if (!getTargets().isEmpty()) { - Permanent targetOne = game.getPermanent(getTargets().get(0)); - Permanent targetTwo = game.getPermanent(id); - if (targetOne == null || targetTwo == null) { - return false; - } - return CardUtil.shareTypes(targetOne, targetTwo); - } - return true; - } - return false; - } - - @Override - public boolean canChoose(UUID sourceId, UUID sourceControllerId, Game game) { - Set cardTypes = new HashSet<>(); - MageObject targetSource = game.getObject(sourceId); - for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game)) { - if (permanent.canBeTargetedBy(targetSource, sourceControllerId, game)) { - for (CardType cardType :permanent.getCardType()) { - if (cardTypes.contains(cardType)) { - return true; - } - } - cardTypes.addAll(permanent.getCardType()); - } - } - return false; - } - - @Override - public TargetpermanentsThatShareCardType copy() { - return new TargetpermanentsThatShareCardType(this); - } -} +/* + * 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.fatereforged; + +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.effects.common.continuous.ExchangeControlTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.filter.FilterPermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; +import mage.util.CardUtil; + +/** + * + * @author LevelX2 + */ +public class ShiftingLoyalties extends CardImpl { + + public ShiftingLoyalties(UUID ownerId) { + super(ownerId, 51, "Shifting Loyalties", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{5}{U}"); + this.expansionSetCode = "FRF"; + + // Exchange control of two target permanents that share a card type. (Artifact, creature, enchantment, land, and planeswalker are card types.) + this.getSpellAbility().addEffect(new ExchangeControlTargetEffect(Duration.EndOfGame, "Exchange control of two target permanents that share a card type. (Artifact, creature, enchantment, land, and planeswalker are card types.)")); + this.getSpellAbility().addTarget(new TargetPermanentsThatShareCardType()); + + } + + public ShiftingLoyalties(final ShiftingLoyalties card) { + super(card); + } + + @Override + public ShiftingLoyalties copy() { + return new ShiftingLoyalties(this); + } +} + +class TargetPermanentsThatShareCardType extends TargetPermanent { + + public TargetPermanentsThatShareCardType() { + super(2, 2, new FilterPermanent(), false); + targetName = "permanents that share a card type"; + } + + public TargetPermanentsThatShareCardType(final TargetPermanentsThatShareCardType target) { + super(target); + } + + @Override + public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { + if (super.canTarget(controllerId, id, source, game)) { + if (!getTargets().isEmpty()) { + Permanent targetOne = game.getPermanent(getTargets().get(0)); + Permanent targetTwo = game.getPermanent(id); + if (targetOne == null || targetTwo == null) { + return false; + } + return CardUtil.shareTypes(targetOne, targetTwo); + } + return true; + } + return false; + } + + @Override + public boolean canChoose(UUID sourceId, UUID sourceControllerId, Game game) { + Set cardTypes = new HashSet<>(); + MageObject targetSource = game.getObject(sourceId); + for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game)) { + if (permanent.canBeTargetedBy(targetSource, sourceControllerId, game)) { + for (CardType cardType :permanent.getCardType()) { + if (cardTypes.contains(cardType)) { + return true; + } + } + cardTypes.addAll(permanent.getCardType()); + } + } + return false; + } + + @Override + public TargetPermanentsThatShareCardType copy() { + return new TargetPermanentsThatShareCardType(this); + } +} diff --git a/Mage.Sets/src/mage/sets/sorinvstibalt/FieldOfSouls.java b/Mage.Sets/src/mage/sets/sorinvstibalt/FieldOfSouls.java new file mode 100644 index 0000000000..fd0d52ce71 --- /dev/null +++ b/Mage.Sets/src/mage/sets/sorinvstibalt/FieldOfSouls.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.sorinvstibalt; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class FieldOfSouls extends mage.sets.tempestremastered.FieldOfSouls { + + public FieldOfSouls(UUID ownerId) { + super(ownerId); + this.cardNumber = 30; + this.expansionSetCode = "DDK"; + } + + public FieldOfSouls(final FieldOfSouls card) { + super(card); + } + + @Override + public FieldOfSouls copy() { + return new FieldOfSouls(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/Conviction.java b/Mage.Sets/src/mage/sets/stronghold/Conviction.java new file mode 100644 index 0000000000..4cb431c480 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/Conviction.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.stronghold; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.ReturnToHandSourceEffect; +import mage.abilities.effects.common.continuous.BoostEnchantedEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.TargetPermanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class Conviction extends CardImpl { + + public Conviction(UUID ownerId) { + super(ownerId, 105, "Conviction", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{W}"); + this.expansionSetCode = "STH"; + this.subtype.add("Aura"); + + // Enchant creature + TargetPermanent auraTarget = new TargetCreaturePermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + + // Enchanted creature gets +1/+3. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, 3, Duration.WhileOnBattlefield))); + + // {W}: Return Conviction to its owner's hand. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(true), new ManaCostsImpl("U"))); + } + + public Conviction(final Conviction card) { + super(card); + } + + @Override + public Conviction copy() { + return new Conviction(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/HammerheadShark.java b/Mage.Sets/src/mage/sets/stronghold/HammerheadShark.java new file mode 100644 index 0000000000..e65c0d412d --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/HammerheadShark.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class HammerheadShark extends mage.sets.tempestremastered.HammerheadShark { + + public HammerheadShark(UUID ownerId) { + super(ownerId); + this.cardNumber = 32; + this.expansionSetCode = "STH"; + } + + public HammerheadShark(final HammerheadShark card) { + super(card); + } + + @Override + public HammerheadShark copy() { + return new HammerheadShark(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/SpiritEnKor.java b/Mage.Sets/src/mage/sets/stronghold/SpiritEnKor.java new file mode 100644 index 0000000000..cde2cd64b8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/SpiritEnKor.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpiritEnKor extends mage.sets.tempestremastered.SpiritEnKor { + + public SpiritEnKor(UUID ownerId) { + super(ownerId); + this.cardNumber = 119; + this.expansionSetCode = "STH"; + } + + public SpiritEnKor(final SpiritEnKor card) { + super(card); + } + + @Override + public SpiritEnKor copy() { + return new SpiritEnKor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/WarriorEnKor.java b/Mage.Sets/src/mage/sets/stronghold/WarriorEnKor.java new file mode 100644 index 0000000000..a6eaf993d4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/WarriorEnKor.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WarriorEnKor extends mage.sets.tempestremastered.WarriorEnKor { + + public WarriorEnKor(UUID ownerId) { + super(ownerId); + this.cardNumber = 124; + this.expansionSetCode = "STH"; + } + + public WarriorEnKor(final WarriorEnKor card) { + super(card); + } + + @Override + public WarriorEnKor copy() { + return new WarriorEnKor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/Anoint.java b/Mage.Sets/src/mage/sets/tempest/Anoint.java new file mode 100644 index 0000000000..1cd7500a01 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/Anoint.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.tempest; + +import java.util.UUID; +import mage.abilities.effects.common.PreventDamageToTargetEffect; +import mage.abilities.keyword.BuybackAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class Anoint extends CardImpl { + + public Anoint(UUID ownerId) { + super(ownerId, 215, "Anoint", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{W}"); + this.expansionSetCode = "TMP"; + + // Buyback {3} + this.addAbility(new BuybackAbility("{3}")); + + // Prevent the next 3 damage that would be dealt to target creature this turn. + this.getSpellAbility().addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn, 3)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public Anoint(final Anoint card) { + super(card); + } + + @Override + public Anoint copy() { + return new Anoint(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/FieldOfSouls.java b/Mage.Sets/src/mage/sets/tempest/FieldOfSouls.java new file mode 100644 index 0000000000..2bf3ac43a5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/FieldOfSouls.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class FieldOfSouls extends mage.sets.tempestremastered.FieldOfSouls { + + public FieldOfSouls(UUID ownerId) { + super(ownerId); + this.cardNumber = 230; + this.expansionSetCode = "TMP"; + } + + public FieldOfSouls(final FieldOfSouls card) { + super(card); + } + + @Override + public FieldOfSouls copy() { + return new FieldOfSouls(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/MountedArchers.java b/Mage.Sets/src/mage/sets/tempest/MountedArchers.java new file mode 100644 index 0000000000..5c1348f4d4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/MountedArchers.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MountedArchers extends mage.sets.tempestremastered.MountedArchers { + + public MountedArchers(UUID ownerId) { + super(ownerId); + this.cardNumber = 242; + this.expansionSetCode = "TMP"; + } + + public MountedArchers(final MountedArchers card) { + super(card); + } + + @Override + public MountedArchers copy() { + return new MountedArchers(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/Repentance.java b/Mage.Sets/src/mage/sets/tempest/Repentance.java new file mode 100644 index 0000000000..1597a79963 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/Repentance.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Repentance extends mage.sets.tempestremastered.Repentance { + + public Repentance(UUID ownerId) { + super(ownerId); + this.cardNumber = 249; + this.expansionSetCode = "TMP"; + } + + public Repentance(final Repentance card) { + super(card); + } + + @Override + public Repentance copy() { + return new Repentance(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/SoltariLancer.java b/Mage.Sets/src/mage/sets/tempest/SoltariLancer.java new file mode 100644 index 0000000000..cddc2574bd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/SoltariLancer.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SoltariLancer extends mage.sets.tempestremastered.SoltariLancer { + + public SoltariLancer(UUID ownerId) { + super(ownerId); + this.cardNumber = 256; + this.expansionSetCode = "TMP"; + } + + public SoltariLancer(final SoltariLancer card) { + super(card); + } + + @Override + public SoltariLancer copy() { + return new SoltariLancer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/ThalakosSeer.java b/Mage.Sets/src/mage/sets/tempest/ThalakosSeer.java new file mode 100644 index 0000000000..b8577d2491 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/ThalakosSeer.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ThalakosSeer extends mage.sets.tempestremastered.ThalakosSeer { + + public ThalakosSeer(UUID ownerId) { + super(ownerId); + this.cardNumber = 94; + this.expansionSetCode = "TMP"; + } + + public ThalakosSeer(final ThalakosSeer card) { + super(card); + } + + @Override + public ThalakosSeer copy() { + return new ThalakosSeer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Anoint.java b/Mage.Sets/src/mage/sets/tempestremastered/Anoint.java new file mode 100644 index 0000000000..6c7dd5c5ef --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Anoint.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Anoint extends mage.sets.tempest.Anoint { + + public Anoint(UUID ownerId) { + super(ownerId); + this.cardNumber = 3; + this.expansionSetCode = "TPR"; + } + + public Anoint(final Anoint card) { + super(card); + } + + @Override + public Anoint copy() { + return new Anoint(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Conviction.java b/Mage.Sets/src/mage/sets/tempestremastered/Conviction.java new file mode 100644 index 0000000000..f859f92afb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Conviction.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Conviction extends mage.sets.stronghold.Conviction { + + public Conviction(UUID ownerId) { + super(ownerId); + this.cardNumber = 10; + this.expansionSetCode = "TPR"; + } + + public Conviction(final Conviction card) { + super(card); + } + + @Override + public Conviction copy() { + return new Conviction(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FieldOfSouls.java b/Mage.Sets/src/mage/sets/tempestremastered/FieldOfSouls.java new file mode 100644 index 0000000000..b74ed27145 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FieldOfSouls.java @@ -0,0 +1,71 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.abilities.common.DiesCreatureTriggeredAbility; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.other.OwnerPredicate; +import mage.filter.predicate.permanent.TokenPredicate; +import mage.game.permanent.token.SpiritWhiteToken; + +/** + * + * @author fireshoes + */ +public class FieldOfSouls extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("nontoken creature"); + static{ + filter.add(new OwnerPredicate(TargetController.YOU)); + filter.add(Predicates.not(new TokenPredicate())); + } + + public FieldOfSouls(UUID ownerId) { + super(ownerId, 13, "Field of Souls", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{2}{W}{W}"); + this.expansionSetCode = "TPR"; + + // Whenever a nontoken creature is put into your graveyard from the battlefield, put a 1/1 white Spirit creature token with flying onto the battlefield. + this.addAbility(new DiesCreatureTriggeredAbility(new CreateTokenEffect(new SpiritWhiteToken("KTK")), false, filter)); + } + + public FieldOfSouls(final FieldOfSouls card) { + super(card); + } + + @Override + public FieldOfSouls copy() { + return new FieldOfSouls(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/HammerheadShark.java b/Mage.Sets/src/mage/sets/tempestremastered/HammerheadShark.java new file mode 100644 index 0000000000..de5e7e1db2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/HammerheadShark.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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.combat.CantAttackUnlessDefenderControllsPermanent; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterLandPermanent; + +/** + * + * @author fireshoes + */ +public class HammerheadShark extends CardImpl { + + public HammerheadShark(UUID ownerId) { + super(ownerId, 52, "Hammerhead Shark", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{U}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Fish"); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // Hammerhead Shark can't attack unless defending player controls an Island. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackUnlessDefenderControllsPermanent(new FilterLandPermanent("Island","an Island")))); + } + + public HammerheadShark(final HammerheadShark card) { + super(card); + } + + @Override + public HammerheadShark copy() { + return new HammerheadShark(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/KillerWhale.java b/Mage.Sets/src/mage/sets/tempestremastered/KillerWhale.java new file mode 100644 index 0000000000..2c69711058 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/KillerWhale.java @@ -0,0 +1,70 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class KillerWhale extends CardImpl { + + public KillerWhale(UUID ownerId) { + super(ownerId, 55, "Killer Whale", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{U}{U}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Whale"); + this.power = new MageInt(3); + this.toughness = new MageInt(5); + + // {U}: Killer Whale gains flying until end of turn. + this.addAbility(new SimpleActivatedAbility( + Zone.BATTLEFIELD, + new GainAbilitySourceEffect(FlyingAbility.getInstance(), Duration.EndOfTurn), + new ManaCostsImpl("U"))); + } + + public KillerWhale(final KillerWhale card) { + super(card); + } + + @Override + public KillerWhale copy() { + return new KillerWhale(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MountedArchers.java b/Mage.Sets/src/mage/sets/tempestremastered/MountedArchers.java new file mode 100644 index 0000000000..29c7169aa2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MountedArchers.java @@ -0,0 +1,72 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.combat.CanBlockAdditionalCreatureEffect; +import mage.abilities.keyword.ReachAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class MountedArchers extends CardImpl { + + public MountedArchers(UUID ownerId) { + super(ownerId, 19, "Mounted Archers", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{W}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Human"); + this.subtype.add("Soldier"); + this.subtype.add("Archer"); + this.power = new MageInt(2); + this.toughness = new MageInt(3); + + // Reach + this.addAbility(ReachAbility.getInstance()); + + // {W}: Mounted Archers can block an additional creature this turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new CanBlockAdditionalCreatureEffect(Duration.EndOfTurn, 1), new ManaCostsImpl("{W}"))); + } + + public MountedArchers(final MountedArchers card) { + super(card); + } + + @Override + public MountedArchers copy() { + return new MountedArchers(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/PegasusStampede.java b/Mage.Sets/src/mage/sets/tempestremastered/PegasusStampede.java new file mode 100644 index 0000000000..65df872800 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/PegasusStampede.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class PegasusStampede extends mage.sets.exodus.PegasusStampede { + + public PegasusStampede(UUID ownerId) { + super(ownerId); + this.cardNumber = 24; + this.expansionSetCode = "TPR"; + } + + public PegasusStampede(final PegasusStampede card) { + super(card); + } + + @Override + public PegasusStampede copy() { + return new PegasusStampede(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Repentance.java b/Mage.Sets/src/mage/sets/tempestremastered/Repentance.java new file mode 100644 index 0000000000..2b29dce4d7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Repentance.java @@ -0,0 +1,95 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +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.players.Player; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class Repentance extends CardImpl { + + public Repentance(UUID ownerId) { + super(ownerId, 25, "Repentance", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{2}{W}"); + this.expansionSetCode = "TPR"; + + // Target creature deals damage to itself equal to its power. + this.getSpellAbility().addEffect(new RepentanceEffect()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public Repentance(final Repentance card) { + super(card); + } + + @Override + public Repentance copy() { + return new Repentance(this); + } +} + +class RepentanceEffect extends OneShotEffect { + + public RepentanceEffect() { + super(Outcome.Damage); + this.staticText = "Target creature deals damage to itself equal to its power"; + } + + public RepentanceEffect(final RepentanceEffect effect) { + super(effect); + } + + @Override + public RepentanceEffect copy() { + return new RepentanceEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Permanent targetCreature = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (targetCreature != null) { + targetCreature.damage(targetCreature.getPower().getValue(), source.getSourceId(), game, false, true); + } + return true; + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SoltariLancer.java b/Mage.Sets/src/mage/sets/tempestremastered/SoltariLancer.java new file mode 100644 index 0000000000..45b9b6bde0 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SoltariLancer.java @@ -0,0 +1,76 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.common.SourceMatchesFilterCondition; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.keyword.FirstStrikeAbility; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterAttackingCreature; + +/** + * + * @author fireshoes + */ +public class SoltariLancer extends CardImpl { + + private static final String rule = "Spirit of the Night has first strike as long as it's attacking"; + + public SoltariLancer(UUID ownerId) { + super(ownerId, 30, "Soltari Lancer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{W}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Soltari"); + this.subtype.add("Knight"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Shadow + this.addAbility(ShadowAbility.getInstance()); + + // Soltari Lancer has first strike as long as it's attacking. + ConditionalContinuousEffect effect = new ConditionalContinuousEffect(new GainAbilitySourceEffect(FirstStrikeAbility.getInstance()), new SourceMatchesFilterCondition(new FilterAttackingCreature()), rule); + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, effect)); + } + + public SoltariLancer(final SoltariLancer card) { + super(card); + } + + @Override + public SoltariLancer copy() { + return new SoltariLancer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpiritEnKor.java b/Mage.Sets/src/mage/sets/tempestremastered/SpiritEnKor.java new file mode 100644 index 0000000000..e07c177ea7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpiritEnKor.java @@ -0,0 +1,121 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.PreventionEffectData; +import mage.abilities.effects.PreventionEffectImpl; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.DamageEvent; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.target.common.TargetControlledCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class SpiritEnKor extends CardImpl { + + public SpiritEnKor(UUID ownerId) { + super(ownerId, 34, "Spirit en-Kor", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{W}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Kor"); + this.subtype.add("Spirit"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // {0}: The next 1 damage that would be dealt to Spirit en-Kor this turn is dealt to target creature you control instead. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SpiritEnKorPreventionEffect(), new GenericManaCost(0)); + ability.addTarget(new TargetControlledCreaturePermanent()); + this.addAbility(ability); + } + + public SpiritEnKor(final SpiritEnKor card) { + super(card); + } + + @Override + public SpiritEnKor copy() { + return new SpiritEnKor(this); + } +} + +class SpiritEnKorPreventionEffect extends PreventionEffectImpl { + + SpiritEnKorPreventionEffect() { + super(Duration.EndOfTurn, 1, false); + staticText = "The next 1 damage that would be dealt to {this} this turn is dealt to target creature you control instead."; + } + + SpiritEnKorPreventionEffect(final SpiritEnKorPreventionEffect effect) { + super(effect); + } + + @Override + public SpiritEnKorPreventionEffect copy() { + return new SpiritEnKorPreventionEffect(this); + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + PreventionEffectData preventionResult = preventDamageAction(event, source, game); + if (preventionResult.getPreventedDamage() > 0) { + Permanent redirectTo = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (redirectTo != null) { + game.informPlayers("Dealing " + preventionResult.getPreventedDamage() + " to " + redirectTo.getName() + " instead."); + DamageEvent damageEvent = (DamageEvent) event; + redirectTo.damage(preventionResult.getPreventedDamage(), event.getSourceId(), game, damageEvent.isCombatDamage(), damageEvent.isPreventable(), event.getAppliedEffects()); + } + } + return false; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (!this.used && super.applies(event, source, game)) { + if (event.getTargetId().equals(source.getSourceId())) { + return game.getPermanent(getTargetPointer().getFirst(game, source)) != null; + } + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ThalakosDrifters.java b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosDrifters.java new file mode 100644 index 0000000000..2bbe7a016b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosDrifters.java @@ -0,0 +1,67 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class ThalakosDrifters extends CardImpl { + + public ThalakosDrifters(UUID ownerId) { + super(ownerId, 70, "Thalakos Drifters", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{U}{U}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Thalakos"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Discard a card: Thalakos Drifters gains shadow until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new GainAbilitySourceEffect(ShadowAbility.getInstance(), Duration.EndOfTurn), new DiscardCardCost())); + } + + public ThalakosDrifters(final ThalakosDrifters card) { + super(card); + } + + @Override + public ThalakosDrifters copy() { + return new ThalakosDrifters(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ThalakosScout.java b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosScout.java new file mode 100644 index 0000000000..77d05f30e5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosScout.java @@ -0,0 +1,71 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.effects.common.ReturnToHandSourceEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class ThalakosScout extends CardImpl { + + public ThalakosScout(UUID ownerId) { + super(ownerId, 71, "Thalakos Scout", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{U}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Thalakos"); + this.subtype.add("Soldier"); + this.subtype.add("Scout"); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + // Shadow + this.addAbility(ShadowAbility.getInstance()); + + // Discard a card: Return Thalakos Scout to its owner's hand. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new ReturnToHandSourceEffect(), new DiscardCardCost())); + } + + public ThalakosScout(final ThalakosScout card) { + super(card); + } + + @Override + public ThalakosScout copy() { + return new ThalakosScout(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ThalakosSeer.java b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosSeer.java new file mode 100644 index 0000000000..27874975b1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ThalakosSeer.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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.LeavesBattlefieldTriggeredAbility; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ThalakosSeer extends CardImpl { + + public ThalakosSeer(UUID ownerId) { + super(ownerId, 72, "Thalakos Seer", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{U}{U}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Thalakos"); + this.subtype.add("Wizard"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Shadow + this.addAbility(ShadowAbility.getInstance()); + + // When Thalakos Seer leaves the battlefield, draw a card. + this.addAbility(new LeavesBattlefieldTriggeredAbility(new DrawCardSourceControllerEffect(1), false)); + } + + public ThalakosSeer(final ThalakosSeer card) { + super(card); + } + + @Override + public ThalakosSeer copy() { + return new ThalakosSeer(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WarriorEnKor.java b/Mage.Sets/src/mage/sets/tempestremastered/WarriorEnKor.java new file mode 100644 index 0000000000..4d991b1b1f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WarriorEnKor.java @@ -0,0 +1,118 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.PreventionEffectData; +import mage.abilities.effects.PreventionEffectImpl; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.DamageEvent; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.target.common.TargetControlledCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class WarriorEnKor extends CardImpl { + + public WarriorEnKor(UUID ownerId) { + super(ownerId, 39, "Warrior en-Kor", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{W}{W}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Kor"); + this.subtype.add("Warrior"); + this.subtype.add("Knight"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // {0}: The next 1 damage that would be dealt to Warrior en-Kor this turn is dealt to target creature you control instead. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new WarriorEnKorPreventionEffect(), new GenericManaCost(0)); + ability.addTarget(new TargetControlledCreaturePermanent()); + this.addAbility(ability); + } + + public WarriorEnKor(final WarriorEnKor card) { + super(card); + } + + @Override + public WarriorEnKor copy() { + return new WarriorEnKor(this); + } +} + +class WarriorEnKorPreventionEffect extends PreventionEffectImpl { + + WarriorEnKorPreventionEffect() { + super(Duration.EndOfTurn, 1, false); + staticText = "The next 1 damage that would be dealt to {this} this turn is dealt to target creature you control instead."; + } + + WarriorEnKorPreventionEffect(final WarriorEnKorPreventionEffect effect) { + super(effect); + } + + @Override + public WarriorEnKorPreventionEffect copy() { + return new WarriorEnKorPreventionEffect(this); + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + PreventionEffectData preventionResult = preventDamageAction(event, source, game); + if (preventionResult.getPreventedDamage() > 0) { + Permanent redirectTo = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (redirectTo != null) { + game.informPlayers("Dealing " + preventionResult.getPreventedDamage() + " to " + redirectTo.getName() + " instead."); + DamageEvent damageEvent = (DamageEvent) event; + redirectTo.damage(preventionResult.getPreventedDamage(), event.getSourceId(), game, damageEvent.isCombatDamage(), damageEvent.isPreventable(), event.getAppliedEffects()); + } + } + return false; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (!this.used && super.applies(event, source, game)) { + if (event.getTargetId().equals(source.getSourceId())) { + return game.getPermanent(getTargetPointer().getFirst(game, source)) != null; + } + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/vintagemasters/KillerWhale.java b/Mage.Sets/src/mage/sets/vintagemasters/KillerWhale.java new file mode 100644 index 0000000000..de5c3264b6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/vintagemasters/KillerWhale.java @@ -0,0 +1,54 @@ +/* + * 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.vintagemasters; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class KillerWhale extends mage.sets.tempestremastered.KillerWhale { + + public KillerWhale(UUID ownerId) { + super(ownerId); + this.cardNumber = 76; + this.expansionSetCode = "VMA"; + this.rarity = Rarity.COMMON; + } + + public KillerWhale(final KillerWhale card) { + super(card); + } + + @Override + public KillerWhale copy() { + return new KillerWhale(this); + } +} diff --git a/Mage.Sets/src/mage/sets/vintagemasters/ThalakosDrifters.java b/Mage.Sets/src/mage/sets/vintagemasters/ThalakosDrifters.java new file mode 100644 index 0000000000..5e6ff29627 --- /dev/null +++ b/Mage.Sets/src/mage/sets/vintagemasters/ThalakosDrifters.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.vintagemasters; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ThalakosDrifters extends mage.sets.tempestremastered.ThalakosDrifters { + + public ThalakosDrifters(UUID ownerId) { + super(ownerId); + this.cardNumber = 97; + this.expansionSetCode = "VMA"; + } + + public ThalakosDrifters(final ThalakosDrifters card) { + super(card); + } + + @Override + public ThalakosDrifters copy() { + return new ThalakosDrifters(this); + } +} From 5dc6f1a7c4cbb8d57985bcd25fd21efc520d0a1d Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 31 Mar 2015 09:19:22 +0200 Subject: [PATCH 014/175] * Arashin Sovereign - Fixed that the player had no option to let the card go to the graveyard. --- Mage.Sets/src/mage/sets/dragonsoftarkir/ArashinSovereign.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/ArashinSovereign.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/ArashinSovereign.java index bf6814cea5..a34bc3eac6 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/ArashinSovereign.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/ArashinSovereign.java @@ -59,7 +59,7 @@ public class ArashinSovereign extends CardImpl { this.addAbility(FlyingAbility.getInstance()); // When Arashin Sovereign dies, you may put it on the top or bottom of its owner's library. - this.addAbility(new DiesTriggeredAbility(new ArashinSovereignEffect())); + this.addAbility(new DiesTriggeredAbility(new ArashinSovereignEffect(), true)); } public ArashinSovereign(final ArashinSovereign card) { From a878d4879bf2dc2af7f53f0156bc36130c4a6bf1 Mon Sep 17 00:00:00 2001 From: betasteward Date: Tue, 31 Mar 2015 09:44:22 -0400 Subject: [PATCH 015/175] added optimization for simulations - don't construct Strings for messages that will never be used --- Mage/src/mage/abilities/AbilityImpl.java | 18 +-- .../costs/common/ExileFromStackCost.java | 2 +- .../costs/common/RemoveCounterCost.java | 3 +- .../abilities/effects/ContinuousEffects.java | 4 +- .../PlaneswalkerRedirectionEffect.java | 3 +- .../CastCardFromOutsideTheGameEffect.java | 6 +- .../effects/common/ChooseColorEffect.java | 3 +- .../common/ChooseCreatureTypeEffect.java | 3 +- .../effects/common/ChooseModeEffect.java | 3 +- .../effects/common/CipherEffect.java | 3 +- .../abilities/effects/common/ClashEffect.java | 23 ++-- .../effects/common/CopyTargetSpellEffect.java | 3 +- .../effects/common/DetainAllEffect.java | 3 +- .../effects/common/DetainTargetEffect.java | 10 +- .../effects/common/DevourEffect.java | 3 +- .../common/DoUnlessAnyPlayerPaysEffect.java | 3 +- .../effects/common/EndTurnEffect.java | 3 +- .../common/FightTargetSourceEffect.java | 3 +- .../effects/common/FightTargetsEffect.java | 3 +- .../effects/common/FlipSourceEffect.java | 3 +- .../effects/common/HideawayPlayEffect.java | 2 +- .../LookLibraryAndPickControllerEffect.java | 3 +- .../effects/common/NameACardEffect.java | 3 +- .../effects/common/PopulateEffect.java | 3 +- ...reventDamageToTargetMultiAmountEffect.java | 17 +-- .../PutTokenOntoBattlefieldCopySource.java | 10 +- .../effects/common/ReturnFromExileEffect.java | 6 +- .../ReturnFromExileForSourceEffect.java | 3 +- .../effects/common/TransformSourceEffect.java | 10 +- .../BecomesColorOrColorsTargetEffect.java | 3 +- .../continuous/BecomesColorTargetEffect.java | 3 +- .../CommanderReplacementEffect.java | 6 +- .../GainProtectionFromColorTargetEffect.java | 2 +- .../common/counter/AddCountersAllEffect.java | 3 +- .../counter/AddCountersSourceEffect.java | 6 +- .../counter/AddCountersTargetEffect.java | 6 +- .../counter/RemoveCounterSourceEffect.java | 6 +- .../counter/RemoveCounterTargetEffect.java | 6 +- .../SearchLibraryPutOnLibraryEffect.java | 2 +- .../abilities/keyword/ConspireAbility.java | 3 +- .../abilities/keyword/ConvokeAbility.java | 3 +- .../mage/abilities/keyword/DredgeAbility.java | 3 +- .../mage/abilities/keyword/ExtortAbility.java | 3 +- .../abilities/keyword/FlashbackAbility.java | 3 +- .../mage/abilities/keyword/GraftAbility.java | 6 +- .../mage/abilities/keyword/HauntAbility.java | 3 +- .../mage/abilities/keyword/KickerAbility.java | 3 +- .../abilities/keyword/ReplicateAbility.java | 3 +- .../mage/abilities/keyword/StormAbility.java | 3 +- .../abilities/keyword/SunburstAbility.java | 9 +- .../abilities/keyword/SuspendAbility.java | 3 +- .../abilities/keyword/TributeAbility.java | 6 +- .../abilities/keyword/UnleashAbility.java | 3 +- Mage/src/mage/actions/MageLoseGameAction.java | 3 +- Mage/src/mage/game/GameImpl.java | 20 +-- Mage/src/mage/game/combat/Combat.java | 29 ++-- Mage/src/mage/game/combat/CombatGroup.java | 9 +- .../mage/game/permanent/PermanentImpl.java | 34 +++-- Mage/src/mage/game/permanent/token/Token.java | 3 +- Mage/src/mage/game/stack/Spell.java | 10 +- Mage/src/mage/game/stack/SpellStack.java | 5 +- Mage/src/mage/game/stack/StackAbility.java | 3 +- Mage/src/mage/game/turn/Turn.java | 2 +- Mage/src/mage/players/PlayerImpl.java | 130 ++++++++++-------- Mage/src/mage/target/TargetSource.java | 2 +- .../watchers/common/CommanderInfoWatcher.java | 3 +- .../mage/watchers/common/SoulbondWatcher.java | 6 +- 67 files changed, 313 insertions(+), 205 deletions(-) diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 02c4c47192..27182e37db 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -312,7 +312,7 @@ public abstract class AbilityImpl implements Ability { sourceObject.adjustTargets(this, game); } if (getTargets().size() > 0 && getTargets().chooseTargets(getEffects().get(0).getOutcome(), this.controllerId, this, game) == false) { - if (variableManaCost != null || announceString != null) { + if ((variableManaCost != null || announceString != null) && !game.isSimulation()) { game.informPlayer(controller, new StringBuilder(sourceObject != null ? sourceObject.getLogName(): "").append(": no valid targets with this value of X").toString()); } return false; // when activation of ability is canceled during target selection @@ -370,13 +370,15 @@ public abstract class AbilityImpl implements Ability { logger.debug("activate failed - non mana costs"); return false; } - // inform about x costs now, so canceled announcements are not shown in the log - if (announceString != null) { - game.informPlayers(announceString); - } - if (variableManaCost != null) { - int xValue = getManaCostsToPay().getX(); - game.informPlayers(new StringBuilder(controller.getName()).append(" announces a value of ").append(xValue).append(" for ").append(variableManaCost.getText()).toString()); + if (!game.isSimulation()) { + // inform about x costs now, so canceled announcements are not shown in the log + if (announceString != null) { + game.informPlayers(announceString); + } + if (variableManaCost != null) { + int xValue = getManaCostsToPay().getX(); + game.informPlayers(new StringBuilder(controller.getName()).append(" announces a value of ").append(xValue).append(" for ").append(variableManaCost.getText()).toString()); + } } activated = true; // fire if tapped for mana (may only fire now because else costs of ability itself can be payed with mana of abilities that trigger for that event diff --git a/Mage/src/mage/abilities/costs/common/ExileFromStackCost.java b/Mage/src/mage/abilities/costs/common/ExileFromStackCost.java index b90316a980..0ab5b115cb 100644 --- a/Mage/src/mage/abilities/costs/common/ExileFromStackCost.java +++ b/Mage/src/mage/abilities/costs/common/ExileFromStackCost.java @@ -63,7 +63,7 @@ public class ExileFromStackCost extends CostImpl { return false; } paid |= spellToExile.moveToExile(null, "", ability.getSourceId(), game); - if (paid) { + if (paid && !game.isSimulation()) { game.informPlayers(player.getName() + " exiles " + spellToExile.getName() +" (as costs)"); } } diff --git a/Mage/src/mage/abilities/costs/common/RemoveCounterCost.java b/Mage/src/mage/abilities/costs/common/RemoveCounterCost.java index fbccc5cf31..bdffc9255c 100644 --- a/Mage/src/mage/abilities/costs/common/RemoveCounterCost.java +++ b/Mage/src/mage/abilities/costs/common/RemoveCounterCost.java @@ -130,7 +130,8 @@ public class RemoveCounterCost extends CostImpl { permanent.getCounters().removeCounter(counterName); } countersRemoved += numberOfCountersSelected; - game.informPlayers(new StringBuilder(controller.getName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()) .append(" removes ").append(numberOfCountersSelected == 1 ? "a":numberOfCountersSelected).append(" ") .append(counterName).append(numberOfCountersSelected == 1 ? " counter from ":" counters from ") .append(permanent.getName()).toString()); diff --git a/Mage/src/mage/abilities/effects/ContinuousEffects.java b/Mage/src/mage/abilities/effects/ContinuousEffects.java index fa5691031a..6be356dc25 100644 --- a/Mage/src/mage/abilities/effects/ContinuousEffects.java +++ b/Mage/src/mage/abilities/effects/ContinuousEffects.java @@ -668,11 +668,11 @@ public class ContinuousEffects implements Serializable { if (message != null && !message.isEmpty()) { if (effect.sendMessageToUser()) { Player player = game.getPlayer(event.getPlayerId()); - if (player != null) { + if (player != null && !game.isSimulation()) { game.informPlayer(player, message); } } - if (effect.sendMessageToGameLog()) { + if (effect.sendMessageToGameLog() && !game.isSimulation()) { game.informPlayers(message); } } diff --git a/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java b/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java index 0fdc0c986e..a026282ad5 100644 --- a/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java +++ b/Mage/src/mage/abilities/effects/PlaneswalkerRedirectionEffect.java @@ -82,7 +82,8 @@ public class PlaneswalkerRedirectionEffect extends RedirectionEffect { else { player.choose(Outcome.Damage, redirectTarget, null, game); } - game.informPlayers(new StringBuilder(player.getName()).append(" redirects ") + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(player.getName()).append(" redirects ") .append(event.getAmount()) .append(" damage to ") .append(game.getPermanent(redirectTarget.getFirstTarget()).getLogName()).toString()); diff --git a/Mage/src/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java b/Mage/src/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java index 70a8d40f97..8498cc29c0 100644 --- a/Mage/src/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java +++ b/Mage/src/mage/abilities/effects/common/CastCardFromOutsideTheGameEffect.java @@ -76,13 +76,15 @@ public class CastCardFromOutsideTheGameEffect extends OneShotEffect { while (player.chooseUse(Outcome.Benefit, choiceText, game)) { Cards cards = player.getSideboard(); if (cards.isEmpty()) { - game.informPlayer(player, "You have no cards outside the game."); + if (!game.isSimulation()) + game.informPlayer(player, "You have no cards outside the game."); return false; } Set filtered = cards.getCards(filterCard, source.getSourceId(), source.getControllerId(), game); if (filtered.isEmpty()) { - game.informPlayer(player, "You have no " + filterCard.getMessage() + " outside the game."); + if (!game.isSimulation()) + game.informPlayer(player, "You have no " + filterCard.getMessage() + " outside the game."); return false; } diff --git a/Mage/src/mage/abilities/effects/common/ChooseColorEffect.java b/Mage/src/mage/abilities/effects/common/ChooseColorEffect.java index e1bd51539f..e95c60f13f 100644 --- a/Mage/src/mage/abilities/effects/common/ChooseColorEffect.java +++ b/Mage/src/mage/abilities/effects/common/ChooseColorEffect.java @@ -63,7 +63,8 @@ public class ChooseColorEffect extends OneShotEffect { return false; } } - game.informPlayers(new StringBuilder(permanent.getLogName()).append(": ").append(controller.getName()).append(" has chosen ").append(choice.getChoice()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(permanent.getLogName()).append(": ").append(controller.getName()).append(" has chosen ").append(choice.getChoice()).toString()); game.getState().setValue(source.getSourceId() + "_color", choice.getColor()); permanent.addInfo("chosen color", "Chosen color: " + choice.getColor().getDescription() + "", game); return true; diff --git a/Mage/src/mage/abilities/effects/common/ChooseCreatureTypeEffect.java b/Mage/src/mage/abilities/effects/common/ChooseCreatureTypeEffect.java index 553e3269e4..2f26fa3a1b 100644 --- a/Mage/src/mage/abilities/effects/common/ChooseCreatureTypeEffect.java +++ b/Mage/src/mage/abilities/effects/common/ChooseCreatureTypeEffect.java @@ -67,7 +67,8 @@ public class ChooseCreatureTypeEffect extends OneShotEffect { return false; } } - game.informPlayers(permanent.getName() + ": " + controller.getName() + " has chosen " + typeChoice.getChoice()); + if (!game.isSimulation()) + game.informPlayers(permanent.getName() + ": " + controller.getName() + " has chosen " + typeChoice.getChoice()); game.getState().setValue(permanent.getId() + "_type", typeChoice.getChoice()); permanent.addInfo("chosen type", CardUtil.addToolTipMarkTags("Chosen type: " + typeChoice.getChoice()), game); } diff --git a/Mage/src/mage/abilities/effects/common/ChooseModeEffect.java b/Mage/src/mage/abilities/effects/common/ChooseModeEffect.java index 4cc8792fbc..7bd9c288e4 100644 --- a/Mage/src/mage/abilities/effects/common/ChooseModeEffect.java +++ b/Mage/src/mage/abilities/effects/common/ChooseModeEffect.java @@ -80,7 +80,8 @@ public class ChooseModeEffect extends OneShotEffect { controller.choose(Outcome.Neutral, choice, game); } if (choice.isChosen()) { - game.informPlayers(new StringBuilder(sourcePermanent.getLogName()).append(": ").append(controller.getName()).append(" has chosen ").append(choice.getChoice()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(sourcePermanent.getLogName()).append(": ").append(controller.getName()).append(" has chosen ").append(choice.getChoice()).toString()); game.getState().setValue(source.getSourceId() + "_modeChoice", choice.getChoice()); sourcePermanent.addInfo("_modeChoice", "Chosen mode: " + choice.getChoice() + "", game); } diff --git a/Mage/src/mage/abilities/effects/common/CipherEffect.java b/Mage/src/mage/abilities/effects/common/CipherEffect.java index 1c8f5042b2..8bdc853a65 100644 --- a/Mage/src/mage/abilities/effects/common/CipherEffect.java +++ b/Mage/src/mage/abilities/effects/common/CipherEffect.java @@ -99,7 +99,8 @@ public class CipherEffect extends OneShotEffect { ContinuousEffect effect = new GainAbilityTargetEffect(ability, Duration.Custom); effect.setTargetPointer(new FixedTarget(target.getFirstTarget())); game.addEffect(effect, source); - game.informPlayers(new StringBuilder(sourceCard.getLogName()).append(": Spell ciphered to ").append(targetCreature.getLogName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(sourceCard.getLogName()).append(": Spell ciphered to ").append(targetCreature.getLogName()).toString()); return sourceCard.moveToExile(null, "", source.getSourceId(), game); } else { return false; diff --git a/Mage/src/mage/abilities/effects/common/ClashEffect.java b/Mage/src/mage/abilities/effects/common/ClashEffect.java index 73a8f24697..72eeba5165 100644 --- a/Mage/src/mage/abilities/effects/common/ClashEffect.java +++ b/Mage/src/mage/abilities/effects/common/ClashEffect.java @@ -132,17 +132,18 @@ public class ClashEffect extends OneShotEffect implements MageSingleton { message.append(" no card"); } message.append(" - "); - if (cmcController > cmcOpponent) { - message.append(controller.getName()).append(" won the clash"); - game.informPlayer(controller, "You won the clash!"); - } else if (cmcController < cmcOpponent) { - message.append(opponent.getName()).append(" won the clash"); - game.informPlayer(controller, opponent.getName() + " won the clash!"); - } else { - message.append(" no winner "); - } - game.informPlayers(message.toString()); - + if (!game.isSimulation()) { + if (cmcController > cmcOpponent) { + message.append(controller.getName()).append(" won the clash"); + game.informPlayer(controller, "You won the clash!"); + } else if (cmcController < cmcOpponent) { + message.append(opponent.getName()).append(" won the clash"); + game.informPlayer(controller, opponent.getName() + " won the clash!"); + } else { + message.append(" no winner "); + } + game.informPlayers(message.toString()); + } // decide to put the cards on top or on the buttom of library in turn order beginning with the active player in turn order PlayerList playerList = game.getPlayerList().copy(); playerList.setCurrent(game.getActivePlayerId()); diff --git a/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java b/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java index f0bdc628c2..b79f192b9a 100644 --- a/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java +++ b/Mage/src/mage/abilities/effects/common/CopyTargetSpellEffect.java @@ -69,7 +69,8 @@ public class CopyTargetSpellEffect extends OneShotEffect { if (activateMessage.startsWith(" casts ")) { activateMessage = activateMessage.substring(6); } - game.informPlayers(player.getName() + " copies " + activateMessage); + if (!game.isSimulation()) + game.informPlayers(player.getName() + " copies " + activateMessage); return true; } return false; diff --git a/Mage/src/mage/abilities/effects/common/DetainAllEffect.java b/Mage/src/mage/abilities/effects/common/DetainAllEffect.java index 5aa0e28c30..a66413249d 100644 --- a/Mage/src/mage/abilities/effects/common/DetainAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/DetainAllEffect.java @@ -73,7 +73,8 @@ public class DetainAllEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { List detainedObjects = new ArrayList<>(); for (Permanent permanent : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game)) { - game.informPlayers("Detained permanent: " + permanent.getName()); + if (!game.isSimulation()) + game.informPlayers("Detained permanent: " + permanent.getName()); FixedTarget fixedTarget = new FixedTarget(permanent.getId()); fixedTarget.init(game, source); detainedObjects.add(fixedTarget); diff --git a/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java b/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java index 0a55e8dd65..6dba9637b2 100644 --- a/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/DetainTargetEffect.java @@ -79,10 +79,12 @@ public class DetainTargetEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - for (UUID target: this.getTargetPointer().getTargets(game, source)) { - Permanent permanent = game.getPermanent(target); - if (permanent != null) { - game.informPlayers("Detained permanent: " + permanent.getName()); + if (!game.isSimulation()) { + for (UUID target: this.getTargetPointer().getTargets(game, source)) { + Permanent permanent = game.getPermanent(target); + if (permanent != null) { + game.informPlayers("Detained permanent: " + permanent.getName()); + } } } DetainRestrictionEffect effect = new DetainRestrictionEffect(); diff --git a/Mage/src/mage/abilities/effects/common/DevourEffect.java b/Mage/src/mage/abilities/effects/common/DevourEffect.java index b018659bc6..0820df2579 100644 --- a/Mage/src/mage/abilities/effects/common/DevourEffect.java +++ b/Mage/src/mage/abilities/effects/common/DevourEffect.java @@ -141,7 +141,8 @@ public class DevourEffect extends ReplacementEffectImpl { if (target.getTargets().size() > 0) { List> cardSubtypes = new ArrayList<>(); int devouredCreatures = target.getTargets().size(); - game.informPlayers(new StringBuilder(creature.getName()).append(" devours ").append(devouredCreatures).append(" creatures").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(creature.getName()).append(" devours ").append(devouredCreatures).append(" creatures").toString()); for (UUID targetId: target.getTargets()) { Permanent targetCreature = game.getPermanent(targetId); if (targetCreature != null) { diff --git a/Mage/src/mage/abilities/effects/common/DoUnlessAnyPlayerPaysEffect.java b/Mage/src/mage/abilities/effects/common/DoUnlessAnyPlayerPaysEffect.java index 2eb5a07d06..73e5063cfc 100644 --- a/Mage/src/mage/abilities/effects/common/DoUnlessAnyPlayerPaysEffect.java +++ b/Mage/src/mage/abilities/effects/common/DoUnlessAnyPlayerPaysEffect.java @@ -94,7 +94,8 @@ public class DoUnlessAnyPlayerPaysEffect extends OneShotEffect { if (player != null && cost.canPay(source, source.getSourceId(), player.getId(), game) && player.chooseUse(Outcome.Detriment, message, game)) { cost.clearPaid(); if (cost.pay(source, game, source.getSourceId(), player.getId(), false)) { - game.informPlayers(player.getName() + " pays the cost to prevent the effect"); + if (!game.isSimulation()) + game.informPlayers(player.getName() + " pays the cost to prevent the effect"); doEffect = false; break; } diff --git a/Mage/src/mage/abilities/effects/common/EndTurnEffect.java b/Mage/src/mage/abilities/effects/common/EndTurnEffect.java index 1ad587d752..287e6b6b4e 100644 --- a/Mage/src/mage/abilities/effects/common/EndTurnEffect.java +++ b/Mage/src/mage/abilities/effects/common/EndTurnEffect.java @@ -46,7 +46,8 @@ public class EndTurnEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - game.informPlayers("The current turn ends"); + if (!game.isSimulation()) + game.informPlayers("The current turn ends"); return game.endTurn(); } diff --git a/Mage/src/mage/abilities/effects/common/FightTargetSourceEffect.java b/Mage/src/mage/abilities/effects/common/FightTargetSourceEffect.java index 91b0bd9f34..79230bd866 100644 --- a/Mage/src/mage/abilities/effects/common/FightTargetSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/FightTargetSourceEffect.java @@ -64,7 +64,8 @@ public class FightTargetSourceEffect extends OneShotEffect { } } } - game.informPlayers(originalPermanent.getLogName() + ": Fighting effect has been fizzled."); + if (!game.isSimulation()) + game.informPlayers(originalPermanent.getLogName() + ": Fighting effect has been fizzled."); } return false; } diff --git a/Mage/src/mage/abilities/effects/common/FightTargetsEffect.java b/Mage/src/mage/abilities/effects/common/FightTargetsEffect.java index 82b02c18d9..8848629427 100644 --- a/Mage/src/mage/abilities/effects/common/FightTargetsEffect.java +++ b/Mage/src/mage/abilities/effects/common/FightTargetsEffect.java @@ -65,7 +65,8 @@ public class FightTargetsEffect extends OneShotEffect { } } } - game.informPlayers(card.getName() + " has been fizzled."); + if (!game.isSimulation()) + game.informPlayers(card.getName() + " has been fizzled."); } return false; } diff --git a/Mage/src/mage/abilities/effects/common/FlipSourceEffect.java b/Mage/src/mage/abilities/effects/common/FlipSourceEffect.java index 9b001216cf..e695082a33 100644 --- a/Mage/src/mage/abilities/effects/common/FlipSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/FlipSourceEffect.java @@ -38,7 +38,8 @@ public class FlipSourceEffect extends OneShotEffect { if (permanent.flip(game)) { ContinuousEffect effect = new ConditionalContinuousEffect(new CopyTokenEffect(flipToken), FlippedCondition.getInstance(), ""); game.addEffect(effect, source); - game.informPlayers(new StringBuilder(controller.getName()).append(" flips ").append(permanent.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" flips ").append(permanent.getName()).toString()); return true; } } diff --git a/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java b/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java index 1c54c13e45..039ce418f7 100644 --- a/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java +++ b/Mage/src/mage/abilities/effects/common/HideawayPlayEffect.java @@ -74,7 +74,7 @@ public class HideawayPlayEffect extends OneShotEffect { card.setFaceDown(false, game); return controller.playLand(card, game); } - } else { + } else if (!game.isSimulation()) { game.informPlayer(controller, "You're not able to play the land now due to regular restrictions."); } } else { diff --git a/Mage/src/mage/abilities/effects/common/LookLibraryAndPickControllerEffect.java b/Mage/src/mage/abilities/effects/common/LookLibraryAndPickControllerEffect.java index 0a305a840d..a2e2dc94ab 100644 --- a/Mage/src/mage/abilities/effects/common/LookLibraryAndPickControllerEffect.java +++ b/Mage/src/mage/abilities/effects/common/LookLibraryAndPickControllerEffect.java @@ -141,7 +141,8 @@ public class LookLibraryAndPickControllerEffect extends LookLibraryControllerEff player.putOntoBattlefieldWithInfo(card, game, Zone.LIBRARY, source.getSourceId()); } else { card.moveToZone(targetPickedCards, source.getSourceId(), game, false); - game.informPlayers(player.getName() + " moves a card to " + targetPickedCards.toString().toLowerCase()); + if (!game.isSimulation()) + game.informPlayers(player.getName() + " moves a card to " + targetPickedCards.toString().toLowerCase()); } if (revealPickedCards) { reveal.add(card); diff --git a/Mage/src/mage/abilities/effects/common/NameACardEffect.java b/Mage/src/mage/abilities/effects/common/NameACardEffect.java index 4650bfcbbf..f5390f0984 100644 --- a/Mage/src/mage/abilities/effects/common/NameACardEffect.java +++ b/Mage/src/mage/abilities/effects/common/NameACardEffect.java @@ -93,7 +93,8 @@ public class NameACardEffect extends OneShotEffect { } } String cardName = cardChoice.getChoice(); - game.informPlayers(sourceObject.getLogName() + ", named card: [" + cardName + "]"); + if (!game.isSimulation()) + game.informPlayers(sourceObject.getLogName() + ", named card: [" + cardName + "]"); game.getState().setValue(source.getSourceId().toString() + INFO_KEY, cardName); if (sourceObject instanceof Permanent) { ((Permanent)sourceObject).addInfo(INFO_KEY, CardUtil.addToolTipMarkTags("Named card: " + cardName), game); diff --git a/Mage/src/mage/abilities/effects/common/PopulateEffect.java b/Mage/src/mage/abilities/effects/common/PopulateEffect.java index 5efb8e3373..c2b7d005da 100644 --- a/Mage/src/mage/abilities/effects/common/PopulateEffect.java +++ b/Mage/src/mage/abilities/effects/common/PopulateEffect.java @@ -94,7 +94,8 @@ public class PopulateEffect extends OneShotEffect { player.choose(Outcome.Copy, target, source.getSourceId(), game); Permanent tokenToCopy = game.getPermanent(target.getFirstTarget()); if (tokenToCopy != null) { - game.informPlayers("Token selected for populate: " + tokenToCopy.getLogName()); + if (!game.isSimulation()) + game.informPlayers("Token selected for populate: " + tokenToCopy.getLogName()); Effect effect = new PutTokenOntoBattlefieldCopyTargetEffect(); effect.setTargetPointer(new FixedTarget(target.getFirstTarget())); return effect.apply(game, source); diff --git a/Mage/src/mage/abilities/effects/common/PreventDamageToTargetMultiAmountEffect.java b/Mage/src/mage/abilities/effects/common/PreventDamageToTargetMultiAmountEffect.java index 0acb17a135..67380af9da 100644 --- a/Mage/src/mage/abilities/effects/common/PreventDamageToTargetMultiAmountEffect.java +++ b/Mage/src/mage/abilities/effects/common/PreventDamageToTargetMultiAmountEffect.java @@ -79,15 +79,16 @@ public class PreventDamageToTargetMultiAmountEffect extends PreventionEffectImpl player = game.getPlayer(targetId); } targetAmountMap.put(targetId, multiTarget.getTargetAmount(targetId)); - StringBuilder sb = new StringBuilder(sourceObject.getName()).append(": Prevent the next "); - sb.append(multiTarget.getTargetAmount(targetId)).append(" damage to "); - if (player != null) { - sb.append(player.getName()); - } else if (permanent != null) { - sb.append(permanent.getName()); + if (!game.isSimulation()) { + StringBuilder sb = new StringBuilder(sourceObject.getName()).append(": Prevent the next "); + sb.append(multiTarget.getTargetAmount(targetId)).append(" damage to "); + if (player != null) { + sb.append(player.getName()); + } else if (permanent != null) { + sb.append(permanent.getName()); + } + game.informPlayers(sb.toString()); } - game.informPlayers(sb.toString()); - } } } diff --git a/Mage/src/mage/abilities/effects/common/PutTokenOntoBattlefieldCopySource.java b/Mage/src/mage/abilities/effects/common/PutTokenOntoBattlefieldCopySource.java index 0c4a01e8ef..f61f0c6b01 100644 --- a/Mage/src/mage/abilities/effects/common/PutTokenOntoBattlefieldCopySource.java +++ b/Mage/src/mage/abilities/effects/common/PutTokenOntoBattlefieldCopySource.java @@ -69,8 +69,9 @@ public class PutTokenOntoBattlefieldCopySource extends OneShotEffect { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from((Permanent)thisCard); if (token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId())) { - game.informPlayers(new StringBuilder(controller.getName()) - .append(" puts a ").append(token.getName()).append(" token ").append("onto the Battlefield").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()) + .append(" puts a ").append(token.getName()).append(" token ").append("onto the Battlefield").toString()); return true; } } else { // maybe it's token @@ -79,8 +80,9 @@ public class PutTokenOntoBattlefieldCopySource extends OneShotEffect { EmptyToken token = new EmptyToken(); CardUtil.copyTo(token).from(permanent); if (token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId())) { - game.informPlayers(new StringBuilder(controller.getName()) - .append(" puts a ").append(token.getName()).append(" token ").append("onto the Battlefield").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()) + .append(" puts a ").append(token.getName()).append(" token ").append("onto the Battlefield").toString()); return true; } } diff --git a/Mage/src/mage/abilities/effects/common/ReturnFromExileEffect.java b/Mage/src/mage/abilities/effects/common/ReturnFromExileEffect.java index e765b9a8e4..8cade71f3e 100644 --- a/Mage/src/mage/abilities/effects/common/ReturnFromExileEffect.java +++ b/Mage/src/mage/abilities/effects/common/ReturnFromExileEffect.java @@ -92,7 +92,8 @@ public class ReturnFromExileEffect extends OneShotEffect { switch (zone) { case BATTLEFIELD: card.moveToZone(zone, source.getSourceId(), game, tapped); - game.informPlayers(new StringBuilder(controller.getName()).append(" moves ").append(card.getName()).append(" to ").append(zone.toString()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" moves ").append(card.getName()).append(" to ").append(zone.toString()).toString()); break; case HAND: controller.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.EXILED); @@ -105,7 +106,8 @@ public class ReturnFromExileEffect extends OneShotEffect { break; default: card.moveToZone(zone, source.getSourceId(), game, tapped); - game.informPlayers(new StringBuilder(controller.getName()).append(" moves ").append(card.getName()).append(" to ").append(zone.toString()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" moves ").append(card.getName()).append(" to ").append(zone.toString()).toString()); } } } diff --git a/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java b/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java index 9b452d94fe..78232b285b 100644 --- a/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java @@ -89,7 +89,8 @@ public class ReturnFromExileForSourceEffect extends OneShotEffect { if (card == null) { return false; } - game.informPlayers(controller.getName() + " moves " + card.getLogName() + " from exile to " + zone.toString().toLowerCase()); + if (!game.isSimulation()) + game.informPlayers(controller.getName() + " moves " + card.getLogName() + " from exile to " + zone.toString().toLowerCase()); card.moveToZone(zone, source.getSourceId(), game, tapped); } exile.clear(); diff --git a/Mage/src/mage/abilities/effects/common/TransformSourceEffect.java b/Mage/src/mage/abilities/effects/common/TransformSourceEffect.java index 677950cd94..892fb7399b 100644 --- a/Mage/src/mage/abilities/effects/common/TransformSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/TransformSourceEffect.java @@ -80,10 +80,12 @@ public class TransformSourceEffect extends OneShotEffect { } else { permanent.transform(game); } - if (fromDayToNight) { - game.informPlayers(new StringBuilder(permanent.getName()).append(" transforms into ").append(permanent.getSecondCardFace().getName()).toString()); - } else { - game.informPlayers(new StringBuilder(permanent.getSecondCardFace().getName()).append(" transforms into ").append(permanent.getName()).toString()); + if (!game.isSimulation()) { + if (fromDayToNight) { + game.informPlayers(new StringBuilder(permanent.getName()).append(" transforms into ").append(permanent.getSecondCardFace().getName()).toString()); + } else { + game.informPlayers(new StringBuilder(permanent.getSecondCardFace().getName()).append(" transforms into ").append(permanent.getName()).toString()); + } } } } diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesColorOrColorsTargetEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesColorOrColorsTargetEffect.java index fd79f49796..01d0237bc5 100644 --- a/Mage/src/mage/abilities/effects/common/continuous/BecomesColorOrColorsTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesColorOrColorsTargetEffect.java @@ -81,7 +81,8 @@ public class BecomesColorOrColorsTargetEffect extends OneShotEffect { if (!controller.isInGame()) { return false; } - game.informPlayers(target.getName() + ": " + controller.getName() + " has chosen " + choiceColor.getChoice()); + if (!game.isSimulation()) + game.informPlayers(target.getName() + ": " + controller.getName() + " has chosen " + choiceColor.getChoice()); if (choiceColor.getColor().isBlack()) { sb.append("B"); } else if (choiceColor.getColor().isBlue()) { diff --git a/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java b/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java index 6f4f52efc6..f49e7a27ac 100644 --- a/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continuous/BecomesColorTargetEffect.java @@ -96,7 +96,8 @@ public class BecomesColorTargetEffect extends ContinuousEffectImpl { } else { return false; } - game.informPlayers(controller.getName() + " has chosen the color: " + objectColor.toString()); + if (!game.isSimulation()) + game.informPlayers(controller.getName() + " has chosen the color: " + objectColor.toString()); } else { objectColor = this.setColor; } diff --git a/Mage/src/mage/abilities/effects/common/continuous/CommanderReplacementEffect.java b/Mage/src/mage/abilities/effects/common/continuous/CommanderReplacementEffect.java index c1c8270aec..561bf3cfa1 100644 --- a/Mage/src/mage/abilities/effects/common/continuous/CommanderReplacementEffect.java +++ b/Mage/src/mage/abilities/effects/common/continuous/CommanderReplacementEffect.java @@ -134,7 +134,8 @@ public class CommanderReplacementEffect extends ReplacementEffectImpl { Player player = game.getPlayer(permanent.getOwnerId()); if (player != null && player.chooseUse(Outcome.Benefit, "Move commander to command zone?", game)){ boolean result = permanent.moveToZone(Zone.COMMAND, source.getSourceId(), game, false); - game.informPlayers(player.getName() + " has moved his or her commander to the command zone"); + if (!game.isSimulation()) + game.informPlayers(player.getName() + " has moved his or her commander to the command zone"); return result; } } @@ -153,7 +154,8 @@ public class CommanderReplacementEffect extends ReplacementEffectImpl { Player player = game.getPlayer(card.getOwnerId()); if (player != null && player.chooseUse(Outcome.Benefit, "Move commander to command zone?", game)){ boolean result = card.moveToZone(Zone.COMMAND, source.getSourceId(), game, false); - game.informPlayers(player.getName() + " has moved his or her commander to the command zone"); + if (!game.isSimulation()) + game.informPlayers(player.getName() + " has moved his or her commander to the command zone"); return result; } } diff --git a/Mage/src/mage/abilities/effects/common/continuous/GainProtectionFromColorTargetEffect.java b/Mage/src/mage/abilities/effects/common/continuous/GainProtectionFromColorTargetEffect.java index 3d88e0302b..8e23b6a79c 100644 --- a/Mage/src/mage/abilities/effects/common/continuous/GainProtectionFromColorTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continuous/GainProtectionFromColorTargetEffect.java @@ -77,7 +77,7 @@ public class GainProtectionFromColorTargetEffect extends GainAbilityTargetEffect return; } } - if (choice.isChosen()) { + if (choice.isChosen() && !game.isSimulation()) { game.informPlayers(sourceObject.getLogName() + ": " + controller.getName() + " has chosen protection from " + choice.getChoice()); } } diff --git a/Mage/src/mage/abilities/effects/common/counter/AddCountersAllEffect.java b/Mage/src/mage/abilities/effects/common/counter/AddCountersAllEffect.java index 4ab43757f3..a92b901ded 100644 --- a/Mage/src/mage/abilities/effects/common/counter/AddCountersAllEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/AddCountersAllEffect.java @@ -72,7 +72,8 @@ public class AddCountersAllEffect extends OneShotEffect { for (Permanent permanent : permanents) { if (filter.match(permanent, source.getSourceId(), controllerId, game)) { permanent.addCounters(counter.copy(), game); - game.informPlayers(new StringBuilder(sourceObject.getName()).append(": ") + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(sourceObject.getName()).append(": ") .append(controller.getName()).append(" puts ") .append(counter.getCount()).append(" ").append(counter.getName().toLowerCase()) .append(" counter on ").append(permanent.getName()).toString()); diff --git a/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java b/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java index 2a53d0bd1d..9f89a253f9 100644 --- a/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/AddCountersSourceEffect.java @@ -103,7 +103,7 @@ public class AddCountersSourceEffect extends OneShotEffect { } newCounter.add(countersToAdd); card.addCounters(newCounter, game); - if (informPlayers) { + if (informPlayers && !game.isSimulation()) { Player player = game.getPlayer(source.getControllerId()); if (player != null) { game.informPlayers(new StringBuilder(player.getName()).append(" puts ").append(newCounter.getCount()).append(" ").append(newCounter.getName().toLowerCase()).append(" counter on ").append(card.getLogName()).toString()); @@ -125,8 +125,8 @@ public class AddCountersSourceEffect extends OneShotEffect { newCounter.add(countersToAdd); int before = permanent.getCounters().getCount(newCounter.getName()); permanent.addCounters(newCounter, game); - int amountAdded = permanent.getCounters().getCount(newCounter.getName()) - before; - if (informPlayers) { + if (informPlayers && !game.isSimulation()) { + int amountAdded = permanent.getCounters().getCount(newCounter.getName()) - before; Player player = game.getPlayer(source.getControllerId()); if (player != null) { game.informPlayers(player.getName()+" puts "+amountAdded+" "+newCounter.getName().toLowerCase()+" counter on "+permanent.getLogName()); diff --git a/Mage/src/mage/abilities/effects/common/counter/AddCountersTargetEffect.java b/Mage/src/mage/abilities/effects/common/counter/AddCountersTargetEffect.java index 77eef62a48..a0be206131 100644 --- a/Mage/src/mage/abilities/effects/common/counter/AddCountersTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/AddCountersTargetEffect.java @@ -95,7 +95,8 @@ public class AddCountersTargetEffect extends OneShotEffect { permanent.addCounters(newCounter, game); int numberAdded = permanent.getCounters().getCount(counter.getName()) - before; affectedTargets ++; - game.informPlayers(sourceObject.getLogName() +": "+ controller.getName()+ " puts " + + if (!game.isSimulation()) + game.informPlayers(sourceObject.getLogName() +": "+ controller.getName()+ " puts " + numberAdded + " " + counter.getName().toLowerCase() + " counter on " + permanent.getLogName()); } } else { @@ -105,7 +106,8 @@ public class AddCountersTargetEffect extends OneShotEffect { newCounter.add(amount.calculate(game, source, this)); player.addCounters(newCounter, game); affectedTargets ++; - game.informPlayers(new StringBuilder(sourceObject.getLogName()).append(": ") + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(sourceObject.getLogName()).append(": ") .append(controller.getName()).append(" puts ") .append(counter.getCount()).append(" ").append(counter.getName().toLowerCase()) .append(" counter on ").append(player.getName()).toString()); diff --git a/Mage/src/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java b/Mage/src/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java index da5842f460..cd27ecfe52 100644 --- a/Mage/src/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/RemoveCounterSourceEffect.java @@ -60,14 +60,16 @@ public class RemoveCounterSourceEffect extends OneShotEffect { Permanent p = game.getPermanent(source.getSourceId()); if (p != null && p.getCounters().getCount(counter.getName()) >= counter.getCount()) { p.removeCounters(counter.getName(), counter.getCount(), game); - game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) .append(" counter from ").append(p.getName()).toString()); return true; } Card c = game.getCard(source.getSourceId()); if (c != null && c.getCounters(game).getCount(counter.getName()) >= counter.getCount()) { c.removeCounters(counter.getName(), counter.getCount(), game); - game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) .append(" counter from ").append(c.getName()) .append(" (").append(c.getCounters(game).getCount(counter.getName())).append(" left)").toString()); return true; diff --git a/Mage/src/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java b/Mage/src/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java index 4d8d3f7968..5b651f6662 100644 --- a/Mage/src/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/RemoveCounterTargetEffect.java @@ -61,14 +61,16 @@ public class RemoveCounterTargetEffect extends OneShotEffect { Permanent p = game.getPermanent(targetPointer.getFirst(game, source)); if (p != null && p.getCounters().getCount(counter.getName()) >= counter.getCount()) { p.removeCounters(counter.getName(), counter.getCount(), game); - game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) .append(" counter from ").append(p.getName()).toString()); return true; } Card c = game.getCard(targetPointer.getFirst(game, source)); if (c != null && c.getCounters(game).getCount(counter.getName()) >= counter.getCount()) { c.removeCounters(counter.getName(), counter.getCount(), game); - game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder("Removed ").append(counter.getCount()).append(" ").append(counter.getName()) .append(" counter from ").append(c.getName()) .append(" (").append(c.getCounters(game).getCount(counter.getName())).append(" left)").toString()); return true; diff --git a/Mage/src/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java b/Mage/src/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java index 6ac834c763..c8de005262 100644 --- a/Mage/src/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java +++ b/Mage/src/mage/abilities/effects/common/search/SearchLibraryPutOnLibraryEffect.java @@ -98,7 +98,7 @@ public class SearchLibraryPutOnLibraryEffect extends SearchEffect { if (forceShuffle) { controller.shuffleLibrary(game); } - if (cards.size() > 0) { + if (cards.size() > 0 && !game.isSimulation()) { game.informPlayers(controller.getName() + " moves " + cards.size() + " card" + (cards.size() == 1 ? " ":"s ") + "on top of his or her library"); } for (Card card: cards) { diff --git a/Mage/src/mage/abilities/keyword/ConspireAbility.java b/Mage/src/mage/abilities/keyword/ConspireAbility.java index 36f3321616..f22c6699ec 100644 --- a/Mage/src/mage/abilities/keyword/ConspireAbility.java +++ b/Mage/src/mage/abilities/keyword/ConspireAbility.java @@ -245,7 +245,8 @@ class ConspireEffect extends OneShotEffect { copy.setCopiedSpell(true); game.getStack().push(copy); copy.chooseNewTargets(game, source.getControllerId()); - game.informPlayers(new StringBuilder(controller.getName()).append(copy.getActivatedMessage(game)).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(copy.getActivatedMessage(game)).toString()); return true; } } diff --git a/Mage/src/mage/abilities/keyword/ConvokeAbility.java b/Mage/src/mage/abilities/keyword/ConvokeAbility.java index b4c7713378..2d817b6e1f 100644 --- a/Mage/src/mage/abilities/keyword/ConvokeAbility.java +++ b/Mage/src/mage/abilities/keyword/ConvokeAbility.java @@ -251,7 +251,8 @@ class ConvokeEffect extends OneShotEffect { manaPool.unlockManaType(ManaType.COLORLESS); manaName = "colorless"; } - game.informPlayers("Convoke: " + controller.getName() + " taps " + perm.getLogName() + " to pay one " + manaName + " mana"); + if (!game.isSimulation()) + game.informPlayers("Convoke: " + controller.getName() + " taps " + perm.getLogName() + " to pay one " + manaName + " mana"); } } diff --git a/Mage/src/mage/abilities/keyword/DredgeAbility.java b/Mage/src/mage/abilities/keyword/DredgeAbility.java index f720094d54..e24656c1b0 100644 --- a/Mage/src/mage/abilities/keyword/DredgeAbility.java +++ b/Mage/src/mage/abilities/keyword/DredgeAbility.java @@ -99,7 +99,8 @@ class DredgeEffect extends ReplacementEffectImpl { if (player != null && player.getLibrary().size() >= amount && player.chooseUse(outcome, new StringBuilder("Dredge ").append(sourceCard.getName()). append("? (").append(amount).append(" cards go from top of library to graveyard)").toString(), game)) { - game.informPlayers(new StringBuilder(player.getName()).append(" dreges ").append(sourceCard.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(player.getName()).append(" dreges ").append(sourceCard.getName()).toString()); Cards cardsToGrave = new CardsImpl(); cardsToGrave.addAll(player.getLibrary().getTopCards(game, amount)); player.moveCardsToGraveyardWithInfo(cardsToGrave, source, game, Zone.LIBRARY); diff --git a/Mage/src/mage/abilities/keyword/ExtortAbility.java b/Mage/src/mage/abilities/keyword/ExtortAbility.java index e39956047e..1a910c230f 100644 --- a/Mage/src/mage/abilities/keyword/ExtortAbility.java +++ b/Mage/src/mage/abilities/keyword/ExtortAbility.java @@ -111,7 +111,8 @@ class ExtortEffect extends OneShotEffect { if (loseLife > 0) { game.getPlayer(source.getControllerId()).gainLife(loseLife, game); } - game.informPlayers(new StringBuilder(permanent.getName()).append(" extorted opponents ").append(loseLife).append(" life").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(permanent.getName()).append(" extorted opponents ").append(loseLife).append(" life").toString()); } } return true; diff --git a/Mage/src/mage/abilities/keyword/FlashbackAbility.java b/Mage/src/mage/abilities/keyword/FlashbackAbility.java index 66eb5866f5..39c5c44b5b 100644 --- a/Mage/src/mage/abilities/keyword/FlashbackAbility.java +++ b/Mage/src/mage/abilities/keyword/FlashbackAbility.java @@ -209,7 +209,8 @@ class FlashbackEffect extends OneShotEffect { } spellAbility.getManaCostsToPay().setX(amount); } - game.informPlayers(new StringBuilder(controller.getName()).append(" flashbacks ").append(card.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" flashbacks ").append(card.getName()).toString()); spellAbility.setCostModificationActive(false); // prevents to apply cost modification twice for flashbacked spells return controller.cast(spellAbility, game, true); } diff --git a/Mage/src/mage/abilities/keyword/GraftAbility.java b/Mage/src/mage/abilities/keyword/GraftAbility.java index 224eafe476..c953f32539 100644 --- a/Mage/src/mage/abilities/keyword/GraftAbility.java +++ b/Mage/src/mage/abilities/keyword/GraftAbility.java @@ -174,8 +174,10 @@ class GraftDistributeCounterEffect extends OneShotEffect { if (targetCreature != null) { sourcePermanent.removeCounters(CounterType.P1P1.getName(), 1, game); targetCreature.addCounters(CounterType.P1P1.createInstance(1), game); - StringBuilder sb = new StringBuilder("Moved one +1/+1 counter from ").append(sourcePermanent.getName()).append(" to ").append(targetCreature.getName()); - game.informPlayers(sb.toString()); + if (!game.isSimulation()) { + StringBuilder sb = new StringBuilder("Moved one +1/+1 counter from ").append(sourcePermanent.getName()).append(" to ").append(targetCreature.getName()); + game.informPlayers(sb.toString()); + } return true; } } diff --git a/Mage/src/mage/abilities/keyword/HauntAbility.java b/Mage/src/mage/abilities/keyword/HauntAbility.java index b5415413d6..5a6cb22d58 100644 --- a/Mage/src/mage/abilities/keyword/HauntAbility.java +++ b/Mage/src/mage/abilities/keyword/HauntAbility.java @@ -209,7 +209,8 @@ class HauntEffect extends OneShotEffect { game.getState().setValue(key, new FixedTarget(targetPointer.getFirst(game, source))); card.addInfo("hauntinfo", new StringBuilder("Haunting ").append(hauntedCreature.getLogName()).toString(), game); hauntedCreature.addInfo("hauntinfo", new StringBuilder("Haunted by ").append(card.getLogName()).toString(), game); - game.informPlayers(new StringBuilder(card.getName()).append(" haunting ").append(hauntedCreature.getLogName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(card.getName()).append(" haunting ").append(hauntedCreature.getLogName()).toString()); } return true; } diff --git a/Mage/src/mage/abilities/keyword/KickerAbility.java b/Mage/src/mage/abilities/keyword/KickerAbility.java index d7abbaeb28..809f024d93 100644 --- a/Mage/src/mage/abilities/keyword/KickerAbility.java +++ b/Mage/src/mage/abilities/keyword/KickerAbility.java @@ -218,7 +218,8 @@ public class KickerAbility extends StaticAbility implements OptionalAdditionalSo // use only first variable cost xManaValue = game.getPlayer(this.controllerId).announceXMana(varCosts.get(0).getMinX(), Integer.MAX_VALUE, "Announce kicker value for " + varCosts.get(0).getText(), game, this); // kicker variable X costs handled internally as multikicker with {1} cost (no multikicker on card) - game.informPlayers(new StringBuilder(game.getPlayer(this.controllerId).getName()).append(" announced a value of ").append(xManaValue).append(" for ").append(" kicker X ").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(game.getPlayer(this.controllerId).getName()).append(" announced a value of ").append(xManaValue).append(" for ").append(" kicker X ").toString()); ability.getManaCostsToPay().add(new GenericManaCost(xManaValue)); } else { ability.getManaCostsToPay().add((ManaCostsImpl) cost.copy()); diff --git a/Mage/src/mage/abilities/keyword/ReplicateAbility.java b/Mage/src/mage/abilities/keyword/ReplicateAbility.java index 059623d0d6..6b82031029 100644 --- a/Mage/src/mage/abilities/keyword/ReplicateAbility.java +++ b/Mage/src/mage/abilities/keyword/ReplicateAbility.java @@ -254,7 +254,8 @@ class ReplicateCopyEffect extends OneShotEffect { copy.setCopiedSpell(true); game.getStack().push(copy); copy.chooseNewTargets(game, source.getControllerId()); - game.informPlayers(new StringBuilder(controller.getName()).append(copy.getActivatedMessage(game)).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(copy.getActivatedMessage(game)).toString()); } return true; } diff --git a/Mage/src/mage/abilities/keyword/StormAbility.java b/Mage/src/mage/abilities/keyword/StormAbility.java index dee615c399..8bc5b0b193 100644 --- a/Mage/src/mage/abilities/keyword/StormAbility.java +++ b/Mage/src/mage/abilities/keyword/StormAbility.java @@ -104,7 +104,8 @@ class StormEffect extends OneShotEffect { int stormCount = watcher.getSpellOrder(spell, game) - 1; if (stormCount > 0) { - game.informPlayers("Storm: " + spell.getName() + " will be copied " + stormCount + " time" + (stormCount > 1 ?"s":"")); + if (!game.isSimulation()) + game.informPlayers("Storm: " + spell.getName() + " will be copied " + stormCount + " time" + (stormCount > 1 ?"s":"")); for (int i = 0; i < stormCount; i++) { Spell copy = spell.copySpell(); copy.setControllerId(source.getControllerId()); diff --git a/Mage/src/mage/abilities/keyword/SunburstAbility.java b/Mage/src/mage/abilities/keyword/SunburstAbility.java index 77e071d7c2..f60d93126e 100644 --- a/Mage/src/mage/abilities/keyword/SunburstAbility.java +++ b/Mage/src/mage/abilities/keyword/SunburstAbility.java @@ -106,10 +106,11 @@ class SunburstEffect extends OneShotEffect { if (counter != null) { permanent.addCounters(counter, game); - - Player player = game.getPlayer(source.getControllerId()); - if (player != null) { - game.informPlayers(player.getName()+ " puts " + counter.getCount() + " " + counter.getName() + " counter on " + permanent.getName()); + if (!game.isSimulation()) { + Player player = game.getPlayer(source.getControllerId()); + if (player != null) { + game.informPlayers(player.getName()+ " puts " + counter.getCount() + " " + counter.getName() + " counter on " + permanent.getName()); + } } } } diff --git a/Mage/src/mage/abilities/keyword/SuspendAbility.java b/Mage/src/mage/abilities/keyword/SuspendAbility.java index 37f5dad5a1..32b5d9be57 100644 --- a/Mage/src/mage/abilities/keyword/SuspendAbility.java +++ b/Mage/src/mage/abilities/keyword/SuspendAbility.java @@ -281,7 +281,8 @@ class SuspendExileEffect extends OneShotEffect { suspend = source.getManaCostsToPay().getX(); } card.addCounters(CounterType.TIME.createInstance(suspend), game); - game.informPlayers(new StringBuilder(controller.getName()).append(" suspends (").append(suspend).append(") ").append(card.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" suspends (").append(suspend).append(") ").append(card.getName()).toString()); return true; } } diff --git a/Mage/src/mage/abilities/keyword/TributeAbility.java b/Mage/src/mage/abilities/keyword/TributeAbility.java index 547068d3fa..c1835b8746 100644 --- a/Mage/src/mage/abilities/keyword/TributeAbility.java +++ b/Mage/src/mage/abilities/keyword/TributeAbility.java @@ -119,11 +119,13 @@ class TributeEffect extends OneShotEffect { sb.append(" (add ").append(CardUtil.numberToText(tributeValue)).append(" +1/+1 counter"); sb.append(tributeValue > 1 ? "s":"").append(" to it)?"); if (opponent.chooseUse(outcome, sb.toString(), game)) { - game.informPlayers(new StringBuilder(opponent.getName()).append(" pays tribute to ").append(sourcePermanent.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(opponent.getName()).append(" pays tribute to ").append(sourcePermanent.getName()).toString()); game.getState().setValue(new StringBuilder("tributeValue").append(source.getSourceId()).toString(), "yes"); return new AddCountersSourceEffect(CounterType.P1P1.createInstance(tributeValue), true).apply(game, source); } else { - game.informPlayers(new StringBuilder(opponent.getName()).append(" does not pay tribute to ").append(sourcePermanent.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(opponent.getName()).append(" does not pay tribute to ").append(sourcePermanent.getName()).toString()); game.getState().setValue(new StringBuilder("tributeValue").append(source.getSourceId()).toString(), "no"); } return true; diff --git a/Mage/src/mage/abilities/keyword/UnleashAbility.java b/Mage/src/mage/abilities/keyword/UnleashAbility.java index 61bc75aa67..42dafa9632 100644 --- a/Mage/src/mage/abilities/keyword/UnleashAbility.java +++ b/Mage/src/mage/abilities/keyword/UnleashAbility.java @@ -112,7 +112,8 @@ class UnleashReplacementEffect extends ReplacementEffectImpl { Player controller = game.getPlayer(source.getControllerId()); if (creature != null && controller != null) { if (controller.chooseUse(outcome, "Unleash "+ creature.getName() +"?", game)) { - game.informPlayers(controller.getName() + " unleashes " + creature.getName()); + if (!game.isSimulation()) + game.informPlayers(controller.getName() + " unleashes " + creature.getName()); creature.addCounters(CounterType.P1P1.createInstance(), game); } } diff --git a/Mage/src/mage/actions/MageLoseGameAction.java b/Mage/src/mage/actions/MageLoseGameAction.java index c31831b107..abea1c73f6 100644 --- a/Mage/src/mage/actions/MageLoseGameAction.java +++ b/Mage/src/mage/actions/MageLoseGameAction.java @@ -31,7 +31,8 @@ public class MageLoseGameAction extends MageAction { if (oldLosingPlayer == null && player.canLose(game)) { setScore(player, ArtificialScoringSystem.inst.getLoseGameScore(game)); game.setLosingPlayer(player); - game.informPlayer(player, reason); + if (!game.isSimulation()) + game.informPlayer(player, reason); } return 0; } diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index c0a358a267..abe9684ddd 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -695,7 +695,8 @@ public abstract class GameImpl implements Game, Serializable { if (extraPlayer != null && extraPlayer.isInGame()) { state.setExtraTurn(true); state.setTurnId(extraTurn.getId()); - informPlayers(extraPlayer.getName() + " takes an extra turn"); + if (!this.isSimulation()) + informPlayers(extraPlayer.getName() + " takes an extra turn"); playTurn(extraPlayer); state.setTurnNum(state.getTurnNum() + 1); } @@ -820,7 +821,7 @@ public abstract class GameImpl implements Game, Serializable { } message.append(" takes the first turn"); - this.informPlayers(message.toString()); + this.informPlayers(message.toString()); } else { // not possible to choose starting player, stop here return; @@ -1704,7 +1705,8 @@ public abstract class GameImpl implements Game, Serializable { private boolean movePermanentToGraveyardWithInfo(Permanent permanent) { boolean result = false; if (permanent.moveToZone(Zone.GRAVEYARD, null, this, false)) { - this.informPlayers(new StringBuilder(permanent.getLogName()) + if (!this.isSimulation()) + this.informPlayers(new StringBuilder(permanent.getLogName()) .append(" is put into graveyard from battlefield").toString()); result = true; } @@ -2113,12 +2115,14 @@ public abstract class GameImpl implements Game, Serializable { } else { targetName = targetObject.getLogName(); } - StringBuilder message = new StringBuilder(preventionSource.getLogName()).append(": Prevented "); - message.append(Integer.toString(result.getPreventedDamage())).append(" damage from ").append(damageSource.getName()); - if (!targetName.isEmpty()) { - message.append(" to ").append(targetName); + if (!game.isSimulation()) { + StringBuilder message = new StringBuilder(preventionSource.getLogName()).append(": Prevented "); + message.append(Integer.toString(result.getPreventedDamage())).append(" damage from ").append(damageSource.getName()); + if (!targetName.isEmpty()) { + message.append(" to ").append(targetName); + } + game.informPlayers(message.toString()); } - game.informPlayers(message.toString()); } game.fireEvent(GameEvent.getEvent(GameEvent.EventType.PREVENTED_DAMAGE, damageEvent.getTargetId(), source.getSourceId(), source.getControllerId(), result.getPreventedDamage())); return result; diff --git a/Mage/src/mage/game/combat/Combat.java b/Mage/src/mage/game/combat/Combat.java index 3fa6ea0d24..3e271c7124 100644 --- a/Mage/src/mage/game/combat/Combat.java +++ b/Mage/src/mage/game/combat/Combat.java @@ -229,7 +229,8 @@ public class Combat implements Serializable, Copyable { } } game.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_ATTACKERS, attackerId, attackerId)); - game.informPlayers(new StringBuilder(player.getName()).append(" attacks with ").append(groups.size()).append(groups.size() == 1 ? " creature":" creatures").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(player.getName()).append(" attacks with ").append(groups.size()).append(groups.size() == 1 ? " creature":" creatures").toString()); } protected void checkAttackRequirements(Player player, Game game) { @@ -282,7 +283,8 @@ public class Combat implements Serializable, Copyable { for (UUID attackingCreatureId : group.getAttackers()) { Permanent attacker = game.getPermanent(attackingCreatureId); if (count > 1 && attacker != null && attacker.getAbilities().containsKey(CanAttackOnlyAloneAbility.getInstance().getId())) { - game.informPlayers(attacker.getLogName() + " can only attack alone. Removing it from combat."); + if (!game.isSimulation()) + game.informPlayers(attacker.getLogName() + " can only attack alone. Removing it from combat."); tobeRemoved.add(attackingCreatureId); count--; } @@ -299,7 +301,8 @@ public class Combat implements Serializable, Copyable { for (UUID attackingCreatureId : group.getAttackers()) { Permanent attacker = game.getPermanent(attackingCreatureId); if (attacker != null && attacker.getAbilities().containsKey(CantAttackAloneAbility.getInstance().getId())) { - game.informPlayers(attacker.getLogName() + " can't attack alone. Removing it from combat."); + if (!game.isSimulation()) + game.informPlayers(attacker.getLogName() + " can't attack alone. Removing it from combat."); tobeRemoved.add(attackingCreatureId); } } @@ -357,7 +360,8 @@ public class Combat implements Serializable, Copyable { game.fireEvent(GameEvent.getEvent(GameEvent.EventType.DECLARED_BLOCKERS, defenderId, defenderId)); // add info about attacker blocked by blocker to the game log - this.logBlockerInfo(defender, game); + if (!game.isSimulation()) + this.logBlockerInfo(defender, game); } } // tool to catch the bug about flyers blocked by non flyers or intimidate blocked by creatures with other colors @@ -597,7 +601,9 @@ public class Combat implements Serializable, Copyable { // if so inform human player or set block for AI player if (mayBlock) { if (controller.isHuman()) { - game.informPlayer(controller, "Creature should block this turn: " + creature.getLogName()); + if (!game.isSimulation()) { + game.informPlayer(controller, "Creature should block this turn: " + creature.getLogName()); + } } else { Player defender = game.getPlayer(creature.getControllerId()); if (defender != null) { @@ -665,7 +671,8 @@ public class Combat implements Serializable, Copyable { } } if (possibleBlockerAvailable) { - game.informPlayer(controller, new StringBuilder(toBeBlockedCreature.getLogName()).append(" has to be blocked by at least one creature.").toString()); + if (!game.isSimulation()) + game.informPlayer(controller, new StringBuilder(toBeBlockedCreature.getLogName()).append(" has to be blocked by at least one creature.").toString()); return false; } } @@ -728,9 +735,11 @@ public class Combat implements Serializable, Copyable { } } if (sb.length() > 0) { - sb.insert(0, "Some creatures are forced to block certain attacker(s):\n"); - sb.append("\nPlease block with each of these creatures an appropriate attacker."); - game.informPlayer(controller, sb.toString()); + if (!game.isSimulation()) { + sb.insert(0, "Some creatures are forced to block certain attacker(s):\n"); + sb.append("\nPlease block with each of these creatures an appropriate attacker."); + game.informPlayer(controller, sb.toString()); + } return false; } return true; @@ -871,7 +880,7 @@ public class Combat implements Serializable, Copyable { } if (defenderAttackedBy.size() >= defendingPlayer.getMaxAttackedBy()) { Player attackingPlayer = game.getPlayer(game.getControllerId(attackerId)); - if (attackingPlayer != null) { + if (attackingPlayer != null && !game.isSimulation()) { game.informPlayer(attackingPlayer, new StringBuilder("No more than ") .append(CardUtil.numberToText(defendingPlayer.getMaxAttackedBy())) .append(" creatures can attack ") diff --git a/Mage/src/mage/game/combat/CombatGroup.java b/Mage/src/mage/game/combat/CombatGroup.java index d02267478c..e5426bb6e2 100644 --- a/Mage/src/mage/game/combat/CombatGroup.java +++ b/Mage/src/mage/game/combat/CombatGroup.java @@ -540,7 +540,8 @@ public class CombatGroup implements Serializable, Copyable { Permanent blocker = game.getPermanent(blockerId); if (blocker != null && blocker.getAbilities().containsKey(CantBlockAloneAbility.getInstance().getId())) { blockWasLegal = false; - game.informPlayers(blocker.getLogName() + " can't block alone. Removing it from combat."); + if (!game.isSimulation()) + game.informPlayers(blocker.getLogName() + " can't block alone. Removing it from combat."); toBeRemoved.add(blockerId); } } @@ -566,7 +567,8 @@ public class CombatGroup implements Serializable, Copyable { blockers.clear(); blockerOrder.clear(); this.blocked = false; - game.informPlayers(attacker.getLogName() + " can't be blocked except by " + attacker.getMinBlockedBy() + " or more creatures. Blockers discarded."); + if (!game.isSimulation()) + game.informPlayers(attacker.getLogName() + " can't be blocked except by " + attacker.getMinBlockedBy() + " or more creatures. Blockers discarded."); blockWasLegal = false; } // Check if there are to many blockers (maxBlockedBy = 0 means no restrictions) @@ -580,7 +582,8 @@ public class CombatGroup implements Serializable, Copyable { blockers.clear(); blockerOrder.clear(); this.blocked = false; - game.informPlayers(new StringBuilder(attacker.getLogName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(attacker.getLogName()) .append(" can't be blocked by more than ").append(attacker.getMaxBlockedBy()) .append(attacker.getMaxBlockedBy()==1?" creature.":" creatures.") .append(" Blockers discarded.").toString()); diff --git a/Mage/src/mage/game/permanent/PermanentImpl.java b/Mage/src/mage/game/permanent/PermanentImpl.java index 22086d1705..075c5fbf95 100644 --- a/Mage/src/mage/game/permanent/PermanentImpl.java +++ b/Mage/src/mage/game/permanent/PermanentImpl.java @@ -508,7 +508,8 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { if (!phasedIn) { if (!replaceEvent(EventType.PHASE_IN, game)) { this.phasedIn = true; - game.informPlayers(getLogName() + " phased in"); + if (!game.isSimulation()) + game.informPlayers(getLogName() + " phased in"); fireEvent(EventType.PHASED_IN, game); return true; } @@ -521,7 +522,8 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { if (phasedIn) { if (!replaceEvent(EventType.PHASE_OUT, game)) { this.phasedIn = false; - game.informPlayers(getLogName() + " phased out"); + if (!game.isSimulation()) + game.informPlayers(getLogName() + " phased out"); fireEvent(EventType.PHASED_OUT, game); return true; } @@ -955,17 +957,19 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { if (!game.replaceEvent(GameEvent.getEvent(EventType.DESTROY_PERMANENT, objectId, sourceId, controllerId, noRegen ? 1 : 0))) { if (moveToZone(Zone.GRAVEYARD, sourceId, game, false)) { - String logName; - Card card = game.getCard(this.getId()); - if (card != null) { - logName = card.getLogName(); - } else { - logName = this.getLogName(); - } - if (this.getCardType().contains(CardType.CREATURE)) { - game.informPlayers(logName +" died"); - } else { - game.informPlayers(logName + " was destroyed"); + if (!game.isSimulation()) { + String logName; + Card card = game.getCard(this.getId()); + if (card != null) { + logName = card.getLogName(); + } else { + logName = this.getLogName(); + } + if (this.getCardType().contains(CardType.CREATURE)) { + game.informPlayers(logName +" died"); + } else { + game.informPlayers(logName + " was destroyed"); + } } game.fireEvent(GameEvent.getEvent(EventType.DESTROYED_PERMANENT, objectId, sourceId, controllerId)); return true; @@ -982,7 +986,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { // so the return value of the moveToZone is not taken into account here moveToZone(Zone.GRAVEYARD, sourceId, game, false); Player player = game.getPlayer(getControllerId()); - if (player != null) { + if (player != null && !game.isSimulation()) { game.informPlayers(new StringBuilder(player.getName()).append(" sacrificed ").append(this.getLogName()).toString()); } game.fireEvent(GameEvent.getEvent(EventType.SACRIFICED_PERMANENT, objectId, sourceId, controllerId)); @@ -1181,7 +1185,7 @@ public abstract class PermanentImpl extends CardImpl implements Permanent { @Override public boolean removeFromCombat(Game game, boolean withInfo) { if (this.isAttacking() || this.blocking > 0) { - if (game.getCombat().removeFromCombat(objectId, game) && withInfo) { + if (game.getCombat().removeFromCombat(objectId, game) && withInfo && !game.isSimulation()) { game.informPlayers(new StringBuilder(this.getLogName()).append(" removed from combat").toString()); } } diff --git a/Mage/src/mage/game/permanent/token/Token.java b/Mage/src/mage/game/permanent/token/Token.java index 11c6694c73..c98c3a96b9 100644 --- a/Mage/src/mage/game/permanent/token/Token.java +++ b/Mage/src/mage/game/permanent/token/Token.java @@ -164,7 +164,8 @@ public class Token extends MageObjectImpl { game.getCombat().addAttackingCreature(newToken.getId(), game); } } - game.informPlayers(new StringBuilder(controller.getName()).append(" puts ") + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" puts ") .append(CardUtil.numberToText(amount, "a")).append(" ").append(this.getName()).append(" token").append(amount==1?"":"s") .append(" onto the battlefield").toString()); return true; diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index d99f2b0891..56cf6342df 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -207,7 +207,8 @@ public class Spell implements StackObject, Card { return result; } //20091005 - 608.2b - game.informPlayers(getName() + " has been fizzled."); + if (!game.isSimulation()) + game.informPlayers(getName() + " has been fizzled."); counter(null, game); return false; } else if (this.getCardType().contains(CardType.ENCHANTMENT) && this.getSubtype().contains("Aura")) { @@ -248,7 +249,8 @@ public class Spell implements StackObject, Card { return result; } else { //20091005 - 608.2b - game.informPlayers(getName() + " has been fizzled."); + if (!game.isSimulation()) + game.informPlayers(getName() + " has been fizzled."); counter(null, game); return false; } @@ -399,7 +401,7 @@ public class Spell implements StackObject, Card { } } - if (newTargetDescription.length() > 0) { + if (newTargetDescription.length() > 0 && !game.isSimulation()) { game.informPlayers(this.getName() + " is now " + newTargetDescription.toString()); } return true; @@ -430,7 +432,7 @@ public class Spell implements StackObject, Card { if (forceChange && target.possibleTargets(this.getSourceId(), getControllerId(), game).size() > 1) { // controller of spell must be used (e.g. TargetOpponent) int iteration = 0; do { - if (iteration > 0) { + if (iteration > 0 && !game.isSimulation()) { game.informPlayer(player, "You may only select exactly one target that must be different from the origin target!"); } iteration++; diff --git a/Mage/src/mage/game/stack/SpellStack.java b/Mage/src/mage/game/stack/SpellStack.java index 6ddc6aea69..50caf94651 100644 --- a/Mage/src/mage/game/stack/SpellStack.java +++ b/Mage/src/mage/game/stack/SpellStack.java @@ -100,9 +100,10 @@ public class SpellStack extends ArrayDeque { } this.remove(stackObject); stackObject.counter(sourceId, game); // tries to move to graveyard - game.informPlayers(counteredObjectName + " is countered by " + sourceObject.getLogName()); + if (!game.isSimulation()) + game.informPlayers(counteredObjectName + " is countered by " + sourceObject.getLogName()); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.COUNTERED, objectId, sourceId, stackObject.getControllerId())); - } else { + } else if (!game.isSimulation()) { game.informPlayers(counteredObjectName + " could not be countered by " + sourceObject.getLogName()); } return true; diff --git a/Mage/src/mage/game/stack/StackAbility.java b/Mage/src/mage/game/stack/StackAbility.java index 4fa68ac39a..7a10e3fff7 100644 --- a/Mage/src/mage/game/stack/StackAbility.java +++ b/Mage/src/mage/game/stack/StackAbility.java @@ -100,7 +100,8 @@ public class StackAbility implements StackObject, Ability { if (ability.getTargets().stillLegal(ability, game)) { return ability.resolve(game); } - game.informPlayers("Ability has been fizzled: " + getRule()); + if (!game.isSimulation()) + game.informPlayers("Ability has been fizzled: " + getRule()); counter(null, game); return false; } diff --git a/Mage/src/mage/game/turn/Turn.java b/Mage/src/mage/game/turn/Turn.java index 8101f69bd6..e4ef1b9b23 100644 --- a/Mage/src/mage/game/turn/Turn.java +++ b/Mage/src/mage/game/turn/Turn.java @@ -235,7 +235,7 @@ public class Turn implements Serializable { currentPhase = phase; game.fireEvent(new GameEvent(GameEvent.EventType.PHASE_CHANGED, activePlayerId, extraPhaseTurnMod.getId(), activePlayerId)); Player activePlayer = game.getPlayer(activePlayerId); - if (activePlayer != null) { + if (activePlayer != null && !game.isSimulation()) { game.informPlayers(new StringBuilder(activePlayer.getName()).append(" starts an additional ").append(phase.getType().toString()).append(" phase").toString()); } phase.play(game, activePlayerId); diff --git a/Mage/src/mage/players/PlayerImpl.java b/Mage/src/mage/players/PlayerImpl.java index d40e64a365..a530bf84df 100644 --- a/Mage/src/mage/players/PlayerImpl.java +++ b/Mage/src/mage/players/PlayerImpl.java @@ -644,7 +644,8 @@ public abstract class PlayerImpl implements Player, Serializable { @Override public void discardToMax(Game game) { if (hand.size() > this.maxHandSize) { - game.informPlayers(new StringBuilder(getName()).append(" discards down to ").append(this.maxHandSize).append(this.maxHandSize == 1 ? " hand card" : " hand cards").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(getName()).append(" discards down to ").append(this.maxHandSize).append(this.maxHandSize == 1 ? " hand card" : " hand cards").toString()); discard(hand.size() - this.maxHandSize, null, game); } } @@ -735,7 +736,8 @@ public abstract class PlayerImpl implements Player, Serializable { */ if (card != null) { // write info to game log first so game log infos from triggered or replacement effects follow in the game log - game.informPlayers(new StringBuilder(name).append(" discards ").append(card.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(name).append(" discards ").append(card.getName()).toString()); /* If a card is discarded while Rest in Peace is on the battlefield, abilities that function * when a card is discarded (such as madness) still work, even though that card never reaches * a graveyard. In addition, spells or abilities that check the characteristics of a discarded @@ -929,7 +931,8 @@ public abstract class PlayerImpl implements Player, Serializable { GameEvent event = GameEvent.getEvent(GameEvent.EventType.SPELL_CAST, spell.getSpellAbility().getId(), spell.getSpellAbility().getSourceId(), playerId); event.setZone(fromZone); game.fireEvent(event); - game.informPlayers(new StringBuilder(name).append(spell.getActivatedMessage(game)).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(name).append(spell.getActivatedMessage(game)).toString()); game.removeBookmark(bookmark); resetStoredBookmark(game); return true; @@ -1018,7 +1021,8 @@ public abstract class PlayerImpl implements Player, Serializable { game.getStack().push(new StackAbility(ability, playerId)); if (ability.activate(game, false)) { game.fireEvent(GameEvent.getEvent(GameEvent.EventType.ACTIVATED_ABILITY, ability.getId(), ability.getSourceId(), playerId)); - game.informPlayers(new StringBuilder(name).append(ability.getGameLogMessage(game)).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(name).append(ability.getGameLogMessage(game)).toString()); game.removeBookmark(bookmark); resetStoredBookmark(game); return true; @@ -1044,7 +1048,8 @@ public abstract class PlayerImpl implements Player, Serializable { int bookmark = game.bookmarkState(); if (action.activate(game, false)) { game.fireEvent(GameEvent.getEvent(GameEvent.EventType.ACTIVATED_ABILITY, action.getSourceId(), action.getId(), playerId)); - game.informPlayers(new StringBuilder(name).append(action.getGameLogMessage(game)).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(name).append(action.getGameLogMessage(game)).toString()); if (action.resolve(game)) { game.removeBookmark(bookmark); resetStoredBookmark(game); @@ -1114,7 +1119,7 @@ public abstract class PlayerImpl implements Player, Serializable { game.getStack().push(new StackAbility(ability, playerId)); } if (ability.activate(game, false)) { - if (ability.isUsesStack() || ability.getRuleVisible()) { + if ((ability.isUsesStack() || ability.getRuleVisible()) && !game.isSimulation()) { game.informPlayers(ability.getGameLogMessage(game)); } if (!ability.isUsesStack()) { @@ -1269,7 +1274,8 @@ public abstract class PlayerImpl implements Player, Serializable { public void shuffleLibrary(Game game) { if (!game.replaceEvent(GameEvent.getEvent(GameEvent.EventType.SHUFFLE_LIBRARY, playerId, playerId))) { this.library.shuffle(); - game.informPlayers(new StringBuilder(this.name).append(" shuffles his or her library.").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(this.name).append(" shuffles his or her library.").toString()); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.LIBRARY_SHUFFLED, playerId, playerId)); } } @@ -1282,7 +1288,7 @@ public abstract class PlayerImpl implements Player, Serializable { @Override public void revealCards(String name, Cards cards, Game game, boolean postToLog) { game.getState().getRevealed().add(name, cards); - if (postToLog) { + if (postToLog && !game.isSimulation()) { StringBuilder sb = new StringBuilder(this.getName()).append(" reveals "); int current = 0, last = cards.size(); for (Card card : cards.getCards(game)) { @@ -1397,7 +1403,7 @@ public abstract class PlayerImpl implements Player, Serializable { } else { // player selected an permanent that is restricted by another effect, disallow it (so AI can select another one) filter.add(Predicates.not(new PermanentIdPredicate(selectedPermanent.getId()))); - if (this.isHuman()) { + if (this.isHuman() && !game.isSimulation()) { game.informPlayer(this, "This permanent can't be untapped because of other restricting effect."); } } @@ -1408,9 +1414,11 @@ public abstract class PlayerImpl implements Player, Serializable { } while (isInGame() && playerCanceledSelection); - // show in log which permanents were selected to untap - for (Permanent permanent : selectedToUntap) { - game.informPlayers(new StringBuilder(this.getName()).append(" untapped ").append(permanent.getName()).toString()); + if (!game.isSimulation()) { + // show in log which permanents were selected to untap + for (Permanent permanent : selectedToUntap) { + game.informPlayers(new StringBuilder(this.getName()).append(" untapped ").append(permanent.getName()).toString()); + } } // untap if permanent is not concerned by notMoreThan effects or is included in the selectedToUntapList for (Permanent permanent : canBeUntapped) { @@ -1559,7 +1567,8 @@ public abstract class PlayerImpl implements Player, Serializable { GameEvent event = new GameEvent(GameEvent.EventType.LOSE_LIFE, playerId, playerId, playerId, amount, false); if (!game.replaceEvent(event)) { this.life -= event.getAmount(); - game.informPlayers(new StringBuilder(this.getName()).append(" loses ").append(event.getAmount()).append(" life").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(this.getName()).append(" loses ").append(event.getAmount()).append(" life").toString()); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.LOST_LIFE, playerId, playerId, playerId, amount)); return amount; } @@ -1584,7 +1593,8 @@ public abstract class PlayerImpl implements Player, Serializable { GameEvent event = new GameEvent(GameEvent.EventType.GAIN_LIFE, playerId, playerId, playerId, amount, false); if (!game.replaceEvent(event)) { this.life += event.getAmount(); - game.informPlayers(new StringBuilder(this.getName()).append(" gains ").append(event.getAmount()).append(" life").toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(this.getName()).append(" gains ").append(event.getAmount()).append(" life").toString()); game.fireEvent(GameEvent.getEvent(GameEvent.EventType.GAINED_LIFE, playerId, playerId, playerId, event.getAmount())); return event.getAmount(); } @@ -1995,7 +2005,7 @@ public abstract class PlayerImpl implements Player, Serializable { group.addBlocker(blockerId, playerId, game); game.getCombat().addBlockingGroup(blockerId, attackerId, playerId, game); } else { - if (this.isHuman()) { + if (this.isHuman() && !game.isSimulation()) { game.informPlayer(this, "You can't block this creature."); } } @@ -2026,7 +2036,8 @@ public abstract class PlayerImpl implements Player, Serializable { } GameEvent event = GameEvent.getEvent(GameEvent.EventType.SEARCH_LIBRARY, targetPlayerId, playerId, playerId, Integer.MAX_VALUE); if (!game.replaceEvent(event)) { - game.informPlayers(searchInfo); + if (!game.isSimulation()) + game.informPlayers(searchInfo); TargetCardInLibrary newTarget = target.copy(); int count; int librarySearchLimit = event.getAmount(); @@ -2066,7 +2077,8 @@ public abstract class PlayerImpl implements Player, Serializable { @Override public boolean flipCoin(Game game, ArrayList appliedEffects) { boolean result = rnd.nextBoolean(); - game.informPlayers("[Flip a coin] " + getName() + (result ? " won (head)." : " lost (tail).")); + if (!game.isSimulation()) + game.informPlayers("[Flip a coin] " + getName() + (result ? " won (head)." : " lost (tail).")); GameEvent event = new GameEvent(GameEvent.EventType.FLIP_COIN, playerId, null, playerId, 0, result); event.setAppliedEffects(appliedEffects); game.replaceEvent(event); @@ -2772,7 +2784,8 @@ public abstract class PlayerImpl implements Player, Serializable { if (card instanceof PermanentCard) { card = game.getCard(card.getId()); } - game.informPlayers(new StringBuilder(this.getName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(this.getName()) .append(" puts ") .append(withName ? card.getLogName() : "a face down card") .append(" ") @@ -2849,18 +2862,20 @@ public abstract class PlayerImpl implements Player, Serializable { public boolean moveCardToGraveyardWithInfo(Card card, UUID sourceId, Game game, Zone fromZone) { boolean result = false; if (card.moveToZone(Zone.GRAVEYARD, sourceId, game, fromZone != null ? fromZone.equals(Zone.BATTLEFIELD) : false)) { - if (card instanceof PermanentCard) { - card = game.getCard(card.getId()); + if (!game.isSimulation()) { + if (card instanceof PermanentCard) { + card = game.getCard(card.getId()); + } + StringBuilder sb = new StringBuilder(this.getName()) + .append(" puts ").append(card.getLogName()).append(" ") + .append(fromZone != null ? new StringBuilder("from ").append(fromZone.toString().toLowerCase(Locale.ENGLISH)).append(" ") : ""); + if (card.getOwnerId().equals(getId())) { + sb.append("into his or her graveyard"); + } else { + sb.append("it into its owner's graveyard"); + } + game.informPlayers(sb.toString()); } - StringBuilder sb = new StringBuilder(this.getName()) - .append(" puts ").append(card.getLogName()).append(" ") - .append(fromZone != null ? new StringBuilder("from ").append(fromZone.toString().toLowerCase(Locale.ENGLISH)).append(" ") : ""); - if (card.getOwnerId().equals(getId())) { - sb.append("into his or her graveyard"); - } else { - sb.append("it into its owner's graveyard"); - } - game.informPlayers(sb.toString()); result = true; } return result; @@ -2870,28 +2885,30 @@ public abstract class PlayerImpl implements Player, Serializable { public boolean moveCardToLibraryWithInfo(Card card, UUID sourceId, Game game, Zone fromZone, boolean toTop, boolean withName) { boolean result = false; if (card.moveToZone(Zone.LIBRARY, sourceId, game, toTop)) { - if (card instanceof PermanentCard) { - card = game.getCard(card.getId()); - } - StringBuilder sb = new StringBuilder(this.getName()) - .append(" puts ").append(withName ? card.getLogName() : "a card").append(" "); - if (fromZone != null) { - if (fromZone.equals(Zone.PICK)) { - sb.append("a picked card "); + if (!game.isSimulation()) { + if (card instanceof PermanentCard) { + card = game.getCard(card.getId()); + } + StringBuilder sb = new StringBuilder(this.getName()) + .append(" puts ").append(withName ? card.getLogName() : "a card").append(" "); + if (fromZone != null) { + if (fromZone.equals(Zone.PICK)) { + sb.append("a picked card "); + } else { + sb.append("from ").append(fromZone.toString().toLowerCase(Locale.ENGLISH)).append(" "); + } + } + sb.append("to the ").append(toTop ? "top" : "bottom"); + if (card.getOwnerId().equals(getId())) { + sb.append(" of his or her library"); } else { - sb.append("from ").append(fromZone.toString().toLowerCase(Locale.ENGLISH)).append(" "); + Player player = game.getPlayer(card.getOwnerId()); + if (player != null) { + sb.append(" of ").append(player.getName()).append("'s library"); + } } + game.informPlayers(sb.toString()); } - sb.append("to the ").append(toTop ? "top" : "bottom"); - if (card.getOwnerId().equals(getId())) { - sb.append(" of his or her library"); - } else { - Player player = game.getPlayer(card.getOwnerId()); - if (player != null) { - sb.append(" of ").append(player.getName()).append("'s library"); - } - } - game.informPlayers(sb.toString()); result = true; } return result; @@ -2901,13 +2918,15 @@ public abstract class PlayerImpl implements Player, Serializable { public boolean moveCardToExileWithInfo(Card card, UUID exileId, String exileName, UUID sourceId, Game game, Zone fromZone) { boolean result = false; if (card.moveToExile(exileId, exileName, sourceId, game)) { - if (card instanceof PermanentCard) { - card = game.getCard(card.getId()); + if (!game.isSimulation()) { + if (card instanceof PermanentCard) { + card = game.getCard(card.getId()); + } + game.informPlayers(new StringBuilder(this.getName()) + .append(" moves ").append(card.getLogName()).append(" ") + .append(fromZone != null ? new StringBuilder("from ").append(fromZone.toString().toLowerCase(Locale.ENGLISH)).append(" ") : "") + .append("to exile").toString()); } - game.informPlayers(new StringBuilder(this.getName()) - .append(" moves ").append(card.getLogName()).append(" ") - .append(fromZone != null ? new StringBuilder("from ").append(fromZone.toString().toLowerCase(Locale.ENGLISH)).append(" ") : "") - .append("to exile").toString()); result = true; } return result; @@ -2927,7 +2946,8 @@ public abstract class PlayerImpl implements Player, Serializable { public boolean putOntoBattlefieldWithInfo(Card card, Game game, Zone fromZone, UUID sourceId, boolean tapped, boolean facedown) { boolean result = false; if (card.putOntoBattlefield(game, fromZone, sourceId, this.getId(), tapped, facedown)) { - game.informPlayers(new StringBuilder(this.getName()) + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(this.getName()) .append(" puts ").append(facedown ? "a card face down ":card.getLogName()) .append(" from ").append(fromZone.toString().toLowerCase(Locale.ENGLISH)).append(" ") .append("onto the Battlefield").toString()); diff --git a/Mage/src/mage/target/TargetSource.java b/Mage/src/mage/target/TargetSource.java index e57b2760ea..84b9c5bf6a 100644 --- a/Mage/src/mage/target/TargetSource.java +++ b/Mage/src/mage/target/TargetSource.java @@ -92,7 +92,7 @@ public class TargetSource extends TargetObject { else { addTarget(id, source, game, notTarget); } - if (object != null) { + if (object != null && !game.isSimulation()) { game.informPlayers("Selected " + object.getLogName() + " as source"); } } diff --git a/Mage/src/mage/watchers/common/CommanderInfoWatcher.java b/Mage/src/mage/watchers/common/CommanderInfoWatcher.java index eccce0af19..57cc1d8334 100644 --- a/Mage/src/mage/watchers/common/CommanderInfoWatcher.java +++ b/Mage/src/mage/watchers/common/CommanderInfoWatcher.java @@ -88,7 +88,8 @@ public class CommanderInfoWatcher extends Watcher { Player player = game.getPlayer(playerUUID); MageObject commander = game.getObject(sourceId); if (player != null && commander != null){ - game.informPlayers(commander.getLogName() + " did " + damage + " combat damage to " + player.getName() + " during the game."); + if (!game.isSimulation()) + game.informPlayers(commander.getLogName() + " did " + damage + " combat damage to " + player.getName() + " during the game."); this.addCardInfoToCommander(game); } } diff --git a/Mage/src/mage/watchers/common/SoulbondWatcher.java b/Mage/src/mage/watchers/common/SoulbondWatcher.java index 1e068d9e40..4acc178b30 100644 --- a/Mage/src/mage/watchers/common/SoulbondWatcher.java +++ b/Mage/src/mage/watchers/common/SoulbondWatcher.java @@ -88,7 +88,8 @@ public class SoulbondWatcher extends Watcher { if (chosen != null) { chosen.setPairedCard(permanent.getId()); permanent.setPairedCard(chosen.getId()); - game.informPlayers(new StringBuilder(controller.getName()).append(" souldbonds ").append(permanent.getLogName()).append(" with ").append(chosen.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" souldbonds ").append(permanent.getLogName()).append(" with ").append(chosen.getName()).toString()); } } } @@ -112,7 +113,8 @@ public class SoulbondWatcher extends Watcher { if (controller.chooseUse(Outcome.Benefit, "Use Soulbond for recent " + permanent.getLogName() + "?", game)) { chosen.setPairedCard(permanent.getId()); permanent.setPairedCard(chosen.getId()); - game.informPlayers(new StringBuilder(controller.getName()).append(" souldbonds ").append(permanent.getLogName()).append(" with ").append(chosen.getName()).toString()); + if (!game.isSimulation()) + game.informPlayers(new StringBuilder(controller.getName()).append(" souldbonds ").append(permanent.getLogName()).append(" with ").append(chosen.getName()).toString()); break; } } From df835712a2321043dcd8f600499ecbf385591019 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Tue, 31 Mar 2015 14:15:26 -0300 Subject: [PATCH 016/175] Fixes to Duskwalker and Kuva Titan Fixes them to not use Triggered Abilities. --- Mage.Sets/src/mage/sets/invasion/Duskwalker.java | 14 ++++++-------- Mage.Sets/src/mage/sets/invasion/KavuTitan.java | 13 ++++++------- 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/Mage.Sets/src/mage/sets/invasion/Duskwalker.java b/Mage.Sets/src/mage/sets/invasion/Duskwalker.java index 99e6110669..b84257e1b6 100644 --- a/Mage.Sets/src/mage/sets/invasion/Duskwalker.java +++ b/Mage.Sets/src/mage/sets/invasion/Duskwalker.java @@ -30,10 +30,8 @@ package mage.sets.invasion; import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; - -import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.common.KickedCondition;; -import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.FearAbility; @@ -62,11 +60,11 @@ public class Duskwalker extends CardImpl { this.addAbility(new KickerAbility("{3}{B}")); // If Duskwalker was kicked, it enters the battlefield with two +1/+1 counters on it and with fear. - Ability ability = new ConditionalTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2))), - KickedCondition.getInstance(),"If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with fear."); - ability.addEffect(new GainAbilitySourceEffect(FearAbility.getInstance(), Duration.WhileOnBattlefield)); - this.addAbility(ability); + Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(2)), + KickedCondition.getInstance(), true, + "If {this} was kicked, it enters the battlefield with two +1/+1 counters on it and with fear.", ""); + ability.addEffect(new GainAbilitySourceEffect(FearAbility.getInstance(), Duration.WhileOnBattlefield)); + this.addAbility(ability); } public Duskwalker(final Duskwalker card) { diff --git a/Mage.Sets/src/mage/sets/invasion/KavuTitan.java b/Mage.Sets/src/mage/sets/invasion/KavuTitan.java index c648af4ab1..fc79256dae 100644 --- a/Mage.Sets/src/mage/sets/invasion/KavuTitan.java +++ b/Mage.Sets/src/mage/sets/invasion/KavuTitan.java @@ -32,9 +32,8 @@ import mage.constants.CardType; import mage.constants.Rarity; import mage.MageInt; import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAbility; import mage.abilities.condition.common.KickedCondition; -import mage.abilities.decorator.ConditionalTriggeredAbility; import mage.abilities.effects.common.continuous.GainAbilitySourceEffect; import mage.abilities.effects.common.counter.AddCountersSourceEffect; import mage.abilities.keyword.KickerAbility; @@ -61,11 +60,11 @@ public class KavuTitan extends CardImpl { // Kicker {2}{G} this.addAbility(new KickerAbility("{2}{G}")); // If Kavu Titan was kicked, it enters the battlefield with three +1/+1 counters on it and with trample. - Ability ability = new ConditionalTriggeredAbility( - new EntersBattlefieldTriggeredAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3))), - KickedCondition.getInstance(),"If Kavu Titan was kicked, it enters the battlefield with three +1/+1 counters on it and with trample."); - ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield)); - this.addAbility(ability); + Ability ability = new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), + KickedCondition.getInstance(), true, + "If Kavu Titan was kicked, it enters the battlefield with three +1/+1 counters on it and with trample.", ""); + ability.addEffect(new GainAbilitySourceEffect(TrampleAbility.getInstance(), Duration.WhileOnBattlefield)); + this.addAbility(ability); } public KavuTitan(final KavuTitan card) { From 670be8eda70dbcfade0beac87592b3b54464da4c Mon Sep 17 00:00:00 2001 From: fireshoes Date: Tue, 31 Mar 2015 13:05:36 -0500 Subject: [PATCH 017/175] [TPR] Added some additional black Tempest Remastered cards --- .../src/mage/sets/exodus/DauthiJackal.java | 52 ++++ .../src/mage/sets/exodus/DauthiWarlord.java | 52 ++++ .../src/mage/sets/exodus/DeathsDuet.java | 52 ++++ Mage.Sets/src/mage/sets/exodus/Fugue.java | 52 ++++ .../src/mage/sets/exodus/VampireHounds.java | 72 ++++++ .../src/mage/sets/exodus/WaywardSoul.java | 52 ++++ .../mage/sets/prereleaseevents/Revenant.java | 54 +++++ .../src/mage/sets/seventhedition/Fugue.java | 60 +++++ .../mage/sets/seventhedition/Revenant.java | 54 +++++ .../src/mage/sets/stronghold/DeathStroke.java | 68 ++++++ .../mage/sets/stronghold/DungeonShade.java | 71 ++++++ .../src/mage/sets/stronghold/Revenant.java | 54 +++++ .../mage/sets/tempest/SkyshroudVampire.java | 52 ++++ .../src/mage/sets/tempest/SpinalGraft.java | 52 ++++ .../sets/tempestremastered/DauthiJackal.java | 77 ++++++ .../sets/tempestremastered/DauthiWarlord.java | 82 +++++++ .../sets/tempestremastered/DeathStroke.java | 52 ++++ .../sets/tempestremastered/DeathsDuet.java | 61 +++++ .../sets/tempestremastered/DungeonShade.java | 52 ++++ .../mage/sets/tempestremastered/Fugue.java | 52 ++++ .../mage/sets/tempestremastered/Revenant.java | 72 ++++++ .../tempestremastered/SkyshroudVampire.java | 75 ++++++ .../sets/tempestremastered/SpinalGraft.java | 52 ++++ .../sets/tempestremastered/VampireHounds.java | 52 ++++ .../sets/tempestremastered/WaywardSoul.java | 69 ++++++ .../mage/sets/vintagemasters/SpinalGraft.java | 118 +++++++++ .../ExploitCreatureTriggeredAbility.java | 176 +++++++------- .../abilities/keyword/ExploitAbility.java | 228 +++++++++--------- Mage/src/mage/game/events/GameEvent.java | 2 +- 29 files changed, 1814 insertions(+), 203 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/exodus/DauthiJackal.java create mode 100644 Mage.Sets/src/mage/sets/exodus/DauthiWarlord.java create mode 100644 Mage.Sets/src/mage/sets/exodus/DeathsDuet.java create mode 100644 Mage.Sets/src/mage/sets/exodus/Fugue.java create mode 100644 Mage.Sets/src/mage/sets/exodus/VampireHounds.java create mode 100644 Mage.Sets/src/mage/sets/exodus/WaywardSoul.java create mode 100644 Mage.Sets/src/mage/sets/prereleaseevents/Revenant.java create mode 100644 Mage.Sets/src/mage/sets/seventhedition/Fugue.java create mode 100644 Mage.Sets/src/mage/sets/seventhedition/Revenant.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/DeathStroke.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/DungeonShade.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/Revenant.java create mode 100644 Mage.Sets/src/mage/sets/tempest/SkyshroudVampire.java create mode 100644 Mage.Sets/src/mage/sets/tempest/SpinalGraft.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DauthiJackal.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DauthiWarlord.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DeathStroke.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DeathsDuet.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/DungeonShade.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Fugue.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Revenant.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SkyshroudVampire.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpinalGraft.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VampireHounds.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WaywardSoul.java create mode 100644 Mage.Sets/src/mage/sets/vintagemasters/SpinalGraft.java diff --git a/Mage.Sets/src/mage/sets/exodus/DauthiJackal.java b/Mage.Sets/src/mage/sets/exodus/DauthiJackal.java new file mode 100644 index 0000000000..de2c55fd16 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/DauthiJackal.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DauthiJackal extends mage.sets.tempestremastered.DauthiJackal { + + public DauthiJackal(UUID ownerId) { + super(ownerId); + this.cardNumber = 58; + this.expansionSetCode = "EXO"; + } + + public DauthiJackal(final DauthiJackal card) { + super(card); + } + + @Override + public DauthiJackal copy() { + return new DauthiJackal(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/DauthiWarlord.java b/Mage.Sets/src/mage/sets/exodus/DauthiWarlord.java new file mode 100644 index 0000000000..e255fdd55a --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/DauthiWarlord.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DauthiWarlord extends mage.sets.tempestremastered.DauthiWarlord { + + public DauthiWarlord(UUID ownerId) { + super(ownerId); + this.cardNumber = 59; + this.expansionSetCode = "EXO"; + } + + public DauthiWarlord(final DauthiWarlord card) { + super(card); + } + + @Override + public DauthiWarlord copy() { + return new DauthiWarlord(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/DeathsDuet.java b/Mage.Sets/src/mage/sets/exodus/DeathsDuet.java new file mode 100644 index 0000000000..a99c35963a --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/DeathsDuet.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DeathsDuet extends mage.sets.tempestremastered.DeathsDuet { + + public DeathsDuet(UUID ownerId) { + super(ownerId); + this.cardNumber = 60; + this.expansionSetCode = "EXO"; + } + + public DeathsDuet(final DeathsDuet card) { + super(card); + } + + @Override + public DeathsDuet copy() { + return new DeathsDuet(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/Fugue.java b/Mage.Sets/src/mage/sets/exodus/Fugue.java new file mode 100644 index 0000000000..f5b7b580aa --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/Fugue.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Fugue extends mage.sets.seventhedition.Fugue { + + public Fugue(UUID ownerId) { + super(ownerId); + this.cardNumber = 62; + this.expansionSetCode = "EXO"; + } + + public Fugue(final Fugue card) { + super(card); + } + + @Override + public Fugue copy() { + return new Fugue(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/VampireHounds.java b/Mage.Sets/src/mage/sets/exodus/VampireHounds.java new file mode 100644 index 0000000000..6df8d67031 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/VampireHounds.java @@ -0,0 +1,72 @@ +/* + * 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.exodus; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardTargetCost; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreatureCard; +import mage.target.common.TargetCardInHand; + +/** + * + * @author fireshoes + */ +public class VampireHounds extends CardImpl { + + public VampireHounds(UUID ownerId) { + super(ownerId, 77, "Vampire Hounds", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}"); + this.expansionSetCode = "EXO"; + this.subtype.add("Vampire"); + this.subtype.add("Hound"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Discard a creature card: Vampire Hounds gets +2/+2 until end of turn. + this.addAbility(new SimpleActivatedAbility( + Zone.BATTLEFIELD, + new BoostSourceEffect(2, 2, Duration.EndOfTurn), + new DiscardTargetCost(new TargetCardInHand(new FilterCreatureCard())))); + } + + public VampireHounds(final VampireHounds card) { + super(card); + } + + @Override + public VampireHounds copy() { + return new VampireHounds(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/WaywardSoul.java b/Mage.Sets/src/mage/sets/exodus/WaywardSoul.java new file mode 100644 index 0000000000..16a1f42569 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/WaywardSoul.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WaywardSoul extends mage.sets.tempestremastered.WaywardSoul { + + public WaywardSoul(UUID ownerId) { + super(ownerId); + this.cardNumber = 51; + this.expansionSetCode = "EXO"; + } + + public WaywardSoul(final WaywardSoul card) { + super(card); + } + + @Override + public WaywardSoul copy() { + return new WaywardSoul(this); + } +} diff --git a/Mage.Sets/src/mage/sets/prereleaseevents/Revenant.java b/Mage.Sets/src/mage/sets/prereleaseevents/Revenant.java new file mode 100644 index 0000000000..9e961fb766 --- /dev/null +++ b/Mage.Sets/src/mage/sets/prereleaseevents/Revenant.java @@ -0,0 +1,54 @@ +/* + * 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.prereleaseevents; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Revenant extends mage.sets.tempestremastered.Revenant { + + public Revenant(UUID ownerId) { + super(ownerId); + this.cardNumber = 2; + this.expansionSetCode = "PTC"; + this.rarity = Rarity.SPECIAL; + } + + public Revenant(final Revenant card) { + super(card); + } + + @Override + public Revenant copy() { + return new Revenant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/seventhedition/Fugue.java b/Mage.Sets/src/mage/sets/seventhedition/Fugue.java new file mode 100644 index 0000000000..428454617a --- /dev/null +++ b/Mage.Sets/src/mage/sets/seventhedition/Fugue.java @@ -0,0 +1,60 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.seventhedition; + +import java.util.UUID; +import mage.abilities.effects.common.discard.DiscardTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.TargetPlayer; + +/** + * + * @author fireshoes + */ +public class Fugue extends CardImpl { + + public Fugue(UUID ownerId) { + super(ownerId, 137, "Fugue", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{B}{B}"); + this.expansionSetCode = "7ED"; + + // Target player discards three cards. + this.getSpellAbility().addEffect(new DiscardTargetEffect(3)); + this.getSpellAbility().addTarget(new TargetPlayer()); + } + + public Fugue(final Fugue card) { + super(card); + } + + @Override + public Fugue copy() { + return new Fugue(this); + } +} diff --git a/Mage.Sets/src/mage/sets/seventhedition/Revenant.java b/Mage.Sets/src/mage/sets/seventhedition/Revenant.java new file mode 100644 index 0000000000..8fa4998502 --- /dev/null +++ b/Mage.Sets/src/mage/sets/seventhedition/Revenant.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.seventhedition; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Revenant extends mage.sets.tempestremastered.Revenant { + + public Revenant(UUID ownerId) { + super(ownerId); + this.cardNumber = 160; + this.expansionSetCode = "7ED"; + this.rarity = Rarity.RARE; + } + + public Revenant(final Revenant card) { + super(card); + } + + @Override + public Revenant copy() { + return new Revenant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/DeathStroke.java b/Mage.Sets/src/mage/sets/stronghold/DeathStroke.java new file mode 100644 index 0000000000..ed3c237d16 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/DeathStroke.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.stronghold; + +import java.util.UUID; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.TappedPredicate; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class DeathStroke extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("tapped creature"); + + static { + filter.add(new TappedPredicate()); + } + + public DeathStroke(UUID ownerId) { + super(ownerId, 7, "Death Stroke", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{B}{B}"); + this.expansionSetCode = "STH"; + + // Destroy target tapped creature. + this.getSpellAbility().addTarget(new TargetCreaturePermanent(filter)); + this.getSpellAbility().addEffect(new DestroyTargetEffect()); + } + + public DeathStroke(final DeathStroke card) { + super(card); + } + + @Override + public DeathStroke copy() { + return new DeathStroke(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/DungeonShade.java b/Mage.Sets/src/mage/sets/stronghold/DungeonShade.java new file mode 100644 index 0000000000..d49671c3b7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/DungeonShade.java @@ -0,0 +1,71 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class DungeonShade extends CardImpl { + + public DungeonShade(UUID ownerId) { + super(ownerId, 8, "Dungeon Shade", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{B}"); + this.expansionSetCode = "STH"; + this.subtype.add("Shade"); + this.subtype.add("Spirit"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // {B}: Dungeon Shade gets +1/+1 until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("B"))); + } + + public DungeonShade(final DungeonShade card) { + super(card); + } + + @Override + public DungeonShade copy() { + return new DungeonShade(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/Revenant.java b/Mage.Sets/src/mage/sets/stronghold/Revenant.java new file mode 100644 index 0000000000..1f4e20d494 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/Revenant.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Revenant extends mage.sets.tempestremastered.Revenant { + + public Revenant(UUID ownerId) { + super(ownerId); + this.cardNumber = 18; + this.expansionSetCode = "STH"; + this.rarity = Rarity.RARE; + } + + public Revenant(final Revenant card) { + super(card); + } + + @Override + public Revenant copy() { + return new Revenant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/SkyshroudVampire.java b/Mage.Sets/src/mage/sets/tempest/SkyshroudVampire.java new file mode 100644 index 0000000000..aa602e378b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/SkyshroudVampire.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SkyshroudVampire extends mage.sets.tempestremastered.SkyshroudVampire { + + public SkyshroudVampire(UUID ownerId) { + super(ownerId); + this.cardNumber = 51; + this.expansionSetCode = "TMP"; + } + + public SkyshroudVampire(final SkyshroudVampire card) { + super(card); + } + + @Override + public SkyshroudVampire copy() { + return new SkyshroudVampire(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/SpinalGraft.java b/Mage.Sets/src/mage/sets/tempest/SpinalGraft.java new file mode 100644 index 0000000000..40df20602c --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/SpinalGraft.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpinalGraft extends mage.sets.vintagemasters.SpinalGraft { + + public SpinalGraft(UUID ownerId) { + super(ownerId); + this.cardNumber = 53; + this.expansionSetCode = "TMP"; + } + + public SpinalGraft(final SpinalGraft card) { + super(card); + } + + @Override + public SpinalGraft copy() { + return new SpinalGraft(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DauthiJackal.java b/Mage.Sets/src/mage/sets/tempestremastered/DauthiJackal.java new file mode 100644 index 0000000000..65d35d84c4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DauthiJackal.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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterBlockingCreature; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class DauthiJackal extends CardImpl { + + public DauthiJackal(UUID ownerId) { + super(ownerId, 95, "Dauthi Jackal", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{B}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Dauthi"); + this.subtype.add("Hound"); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + // Shadow + this.addAbility(ShadowAbility.getInstance()); + + // {B}{B}, Sacrifice Dauthi Jackal: Destroy target blocking creature. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DestroyTargetEffect(), new ManaCostsImpl("{B}{B}")); + ability.addCost(new SacrificeSourceCost()); + ability.addTarget(new TargetCreaturePermanent(new FilterBlockingCreature())); + this.addAbility(ability); + } + + public DauthiJackal(final DauthiJackal card) { + super(card); + } + + @Override + public DauthiJackal copy() { + return new DauthiJackal(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DauthiWarlord.java b/Mage.Sets/src/mage/sets/tempestremastered/DauthiWarlord.java new file mode 100644 index 0000000000..f1d34672c5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DauthiWarlord.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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.SetPowerSourceEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; + +/** + * + * @author fireshoes + */ +public class DauthiWarlord extends CardImpl { + + private static final FilterPermanent filter = new FilterCreaturePermanent("creatures with shadow"); + + static{ + filter.add(new AbilityPredicate(ShadowAbility.class)); + } + + public DauthiWarlord(UUID ownerId) { + super(ownerId, 98, "Dauthi Warlord", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{B}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Dauthi"); + this.subtype.add("Soldier"); + this.power = new MageInt(0); + this.toughness = new MageInt(1); + + // Shadow + this.addAbility(ShadowAbility.getInstance()); + + // Dauthi Warlord's power is equal to the number of creatures with shadow on the battlefield. + Effect effect = new SetPowerSourceEffect(new PermanentsOnBattlefieldCount(filter), Duration.EndOfGame); + this.addAbility(new SimpleStaticAbility(Zone.ALL, effect)); + } + + public DauthiWarlord(final DauthiWarlord card) { + super(card); + } + + @Override + public DauthiWarlord copy() { + return new DauthiWarlord(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DeathStroke.java b/Mage.Sets/src/mage/sets/tempestremastered/DeathStroke.java new file mode 100644 index 0000000000..765c68cd33 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DeathStroke.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DeathStroke extends mage.sets.stronghold.DeathStroke { + + public DeathStroke(UUID ownerId) { + super(ownerId); + this.cardNumber = 100; + this.expansionSetCode = "TPR"; + } + + public DeathStroke(final DeathStroke card) { + super(card); + } + + @Override + public DeathStroke copy() { + return new DeathStroke(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DeathsDuet.java b/Mage.Sets/src/mage/sets/tempestremastered/DeathsDuet.java new file mode 100644 index 0000000000..26643d678c --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DeathsDuet.java @@ -0,0 +1,61 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.abilities.effects.common.ReturnFromGraveyardToHandTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreatureCard; +import mage.target.common.TargetCardInYourGraveyard; + +/** + * + * @author fireshoes + */ +public class DeathsDuet extends CardImpl { + + public DeathsDuet(UUID ownerId) { + super(ownerId, 101, "Death's Duet", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{2}{B}"); + this.expansionSetCode = "TPR"; + + // Return two target creature cards from your graveyard to your hand. + this.getSpellAbility().addEffect(new ReturnFromGraveyardToHandTargetEffect()); + this.getSpellAbility().addTarget(new TargetCardInYourGraveyard(2, new FilterCreatureCard("creature cards from your graveyard"))); + } + + public DeathsDuet(final DeathsDuet card) { + super(card); + } + + @Override + public DeathsDuet copy() { + return new DeathsDuet(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/DungeonShade.java b/Mage.Sets/src/mage/sets/tempestremastered/DungeonShade.java new file mode 100644 index 0000000000..3cbb2616f3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/DungeonShade.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class DungeonShade extends mage.sets.stronghold.DungeonShade { + + public DungeonShade(UUID ownerId) { + super(ownerId); + this.cardNumber = 103; + this.expansionSetCode = "TPR"; + } + + public DungeonShade(final DungeonShade card) { + super(card); + } + + @Override + public DungeonShade copy() { + return new DungeonShade(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Fugue.java b/Mage.Sets/src/mage/sets/tempestremastered/Fugue.java new file mode 100644 index 0000000000..3a9ad82a7a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Fugue.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Fugue extends mage.sets.seventhedition.Fugue { + + public Fugue(UUID ownerId) { + super(ownerId); + this.cardNumber = 105; + this.expansionSetCode = "TPR"; + } + + public Fugue(final Fugue card) { + super(card); + } + + @Override + public Fugue copy() { + return new Fugue(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Revenant.java b/Mage.Sets/src/mage/sets/tempestremastered/Revenant.java new file mode 100644 index 0000000000..e72b44e542 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Revenant.java @@ -0,0 +1,72 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.dynamicvalue.common.CardsInControllerGraveyardCount; +import mage.abilities.effects.common.continuous.SetPowerToughnessSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreatureCard; + +/** + * + * @author fireshoes + */ +public class Revenant extends CardImpl { + + public Revenant(UUID ownerId) { + super(ownerId, 114, "Revenant", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{B}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Spirit"); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Revenant's power and toughness are each equal to the number of creature cards in your graveyard. + CardsInControllerGraveyardCount count = new CardsInControllerGraveyardCount(new FilterCreatureCard("creature cards")); + this.addAbility(new SimpleStaticAbility(Zone.ALL, new SetPowerToughnessSourceEffect(count, Duration.EndOfGame))); + } + + public Revenant(final Revenant card) { + super(card); + } + + @Override + public Revenant copy() { + return new Revenant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudVampire.java b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudVampire.java new file mode 100644 index 0000000000..83f3747601 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SkyshroudVampire.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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardTargetCost; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreatureCard; +import mage.target.common.TargetCardInHand; + +/** + * + * @author fireshoes + */ +public class SkyshroudVampire extends CardImpl { + + public SkyshroudVampire(UUID ownerId) { + super(ownerId, 118, "Skyshroud Vampire", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{B}{B}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Vampire"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Discard a creature card: Skyshroud Vampire gets +2/+2 until end of turn. + this.addAbility(new SimpleActivatedAbility( + Zone.BATTLEFIELD, + new BoostSourceEffect(2,2, Duration.EndOfTurn), + new DiscardTargetCost(new TargetCardInHand(new FilterCreatureCard())))); + } + + public SkyshroudVampire(final SkyshroudVampire card) { + super(card); + } + + @Override + public SkyshroudVampire copy() { + return new SkyshroudVampire(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpinalGraft.java b/Mage.Sets/src/mage/sets/tempestremastered/SpinalGraft.java new file mode 100644 index 0000000000..0a01251fab --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpinalGraft.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpinalGraft extends mage.sets.vintagemasters.SpinalGraft { + + public SpinalGraft(UUID ownerId) { + super(ownerId); + this.cardNumber = 119; + this.expansionSetCode = "TPR"; + } + + public SpinalGraft(final SpinalGraft card) { + super(card); + } + + @Override + public SpinalGraft copy() { + return new SpinalGraft(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VampireHounds.java b/Mage.Sets/src/mage/sets/tempestremastered/VampireHounds.java new file mode 100644 index 0000000000..3fa4bf94fb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VampireHounds.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class VampireHounds extends mage.sets.exodus.VampireHounds { + + public VampireHounds(UUID ownerId) { + super(ownerId); + this.cardNumber = 122; + this.expansionSetCode = "TPR"; + } + + public VampireHounds(final VampireHounds card) { + super(card); + } + + @Override + public VampireHounds copy() { + return new VampireHounds(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WaywardSoul.java b/Mage.Sets/src/mage/sets/tempestremastered/WaywardSoul.java new file mode 100644 index 0000000000..f67ce4f563 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WaywardSoul.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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.PutOnLibrarySourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class WaywardSoul extends CardImpl { + + public WaywardSoul(UUID ownerId) { + super(ownerId, 78, "Wayward Soul", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{U}{U}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Spirit"); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // {U}: Put Wayward Soul on top of its owner's library. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new PutOnLibrarySourceEffect(true), new ManaCostsImpl("{U}"))); + } + + public WaywardSoul(final WaywardSoul card) { + super(card); + } + + @Override + public WaywardSoul copy() { + return new WaywardSoul(this); + } +} diff --git a/Mage.Sets/src/mage/sets/vintagemasters/SpinalGraft.java b/Mage.Sets/src/mage/sets/vintagemasters/SpinalGraft.java new file mode 100644 index 0000000000..5ef23730e2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/vintagemasters/SpinalGraft.java @@ -0,0 +1,118 @@ +/* + * 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.vintagemasters; + +import java.util.UUID; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.abilities.effects.common.continuous.BoostEnchantedEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.target.TargetPermanent; +import mage.target.common.TargetCreaturePermanent; +import mage.target.targetpointer.FixedTarget; + +/** + * + * @author fireshoes + */ +public class SpinalGraft extends CardImpl { + + public SpinalGraft(UUID ownerId) { + super(ownerId, 141, "Spinal Graft", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{1}{B}"); + this.expansionSetCode = "VMA"; + this.subtype.add("Aura"); + + // Enchant creature + TargetPermanent auraTarget = new TargetCreaturePermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.BoostCreature)); + this.addAbility(new EnchantAbility(auraTarget.getTargetName())); + + // Enchanted creature gets +3/+3. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(3, 3, Duration.WhileOnBattlefield))); + + // When enchanted creature becomes the target of a spell or ability, destroy that creature. It can't be regenerated. + this.addAbility(new SpinalGraftTriggeredAbility()); + } + + public SpinalGraft(final SpinalGraft card) { + super(card); + } + + @Override + public SpinalGraft copy() { + return new SpinalGraft(this); + } +} + +class SpinalGraftTriggeredAbility extends TriggeredAbilityImpl { + + public SpinalGraftTriggeredAbility() { + super(Zone.BATTLEFIELD, new DestroyTargetEffect(true)); + } + + public SpinalGraftTriggeredAbility(final SpinalGraftTriggeredAbility ability) { + super(ability); + } + + @Override + public SpinalGraftTriggeredAbility copy() { + return new SpinalGraftTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == GameEvent.EventType.TARGETED) { + Permanent enchantment = game.getPermanent(sourceId); + if (enchantment != null && enchantment.getAttachedTo() != null) { + UUID enchanted = enchantment.getAttachedTo(); + if (event.getTargetId().equals(enchanted)) { + getEffects().get(0).setTargetPointer(new FixedTarget(enchanted)); + return true; + } + } + } + return false; + } + + @Override + public String getRule() { + return "When enchanted creature becomes the target of a spell or ability, destroy that creature. It can't be regenerated."; + } +} diff --git a/Mage/src/mage/abilities/common/ExploitCreatureTriggeredAbility.java b/Mage/src/mage/abilities/common/ExploitCreatureTriggeredAbility.java index 23326fb95f..6e26c73db7 100644 --- a/Mage/src/mage/abilities/common/ExploitCreatureTriggeredAbility.java +++ b/Mage/src/mage/abilities/common/ExploitCreatureTriggeredAbility.java @@ -1,88 +1,88 @@ -/* - * 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.abilities.common; - -import mage.abilities.TriggeredAbilityImpl; -import mage.abilities.effects.Effect; -import mage.constants.SetTargetPointer; -import mage.constants.Zone; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.target.targetpointer.FixedTarget; - -/** - * - * @author LevelX2 - */ -public class ExploitCreatureTriggeredAbility extends TriggeredAbilityImpl { - - private SetTargetPointer setTargetPointer; - - public ExploitCreatureTriggeredAbility(Effect effect, boolean optional) { - this(effect, optional, SetTargetPointer.NONE); - } - - public ExploitCreatureTriggeredAbility(Effect effect, boolean optional, SetTargetPointer setTargetPointer) { - super(Zone.ALL, effect, optional); - this.setTargetPointer = setTargetPointer; - } - - public ExploitCreatureTriggeredAbility(final ExploitCreatureTriggeredAbility ability) { - super(ability); - this.setTargetPointer = ability.setTargetPointer; - } - - @Override - public ExploitCreatureTriggeredAbility copy() { - return new ExploitCreatureTriggeredAbility(this); - } - - @Override - public boolean checkEventType(GameEvent event, Game game) { - return event.getType() == GameEvent.EventType.EXPLOIDED_CREATURE; - } - - @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getSourceId().equals(getSourceId())) { - for (Effect effect: getEffects()) { - if (setTargetPointer.equals(SetTargetPointer.PERMANENT)) { - effect.setTargetPointer(new FixedTarget(event.getTargetId())); - } - } - return true; - } - return false; - } - - @Override - public String getRule() { - return "When {this} exploits a creature, " + super.getRule(); - } -} - +/* + * 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.abilities.common; + +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.Effect; +import mage.constants.SetTargetPointer; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.target.targetpointer.FixedTarget; + +/** + * + * @author LevelX2 + */ +public class ExploitCreatureTriggeredAbility extends TriggeredAbilityImpl { + + private SetTargetPointer setTargetPointer; + + public ExploitCreatureTriggeredAbility(Effect effect, boolean optional) { + this(effect, optional, SetTargetPointer.NONE); + } + + public ExploitCreatureTriggeredAbility(Effect effect, boolean optional, SetTargetPointer setTargetPointer) { + super(Zone.ALL, effect, optional); + this.setTargetPointer = setTargetPointer; + } + + public ExploitCreatureTriggeredAbility(final ExploitCreatureTriggeredAbility ability) { + super(ability); + this.setTargetPointer = ability.setTargetPointer; + } + + @Override + public ExploitCreatureTriggeredAbility copy() { + return new ExploitCreatureTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.EXPLOITED_CREATURE; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getSourceId().equals(getSourceId())) { + for (Effect effect: getEffects()) { + if (setTargetPointer.equals(SetTargetPointer.PERMANENT)) { + effect.setTargetPointer(new FixedTarget(event.getTargetId())); + } + } + return true; + } + return false; + } + + @Override + public String getRule() { + return "When {this} exploits a creature, " + super.getRule(); + } +} + diff --git a/Mage/src/mage/abilities/keyword/ExploitAbility.java b/Mage/src/mage/abilities/keyword/ExploitAbility.java index 02184aa92d..4b7fe527a1 100644 --- a/Mage/src/mage/abilities/keyword/ExploitAbility.java +++ b/Mage/src/mage/abilities/keyword/ExploitAbility.java @@ -1,114 +1,114 @@ -/* - * 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.abilities.keyword; - -import mage.abilities.Ability; -import mage.abilities.common.EntersBattlefieldTriggeredAbility; -import mage.abilities.effects.OneShotEffect; -import mage.constants.Outcome; -import mage.filter.common.FilterControlledCreaturePermanent; -import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.permanent.Permanent; -import mage.players.Player; -import mage.target.Target; -import mage.target.TargetPermanent; - -/** - * Exploit is the signature ability of the blue-black Silumgar clan. When a creature with exploit - * enters the battlefield, you may sacrifice a creature you control. - * - * But you're not just sacrificing your loyal minions for fun. Each creature with exploit has - * another ability that gives you a benefit when it "exploits a creature." This means when you - * sacrifice a creature because of its exploit ability. That ability doesn't trigger if you - * sacrifice a creature for any other reason, including the exploit ability of a different creature. - * - * You can sacrifice any creature you control when the exploit ability resolves, including the creature - * with exploit itself. You don't have to sacrifice a creature if you don't want to. If you do, you choose - * which one as the exploit ability resolves. To get the most out of your minions, look for creatures - * with abilities that give you an added benefit when they die. - * - * @author LevelX2 - */ -public class ExploitAbility extends EntersBattlefieldTriggeredAbility { - - public ExploitAbility() { - super(new ExploitEffect(), true); - } - - public ExploitAbility(final ExploitAbility ability) { - super(ability); - } - - @Override - public ExploitAbility copy() { - return new ExploitAbility(this); - } - - @Override - public String getRule() { - return "Exploit (When this creature enters the battlefield, you may sacrifice a creature.)"; - } - -} - -class ExploitEffect extends OneShotEffect { - - public ExploitEffect() { - super(Outcome.Detriment); - this.staticText = "you may sacrifice a creature"; - } - - public ExploitEffect(final ExploitEffect effect) { - super(effect); - } - - @Override - public ExploitEffect copy() { - return new ExploitEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - Target target = new TargetPermanent(1, 1, new FilterControlledCreaturePermanent("creature to exploid"), true); - if (target.canChoose(source.getSourceId(), controller.getId(), game)) { - controller.chooseTarget(Outcome.Sacrifice, target, source, game); - Permanent permanent = game.getPermanent(target.getFirstTarget()); - if (permanent != null ) { - if (permanent.sacrifice(source.getSourceId(), game)) { - game.fireEvent(GameEvent.getEvent(GameEvent.EventType.EXPLOIDED_CREATURE, permanent.getId(), source.getSourceId(), controller.getId())); - } - } - } - return true; - } - return false; - } -} +/* + * 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.abilities.keyword; + +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.constants.Outcome; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.Target; +import mage.target.TargetPermanent; + +/** + * Exploit is the signature ability of the blue-black Silumgar clan. When a creature with exploit + * enters the battlefield, you may sacrifice a creature you control. + * + * But you're not just sacrificing your loyal minions for fun. Each creature with exploit has + * another ability that gives you a benefit when it "exploits a creature." This means when you + * sacrifice a creature because of its exploit ability. That ability doesn't trigger if you + * sacrifice a creature for any other reason, including the exploit ability of a different creature. + * + * You can sacrifice any creature you control when the exploit ability resolves, including the creature + * with exploit itself. You don't have to sacrifice a creature if you don't want to. If you do, you choose + * which one as the exploit ability resolves. To get the most out of your minions, look for creatures + * with abilities that give you an added benefit when they die. + * + * @author LevelX2 + */ +public class ExploitAbility extends EntersBattlefieldTriggeredAbility { + + public ExploitAbility() { + super(new ExploitEffect(), true); + } + + public ExploitAbility(final ExploitAbility ability) { + super(ability); + } + + @Override + public ExploitAbility copy() { + return new ExploitAbility(this); + } + + @Override + public String getRule() { + return "Exploit (When this creature enters the battlefield, you may sacrifice a creature.)"; + } + +} + +class ExploitEffect extends OneShotEffect { + + public ExploitEffect() { + super(Outcome.Detriment); + this.staticText = "you may sacrifice a creature"; + } + + public ExploitEffect(final ExploitEffect effect) { + super(effect); + } + + @Override + public ExploitEffect copy() { + return new ExploitEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Target target = new TargetPermanent(1, 1, new FilterControlledCreaturePermanent("creature to exploit"), true); + if (target.canChoose(source.getSourceId(), controller.getId(), game)) { + controller.chooseTarget(Outcome.Sacrifice, target, source, game); + Permanent permanent = game.getPermanent(target.getFirstTarget()); + if (permanent != null ) { + if (permanent.sacrifice(source.getSourceId(), game)) { + game.fireEvent(GameEvent.getEvent(GameEvent.EventType.EXPLOITED_CREATURE, permanent.getId(), source.getSourceId(), controller.getId())); + } + } + } + return true; + } + return false; + } +} diff --git a/Mage/src/mage/game/events/GameEvent.java b/Mage/src/mage/game/events/GameEvent.java index de6c79686a..847772bafc 100644 --- a/Mage/src/mage/game/events/GameEvent.java +++ b/Mage/src/mage/game/events/GameEvent.java @@ -145,7 +145,7 @@ public class GameEvent { DESTROY_PERMANENT, DESTROYED_PERMANENT, SACRIFICE_PERMANENT, SACRIFICED_PERMANENT, FIGHTED_PERMANENT, - EXPLOIDED_CREATURE, + EXPLOITED_CREATURE, ATTACH, ATTACHED, UNATTACH, UNATTACHED, ADD_COUNTER, COUNTER_ADDED, From cee5234bea8d137afade6aa5e719c23128115453 Mon Sep 17 00:00:00 2001 From: emerald000 Date: Tue, 31 Mar 2015 14:06:19 -0400 Subject: [PATCH 018/175] Added Maze of Shadows and Volrath's Laboratory. Fixed a couple of wrong creature types. --- .../SoratamiMindsweeper.java | 7 +- .../dragonsoftarkir/AinokArtillerist.java | 2 +- .../dragonsoftarkir/SandsteppeScavenger.java | 2 +- .../sets/gatecrash/ConsumingAberration.java | 11 +- .../sets/stronghold/VolrathsLaboratory.java | 52 ++++++++ .../src/mage/sets/tempest/MazeOfShadows.java | 87 +++++++++++++ .../sets/tempestremastered/MazeOfShadows.java | 52 ++++++++ .../tempestremastered/VolrathsLaboratory.java | 119 ++++++++++++++++++ 8 files changed, 322 insertions(+), 10 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/stronghold/VolrathsLaboratory.java create mode 100644 Mage.Sets/src/mage/sets/tempest/MazeOfShadows.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MazeOfShadows.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VolrathsLaboratory.java diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/SoratamiMindsweeper.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/SoratamiMindsweeper.java index 291b1fcb3f..6364f7c7ca 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/SoratamiMindsweeper.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/SoratamiMindsweeper.java @@ -28,9 +28,6 @@ package mage.sets.betrayersofkamigawa; import java.util.UUID; - -import mage.constants.CardType; -import mage.constants.Rarity; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleActivatedAbility; @@ -39,6 +36,8 @@ import mage.abilities.costs.mana.ManaCostsImpl; import mage.abilities.effects.common.PutLibraryIntoGraveTargetEffect; import mage.abilities.keyword.FlyingAbility; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; import mage.constants.Zone; import mage.filter.common.FilterControlledLandPermanent; import mage.filter.common.FilterControlledPermanent; @@ -56,7 +55,7 @@ public class SoratamiMindsweeper extends CardImpl { public SoratamiMindsweeper(UUID ownerId) { super(ownerId, 52, "Soratami Mindsweeper", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{U}"); this.expansionSetCode = "BOK"; - this.subtype.add("Moofolk"); + this.subtype.add("Moonfolk"); this.subtype.add("Wizard"); this.color.setBlue(true); this.power = new MageInt(1); diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/AinokArtillerist.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/AinokArtillerist.java index 3440aa88f7..ea0a865f0c 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/AinokArtillerist.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/AinokArtillerist.java @@ -50,7 +50,7 @@ public class AinokArtillerist extends CardImpl { super(ownerId, 171, "Ainok Artillerist", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); this.expansionSetCode = "DTK"; this.subtype.add("Hound"); - this.subtype.add("Arch"); + this.subtype.add("Archer"); this.power = new MageInt(4); this.toughness = new MageInt(1); diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/SandsteppeScavenger.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/SandsteppeScavenger.java index 820a7af85f..f2d058e48f 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/SandsteppeScavenger.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/SandsteppeScavenger.java @@ -45,7 +45,7 @@ public class SandsteppeScavenger extends CardImpl { super(ownerId, 200, "Sandsteppe Scavenger", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{G}"); this.expansionSetCode = "DTK"; this.subtype.add("Hound"); - this.subtype.add("Scount"); + this.subtype.add("Scout"); this.power = new MageInt(2); this.toughness = new MageInt(2); diff --git a/Mage.Sets/src/mage/sets/gatecrash/ConsumingAberration.java b/Mage.Sets/src/mage/sets/gatecrash/ConsumingAberration.java index 02ab9dc978..213ef0dbd6 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/ConsumingAberration.java +++ b/Mage.Sets/src/mage/sets/gatecrash/ConsumingAberration.java @@ -27,6 +27,7 @@ */ package mage.sets.gatecrash; +import java.util.UUID; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; @@ -39,12 +40,14 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; -import mage.constants.*; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.game.Game; import mage.players.Player; -import java.util.UUID; - /** * * @author Plopman @@ -55,7 +58,7 @@ public class ConsumingAberration extends CardImpl { super(ownerId, 152, "Consuming Aberration", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{U}{B}"); this.expansionSetCode = "GTC"; - this.subtype.add("horror"); + this.subtype.add("Horror"); this.color.setBlack(true); this.color.setBlue(true); diff --git a/Mage.Sets/src/mage/sets/stronghold/VolrathsLaboratory.java b/Mage.Sets/src/mage/sets/stronghold/VolrathsLaboratory.java new file mode 100644 index 0000000000..db28abd0a8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/VolrathsLaboratory.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.stronghold; + +import java.util.UUID; + +/** + * + * @author emerald000 + */ +public class VolrathsLaboratory extends mage.sets.tempestremastered.VolrathsLaboratory { + + public VolrathsLaboratory(UUID ownerId) { + super(ownerId); + this.cardNumber = 136; + this.expansionSetCode = "STH"; + } + + public VolrathsLaboratory(final VolrathsLaboratory card) { + super(card); + } + + @Override + public VolrathsLaboratory copy() { + return new VolrathsLaboratory(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/MazeOfShadows.java b/Mage.Sets/src/mage/sets/tempest/MazeOfShadows.java new file mode 100644 index 0000000000..9c68c49520 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/MazeOfShadows.java @@ -0,0 +1,87 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.PreventDamageByTargetEffect; +import mage.abilities.effects.common.PreventDamageToTargetEffect; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.abilities.mana.ColorlessManaAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterAttackingCreature; +import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.target.common.TargetAttackingCreature; + +/** + * + * @author emerald000 + */ +public class MazeOfShadows extends CardImpl { + + private static final FilterAttackingCreature filter = new FilterAttackingCreature("attacking creature with shadow"); + static { + filter.add(new AbilityPredicate(ShadowAbility.class)); + } + + public MazeOfShadows(UUID ownerId) { + super(ownerId, 317, "Maze of Shadows", Rarity.UNCOMMON, new CardType[]{CardType.LAND}, ""); + this.expansionSetCode = "TMP"; + + // {tap}: Add {1} to your mana pool. + this.addAbility(new ColorlessManaAbility()); + + // {tap}: Untap target attacking creature with shadow. Prevent all combat damage that would be dealt to and dealt by that creature this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new UntapTargetEffect(), new TapSourceCost()); + Effect effect = new PreventDamageByTargetEffect(Duration.EndOfTurn, true); + effect.setText("Prevent all combat damage that would be dealt to"); + ability.addEffect(effect); + effect = new PreventDamageToTargetEffect(Duration.EndOfTurn, Integer.MAX_VALUE, true); + effect.setText("and dealt by that creature this turn"); + ability.addEffect(effect); + ability.addTarget(new TargetAttackingCreature(1, 1, filter, false)); + this.addAbility(ability); + } + + public MazeOfShadows(final MazeOfShadows card) { + super(card); + } + + @Override + public MazeOfShadows copy() { + return new MazeOfShadows(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MazeOfShadows.java b/Mage.Sets/src/mage/sets/tempestremastered/MazeOfShadows.java new file mode 100644 index 0000000000..3bf6011a5c --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MazeOfShadows.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author emerald000 + */ +public class MazeOfShadows extends mage.sets.tempest.MazeOfShadows { + + public MazeOfShadows(UUID ownerId) { + super(ownerId); + this.cardNumber = 238; + this.expansionSetCode = "TPR"; + } + + public MazeOfShadows(final MazeOfShadows card) { + super(card); + } + + @Override + public MazeOfShadows copy() { + return new MazeOfShadows(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VolrathsLaboratory.java b/Mage.Sets/src/mage/sets/tempestremastered/VolrathsLaboratory.java new file mode 100644 index 0000000000..10b1208bbe --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VolrathsLaboratory.java @@ -0,0 +1,119 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.ChooseColorEffect; +import mage.abilities.effects.common.ChooseCreatureTypeEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.permanent.token.Token; + +/** + * + * @author emerald000 + */ +public class VolrathsLaboratory extends CardImpl { + + public VolrathsLaboratory(UUID ownerId) { + super(ownerId, 234, "Volrath's Laboratory", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{5}"); + this.expansionSetCode = "TPR"; + + // As Volrath's Laboratory enters the battlefield, choose a color and a creature type. + Ability ability = new EntersBattlefieldAbility(new ChooseColorEffect(Outcome.Neutral), null, true, "As Volrath's Laboratory enters the battlefield, choose a color and a creature type.", ""); + ability.addEffect(new ChooseCreatureTypeEffect(Outcome.Neutral)); + this.addAbility(ability); + + // {5}, {T}: Put a 2/2 creature token of the chosen color and type onto the battlefield. + ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new VolrathsLaboratoryEffect(), new GenericManaCost(5)); + ability.addCost(new TapSourceCost()); + this.addAbility(ability); + } + + public VolrathsLaboratory(final VolrathsLaboratory card) { + super(card); + } + + @Override + public VolrathsLaboratory copy() { + return new VolrathsLaboratory(this); + } +} + +class VolrathsLaboratoryEffect extends OneShotEffect { + + VolrathsLaboratoryEffect() { + super(Outcome.PutCreatureInPlay); + this.staticText = "Put a 2/2 creature token of the chosen color and type onto the battlefield"; + } + + VolrathsLaboratoryEffect(final VolrathsLaboratoryEffect effect) { + super(effect); + } + + @Override + public VolrathsLaboratoryEffect copy() { + return new VolrathsLaboratoryEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + ObjectColor color = (ObjectColor) game.getState().getValue(source.getSourceId() + "_color"); + String type = (String) game.getState().getValue(source.getSourceId() + "_type"); + Token token = new VolrathsLaboratoryToken(color, type); + return token.putOntoBattlefield(1, game, source.getSourceId(), source.getControllerId()); + } +} + +class VolrathsLaboratoryToken extends Token { + + VolrathsLaboratoryToken(ObjectColor color, String type) { + super(type, "2/2 creature token of the chosen color and type"); + cardType.add(CardType.CREATURE); + if (color != null) { + this.color.setColor(color); + } + if (type != null) { + subtype.add(type); + } + power = new MageInt(2); + toughness = new MageInt(2); + } +} From 4d47183fbc228624a6078ae9b3ee07df544fe460 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Tue, 31 Mar 2015 18:02:17 -0300 Subject: [PATCH 019/175] * Fix Gleam of Authority Fixes #867 --- Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java index 3c876f9243..31c9d04fd1 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/GleamOfAuthority.java @@ -108,8 +108,9 @@ class CountersOnControlledCount implements DynamicValue { @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { int count = 0; + Permanent enchantment = game.getPermanent(sourceAbility.getSourceId()); for (Permanent permanent : game.getState().getBattlefield().getAllActivePermanents(filter, sourceAbility.getControllerId(), game)) { - if (!permanent.getId().equals(sourceAbility.getSourceId())) { + if (!permanent.getId().equals(enchantment.getAttachedTo())) { count += permanent.getCounters().getCount(CounterType.P1P1); } } From 792d2422cbd74f8f8b2343de18158fecce23472c Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Tue, 31 Mar 2015 22:07:29 -0300 Subject: [PATCH 020/175] - Added Edge of Autumn --- .../mage/sets/futuresight/EdgeOfAutumn.java | 52 +++++++++++++ .../sets/knightsvsdragons/EdgeOfAutumn.java | 77 +++++++++++++++++++ 2 files changed, 129 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/futuresight/EdgeOfAutumn.java create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/EdgeOfAutumn.java diff --git a/Mage.Sets/src/mage/sets/futuresight/EdgeOfAutumn.java b/Mage.Sets/src/mage/sets/futuresight/EdgeOfAutumn.java new file mode 100644 index 0000000000..aed3268253 --- /dev/null +++ b/Mage.Sets/src/mage/sets/futuresight/EdgeOfAutumn.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.futuresight; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class EdgeOfAutumn extends mage.sets.knightsvsdragons.EdgeOfAutumn { + + public EdgeOfAutumn(UUID ownerId) { + super(ownerId); + this.cardNumber = 144; + this.expansionSetCode = "FUT"; + } + + public EdgeOfAutumn(final EdgeOfAutumn card) { + super(card); + } + + @Override + public EdgeOfAutumn copy() { + return new EdgeOfAutumn(this); + } +} diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/EdgeOfAutumn.java b/Mage.Sets/src/mage/sets/knightsvsdragons/EdgeOfAutumn.java new file mode 100644 index 0000000000..dbc28ba389 --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/EdgeOfAutumn.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.knightsvsdragons; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.condition.common.PermanentsOnTheBattlefieldCondition; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.decorator.ConditionalOneShotEffect; +import mage.abilities.effects.common.search.SearchLibraryPutInPlayEffect; +import mage.abilities.keyword.CyclingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterBasicLandCard; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.target.common.TargetCardInLibrary; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author FenrisulfrX + */ +public class EdgeOfAutumn extends CardImpl { + + private static final FilterControlledPermanent filter = new FilterControlledLandPermanent("a land"); + private static final FilterBasicLandCard basiclandfilter = new FilterBasicLandCard(); + + public EdgeOfAutumn(UUID ownerId) { + super(ownerId, 25, "Edge of Autumn", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{1}{G}"); + this.expansionSetCode = "DDG"; + + // If you control four or fewer lands, search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library. + this.getSpellAbility().addEffect(new ConditionalOneShotEffect(new SearchLibraryPutInPlayEffect(new TargetCardInLibrary(basiclandfilter), true), + new PermanentsOnTheBattlefieldCondition(filter, PermanentsOnTheBattlefieldCondition.CountType.FEWER_THAN, 5), + "If you control four or fewer lands, search your library for a basic land card, put it onto the battlefield tapped, then shuffle your library.")); + + // Cycling-Sacrifice a land. + Ability cycling = new CyclingAbility(new SacrificeTargetCost(new TargetControlledPermanent(filter))); + this.addAbility(cycling); + } + + public EdgeOfAutumn(final EdgeOfAutumn card) { + super(card); + } + + @Override + public EdgeOfAutumn copy() { + return new EdgeOfAutumn(this); + } +} From c676c32ae065fe7126e6f114ad9c441eca258925 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Tue, 31 Mar 2015 22:18:36 -0500 Subject: [PATCH 021/175] [TPR] Added some additional red Tempest Remastered cards --- .../sets/bornofthegods/FallOfTheHammer.java | 276 +++++++++--------- .../mage/sets/conspiracy/FlowstoneBlade.java | 76 +++++ Mage.Sets/src/mage/sets/exodus/MageIlVec.java | 72 +++++ .../src/mage/sets/exodus/OgreShaman.java | 72 +++++ .../src/mage/sets/exodus/Spellshock.java | 52 ++++ .../src/mage/sets/ninthedition/FlameWave.java | 63 ++++ .../mage/sets/ninthedition/RathiDragon.java | 78 +++++ .../mage/sets/ninthedition/ShardPhoenix.java | 54 ++++ .../mage/sets/planechase/RollingThunder.java | 54 ++++ .../src/mage/sets/portal/CravenGiant.java | 52 ++++ .../src/mage/sets/stronghold/CravenGiant.java | 62 ++++ .../sets/stronghold/FanningTheFlames.java | 65 +++++ .../src/mage/sets/stronghold/FlameWave.java | 52 ++++ .../mage/sets/stronghold/FlowstoneBlade.java | 52 ++++ .../mage/sets/stronghold/FlowstoneMauler.java | 72 +++++ .../src/mage/sets/stronghold/MoggManiac.java | 52 ++++ .../mage/sets/stronghold/SeethingAnger.java | 52 ++++ .../mage/sets/stronghold/ShardPhoenix.java | 54 ++++ .../mage/sets/stronghold/SpittingHydra.java | 52 ++++ .../src/mage/sets/stronghold/WallOfSouls.java | 52 ++++ .../src/mage/sets/tempest/AvengingAngel.java | 54 ++++ Mage.Sets/src/mage/sets/tempest/Deadshot.java | 54 ++++ .../src/mage/sets/tempest/RathiDragon.java | 52 ++++ .../src/mage/sets/tempest/RollingThunder.java | 54 ++++ .../src/mage/sets/tempest/Shadowstorm.java | 67 +++++ .../sets/tempestremastered/AvengingAngel.java | 103 +++++++ .../sets/tempestremastered/CravenGiant.java | 52 ++++ .../mage/sets/tempestremastered/Deadshot.java | 127 ++++++++ .../tempestremastered/FanningTheFlames.java | 54 ++++ .../sets/tempestremastered/FlameWave.java | 54 ++++ .../tempestremastered/FlowstoneBlade.java | 52 ++++ .../tempestremastered/FlowstoneMauler.java | 54 ++++ .../sets/tempestremastered/MageIlVec.java | 54 ++++ .../sets/tempestremastered/MoggManiac.java | 101 +++++++ .../sets/tempestremastered/OgreShaman.java | 52 ++++ .../sets/tempestremastered/RathiDragon.java | 52 ++++ .../tempestremastered/RollingThunder.java | 63 ++++ .../sets/tempestremastered/SeethingAnger.java | 65 +++++ .../sets/tempestremastered/Shadowstorm.java | 52 ++++ .../sets/tempestremastered/ShardPhoenix.java | 87 ++++++ .../sets/tempestremastered/Spellshock.java | 102 +++++++ .../sets/tempestremastered/SpittingHydra.java | 80 +++++ .../sets/tempestremastered/WallOfSouls.java | 138 +++++++++ Utils/mtg-cards-data.txt | 2 +- 44 files changed, 2898 insertions(+), 141 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/conspiracy/FlowstoneBlade.java create mode 100644 Mage.Sets/src/mage/sets/exodus/MageIlVec.java create mode 100644 Mage.Sets/src/mage/sets/exodus/OgreShaman.java create mode 100644 Mage.Sets/src/mage/sets/exodus/Spellshock.java create mode 100644 Mage.Sets/src/mage/sets/ninthedition/FlameWave.java create mode 100644 Mage.Sets/src/mage/sets/ninthedition/RathiDragon.java create mode 100644 Mage.Sets/src/mage/sets/ninthedition/ShardPhoenix.java create mode 100644 Mage.Sets/src/mage/sets/planechase/RollingThunder.java create mode 100644 Mage.Sets/src/mage/sets/portal/CravenGiant.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/CravenGiant.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/FanningTheFlames.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/FlameWave.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/FlowstoneBlade.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/FlowstoneMauler.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/MoggManiac.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/SeethingAnger.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/ShardPhoenix.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/SpittingHydra.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/WallOfSouls.java create mode 100644 Mage.Sets/src/mage/sets/tempest/AvengingAngel.java create mode 100644 Mage.Sets/src/mage/sets/tempest/Deadshot.java create mode 100644 Mage.Sets/src/mage/sets/tempest/RathiDragon.java create mode 100644 Mage.Sets/src/mage/sets/tempest/RollingThunder.java create mode 100644 Mage.Sets/src/mage/sets/tempest/Shadowstorm.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/AvengingAngel.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CravenGiant.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Deadshot.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FanningTheFlames.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FlameWave.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FlowstoneBlade.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FlowstoneMauler.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MageIlVec.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MoggManiac.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/OgreShaman.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RathiDragon.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RollingThunder.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SeethingAnger.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Shadowstorm.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ShardPhoenix.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Spellshock.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpittingHydra.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WallOfSouls.java diff --git a/Mage.Sets/src/mage/sets/bornofthegods/FallOfTheHammer.java b/Mage.Sets/src/mage/sets/bornofthegods/FallOfTheHammer.java index af5f659bf8..f8abd69264 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/FallOfTheHammer.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/FallOfTheHammer.java @@ -1,140 +1,136 @@ -/* - * 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.bornofthegods; - -import java.util.UUID; -import mage.abilities.Ability; -import mage.abilities.dynamicvalue.common.TargetPermanentPowerCount; -import mage.abilities.effects.Effect; -import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.DamageTargetEffect; -import mage.cards.CardImpl; -import mage.constants.CardType; -import mage.constants.Outcome; -import mage.constants.Rarity; -import mage.filter.common.FilterCreaturePermanent; -import mage.game.Game; -import mage.game.permanent.Permanent; -import mage.target.common.TargetControlledCreaturePermanent; -import mage.target.common.TargetCreaturePermanent; -import mage.target.targetpointer.SecondTargetPointer; - -/** - * - * - * As Fall of the Hammer tries to resolve, if only one of the targets is legal, - * Fall of the Hammer will still resolve but will have no effect: If the first - * target creature is illegal, it can't deal damage to anything. If the second - * target creature is illegal, it can't be dealt damage. - * - * The amount of damage dealt is based on the first target creature's power as Fall of the Hammer resolves. - - - * @author LevelX2 - */ -public class FallOfTheHammer extends CardImpl { - - private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature"); - - public FallOfTheHammer(UUID ownerId) { - super(ownerId, 93, "Fall of the Hammer", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); - this.expansionSetCode = "BNG"; - - this.color.setRed(true); - - // Target creature you control deals damage equal to its power to another target creature. - this.getSpellAbility().addEffect(new FallOfTheHammerDamageEffect()); - this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); - this.getSpellAbility().addTarget(new FallOfTheHammerTargetCreaturePermanent(filter)); - } - - public FallOfTheHammer(final FallOfTheHammer card) { - super(card); - } - - @Override - public FallOfTheHammer copy() { - return new FallOfTheHammer(this); - } -} - -class FallOfTheHammerDamageEffect extends OneShotEffect { - - public FallOfTheHammerDamageEffect() { - super(Outcome.Damage); - this.staticText = "Target creature you control deals damage equal to its power to another target creature"; - } - - public FallOfTheHammerDamageEffect(final FallOfTheHammerDamageEffect effect) { - super(effect); - } - - @Override - public FallOfTheHammerDamageEffect copy() { - return new FallOfTheHammerDamageEffect(this); - } - - @Override - public boolean apply(Game game, Ability source) { - Permanent ownCreature = game.getPermanent(source.getFirstTarget()); - if (ownCreature != null) { - int damage = ownCreature.getPower().getValue(); - Permanent targetCreature = game.getPermanent(source.getTargets().get(1).getFirstTarget()); - if (targetCreature != null) { - targetCreature.damage(damage, ownCreature.getId(), game, false, true); - return true; - } - } - return false; - } -} - - -class FallOfTheHammerTargetCreaturePermanent extends TargetCreaturePermanent { - - public FallOfTheHammerTargetCreaturePermanent(FilterCreaturePermanent filter) { - super(filter); - } - - @Override - public boolean canTarget(UUID id, Ability source, Game game) { - if (source.getTargets().getFirstTarget().equals(id)) { - return false; - } - return super.canTarget(id, source, game); - } - - @Override - public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { - if (source.getTargets().getFirstTarget().equals(id)) { - return false; - } - return super.canTarget(controllerId, id, source, game); - } - -} +/* + * 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.bornofthegods; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * + * As Fall of the Hammer tries to resolve, if only one of the targets is legal, + * Fall of the Hammer will still resolve but will have no effect: If the first + * target creature is illegal, it can't deal damage to anything. If the second + * target creature is illegal, it can't be dealt damage. + * + * The amount of damage dealt is based on the first target creature's power as Fall of the Hammer resolves. + + + * @author LevelX2 + */ +public class FallOfTheHammer extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature"); + + public FallOfTheHammer(UUID ownerId) { + super(ownerId, 93, "Fall of the Hammer", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); + this.expansionSetCode = "BNG"; + + this.color.setRed(true); + + // Target creature you control deals damage equal to its power to another target creature. + this.getSpellAbility().addEffect(new FallOfTheHammerDamageEffect()); + this.getSpellAbility().addTarget(new TargetControlledCreaturePermanent()); + this.getSpellAbility().addTarget(new FallOfTheHammerTargetCreaturePermanent(filter)); + } + + public FallOfTheHammer(final FallOfTheHammer card) { + super(card); + } + + @Override + public FallOfTheHammer copy() { + return new FallOfTheHammer(this); + } +} + +class FallOfTheHammerDamageEffect extends OneShotEffect { + + public FallOfTheHammerDamageEffect() { + super(Outcome.Damage); + this.staticText = "Target creature you control deals damage equal to its power to another target creature"; + } + + public FallOfTheHammerDamageEffect(final FallOfTheHammerDamageEffect effect) { + super(effect); + } + + @Override + public FallOfTheHammerDamageEffect copy() { + return new FallOfTheHammerDamageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent ownCreature = game.getPermanent(source.getFirstTarget()); + if (ownCreature != null) { + int damage = ownCreature.getPower().getValue(); + Permanent targetCreature = game.getPermanent(source.getTargets().get(1).getFirstTarget()); + if (targetCreature != null) { + targetCreature.damage(damage, ownCreature.getId(), game, false, true); + return true; + } + } + return false; + } +} + + +class FallOfTheHammerTargetCreaturePermanent extends TargetCreaturePermanent { + + public FallOfTheHammerTargetCreaturePermanent(FilterCreaturePermanent filter) { + super(filter); + } + + @Override + public boolean canTarget(UUID id, Ability source, Game game) { + if (source.getTargets().getFirstTarget().equals(id)) { + return false; + } + return super.canTarget(id, source, game); + } + + @Override + public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { + if (source.getTargets().getFirstTarget().equals(id)) { + return false; + } + return super.canTarget(controllerId, id, source, game); + } + +} diff --git a/Mage.Sets/src/mage/sets/conspiracy/FlowstoneBlade.java b/Mage.Sets/src/mage/sets/conspiracy/FlowstoneBlade.java new file mode 100644 index 0000000000..1b2ac9b84e --- /dev/null +++ b/Mage.Sets/src/mage/sets/conspiracy/FlowstoneBlade.java @@ -0,0 +1,76 @@ +/* + * 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.conspiracy; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.AttachEffect; +import mage.abilities.effects.common.continuous.BoostEnchantedEffect; +import mage.abilities.keyword.EnchantAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.TargetPermanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class FlowstoneBlade extends CardImpl { + + public FlowstoneBlade(UUID ownerId) { + super(ownerId, 143, "Flowstone Blade", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{R}"); + this.expansionSetCode = "CNS"; + this.subtype.add("Aura"); + + // Enchant creature + TargetPermanent auraTarget = new TargetCreaturePermanent(); + this.getSpellAbility().addTarget(auraTarget); + this.getSpellAbility().addEffect(new AttachEffect(Outcome.Copy)); + Ability ability = new EnchantAbility(auraTarget.getTargetName()); + this.addAbility(ability); + + // {R}: Enchanted creature gets +1/-1 until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostEnchantedEffect(1, -1, Duration.EndOfTurn), new ManaCostsImpl("R"))); + } + + public FlowstoneBlade(final FlowstoneBlade card) { + super(card); + } + + @Override + public FlowstoneBlade copy() { + return new FlowstoneBlade(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/MageIlVec.java b/Mage.Sets/src/mage/sets/exodus/MageIlVec.java new file mode 100644 index 0000000000..742bb2dcca --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/MageIlVec.java @@ -0,0 +1,72 @@ +/* + * 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.exodus; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author fireshoes + */ +public class MageIlVec extends CardImpl { + + public MageIlVec(UUID ownerId) { + super(ownerId, 86, "Mage il-Vec", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetCode = "EXO"; + this.subtype.add("Human"); + this.subtype.add("Wizard"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // {tap}, Discard a card at random: Mage il-Vec deals 1 damage to target creature or player. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new TapSourceCost()); + ability.addCost(new DiscardCardCost(true)); + ability.addTarget(new TargetCreatureOrPlayer()); + this.addAbility(ability); + } + + public MageIlVec(final MageIlVec card) { + super(card); + } + + @Override + public MageIlVec copy() { + return new MageIlVec(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/OgreShaman.java b/Mage.Sets/src/mage/sets/exodus/OgreShaman.java new file mode 100644 index 0000000000..076d37e3ce --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/OgreShaman.java @@ -0,0 +1,72 @@ +/* + * 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.exodus; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.DiscardCardCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author fireshoes + */ +public class OgreShaman extends CardImpl { + + public OgreShaman(UUID ownerId) { + super(ownerId, 91, "Ogre Shaman", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{R}{R}"); + this.expansionSetCode = "EXO"; + this.subtype.add("Ogre"); + this.subtype.add("Shaman"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // {2}, Discard a card at random: Ogre Shaman deals 2 damage to target creature or player. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(2), new GenericManaCost(2)); + ability.addCost(new DiscardCardCost(true)); + ability.addTarget(new TargetCreatureOrPlayer()); + this.addAbility(ability); + } + + public OgreShaman(final OgreShaman card) { + super(card); + } + + @Override + public OgreShaman copy() { + return new OgreShaman(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/Spellshock.java b/Mage.Sets/src/mage/sets/exodus/Spellshock.java new file mode 100644 index 0000000000..ac4fce3f79 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/Spellshock.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Spellshock extends mage.sets.tempestremastered.Spellshock { + + public Spellshock(UUID ownerId) { + super(ownerId); + this.cardNumber = 104; + this.expansionSetCode = "EXO"; + } + + public Spellshock(final Spellshock card) { + super(card); + } + + @Override + public Spellshock copy() { + return new Spellshock(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ninthedition/FlameWave.java b/Mage.Sets/src/mage/sets/ninthedition/FlameWave.java new file mode 100644 index 0000000000..40f353cd55 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ninthedition/FlameWave.java @@ -0,0 +1,63 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.ninthedition; + +import java.util.UUID; +import mage.abilities.effects.common.DamageAllControlledTargetEffect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.target.TargetPlayer; + +/** + * + * @author fireshoes + */ +public class FlameWave extends CardImpl { + + public FlameWave(UUID ownerId) { + super(ownerId, 182, "Flame Wave", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{R}{R}{R}{R}"); + this.expansionSetCode = "9ED"; + + // Flame Wave deals 4 damage to target player and each creature he or she controls. + this.getSpellAbility().addEffect(new DamageTargetEffect(4)); + this.getSpellAbility().addTarget(new TargetPlayer()); + this.getSpellAbility().addEffect(new DamageAllControlledTargetEffect(4, new FilterCreaturePermanent())); + } + + public FlameWave(final FlameWave card) { + super(card); + } + + @Override + public FlameWave copy() { + return new FlameWave(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/ninthedition/RathiDragon.java b/Mage.Sets/src/mage/sets/ninthedition/RathiDragon.java new file mode 100644 index 0000000000..d646726e4b --- /dev/null +++ b/Mage.Sets/src/mage/sets/ninthedition/RathiDragon.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.ninthedition; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.common.SacrificeSourceUnlessPaysEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author fireshoes + */ +public class RathiDragon extends CardImpl { + + private static final FilterControlledLandPermanent filter = new FilterControlledLandPermanent("two Mountains"); + + static{ + filter.add(new SubtypePredicate("Mountain")); + } + + public RathiDragon(UUID ownerId) { + super(ownerId, 210, "Rathi Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); + this.expansionSetCode = "9ED"; + this.subtype.add("Dragon"); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // When Rathi Dragon enters the battlefield, sacrifice it unless you sacrifice two Mountains. + this.addAbility(new EntersBattlefieldTriggeredAbility( + new SacrificeSourceUnlessPaysEffect(new SacrificeTargetCost(new TargetControlledPermanent(2, 2, filter, true))))); + } + + public RathiDragon(final RathiDragon card) { + super(card); + } + + @Override + public RathiDragon copy() { + return new RathiDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/ninthedition/ShardPhoenix.java b/Mage.Sets/src/mage/sets/ninthedition/ShardPhoenix.java new file mode 100644 index 0000000000..bade537e79 --- /dev/null +++ b/Mage.Sets/src/mage/sets/ninthedition/ShardPhoenix.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.ninthedition; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ShardPhoenix extends mage.sets.tempestremastered.ShardPhoenix { + + public ShardPhoenix(UUID ownerId) { + super(ownerId); + this.cardNumber = 217; + this.expansionSetCode = "9ED"; + this.rarity = Rarity.RARE; + } + + public ShardPhoenix(final ShardPhoenix card) { + super(card); + } + + @Override + public ShardPhoenix copy() { + return new ShardPhoenix(this); + } +} diff --git a/Mage.Sets/src/mage/sets/planechase/RollingThunder.java b/Mage.Sets/src/mage/sets/planechase/RollingThunder.java new file mode 100644 index 0000000000..bba6520a18 --- /dev/null +++ b/Mage.Sets/src/mage/sets/planechase/RollingThunder.java @@ -0,0 +1,54 @@ +/* + * 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; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class RollingThunder extends mage.sets.tempestremastered.RollingThunder { + + public RollingThunder(UUID ownerId) { + super(ownerId); + this.cardNumber = 64; + this.expansionSetCode = "HOP"; + this.rarity = Rarity.COMMON; + } + + public RollingThunder(final RollingThunder card) { + super(card); + } + + @Override + public RollingThunder copy() { + return new RollingThunder(this); + } +} diff --git a/Mage.Sets/src/mage/sets/portal/CravenGiant.java b/Mage.Sets/src/mage/sets/portal/CravenGiant.java new file mode 100644 index 0000000000..fa3138d0c3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/portal/CravenGiant.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.portal; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CravenGiant extends mage.sets.stronghold.CravenGiant { + + public CravenGiant(UUID ownerId) { + super(ownerId); + this.cardNumber = 126; + this.expansionSetCode = "POR"; + } + + public CravenGiant(final CravenGiant card) { + super(card); + } + + @Override + public CravenGiant copy() { + return new CravenGiant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/CravenGiant.java b/Mage.Sets/src/mage/sets/stronghold/CravenGiant.java new file mode 100644 index 0000000000..ac50ed79f8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/CravenGiant.java @@ -0,0 +1,62 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.CantBlockAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class CravenGiant extends CardImpl { + + public CravenGiant(UUID ownerId) { + super(ownerId, 78, "Craven Giant", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{R}"); + this.expansionSetCode = "STH"; + this.subtype.add("Giant"); + this.power = new MageInt(4); + this.toughness = new MageInt(1); + + // Craven Giant can't block. + this.addAbility(new CantBlockAbility()); + } + + public CravenGiant(final CravenGiant card) { + super(card); + } + + @Override + public CravenGiant copy() { + return new CravenGiant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/FanningTheFlames.java b/Mage.Sets/src/mage/sets/stronghold/FanningTheFlames.java new file mode 100644 index 0000000000..83de39973b --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/FanningTheFlames.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.stronghold; + +import java.util.UUID; +import mage.abilities.dynamicvalue.common.ManacostVariableValue; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.BuybackAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author fireshoes + */ +public class FanningTheFlames extends CardImpl { + + public FanningTheFlames(UUID ownerId) { + super(ownerId, 80, "Fanning the Flames", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{X}{R}{R}"); + this.expansionSetCode = "STH"; + + // Buyback {3} + this.addAbility(new BuybackAbility("{3}")); + + // Fanning the Flames deals X damage to target creature or player. + this.getSpellAbility().addEffect(new DamageTargetEffect(new ManacostVariableValue())); + this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); + } + + public FanningTheFlames(final FanningTheFlames card) { + super(card); + } + + @Override + public FanningTheFlames copy() { + return new FanningTheFlames(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/FlameWave.java b/Mage.Sets/src/mage/sets/stronghold/FlameWave.java new file mode 100644 index 0000000000..9d19ae47d5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/FlameWave.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class FlameWave extends mage.sets.ninthedition.FlameWave { + + public FlameWave(UUID ownerId) { + super(ownerId); + this.cardNumber = 81; + this.expansionSetCode = "STH"; + } + + public FlameWave(final FlameWave card) { + super(card); + } + + @Override + public FlameWave copy() { + return new FlameWave(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/FlowstoneBlade.java b/Mage.Sets/src/mage/sets/stronghold/FlowstoneBlade.java new file mode 100644 index 0000000000..e46608d693 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/FlowstoneBlade.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class FlowstoneBlade extends mage.sets.conspiracy.FlowstoneBlade { + + public FlowstoneBlade(UUID ownerId) { + super(ownerId); + this.cardNumber = 83; + this.expansionSetCode = "STH"; + } + + public FlowstoneBlade(final FlowstoneBlade card) { + super(card); + } + + @Override + public FlowstoneBlade copy() { + return new FlowstoneBlade(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/FlowstoneMauler.java b/Mage.Sets/src/mage/sets/stronghold/FlowstoneMauler.java new file mode 100644 index 0000000000..4be82ab83c --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/FlowstoneMauler.java @@ -0,0 +1,72 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.TrampleAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author fireshoes + */ +public class FlowstoneMauler extends CardImpl { + + public FlowstoneMauler(UUID ownerId) { + super(ownerId, 85, "Flowstone Mauler", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{R}{R}"); + this.expansionSetCode = "STH"; + this.subtype.add("Beast"); + this.power = new MageInt(4); + this.toughness = new MageInt(5); + + // Trample + this.addAbility(TrampleAbility.getInstance()); + + // {R}: Flowstone Mauler gets +1/-1 until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, + new BoostSourceEffect(1, -1, Duration.EndOfTurn), + new ManaCostsImpl("{R}"))); + } + + public FlowstoneMauler(final FlowstoneMauler card) { + super(card); + } + + @Override + public FlowstoneMauler copy() { + return new FlowstoneMauler(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/MoggManiac.java b/Mage.Sets/src/mage/sets/stronghold/MoggManiac.java new file mode 100644 index 0000000000..291968e4ca --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/MoggManiac.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class MoggManiac extends mage.sets.tempestremastered.MoggManiac { + + public MoggManiac(UUID ownerId) { + super(ownerId); + this.cardNumber = 94; + this.expansionSetCode = "STH"; + } + + public MoggManiac(final MoggManiac card) { + super(card); + } + + @Override + public MoggManiac copy() { + return new MoggManiac(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/SeethingAnger.java b/Mage.Sets/src/mage/sets/stronghold/SeethingAnger.java new file mode 100644 index 0000000000..72cb17bdd5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/SeethingAnger.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SeethingAnger extends mage.sets.tempestremastered.SeethingAnger { + + public SeethingAnger(UUID ownerId) { + super(ownerId); + this.cardNumber = 96; + this.expansionSetCode = "STH"; + } + + public SeethingAnger(final SeethingAnger card) { + super(card); + } + + @Override + public SeethingAnger copy() { + return new SeethingAnger(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/ShardPhoenix.java b/Mage.Sets/src/mage/sets/stronghold/ShardPhoenix.java new file mode 100644 index 0000000000..2b4860f31e --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/ShardPhoenix.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ShardPhoenix extends mage.sets.tempestremastered.ShardPhoenix { + + public ShardPhoenix(UUID ownerId) { + super(ownerId); + this.cardNumber = 97; + this.expansionSetCode = "STH"; + this.rarity = Rarity.RARE; + } + + public ShardPhoenix(final ShardPhoenix card) { + super(card); + } + + @Override + public ShardPhoenix copy() { + return new ShardPhoenix(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/SpittingHydra.java b/Mage.Sets/src/mage/sets/stronghold/SpittingHydra.java new file mode 100644 index 0000000000..39640da008 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/SpittingHydra.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpittingHydra extends mage.sets.tempestremastered.SpittingHydra { + + public SpittingHydra(UUID ownerId) { + super(ownerId); + this.cardNumber = 99; + this.expansionSetCode = "STH"; + } + + public SpittingHydra(final SpittingHydra card) { + super(card); + } + + @Override + public SpittingHydra copy() { + return new SpittingHydra(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/WallOfSouls.java b/Mage.Sets/src/mage/sets/stronghold/WallOfSouls.java new file mode 100644 index 0000000000..7289f19b75 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/WallOfSouls.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.stronghold; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class WallOfSouls extends mage.sets.tempestremastered.WallOfSouls { + + public WallOfSouls(UUID ownerId) { + super(ownerId); + this.cardNumber = 25; + this.expansionSetCode = "STH"; + } + + public WallOfSouls(final WallOfSouls card) { + super(card); + } + + @Override + public WallOfSouls copy() { + return new WallOfSouls(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/AvengingAngel.java b/Mage.Sets/src/mage/sets/tempest/AvengingAngel.java new file mode 100644 index 0000000000..62022df453 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/AvengingAngel.java @@ -0,0 +1,54 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class AvengingAngel extends mage.sets.tempestremastered.AvengingAngel { + + public AvengingAngel(UUID ownerId) { + super(ownerId); + this.cardNumber = 219; + this.expansionSetCode = "TMP"; + this.rarity = Rarity.RARE; + } + + public AvengingAngel(final AvengingAngel card) { + super(card); + } + + @Override + public AvengingAngel copy() { + return new AvengingAngel(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/Deadshot.java b/Mage.Sets/src/mage/sets/tempest/Deadshot.java new file mode 100644 index 0000000000..dabf0b2679 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/Deadshot.java @@ -0,0 +1,54 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Deadshot extends mage.sets.tempestremastered.Deadshot { + + public Deadshot(UUID ownerId) { + super(ownerId); + this.cardNumber = 170; + this.expansionSetCode = "TMP"; + this.rarity = Rarity.RARE; + } + + public Deadshot(final Deadshot card) { + super(card); + } + + @Override + public Deadshot copy() { + return new Deadshot(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/RathiDragon.java b/Mage.Sets/src/mage/sets/tempest/RathiDragon.java new file mode 100644 index 0000000000..3bad6d6d51 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/RathiDragon.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class RathiDragon extends mage.sets.ninthedition.RathiDragon { + + public RathiDragon(UUID ownerId) { + super(ownerId); + this.cardNumber = 196; + this.expansionSetCode = "TMP"; + } + + public RathiDragon(final RathiDragon card) { + super(card); + } + + @Override + public RathiDragon copy() { + return new RathiDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/RollingThunder.java b/Mage.Sets/src/mage/sets/tempest/RollingThunder.java new file mode 100644 index 0000000000..f84c6bc1a1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/RollingThunder.java @@ -0,0 +1,54 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class RollingThunder extends mage.sets.tempestremastered.RollingThunder { + + public RollingThunder(UUID ownerId) { + super(ownerId); + this.cardNumber = 198; + this.expansionSetCode = "TMP"; + this.rarity = Rarity.COMMON; + } + + public RollingThunder(final RollingThunder card) { + super(card); + } + + @Override + public RollingThunder copy() { + return new RollingThunder(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/Shadowstorm.java b/Mage.Sets/src/mage/sets/tempest/Shadowstorm.java new file mode 100644 index 0000000000..1b0470af01 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/Shadowstorm.java @@ -0,0 +1,67 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.AbilityPredicate; + +/** + * + * @author fireshoes + */ +public class Shadowstorm extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature with shadow"); + + static { + filter.add(new AbilityPredicate(ShadowAbility.class)); + } + + public Shadowstorm(UUID ownerId) { + super(ownerId, 202, "Shadowstorm", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{R}"); + this.expansionSetCode = "TMP"; + + // Shadowstorm deals 2 damage to each creature with shadow. + this.getSpellAbility().addEffect(new DamageAllEffect(2, filter)); + } + + public Shadowstorm(final Shadowstorm card) { + super(card); + } + + @Override + public Shadowstorm copy() { + return new Shadowstorm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/AvengingAngel.java b/Mage.Sets/src/mage/sets/tempestremastered/AvengingAngel.java new file mode 100644 index 0000000000..5672ba6961 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/AvengingAngel.java @@ -0,0 +1,103 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DiesTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.players.Player; + +/** + * + * @author fireshoes + */ +public class AvengingAngel extends CardImpl { + + public AvengingAngel(UUID ownerId) { + super(ownerId, 6, "Avenging Angel", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{W}{W}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Angel"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // When Avenging Angel dies, you may put it on top of its owner's library. + this.addAbility(new DiesTriggeredAbility(new AvengingAngelEffect(), true)); + } + + public AvengingAngel(final AvengingAngel card) { + super(card); + } + + @Override + public AvengingAngel copy() { + return new AvengingAngel(this); + } +} + +class AvengingAngelEffect extends OneShotEffect { + + public AvengingAngelEffect() { + super(Outcome.Benefit); + this.staticText = "you may put it on the top of its owner's library"; + } + + public AvengingAngelEffect(final AvengingAngelEffect effect) { + super(effect); + } + + @Override + public AvengingAngelEffect copy() { + return new AvengingAngelEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + Card sourceCard = game.getCard(source.getSourceId()); + if (controller != null && sourceCard != null) { + if (game.getState().getZone(source.getSourceId()) == Zone.GRAVEYARD) { + controller.moveCardToLibraryWithInfo(sourceCard, source.getSourceId(), game, Zone.GRAVEYARD, true, true); + } + return true; + } + return false; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CravenGiant.java b/Mage.Sets/src/mage/sets/tempestremastered/CravenGiant.java new file mode 100644 index 0000000000..4bdba66fbd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CravenGiant.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class CravenGiant extends mage.sets.stronghold.CravenGiant { + + public CravenGiant(UUID ownerId) { + super(ownerId); + this.cardNumber = 128; + this.expansionSetCode = "TPR"; + } + + public CravenGiant(final CravenGiant card) { + super(card); + } + + @Override + public CravenGiant copy() { + return new CravenGiant(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Deadshot.java b/Mage.Sets/src/mage/sets/tempestremastered/Deadshot.java new file mode 100644 index 0000000000..e2fd17d882 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Deadshot.java @@ -0,0 +1,127 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.TapTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class Deadshot extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("another target creature"); + + public Deadshot(UUID ownerId) { + super(ownerId, 129, "Deadshot", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{3}{R}"); + this.expansionSetCode = "TPR"; + + // Tap target creature. + this.getSpellAbility().addEffect(new TapTargetEffect()); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + + // It deals damage equal to its power to another target creature. + this.getSpellAbility().addEffect(new DeadshotDamageEffect()); + this.getSpellAbility().addTarget(new DeadshotTargetCreaturePermanent(filter)); + } + + public Deadshot(final Deadshot card) { + super(card); + } + + @Override + public Deadshot copy() { + return new Deadshot(this); + } +} + +class DeadshotDamageEffect extends OneShotEffect { + + public DeadshotDamageEffect() { + super(Outcome.Damage); + this.staticText = "Target creature deals damage equal to its power to another target creature"; + } + + public DeadshotDamageEffect(final DeadshotDamageEffect effect) { + super(effect); + } + + @Override + public DeadshotDamageEffect copy() { + return new DeadshotDamageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent ownCreature = game.getPermanent(source.getFirstTarget()); + if (ownCreature != null) { + int damage = ownCreature.getPower().getValue(); + Permanent targetCreature = game.getPermanent(source.getTargets().get(1).getFirstTarget()); + if (targetCreature != null) { + targetCreature.damage(damage, ownCreature.getId(), game, false, true); + return true; + } + } + return false; + } +} + +class DeadshotTargetCreaturePermanent extends TargetCreaturePermanent { + + public DeadshotTargetCreaturePermanent(FilterCreaturePermanent filter) { + super(filter); + } + + @Override + public boolean canTarget(UUID id, Ability source, Game game) { + if (source.getTargets().getFirstTarget().equals(id)) { + return false; + } + return super.canTarget(id, source, game); + } + + @Override + public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { + if (source.getTargets().getFirstTarget().equals(id)) { + return false; + } + return super.canTarget(controllerId, id, source, game); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FanningTheFlames.java b/Mage.Sets/src/mage/sets/tempestremastered/FanningTheFlames.java new file mode 100644 index 0000000000..50c4a767c7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FanningTheFlames.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class FanningTheFlames extends mage.sets.stronghold.FanningTheFlames { + + public FanningTheFlames(UUID ownerId) { + super(ownerId); + this.cardNumber = 130; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.RARE; + } + + public FanningTheFlames(final FanningTheFlames card) { + super(card); + } + + @Override + public FanningTheFlames copy() { + return new FanningTheFlames(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FlameWave.java b/Mage.Sets/src/mage/sets/tempestremastered/FlameWave.java new file mode 100644 index 0000000000..1db2894a9b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FlameWave.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class FlameWave extends mage.sets.ninthedition.FlameWave { + + public FlameWave(UUID ownerId) { + super(ownerId); + this.cardNumber = 131; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.RARE; + } + + public FlameWave(final FlameWave card) { + super(card); + } + + @Override + public FlameWave copy() { + return new FlameWave(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneBlade.java b/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneBlade.java new file mode 100644 index 0000000000..230fb68753 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneBlade.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class FlowstoneBlade extends mage.sets.conspiracy.FlowstoneBlade { + + public FlowstoneBlade(UUID ownerId) { + super(ownerId); + this.cardNumber = 132; + this.expansionSetCode = "TPR"; + } + + public FlowstoneBlade(final FlowstoneBlade card) { + super(card); + } + + @Override + public FlowstoneBlade copy() { + return new FlowstoneBlade(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneMauler.java b/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneMauler.java new file mode 100644 index 0000000000..8a1fd3240b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FlowstoneMauler.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class FlowstoneMauler extends mage.sets.stronghold.FlowstoneMauler { + + public FlowstoneMauler(UUID ownerId) { + super(ownerId); + this.cardNumber = 133; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public FlowstoneMauler(final FlowstoneMauler card) { + super(card); + } + + @Override + public FlowstoneMauler copy() { + return new FlowstoneMauler(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MageIlVec.java b/Mage.Sets/src/mage/sets/tempestremastered/MageIlVec.java new file mode 100644 index 0000000000..807e3ea2ac --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MageIlVec.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class MageIlVec extends mage.sets.exodus.MageIlVec { + + public MageIlVec(UUID ownerId) { + super(ownerId); + this.cardNumber = 140; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.UNCOMMON; + } + + public MageIlVec(final MageIlVec card) { + super(card); + } + + @Override + public MageIlVec copy() { + return new MageIlVec(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MoggManiac.java b/Mage.Sets/src/mage/sets/tempestremastered/MoggManiac.java new file mode 100644 index 0000000000..d0fda938a7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MoggManiac.java @@ -0,0 +1,101 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.DealtDamageToSourceTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.players.Player; +import mage.target.common.TargetOpponent; + +/** + * + * @author fireshoes + */ +public class MoggManiac extends CardImpl { + + public MoggManiac(UUID ownerId) { + super(ownerId, 147, "Mogg Maniac", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{R}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Goblin"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Whenever Mogg Maniac is dealt damage, it deals that much damage to target opponent. + Ability ability = new DealtDamageToSourceTriggeredAbility(Zone.BATTLEFIELD, new MoggManiacDealDamageEffect(), false); + ability.addTarget(new TargetOpponent()); + this.addAbility(ability); + } + + public MoggManiac(final MoggManiac card) { + super(card); + } + + @Override + public MoggManiac copy() { + return new MoggManiac(this); + } +} + +class MoggManiacDealDamageEffect extends OneShotEffect { + + public MoggManiacDealDamageEffect() { + super(Outcome.Damage); + this.staticText = "it deals that much damage to target opponent"; + } + + public MoggManiacDealDamageEffect(final MoggManiacDealDamageEffect effect) { + super(effect); + } + + @Override + public MoggManiacDealDamageEffect copy() { + return new MoggManiacDealDamageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + int amount = (Integer) getValue("damage"); + if (amount > 0) { + Player opponent = game.getPlayer(targetPointer.getFirst(game, source)); + if (opponent != null) { + opponent.damage(amount, source.getSourceId(), game, false, true); + return true; + } + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/OgreShaman.java b/Mage.Sets/src/mage/sets/tempestremastered/OgreShaman.java new file mode 100644 index 0000000000..81b8562d8f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/OgreShaman.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class OgreShaman extends mage.sets.exodus.OgreShaman { + + public OgreShaman(UUID ownerId) { + super(ownerId); + this.cardNumber = 148; + this.expansionSetCode = "TPR"; + } + + public OgreShaman(final OgreShaman card) { + super(card); + } + + @Override + public OgreShaman copy() { + return new OgreShaman(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RathiDragon.java b/Mage.Sets/src/mage/sets/tempestremastered/RathiDragon.java new file mode 100644 index 0000000000..4dcbeee310 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RathiDragon.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class RathiDragon extends mage.sets.ninthedition.RathiDragon { + + public RathiDragon(UUID ownerId) { + super(ownerId); + this.cardNumber = 150; + this.expansionSetCode = "TPR"; + } + + public RathiDragon(final RathiDragon card) { + super(card); + } + + @Override + public RathiDragon copy() { + return new RathiDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RollingThunder.java b/Mage.Sets/src/mage/sets/tempestremastered/RollingThunder.java new file mode 100644 index 0000000000..faeeafe46f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RollingThunder.java @@ -0,0 +1,63 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.ManacostVariableValue; +import mage.abilities.effects.common.DamageMultiEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.target.common.TargetCreatureOrPlayerAmount; + +/** + * + * @author fireshoes + */ +public class RollingThunder extends CardImpl { + + public RollingThunder(UUID ownerId) { + super(ownerId, 152, "Rolling Thunder", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{X}{R}{R}"); + this.expansionSetCode = "TPR"; + + // Rolling Thunder deals X damage divided as you choose among any number of target creatures and/or players. + DynamicValue xValue = new ManacostVariableValue(); + this.getSpellAbility().addEffect(new DamageMultiEffect(xValue)); + this.getSpellAbility().addTarget(new TargetCreatureOrPlayerAmount(xValue)); + } + + public RollingThunder(final RollingThunder card) { + super(card); + } + + @Override + public RollingThunder copy() { + return new RollingThunder(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SeethingAnger.java b/Mage.Sets/src/mage/sets/tempestremastered/SeethingAnger.java new file mode 100644 index 0000000000..98f27bdd2a --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SeethingAnger.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.tempestremastered; + +import java.util.UUID; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.abilities.keyword.BuybackAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class SeethingAnger extends CardImpl { + + public SeethingAnger(UUID ownerId) { + super(ownerId, 156, "Seething Anger", Rarity.COMMON, new CardType[]{CardType.SORCERY}, "{R}"); + this.expansionSetCode = "TPR"; + + // Buyback {3}(You may pay an additional {3} as you cast this spell. If you do, put this card into your hand as it resolves.) + this.addAbility(new BuybackAbility("{3}")); + + // Target creature gets +3/+0 until end of turn. + this.getSpellAbility().addEffect(new BoostTargetEffect(3, 0, Duration.EndOfTurn)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + } + + public SeethingAnger(final SeethingAnger card) { + super(card); + } + + @Override + public SeethingAnger copy() { + return new SeethingAnger(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Shadowstorm.java b/Mage.Sets/src/mage/sets/tempestremastered/Shadowstorm.java new file mode 100644 index 0000000000..336f886773 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Shadowstorm.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class Shadowstorm extends mage.sets.tempest.Shadowstorm { + + public Shadowstorm(UUID ownerId) { + super(ownerId); + this.cardNumber = 157; + this.expansionSetCode = "TPR"; + } + + public Shadowstorm(final Shadowstorm card) { + super(card); + } + + @Override + public Shadowstorm copy() { + return new Shadowstorm(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ShardPhoenix.java b/Mage.Sets/src/mage/sets/tempestremastered/ShardPhoenix.java new file mode 100644 index 0000000000..739457578e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ShardPhoenix.java @@ -0,0 +1,87 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.condition.common.IsStepCondition; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.decorator.ConditionalActivatedAbility; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.effects.common.ReturnSourceFromGraveyardToHandEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.PhaseStep; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; + +/** + * + * @author fireshoes + */ +public class ShardPhoenix extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); + + static { + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); + } + + public ShardPhoenix(UUID ownerId) { + super(ownerId, 158, "Shard Phoenix", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{4}{R}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Phoenix"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Sacrifice Shard Phoenix: Shard Phoenix deals 2 damage to each creature without flying. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageAllEffect(2, filter), new SacrificeSourceCost())); + + // {R}{R}{R}: Return Shard Phoenix from your graveyard to your hand. Activate this ability only during your upkeep. + this.addAbility(new ConditionalActivatedAbility(Zone.GRAVEYARD, + new ReturnSourceFromGraveyardToHandEffect(), new ManaCostsImpl("{R}{R}{R}"), new IsStepCondition(PhaseStep.UPKEEP), null)); + } + + public ShardPhoenix(final ShardPhoenix card) { + super(card); + } + + @Override + public ShardPhoenix copy() { + return new ShardPhoenix(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Spellshock.java b/Mage.Sets/src/mage/sets/tempestremastered/Spellshock.java new file mode 100644 index 0000000000..1cbf2dcdd8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Spellshock.java @@ -0,0 +1,102 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.stack.Spell; +import mage.target.targetpointer.FixedTarget; + +/** + * + * @author fireshoes + */ +public class Spellshock extends CardImpl { + + public Spellshock(UUID ownerId) { + super(ownerId, 160, "Spellshock", Rarity.UNCOMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{R}"); + this.expansionSetCode = "TPR"; + + // Whenever a player casts a spell, Spellshock deals 2 damage to that player. + this.addAbility(new SpellshockTriggeredAbility()); + } + + public Spellshock(final Spellshock card) { + super(card); + } + + @Override + public Spellshock copy() { + return new Spellshock(this); + } +} + +class SpellshockTriggeredAbility extends TriggeredAbilityImpl { + + + public SpellshockTriggeredAbility() { + super(Zone.BATTLEFIELD, new DamageTargetEffect(2, true, "that player")); + } + + + public SpellshockTriggeredAbility(final SpellshockTriggeredAbility abiltity) { + super(abiltity); + } + + @Override + public SpellshockTriggeredAbility copy() { + return new SpellshockTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if(event.getType() == GameEvent.EventType.SPELL_CAST){ + Spell spell = game.getStack().getSpell(event.getTargetId()); + if(spell != null){ + for (Effect effect : this.getEffects()) { + effect.setTargetPointer(new FixedTarget(event.getPlayerId())); + } + return true; + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever a player casts a spell, {this} deals 2 damage to that player."; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpittingHydra.java b/Mage.Sets/src/mage/sets/tempestremastered/SpittingHydra.java new file mode 100644 index 0000000000..5920740960 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpittingHydra.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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class SpittingHydra extends CardImpl { + + public SpittingHydra(UUID ownerId) { + super(ownerId, 161, "Spitting Hydra", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{R}{R}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Hydra"); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Spitting Hydra enters the battlefield with four +1/+1 counters on it. + Effect effect = new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)); + effect.setText("with four +1/+1 counters on it"); + this.addAbility(new EntersBattlefieldAbility(effect)); + + // {1}{R}, Remove a +1/+1 counter from Spitting Hydra: Spitting Hydra deals 1 damage to target creature. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{1}{R}")); + ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance(1))); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public SpittingHydra(final SpittingHydra card) { + super(card); + } + + @Override + public SpittingHydra copy() { + return new SpittingHydra(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WallOfSouls.java b/Mage.Sets/src/mage/sets/tempestremastered/WallOfSouls.java new file mode 100644 index 0000000000..903774db9c --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WallOfSouls.java @@ -0,0 +1,138 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.keyword.DefenderAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.DamagedCreatureEvent; +import mage.game.events.GameEvent; +import mage.players.Player; +import mage.target.common.TargetOpponent; + +/** + * + * @author fireshoes + */ +public class WallOfSouls extends CardImpl { + + public WallOfSouls(UUID ownerId) { + super(ownerId, 123, "Wall of Souls", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{B}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Wall"); + this.power = new MageInt(0); + this.toughness = new MageInt(4); + + // Defender + this.addAbility(DefenderAbility.getInstance()); + + // Whenever Wall of Souls is dealt combat damage, it deals that much damage to target opponent. + Ability ability = new WallOfSoulsTriggeredAbility(); + ability.addTarget(new TargetOpponent()); + this.addAbility(ability); + } + + public WallOfSouls(final WallOfSouls card) { + super(card); + } + + @Override + public WallOfSouls copy() { + return new WallOfSouls(this); + } +} + +class WallOfSoulsTriggeredAbility extends TriggeredAbilityImpl { + + public WallOfSoulsTriggeredAbility() { + super(Zone.BATTLEFIELD, new WallOfSoulsDealDamageEffect()); + } + + public WallOfSoulsTriggeredAbility(final WallOfSoulsTriggeredAbility effect) { + super(effect); + } + + @Override + public WallOfSoulsTriggeredAbility copy() { + return new WallOfSoulsTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if (event.getType() == GameEvent.EventType.DAMAGED_CREATURE && event.getTargetId().equals(this.sourceId) + && ((DamagedCreatureEvent)event).isCombatDamage() ) { + this.getEffects().get(0).setValue("damage", event.getAmount()); + return true; + } + return false; + } + + @Override + public String getRule() { + return "Whenever {this} is dealt combat damage, " + super.getRule(); + } +} + +class WallOfSoulsDealDamageEffect extends OneShotEffect { + + public WallOfSoulsDealDamageEffect() { + super(Outcome.Damage); + this.staticText = "it deals that much damage to target opponent"; + } + + public WallOfSoulsDealDamageEffect(final WallOfSoulsDealDamageEffect effect) { + super(effect); + } + + @Override + public WallOfSoulsDealDamageEffect copy() { + return new WallOfSoulsDealDamageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + int amount = (Integer) getValue("damage"); + if (amount > 0) { + Player targetOpponent = game.getPlayer(source.getTargets().getFirstTarget()); + if (targetOpponent != null) { + targetOpponent.damage(amount, source.getSourceId(), game, false, true); + return true; + } + } + return false; + } +} \ No newline at end of file diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 6059b1c98a..4653aa976a 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -26472,7 +26472,7 @@ Shadowstorm|Tempest Remastered|157|U|{R}|Sorcery|||Shadowstorm deals 2 damage to Shard Phoenix|Tempest Remastered|158|M|{4}{R}|Creature - Phoenix|2|2|Flying$Sacrifice Shard Phoenix: Shard Phoenix deals 2 damage to each creature without flying.${R}{R}{R}: Return Shard Phoenix from your graveyard to your hand. Activate this ability only during your upkeep.| Shatter|Tempest Remastered|159|C|{1}{R}|Instant|||Destroy target artifact.| Spellshock|Tempest Remastered|160|U|{2}{R}|Enchantment|||Whenever a player casts a spell, Spellshock deals 2 damage to that player.| -Spitting Hydra|Tempest Remastered|161|R|{3}{R}{R}|Creature - Hydra|0|0|Spitting Hydra enteres the battlefield wtih four +1/+1 counters on it.${1}{R}, Remove a +1/+1 counter from Spitting Hydra: Spitting Hydra deals 1 damage to target creature.| +Spitting Hydra|Tempest Remastered|161|R|{3}{R}{R}|Creature - Hydra|0|0|Spitting Hydra enters the battlefield with four +1/+1 counters on it.${1}{R}, Remove a +1/+1 counter from Spitting Hydra: Spitting Hydra deals 1 damage to target creature.| Starke of Rath|Tempest Remastered|162|M|{1}{R}{R}|Legendary Creature - Human Rogue|2|2|{tap}: Destroy target artifact or creature. That permanent's controller gains control of Starke of Rath.| Stun|Tempest Remastered|163|C|{1}{R}|Instant|||Target creature can't block this turn.$Draw a card.| Wall of Diffusion|Tempest Remastered|164|C|{1}{R}|Creature - Wall|0|5|Defender$Wall of Diffusion can block creatures with shadow as though Wall of Diffusion had shadow.| From 923cc03f12ad6c5550e9f5aa2ef1f0a4113a3d5c Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Wed, 1 Apr 2015 00:33:17 -0300 Subject: [PATCH 022/175] - Added Fire-Belly Changeling --- .../knightsvsdragons/FireBellyChangeling.java | 71 +++++++++++++++++++ .../mage/sets/lorwyn/FireBellyChangeling.java | 52 ++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/FireBellyChangeling.java create mode 100644 Mage.Sets/src/mage/sets/lorwyn/FireBellyChangeling.java diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/FireBellyChangeling.java b/Mage.Sets/src/mage/sets/knightsvsdragons/FireBellyChangeling.java new file mode 100644 index 0000000000..d3edd1ac0d --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/FireBellyChangeling.java @@ -0,0 +1,71 @@ +/* + * 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.knightsvsdragons; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.ChangelingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author FenrisulfrX + */ +public class FireBellyChangeling extends CardImpl { + + public FireBellyChangeling(UUID ownerId) { + super(ownerId, 51, "Fire-Belly Changeling", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{R}"); + this.expansionSetCode = "DDG"; + this.subtype.add("Shapeshifter"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // Changeling + this.addAbility(ChangelingAbility.getInstance()); + + // {R}: Fire-Belly Changeling gets +1/+0 until end of turn. Activate this ability no more than twice each turn. + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, + new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}"), 2)); + } + + public FireBellyChangeling(final FireBellyChangeling card) { + super(card); + } + + @Override + public FireBellyChangeling copy() { + return new FireBellyChangeling(this); + } +} diff --git a/Mage.Sets/src/mage/sets/lorwyn/FireBellyChangeling.java b/Mage.Sets/src/mage/sets/lorwyn/FireBellyChangeling.java new file mode 100644 index 0000000000..9100a377e5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/lorwyn/FireBellyChangeling.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.lorwyn; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class FireBellyChangeling extends mage.sets.knightsvsdragons.FireBellyChangeling { + + public FireBellyChangeling(UUID ownerId) { + super(ownerId); + this.cardNumber = 164; + this.expansionSetCode = "LRW"; + } + + public FireBellyChangeling(final FireBellyChangeling card) { + super(card); + } + + @Override + public FireBellyChangeling copy() { + return new FireBellyChangeling(this); + } +} From 9c048b19c33242096a51ab7f7f44a5f23ccaa83f Mon Sep 17 00:00:00 2001 From: fireshoes Date: Wed, 1 Apr 2015 00:50:33 -0500 Subject: [PATCH 023/175] [TPR] Added some additional Green Tempest Remastered cards --- Mage.Sets/src/mage/sets/exodus/Skyshaper.java | 54 +++++++++ .../src/mage/sets/exodus/SpikeHatcher.java | 52 +++++++++ .../mage/sets/jacevsvraska/OhranViper.java | 6 - .../src/mage/sets/stronghold/ElvenRite.java | 97 +++++++++++++++ .../mage/sets/stronghold/LowlandBasilisk.java | 54 +++++++++ .../mage/sets/stronghold/SpikeBreeder.java | 54 +++++++++ .../src/mage/sets/stronghold/SpikeColony.java | 77 ++++++++++++ .../mage/sets/stronghold/VerdantTouch.java | 54 +++++++++ .../src/mage/sets/tempest/HeartwoodDryad.java | 52 +++++++++ Mage.Sets/src/mage/sets/tempest/Krakilin.java | 110 ++++++++++++++++++ .../src/mage/sets/tempest/RealityAnchor.java | 66 +++++++++++ .../sets/tempestremastered/ElvenRite.java | 54 +++++++++ .../tempestremastered/HeartwoodDryad.java | 97 +++++++++++++++ .../mage/sets/tempestremastered/Krakilin.java | 54 +++++++++ .../tempestremastered/LowlandBasilisk.java | 70 +++++++++++ .../sets/tempestremastered/RealityAnchor.java | 52 +++++++++ .../sets/tempestremastered/Skyshaper.java | 69 +++++++++++ .../sets/tempestremastered/SpikeBreeder.java | 97 +++++++++++++++ .../sets/tempestremastered/SpikeColony.java | 52 +++++++++ .../sets/tempestremastered/SpikeHatcher.java | 84 +++++++++++++ .../sets/tempestremastered/VerdantTouch.java | 78 +++++++++++++ Utils/mtg-cards-data.txt | 4 +- 22 files changed, 1379 insertions(+), 8 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/exodus/Skyshaper.java create mode 100644 Mage.Sets/src/mage/sets/exodus/SpikeHatcher.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/ElvenRite.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/LowlandBasilisk.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/SpikeBreeder.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/SpikeColony.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/VerdantTouch.java create mode 100644 Mage.Sets/src/mage/sets/tempest/HeartwoodDryad.java create mode 100644 Mage.Sets/src/mage/sets/tempest/Krakilin.java create mode 100644 Mage.Sets/src/mage/sets/tempest/RealityAnchor.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ElvenRite.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/HeartwoodDryad.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Krakilin.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/LowlandBasilisk.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/RealityAnchor.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Skyshaper.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpikeBreeder.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpikeColony.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SpikeHatcher.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VerdantTouch.java diff --git a/Mage.Sets/src/mage/sets/exodus/Skyshaper.java b/Mage.Sets/src/mage/sets/exodus/Skyshaper.java new file mode 100644 index 0000000000..6448c4f298 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/Skyshaper.java @@ -0,0 +1,54 @@ +/* + * 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.exodus; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Skyshaper extends mage.sets.tempestremastered.Skyshaper { + + public Skyshaper(UUID ownerId) { + super(ownerId); + this.cardNumber = 137; + this.expansionSetCode = "EXO"; + this.rarity = Rarity.UNCOMMON; + } + + public Skyshaper(final Skyshaper card) { + super(card); + } + + @Override + public Skyshaper copy() { + return new Skyshaper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/exodus/SpikeHatcher.java b/Mage.Sets/src/mage/sets/exodus/SpikeHatcher.java new file mode 100644 index 0000000000..59878d9a47 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/SpikeHatcher.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.exodus; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpikeHatcher extends mage.sets.tempestremastered.SpikeHatcher { + + public SpikeHatcher(UUID ownerId) { + super(ownerId); + this.cardNumber = 126; + this.expansionSetCode = "EXO"; + } + + public SpikeHatcher(final SpikeHatcher card) { + super(card); + } + + @Override + public SpikeHatcher copy() { + return new SpikeHatcher(this); + } +} diff --git a/Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java b/Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java index 54ecd4de0f..3d0a4275d4 100644 --- a/Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java +++ b/Mage.Sets/src/mage/sets/jacevsvraska/OhranViper.java @@ -29,21 +29,15 @@ 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.CreateDelayedTriggeredAbilityEffect; 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; /** * diff --git a/Mage.Sets/src/mage/sets/stronghold/ElvenRite.java b/Mage.Sets/src/mage/sets/stronghold/ElvenRite.java new file mode 100644 index 0000000000..02f5e41008 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/ElvenRite.java @@ -0,0 +1,97 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.effects.OneShotEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.Target; +import mage.target.common.TargetCreaturePermanentAmount; + +/** + * + * @author fireshoes + */ +public class ElvenRite extends CardImpl { + + public ElvenRite(UUID ownerId) { + super(ownerId, 56, "Elven Rite", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{G}"); + this.expansionSetCode = "STH"; + + // Distribute two +1/+1 counters among one or two target creatures. + this.getSpellAbility().addEffect(new ElvenRiteDistributeEffect()); + this.getSpellAbility().addTarget(new TargetCreaturePermanentAmount(2)); + } + + public ElvenRite(final ElvenRite card) { + super(card); + } + + @Override + public ElvenRite copy() { + return new ElvenRite(this); + } +} + +class ElvenRiteDistributeEffect extends OneShotEffect { + + public ElvenRiteDistributeEffect() { + super(Outcome.BoostCreature); + this.staticText = "Distribute two +1/+1 counters among one or two target creatures"; + } + + public ElvenRiteDistributeEffect(final ElvenRiteDistributeEffect effect) { + super(effect); + } + + @Override + public ElvenRiteDistributeEffect copy() { + return new ElvenRiteDistributeEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + if (source.getTargets().size() > 0) { + Target multiTarget = source.getTargets().get(0); + for (UUID target : multiTarget.getTargets()) { + Permanent permanent = game.getPermanent(target); + if (permanent != null) { + permanent.addCounters(CounterType.P1P1.createInstance(multiTarget.getTargetAmount(target)), game); + } + } + } + return true; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/stronghold/LowlandBasilisk.java b/Mage.Sets/src/mage/sets/stronghold/LowlandBasilisk.java new file mode 100644 index 0000000000..9bf8b4dcad --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/LowlandBasilisk.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class LowlandBasilisk extends mage.sets.tempestremastered.LowlandBasilisk { + + public LowlandBasilisk(UUID ownerId) { + super(ownerId); + this.cardNumber = 59; + this.expansionSetCode = "STH"; + this.rarity = Rarity.COMMON; + } + + public LowlandBasilisk(final LowlandBasilisk card) { + super(card); + } + + @Override + public LowlandBasilisk copy() { + return new LowlandBasilisk(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/SpikeBreeder.java b/Mage.Sets/src/mage/sets/stronghold/SpikeBreeder.java new file mode 100644 index 0000000000..4039154002 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/SpikeBreeder.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class SpikeBreeder extends mage.sets.tempestremastered.SpikeBreeder { + + public SpikeBreeder(UUID ownerId) { + super(ownerId); + this.cardNumber = 66; + this.expansionSetCode = "STH"; + this.rarity = Rarity.RARE; + } + + public SpikeBreeder(final SpikeBreeder card) { + super(card); + } + + @Override + public SpikeBreeder copy() { + return new SpikeBreeder(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/SpikeColony.java b/Mage.Sets/src/mage/sets/stronghold/SpikeColony.java new file mode 100644 index 0000000000..11607e9d45 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/SpikeColony.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.stronghold; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class SpikeColony extends CardImpl { + + public SpikeColony(UUID ownerId) { + super(ownerId, 67, "Spike Colony", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{4}{G}"); + this.expansionSetCode = "STH"; + this.subtype.add("Spike"); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Spike Colony enters the battlefield with four +1/+1 counters on it. + this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(4)), "with four +1/+1 counters on it")); + + // {2}, Remove a +1/+1 counter from Spike Colony: Put a +1/+1 counter on target creature. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new GenericManaCost(2)); + ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance())); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public SpikeColony(final SpikeColony card) { + super(card); + } + + @Override + public SpikeColony copy() { + return new SpikeColony(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/VerdantTouch.java b/Mage.Sets/src/mage/sets/stronghold/VerdantTouch.java new file mode 100644 index 0000000000..9f14e4751f --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/VerdantTouch.java @@ -0,0 +1,54 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class VerdantTouch extends mage.sets.tempestremastered.VerdantTouch { + + public VerdantTouch(UUID ownerId) { + super(ownerId); + this.cardNumber = 73; + this.expansionSetCode = "STH"; + this.rarity = Rarity.RARE; + } + + public VerdantTouch(final VerdantTouch card) { + super(card); + } + + @Override + public VerdantTouch copy() { + return new VerdantTouch(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/HeartwoodDryad.java b/Mage.Sets/src/mage/sets/tempest/HeartwoodDryad.java new file mode 100644 index 0000000000..5d56921c33 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/HeartwoodDryad.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.tempest; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class HeartwoodDryad extends mage.sets.tempestremastered.HeartwoodDryad { + + public HeartwoodDryad(UUID ownerId) { + super(ownerId); + this.cardNumber = 125; + this.expansionSetCode = "TMP"; + } + + public HeartwoodDryad(final HeartwoodDryad card) { + super(card); + } + + @Override + public HeartwoodDryad copy() { + return new HeartwoodDryad(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/Krakilin.java b/Mage.Sets/src/mage/sets/tempest/Krakilin.java new file mode 100644 index 0000000000..08f6c05747 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/Krakilin.java @@ -0,0 +1,110 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.SpellAbility; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.RegenerateSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.game.Game; +import mage.game.permanent.Permanent; + +/** + * + * @author fireshoes + */ +public class Krakilin extends CardImpl { + + public Krakilin(UUID ownerId) { + super(ownerId, 129, "Krakilin", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{X}{G}{G}"); + this.expansionSetCode = "TMP"; + this.subtype.add("Beast"); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Krakilin enters the battlefield with X +1/+1 counters on it. + this.addAbility(new EntersBattlefieldAbility(new KrakilinEffect())); + + // {1}{G}: Regenerate Krakilin. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new ManaCostsImpl("{1}{G}"))); + } + + public Krakilin(final Krakilin card) { + super(card); + } + + @Override + public Krakilin copy() { + return new Krakilin(this); + } +} + +class KrakilinEffect extends OneShotEffect { + + public KrakilinEffect() { + super(Outcome.BoostCreature); + staticText = "{this} enters the battlefield with X +1/+1 counters on it"; + } + + public KrakilinEffect(final KrakilinEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null) { + Object obj = getValue(mage.abilities.effects.EntersBattlefieldEffect.SOURCE_CAST_SPELL_ABILITY); + if (obj != null && obj instanceof SpellAbility) { + // delete to prevent using it again if put into battlefield from other effect + setValue(mage.abilities.effects.EntersBattlefieldEffect.SOURCE_CAST_SPELL_ABILITY, null); + int amount = ((SpellAbility)obj).getManaCostsToPay().getX(); + if (amount > 0) { + permanent.addCounters(CounterType.P1P1.createInstance(amount), game); + } + } + } + return true; + } + + @Override + public KrakilinEffect copy() { + return new KrakilinEffect(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempest/RealityAnchor.java b/Mage.Sets/src/mage/sets/tempest/RealityAnchor.java new file mode 100644 index 0000000000..ff23534beb --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/RealityAnchor.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.tempest; + +import java.util.UUID; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.continuous.LoseAbilityTargetEffect; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class RealityAnchor extends CardImpl { + + public RealityAnchor(UUID ownerId) { + super(ownerId, 140, "Reality Anchor", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{G}"); + this.expansionSetCode = "TMP"; + + // Target creature loses shadow until end of turn. + this.getSpellAbility().addEffect(new LoseAbilityTargetEffect(ShadowAbility.getInstance(), Duration.EndOfTurn)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + + // Draw a card. + this.getSpellAbility().addEffect(new DrawCardSourceControllerEffect(1)); + } + + public RealityAnchor(final RealityAnchor card) { + super(card); + } + + @Override + public RealityAnchor copy() { + return new RealityAnchor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ElvenRite.java b/Mage.Sets/src/mage/sets/tempestremastered/ElvenRite.java new file mode 100644 index 0000000000..6b428adf44 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ElvenRite.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class ElvenRite extends mage.sets.stronghold.ElvenRite { + + public ElvenRite(UUID ownerId) { + super(ownerId); + this.cardNumber = 169; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.COMMON; + } + + public ElvenRite(final ElvenRite card) { + super(card); + } + + @Override + public ElvenRite copy() { + return new ElvenRite(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/HeartwoodDryad.java b/Mage.Sets/src/mage/sets/tempestremastered/HeartwoodDryad.java new file mode 100644 index 0000000000..640b326dfd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/HeartwoodDryad.java @@ -0,0 +1,97 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.AsThoughEffectImpl; +import mage.cards.CardImpl; +import mage.constants.AsThoughEffectType; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; + +/** + * + * @author fireshoes + */ +public class HeartwoodDryad extends CardImpl { + + public HeartwoodDryad(UUID ownerId) { + super(ownerId, 173, "Heartwood Dryad", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{1}{G}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Dryad"); + this.power = new MageInt(2); + this.toughness = new MageInt(1); + + // Heartwood Dryad can block creatures with shadow as though Heartwood Dryad had shadow. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CanBlockAsThoughtIthadShadowEffect(Duration.WhileOnBattlefield))); + } + + public HeartwoodDryad(final HeartwoodDryad card) { + super(card); + } + + @Override + public HeartwoodDryad copy() { + return new HeartwoodDryad(this); + } +} + +class CanBlockAsThoughtIthadShadowEffect extends AsThoughEffectImpl { + + public CanBlockAsThoughtIthadShadowEffect(Duration duration) { + super(AsThoughEffectType.BLOCK_SHADOW, duration, Outcome.Benefit); + staticText = "{this} can block creatures with shadow as though {this} had shadow"; + } + + public CanBlockAsThoughtIthadShadowEffect(final CanBlockAsThoughtIthadShadowEffect effect) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public CanBlockAsThoughtIthadShadowEffect copy() { + return new CanBlockAsThoughtIthadShadowEffect(this); + } + + @Override + public boolean applies(UUID sourceId, Ability source, UUID affectedControllerId, Game game) { + return sourceId.equals(source.getSourceId()); + } + +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Krakilin.java b/Mage.Sets/src/mage/sets/tempestremastered/Krakilin.java new file mode 100644 index 0000000000..f19a2c3c07 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Krakilin.java @@ -0,0 +1,54 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class Krakilin extends mage.sets.tempest.Krakilin { + + public Krakilin(UUID ownerId) { + super(ownerId); + this.cardNumber = 177; + this.expansionSetCode = "TPR"; + this.rarity = Rarity.RARE; + } + + public Krakilin(final Krakilin card) { + super(card); + } + + @Override + public Krakilin copy() { + return new Krakilin(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/LowlandBasilisk.java b/Mage.Sets/src/mage/sets/tempestremastered/LowlandBasilisk.java new file mode 100644 index 0000000000..b38830262b --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/LowlandBasilisk.java @@ -0,0 +1,70 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.DealsDamageToACreatureTriggeredAbility; +import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.effects.common.DestroyTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author fireshoes + */ +public class LowlandBasilisk extends CardImpl { + + public LowlandBasilisk(UUID ownerId) { + super(ownerId, 178, "Lowland Basilisk", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{G}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Basilisk"); + this.power = new MageInt(1); + this.toughness = new MageInt(3); + + // Whenever Lowland Basilisk deals damage to a creature, destroy that creature at end of combat. + this.addAbility(new DealsDamageToACreatureTriggeredAbility( + new CreateDelayedTriggeredAbilityEffect( + new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect("destroy that creature at end of combat")), true), + false, + false, + true)); + } + + public LowlandBasilisk(final LowlandBasilisk card) { + super(card); + } + + @Override + public LowlandBasilisk copy() { + return new LowlandBasilisk(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/RealityAnchor.java b/Mage.Sets/src/mage/sets/tempestremastered/RealityAnchor.java new file mode 100644 index 0000000000..5d95e0b6e2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/RealityAnchor.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class RealityAnchor extends mage.sets.tempest.RealityAnchor { + + public RealityAnchor(UUID ownerId) { + super(ownerId); + this.cardNumber = 188; + this.expansionSetCode = "TPR"; + } + + public RealityAnchor(final RealityAnchor card) { + super(card); + } + + @Override + public RealityAnchor copy() { + return new RealityAnchor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Skyshaper.java b/Mage.Sets/src/mage/sets/tempestremastered/Skyshaper.java new file mode 100644 index 0000000000..cd39cfa827 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Skyshaper.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.tempestremastered; + +import java.util.UUID; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.SacrificeSourceCost; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class Skyshaper extends CardImpl { + + public Skyshaper(UUID ownerId) { + super(ownerId, 231, "Skyshaper", Rarity.COMMON, new CardType[]{CardType.ARTIFACT}, "{2}"); + this.expansionSetCode = "TPR"; + + // Sacrifice Skyshaper: Creatures you control gain flying until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, + new GainAbilityControlledEffect( + FlyingAbility.getInstance(), + Duration.EndOfTurn, + new FilterControlledCreaturePermanent("Creatures")), + new SacrificeSourceCost())); + } + + public Skyshaper(final Skyshaper card) { + super(card); + } + + @Override + public Skyshaper copy() { + return new Skyshaper(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpikeBreeder.java b/Mage.Sets/src/mage/sets/tempestremastered/SpikeBreeder.java new file mode 100644 index 0000000000..8b50181026 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpikeBreeder.java @@ -0,0 +1,97 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.game.permanent.token.Token; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class SpikeBreeder extends CardImpl { + + public SpikeBreeder(UUID ownerId) { + super(ownerId, 194, "Spike Breeder", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Spike"); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Spike Breeder enters the battlefield with three +1/+1 counters on it. + this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(3)), "with three +1/+1 counters on it")); + + // {2}, Remove a +1/+1 counter from Spike Breeder: Put a +1/+1 counter on target creature. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new GenericManaCost(2)); + ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance())); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + + // {2}, Remove a +1/+1 counter from Spike Breeder: Put a 1/1 green Spike creature token onto the battlefield. + Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SpikeToken()), new GenericManaCost(2)); + ability2.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance())); + this.addAbility(ability2); + + } + + public SpikeBreeder(final SpikeBreeder card) { + super(card); + } + + @Override + public SpikeBreeder copy() { + return new SpikeBreeder(this); + } +} + +class SpikeToken extends Token { + + SpikeToken() { + super("Spike", "1/1 green Spike creature token"); + cardType.add(CardType.CREATURE); + color.setGreen(true); + subtype.add("Spike"); + power = new MageInt(1); + toughness = new MageInt(1); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpikeColony.java b/Mage.Sets/src/mage/sets/tempestremastered/SpikeColony.java new file mode 100644 index 0000000000..fcd882c369 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpikeColony.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class SpikeColony extends mage.sets.stronghold.SpikeColony { + + public SpikeColony(UUID ownerId) { + super(ownerId); + this.cardNumber = 195; + this.expansionSetCode = "TPR"; + } + + public SpikeColony(final SpikeColony card) { + super(card); + } + + @Override + public SpikeColony copy() { + return new SpikeColony(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SpikeHatcher.java b/Mage.Sets/src/mage/sets/tempestremastered/SpikeHatcher.java new file mode 100644 index 0000000000..77de8e0cb9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SpikeHatcher.java @@ -0,0 +1,84 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.RemoveCountersSourceCost; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.common.RegenerateSourceEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.effects.common.counter.AddCountersTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author fireshoes + */ +public class SpikeHatcher extends CardImpl { + + public SpikeHatcher(UUID ownerId) { + super(ownerId, 197, "Spike Hatcher", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{6}{G}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Spike"); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Spike Hatcher enters the battlefield with six +1/+1 counters on it. + this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(6)), "with six +1/+1 counters on it")); + + // {2}, Remove a +1/+1 counter from Spike Hatcher: Put a +1/+1 counter on target creature. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new AddCountersTargetEffect(CounterType.P1P1.createInstance()), new GenericManaCost(2)); + ability.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance())); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + + // {1}, Remove a +1/+1 counter from Spike Hatcher: Regenerate Spike Hatcher. + Ability ability2 = new SimpleActivatedAbility(Zone.BATTLEFIELD, new RegenerateSourceEffect(), new GenericManaCost(1)); + ability2.addCost(new RemoveCountersSourceCost(CounterType.P1P1.createInstance())); + this.addAbility(ability2); + + } + + public SpikeHatcher(final SpikeHatcher card) { + super(card); + } + + @Override + public SpikeHatcher copy() { + return new SpikeHatcher(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VerdantTouch.java b/Mage.Sets/src/mage/sets/tempestremastered/VerdantTouch.java new file mode 100644 index 0000000000..1dbe15947f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VerdantTouch.java @@ -0,0 +1,78 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.effects.common.continuous.BecomesCreatureTargetEffect; +import mage.abilities.keyword.BuybackAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.game.permanent.token.Token; +import mage.target.common.TargetLandPermanent; + +/** + * + * @author fireshoes + */ +public class VerdantTouch extends CardImpl { + + public VerdantTouch(UUID ownerId) { + super(ownerId, 203, "Verdant Touch", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{1}{G}"); + this.expansionSetCode = "TPR"; + + // Buyback {3} + this.addAbility(new BuybackAbility("{3}")); + + // Target land becomes a 2/2 creature that's still a land. + this.getSpellAbility().addEffect(new BecomesCreatureTargetEffect(new VerdantTouchLandToken(), false, true, Duration.Custom)); + this.getSpellAbility().addTarget(new TargetLandPermanent()); + } + + public VerdantTouch(final VerdantTouch card) { + super(card); + } + + @Override + public VerdantTouch copy() { + return new VerdantTouch(this); + } +} + +class VerdantTouchLandToken extends Token { + + public VerdantTouchLandToken() { + super("", "2/2 creature"); + this.cardType.add(CardType.CREATURE); + + this.power = new MageInt(2); + this.toughness = new MageInt(2); + } +} \ No newline at end of file diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 4653aa976a..98ab5cc253 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -26542,10 +26542,10 @@ Mindless Automaton|Tempest Remastered|227|R|{4}|Artifact Creature - Construct|0| Mox Diamond|Tempest Remastered|228|M|{0}|Artifact|||If Mox Diamond would enter the battlefield, you may discard a land card instead. If you do, put Mox Diamond onto the battlefield. If you don't, put it into its owner's graveyard.${T}: Add one mana of any color to your mana pool.| Patchwork Gnomes|Tempest Remastered|229|C|{3}|Artifact Creature - Gnome|2|1|Discard a card: Regenerate Patchwork Gnomes.| Phyrexian Hulk|Tempest Remastered|230|U|{6}|Artifact Creature - Golem|5|4|| -Skyshaper|Tempest Remastered|231|C|{2}|Artifact|||Sacrifice Skyshaper: Creature you control gain flying until end of turn.| +Skyshaper|Tempest Remastered|231|C|{2}|Artifact|||Sacrifice Skyshaper: Creatures you control gain flying until end of turn.| Telethopter|Tempest Remastered|232|C|{4}|Artifact Creature - Thopter|3|1|Tap an untapped creature you control: Telethopter gains flying until end of turn.| Thopter Squadron|Temperest Remastered|233|R|{5}|Artifact Creature - Thopter|0|0|Flying$Thopter Squadron enters the battlefield with three +1/+1 counters on it.${1}, Remove a +1/+1 counter from Thopter Squadron: Put a +1/+1 colorless Thopter artifact creature token with flying onto the battlefield. Activate this ability only any time you could cast a sorcery.${1}, Sacrifice another Thopter: Put a +1/+1 counter on Thopter Squardon. Activate this ability only any time you could cast a sorcery.| -Volrath's Labratory|Tempest Remastered|234|R|{5}|Artifact|||As Volrath's Labratory enters the battlefield, choose a color and a creature type.${5}, {T}: Put a 2/2 creature token of the chosen color and type onto the battlefield.| +Volrath's Laboratory|Tempest Remastered|234|R|{5}|Artifact|||As Volrath's Laboratory enters the battlefield, choose a color and a creature type.${5}, {T}: Put a 2/2 creature token of the chosen color and type onto the battlefield.| Caldera Lake|Tempest Remastered|235|U||Land|||Caldera Lake enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {U} or {R} to your mana pool. Caldera Lake deals 1 damage to you.| Cinder Marsh|Tempest Remastered|236|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {B} or {R} to your mana pool. Cinder Marsh doesn't untap during your next untap step.| City of Traitors|Tempest Remastered|237|R||Land|||When you play another land, sacrifice City of Traitors.${T}: Add {2} to your mana pool.| From 061b600dd2b9f1d1919a5106924dfc3aa0554d14 Mon Sep 17 00:00:00 2001 From: emerald000 Date: Wed, 1 Apr 2015 15:15:00 -0400 Subject: [PATCH 024/175] [TPR] Added Crashing Boars, Endangered Armodon and Recycle. --- .../src/mage/sets/exodus/CrashingBoars.java | 52 ++++++++ .../sets/stronghold/EndangeredArmodon.java | 52 ++++++++ Mage.Sets/src/mage/sets/tempest/Recycle.java | 105 ++++++++++++++++ .../sets/tempestremastered/CrashingBoars.java | 113 ++++++++++++++++++ .../tempestremastered/EndangeredArmodon.java | 100 ++++++++++++++++ .../mage/sets/tempestremastered/Recycle.java | 52 ++++++++ .../MustBeBlockedByTargetSourceEffect.java | 6 +- Utils/_unimplemented.txt | 0 Utils/mtg-cards-data.txt | 2 +- 9 files changed, 478 insertions(+), 4 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/exodus/CrashingBoars.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/EndangeredArmodon.java create mode 100644 Mage.Sets/src/mage/sets/tempest/Recycle.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/CrashingBoars.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/EndangeredArmodon.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Recycle.java delete mode 100644 Utils/_unimplemented.txt diff --git a/Mage.Sets/src/mage/sets/exodus/CrashingBoars.java b/Mage.Sets/src/mage/sets/exodus/CrashingBoars.java new file mode 100644 index 0000000000..9def81a189 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/CrashingBoars.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.exodus; + +import java.util.UUID; + +/** + * + * @author emerald000 + */ +public class CrashingBoars extends mage.sets.tempestremastered.CrashingBoars { + + public CrashingBoars(UUID ownerId) { + super(ownerId); + this.cardNumber = 108; + this.expansionSetCode = "EXO"; + } + + public CrashingBoars(final CrashingBoars card) { + super(card); + } + + @Override + public CrashingBoars copy() { + return new CrashingBoars(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/EndangeredArmodon.java b/Mage.Sets/src/mage/sets/stronghold/EndangeredArmodon.java new file mode 100644 index 0000000000..60c9eec0fa --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/EndangeredArmodon.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.stronghold; + +import java.util.UUID; + +/** + * + * @author emerald000 + */ +public class EndangeredArmodon extends mage.sets.tempestremastered.EndangeredArmodon { + + public EndangeredArmodon(UUID ownerId) { + super(ownerId); + this.cardNumber = 57; + this.expansionSetCode = "STH"; + } + + public EndangeredArmodon(final EndangeredArmodon card) { + super(card); + } + + @Override + public EndangeredArmodon copy() { + return new EndangeredArmodon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/Recycle.java b/Mage.Sets/src/mage/sets/tempest/Recycle.java new file mode 100644 index 0000000000..c34d0edf4d --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/Recycle.java @@ -0,0 +1,105 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.tempest; + +import java.util.UUID; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.SkipDrawStepEffect; +import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect; +import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect.HandSizeModification; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; + +/** + * + * @author emerald000 + */ +public class Recycle extends CardImpl { + + public Recycle(UUID ownerId) { + super(ownerId, 142, "Recycle", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{4}{G}{G}"); + this.expansionSetCode = "TMP"; + + // Skip your draw step. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipDrawStepEffect())); + + // Whenever you play a card, draw a card. + this.addAbility(new RecycleTriggeredAbility()); + + // Your maximum hand size is two. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MaximumHandSizeControllerEffect(2, Duration.WhileOnBattlefield, HandSizeModification.SET))); + } + + public Recycle(final Recycle card) { + super(card); + } + + @Override + public Recycle copy() { + return new Recycle(this); + } +} + +class RecycleTriggeredAbility extends TriggeredAbilityImpl { + + RecycleTriggeredAbility() { + super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), false); + } + + RecycleTriggeredAbility(final RecycleTriggeredAbility ability) { + super(ability); + } + + @Override + public RecycleTriggeredAbility copy() { + return new RecycleTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == EventType.SPELL_CAST || event.getType() == EventType.LAND_PLAYED; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return event.getPlayerId().equals(this.getControllerId()); + } + + @Override + public String getRule() { + return "Whenever you play a card, draw a card."; + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/CrashingBoars.java b/Mage.Sets/src/mage/sets/tempestremastered/CrashingBoars.java new file mode 100644 index 0000000000..6efb5a48c2 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/CrashingBoars.java @@ -0,0 +1,113 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.AttacksTriggeredAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.RequirementEffect; +import mage.abilities.effects.common.combat.MustBeBlockedByTargetSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.SetTargetPointer; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.permanent.TappedPredicate; +import mage.game.Game; +import mage.players.Player; +import mage.target.Target; +import mage.target.common.TargetControlledCreaturePermanent; +import mage.target.targetpointer.FixedTarget; + +/** + * + * @author emerald000 + */ +public class CrashingBoars extends CardImpl { + + public CrashingBoars(UUID ownerId) { + super(ownerId, 168, "Crashing Boars", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{3}{G}{G}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Boar"); + this.power = new MageInt(4); + this.toughness = new MageInt(4); + + // Whenever Crashing Boars attacks, defending player chooses an untapped creature he or she controls. That creature block Crashing Boars this turn if able. + this.addAbility(new AttacksTriggeredAbility(new CrashingBoarsEffect(), false, "", SetTargetPointer.PLAYER)); + } + + public CrashingBoars(final CrashingBoars card) { + super(card); + } + + @Override + public CrashingBoars copy() { + return new CrashingBoars(this); + } +} + +class CrashingBoarsEffect extends OneShotEffect { + + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("untapped creature you control"); + static { + filter.add(Predicates.not(new TappedPredicate())); + } + + CrashingBoarsEffect() { + super(Outcome.Benefit); + this.staticText = "defending player chooses an untapped creature he or she controls. That creature blocks {this} this turn if able"; + } + + CrashingBoarsEffect(final CrashingBoarsEffect effect) { + super(effect); + } + + @Override + public CrashingBoarsEffect copy() { + return new CrashingBoarsEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player defendingPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source)); + if (defendingPlayer != null) { + Target target = new TargetControlledCreaturePermanent(1, 1, filter, true); + if (target.choose(Outcome.Neutral, defendingPlayer.getId(), source.getSourceId(), game)) { + RequirementEffect effect = new MustBeBlockedByTargetSourceEffect(); + effect.setTargetPointer(new FixedTarget(target.getFirstTarget())); + game.addEffect(effect, source); + } + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/EndangeredArmodon.java b/Mage.Sets/src/mage/sets/tempestremastered/EndangeredArmodon.java new file mode 100644 index 0000000000..3aac6873f3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/EndangeredArmodon.java @@ -0,0 +1,100 @@ +/* + * 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.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.StateTriggeredAbility; +import mage.abilities.effects.common.SacrificeSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.Filter.ComparisonType; +import mage.filter.common.FilterControlledCreaturePermanent; +import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.game.Game; +import mage.game.events.GameEvent; + +/** + * + * @author emerald000 + */ +public class EndangeredArmodon extends CardImpl { + + public EndangeredArmodon(UUID ownerId) { + super(ownerId, 171, "Endangered Armodon", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{2}{G}{G}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Elephant"); + this.power = new MageInt(4); + this.toughness = new MageInt(5); + + // When you control a creature with toughness 2 or less, sacrifice Endangered Armodon. + this.addAbility(new EndangeredArmodonStateTriggeredAbility()); + } + + public EndangeredArmodon(final EndangeredArmodon card) { + super(card); + } + + @Override + public EndangeredArmodon copy() { + return new EndangeredArmodon(this); + } +} + +class EndangeredArmodonStateTriggeredAbility extends StateTriggeredAbility { + + private static final FilterControlledCreaturePermanent filter = new FilterControlledCreaturePermanent("creature with toughness 2 or less"); + static { + filter.add(new ToughnessPredicate(ComparisonType.LessThan, 3)); + } + + EndangeredArmodonStateTriggeredAbility() { + super(Zone.BATTLEFIELD, new SacrificeSourceEffect()); + } + + EndangeredArmodonStateTriggeredAbility(final EndangeredArmodonStateTriggeredAbility ability) { + super(ability); + } + + @Override + public EndangeredArmodonStateTriggeredAbility copy() { + return new EndangeredArmodonStateTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return game.getBattlefield().contains(filter, this.getControllerId(), game, 1); + } + + @Override + public String getRule() { + return "When you control a creature with toughness 2 or less, sacrifice {this}."; + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Recycle.java b/Mage.Sets/src/mage/sets/tempestremastered/Recycle.java new file mode 100644 index 0000000000..1c2a5d26f7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Recycle.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author emerald000 + */ +public class Recycle extends mage.sets.tempest.Recycle { + + public Recycle(UUID ownerId) { + super(ownerId); + this.cardNumber = 189; + this.expansionSetCode = "TPR"; + } + + public Recycle(final Recycle card) { + super(card); + } + + @Override + public Recycle copy() { + return new Recycle(this); + } +} diff --git a/Mage/src/mage/abilities/effects/common/combat/MustBeBlockedByTargetSourceEffect.java b/Mage/src/mage/abilities/effects/common/combat/MustBeBlockedByTargetSourceEffect.java index 7fbab14890..16966be715 100644 --- a/Mage/src/mage/abilities/effects/common/combat/MustBeBlockedByTargetSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/combat/MustBeBlockedByTargetSourceEffect.java @@ -29,9 +29,9 @@ package mage.abilities.effects.common.combat; import java.util.UUID; -import mage.constants.Duration; import mage.abilities.Ability; import mage.abilities.effects.RequirementEffect; +import mage.constants.Duration; import mage.game.Game; import mage.game.permanent.Permanent; import mage.watchers.common.BlockedAttackerWatcher; @@ -57,8 +57,8 @@ public class MustBeBlockedByTargetSourceEffect extends RequirementEffect { @Override public boolean applies(Permanent permanent, Ability source, Game game) { - if (permanent.getId().equals(source.getFirstTarget())) { - Permanent blocker = game.getPermanent(source.getFirstTarget()); + if (permanent.getId().equals(this.getTargetPointer().getFirst(game, source))) { + Permanent blocker = game.getPermanent(this.getTargetPointer().getFirst(game, source)); if (blocker != null && blocker.canBlock(source.getSourceId(), game)) { Permanent attacker = game.getPermanent(source.getSourceId()); if (attacker != null) { diff --git a/Utils/_unimplemented.txt b/Utils/_unimplemented.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/Utils/mtg-cards-data.txt b/Utils/mtg-cards-data.txt index 6059b1c98a..22ce08ed10 100644 --- a/Utils/mtg-cards-data.txt +++ b/Utils/mtg-cards-data.txt @@ -26545,7 +26545,7 @@ Phyrexian Hulk|Tempest Remastered|230|U|{6}|Artifact Creature - Golem|5|4|| Skyshaper|Tempest Remastered|231|C|{2}|Artifact|||Sacrifice Skyshaper: Creature you control gain flying until end of turn.| Telethopter|Tempest Remastered|232|C|{4}|Artifact Creature - Thopter|3|1|Tap an untapped creature you control: Telethopter gains flying until end of turn.| Thopter Squadron|Temperest Remastered|233|R|{5}|Artifact Creature - Thopter|0|0|Flying$Thopter Squadron enters the battlefield with three +1/+1 counters on it.${1}, Remove a +1/+1 counter from Thopter Squadron: Put a +1/+1 colorless Thopter artifact creature token with flying onto the battlefield. Activate this ability only any time you could cast a sorcery.${1}, Sacrifice another Thopter: Put a +1/+1 counter on Thopter Squardon. Activate this ability only any time you could cast a sorcery.| -Volrath's Labratory|Tempest Remastered|234|R|{5}|Artifact|||As Volrath's Labratory enters the battlefield, choose a color and a creature type.${5}, {T}: Put a 2/2 creature token of the chosen color and type onto the battlefield.| +Volrath's Laboratory|Tempest Remastered|234|R|{5}|Artifact|||As Volrath's Laboratory enters the battlefield, choose a color and a creature type.${5}, {T}: Put a 2/2 creature token of the chosen color and type onto the battlefield.| Caldera Lake|Tempest Remastered|235|U||Land|||Caldera Lake enters the battlefield tapped.${tap}: Add {1} to your mana pool.${tap}: Add {U} or {R} to your mana pool. Caldera Lake deals 1 damage to you.| Cinder Marsh|Tempest Remastered|236|U||Land|||{tap}: Add {1} to your mana pool.${tap}: Add {B} or {R} to your mana pool. Cinder Marsh doesn't untap during your next untap step.| City of Traitors|Tempest Remastered|237|R||Land|||When you play another land, sacrifice City of Traitors.${T}: Add {2} to your mana pool.| From 34b1632f024d01b8296924c72b13d8a5969cd1b0 Mon Sep 17 00:00:00 2001 From: Jeff Date: Wed, 1 Apr 2015 16:45:25 -0500 Subject: [PATCH 025/175] - Added some cards and some small refactors. --- .../sets/alarareborn/ArchitectsOfWill.java | 39 ++--- .../sets/dragonsoftarkir/MirrorMockery.java | 2 - .../src/mage/sets/eventide/Evershrike.java | 16 +- .../sets/fifthedition/AkronLegionnaire.java | 52 +++++++ .../src/mage/sets/fifthedition/BloodLust.java | 52 +++++++ .../mage/sets/fifthedition/CarrionAnts.java | 67 +++++++++ .../sets/fifthedition/CrimsonManticore.java | 52 +++++++ .../mage/sets/fifthedition/DanceOfMany.java | 52 +++++++ .../src/mage/sets/fifthedition/FireDrake.java | 71 +++++++++ .../src/mage/sets/fifthedition/Heal.java | 52 +++++++ .../sets/fifthedition/IvoryGuardians.java | 52 +++++++ .../mage/sets/fifthedition/KillerBees.java | 71 +++++++++ .../mage/sets/fourthedition/BloodLust.java | 138 ++++++++++++++++++ .../mage/sets/fourthedition/CarrionAnts.java | 52 +++++++ .../sets/fourthedition/CrimsonManticore.java | 52 +++++++ .../mage/sets/fourthedition/KillerBees.java | 52 +++++++ Mage.Sets/src/mage/sets/iceage/Heal.java | 67 +++++++++ .../mage/sets/legends/AkronLegionnaire.java | 97 ++++++++++++ .../src/mage/sets/legends/BloodLust.java | 54 +++++++ .../src/mage/sets/legends/CarrionAnts.java | 54 +++++++ .../mage/sets/legends/CrimsonManticore.java | 76 ++++++++++ .../src/mage/sets/legends/IvoryGuardians.java | 106 ++++++++++++++ .../src/mage/sets/legends/KillerBees.java | 54 +++++++ .../mage/sets/legends/KoboldTaskmaster.java | 54 +++++++ .../src/mage/sets/thedark/FireDrake.java | 52 +++++++ .../sets/timeshifted/KoboldTaskmaster.java | 77 ++++++++++ 26 files changed, 1523 insertions(+), 40 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/fifthedition/AkronLegionnaire.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/BloodLust.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/CarrionAnts.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/CrimsonManticore.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/DanceOfMany.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/FireDrake.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/Heal.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/IvoryGuardians.java create mode 100644 Mage.Sets/src/mage/sets/fifthedition/KillerBees.java create mode 100644 Mage.Sets/src/mage/sets/fourthedition/BloodLust.java create mode 100644 Mage.Sets/src/mage/sets/fourthedition/CarrionAnts.java create mode 100644 Mage.Sets/src/mage/sets/fourthedition/CrimsonManticore.java create mode 100644 Mage.Sets/src/mage/sets/fourthedition/KillerBees.java create mode 100644 Mage.Sets/src/mage/sets/iceage/Heal.java create mode 100644 Mage.Sets/src/mage/sets/legends/AkronLegionnaire.java create mode 100644 Mage.Sets/src/mage/sets/legends/BloodLust.java create mode 100644 Mage.Sets/src/mage/sets/legends/CarrionAnts.java create mode 100644 Mage.Sets/src/mage/sets/legends/CrimsonManticore.java create mode 100644 Mage.Sets/src/mage/sets/legends/IvoryGuardians.java create mode 100644 Mage.Sets/src/mage/sets/legends/KillerBees.java create mode 100644 Mage.Sets/src/mage/sets/legends/KoboldTaskmaster.java create mode 100644 Mage.Sets/src/mage/sets/thedark/FireDrake.java create mode 100644 Mage.Sets/src/mage/sets/timeshifted/KoboldTaskmaster.java diff --git a/Mage.Sets/src/mage/sets/alarareborn/ArchitectsOfWill.java b/Mage.Sets/src/mage/sets/alarareborn/ArchitectsOfWill.java index 51ab815791..fcb12f8349 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/ArchitectsOfWill.java +++ b/Mage.Sets/src/mage/sets/alarareborn/ArchitectsOfWill.java @@ -42,10 +42,8 @@ import mage.cards.Card; import mage.cards.CardImpl; import mage.cards.Cards; import mage.cards.CardsImpl; -import mage.filter.FilterCard; import mage.game.Game; import mage.players.Player; -import mage.target.TargetCard; import mage.target.TargetPlayer; /** @@ -60,8 +58,6 @@ public class ArchitectsOfWill extends CardImpl { this.subtype.add("Human"); this.subtype.add("Wizard"); - - this.power = new MageInt(3); this.toughness = new MageInt(3); @@ -102,37 +98,22 @@ class ArchitectsOfWillEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player you = game.getPlayer(source.getControllerId()); - Player player = game.getPlayer(source.getFirstTarget()); - if (player == null || you == null) { + Player controller = game.getPlayer(source.getControllerId()); + Player targetPlayer = game.getPlayer(source.getFirstTarget()); + if (targetPlayer == null + || controller == null) { return false; } - Cards cards = new CardsImpl(Zone.PICK); - int count = Math.min(player.getLibrary().size(), 3); + Cards cards = new CardsImpl(Zone.LIBRARY); + int count = Math.min(targetPlayer.getLibrary().size(), 3); for (int i = 0; i < count; i++) { - Card card = player.getLibrary().removeFromTop(game); + Card card = targetPlayer.getLibrary().removeFromTop(game); if (card != null) { cards.add(card); - game.setZone(card.getId(), Zone.PICK); } } - - you.lookAtCards("Architects of Will", cards, game); - - TargetCard target = new TargetCard(Zone.PICK, new FilterCard("card to put on the top of target player's library")); - while (you.isInGame() && cards.size() > 1) { - you.choose(Outcome.Neutral, cards, target, game); - Card card = cards.get(target.getFirstTarget(), game); - if (card != null) { - cards.remove(card); - card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true); - } - target.clearChosen(); - } - if (cards.size() == 1) { - Card card = cards.get(cards.iterator().next(), game); - card.moveToZone(Zone.LIBRARY, source.getSourceId(), game, true); - } + controller.lookAtCards("Architects of Will", cards, game); + controller.putCardsOnTopOfLibrary(cards, game, source, true); return true; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java index 424eb9d464..2aa7aa2e4c 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java @@ -31,13 +31,11 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.AttacksAttachedTriggeredAbility; -import mage.abilities.common.delayed.AtTheBeginOfNextEndStepDelayedTriggeredAbility; import mage.abilities.common.delayed.AtTheEndOfCombatDelayedTriggeredAbility; import mage.abilities.effects.OneShotEffect; import mage.abilities.effects.common.AttachEffect; import mage.abilities.effects.common.ExileTargetEffect; import mage.abilities.keyword.EnchantAbility; -import mage.abilities.keyword.HasteAbility; import mage.cards.Card; import mage.cards.CardImpl; import mage.constants.AttachmentType; diff --git a/Mage.Sets/src/mage/sets/eventide/Evershrike.java b/Mage.Sets/src/mage/sets/eventide/Evershrike.java index bca7f7c77d..d93cc1ab19 100644 --- a/Mage.Sets/src/mage/sets/eventide/Evershrike.java +++ b/Mage.Sets/src/mage/sets/eventide/Evershrike.java @@ -110,7 +110,7 @@ class EvershrikeEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { boolean exiled = true; Card evershrikeCard = game.getCard(source.getSourceId()); - Player you = game.getPlayer(source.getControllerId()); + Player controller = game.getPlayer(source.getControllerId()); int xAmount = source.getManaCostsToPay().getX() + 1; if (evershrikeCard != null) { if (evershrikeCard.moveToZone(Zone.BATTLEFIELD, source.getSourceId(), game, false)) { @@ -123,21 +123,19 @@ class EvershrikeEffect extends OneShotEffect { filterAuraCard.add(new SubtypePredicate("Aura")); filterAuraCard.add(new AuraCardCanAttachToPermanentId(evershrikePermanent.getId())); filterAuraCard.add(new ConvertedManaCostPredicate(ComparisonType.LessThan, xAmount)); - int count = you.getHand().count(filterAuraCard, game); - while (you.isInGame() && count > 0 && you.chooseUse(Outcome.Benefit, "Do you wish to put an Aura card from your hand onto Evershrike", game)) { + int count = controller.getHand().count(filterAuraCard, game); + while (controller.isInGame() && count > 0 && controller.chooseUse(Outcome.Benefit, "Do you wish to put an Aura card from your hand onto Evershrike", game)) { TargetCard targetAura = new TargetCard(Zone.PICK, filterAuraCard); - if (you.choose(Outcome.Benefit, you.getHand(), targetAura, game)) { + if (controller.choose(Outcome.Benefit, controller.getHand(), targetAura, game)) { Card aura = game.getCard(targetAura.getFirstTarget()); if (aura != null) { game.getState().setValue("attachTo:" + aura.getId(), evershrikePermanent); - aura.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), you.getId()); + aura.putOntoBattlefield(game, Zone.HAND, source.getSourceId(), controller.getId()); evershrikePermanent.addAttachment(aura.getId(), game); exiled = false; - count = you.getHand().count(filterAuraCard, game); + count = controller.getHand().count(filterAuraCard, game); } } - - } if (exiled) { return evershrikePermanent.moveToExile(source.getSourceId(), "Evershrike Exile", source.getSourceId(), game); @@ -152,4 +150,4 @@ class EvershrikeEffect extends OneShotEffect { public EvershrikeEffect copy() { return new EvershrikeEffect(this); } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/AkronLegionnaire.java b/Mage.Sets/src/mage/sets/fifthedition/AkronLegionnaire.java new file mode 100644 index 0000000000..486ac802b4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/AkronLegionnaire.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class AkronLegionnaire extends mage.sets.legends.AkronLegionnaire { + + public AkronLegionnaire(UUID ownerId) { + super(ownerId); + this.cardNumber = 278; + this.expansionSetCode = "5ED"; + } + + public AkronLegionnaire(final AkronLegionnaire card) { + super(card); + } + + @Override + public AkronLegionnaire copy() { + return new AkronLegionnaire(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/BloodLust.java b/Mage.Sets/src/mage/sets/fifthedition/BloodLust.java new file mode 100644 index 0000000000..381b0983f1 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/BloodLust.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class BloodLust extends mage.sets.fourthedition.BloodLust { + + public BloodLust(UUID ownerId) { + super(ownerId); + this.cardNumber = 212; + this.expansionSetCode = "5ED"; + } + + public BloodLust(final BloodLust card) { + super(card); + } + + @Override + public BloodLust copy() { + return new BloodLust(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/CarrionAnts.java b/Mage.Sets/src/mage/sets/fifthedition/CarrionAnts.java new file mode 100644 index 0000000000..288f886c61 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/CarrionAnts.java @@ -0,0 +1,67 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author jeffwadsworth + */ +public class CarrionAnts extends CardImpl { + + public CarrionAnts(UUID ownerId) { + super(ownerId, 12, "Carrion Ants", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{2}{B}{B}"); + this.expansionSetCode = "5ED"; + this.subtype.add("Insect"); + this.power = new MageInt(0); + this.toughness = new MageInt(1); + + // {1}: Carrion Ants gets +1/+1 until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{1}"))); + + } + + public CarrionAnts(final CarrionAnts card) { + super(card); + } + + @Override + public CarrionAnts copy() { + return new CarrionAnts(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/CrimsonManticore.java b/Mage.Sets/src/mage/sets/fifthedition/CrimsonManticore.java new file mode 100644 index 0000000000..dd83db2e10 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/CrimsonManticore.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class CrimsonManticore extends mage.sets.legends.CrimsonManticore { + + public CrimsonManticore(UUID ownerId) { + super(ownerId); + this.cardNumber = 217; + this.expansionSetCode = "5ED"; + } + + public CrimsonManticore(final CrimsonManticore card) { + super(card); + } + + @Override + public CrimsonManticore copy() { + return new CrimsonManticore(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/DanceOfMany.java b/Mage.Sets/src/mage/sets/fifthedition/DanceOfMany.java new file mode 100644 index 0000000000..e765eaadda --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/DanceOfMany.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class DanceOfMany extends mage.sets.thedark.DanceOfMany { + + public DanceOfMany(UUID ownerId) { + super(ownerId); + this.cardNumber = 78; + this.expansionSetCode = "5ED"; + } + + public DanceOfMany(final DanceOfMany card) { + super(card); + } + + @Override + public DanceOfMany copy() { + return new DanceOfMany(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/FireDrake.java b/Mage.Sets/src/mage/sets/fifthedition/FireDrake.java new file mode 100644 index 0000000000..4bef1a28f7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/FireDrake.java @@ -0,0 +1,71 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.LimitedTimesPerTurnActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author jeffwadsworth + */ +public class FireDrake extends CardImpl { + + public FireDrake(UUID ownerId) { + super(ownerId, 226, "Fire Drake", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{R}{R}"); + this.expansionSetCode = "5ED"; + this.subtype.add("Drake"); + this.power = new MageInt(1); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // {R}: Fire Drake gets +1/+0 until end of turn. Activate this ability only once each turn. + this.addAbility(new LimitedTimesPerTurnActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 0, Duration.EndOfTurn), new ManaCostsImpl("{R}"))); + + } + + public FireDrake(final FireDrake card) { + super(card); + } + + @Override + public FireDrake copy() { + return new FireDrake(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/Heal.java b/Mage.Sets/src/mage/sets/fifthedition/Heal.java new file mode 100644 index 0000000000..fd8451be21 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/Heal.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class Heal extends mage.sets.iceage.Heal { + + public Heal(UUID ownerId) { + super(ownerId); + this.cardNumber = 309; + this.expansionSetCode = "5ED"; + } + + public Heal(final Heal card) { + super(card); + } + + @Override + public Heal copy() { + return new Heal(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/IvoryGuardians.java b/Mage.Sets/src/mage/sets/fifthedition/IvoryGuardians.java new file mode 100644 index 0000000000..2d565b5599 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/IvoryGuardians.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class IvoryGuardians extends mage.sets.legends.IvoryGuardians { + + public IvoryGuardians(UUID ownerId) { + super(ownerId); + this.cardNumber = 316; + this.expansionSetCode = "5ED"; + } + + public IvoryGuardians(final IvoryGuardians card) { + super(card); + } + + @Override + public IvoryGuardians copy() { + return new IvoryGuardians(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fifthedition/KillerBees.java b/Mage.Sets/src/mage/sets/fifthedition/KillerBees.java new file mode 100644 index 0000000000..761341c224 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fifthedition/KillerBees.java @@ -0,0 +1,71 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fifthedition; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.continuous.BoostSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; + +/** + * + * @author jeffwadsworth + */ +public class KillerBees extends CardImpl { + + public KillerBees(UUID ownerId) { + super(ownerId, 169, "Killer Bees", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{1}{G}{G}"); + this.expansionSetCode = "5ED"; + this.subtype.add("Insect"); + this.power = new MageInt(0); + this.toughness = new MageInt(1); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // {G}: Killer Bees gets +1/+1 until end of turn. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostSourceEffect(1, 1, Duration.EndOfTurn), new ManaCostsImpl("{G}"))); + + } + + public KillerBees(final KillerBees card) { + super(card); + } + + @Override + public KillerBees copy() { + return new KillerBees(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fourthedition/BloodLust.java b/Mage.Sets/src/mage/sets/fourthedition/BloodLust.java new file mode 100644 index 0000000000..d783d0bbfc --- /dev/null +++ b/Mage.Sets/src/mage/sets/fourthedition/BloodLust.java @@ -0,0 +1,138 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fourthedition; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.condition.Condition; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.SignInversionDynamicValue; +import mage.abilities.dynamicvalue.common.StaticValue; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.BoostTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.filter.Filter; +import mage.filter.FilterPermanent; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.ToughnessPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author jeffwadsworth + */ +public class BloodLust extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); + + static { + filter.add(new ToughnessPredicate(Filter.ComparisonType.GreaterThan, 4)); + } + + public BloodLust(UUID ownerId) { + super(ownerId, 196, "Blood Lust", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{1}{R}"); + this.expansionSetCode = "4ED"; + + // If target creature has toughness 5 or greater, it gets +4/-4 until end of turn. Otherwise, it gets +4/-X until end of turn, where X is its toughness minus 1. + this.getSpellAbility().addEffect(new ConditionalContinuousEffect( + new BoostTargetEffect(4, -4, Duration.EndOfTurn), + new BoostTargetEffect(new StaticValue(4), new SignInversionDynamicValue(new TargetPermanentToughnessMinus1Value()), Duration.WhileOnBattlefield), + new TargetMatchesFilterCondition(filter), + "If target creature has toughness 5 or greater, it gets +4/-4 until end of turn. Otherwise, it gets +4/-X until end of turn, where X is its toughness minus 1")); + this.getSpellAbility().addTarget(new TargetCreaturePermanent()); + + } + + public BloodLust(final BloodLust card) { + super(card); + } + + @Override + public BloodLust copy() { + return new BloodLust(this); + } +} + +class TargetMatchesFilterCondition implements Condition { + + private final FilterPermanent filter; + + public TargetMatchesFilterCondition(FilterPermanent filter) { + this.filter = filter; + } + + @Override + public boolean apply(Game game, Ability source) { + Permanent target = game.getBattlefield().getPermanent(source.getFirstTarget()); + if (target != null) { + if (filter.match(target, source.getSourceId(), source.getControllerId(), game)) { + return true; + } + } + return false; + } +} + +class TargetPermanentToughnessMinus1Value implements DynamicValue { + + private static final TargetPermanentToughnessMinus1Value fINSTANCE = new TargetPermanentToughnessMinus1Value(); + + public static TargetPermanentToughnessMinus1Value getInstance() { + return fINSTANCE; + } + + @Override + public int calculate(Game game, Ability sourceAbility, Effect effect) { + Permanent target = game.getPermanent(sourceAbility.getFirstTarget()); + if (target != null) { + return target.getToughness().getValue() - 1; + } + return 0; + } + + @Override + public TargetPermanentToughnessMinus1Value copy() { + return new TargetPermanentToughnessMinus1Value(); + } + + @Override + public String toString() { + return "X"; + } + + @Override + public String getMessage() { + return "target creature's toughness minus 1"; + } +} diff --git a/Mage.Sets/src/mage/sets/fourthedition/CarrionAnts.java b/Mage.Sets/src/mage/sets/fourthedition/CarrionAnts.java new file mode 100644 index 0000000000..29c012d04f --- /dev/null +++ b/Mage.Sets/src/mage/sets/fourthedition/CarrionAnts.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fourthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class CarrionAnts extends mage.sets.fifthedition.CarrionAnts { + + public CarrionAnts(UUID ownerId) { + super(ownerId); + this.cardNumber = 9; + this.expansionSetCode = "4ED"; + } + + public CarrionAnts(final CarrionAnts card) { + super(card); + } + + @Override + public CarrionAnts copy() { + return new CarrionAnts(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fourthedition/CrimsonManticore.java b/Mage.Sets/src/mage/sets/fourthedition/CrimsonManticore.java new file mode 100644 index 0000000000..82c4f3861f --- /dev/null +++ b/Mage.Sets/src/mage/sets/fourthedition/CrimsonManticore.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fourthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class CrimsonManticore extends mage.sets.legends.CrimsonManticore { + + public CrimsonManticore(UUID ownerId) { + super(ownerId); + this.cardNumber = 201; + this.expansionSetCode = "4ED"; + } + + public CrimsonManticore(final CrimsonManticore card) { + super(card); + } + + @Override + public CrimsonManticore copy() { + return new CrimsonManticore(this); + } +} diff --git a/Mage.Sets/src/mage/sets/fourthedition/KillerBees.java b/Mage.Sets/src/mage/sets/fourthedition/KillerBees.java new file mode 100644 index 0000000000..b1e6d62381 --- /dev/null +++ b/Mage.Sets/src/mage/sets/fourthedition/KillerBees.java @@ -0,0 +1,52 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.fourthedition; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class KillerBees extends mage.sets.fifthedition.KillerBees { + + public KillerBees(UUID ownerId) { + super(ownerId); + this.cardNumber = 138; + this.expansionSetCode = "4ED"; + } + + public KillerBees(final KillerBees card) { + super(card); + } + + @Override + public KillerBees copy() { + return new KillerBees(this); + } +} diff --git a/Mage.Sets/src/mage/sets/iceage/Heal.java b/Mage.Sets/src/mage/sets/iceage/Heal.java new file mode 100644 index 0000000000..fbc5a47b56 --- /dev/null +++ b/Mage.Sets/src/mage/sets/iceage/Heal.java @@ -0,0 +1,67 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.iceage; + +import java.util.UUID; +import mage.abilities.common.delayed.AtTheBeginOfNextUpkeepDelayedTriggeredAbility; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.PreventDamageToTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author jeffwadsworth + */ +public class Heal extends CardImpl { + + public Heal(UUID ownerId) { + super(ownerId, 254, "Heal", Rarity.COMMON, new CardType[]{CardType.INSTANT}, "{W}"); + this.expansionSetCode = "ICE"; + + // Prevent the next 1 damage that would be dealt to target creature or player this turn. + // Draw a card at the beginning of the next turn's upkeep. + this.getSpellAbility().addEffect(new PreventDamageToTargetEffect(Duration.EndOfTurn, 1)); + this.getSpellAbility().addEffect(new CreateDelayedTriggeredAbilityEffect(new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(new DrawCardSourceControllerEffect(1)), false)); + this.getSpellAbility().addTarget(new TargetCreatureOrPlayer()); + + } + + public Heal(final Heal card) { + super(card); + } + + @Override + public Heal copy() { + return new Heal(this); + } +} diff --git a/Mage.Sets/src/mage/sets/legends/AkronLegionnaire.java b/Mage.Sets/src/mage/sets/legends/AkronLegionnaire.java new file mode 100644 index 0000000000..2a9d35dc5c --- /dev/null +++ b/Mage.Sets/src/mage/sets/legends/AkronLegionnaire.java @@ -0,0 +1,97 @@ +/* + * 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.legends; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.combat.CantAttackAllAnyPlayerEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicate; +import mage.filter.predicate.permanent.ControllerPredicate; +import mage.game.Game; + +/** + * + * @author jeffwadsworth + */ +public class AkronLegionnaire extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent(); + + static { + filter.add(new ControllerPredicate(TargetController.YOU)); + filter.add(new AkronLegionairePredicate()); + } + + public AkronLegionnaire(UUID ownerId) { + super(ownerId, 170, "Akron Legionnaire", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{6}{W}{W}"); + this.expansionSetCode = "LEG"; + this.subtype.add("Giant"); + this.subtype.add("Soldier"); + this.power = new MageInt(8); + this.toughness = new MageInt(4); + + // Except for creatures named Akron Legionnaire and artifact creatures, creatures you control can't attack. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantAttackAllAnyPlayerEffect(Duration.WhileOnBattlefield, filter))); + + } + + public AkronLegionnaire(final AkronLegionnaire card) { + super(card); + } + + @Override + public AkronLegionnaire copy() { + return new AkronLegionnaire(this); + } +} + +class AkronLegionairePredicate implements Predicate { + + public AkronLegionairePredicate() { + } + + @Override + public boolean apply(Card input, Game game) { + return !input.getCardType().contains(CardType.ARTIFACT) + || !input.getName().contains("Akron Legionaire"); + } + + @Override + public String toString() { + return ""; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/legends/BloodLust.java b/Mage.Sets/src/mage/sets/legends/BloodLust.java new file mode 100644 index 0000000000..8106683c3c --- /dev/null +++ b/Mage.Sets/src/mage/sets/legends/BloodLust.java @@ -0,0 +1,54 @@ +/* + * 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.legends; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author jeffwadsworth + */ +public class BloodLust extends mage.sets.fourthedition.BloodLust { + + public BloodLust(UUID ownerId) { + super(ownerId); + this.cardNumber = 135; + this.expansionSetCode = "LEG"; + this.rarity = Rarity.UNCOMMON; + } + + public BloodLust(final BloodLust card) { + super(card); + } + + @Override + public BloodLust copy() { + return new BloodLust(this); + } +} diff --git a/Mage.Sets/src/mage/sets/legends/CarrionAnts.java b/Mage.Sets/src/mage/sets/legends/CarrionAnts.java new file mode 100644 index 0000000000..733a28a8a4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/legends/CarrionAnts.java @@ -0,0 +1,54 @@ +/* + * 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.legends; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author jeffwadsworth + */ +public class CarrionAnts extends mage.sets.fifthedition.CarrionAnts { + + public CarrionAnts(UUID ownerId) { + super(ownerId); + this.cardNumber = 4; + this.expansionSetCode = "LEG"; + this.rarity = Rarity.RARE; + } + + public CarrionAnts(final CarrionAnts card) { + super(card); + } + + @Override + public CarrionAnts copy() { + return new CarrionAnts(this); + } +} diff --git a/Mage.Sets/src/mage/sets/legends/CrimsonManticore.java b/Mage.Sets/src/mage/sets/legends/CrimsonManticore.java new file mode 100644 index 0000000000..b6e26cd75d --- /dev/null +++ b/Mage.Sets/src/mage/sets/legends/CrimsonManticore.java @@ -0,0 +1,76 @@ +/* + * 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.legends; + +import java.util.UUID; +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.DamageTargetEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.common.TargetAttackingOrBlockingCreature; + +/** + * + * @author jeffwadsworth + */ +public class CrimsonManticore extends CardImpl { + + public CrimsonManticore(UUID ownerId) { + super(ownerId, 139, "Crimson Manticore", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{R}{R}"); + this.expansionSetCode = "LEG"; + this.subtype.add("Manticore"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // {R}, {tap}: Crimson Manticore deals 1 damage to target attacking or blocking creature. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new DamageTargetEffect(1), new ManaCostsImpl("{R}")); + ability.addCost(new TapSourceCost()); + ability.addTarget(new TargetAttackingOrBlockingCreature()); + this.addAbility(ability); + + } + + public CrimsonManticore(final CrimsonManticore card) { + super(card); + } + + @Override + public CrimsonManticore copy() { + return new CrimsonManticore(this); + } +} diff --git a/Mage.Sets/src/mage/sets/legends/IvoryGuardians.java b/Mage.Sets/src/mage/sets/legends/IvoryGuardians.java new file mode 100644 index 0000000000..2e3b6a2615 --- /dev/null +++ b/Mage.Sets/src/mage/sets/legends/IvoryGuardians.java @@ -0,0 +1,106 @@ +/* + * 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.legends; + +import java.util.Set; +import java.util.UUID; +import mage.MageInt; +import mage.ObjectColor; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.condition.Condition; +import mage.abilities.decorator.ConditionalContinuousEffect; +import mage.abilities.effects.common.continuous.BoostAllEffect; +import mage.abilities.keyword.ProtectionAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.FilterCard; +import mage.filter.FilterPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.ColorPredicate; +import mage.filter.predicate.permanent.TokenPredicate; +import mage.game.Game; + +/** + * + * @author jeffwadsworth + */ +public class IvoryGuardians extends CardImpl { + + private static final FilterCard filter = new FilterCard(); + + static { + filter.add(new ColorPredicate(ObjectColor.RED)); + } + + private static final String rule = "Creatures named {this} get +1/+1 as long as an opponent controls a nontoken red permanent"; + + public IvoryGuardians(UUID ownerId) { + super(ownerId, 192, "Ivory Guardians", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{W}{W}"); + this.expansionSetCode = "LEG"; + this.subtype.add("Giant"); + this.subtype.add("Cleric"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // Protection from red + this.addAbility(new ProtectionAbility(filter)); + + // Creatures named Ivory Guardians get +1/+1 as long as an opponent controls a nontoken red permanent. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ConditionalContinuousEffect(new BoostAllEffect(1, 1, Duration.WhileOnBattlefield), new IvoryGuardiansCondition(), rule))); + + } + + public IvoryGuardians(final IvoryGuardians card) { + super(card); + } + + @Override + public IvoryGuardians copy() { + return new IvoryGuardians(this); + } +} + +class IvoryGuardiansCondition implements Condition { + + @Override + public boolean apply(Game game, Ability source) { + boolean conditionApplies = false; + FilterPermanent filter = new FilterPermanent(); + filter.add(Predicates.not(new TokenPredicate())); + filter.add(new ColorPredicate(ObjectColor.RED)); + Set opponents = game.getOpponents(source.getControllerId()); + for (UUID opponentId : opponents) { + conditionApplies |= game.getBattlefield().countAll(filter, opponentId, game) > 0; + } + return conditionApplies; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/legends/KillerBees.java b/Mage.Sets/src/mage/sets/legends/KillerBees.java new file mode 100644 index 0000000000..e6bb6128b8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/legends/KillerBees.java @@ -0,0 +1,54 @@ +/* + * 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.legends; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author jeffwadsworth + */ +public class KillerBees extends mage.sets.fifthedition.KillerBees { + + public KillerBees(UUID ownerId) { + super(ownerId); + this.cardNumber = 106; + this.expansionSetCode = "LEG"; + this.rarity = Rarity.RARE; + } + + public KillerBees(final KillerBees card) { + super(card); + } + + @Override + public KillerBees copy() { + return new KillerBees(this); + } +} diff --git a/Mage.Sets/src/mage/sets/legends/KoboldTaskmaster.java b/Mage.Sets/src/mage/sets/legends/KoboldTaskmaster.java new file mode 100644 index 0000000000..cd97b0b0c3 --- /dev/null +++ b/Mage.Sets/src/mage/sets/legends/KoboldTaskmaster.java @@ -0,0 +1,54 @@ +/* + * 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.legends; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author jeffwadsworth + */ +public class KoboldTaskmaster extends mage.sets.timeshifted.KoboldTaskmaster { + + public KoboldTaskmaster(UUID ownerId) { + super(ownerId); + this.cardNumber = 154; + this.expansionSetCode = "LEG"; + this.rarity = Rarity.UNCOMMON; + } + + public KoboldTaskmaster(final KoboldTaskmaster card) { + super(card); + } + + @Override + public KoboldTaskmaster copy() { + return new KoboldTaskmaster(this); + } +} diff --git a/Mage.Sets/src/mage/sets/thedark/FireDrake.java b/Mage.Sets/src/mage/sets/thedark/FireDrake.java new file mode 100644 index 0000000000..ace3c06b5b --- /dev/null +++ b/Mage.Sets/src/mage/sets/thedark/FireDrake.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.thedark; + +import java.util.UUID; + +/** + * + * @author jeffwadsworth + */ +public class FireDrake extends mage.sets.fifthedition.FireDrake { + + public FireDrake(UUID ownerId) { + super(ownerId); + this.cardNumber = 61; + this.expansionSetCode = "DRK"; + } + + public FireDrake(final FireDrake card) { + super(card); + } + + @Override + public FireDrake copy() { + return new FireDrake(this); + } +} diff --git a/Mage.Sets/src/mage/sets/timeshifted/KoboldTaskmaster.java b/Mage.Sets/src/mage/sets/timeshifted/KoboldTaskmaster.java new file mode 100644 index 0000000000..b17faac9d4 --- /dev/null +++ b/Mage.Sets/src/mage/sets/timeshifted/KoboldTaskmaster.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.timeshifted; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.continuous.BoostAllEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.filter.predicate.permanent.ControllerPredicate; + +/** + * + * @author jeffwadsworth + */ +public class KoboldTaskmaster extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("Other Kobold creatures you control"); + + static { + filter.add(new ControllerPredicate(TargetController.YOU)); + filter.add(new SubtypePredicate("Kobold")); + } + + public KoboldTaskmaster(UUID ownerId) { + super(ownerId, 65, "Kobold Taskmaster", Rarity.SPECIAL, new CardType[]{CardType.CREATURE}, "{1}{R}"); + this.expansionSetCode = "TSB"; + this.subtype.add("Kobold"); + this.power = new MageInt(1); + this.toughness = new MageInt(2); + + // Other Kobold creatures you control get +1/+0. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new BoostAllEffect(1, 0, Duration.WhileOnBattlefield, filter, true))); + + } + + public KoboldTaskmaster(final KoboldTaskmaster card) { + super(card); + } + + @Override + public KoboldTaskmaster copy() { + return new KoboldTaskmaster(this); + } +} From 2d274ec39a6e5d63ee9ef098d711214ecae0debd Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 2 Apr 2015 08:35:54 +0200 Subject: [PATCH 026/175] [TPR] Added Wood Sage, Vhat-Il Dal and Soltari Guerillas. --- Mage.Client/serverlist.txt | 1 + .../src/mage/sets/conspiracy/WoodSage.java | 54 +++++++ .../mage/sets/invasion/RevivingVapors.java | 3 - .../src/mage/sets/stronghold/ShamanEnKor.java | 2 +- .../mage/sets/tempest/SoltariGuerrillas.java | 132 +++++++++++++++++ .../src/mage/sets/tempest/VhatiIlDal.java | 114 +++++++++++++++ Mage.Sets/src/mage/sets/tempest/WoodSage.java | 133 ++++++++++++++++++ .../tempestremastered/SoltariGuerrillas.java | 52 +++++++ .../sets/tempestremastered/VhatiIlDal.java | 52 +++++++ .../mage/sets/tempestremastered/WoodSage.java | 52 +++++++ .../src/mage/sets/timeshifted/VhatiIlDal.java | 54 +++++++ .../effects/common/NameACardEffect.java | 10 +- .../SetPowerToughnessTargetEffect.java | 8 +- .../abilities/mana/DynamicManaAbility.java | 2 +- .../mage/cards/repository/CardRepository.java | 25 +++- 15 files changed, 681 insertions(+), 13 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/conspiracy/WoodSage.java create mode 100644 Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java create mode 100644 Mage.Sets/src/mage/sets/tempest/VhatiIlDal.java create mode 100644 Mage.Sets/src/mage/sets/tempest/WoodSage.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/SoltariGuerrillas.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/VhatiIlDal.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/WoodSage.java create mode 100644 Mage.Sets/src/mage/sets/timeshifted/VhatiIlDal.java diff --git a/Mage.Client/serverlist.txt b/Mage.Client/serverlist.txt index cefd1b3f3d..db59294453 100644 --- a/Mage.Client/serverlist.txt +++ b/Mage.Client/serverlist.txt @@ -1,4 +1,5 @@ woogerworks (North America/USA) :xmage.woogerworks.com:17171 +Xmage.de 1 (Europe/Germany) :xmage.de:17171 XMage.info 1 (Europe/France) :176.31.186.181:17171 XMage.info 2 (Europe/France) :176.31.186.181:17000 IceMage (Europe/Netherlands) :ring0.cc:17171 diff --git a/Mage.Sets/src/mage/sets/conspiracy/WoodSage.java b/Mage.Sets/src/mage/sets/conspiracy/WoodSage.java new file mode 100644 index 0000000000..6e24af1fea --- /dev/null +++ b/Mage.Sets/src/mage/sets/conspiracy/WoodSage.java @@ -0,0 +1,54 @@ +/* + * 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.conspiracy; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class WoodSage extends mage.sets.tempest.WoodSage { + + public WoodSage(UUID ownerId) { + super(ownerId); + this.cardNumber = 195; + this.expansionSetCode = "CNS"; + this.rarity = Rarity.UNCOMMON; + } + + public WoodSage(final WoodSage card) { + super(card); + } + + @Override + public WoodSage copy() { + return new WoodSage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/invasion/RevivingVapors.java b/Mage.Sets/src/mage/sets/invasion/RevivingVapors.java index 4e8e8bfe3a..39f116021e 100644 --- a/Mage.Sets/src/mage/sets/invasion/RevivingVapors.java +++ b/Mage.Sets/src/mage/sets/invasion/RevivingVapors.java @@ -54,9 +54,6 @@ public class RevivingVapors extends CardImpl { super(ownerId, 265, "Reviving Vapors", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{2}{W}{U}"); this.expansionSetCode = "INV"; - this.color.setBlue(true); - this.color.setWhite(true); - // Reveal the top three cards of your library and put one of them into your hand. You gain life equal to that card's converted mana cost. Put all other cards revealed this way into your graveyard. this.getSpellAbility().addEffect(new RevivingVaporsEffect()); } diff --git a/Mage.Sets/src/mage/sets/stronghold/ShamanEnKor.java b/Mage.Sets/src/mage/sets/stronghold/ShamanEnKor.java index 541cf6892e..45329b2df9 100644 --- a/Mage.Sets/src/mage/sets/stronghold/ShamanEnKor.java +++ b/Mage.Sets/src/mage/sets/stronghold/ShamanEnKor.java @@ -137,7 +137,7 @@ class ShamanEnKorReplacementEffect extends ReplacementEffectImpl { ShamanEnKorReplacementEffect() { super(Duration.EndOfTurn, Outcome.RedirectDamage); - staticText = "The next time a source of your choice would deal damage to target creature this turn, that damage is dealt to {this} instead."; + staticText = "The next time a source of your choice would deal damage to target creature this turn, that damage is dealt to {this} instead"; } ShamanEnKorReplacementEffect(final ShamanEnKorReplacementEffect effect) { diff --git a/Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java b/Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java new file mode 100644 index 0000000000..665a30da2e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java @@ -0,0 +1,132 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.GenericManaCost; +import mage.abilities.effects.PreventionEffectData; +import mage.abilities.effects.PreventionEffectImpl; +import mage.abilities.keyword.ShadowAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.DamageEvent; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class SoltariGuerrillas extends CardImpl { + + public SoltariGuerrillas(UUID ownerId) { + super(ownerId, 347, "Soltari Guerrillas", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{R}{W}"); + this.expansionSetCode = "TMP"; + this.subtype.add("Soltari"); + this.subtype.add("Soldier"); + this.power = new MageInt(3); + this.toughness = new MageInt(2); + + // Shadow + this.addAbility(ShadowAbility.getInstance()); + + // {0}: The next time Soltari Guerrillas would deal combat damage to an opponent this turn, it deals that damage to target creature instead. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new SoltariGuerrillasReplacementEffect(), new GenericManaCost(0)); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public SoltariGuerrillas(final SoltariGuerrillas card) { + super(card); + } + + @Override + public SoltariGuerrillas copy() { + return new SoltariGuerrillas(this); + } +} + +class SoltariGuerrillasReplacementEffect extends PreventionEffectImpl { + + SoltariGuerrillasReplacementEffect() { + super(Duration.EndOfTurn, Integer.MAX_VALUE, true, false); + staticText = "The next time {this} would deal combat damage to an opponent this turn, it deals that damage to target creature instead"; + } + + SoltariGuerrillasReplacementEffect(final SoltariGuerrillasReplacementEffect effect) { + super(effect); + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType().equals(GameEvent.EventType.DAMAGED_PLAYER); + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (event.getSourceId().equals(source.getSourceId())) { + Player controller = game.getPlayer(source.getControllerId()); + return controller.hasOpponent(event.getTargetId(), game); + } + return false; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + PreventionEffectData preventionResult = preventDamageAction(event, source, game); + if (preventionResult.getPreventedDamage() > 0) { + Permanent redirectTo = game.getPermanent(getTargetPointer().getFirst(game, source)); + if (redirectTo != null) { + game.informPlayers("Dealing " + preventionResult.getPreventedDamage() + " to " + redirectTo.getLogName() + " instead."); + DamageEvent damageEvent = (DamageEvent) event; + redirectTo.damage(preventionResult.getPreventedDamage(), event.getSourceId(), game, damageEvent.isCombatDamage(), damageEvent.isPreventable(), event.getAppliedEffects()); + } + discard(); // (only once) + } + return false; + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public SoltariGuerrillasReplacementEffect copy() { + return new SoltariGuerrillasReplacementEffect(this); + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempest/VhatiIlDal.java b/Mage.Sets/src/mage/sets/tempest/VhatiIlDal.java new file mode 100644 index 0000000000..9e5aa3941e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/VhatiIlDal.java @@ -0,0 +1,114 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.dynamicvalue.DynamicValue; +import mage.abilities.dynamicvalue.common.StaticValue; +import mage.abilities.effects.ContinuousEffect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.continuous.SetPowerToughnessTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.players.Player; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class VhatiIlDal extends CardImpl { + + public VhatiIlDal(UUID ownerId) { + super(ownerId, 349, "Vhati il-Dal", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{2}{B}{G}"); + this.expansionSetCode = "TMP"; + this.supertype.add("Legendary"); + this.subtype.add("Human"); + this.subtype.add("Warrior"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // {tap}: Until end of turn, target creature has base power 1 or base toughness 1. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new VhatiIlDalEffect(), new TapSourceCost()); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public VhatiIlDal(final VhatiIlDal card) { + super(card); + } + + @Override + public VhatiIlDal copy() { + return new VhatiIlDal(this); + } +} + +class VhatiIlDalEffect extends OneShotEffect { + + public VhatiIlDalEffect() { + super(Outcome.BoostCreature); + this.staticText = "Until end of turn, target creature has base power 1 or base toughness 1"; + } + + public VhatiIlDalEffect(final VhatiIlDalEffect effect) { + super(effect); + } + + @Override + public VhatiIlDalEffect copy() { + return new VhatiIlDalEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + DynamicValue power = null; + DynamicValue toughness = null; + if (controller.chooseUse(outcome, "Set power? (otherwise toughness is set)", game)) { + power = new StaticValue(1); + } else { + toughness = new StaticValue(1); + } + ContinuousEffect effect = new SetPowerToughnessTargetEffect(power, toughness, Duration.EndOfTurn); + game.addEffect(effect, source); + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/WoodSage.java b/Mage.Sets/src/mage/sets/tempest/WoodSage.java new file mode 100644 index 0000000000..3634914039 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/WoodSage.java @@ -0,0 +1,133 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.MageInt; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.effects.OneShotEffect; +import mage.cards.Card; +import mage.cards.CardImpl; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.cards.repository.CardRepository; +import mage.choices.Choice; +import mage.choices.ChoiceImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.players.Player; + +/** + * + * @author LevelX2 + */ +public class WoodSage extends CardImpl { + + public WoodSage(UUID ownerId) { + super(ownerId, 350, "Wood Sage", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{G}{U}"); + this.expansionSetCode = "TMP"; + this.subtype.add("Human"); + this.subtype.add("Druid"); + this.power = new MageInt(1); + this.toughness = new MageInt(1); + + // {tap}: Name a creature card. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard. + this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new WoodSageEffect(), new TapSourceCost())); + + } + + public WoodSage(final WoodSage card) { + super(card); + } + + @Override + public WoodSage copy() { + return new WoodSage(this); + } +} + + +class WoodSageEffect extends OneShotEffect { + + public WoodSageEffect() { + super(Outcome.DrawCard); + this.staticText = "Name a creature card. Reveal the top four cards of your library and put all of them with that name into your hand. Put the rest into your graveyard"; + } + + public WoodSageEffect(final WoodSageEffect effect) { + super(effect); + } + + @Override + public WoodSageEffect copy() { + return new WoodSageEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + MageObject sourceObject = game.getObject(source.getSourceId()); + if (controller != null && sourceObject != null) { + Choice cardChoice = new ChoiceImpl(); + cardChoice.setChoices(CardRepository.instance.getCreatureNames()); + cardChoice.setMessage("Name a creature card"); + while (!controller.choose(Outcome.Detriment, cardChoice, game)) { + if (!controller.isInGame()) { + return false; + } + } + String cardName = cardChoice.getChoice(); + if (!game.isSimulation()) { + game.informPlayers(sourceObject.getLogName() + ", named card: [" + cardName + "]"); + } + + Cards cards = new CardsImpl(); + cards.addAll(controller.getLibrary().getTopCards(game, 4)); + + if (!cards.isEmpty()) { + controller.revealCards(sourceObject.getLogName(), cards, game); + for (Card card: cards.getCards(game)) { + if (card.getName().equals(cardName)) { + controller.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.LIBRARY, true); + cards.remove(card); + } + } + controller.moveCardsToGraveyardWithInfo(cards, source, game, Zone.LIBRARY); + } + return true; + } + + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/SoltariGuerrillas.java b/Mage.Sets/src/mage/sets/tempestremastered/SoltariGuerrillas.java new file mode 100644 index 0000000000..8a45e29ddd --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/SoltariGuerrillas.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author LevelX2 + */ +public class SoltariGuerrillas extends mage.sets.tempest.SoltariGuerrillas { + + public SoltariGuerrillas(UUID ownerId) { + super(ownerId); + this.cardNumber = 212; + this.expansionSetCode = "TPR"; + } + + public SoltariGuerrillas(final SoltariGuerrillas card) { + super(card); + } + + @Override + public SoltariGuerrillas copy() { + return new SoltariGuerrillas(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/VhatiIlDal.java b/Mage.Sets/src/mage/sets/tempestremastered/VhatiIlDal.java new file mode 100644 index 0000000000..59f3a8121f --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/VhatiIlDal.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author LevelX2 + */ +public class VhatiIlDal extends mage.sets.tempest.VhatiIlDal { + + public VhatiIlDal(UUID ownerId) { + super(ownerId); + this.cardNumber = 214; + this.expansionSetCode = "TPR"; + } + + public VhatiIlDal(final VhatiIlDal card) { + super(card); + } + + @Override + public VhatiIlDal copy() { + return new VhatiIlDal(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/WoodSage.java b/Mage.Sets/src/mage/sets/tempestremastered/WoodSage.java new file mode 100644 index 0000000000..b2493f5bff --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/WoodSage.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author LevelX2 + */ +public class WoodSage extends mage.sets.tempest.WoodSage { + + public WoodSage(UUID ownerId) { + super(ownerId); + this.cardNumber = 216; + this.expansionSetCode = "TPR"; + } + + public WoodSage(final WoodSage card) { + super(card); + } + + @Override + public WoodSage copy() { + return new WoodSage(this); + } +} diff --git a/Mage.Sets/src/mage/sets/timeshifted/VhatiIlDal.java b/Mage.Sets/src/mage/sets/timeshifted/VhatiIlDal.java new file mode 100644 index 0000000000..637fc61c0f --- /dev/null +++ b/Mage.Sets/src/mage/sets/timeshifted/VhatiIlDal.java @@ -0,0 +1,54 @@ +/* + * 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.timeshifted; + +import java.util.UUID; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class VhatiIlDal extends mage.sets.tempest.VhatiIlDal { + + public VhatiIlDal(UUID ownerId) { + super(ownerId); + this.cardNumber = 104; + this.expansionSetCode = "TSB"; + this.rarity = Rarity.SPECIAL; + } + + public VhatiIlDal(final VhatiIlDal card) { + super(card); + } + + @Override + public VhatiIlDal copy() { + return new VhatiIlDal(this); + } +} diff --git a/Mage/src/mage/abilities/effects/common/NameACardEffect.java b/Mage/src/mage/abilities/effects/common/NameACardEffect.java index f5390f0984..fa3aafeeb0 100644 --- a/Mage/src/mage/abilities/effects/common/NameACardEffect.java +++ b/Mage/src/mage/abilities/effects/common/NameACardEffect.java @@ -50,7 +50,8 @@ public class NameACardEffect extends OneShotEffect { public enum TypeOfName { ALL, NON_LAND_NAME, - NON_LAND_AND_NON_CREATURE_NAME + NON_LAND_AND_NON_CREATURE_NAME, + CREATURE_NAME } private final TypeOfName typeOfName; @@ -85,6 +86,10 @@ public class NameACardEffect extends OneShotEffect { cardChoice.setChoices(CardRepository.instance.getNonLandNames()); cardChoice.setMessage("Name a non land card"); break; + case CREATURE_NAME: + cardChoice.setChoices(CardRepository.instance.getCreatureNames()); + cardChoice.setMessage("Name a creature card"); + break; } cardChoice.clearChoice(); while (!controller.choose(Outcome.Detriment, cardChoice, game)) { @@ -93,8 +98,9 @@ public class NameACardEffect extends OneShotEffect { } } String cardName = cardChoice.getChoice(); - if (!game.isSimulation()) + if (!game.isSimulation()) { game.informPlayers(sourceObject.getLogName() + ", named card: [" + cardName + "]"); + } game.getState().setValue(source.getSourceId().toString() + INFO_KEY, cardName); if (sourceObject instanceof Permanent) { ((Permanent)sourceObject).addInfo(INFO_KEY, CardUtil.addToolTipMarkTags("Named card: " + cardName), game); diff --git a/Mage/src/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java b/Mage/src/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java index 0a1e5ad115..0824e1b523 100644 --- a/Mage/src/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/continuous/SetPowerToughnessTargetEffect.java @@ -77,8 +77,12 @@ public class SetPowerToughnessTargetEffect extends ContinuousEffectImpl { for (UUID targetId: this.getTargetPointer().getTargets(game, source)) { Permanent target = game.getPermanent(targetId); if (target != null) { - target.getPower().setValue(power.calculate(game, source, this)); - target.getToughness().setValue(toughness.calculate(game, source, this)); + if (power != null) { + target.getPower().setValue(power.calculate(game, source, this)); + } + if (toughness != null) { + target.getToughness().setValue(toughness.calculate(game, source, this)); + } result = true; } } diff --git a/Mage/src/mage/abilities/mana/DynamicManaAbility.java b/Mage/src/mage/abilities/mana/DynamicManaAbility.java index 431094aff9..f421fa8a23 100644 --- a/Mage/src/mage/abilities/mana/DynamicManaAbility.java +++ b/Mage/src/mage/abilities/mana/DynamicManaAbility.java @@ -89,7 +89,7 @@ public class DynamicManaAbility extends ManaAbility { public List getNetMana(Game game) { List newNetMana = new ArrayList<>(); if (game != null) { - // TODO: effects from replacement effects like Mana Refelection are not considered yet + // TODO: effects from replacement effects like Mana Reflection are not considered yet newNetMana.add(manaEffect.computeMana(true, game, this)); } return newNetMana; diff --git a/Mage/src/mage/cards/repository/CardRepository.java b/Mage/src/mage/cards/repository/CardRepository.java index b6d8f9693d..4b3312f40d 100644 --- a/Mage/src/mage/cards/repository/CardRepository.java +++ b/Mage/src/mage/cards/repository/CardRepository.java @@ -165,6 +165,27 @@ public enum CardRepository { } return names; } + + public Set getCreatureNames() { + Set names = new TreeSet<>(); + try { + QueryBuilder qb = cardDao.queryBuilder(); + qb.distinct().selectColumns("name"); + qb.where().like("types", new SelectArg('%' + CardType.CREATURE.name() + '%')); + List results = cardDao.query(qb.prepare()); + for (CardInfo card : results) { + int result = card.getName().indexOf(" // "); + if (result > 0) { + names.add(card.getName().substring(0, result)); + names.add(card.getName().substring(result+4)); + } else { + names.add(card.getName()); + } + } + } catch (SQLException ex) { + } + return names; + } public Set getNonLandAndNonCreatureNames() { Set names = new TreeSet<>(); @@ -173,10 +194,6 @@ public enum CardRepository { qb.distinct().selectColumns("name"); Where where = qb.where(); where.and(where.not().like("types", '%' + CardType.CREATURE.name() +'%'),where.not().like("types", '%' + CardType.LAND.name() + '%')); -// qb.where() -// .not().like("types", '%' + CardType.CREATURE.name() + '%') -// .and() -// .not().like("types", '%' + CardType.LAND.name() + '%'); List results = cardDao.query(qb.prepare()); for (CardInfo card : results) { int result = card.getName().indexOf(" // "); From 0eecbad208f0374b171b9577aeaf436dca002621 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 2 Apr 2015 23:20:46 +0200 Subject: [PATCH 027/175] [TPR] Fixed Soltari Guerillas. --- Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java b/Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java index 665a30da2e..5fc6ce28b6 100644 --- a/Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java +++ b/Mage.Sets/src/mage/sets/tempest/SoltariGuerrillas.java @@ -93,7 +93,7 @@ class SoltariGuerrillasReplacementEffect extends PreventionEffectImpl { @Override public boolean checksEventType(GameEvent event, Game game) { - return event.getType().equals(GameEvent.EventType.DAMAGED_PLAYER); + return event.getType() == GameEvent.EventType.DAMAGE_PLAYER; } @Override From 788187fd107bb2fa3c6503139afe5b753dfd950b Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 2 Apr 2015 23:45:28 +0200 Subject: [PATCH 028/175] * Yomiji, Who Bars the Way - Fixed that the return effect did not work. --- .../common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage/src/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java b/Mage/src/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java index 3608077cec..cf2e9f2727 100644 --- a/Mage/src/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java +++ b/Mage/src/mage/abilities/common/PutIntoGraveFromBattlefieldAllTriggeredAbility.java @@ -69,7 +69,7 @@ public class PutIntoGraveFromBattlefieldAllTriggeredAbility extends TriggeredAbi if (filter.match(zEvent.getTarget(), this.getSourceId(), this.getControllerId(), game)) { if (setTargetPointer) { for (Effect effect :this.getEffects()) { - effect.setTargetPointer(new FixedTarget(event.getSourceId())); + effect.setTargetPointer(new FixedTarget(event.getTargetId())); } } return true; From 15ce5c6ff2ee489bc6f9c597f7a590c70cf2d522 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Thu, 2 Apr 2015 23:53:38 +0200 Subject: [PATCH 029/175] * Rise // Fall - Fixed a bug that the discard of Fall did not work correctly. --- Mage.Sets/src/mage/sets/dissension/RiseFall.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/Mage.Sets/src/mage/sets/dissension/RiseFall.java b/Mage.Sets/src/mage/sets/dissension/RiseFall.java index f226477df9..e362408806 100644 --- a/Mage.Sets/src/mage/sets/dissension/RiseFall.java +++ b/Mage.Sets/src/mage/sets/dissension/RiseFall.java @@ -57,24 +57,16 @@ public class RiseFall extends SplitCard { super(ownerId, 156, "Rise", "Fall", Rarity.UNCOMMON, new CardType[]{CardType.SORCERY}, "{U}{B}","{B}{R}", false ); this.expansionSetCode = "DIS"; - this.color.setBlue(true); - this.color.setBlack(true); - this.color.setRed(true); - // Rise // Return target creature card from a graveyard and target creature on the battlefield to their owners' hands. getLeftHalfCard().getSpellAbility().addEffect(new RiseEffect()); getLeftHalfCard().getSpellAbility().addTarget(new TargetCardInGraveyard(new FilterCreatureCard("creature card from a graveyard"))); getLeftHalfCard().getSpellAbility().addTarget(new TargetCreaturePermanent()); - getLeftHalfCard().getColor().setBlue(true); - getLeftHalfCard().getColor().setBlack(true); // Fall // Target player reveals two cards at random from his or her hand, then discards each nonland card revealed this way. getRightHalfCard().getSpellAbility().addEffect(new FallEffect()); getRightHalfCard().getSpellAbility().addTarget(new TargetPlayer()); - getLeftHalfCard().getColor().setBlack(true); - getLeftHalfCard().getColor().setRed(true); } public RiseFall(final RiseFall card) { @@ -156,7 +148,7 @@ class FallEffect extends OneShotEffect { } targetPlayer.revealCards(sourceObject.getLogName(), cards, game); for (Card cardToDiscard: cards.getCards(game)) { - if (!card.getCardType().contains(CardType.LAND)) { + if (!cardToDiscard.getCardType().contains(CardType.LAND)) { targetPlayer.discard(cardToDiscard, source, game); } } From 7e361b4de1d0dd04550ffb65a85c333ae76ccf36 Mon Sep 17 00:00:00 2001 From: fireshoes Date: Thu, 2 Apr 2015 21:07:14 -0500 Subject: [PATCH 030/175] [TPR] Added Exalted Dragon [PCS] Added Null Profusion --- .../src/mage/sets/exodus/ExaltedDragon.java | 133 ++++++++++++++++++ .../mage/sets/planarchaos/NullProfusion.java | 105 ++++++++++++++ .../sets/tempestremastered/ExaltedDragon.java | 52 +++++++ 3 files changed, 290 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java create mode 100644 Mage.Sets/src/mage/sets/planarchaos/NullProfusion.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java diff --git a/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java b/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java new file mode 100644 index 0000000000..e0931a73e7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/ExaltedDragon.java @@ -0,0 +1,133 @@ +/* + * 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.exodus; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.costs.common.ReturnToHandTargetCost; +import mage.abilities.costs.common.SacrificeTargetCost; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterControlledLandPermanent; +import mage.filter.common.FilterControlledPermanent; +import mage.filter.predicate.mageobject.CardTypePredicate; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.players.Player; +import mage.target.common.TargetControlledPermanent; + +/** + * + * @author fireshoes + */ +public class ExaltedDragon extends CardImpl { + + public ExaltedDragon(UUID ownerId) { + super(ownerId, 6, "Exalted Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{4}{W}{W}"); + this.expansionSetCode = "EXO"; + this.subtype.add("Dragon"); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // Exalted Dragon can't attack unless you sacrifice a land. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ExaltedDragonReplacementEffect())); + } + + public ExaltedDragon(final ExaltedDragon card) { + super(card); + } + + @Override + public ExaltedDragon copy() { + return new ExaltedDragon(this); + } +} + +class ExaltedDragonReplacementEffect extends ReplacementEffectImpl { + + private static final FilterControlledPermanent filter = new FilterControlledLandPermanent(); + + ExaltedDragonReplacementEffect ( ) { + super(Duration.WhileOnBattlefield, Outcome.Neutral); + staticText = "{this} can't attack unless you sacrifice a land (This cost is paid as attackers are declared.)"; + } + + ExaltedDragonReplacementEffect ( ExaltedDragonReplacementEffect effect ) { + super(effect); + } + + @Override + public boolean apply(Game game, Ability source) { + throw new UnsupportedOperationException("Not supported."); + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + Player player = game.getPlayer(event.getPlayerId()); + if ( player != null ) { + SacrificeTargetCost attackCost = new SacrificeTargetCost(new TargetControlledPermanent(filter)); + if ( attackCost.canPay(source, source.getSourceId(), event.getPlayerId(), game) && + player.chooseUse(Outcome.Neutral, "Sacrifice a land?", game) ) + { + if (attackCost.pay(source, game, source.getSourceId(), event.getPlayerId(), true) ) { + return false; + } + } + return true; + } + return false; + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.DECLARE_ATTACKER; + } + + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + return event.getSourceId().equals(source.getSourceId()); + } + + @Override + public ExaltedDragonReplacementEffect copy() { + return new ExaltedDragonReplacementEffect(this); + } + +} diff --git a/Mage.Sets/src/mage/sets/planarchaos/NullProfusion.java b/Mage.Sets/src/mage/sets/planarchaos/NullProfusion.java new file mode 100644 index 0000000000..5078e41db6 --- /dev/null +++ b/Mage.Sets/src/mage/sets/planarchaos/NullProfusion.java @@ -0,0 +1,105 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.tempest; + +import java.util.UUID; +import mage.abilities.TriggeredAbilityImpl; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.DrawCardSourceControllerEffect; +import mage.abilities.effects.common.SkipDrawStepEffect; +import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect; +import mage.abilities.effects.common.continuous.MaximumHandSizeControllerEffect.HandSizeModification; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; + +/** + * + * @author emerald000 + */ +public class NullProfusion extends CardImpl { + + public NullProfusion(UUID ownerId) { + super(ownerId, 89, "Null Profusion", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{4}{B}{B}"); + this.expansionSetCode = "PLC"; + + // Skip your draw step. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new SkipDrawStepEffect())); + + // Whenever you play a card, draw a card. + this.addAbility(new NullProfusionTriggeredAbility()); + + // Your maximum hand size is two. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new MaximumHandSizeControllerEffect(2, Duration.WhileOnBattlefield, HandSizeModification.SET))); + } + + public NullProfusion(final NullProfusion card) { + super(card); + } + + @Override + public NullProfusion copy() { + return new NullProfusion(this); + } +} + +class NullProfusionTriggeredAbility extends TriggeredAbilityImpl { + + NullProfusionTriggeredAbility() { + super(Zone.BATTLEFIELD, new DrawCardSourceControllerEffect(1), false); + } + + NullProfusionTriggeredAbility(final NullProfusionTriggeredAbility ability) { + super(ability); + } + + @Override + public NullProfusionTriggeredAbility copy() { + return new NullProfusionTriggeredAbility(this); + } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == EventType.SPELL_CAST || event.getType() == EventType.LAND_PLAYED; + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + return event.getPlayerId().equals(this.getControllerId()); + } + + @Override + public String getRule() { + return "Whenever you play a card, draw a card."; + } +} \ No newline at end of file diff --git a/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java b/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.java new file mode 100644 index 0000000000..cb56fb0cc8 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/ExaltedDragon.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author fireshoes + */ +public class ExaltedDragon extends mage.sets.exodus.ExaltedDragon { + + public ExaltedDragon(UUID ownerId) { + super(ownerId); + this.cardNumber = 12; + this.expansionSetCode = "TPR"; + } + + public ExaltedDragon(final ExaltedDragon card) { + super(card); + } + + @Override + public ExaltedDragon copy() { + return new ExaltedDragon(this); + } +} From f75c78cc7c7ed7d3fc6c5c74941ace265503cebf Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Fri, 3 Apr 2015 01:44:47 -0300 Subject: [PATCH 031/175] - Added the 'Amplify' keyword Also added Kilnmouth Dragon which uses the keyword. --- .../mage/sets/archenemy/KilnmouthDragon.java | 52 +++++++ .../knightsvsdragons/KilnmouthDragon.java | 81 ++++++++++ .../mage/sets/legions/KilnmouthDragon.java | 52 +++++++ .../effects/common/AmplifyEffect.java | 145 ++++++++++++++++++ .../abilities/keyword/AmplifyAbility.java | 54 +++++++ 5 files changed, 384 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/archenemy/KilnmouthDragon.java create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/KilnmouthDragon.java create mode 100644 Mage.Sets/src/mage/sets/legions/KilnmouthDragon.java create mode 100644 Mage/src/mage/abilities/effects/common/AmplifyEffect.java create mode 100644 Mage/src/mage/abilities/keyword/AmplifyAbility.java diff --git a/Mage.Sets/src/mage/sets/archenemy/KilnmouthDragon.java b/Mage.Sets/src/mage/sets/archenemy/KilnmouthDragon.java new file mode 100644 index 0000000000..2ca7765b9d --- /dev/null +++ b/Mage.Sets/src/mage/sets/archenemy/KilnmouthDragon.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.archenemy; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class KilnmouthDragon extends mage.sets.knightsvsdragons.KilnmouthDragon { + + public KilnmouthDragon(UUID ownerId) { + super(ownerId); + this.cardNumber = 44; + this.expansionSetCode = "ARC"; + } + + public KilnmouthDragon(final KilnmouthDragon card) { + super(card); + } + + @Override + public KilnmouthDragon copy() { + return new KilnmouthDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/KilnmouthDragon.java b/Mage.Sets/src/mage/sets/knightsvsdragons/KilnmouthDragon.java new file mode 100644 index 0000000000..e5f54a40dd --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/KilnmouthDragon.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.knightsvsdragons; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.common.TapSourceCost; +import mage.abilities.dynamicvalue.common.CountersCount; +import mage.abilities.effects.common.AmplifyEffect; +import mage.abilities.effects.common.DamageTargetEffect; +import mage.abilities.keyword.AmplifyAbility; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.target.common.TargetCreatureOrPlayer; + +/** + * + * @author FenrisulfrX + */ +public class KilnmouthDragon extends CardImpl { + + public KilnmouthDragon(UUID ownerId) { + super(ownerId, 59, "Kilnmouth Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{R}{R}"); + this.expansionSetCode = "DDG"; + this.subtype.add("Dragon"); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Amplify 3 + this.addAbility(new AmplifyAbility(AmplifyEffect.AmplifyFactor.Amplify3)); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // {tap}: Kilnmouth Dragon deals damage equal to the number of +1/+1 counters on it to target creature or player. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, + new DamageTargetEffect(new CountersCount(CounterType.P1P1)), new TapSourceCost()); + ability.addTarget(new TargetCreatureOrPlayer()); + this.addAbility(ability); + } + + public KilnmouthDragon(final KilnmouthDragon card) { + super(card); + } + + @Override + public KilnmouthDragon copy() { + return new KilnmouthDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/legions/KilnmouthDragon.java b/Mage.Sets/src/mage/sets/legions/KilnmouthDragon.java new file mode 100644 index 0000000000..ba4f9bdf5c --- /dev/null +++ b/Mage.Sets/src/mage/sets/legions/KilnmouthDragon.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.legions; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class KilnmouthDragon extends mage.sets.knightsvsdragons.KilnmouthDragon { + + public KilnmouthDragon(UUID ownerId) { + super(ownerId); + this.cardNumber = 104; + this.expansionSetCode = "LGN"; + } + + public KilnmouthDragon(final KilnmouthDragon card) { + super(card); + } + + @Override + public KilnmouthDragon copy() { + return new KilnmouthDragon(this); + } +} diff --git a/Mage/src/mage/abilities/effects/common/AmplifyEffect.java b/Mage/src/mage/abilities/effects/common/AmplifyEffect.java new file mode 100644 index 0000000000..05d3851711 --- /dev/null +++ b/Mage/src/mage/abilities/effects/common/AmplifyEffect.java @@ -0,0 +1,145 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package mage.abilities.effects.common; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.effects.ReplacementEffectImpl; +import mage.cards.Cards; +import mage.cards.CardsImpl; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.counters.CounterType; +import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.mageobject.SubtypePredicate; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCardInHand; + +/** + * Effect for the AmplifyAbility + * + * 702.37. Amplify + * 702.37a Amplify is a static ability. “Amplify N” means “As + * this object enters the battlefield, reveal any number of cards from your hand + * that share a creature type with it. This permanent enters the battlefield + * with N +1/+1 counters on it for each card revealed this way. You can’t reveal + * this card or any other cards that are entering the battlefield at the same + * time as this card.” + * 702.37b If a creature has multiple instances of amplify, + * each one works separately. + * + * + * @author FenrisulfrX + */ +public class AmplifyEffect extends ReplacementEffectImpl { + + private static final FilterCreatureCard filter = new FilterCreatureCard("creatures cards to reveal"); + + private final AmplifyFactor amplifyFactor; + + public enum AmplifyFactor { + Amplify1("Amplify 1", "put one +1/+1 counters on it", 1), + Amplify2("Amplify 2", "put two +1/+1 counters on it", 2), + Amplify3("Amplify 3", "put three +1/+1 counters on it", 3); + + private final String text; + private final String ruleText; + private final int factor; + + AmplifyFactor(String text, String ruleText, int factor) { + this.text = text; + this.ruleText = ruleText; + this.factor = factor; + } + + @Override + public String toString() { + return text; + } + + public String getRuleText() { + return ruleText; + } + + public int getFactor() { + return factor; + } + } + + public AmplifyEffect(AmplifyFactor amplifyFactor) { + super(Duration.EndOfGame, Outcome.Benefit); + this.amplifyFactor = amplifyFactor; + } + + public AmplifyEffect(final AmplifyEffect effect) { + super(effect); + this.amplifyFactor = effect.amplifyFactor; + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ENTERS_THE_BATTLEFIELD; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + if (event.getTargetId().equals(source.getSourceId())) { + Permanent sourcePermanent = game.getPermanent(source.getSourceId()); + game.getState().setValue(sourcePermanent.getId().toString() + "revealed", null); + return true; + } + return false; + } + + @Override + public boolean apply(Game game, Ability source) { + return false; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + Permanent creature = game.getPermanent(event.getTargetId()); + Player controller = game.getPlayer(creature.getControllerId()); + if (controller != null) { + for (String subtype : creature.getSubtype()) { + filter.add(new SubtypePredicate((subtype))); + } + if (controller.getHand().count(filter, source.getSourceId(), source.getControllerId(), game) > 0){ + if (controller.chooseUse(Outcome.Benefit, "Reveal cards?", game)) { + TargetCardInHand target = new TargetCardInHand(0, Integer.MAX_VALUE, filter); + if (controller.choose(Outcome.Benefit, target, source.getSourceId(), game)) { + Cards cards = new CardsImpl(); + for (UUID uuid : target.getTargets()) { + cards.add(controller.getHand().get(uuid, game)); + } + int amountCounters = cards.size() * amplifyFactor.getFactor(); + creature.addCounters(CounterType.P1P1.createInstance(amountCounters), game); + controller.revealCards("cards", cards, game); + } + } + } + } + return false; + } + + @Override + public String getText(Mode mode) { + StringBuilder sb = new StringBuilder(amplifyFactor.toString()); + sb.append("(As this enter the battlefield, "); + sb.append(amplifyFactor.getRuleText()).append(" for each card" + + " you reveal that shares a type with it in your hand.)"); + return sb.toString(); + } + + @Override + public AmplifyEffect copy() { + return new AmplifyEffect(this); + } +} diff --git a/Mage/src/mage/abilities/keyword/AmplifyAbility.java b/Mage/src/mage/abilities/keyword/AmplifyAbility.java new file mode 100644 index 0000000000..22a427c840 --- /dev/null +++ b/Mage/src/mage/abilities/keyword/AmplifyAbility.java @@ -0,0 +1,54 @@ +/* + * Copyright 2011 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.abilities.keyword; + +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.AmplifyEffect; +import mage.abilities.effects.common.AmplifyEffect.AmplifyFactor; +import mage.constants.Zone; + +/** + * + * @author FenrisulfrX + */ +public class AmplifyAbility extends SimpleStaticAbility { + + public AmplifyAbility(AmplifyFactor amplifyFactor) { + super(Zone.BATTLEFIELD, new AmplifyEffect(amplifyFactor)); + } + + public AmplifyAbility(final AmplifyAbility ability) { + super(ability); + } + + @Override + public AmplifyAbility copy() { + return new AmplifyAbility(this); + } + +} From f05307bf73f8a85db817d5da2cc92f5e77e40a8a Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Fri, 3 Apr 2015 08:29:39 -0300 Subject: [PATCH 032/175] * Fixes Polymorphous Rush Fixes #873 --- .../src/mage/sets/journeyintonyx/PolymorphousRush.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java b/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java index 2d02f9f4ac..fdb2adbfe7 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java @@ -37,7 +37,9 @@ import mage.constants.CardType; import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.Rarity; +import mage.constants.TargetController; import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.permanent.ControllerPredicate; import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; @@ -50,6 +52,10 @@ import mage.util.functions.EmptyApplyToPermanent; * @author LevelX2 */ public class PolymorphousRush extends CardImpl { + + static { + filter.add(new ControllerPredicate(TargetController.YOU)); + } public PolymorphousRush(UUID ownerId) { super(ownerId, 46, "Polymorphous Rush", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{2}{U}"); @@ -60,7 +66,7 @@ public class PolymorphousRush extends CardImpl { // Strive - Polymorphous Rush costs {1}{U} more to cast for each target beyond the first. this.addAbility(new StriveAbility("{1}{U}")); // Choose a creature on the battlefield. Any number of target creatures you control each become a copy of that creature until end of turn. - this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, Integer.MAX_VALUE)); + this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, Integer.MAX_VALUE, filter, false)); this.getSpellAbility().addEffect(new PolymorphousRushCopyEffect()); } From dbb9be670386c0ff4243b3c220b832a87b17e5c7 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 3 Apr 2015 16:28:40 +0200 Subject: [PATCH 033/175] * Arashin Sovereign - Fixed that the player had no option to let the card go to the graveyard. --- .../mage/sets/alarareborn/SlaveOfBolas.java | 2 +- .../sets/avacynrestored/DeadeyeNavigator.java | 4 +- .../sets/avacynrestored/HarvesterOfSouls.java | 1 - .../sets/avacynrestored/ThatcherRevolt.java | 2 +- .../betrayersofkamigawa/GoryosVengeance.java | 2 +- .../KaijinOfTheVanishingTouch.java | 2 +- .../ShireiShizosCaretaker.java | 2 +- .../bornofthegods/FelhideSpiritbinder.java | 2 +- .../mage/sets/bornofthegods/SearingBlood.java | 2 +- .../HikariTwilightGuardian.java | 2 +- .../championsofkamigawa/InameLifeAspect.java | 2 +- .../sets/championsofkamigawa/JunkyoBell.java | 2 +- .../KikiJikiMirrorBreaker.java | 2 +- .../OtherworldlyJourney.java | 2 +- .../SosukeSonOfSeshiro.java | 2 +- .../TatsumasaTheDragonsFang.java | 6 +- .../championsofkamigawa/ThroughTheBreach.java | 2 +- .../mage/sets/coldsnap/AdarkarValkyrie.java | 2 +- .../mage/sets/commander/ScatteringStroke.java | 2 +- .../mage/sets/commander2013/Flickerform.java | 2 +- .../sets/commander2013/Reincarnation.java | 2 +- .../commander2013/RoonOfTheHiddenRealm.java | 2 +- .../commander2014/DarettiScrapSavant.java | 2 +- .../commander2014/FeldonOfTheThirdPath.java | 2 +- .../mage/sets/commander2014/WakeTheDead.java | 2 +- .../sets/conflux/BrackwaterElemental.java | 2 +- .../src/mage/sets/conflux/QuenchableFire.java | 2 +- .../sets/darkascension/BeguilerOfWills.java | 1 - .../mage/sets/darkascension/LoyalCathar.java | 2 +- .../src/mage/sets/darkascension/Seance.java | 2 +- .../darkascension/SuddenDisappearance.java | 2 +- .../mage/sets/dissension/RakdosGuildmage.java | 2 +- .../src/mage/sets/dragonsmaze/AEtherling.java | 2 +- .../sets/dragonsmaze/LegionsInitiative.java | 2 +- .../mage/sets/dragonsmaze/PlasmCapture.java | 2 +- .../sets/dragonsoftarkir/HedonistsTrove.java | 6 +- .../mage/sets/dragonsoftarkir/LivingLore.java | 6 +- .../sets/dragonsoftarkir/MirrorMockery.java | 2 +- .../sets/dragonsoftarkir/SwiftWarkite.java | 4 +- .../src/mage/sets/eventide/Flickerwisp.java | 2 +- .../sets/fatereforged/RallyTheAncestors.java | 2 +- .../mage/sets/fifthedition/TheWretched.java | 62 ++++++--- .../sets/futuresight/BridgeFromBelow.java | 30 ++--- .../src/mage/sets/gatecrash/Voidwalk.java | 2 +- .../sets/guildpact/GhostCouncilOfOrzhova.java | 2 +- .../src/mage/sets/guildpact/Ghostway.java | 4 +- Mage.Sets/src/mage/sets/iceage/IcyPrison.java | 2 +- .../src/mage/sets/iceage/Necropotence.java | 2 +- .../src/mage/sets/invasion/SpinalEmbrace.java | 2 +- .../mage/sets/journeyintonyx/BrainMaggot.java | 17 ++- .../src/mage/sets/journeyintonyx/Skybind.java | 2 +- .../mage/sets/journeyintonyx/Twinflame.java | 2 +- .../src/mage/sets/judgment/WormfangDrake.java | 2 +- .../khansoftarkir/AnafenzaTheForemost.java | 3 - .../sets/khansoftarkir/KheruLichLord.java | 2 +- .../khansoftarkir/MeanderingTowershell.java | 2 +- .../src/mage/sets/legends/Abomination.java | 2 +- .../src/mage/sets/legends/HazezonTamar.java | 2 +- .../src/mage/sets/limitedalpha/Berserk.java | 2 +- .../mage/sets/limitedalpha/Cockatrice.java | 2 +- .../sets/limitedalpha/ThicketBasilisk.java | 2 +- .../src/mage/sets/magic2010/DragonWhelp.java | 2 +- .../src/mage/sets/magic2010/StoneGiant.java | 2 +- .../mage/sets/magic2011/MystifyingMaze.java | 2 +- .../mage/sets/magic2011/PrimevalTitan.java | 12 +- .../mage/sets/magic2014/BanisherPriest.java | 4 +- .../src/mage/sets/magic2015/Phytotitan.java | 2 +- .../src/mage/sets/mirage/RockBasilisk.java | 2 +- .../src/mage/sets/mirage/ShallowGrave.java | 2 +- .../sets/mirrodinbesieged/GruesomeEncore.java | 2 +- .../sets/mirrodinbesieged/VirulentWound.java | 2 +- .../src/mage/sets/nemesis/ParallaxWave.java | 4 +- .../mage/sets/newphyrexia/KarnLiberated.java | 2 +- .../mage/sets/newphyrexia/MyrSuperion.java | 26 +--- .../sets/newphyrexia/PostmortemLunge.java | 2 +- .../mage/sets/newphyrexia/PraetorsGrasp.java | 2 +- .../src/mage/sets/onslaught/AstralSlide.java | 2 +- .../phyrexiavsthecoalition/HornetCannon.java | 2 +- .../mage/sets/planarchaos/FatalFrenzy.java | 2 +- .../sets/planeshift/SkyshipWeatherlight.java | 2 +- .../sets/returntoravnica/GraveBetrayal.java | 2 +- .../TrostaniSelesnyasVoice.java | 14 +- .../riseoftheeldrazi/ArrogantBloodlord.java | 32 ++--- .../sets/riseoftheeldrazi/SplinterTwin.java | 2 +- .../saviorsofkamigawa/FeralLightning.java | 2 +- .../FootstepsOfTheGoryo.java | 2 +- .../sets/saviorsofkamigawa/InameAsOne.java | 2 +- .../saviorsofkamigawa/WineOfBloodAndIron.java | 2 +- .../sets/scarsofmirrodin/ArgentSphinx.java | 2 +- .../scarsofmirrodin/GlimmerpointStag.java | 2 +- .../mage/sets/scarsofmirrodin/MimicVat.java | 2 +- .../sets/scarsofmirrodin/OgreGeargrabber.java | 2 +- .../scarsofmirrodin/VenserTheSojourner.java | 2 +- .../sets/shadowmoor/ElementalMastery.java | 2 +- .../mage/sets/shadowmoor/Giantbaiting.java | 2 +- .../mage/sets/shadowmoor/ImpromptuRaid.java | 2 +- .../mage/sets/shadowmoor/MistmeadowWitch.java | 2 +- .../mage/sets/shadowmoor/PuppeteerClique.java | 2 +- .../sets/shadowmoor/WickerWarcrawler.java | 2 +- .../sets/shardsofalara/GatherSpecimens.java | 20 +-- .../mage/sets/shardsofalara/Skeletonize.java | 2 +- .../sets/shardsofalara/TidehollowSculler.java | 4 +- .../mage/sets/stronghold/SacredGround.java | 7 +- .../src/mage/sets/tempest/CorpseDance.java | 2 +- .../src/mage/sets/tempest/OracleEnVec.java | 2 +- Mage.Sets/src/mage/sets/thedark/Venom.java | 2 +- .../sets/theros/AshiokNightmareWeaver.java | 2 +- .../mage/sets/theros/GiftOfImmortality.java | 2 +- .../mage/sets/theros/PyxisOfPandemonium.java | 4 +- .../sets/theros/RescueFromTheUnderworld.java | 2 +- .../mage/sets/theros/UnderworldCerberus.java | 8 +- .../src/mage/sets/theros/WhipOfErebos.java | 2 +- .../sets/timespiral/FlickeringSpirit.java | 63 +++++++++ .../sets/timespiral/MangaraOfCorondor.java | 2 +- .../mage/sets/timespiral/NorinTheWary.java | 2 +- .../sets/timespiral/SaffiEriksdotter.java | 2 +- .../src/mage/sets/torment/MesmericFiend.java | 10 +- .../mage/sets/urzasdestiny/AcademyRector.java | 2 +- .../src/mage/sets/urzasdestiny/Flicker.java | 56 ++++++++ .../src/mage/sets/urzaslegacy/MemoryJar.java | 2 +- .../src/mage/sets/urzassaga/SneakAttack.java | 2 +- .../sets/venservskoth/GalepowderMage.java | 2 +- .../mage/sets/vintagemasters/ManaDrain.java | 2 +- .../vintagemasters/MarchesaTheBlackRose.java | 2 +- .../sets/visions/UndiscoveredParadise.java | 2 +- .../mage/sets/worldwake/StoneIdolTrap.java | 2 +- .../mage/sets/zendikar/ElementalAppeal.java | 2 +- .../sets/zendikar/ZektarShrineExpedition.java | 2 +- .../abilities/enters/BanisherPriestTest.java | 2 +- .../abilities/enters/GatherSpecimensTest.java | 1 + .../abilities/flicker/CloudshiftTest.java | 37 ++++++ .../cards/abilities/keywords/UndyingTest.java | 1 + .../abilities/other/PastInFlamesTest.java | 5 +- .../cards/conditional/TheWretchedTest.java | 57 +++++--- .../cards/continuous/ElvishArchdruidTest.java | 5 +- .../BattlefieldTriggeredAbilitiesTest.java | 8 +- .../modification/CostModificationTest.java | 5 +- .../cards/replacement/DryadMilitantTest.java | 4 +- .../test/cards/single/FracturingGustTest.java | 4 + .../test/cards/single/ParallaxWaveTest.java | 4 + .../cards/triggers/JournexToNowhereTest.java | 4 +- .../test/cards/triggers/SoulWardenTest.java | 3 +- .../cards/triggers/dies/BrainMaggotTest.java | 2 +- .../triggers/dies/HarvesterOfSoulsTest.java | 9 +- .../test/lki/LastKnownInformationTest.java | 12 +- .../java/org/mage/test/player/TestPlayer.java | 2 +- Mage/src/mage/MageObjectReference.java | 13 +- Mage/src/mage/abilities/Ability.java | 16 ++- Mage/src/mage/abilities/AbilityImpl.java | 90 ++++++++++--- .../mage/abilities/TriggeredAbilities.java | 123 +++++++++--------- .../mage/abilities/TriggeredAbilityImpl.java | 2 +- .../common/ZoneChangeTriggeredAbility.java | 2 +- ...LeaveReturnExiledToBattlefieldAbility.java | 4 +- .../costs/common/ExileSourceCost.java | 35 +++-- .../abilities/costs/mana/GenericManaCost.java | 6 +- .../abilities/effects/ContinuousEffects.java | 14 +- .../effects/ReplacementEffectImpl.java | 5 + .../CreateDelayedTriggeredAbilityEffect.java | 2 +- .../effects/common/ExileSourceEffect.java | 46 ++++--- .../common/ExileTargetForSourceEffect.java | 2 +- .../ReturnFromExileForSourceEffect.java | 35 +++-- ...ttlefieldUnderYourControlSourceEffect.java | 22 ++-- ...ttlefieldUnderYourControlTargetEffect.java | 7 +- .../abilities/keyword/ChampionAbility.java | 2 +- .../mage/abilities/keyword/EchoAbility.java | 12 +- .../abilities/keyword/FlashbackAbility.java | 65 +++++---- .../abilities/keyword/UnearthAbility.java | 13 +- Mage/src/mage/game/Game.java | 2 +- Mage/src/mage/game/GameImpl.java | 39 +++--- Mage/src/mage/game/GameState.java | 1 + Mage/src/mage/game/stack/Spell.java | 1 + Mage/src/mage/game/stack/StackAbility.java | 16 ++- Mage/src/mage/players/ManaPool.java | 27 ++-- 173 files changed, 873 insertions(+), 506 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/timespiral/FlickeringSpirit.java create mode 100644 Mage.Sets/src/mage/sets/urzasdestiny/Flicker.java diff --git a/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java b/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java index f4bbe5b34e..414e9e9cee 100644 --- a/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java +++ b/Mage.Sets/src/mage/sets/alarareborn/SlaveOfBolas.java @@ -101,7 +101,7 @@ class SlaveOfBolasEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/avacynrestored/DeadeyeNavigator.java b/Mage.Sets/src/mage/sets/avacynrestored/DeadeyeNavigator.java index 61722234ec..4a5660fb5d 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/DeadeyeNavigator.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/DeadeyeNavigator.java @@ -63,8 +63,8 @@ public class DeadeyeNavigator extends CardImpl { this.addAbility(SoulbondAbility.getInstance()); // As long as Deadeye Navigator is paired with another creature, each of those creatures has "{1}{U}: Exile this creature, then return it to the battlefield under your control." - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileSourceEffect(Zone.BATTLEFIELD), new ManaCostsImpl("{1}{U}")); - ability.addEffect(new ReturnToBattlefieldUnderYourControlSourceEffect(Zone.EXILED)); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileSourceEffect(true), new ManaCostsImpl("{1}{U}")); + ability.addEffect(new ReturnToBattlefieldUnderYourControlSourceEffect()); this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new GainAbilityPairedEffect(ability, ruleText))); } diff --git a/Mage.Sets/src/mage/sets/avacynrestored/HarvesterOfSouls.java b/Mage.Sets/src/mage/sets/avacynrestored/HarvesterOfSouls.java index 9400f612a6..a31048b767 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/HarvesterOfSouls.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/HarvesterOfSouls.java @@ -58,7 +58,6 @@ public class HarvesterOfSouls extends CardImpl { this.expansionSetCode = "AVR"; this.subtype.add("Demon"); - this.color.setBlack(true); this.power = new MageInt(5); this.toughness = new MageInt(5); diff --git a/Mage.Sets/src/mage/sets/avacynrestored/ThatcherRevolt.java b/Mage.Sets/src/mage/sets/avacynrestored/ThatcherRevolt.java index f7159d030f..2a5dfa521b 100644 --- a/Mage.Sets/src/mage/sets/avacynrestored/ThatcherRevolt.java +++ b/Mage.Sets/src/mage/sets/avacynrestored/ThatcherRevolt.java @@ -97,7 +97,7 @@ class ThatcherRevoltEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/GoryosVengeance.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/GoryosVengeance.java index 7c1c1f7b2e..4818b70039 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/GoryosVengeance.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/GoryosVengeance.java @@ -125,7 +125,7 @@ class GoryosVengeanceEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/KaijinOfTheVanishingTouch.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/KaijinOfTheVanishingTouch.java index 0733b89f4a..f52364f0fa 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/KaijinOfTheVanishingTouch.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/KaijinOfTheVanishingTouch.java @@ -94,7 +94,7 @@ class KaijinOfTheVanishingTouchEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new ReturnToHandTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(targetCreature.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/betrayersofkamigawa/ShireiShizosCaretaker.java b/Mage.Sets/src/mage/sets/betrayersofkamigawa/ShireiShizosCaretaker.java index 2ef86d875e..3f3d007453 100644 --- a/Mage.Sets/src/mage/sets/betrayersofkamigawa/ShireiShizosCaretaker.java +++ b/Mage.Sets/src/mage/sets/betrayersofkamigawa/ShireiShizosCaretaker.java @@ -151,7 +151,7 @@ class ShireiShizosCaretakerEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(card.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/bornofthegods/FelhideSpiritbinder.java b/Mage.Sets/src/mage/sets/bornofthegods/FelhideSpiritbinder.java index 69efc81110..39d174386f 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/FelhideSpiritbinder.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/FelhideSpiritbinder.java @@ -115,7 +115,7 @@ class FelhideSpiritbinderEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/bornofthegods/SearingBlood.java b/Mage.Sets/src/mage/sets/bornofthegods/SearingBlood.java index 8f6456f006..046b4a22a7 100644 --- a/Mage.Sets/src/mage/sets/bornofthegods/SearingBlood.java +++ b/Mage.Sets/src/mage/sets/bornofthegods/SearingBlood.java @@ -95,7 +95,7 @@ class SearingBloodEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new SearingBloodDelayedTriggeredAbility(source.getFirstTarget()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return new DamageTargetEffect(2).apply(game, source); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/HikariTwilightGuardian.java b/Mage.Sets/src/mage/sets/championsofkamigawa/HikariTwilightGuardian.java index 0a7b55abd5..b4015f0476 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/HikariTwilightGuardian.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/HikariTwilightGuardian.java @@ -103,7 +103,7 @@ class HikariTwilightGuardianEffect extends OneShotEffect { new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java b/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java index d7c6652c72..036318169b 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/InameLifeAspect.java @@ -107,7 +107,7 @@ class InameLifeAspectEffect extends OneShotEffect { MageObject sourceObject = game.getObject(source.getSourceId()); if (controller != null && sourceObject != null) { if (controller.chooseUse(outcome, "Exile " + sourceObject.getLogName() + " to return Spirit cards?", game)) { - new ExileSourceEffect(Zone.GRAVEYARD).apply(game, source); + new ExileSourceEffect().apply(game, source); return new ReturnToHandTargetEffect().apply(game, source); } return true; diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/JunkyoBell.java b/Mage.Sets/src/mage/sets/championsofkamigawa/JunkyoBell.java index 46ab66c555..7e1c9efce0 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/JunkyoBell.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/JunkyoBell.java @@ -103,7 +103,7 @@ private class JunkyoBellSacrificeEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/KikiJikiMirrorBreaker.java b/Mage.Sets/src/mage/sets/championsofkamigawa/KikiJikiMirrorBreaker.java index aff7952cd4..476155135d 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/KikiJikiMirrorBreaker.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/KikiJikiMirrorBreaker.java @@ -131,7 +131,7 @@ class KikiJikiMirrorBreakerEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/OtherworldlyJourney.java b/Mage.Sets/src/mage/sets/championsofkamigawa/OtherworldlyJourney.java index 1170a61257..d8a0daeb56 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/OtherworldlyJourney.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/OtherworldlyJourney.java @@ -99,7 +99,7 @@ class OtherworldlyJourneyEffect extends OneShotEffect { new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD, "return that card to the battlefield under its owner's control with a +1/+1 counter on it")); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); AddCountersTargetEffect effect = new AddCountersTargetEffect(CounterType.P1P1.createInstance()); effect.setTargetPointer(new FixedTarget(source.getFirstTarget())); delayedAbility.addEffect(effect); diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java b/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java index b411a75bee..730d983722 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/SosukeSonOfSeshiro.java @@ -141,7 +141,7 @@ class SosukeSonOfSeshiroEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(targetCreature.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/TatsumasaTheDragonsFang.java b/Mage.Sets/src/mage/sets/championsofkamigawa/TatsumasaTheDragonsFang.java index 5dcf3b6c15..419f09538d 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/TatsumasaTheDragonsFang.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/TatsumasaTheDragonsFang.java @@ -70,7 +70,7 @@ public class TatsumasaTheDragonsFang extends CardImpl { // {6}, Exile Tatsumasa, the Dragon's Fang: Put a 5/5 blue Dragon Spirit creature token with flying onto the battlefield. Return Tatsumasa to the battlefield under its owner's control when that token dies. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new TatsumaTheDragonsFangEffect(), new GenericManaCost(6)); - ability.addCost(new ExileSourceCost()); + ability.addCost(new ExileSourceCost(true)); this.addAbility(ability); // Equip {3} @@ -111,7 +111,7 @@ class TatsumaTheDragonsFangEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new TatsumaTheDragonsFangTriggeredAbility(fixedTarget); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; @@ -123,7 +123,7 @@ class TatsumaTheDragonsFangTriggeredAbility extends DelayedTriggeredAbility { protected FixedTarget fixedTarget; public TatsumaTheDragonsFangTriggeredAbility(FixedTarget fixedTarget) { - super(new ReturnToBattlefieldUnderYourControlSourceEffect(Zone.EXILED), Duration.OneUse); + super(new ReturnToBattlefieldUnderYourControlSourceEffect(), Duration.OneUse); this.fixedTarget = fixedTarget; } diff --git a/Mage.Sets/src/mage/sets/championsofkamigawa/ThroughTheBreach.java b/Mage.Sets/src/mage/sets/championsofkamigawa/ThroughTheBreach.java index e018dc5d95..b634a884d2 100644 --- a/Mage.Sets/src/mage/sets/championsofkamigawa/ThroughTheBreach.java +++ b/Mage.Sets/src/mage/sets/championsofkamigawa/ThroughTheBreach.java @@ -119,7 +119,7 @@ class ThroughTheBreachEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/coldsnap/AdarkarValkyrie.java b/Mage.Sets/src/mage/sets/coldsnap/AdarkarValkyrie.java index 086fdaf9e0..49699d1ad6 100644 --- a/Mage.Sets/src/mage/sets/coldsnap/AdarkarValkyrie.java +++ b/Mage.Sets/src/mage/sets/coldsnap/AdarkarValkyrie.java @@ -115,7 +115,7 @@ class AdarkarValkyrieEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AdarkarValkyrieDelayedTriggeredAbility(new FixedTarget(this.getTargetPointer().getFirst(game, source))); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return false; } diff --git a/Mage.Sets/src/mage/sets/commander/ScatteringStroke.java b/Mage.Sets/src/mage/sets/commander/ScatteringStroke.java index 8fcc62768e..c49d63c7d9 100644 --- a/Mage.Sets/src/mage/sets/commander/ScatteringStroke.java +++ b/Mage.Sets/src/mage/sets/commander/ScatteringStroke.java @@ -103,7 +103,7 @@ class ScatteringStrokeEffect extends OneShotEffect { new AtTheBeginOMainPhaseDelayedTriggeredAbility(effect, true, TargetController.YOU, AtTheBeginOMainPhaseDelayedTriggeredAbility.PhaseSelection.NEXT_MAIN); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/commander2013/Flickerform.java b/Mage.Sets/src/mage/sets/commander2013/Flickerform.java index 24fbf2b8c1..fa30c49048 100644 --- a/Mage.Sets/src/mage/sets/commander2013/Flickerform.java +++ b/Mage.Sets/src/mage/sets/commander2013/Flickerform.java @@ -136,7 +136,7 @@ class FlickerformEffect extends OneShotEffect { new FlickerformReturnEffect(enchantedCreature.getId(), exileZoneId)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/commander2013/Reincarnation.java b/Mage.Sets/src/mage/sets/commander2013/Reincarnation.java index 3be9ee8d14..45dde8d09e 100644 --- a/Mage.Sets/src/mage/sets/commander2013/Reincarnation.java +++ b/Mage.Sets/src/mage/sets/commander2013/Reincarnation.java @@ -98,7 +98,7 @@ class ReincarnationEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new ReincarnationDelayedTriggeredAbility(targetPointer.getFirst(game, source)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/commander2013/RoonOfTheHiddenRealm.java b/Mage.Sets/src/mage/sets/commander2013/RoonOfTheHiddenRealm.java index eeb543c56c..d885e3a672 100644 --- a/Mage.Sets/src/mage/sets/commander2013/RoonOfTheHiddenRealm.java +++ b/Mage.Sets/src/mage/sets/commander2013/RoonOfTheHiddenRealm.java @@ -129,7 +129,7 @@ class RoonOfTheHiddenRealmEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(exileId, Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(card.getOwnerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/commander2014/DarettiScrapSavant.java b/Mage.Sets/src/mage/sets/commander2014/DarettiScrapSavant.java index 79fcd51022..b236165e2e 100644 --- a/Mage.Sets/src/mage/sets/commander2014/DarettiScrapSavant.java +++ b/Mage.Sets/src/mage/sets/commander2014/DarettiScrapSavant.java @@ -250,7 +250,7 @@ class DarettiScrapSavantEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(Zone.COMMAND, effect, TargetController.ANY); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/commander2014/FeldonOfTheThirdPath.java b/Mage.Sets/src/mage/sets/commander2014/FeldonOfTheThirdPath.java index 7bdf557c6a..0ab3b15dff 100644 --- a/Mage.Sets/src/mage/sets/commander2014/FeldonOfTheThirdPath.java +++ b/Mage.Sets/src/mage/sets/commander2014/FeldonOfTheThirdPath.java @@ -121,7 +121,7 @@ class FeldonOfTheThirdPathEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/commander2014/WakeTheDead.java b/Mage.Sets/src/mage/sets/commander2014/WakeTheDead.java index 46f3a3a6df..fc82a68cec 100644 --- a/Mage.Sets/src/mage/sets/commander2014/WakeTheDead.java +++ b/Mage.Sets/src/mage/sets/commander2014/WakeTheDead.java @@ -165,7 +165,7 @@ class WakeTheDeadReturnFromGraveyardToBattlefieldTargetEffect extends OneShotEff DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } diff --git a/Mage.Sets/src/mage/sets/conflux/BrackwaterElemental.java b/Mage.Sets/src/mage/sets/conflux/BrackwaterElemental.java index b27632f502..8ee1ac6523 100644 --- a/Mage.Sets/src/mage/sets/conflux/BrackwaterElemental.java +++ b/Mage.Sets/src/mage/sets/conflux/BrackwaterElemental.java @@ -101,7 +101,7 @@ class BrackwaterElementalSacrificeEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return false; diff --git a/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java b/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java index 381ff57eae..9b7f9cdaf3 100644 --- a/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java +++ b/Mage.Sets/src/mage/sets/conflux/QuenchableFire.java @@ -96,7 +96,7 @@ class QuenchableFireEffect extends OneShotEffect { QuenchableFireDelayedTriggeredAbility delayedAbility = new QuenchableFireDelayedTriggeredAbility(); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getTargets().addAll(source.getTargets()); game.addDelayedTriggeredAbility(delayedAbility); diff --git a/Mage.Sets/src/mage/sets/darkascension/BeguilerOfWills.java b/Mage.Sets/src/mage/sets/darkascension/BeguilerOfWills.java index 07bed451c6..93f3b07383 100644 --- a/Mage.Sets/src/mage/sets/darkascension/BeguilerOfWills.java +++ b/Mage.Sets/src/mage/sets/darkascension/BeguilerOfWills.java @@ -56,7 +56,6 @@ public class BeguilerOfWills extends CardImpl { this.subtype.add("Human"); this.subtype.add("Wizard"); - this.color.setBlue(true); this.power = new MageInt(1); this.toughness = new MageInt(1); diff --git a/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java b/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java index c47d7ce736..08e41e3fe4 100644 --- a/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java +++ b/Mage.Sets/src/mage/sets/darkascension/LoyalCathar.java @@ -100,7 +100,7 @@ class LoyalCatharEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnLoyalCatharEffect(source.getSourceId())); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/darkascension/Seance.java b/Mage.Sets/src/mage/sets/darkascension/Seance.java index fc9387fb38..6e1d537838 100644 --- a/Mage.Sets/src/mage/sets/darkascension/Seance.java +++ b/Mage.Sets/src/mage/sets/darkascension/Seance.java @@ -112,7 +112,7 @@ class SeanceEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } diff --git a/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java b/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java index 15b62eaac1..6d3b2d8709 100644 --- a/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java +++ b/Mage.Sets/src/mage/sets/darkascension/SuddenDisappearance.java @@ -97,7 +97,7 @@ class SuddenDisappearanceEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } diff --git a/Mage.Sets/src/mage/sets/dissension/RakdosGuildmage.java b/Mage.Sets/src/mage/sets/dissension/RakdosGuildmage.java index 635baf4fb8..b4a6247fbe 100644 --- a/Mage.Sets/src/mage/sets/dissension/RakdosGuildmage.java +++ b/Mage.Sets/src/mage/sets/dissension/RakdosGuildmage.java @@ -112,7 +112,7 @@ class RakdosGuildmageEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java b/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java index 542e122c00..9fa3b9f5a3 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/AEtherling.java @@ -107,7 +107,7 @@ class AEherlingRemovingEffect extends OneShotEffect { new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/LegionsInitiative.java b/Mage.Sets/src/mage/sets/dragonsmaze/LegionsInitiative.java index f7727cb7e4..b1152ff508 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/LegionsInitiative.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/LegionsInitiative.java @@ -133,7 +133,7 @@ class LegionsInitiativeExileEffect extends OneShotEffect { AtTheBeginOfCombatDelayedTriggeredAbility delayedAbility = new AtTheBeginOfCombatDelayedTriggeredAbility(new LegionsInitiativeReturnFromExileEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/dragonsmaze/PlasmCapture.java b/Mage.Sets/src/mage/sets/dragonsmaze/PlasmCapture.java index bbe41eb33c..3708609e3e 100644 --- a/Mage.Sets/src/mage/sets/dragonsmaze/PlasmCapture.java +++ b/Mage.Sets/src/mage/sets/dragonsmaze/PlasmCapture.java @@ -101,7 +101,7 @@ class PlasmCaptureCounterEffect extends OneShotEffect { new AtTheBeginOMainPhaseDelayedTriggeredAbility(new PlasmCaptureManaEffect(mana), false, TargetController.YOU, PhaseSelection.NEXT_PRECOMBAT_MAIN); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/HedonistsTrove.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/HedonistsTrove.java index b79f31b402..145f8035f3 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/HedonistsTrove.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/HedonistsTrove.java @@ -101,7 +101,7 @@ class HedonistsTroveExileEffect extends OneShotEffect { Player targetPlayer = game.getPlayer(this.getTargetPointer().getFirst(game, source)); MageObject sourceObject = source.getSourceObject(game); if (controller != null && targetPlayer != null && sourceObject != null) { - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); ArrayList graveyard = new ArrayList<>(targetPlayer.getGraveyard()); for (UUID cardId : graveyard) { Card card = game.getCard(cardId); @@ -141,7 +141,7 @@ class HedonistsTrovePlayLandEffect extends AsThoughEffectImpl { Card card = game.getCard(objectId); MageObject sourceObject = source.getSourceObject(game); if (card != null && card.getCardType().contains(CardType.LAND) && sourceObject != null) { - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (exileId != null) { ExileZone exileZone = game.getState().getExile().getExileZone(exileId); return exileZone != null && exileZone.contains(objectId); @@ -182,7 +182,7 @@ class HedonistsTroveCastNonlandCardsEffect extends AsThoughEffectImpl { Card card = game.getCard(objectId); MageObject sourceObject = source.getSourceObject(game); if (card != null && !card.getCardType().contains(CardType.LAND) && sourceObject != null) { - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (exileId != null) { ExileZone exileZone = game.getState().getExile().getExileZone(exileId); if (exileZone != null && exileZone.contains(objectId)) { diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/LivingLore.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/LivingLore.java index 28972e6eaa..48c370f786 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/LivingLore.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/LivingLore.java @@ -110,7 +110,7 @@ class LivingLoreExileEffect extends OneShotEffect { if (sourceObject != null && controller != null){ TargetCardInYourGraveyard target = new TargetCardInYourGraveyard(new FilterInstantOrSorceryCard("instant or sorcery card from your graveyard")); if (controller.chooseTarget(outcome, target, source, game)) { - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); Card card = controller.getGraveyard().get(target.getFirstTarget(), game); if (card != null) { controller.moveCardToExileWithInfo(card, exileId, sourceObject.getName(), source.getSourceId(), game, Zone.GRAVEYARD); @@ -147,7 +147,7 @@ class LivingLoreSetPowerToughnessSourceEffect extends ContinuousEffectImpl { discard(); return false; } - UUID exileId = CardUtil.getObjectExileZoneId(game, mageObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (exileId != null) { ExileZone exileZone = game.getExile().getExileZone(exileId); if (exileZone == null) { @@ -192,7 +192,7 @@ class LivingLoreSacrificeEffect extends OneShotEffect { Permanent permanent = game.getPermanent(source.getSourceId()); if (permanent != null && mageObject != null && new MageObjectReference(permanent, game).refersTo(mageObject, game)) { if (permanent.sacrifice(source.getSourceId(), game)) { - UUID exileId = CardUtil.getObjectExileZoneId(game, mageObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (exileId != null) { ExileZone exileZone = game.getExile().getExileZone(exileId); Card exiledCard = null; diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java index 424eb9d464..a2bc51c15e 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/MirrorMockery.java @@ -120,7 +120,7 @@ class MirrorMockeryEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/SwiftWarkite.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/SwiftWarkite.java index c462496c45..26ba71120c 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/SwiftWarkite.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/SwiftWarkite.java @@ -133,7 +133,7 @@ class SwiftWarkiteEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect2); delayedAbility.setControllerId(source.getControllerId()); delayedAbility.setSourceId(source.getSourceId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } @@ -154,7 +154,7 @@ class SwiftWarkiteEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect2); delayedAbility.setControllerId(source.getControllerId()); delayedAbility.setSourceId(source.getSourceId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/eventide/Flickerwisp.java b/Mage.Sets/src/mage/sets/eventide/Flickerwisp.java index 024ac1d53d..5d335ca96c 100644 --- a/Mage.Sets/src/mage/sets/eventide/Flickerwisp.java +++ b/Mage.Sets/src/mage/sets/eventide/Flickerwisp.java @@ -107,7 +107,7 @@ class FlickerwispEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD, false)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/fatereforged/RallyTheAncestors.java b/Mage.Sets/src/mage/sets/fatereforged/RallyTheAncestors.java index 485566f562..bd820c79eb 100644 --- a/Mage.Sets/src/mage/sets/fatereforged/RallyTheAncestors.java +++ b/Mage.Sets/src/mage/sets/fatereforged/RallyTheAncestors.java @@ -107,7 +107,7 @@ class RallyTheAncestorsEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/fifthedition/TheWretched.java b/Mage.Sets/src/mage/sets/fifthedition/TheWretched.java index 23a5fdaead..954925a745 100644 --- a/Mage.Sets/src/mage/sets/fifthedition/TheWretched.java +++ b/Mage.Sets/src/mage/sets/fifthedition/TheWretched.java @@ -44,6 +44,7 @@ import mage.constants.Rarity; import mage.constants.Zone; import mage.filter.common.FilterCreaturePermanent; import mage.game.Game; +import mage.game.combat.CombatGroup; import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.target.targetpointer.FixedTarget; @@ -53,13 +54,18 @@ import mage.watchers.common.BlockedAttackerWatcher; * * @author jeffwadsworth * -5/1/2009 The ability grants you control of all creatures that are blocking it as the ability resolves. This will include any creatures that were put onto the battlefield blocking it. -5/1/2009 Any blocking creatures that regenerated during combat will have been removed from combat. Since such creatures are no longer in combat, they cannot be blocking The Wretched, which means you won't be able to gain control of them. -5/1/2009 If The Wretched itself regenerated during combat, then it will have been removed from combat. Since it is no longer in combat, there cannot be any creatures blocking it, which means you won't be able to gain control of any creatures. -10/1/2009 The Wretched's ability triggers only if it's still on the battlefield when the end of combat step begins (after the combat damage step). For example, if it's blocked by a 7/7 creature and is destroyed, its ability won't trigger at all. +5/1/2009 The ability grants you control of all creatures that are blocking it as the ability resolves. This will include +* any creatures that were put onto the battlefield blocking it. +5/1/2009 Any blocking creatures that regenerated during combat will have been removed from combat. Since such creatures +* are no longer in combat, they cannot be blocking The Wretched, which means you won't be able to gain control of them. +5/1/2009 If The Wretched itself regenerated during combat, then it will have been removed from combat. Since it is no longer +* in combat, there cannot be any creatures blocking it, which means you won't be able to gain control of any creatures. +10/1/2009 The Wretched's ability triggers only if it's still on the battlefield when the end of combat step begins (after the +* combat damage step). For example, if it's blocked by a 7/7 creature and is destroyed, its ability won't trigger at all. 10/1/2009 If The Wretched leaves the battlefield, you no longer control it, so the duration of its control-change effect ends. 10/1/2009 If you lose control of The Wretched before its ability resolves, you won't gain control of the creatures blocking it at all. -10/1/2009 Once the ability resolves, it doesn't care whether the permanents you gained control of remain creatures, only that they remain on the battlefield. +10/1/2009 Once the ability resolves, it doesn't care whether the permanents you gained control of remain creatures, only that +* they remain on the battlefield. */ public class TheWretched extends CardImpl { @@ -100,10 +106,15 @@ class EndOfAnyCombatTriggeredAbility extends TriggeredAbilityImpl { public EndOfAnyCombatTriggeredAbility copy() { return new EndOfAnyCombatTriggeredAbility(this); } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.END_COMBAT_STEP_PRE; + } @Override public boolean checkTrigger(GameEvent event, Game game) { - return (event.getType() == GameEvent.EventType.END_COMBAT_STEP_PRE); + return true; } @Override @@ -124,29 +135,44 @@ class TheWretchedEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent theWretched = game.getPermanent(source.getSourceId()); + Permanent theWretched = (Permanent) source.getSourceObjectIfItStillExists(game); if (theWretched == null) { return false; } - if (theWretched.isRemovedFromCombat()) { + if (theWretched.isRemovedFromCombat() || !theWretched.isAttacking()) { return false; } if (!new SourceOnBattlefieldControlUnchangedCondition().apply(game, source)) { return false; } - BlockedAttackerWatcher watcher = (BlockedAttackerWatcher) game.getState().getWatchers().get("BlockedAttackerWatcher"); - if (watcher != null) { - for (Permanent creature : game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), game)) { - if (watcher.creatureHasBlockedAttacker(theWretched, creature, game) - && !creature.isRemovedFromCombat()) { - ContinuousEffect effect = new ConditionalContinuousEffect(new GainControlTargetEffect(Duration.Custom, source.getControllerId()), new SourceOnBattlefieldControlUnchangedCondition(), "test"); - effect.setTargetPointer(new FixedTarget(creature.getId())); - game.addEffect(effect, source); + + for (CombatGroup combatGroup :game.getCombat().getGroups()) { + if (combatGroup.getAttackers().contains(source.getSourceId())) { + for(UUID creatureId: combatGroup.getBlockers()) { + Permanent blocker = game.getPermanent(creatureId); + if (blocker != null && blocker.getBlocking() > 0) { + ContinuousEffect effect = new ConditionalContinuousEffect(new GainControlTargetEffect(Duration.Custom, source.getControllerId()), new SourceOnBattlefieldControlUnchangedCondition(), ""); + effect.setTargetPointer(new FixedTarget(blocker.getId())); + game.addEffect(effect, source); + + } } } - return true; } - return false; + return true; +// BlockedAttackerWatcher watcher = (BlockedAttackerWatcher) game.getState().getWatchers().get("BlockedAttackerWatcher"); +// if (watcher != null) { +// for (Permanent creature : game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), game)) { +// if (watcher.creatureHasBlockedAttacker(theWretched, creature, game) +// && !creature.isRemovedFromCombat()) { +// ContinuousEffect effect = new ConditionalContinuousEffect(new GainControlTargetEffect(Duration.Custom, source.getControllerId()), new SourceOnBattlefieldControlUnchangedCondition(), "test"); +// effect.setTargetPointer(new FixedTarget(creature.getId())); +// game.addEffect(effect, source); +// } +// } +// return true; +// } +// return false; } @Override diff --git a/Mage.Sets/src/mage/sets/futuresight/BridgeFromBelow.java b/Mage.Sets/src/mage/sets/futuresight/BridgeFromBelow.java index 35daa721e3..0e8b36bb95 100644 --- a/Mage.Sets/src/mage/sets/futuresight/BridgeFromBelow.java +++ b/Mage.Sets/src/mage/sets/futuresight/BridgeFromBelow.java @@ -69,8 +69,6 @@ public class BridgeFromBelow extends CardImpl { super(ownerId, 81, "Bridge from Below", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{B}{B}{B}"); this.expansionSetCode = "FUT"; - this.color.setBlack(true); - // Whenever a nontoken creature is put into your graveyard from the battlefield, if Bridge from Below is in your graveyard, put a 2/2 black Zombie creature token onto the battlefield. this.addAbility(new BridgeFromBelowAbility(new CreateTokenEffect(new ZombieToken()), filter1)); // When a creature is put into an opponent's graveyard from the battlefield, if Bridge from Below is in your graveyard, exile Bridge from Below. @@ -106,15 +104,18 @@ class BridgeFromBelowAbility extends TriggeredAbilityImpl { return new BridgeFromBelowAbility(this); } + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { - ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { - Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); - if (permanent != null && filter.match(permanent, sourceId, controllerId, game)) { - return true; - } + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { + Permanent permanent = (Permanent) game.getLastKnownInformation(event.getTargetId(), Zone.BATTLEFIELD); + if (permanent != null && filter.match(permanent, sourceId, controllerId, game)) { + return true; } } return false; @@ -123,16 +124,11 @@ class BridgeFromBelowAbility extends TriggeredAbilityImpl { @Override public boolean checkInterveningIfClause(Game game) { Player controller = game.getPlayer(this.getControllerId()); - if(controller != null && controller.getGraveyard().contains(this.getSourceId())) { - return true; - } - return false; + return controller != null && controller.getGraveyard().contains(this.getSourceId()); } - - - + @Override public String getRule() { - return filter.getMessage() +", if Bridge from Below is in your graveyard, " + super.getRule(); + return filter.getMessage() +", if {this} is in your graveyard, " + super.getRule(); } } diff --git a/Mage.Sets/src/mage/sets/gatecrash/Voidwalk.java b/Mage.Sets/src/mage/sets/gatecrash/Voidwalk.java index ffa817321a..4fb09d4594 100644 --- a/Mage.Sets/src/mage/sets/gatecrash/Voidwalk.java +++ b/Mage.Sets/src/mage/sets/gatecrash/Voidwalk.java @@ -98,7 +98,7 @@ class VoidwalkEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(card.getOwnerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java b/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java index e6953319c8..3aeacc406d 100644 --- a/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java +++ b/Mage.Sets/src/mage/sets/guildpact/GhostCouncilOfOrzhova.java @@ -140,7 +140,7 @@ class GhostCouncilOfOrzhovaRemovingEffect extends OneShotEffect { new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/guildpact/Ghostway.java b/Mage.Sets/src/mage/sets/guildpact/Ghostway.java index ed6267976c..7570d3f132 100644 --- a/Mage.Sets/src/mage/sets/guildpact/Ghostway.java +++ b/Mage.Sets/src/mage/sets/guildpact/Ghostway.java @@ -95,7 +95,7 @@ class GhostwayEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (sourceObject != null && controller != null) { int numberCreatures = 0; - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); for (Permanent creature : game.getBattlefield().getActivePermanents(filter, source.getControllerId(), game)) { if (creature != null) { controller.moveCardToExileWithInfo(creature, exileId,sourceObject.getLogName(), source.getSourceId(), game, Zone.BATTLEFIELD); @@ -107,7 +107,7 @@ class GhostwayEffect extends OneShotEffect { new ReturnFromExileEffect(exileId, Zone.BATTLEFIELD, false)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/iceage/IcyPrison.java b/Mage.Sets/src/mage/sets/iceage/IcyPrison.java index 7f948ad3f0..a93871eba4 100644 --- a/Mage.Sets/src/mage/sets/iceage/IcyPrison.java +++ b/Mage.Sets/src/mage/sets/iceage/IcyPrison.java @@ -66,7 +66,7 @@ public class IcyPrison extends CardImpl { new DoUnlessAnyPlayerPaysEffect(new SacrificeSourceEffect(), new GenericManaCost(3)), TargetController.YOU, false)); // When Icy Prison leaves the battlefield, return the exiled card to the battlefield under its owner's control. - this.addAbility(new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD), false)); + this.addAbility(new LeavesBattlefieldTriggeredAbility(new ReturnFromExileForSourceEffect(Zone.BATTLEFIELD, false, true), false)); } diff --git a/Mage.Sets/src/mage/sets/iceage/Necropotence.java b/Mage.Sets/src/mage/sets/iceage/Necropotence.java index febd9fb860..1b76b90ba7 100644 --- a/Mage.Sets/src/mage/sets/iceage/Necropotence.java +++ b/Mage.Sets/src/mage/sets/iceage/Necropotence.java @@ -144,7 +144,7 @@ class NecropotenceEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(returnToHandeffect, TargetController.YOU); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/invasion/SpinalEmbrace.java b/Mage.Sets/src/mage/sets/invasion/SpinalEmbrace.java index 666508a757..1d7d6d44f7 100644 --- a/Mage.Sets/src/mage/sets/invasion/SpinalEmbrace.java +++ b/Mage.Sets/src/mage/sets/invasion/SpinalEmbrace.java @@ -149,7 +149,7 @@ class SpinalEmbraceAddDelayedEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/BrainMaggot.java b/Mage.Sets/src/mage/sets/journeyintonyx/BrainMaggot.java index 61880236b1..a1d27c47b5 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/BrainMaggot.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/BrainMaggot.java @@ -30,6 +30,7 @@ package mage.sets.journeyintonyx; import java.util.LinkedList; import java.util.UUID; import mage.MageInt; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.DelayedTriggeredAbility; import mage.abilities.common.EntersBattlefieldTriggeredAbility; @@ -49,6 +50,7 @@ import mage.game.Game; import mage.game.events.GameEvent; import mage.game.events.ZoneChangeEvent; import mage.game.permanent.Permanent; +import mage.game.permanent.PermanentToken; import mage.players.Player; import mage.target.TargetCard; import mage.target.common.TargetOpponent; @@ -117,7 +119,7 @@ class BrainMaggotExileEffect extends OneShotEffect { Card card = opponent.getHand().get(target.getFirstTarget(), game); // If source permanent leaves the battlefield before its triggered ability resolves, the target card won't be exiled. if (card != null && game.getState().getZone(source.getSourceId()) == Zone.BATTLEFIELD) { - controller.moveCardToExileWithInfo(card, CardUtil.getObjectExileZoneId(game, sourcePermanent), sourcePermanent.getName(), source.getSourceId(), game, Zone.HAND); + controller.moveCardToExileWithInfo(card, CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()), sourcePermanent.getName(), source.getSourceId(), game, Zone.HAND); } } } @@ -151,9 +153,14 @@ class BrainMaggotReturnExiledCreatureAbility extends DelayedTriggeredAbility { return new BrainMaggotReturnExiledCreatureAbility(this); } + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } + @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == GameEvent.EventType.ZONE_CHANGE && event.getTargetId().equals(this.getSourceId())) { + if (event.getTargetId().equals(this.getSourceId())) { ZoneChangeEvent zEvent = (ZoneChangeEvent) event; if (zEvent.getFromZone() == Zone.BATTLEFIELD) { return true; @@ -182,8 +189,10 @@ class BrainMaggotReturnExiledCreatureEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - ExileZone exile = game.getExile().getExileZone(CardUtil.getObjectExileZoneId(game, source.getSourceObject(game))); + MageObject sourceObject = source.getSourceObject(game); + if (sourceObject != null && controller != null) { + int zoneChangeCounter = (sourceObject instanceof PermanentToken) ? source.getSourceObjectZoneChangeCounter() : source.getSourceObjectZoneChangeCounter() -1; + ExileZone exile = game.getExile().getExileZone(CardUtil.getExileZoneId(game, source.getSourceId(), zoneChangeCounter)); Permanent sourcePermanent = game.getPermanentOrLKIBattlefield(source.getSourceId()); if (exile != null && sourcePermanent != null) { LinkedList cards = new LinkedList<>(exile); diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/Skybind.java b/Mage.Sets/src/mage/sets/journeyintonyx/Skybind.java index cb260afb96..93ba4ddb91 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/Skybind.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/Skybind.java @@ -100,7 +100,7 @@ class SkybindEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/Twinflame.java b/Mage.Sets/src/mage/sets/journeyintonyx/Twinflame.java index 9878bca7aa..1b1556ddb8 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/Twinflame.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/Twinflame.java @@ -112,7 +112,7 @@ class TwinflameCopyEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java b/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java index 6b95f6d498..71aa6c63f4 100644 --- a/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java +++ b/Mage.Sets/src/mage/sets/judgment/WormfangDrake.java @@ -128,7 +128,7 @@ class WormfangDrakeExileCost extends CostImpl { MageObject sourceObject = ability.getSourceObject(game); if (controller != null && sourceObject != null) { if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) { - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, ability.getSourceId(), ability.getSourceObjectZoneChangeCounter()); for (UUID targetId: targets.get(0).getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent == null) { diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/AnafenzaTheForemost.java b/Mage.Sets/src/mage/sets/khansoftarkir/AnafenzaTheForemost.java index a46a4e33e4..e8d8845684 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/AnafenzaTheForemost.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/AnafenzaTheForemost.java @@ -72,9 +72,6 @@ public class AnafenzaTheForemost extends CardImpl { this.subtype.add("Human"); this.subtype.add("Soldier"); - this.color.setGreen(true); - this.color.setBlack(true); - this.color.setWhite(true); this.power = new MageInt(4); this.toughness = new MageInt(4); diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/KheruLichLord.java b/Mage.Sets/src/mage/sets/khansoftarkir/KheruLichLord.java index f1c932fd2d..7c18472e6f 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/KheruLichLord.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/KheruLichLord.java @@ -141,7 +141,7 @@ class KheruLichLordEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); KheruLichLordReplacementEffect replacementEffect = new KheruLichLordReplacementEffect(); diff --git a/Mage.Sets/src/mage/sets/khansoftarkir/MeanderingTowershell.java b/Mage.Sets/src/mage/sets/khansoftarkir/MeanderingTowershell.java index 7b131ddf07..c0d05537b9 100644 --- a/Mage.Sets/src/mage/sets/khansoftarkir/MeanderingTowershell.java +++ b/Mage.Sets/src/mage/sets/khansoftarkir/MeanderingTowershell.java @@ -118,7 +118,7 @@ class MeanderingTowershellEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtBeginningNextDeclareAttackersStepNextTurnDelayedTriggeredAbility(); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/legends/Abomination.java b/Mage.Sets/src/mage/sets/legends/Abomination.java index 746db1da82..cc5af6221d 100644 --- a/Mage.Sets/src/mage/sets/legends/Abomination.java +++ b/Mage.Sets/src/mage/sets/legends/Abomination.java @@ -154,7 +154,7 @@ class AbominationEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(permanent.getId()); delayedAbility.setControllerId(event.getControllerId()); - delayedAbility.setSourceObject(event.getSourceObject(game)); + delayedAbility.setSourceObject(event.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(permanent.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/legends/HazezonTamar.java b/Mage.Sets/src/mage/sets/legends/HazezonTamar.java index a45ff2e38f..11a0a7b423 100644 --- a/Mage.Sets/src/mage/sets/legends/HazezonTamar.java +++ b/Mage.Sets/src/mage/sets/legends/HazezonTamar.java @@ -117,7 +117,7 @@ class HazezonTamarEntersEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextUpkeepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/limitedalpha/Berserk.java b/Mage.Sets/src/mage/sets/limitedalpha/Berserk.java index 14606f15d4..904cd5be44 100644 --- a/Mage.Sets/src/mage/sets/limitedalpha/Berserk.java +++ b/Mage.Sets/src/mage/sets/limitedalpha/Berserk.java @@ -174,7 +174,7 @@ class BerserkDestroyEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/limitedalpha/Cockatrice.java b/Mage.Sets/src/mage/sets/limitedalpha/Cockatrice.java index 0d3facd1af..066dc7eaa2 100644 --- a/Mage.Sets/src/mage/sets/limitedalpha/Cockatrice.java +++ b/Mage.Sets/src/mage/sets/limitedalpha/Cockatrice.java @@ -136,7 +136,7 @@ class CockatriceEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(targetCreature.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/limitedalpha/ThicketBasilisk.java b/Mage.Sets/src/mage/sets/limitedalpha/ThicketBasilisk.java index 630133e654..aaab3b720d 100644 --- a/Mage.Sets/src/mage/sets/limitedalpha/ThicketBasilisk.java +++ b/Mage.Sets/src/mage/sets/limitedalpha/ThicketBasilisk.java @@ -133,7 +133,7 @@ class ThicketBasiliskEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(targetCreature.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/magic2010/DragonWhelp.java b/Mage.Sets/src/mage/sets/magic2010/DragonWhelp.java index 883eb2b13c..b637bdd578 100644 --- a/Mage.Sets/src/mage/sets/magic2010/DragonWhelp.java +++ b/Mage.Sets/src/mage/sets/magic2010/DragonWhelp.java @@ -103,7 +103,7 @@ class DragonWhelpEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new DragonWhelpDelayedEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } amount++; diff --git a/Mage.Sets/src/mage/sets/magic2010/StoneGiant.java b/Mage.Sets/src/mage/sets/magic2010/StoneGiant.java index 889d19d223..62d8025e73 100644 --- a/Mage.Sets/src/mage/sets/magic2010/StoneGiant.java +++ b/Mage.Sets/src/mage/sets/magic2010/StoneGiant.java @@ -134,7 +134,7 @@ class StoneGiantEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/magic2011/MystifyingMaze.java b/Mage.Sets/src/mage/sets/magic2011/MystifyingMaze.java index fb994eb692..cf47f9b2bb 100644 --- a/Mage.Sets/src/mage/sets/magic2011/MystifyingMaze.java +++ b/Mage.Sets/src/mage/sets/magic2011/MystifyingMaze.java @@ -101,7 +101,7 @@ class MystifyingMazeEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD, true)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/magic2011/PrimevalTitan.java b/Mage.Sets/src/mage/sets/magic2011/PrimevalTitan.java index 3f7bd8a1f7..60e79d7a2f 100644 --- a/Mage.Sets/src/mage/sets/magic2011/PrimevalTitan.java +++ b/Mage.Sets/src/mage/sets/magic2011/PrimevalTitan.java @@ -54,7 +54,7 @@ public class PrimevalTitan extends CardImpl { super(ownerId, 192, "Primeval Titan", Rarity.MYTHIC, new CardType[]{CardType.CREATURE}, "{4}{G}{G}"); this.expansionSetCode = "M11"; this.subtype.add("Giant"); - this.color.setGreen(true); + this.power = new MageInt(6); this.toughness = new MageInt(6); @@ -90,15 +90,17 @@ class PrimevalTitanAbility extends TriggeredAbilityImpl { return new PrimevalTitanAbility(this); } + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == EventType.ATTACKER_DECLARED || event.getType() == EventType.ENTERS_THE_BATTLEFIELD; + } + @Override public boolean checkTrigger(GameEvent event, Game game) { if (event.getType() == EventType.ATTACKER_DECLARED && event.getSourceId().equals(this.getSourceId())) { return true; } - if (event.getType() == EventType.ENTERS_THE_BATTLEFIELD && event.getTargetId().equals(this.getSourceId()) ) { - return true; - } - return false; + return event.getType() == EventType.ENTERS_THE_BATTLEFIELD && event.getTargetId().equals(this.getSourceId()); } @Override diff --git a/Mage.Sets/src/mage/sets/magic2014/BanisherPriest.java b/Mage.Sets/src/mage/sets/magic2014/BanisherPriest.java index 17b5cbcdbb..527bac746a 100644 --- a/Mage.Sets/src/mage/sets/magic2014/BanisherPriest.java +++ b/Mage.Sets/src/mage/sets/magic2014/BanisherPriest.java @@ -103,11 +103,11 @@ class BanisherPriestExileEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Permanent permanent = game.getPermanent(source.getSourceId()); + Permanent permanent = (Permanent) source.getSourceObjectIfItStillExists(game); // If Banisher Priest leaves the battlefield before its triggered ability resolves, // the target creature won't be exiled. if (permanent != null) { - return new ExileTargetEffect(CardUtil.getObjectExileZoneId(game, permanent), permanent.getLogName()).apply(game, source); + return new ExileTargetEffect(CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()), permanent.getLogName()).apply(game, source); } return false; } diff --git a/Mage.Sets/src/mage/sets/magic2015/Phytotitan.java b/Mage.Sets/src/mage/sets/magic2015/Phytotitan.java index e8aef60a63..54098ff347 100644 --- a/Mage.Sets/src/mage/sets/magic2015/Phytotitan.java +++ b/Mage.Sets/src/mage/sets/magic2015/Phytotitan.java @@ -94,7 +94,7 @@ class PhytotitanEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfYourNextUpkeepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/mirage/RockBasilisk.java b/Mage.Sets/src/mage/sets/mirage/RockBasilisk.java index 2da903f01e..fcf917cd3d 100644 --- a/Mage.Sets/src/mage/sets/mirage/RockBasilisk.java +++ b/Mage.Sets/src/mage/sets/mirage/RockBasilisk.java @@ -135,7 +135,7 @@ class RockBasiliskEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(targetCreature.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/mirage/ShallowGrave.java b/Mage.Sets/src/mage/sets/mirage/ShallowGrave.java index f48674a193..0818913401 100644 --- a/Mage.Sets/src/mage/sets/mirage/ShallowGrave.java +++ b/Mage.Sets/src/mage/sets/mirage/ShallowGrave.java @@ -113,7 +113,7 @@ class ShallowGraveEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/GruesomeEncore.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/GruesomeEncore.java index d7f56e4088..7ce2921115 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/GruesomeEncore.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/GruesomeEncore.java @@ -106,7 +106,7 @@ class GruesomeEncoreEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/mirrodinbesieged/VirulentWound.java b/Mage.Sets/src/mage/sets/mirrodinbesieged/VirulentWound.java index a05353ec26..b5382f5910 100644 --- a/Mage.Sets/src/mage/sets/mirrodinbesieged/VirulentWound.java +++ b/Mage.Sets/src/mage/sets/mirrodinbesieged/VirulentWound.java @@ -97,7 +97,7 @@ class VirulentWoundEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new VirulentWoundDelayedTriggeredAbility(source.getFirstTarget()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/nemesis/ParallaxWave.java b/Mage.Sets/src/mage/sets/nemesis/ParallaxWave.java index 2bf3c7107d..3e902629d8 100644 --- a/Mage.Sets/src/mage/sets/nemesis/ParallaxWave.java +++ b/Mage.Sets/src/mage/sets/nemesis/ParallaxWave.java @@ -45,6 +45,7 @@ import mage.constants.Zone; import mage.counters.CounterType; import mage.game.ExileZone; import mage.game.Game; +import mage.game.permanent.PermanentToken; import mage.players.Player; import mage.target.common.TargetCreaturePermanent; import mage.util.CardUtil; @@ -104,7 +105,8 @@ class ParallaxWaveEffect extends OneShotEffect { public boolean apply(Game game, Ability source) { MageObject sourceObject = source.getSourceObject(game); if (sourceObject != null) { - UUID exileZoneId = CardUtil.getObjectExileZoneId(game, sourceObject); + int zoneChangeCounter = (sourceObject instanceof PermanentToken) ? source.getSourceObjectZoneChangeCounter() : source.getSourceObjectZoneChangeCounter() -1; + UUID exileZoneId = CardUtil.getExileZoneId(game, source.getSourceId(), zoneChangeCounter); if (exileZoneId != null) { ExileZone exileZone = game.getExile().getExileZone(exileZoneId); if (exileZone != null) { diff --git a/Mage.Sets/src/mage/sets/newphyrexia/KarnLiberated.java b/Mage.Sets/src/mage/sets/newphyrexia/KarnLiberated.java index 261fd6cf29..65334e8147 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/KarnLiberated.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/KarnLiberated.java @@ -149,7 +149,7 @@ class KarnLiberatedEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new KarnLiberatedDelayedTriggeredAbility(exileId); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); game.start(null); return true; diff --git a/Mage.Sets/src/mage/sets/newphyrexia/MyrSuperion.java b/Mage.Sets/src/mage/sets/newphyrexia/MyrSuperion.java index 364e0f6238..e7f2738eac 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/MyrSuperion.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/MyrSuperion.java @@ -30,6 +30,8 @@ package mage.sets.newphyrexia; import java.util.UUID; import mage.MageInt; import mage.abilities.StaticAbility; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.common.InfoEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; @@ -53,7 +55,7 @@ public class MyrSuperion extends CardImpl { this.toughness = new MageInt(6); // Spend only mana produced by creatures to cast Myr Superion. - this.addAbility(new MyrSuperionStaticAbility()); + this.addAbility(new SimpleStaticAbility(Zone.ALL, new InfoEffect("Spend only mana produced by creatures to cast {this}"))); this.getSpellAbility().getManaCostsToPay().setSourceFilter(filter); this.getSpellAbility().getManaCosts().setSourceFilter(filter); } @@ -67,25 +69,3 @@ public class MyrSuperion extends CardImpl { return new MyrSuperion(this); } } - -class MyrSuperionStaticAbility extends StaticAbility { - - public MyrSuperionStaticAbility() { - super(Zone.STACK, null); - } - - public MyrSuperionStaticAbility(MyrSuperionStaticAbility ability) { - super(ability); - } - - @Override - public MyrSuperionStaticAbility copy() { - return new MyrSuperionStaticAbility(this); - } - - @Override - public String getRule() { - return "Spend only mana produced by creatures to cast {this}."; - } - -} diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PostmortemLunge.java b/Mage.Sets/src/mage/sets/newphyrexia/PostmortemLunge.java index c7274afd37..d7dc520a4a 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PostmortemLunge.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PostmortemLunge.java @@ -118,7 +118,7 @@ class PostmortemLungeEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/newphyrexia/PraetorsGrasp.java b/Mage.Sets/src/mage/sets/newphyrexia/PraetorsGrasp.java index ca58c5fd1c..a9015ce170 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/PraetorsGrasp.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/PraetorsGrasp.java @@ -103,7 +103,7 @@ class PraetorsGraspEffect extends OneShotEffect { if (controller.searchLibrary(target, game, opponent.getId())) { UUID targetId = target.getFirstTarget(); Card card = opponent.getLibrary().getCard(targetId, game); - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (card != null && exileId != null) { game.informPlayers(controller.getName() + " moves the searched card face down to exile"); card.moveToExile(exileId, sourceObject.getName(), source.getSourceId(), game); diff --git a/Mage.Sets/src/mage/sets/onslaught/AstralSlide.java b/Mage.Sets/src/mage/sets/onslaught/AstralSlide.java index 35423169e2..7995162ebe 100644 --- a/Mage.Sets/src/mage/sets/onslaught/AstralSlide.java +++ b/Mage.Sets/src/mage/sets/onslaught/AstralSlide.java @@ -97,7 +97,7 @@ class AstralSlideEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(exileId, Zone.BATTLEFIELD, false)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/HornetCannon.java b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/HornetCannon.java index 58d7ae7178..921db990ae 100644 --- a/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/HornetCannon.java +++ b/Mage.Sets/src/mage/sets/phyrexiavsthecoalition/HornetCannon.java @@ -98,7 +98,7 @@ class HornetCannonEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(destroyEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/planarchaos/FatalFrenzy.java b/Mage.Sets/src/mage/sets/planarchaos/FatalFrenzy.java index d2ff2f038c..0e50c4eb3c 100644 --- a/Mage.Sets/src/mage/sets/planarchaos/FatalFrenzy.java +++ b/Mage.Sets/src/mage/sets/planarchaos/FatalFrenzy.java @@ -100,7 +100,7 @@ class FatalFrenzyEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/planeshift/SkyshipWeatherlight.java b/Mage.Sets/src/mage/sets/planeshift/SkyshipWeatherlight.java index ac5662ad6b..077bd3a69b 100644 --- a/Mage.Sets/src/mage/sets/planeshift/SkyshipWeatherlight.java +++ b/Mage.Sets/src/mage/sets/planeshift/SkyshipWeatherlight.java @@ -132,7 +132,7 @@ class SkyshipWeatherlightEffect2 extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = source.getSourceObject(game); if (sourceObject != null && controller != null) { - ExileZone exZone = game.getExile().getExileZone(CardUtil.getObjectExileZoneId(game, sourceObject)); + ExileZone exZone = game.getExile().getExileZone(CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter())); if (exZone != null) { Card card = exZone.getRandom(game); controller.moveCardToHandWithInfo(card, source.getSourceId(), game, Zone.EXILED); diff --git a/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java b/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java index c8f82a8e59..cd1acf681d 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/GraveBetrayal.java @@ -114,7 +114,7 @@ class GraveBetrayalTriggeredAbility extends TriggeredAbilityImpl { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(this.getSourceId()); delayedAbility.setControllerId(this.getControllerId()); - delayedAbility.setSourceObject(this.getSourceObject(game)); + delayedAbility.setSourceObject(this.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/returntoravnica/TrostaniSelesnyasVoice.java b/Mage.Sets/src/mage/sets/returntoravnica/TrostaniSelesnyasVoice.java index a30212e429..4a89055ee6 100644 --- a/Mage.Sets/src/mage/sets/returntoravnica/TrostaniSelesnyasVoice.java +++ b/Mage.Sets/src/mage/sets/returntoravnica/TrostaniSelesnyasVoice.java @@ -28,6 +28,8 @@ package mage.sets.returntoravnica; +import java.util.UUID; +import static javax.xml.bind.JAXBIntrospector.getValue; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.TriggeredAbilityImpl; @@ -47,8 +49,6 @@ import mage.game.events.GameEvent; import mage.game.permanent.Permanent; import mage.players.Player; -import java.util.UUID; - /** * * @author LevelX2 @@ -60,8 +60,7 @@ public class TrostaniSelesnyasVoice extends CardImpl { this.expansionSetCode = "RTR"; this.supertype.add("Legendary"); this.subtype.add("Dryad"); - this.color.setGreen(true); - this.color.setWhite(true); + this.power = new MageInt(2); this.toughness = new MageInt(5); @@ -102,6 +101,7 @@ class TrostaniSelesnyasVoiceTriggeredAbility extends TriggeredAbilityImpl { && permanent.getControllerId().equals(this.controllerId) && event.getTargetId() != this.getSourceId()) { Effect effect = this.getEffects().get(0); + // life is determined during resolution so it has to be retrieved there (e.g. Giant Growth before resolution) effect.setValue("lifeSource", event.getTargetId()); effect.setValue("zoneChangeCounter", permanent.getZoneChangeCounter(game)); return true; @@ -112,7 +112,7 @@ class TrostaniSelesnyasVoiceTriggeredAbility extends TriggeredAbilityImpl { @Override public String getRule() { - return "Whenever another creature enters the battlefield under your control, you gain life equal to that creature's toughness."; + return "Whenever another creature enters the battlefield under your control, " + super.getRule(); } @Override @@ -125,7 +125,7 @@ class TrostaniSelesnyasVoiceEffect extends OneShotEffect { public TrostaniSelesnyasVoiceEffect() { super(Outcome.GainLife); - staticText = "you gain life equal to its toughness"; + staticText = "you gain life equal to that creature's toughness"; } public TrostaniSelesnyasVoiceEffect(final TrostaniSelesnyasVoiceEffect effect) { @@ -155,4 +155,4 @@ class TrostaniSelesnyasVoiceEffect extends OneShotEffect { } return false; } -} \ No newline at end of file +} diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ArrogantBloodlord.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ArrogantBloodlord.java index 8cc722bb30..568f7bba13 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/ArrogantBloodlord.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/ArrogantBloodlord.java @@ -89,22 +89,24 @@ class ArrogantBloodlordTriggeredAbility extends TriggeredAbilityImpl { return new ArrogantBloodlordTriggeredAbility(this); } + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.BLOCKER_DECLARED; + } + @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == GameEvent.EventType.BLOCKER_DECLARED) { - Permanent blocker = game.getPermanent(event.getSourceId()); - Permanent blocked = game.getPermanent(event.getTargetId()); - Permanent arrogantBloodlord = game.getPermanent(sourceId); - if (blocker != null && blocker != arrogantBloodlord - && blocker.getPower().getValue() < 2 - && blocked == arrogantBloodlord) { - return true; - } - if (blocker != null && blocker == arrogantBloodlord - && game.getPermanent(event.getTargetId()).getPower().getValue() < 2) { - return true; - } - return false; + Permanent blocker = game.getPermanent(event.getSourceId()); + Permanent blocked = game.getPermanent(event.getTargetId()); + Permanent arrogantBloodlord = game.getPermanent(sourceId); + if (blocker != null && blocker != arrogantBloodlord + && blocker.getPower().getValue() < 2 + && blocked == arrogantBloodlord) { + return true; + } + if (blocker != null && blocker == arrogantBloodlord + && game.getPermanent(event.getTargetId()).getPower().getValue() < 2) { + return true; } return false; } @@ -133,7 +135,7 @@ class ArrogantBloodlordEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(source.getSourceId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SplinterTwin.java b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SplinterTwin.java index dd96511130..935ebb8b7b 100644 --- a/Mage.Sets/src/mage/sets/riseoftheeldrazi/SplinterTwin.java +++ b/Mage.Sets/src/mage/sets/riseoftheeldrazi/SplinterTwin.java @@ -119,7 +119,7 @@ class SplinterTwinEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/FeralLightning.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/FeralLightning.java index 0ba4d846ea..9b97fb0cf5 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/FeralLightning.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/FeralLightning.java @@ -101,7 +101,7 @@ class FeralLightningEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/FootstepsOfTheGoryo.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/FootstepsOfTheGoryo.java index 75e00fea63..7b95bd8050 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/FootstepsOfTheGoryo.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/FootstepsOfTheGoryo.java @@ -110,7 +110,7 @@ class FootstepsOfTheGoryoEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/InameAsOne.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/InameAsOne.java index 79a257de5d..e7246a9566 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/InameAsOne.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/InameAsOne.java @@ -121,7 +121,7 @@ class InameAsOneEffect extends OneShotEffect { // exile it, not that it actually gets to the exile zone. This is similar to how destroying a creature // (with, for example, Rest in Peace) doesn't necessarily ensure that creature will end up in the graveyard; // it just so happens that the action of exiling something and the exile zone both use the same word: "exile". - new ExileSourceEffect(Zone.GRAVEYARD).apply(game, source); + new ExileSourceEffect().apply(game, source); return new ReturnFromGraveyardToBattlefieldTargetEffect().apply(game, source); } return true; diff --git a/Mage.Sets/src/mage/sets/saviorsofkamigawa/WineOfBloodAndIron.java b/Mage.Sets/src/mage/sets/saviorsofkamigawa/WineOfBloodAndIron.java index 97f21d2197..2a831a03a0 100644 --- a/Mage.Sets/src/mage/sets/saviorsofkamigawa/WineOfBloodAndIron.java +++ b/Mage.Sets/src/mage/sets/saviorsofkamigawa/WineOfBloodAndIron.java @@ -100,7 +100,7 @@ class WineOfBloodAndIronEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ArgentSphinx.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ArgentSphinx.java index c92a61e319..dd93aadc94 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ArgentSphinx.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ArgentSphinx.java @@ -99,7 +99,7 @@ class ArgentSphinxEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/GlimmerpointStag.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/GlimmerpointStag.java index a04acf096c..d50ba2057c 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/GlimmerpointStag.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/GlimmerpointStag.java @@ -100,7 +100,7 @@ class GlimmerpointStagEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java index 8ef9e3b129..47c8fb0af1 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/MimicVat.java @@ -212,7 +212,7 @@ class MimicVatCreateTokenEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/OgreGeargrabber.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/OgreGeargrabber.java index 247252a0f6..14f91f126d 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/OgreGeargrabber.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/OgreGeargrabber.java @@ -111,7 +111,7 @@ class OgreGeargrabberEffect1 extends OneShotEffect { OgreGeargrabberDelayedTriggeredAbility delayedAbility = new OgreGeargrabberDelayedTriggeredAbility(equipmentId); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); Permanent equipment = game.getPermanent(equipmentId); if (equipment != null) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java index b432a0c9ca..9100da777f 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/VenserTheSojourner.java @@ -136,7 +136,7 @@ class VenserTheSojournerEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ElementalMastery.java b/Mage.Sets/src/mage/sets/shadowmoor/ElementalMastery.java index 5840b30eac..f09c9b30ed 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/ElementalMastery.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/ElementalMastery.java @@ -119,7 +119,7 @@ class ElementalMasteryEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/shadowmoor/Giantbaiting.java b/Mage.Sets/src/mage/sets/shadowmoor/Giantbaiting.java index 8a291f6b3e..43ca95f1ff 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/Giantbaiting.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/Giantbaiting.java @@ -97,7 +97,7 @@ class GiantbaitingEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/ImpromptuRaid.java b/Mage.Sets/src/mage/sets/shadowmoor/ImpromptuRaid.java index a2d7cde7e7..583e2c8601 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/ImpromptuRaid.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/ImpromptuRaid.java @@ -125,7 +125,7 @@ class ImpromptuRaidEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowWitch.java b/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowWitch.java index cd282e9c85..a471b42244 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowWitch.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/MistmeadowWitch.java @@ -99,7 +99,7 @@ class MistmeadowWitchEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/PuppeteerClique.java b/Mage.Sets/src/mage/sets/shadowmoor/PuppeteerClique.java index 1f1452805e..c9853a17c9 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/PuppeteerClique.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/PuppeteerClique.java @@ -130,7 +130,7 @@ class PuppeteerCliqueEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect, TargetController.YOU); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); result = true; } diff --git a/Mage.Sets/src/mage/sets/shadowmoor/WickerWarcrawler.java b/Mage.Sets/src/mage/sets/shadowmoor/WickerWarcrawler.java index ccb2fc01d9..4ea92e7207 100644 --- a/Mage.Sets/src/mage/sets/shadowmoor/WickerWarcrawler.java +++ b/Mage.Sets/src/mage/sets/shadowmoor/WickerWarcrawler.java @@ -89,7 +89,7 @@ class WickerWarcrawlerEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new AddCountersTargetEffect(CounterType.M1M1.createInstance())); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(source.getSourceId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/shardsofalara/GatherSpecimens.java b/Mage.Sets/src/mage/sets/shardsofalara/GatherSpecimens.java index 8ceda7ed95..34e541b260 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/GatherSpecimens.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/GatherSpecimens.java @@ -90,15 +90,6 @@ class GatherSpecimensReplacementEffect extends ReplacementEffectImpl { return true; } - @Override - public boolean replaceEvent(GameEvent event, Ability source, Game game) { - Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - event.setPlayerId(controller.getId()); - } - return false; - } - @Override public boolean checksEventType(GameEvent event, Game game) { return event.getType() == GameEvent.EventType.ZONE_CHANGE || event.getType() == GameEvent.EventType.CREATE_TOKEN; @@ -107,7 +98,7 @@ class GatherSpecimensReplacementEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { if (event.getType() == GameEvent.EventType.ZONE_CHANGE - && ((ZoneChangeEvent) event).getToZone() == Zone.BATTLEFIELD) { + && ((ZoneChangeEvent) event).getToZone().match(Zone.BATTLEFIELD)) { Card card = game.getCard(event.getTargetId()); if (card.getCardType().contains(CardType.CREATURE)) { // TODO: Bestow Card cast as Enchantment probably not handled correctly Player controller = game.getPlayer(source.getControllerId()); @@ -124,4 +115,13 @@ class GatherSpecimensReplacementEffect extends ReplacementEffectImpl { } return false; } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + event.setPlayerId(controller.getId()); + } + return false; + } } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/Skeletonize.java b/Mage.Sets/src/mage/sets/shardsofalara/Skeletonize.java index 3dfa27e93e..5ff6e3656f 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/Skeletonize.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/Skeletonize.java @@ -103,7 +103,7 @@ class SkeletonizeEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new SkeletonizeDelayedTriggeredAbility(); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/shardsofalara/TidehollowSculler.java b/Mage.Sets/src/mage/sets/shardsofalara/TidehollowSculler.java index c290aba044..38ea11a051 100644 --- a/Mage.Sets/src/mage/sets/shardsofalara/TidehollowSculler.java +++ b/Mage.Sets/src/mage/sets/shardsofalara/TidehollowSculler.java @@ -44,6 +44,7 @@ import mage.filter.common.FilterNonlandCard; import mage.game.ExileZone; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.game.permanent.PermanentToken; import mage.players.Player; import mage.target.TargetCard; import mage.target.common.TargetOpponent; @@ -149,7 +150,8 @@ class TidehollowScullerLeaveEffect extends OneShotEffect { Player controller = game.getPlayer(source.getControllerId()); MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { - ExileZone exZone = game.getExile().getExileZone(CardUtil.getObjectExileZoneId(game, sourceObject)); + int zoneChangeCounter = (sourceObject instanceof PermanentToken) ? source.getSourceObjectZoneChangeCounter() : source.getSourceObjectZoneChangeCounter() -1; + ExileZone exZone = game.getExile().getExileZone(CardUtil.getExileZoneId(game, source.getSourceId(), zoneChangeCounter)); if (exZone != null) { for (Card card : exZone.getCards(game)) { if (card != null) { diff --git a/Mage.Sets/src/mage/sets/stronghold/SacredGround.java b/Mage.Sets/src/mage/sets/stronghold/SacredGround.java index f7ab63d010..08846966fe 100644 --- a/Mage.Sets/src/mage/sets/stronghold/SacredGround.java +++ b/Mage.Sets/src/mage/sets/stronghold/SacredGround.java @@ -92,11 +92,8 @@ class SacredGroundTriggeredAbility extends TriggeredAbilityImpl { if (Zone.BATTLEFIELD.equals(zce.getFromZone()) && Zone.GRAVEYARD.equals(zce.getToZone())) { Permanent targetPermanent = zce.getTarget(); if (targetPermanent.getCardType().contains(CardType.LAND) && targetPermanent.getControllerId().equals(getControllerId())) { - MageObject mageObject = game.getShortLivingLKI(event.getSourceId(), Zone.STACK); - if (mageObject instanceof StackObject) { - getEffects().get(0).setTargetPointer(new FixedTarget(targetPermanent.getId())); - return true; - } + getEffects().get(0).setTargetPointer(new FixedTarget(targetPermanent.getId())); + return true; } } } diff --git a/Mage.Sets/src/mage/sets/tempest/CorpseDance.java b/Mage.Sets/src/mage/sets/tempest/CorpseDance.java index e9c9bf61c5..3476d2477c 100644 --- a/Mage.Sets/src/mage/sets/tempest/CorpseDance.java +++ b/Mage.Sets/src/mage/sets/tempest/CorpseDance.java @@ -116,7 +116,7 @@ class CorpseDanceEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java b/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java index 2c525b626d..f7c0de990e 100644 --- a/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java +++ b/Mage.Sets/src/mage/sets/tempest/OracleEnVec.java @@ -126,7 +126,7 @@ class OracleEnVecEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new OracleEnVecDelayedTriggeredAbility(game.getTurnNum(), target.getTargets()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/thedark/Venom.java b/Mage.Sets/src/mage/sets/thedark/Venom.java index 316dceafcd..eb2c763a83 100644 --- a/Mage.Sets/src/mage/sets/thedark/Venom.java +++ b/Mage.Sets/src/mage/sets/thedark/Venom.java @@ -144,7 +144,7 @@ class VenomEffect extends OneShotEffect { AtTheEndOfCombatDelayedTriggeredAbility delayedAbility = new AtTheEndOfCombatDelayedTriggeredAbility(new DestroyTargetEffect()); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(targetCreature.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/theros/AshiokNightmareWeaver.java b/Mage.Sets/src/mage/sets/theros/AshiokNightmareWeaver.java index cf8ebdd665..28efbbfeef 100644 --- a/Mage.Sets/src/mage/sets/theros/AshiokNightmareWeaver.java +++ b/Mage.Sets/src/mage/sets/theros/AshiokNightmareWeaver.java @@ -265,7 +265,7 @@ class AshiokNightmareWeaverExileAllEffect extends OneShotEffect { if (sourceObject == null || controller == null) { return false; } - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (exileId == null) { return false; } diff --git a/Mage.Sets/src/mage/sets/theros/GiftOfImmortality.java b/Mage.Sets/src/mage/sets/theros/GiftOfImmortality.java index 7e99744ca4..29fab265fd 100644 --- a/Mage.Sets/src/mage/sets/theros/GiftOfImmortality.java +++ b/Mage.Sets/src/mage/sets/theros/GiftOfImmortality.java @@ -113,7 +113,7 @@ class GiftOfImmortalityEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/theros/PyxisOfPandemonium.java b/Mage.Sets/src/mage/sets/theros/PyxisOfPandemonium.java index 1daa693699..bd01983622 100644 --- a/Mage.Sets/src/mage/sets/theros/PyxisOfPandemonium.java +++ b/Mage.Sets/src/mage/sets/theros/PyxisOfPandemonium.java @@ -115,7 +115,7 @@ class PyxisOfPandemoniumExileEffect extends OneShotEffect { if (player != null) { if (player.getLibrary().size() > 0) { Card card = player.getLibrary().getFromTop(game); - String exileKey = playerId.toString() + CardUtil.getObjectExileZoneId(game, sourceObject).toString(); + String exileKey = playerId.toString() + CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()).toString(); UUID exileId = exileIds.get(exileKey); if (exileId == null) { exileId = UUID.randomUUID(); @@ -167,7 +167,7 @@ class PyxisOfPandemoniumPutOntoBattlefieldEffect extends OneShotEffect { for (UUID playerId : controller.getInRange()) { Player player = game.getPlayer(playerId); if (player != null) { - String exileKey = playerId.toString() + CardUtil.getObjectExileZoneId(game, sourceObject).toString(); + String exileKey = playerId.toString() + CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()).toString(); UUID exileId = exileIds.get(exileKey); if (exileId != null) { ExileZone exileZone = game.getState().getExile().getExileZone(exileId); diff --git a/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java b/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java index 1e50ea9d0c..3640058e17 100644 --- a/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java +++ b/Mage.Sets/src/mage/sets/theros/RescueFromTheUnderworld.java @@ -146,7 +146,7 @@ class RescueFromTheUnderworldCreateDelayedTriggeredAbilityEffect extends OneShot DelayedTriggeredAbility delayedAbility = (DelayedTriggeredAbility) ability.copy(); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getTargets().addAll(source.getTargets()); for(Effect effect : delayedAbility.getEffects()) { effect.getTargetPointer().init(game, source); diff --git a/Mage.Sets/src/mage/sets/theros/UnderworldCerberus.java b/Mage.Sets/src/mage/sets/theros/UnderworldCerberus.java index 9e50047530..4d43827ea8 100644 --- a/Mage.Sets/src/mage/sets/theros/UnderworldCerberus.java +++ b/Mage.Sets/src/mage/sets/theros/UnderworldCerberus.java @@ -59,15 +59,15 @@ public class UnderworldCerberus extends CardImpl { this.expansionSetCode = "THS"; this.subtype.add("Hound"); - this.color.setRed(true); - this.color.setBlack(true); this.power = new MageInt(6); this.toughness = new MageInt(6); // Underworld Cerberus can't be blocked except by three or more creatures. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new CantBeBlockedByOneEffect(3))); + // Cards in graveyards can't be the targets of spells or abilities. this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new UnderworldCerberusEffect())); + // When Underworld Cerberus dies, exile it and each player returns all creature cards from his or her graveyard to his or her hand. Ability ability = new DiesTriggeredAbility(new ExileSourceEffect()); ability.addEffect(new ReturnToHandFromGraveyardAllEffect(new FilterCreatureCard("creature cards"))); @@ -113,10 +113,10 @@ class UnderworldCerberusEffect extends ContinuousRuleModifyingEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { Card targetCard = game.getCard(event.getTargetId()); - StackObject stackObject = (StackObject) game.getStack().getStackObject(event.getSourceId()); + StackObject stackObject = game.getStack().getStackObject(event.getSourceId()); if (targetCard != null && stackObject != null) { Zone zone = game.getState().getZone(targetCard.getId()); - if (zone != null && (zone == Zone.GRAVEYARD)) { + if (zone != null && zone == Zone.GRAVEYARD) { return true; } } diff --git a/Mage.Sets/src/mage/sets/theros/WhipOfErebos.java b/Mage.Sets/src/mage/sets/theros/WhipOfErebos.java index 97b1633f23..ca4d377c13 100644 --- a/Mage.Sets/src/mage/sets/theros/WhipOfErebos.java +++ b/Mage.Sets/src/mage/sets/theros/WhipOfErebos.java @@ -127,7 +127,7 @@ class WhipOfErebosEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } return true; diff --git a/Mage.Sets/src/mage/sets/timespiral/FlickeringSpirit.java b/Mage.Sets/src/mage/sets/timespiral/FlickeringSpirit.java new file mode 100644 index 0000000000..240355f9bd --- /dev/null +++ b/Mage.Sets/src/mage/sets/timespiral/FlickeringSpirit.java @@ -0,0 +1,63 @@ +/* + * 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.MageInt; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class FlickeringSpirit extends CardImpl { + + public FlickeringSpirit(UUID ownerId) { + super(ownerId, 17, "Flickering Spirit", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{W}"); + this.expansionSetCode = "TSP"; + this.subtype.add("Spirit"); + this.power = new MageInt(2); + this.toughness = new MageInt(2); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + // {3}{W}: Exile Flickering Spirit, then return it to the battlefield under its owner's control. + } + + public FlickeringSpirit(final FlickeringSpirit card) { + super(card); + } + + @Override + public FlickeringSpirit copy() { + return new FlickeringSpirit(this); + } +} diff --git a/Mage.Sets/src/mage/sets/timespiral/MangaraOfCorondor.java b/Mage.Sets/src/mage/sets/timespiral/MangaraOfCorondor.java index 1f531d8f73..a6bdfb8da5 100644 --- a/Mage.Sets/src/mage/sets/timespiral/MangaraOfCorondor.java +++ b/Mage.Sets/src/mage/sets/timespiral/MangaraOfCorondor.java @@ -58,7 +58,7 @@ public class MangaraOfCorondor extends CardImpl { this.toughness = new MageInt(1); // {tap}: Exile Mangara of Corondor and target permanent. - Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileSourceEffect(Zone.BATTLEFIELD), new TapSourceCost()); + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ExileSourceEffect(), new TapSourceCost()); ability.addEffect(new ExileTargetEffect()); ability.addTarget(new TargetPermanent()); this.addAbility(ability); diff --git a/Mage.Sets/src/mage/sets/timespiral/NorinTheWary.java b/Mage.Sets/src/mage/sets/timespiral/NorinTheWary.java index d1b899ae04..bd37b15f16 100644 --- a/Mage.Sets/src/mage/sets/timespiral/NorinTheWary.java +++ b/Mage.Sets/src/mage/sets/timespiral/NorinTheWary.java @@ -132,7 +132,7 @@ class NorinTheWaryRemovingEffect extends OneShotEffect { new ReturnFromExileEffect(source.getSourceId(), Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/timespiral/SaffiEriksdotter.java b/Mage.Sets/src/mage/sets/timespiral/SaffiEriksdotter.java index 00640ca0eb..472967811e 100644 --- a/Mage.Sets/src/mage/sets/timespiral/SaffiEriksdotter.java +++ b/Mage.Sets/src/mage/sets/timespiral/SaffiEriksdotter.java @@ -105,7 +105,7 @@ class SaffiEriksdotterEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new SaffiEriksdotterDelayedTriggeredAbility(new FixedTarget(this.getTargetPointer().getFirst(game, source))); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return false; } diff --git a/Mage.Sets/src/mage/sets/torment/MesmericFiend.java b/Mage.Sets/src/mage/sets/torment/MesmericFiend.java index 646116480a..b420a60c9f 100644 --- a/Mage.Sets/src/mage/sets/torment/MesmericFiend.java +++ b/Mage.Sets/src/mage/sets/torment/MesmericFiend.java @@ -29,6 +29,7 @@ package mage.sets.torment; import java.util.UUID; import mage.MageInt; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.common.EntersBattlefieldTriggeredAbility; import mage.abilities.common.LeavesBattlefieldTriggeredAbility; @@ -43,6 +44,7 @@ import mage.filter.common.FilterNonlandCard; import mage.game.ExileZone; import mage.game.Game; import mage.game.permanent.Permanent; +import mage.game.permanent.PermanentToken; import mage.players.Player; import mage.target.TargetCard; import mage.target.common.TargetOpponent; @@ -110,7 +112,7 @@ class MesmericFiendExileEffect extends OneShotEffect { if (controller.choose(Outcome.Exile, opponent.getHand(), target, game)) { Card card = opponent.getHand().get(target.getFirstTarget(), game); if (card != null) { - controller.moveCardToExileWithInfo(card, CardUtil.getObjectExileZoneId(game, sourcePermanent), sourcePermanent.getName(), source.getSourceId(), game, Zone.HAND); + controller.moveCardToExileWithInfo(card, CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()), sourcePermanent.getName(), source.getSourceId(), game, Zone.HAND); } } @@ -141,8 +143,10 @@ class MesmericFiendLeaveEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - if (controller != null) { - ExileZone exZone = game.getExile().getExileZone(CardUtil.getObjectExileZoneId(game, source.getSourceObject(game))); + MageObject sourceObject = source.getSourceObject(game); + if (controller != null && sourceObject !=null) { + int zoneChangeCounter = (sourceObject instanceof PermanentToken) ? source.getSourceObjectZoneChangeCounter() : source.getSourceObjectZoneChangeCounter() -1; + ExileZone exZone = game.getExile().getExileZone(CardUtil.getExileZoneId(game, source.getSourceId(), zoneChangeCounter)); if (exZone != null) { for (Card card : exZone.getCards(game)) { if (card != null) { diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/AcademyRector.java b/Mage.Sets/src/mage/sets/urzasdestiny/AcademyRector.java index 232f7be4a9..6713f455a0 100644 --- a/Mage.Sets/src/mage/sets/urzasdestiny/AcademyRector.java +++ b/Mage.Sets/src/mage/sets/urzasdestiny/AcademyRector.java @@ -102,7 +102,7 @@ class AcademyRectorEffect extends OneShotEffect { MageObject sourceObject = game.getObject(source.getSourceId()); if (controller != null && sourceObject != null) { if (controller.chooseUse(outcome, "Exile " + sourceObject.getLogName() + " to return Spirit card?", game)) { - new ExileSourceEffect(Zone.GRAVEYARD).apply(game, source); + new ExileSourceEffect().apply(game, source); TargetCardInLibrary target = new TargetCardInLibrary(filter); target.setNotTarget(true); controller.searchLibrary(target, game); diff --git a/Mage.Sets/src/mage/sets/urzasdestiny/Flicker.java b/Mage.Sets/src/mage/sets/urzasdestiny/Flicker.java new file mode 100644 index 0000000000..b690ecf5f9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/urzasdestiny/Flicker.java @@ -0,0 +1,56 @@ +/* + * 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.urzasdestiny; + +import java.util.UUID; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; + +/** + * + * @author LevelX2 + */ +public class Flicker extends CardImpl { + + public Flicker(UUID ownerId) { + super(ownerId, 9, "Flicker", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{1}{W}"); + this.expansionSetCode = "UDS"; + + // Exile target nontoken permanent, then return it to the battlefield under its owner's control. + } + + public Flicker(final Flicker card) { + super(card); + } + + @Override + public Flicker copy() { + return new Flicker(this); + } +} diff --git a/Mage.Sets/src/mage/sets/urzaslegacy/MemoryJar.java b/Mage.Sets/src/mage/sets/urzaslegacy/MemoryJar.java index 1387ec5084..d91b6ad163 100644 --- a/Mage.Sets/src/mage/sets/urzaslegacy/MemoryJar.java +++ b/Mage.Sets/src/mage/sets/urzaslegacy/MemoryJar.java @@ -129,7 +129,7 @@ class MemoryJarEffect extends OneShotEffect { delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/urzassaga/SneakAttack.java b/Mage.Sets/src/mage/sets/urzassaga/SneakAttack.java index e55fc37dd5..7c92c48974 100644 --- a/Mage.Sets/src/mage/sets/urzassaga/SneakAttack.java +++ b/Mage.Sets/src/mage/sets/urzassaga/SneakAttack.java @@ -116,7 +116,7 @@ class SneakAttackEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(sacrificeEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/venservskoth/GalepowderMage.java b/Mage.Sets/src/mage/sets/venservskoth/GalepowderMage.java index ef46c29641..3b966ba423 100644 --- a/Mage.Sets/src/mage/sets/venservskoth/GalepowderMage.java +++ b/Mage.Sets/src/mage/sets/venservskoth/GalepowderMage.java @@ -120,7 +120,7 @@ class GalepowderMageEffect extends OneShotEffect { AtTheBeginOfNextEndStepDelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(new ReturnFromExileEffect(exileId, Zone.BATTLEFIELD)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(card.getOwnerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); } } diff --git a/Mage.Sets/src/mage/sets/vintagemasters/ManaDrain.java b/Mage.Sets/src/mage/sets/vintagemasters/ManaDrain.java index 7afd9d22e0..1561ea5d21 100644 --- a/Mage.Sets/src/mage/sets/vintagemasters/ManaDrain.java +++ b/Mage.Sets/src/mage/sets/vintagemasters/ManaDrain.java @@ -101,7 +101,7 @@ class ManaDrainCounterEffect extends OneShotEffect { new AtTheBeginOMainPhaseDelayedTriggeredAbility(effect, false, TargetController.YOU, PhaseSelection.NEXT_MAIN); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java b/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java index 5974ac0652..8dcff4bfb9 100644 --- a/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java +++ b/Mage.Sets/src/mage/sets/vintagemasters/MarchesaTheBlackRose.java @@ -160,7 +160,7 @@ class MarchesaTheBlackRoseEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(effect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); delayedAbility.getEffects().get(0).setTargetPointer(new FixedTarget(card.getId())); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/visions/UndiscoveredParadise.java b/Mage.Sets/src/mage/sets/visions/UndiscoveredParadise.java index edfc0a3ec6..f82c2cbeac 100644 --- a/Mage.Sets/src/mage/sets/visions/UndiscoveredParadise.java +++ b/Mage.Sets/src/mage/sets/visions/UndiscoveredParadise.java @@ -86,7 +86,7 @@ class UndiscoveredParadiseEffect extends OneShotEffect { AtBeginningOfUntapDelayedTriggeredAbility delayedAbility = new AtBeginningOfUntapDelayedTriggeredAbility(new ReturnToHandSourceEffect(true)); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; } diff --git a/Mage.Sets/src/mage/sets/worldwake/StoneIdolTrap.java b/Mage.Sets/src/mage/sets/worldwake/StoneIdolTrap.java index c597a5d485..bc6f9e8691 100644 --- a/Mage.Sets/src/mage/sets/worldwake/StoneIdolTrap.java +++ b/Mage.Sets/src/mage/sets/worldwake/StoneIdolTrap.java @@ -143,7 +143,7 @@ class StoneIdolTrapEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect, TargetController.YOU); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/zendikar/ElementalAppeal.java b/Mage.Sets/src/mage/sets/zendikar/ElementalAppeal.java index e907ebb2ba..fb98e221fa 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ElementalAppeal.java +++ b/Mage.Sets/src/mage/sets/zendikar/ElementalAppeal.java @@ -109,7 +109,7 @@ class ElementalAppealEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Sets/src/mage/sets/zendikar/ZektarShrineExpedition.java b/Mage.Sets/src/mage/sets/zendikar/ZektarShrineExpedition.java index 2da29ce3a0..c26d30ab29 100644 --- a/Mage.Sets/src/mage/sets/zendikar/ZektarShrineExpedition.java +++ b/Mage.Sets/src/mage/sets/zendikar/ZektarShrineExpedition.java @@ -108,7 +108,7 @@ class ZektarShrineExpeditionEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = new AtTheBeginOfNextEndStepDelayedTriggeredAbility(exileEffect); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); game.addDelayedTriggeredAbility(delayedAbility); return true; diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/BanisherPriestTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/BanisherPriestTest.java index 6f8421fa7b..133d1724b4 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/BanisherPriestTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/BanisherPriestTest.java @@ -63,7 +63,7 @@ public class BanisherPriestTest extends CardTestPlayerBase { /** - * Check if the returning target did not trigger the die Event of + * Check that the returning target did not trigger the dies Event of * the dying Banisher Priest */ @Test diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/GatherSpecimensTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/GatherSpecimensTest.java index 4c3dcf71a8..5ce39d021f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/GatherSpecimensTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/enters/GatherSpecimensTest.java @@ -101,6 +101,7 @@ public class GatherSpecimensTest extends CardTestPlayerBase { addCard(Zone.BATTLEFIELD, playerB, "Memnite", 1); addCard(Zone.LIBRARY, playerB, "Plains", 10); + // If a creature would enter the battlefield under an opponent's control this turn, it enters the battlefield under your control instead. castSpell(1, PhaseStep.UPKEEP, playerA, "Gather Specimens"); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Oblivion Ring"); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/flicker/CloudshiftTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/flicker/CloudshiftTest.java index 7afac0cc4b..348dea38ad 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/flicker/CloudshiftTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/flicker/CloudshiftTest.java @@ -19,6 +19,9 @@ public class CloudshiftTest extends CardTestPlayerBase { /** * Tests that casting Cloudshift makes targeting spell fizzling + * + * Cloudshift + * Exile target creature you control, then return that card to the battlefield under your control. */ @Test public void testSpellFizzle() { @@ -229,4 +232,38 @@ public class CloudshiftTest extends CardTestPlayerBase { assertPowerToughness(playerA, "Silvercoat Lion", 2, 2); } + /** + * Test that if I cast cloudshift and it goes to the stack and another instant spell exiles the + * target creature as response, cloudshift does not bring back that creature from exile because it's + * a complete other object (400.7). + * 400.7g allows Cloudshift to bring it back only if it was exiled by cloudshift itself. + * + */ + @Test + public void testReturnIfExiledByAnotherSpell() { + addCard(Zone.BATTLEFIELD, playerA, "Plains"); + addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion"); + addCard(Zone.HAND, playerA, "Cloudshift"); + + + addCard(Zone.BATTLEFIELD, playerB, "Plains"); + // Exile target creature. Its controller gains life equal to its power. + addCard(Zone.HAND, playerB, "Swords to Plowshares"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cloudshift", "Silvercoat Lion"); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Swords to Plowshares", "Silvercoat Lion", "Cloudshift"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerA, "Cloudshift", 1); + assertGraveyardCount(playerB, "Swords to Plowshares", 1); + + assertLife(playerA, 22); + assertLife(playerB, 20); + + assertPermanentCount(playerA,"Silvercoat Lion", 0); + assertExileCount("Silvercoat Lion", 1); + + } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/UndyingTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/UndyingTest.java index 1ab3383cd8..eca34b84cd 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/UndyingTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/UndyingTest.java @@ -164,6 +164,7 @@ public class UndyingTest extends CardTestPlayerBase { addCard(Zone.BATTLEFIELD, playerB, "Plains", 4); // Destroy all creatures. They can't be regenerated. addCard(Zone.HAND, playerB, "Wrath of God"); + // Anafenza, the Foremost // Whenever Anafenza, the Foremost attacks, put a +1/+1 counter on another target tapped creature you control. // If a creature card would be put into an opponent's graveyard from anywhere, exile it instead. diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/PastInFlamesTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/PastInFlamesTest.java index a0325e2681..6d4b9fb5f4 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/PastInFlamesTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/other/PastInFlamesTest.java @@ -61,11 +61,12 @@ public class PastInFlamesTest extends CardTestPlayerBase { setStopAt(1, PhaseStep.END_TURN); execute(); - assertExileCount("Lightning Bolt", 1); - assertGraveyardCount(playerA, "Lightning Bolt", 0); assertLife(playerB, 17); assertLife(playerA, 20); + assertExileCount("Lightning Bolt", 1); + assertGraveyardCount(playerA, "Lightning Bolt", 0); + } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/conditional/TheWretchedTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/conditional/TheWretchedTest.java index ec920551d0..7f8c446225 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/conditional/TheWretchedTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/conditional/TheWretchedTest.java @@ -18,14 +18,15 @@ public class TheWretchedTest extends CardTestPlayerBase { @Test public void testGainControl_One_NoRegenThusNothingIsRemovedFromCombat() { + // At end of combat, gain control of all creatures blocking The Wretched for as long as you control The Wretched. addCard(Zone.BATTLEFIELD, playerA, "The Wretched"); addCard(Zone.BATTLEFIELD, playerB, "Wall of Pine Needles"); // a 3/3 with regeneration addCard(Zone.BATTLEFIELD, playerB, "Living Wall"); // 0/6 Wall with regeneration - attack(2, playerA, "The Wretched"); - block(2, playerB, "Wall of Pine Needles", "The Wretched"); - block(2, playerB, "Living Wall", "The Wretched"); - setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + attack(3, playerA, "The Wretched"); + block(3, playerB, "Wall of Pine Needles", "The Wretched"); + block(3, playerB, "Living Wall", "The Wretched"); + setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); execute(); assertPermanentCount(playerA, "The Wretched", 1); @@ -37,21 +38,28 @@ public class TheWretchedTest extends CardTestPlayerBase { public void testGainControl_One_RegenWhichRemovesBlockerFromCombat() { addCard(Zone.BATTLEFIELD, playerA, "The Wretched"); + addCard(Zone.BATTLEFIELD, playerA, "Bad Moon"); // +1/+1 for black creatures + + addCard(Zone.BATTLEFIELD, playerB, "Forest"); // a 3/3 with regeneration addCard(Zone.BATTLEFIELD, playerB, "Wall of Pine Needles"); // a 3/3 with regeneration addCard(Zone.BATTLEFIELD, playerB, "Living Wall"); // 0/6 Wall with regeneration - attack(2, playerA, "The Wretched"); - block(2, playerB, "Wall of Pine Needles", "The Wretched"); - block(2, playerB, "Living Wall", "The Wretched"); + // The Wretched + // Creature — Demon - Demon 2/5 + attack(3, playerA, "The Wretched"); + block(3, playerB, "Wall of Pine Needles", "The Wretched"); + block(3, playerB, "Living Wall", "The Wretched"); - activateAbility(2, PhaseStep.DECLARE_BLOCKERS, playerB, "{G}: Regenerate {this}."); + activateAbility(3, PhaseStep.DECLARE_BLOCKERS, playerB, "{G}: Regenerate {this}."); // Wall of Pine Needles - setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); execute(); assertPermanentCount(playerA, "The Wretched", 1); assertPermanentCount(playerA, "Living Wall", 1); + assertPermanentCount(playerB, "Wall of Pine Needles", 1); + } @@ -59,16 +67,19 @@ public class TheWretchedTest extends CardTestPlayerBase { public void testLoseControlOfTheWretched() { addCard(Zone.BATTLEFIELD, playerA, "The Wretched"); + addCard(Zone.BATTLEFIELD, playerB, "Wall of Pine Needles"); // a 3/3 with regeneration addCard(Zone.BATTLEFIELD, playerB, "Living Wall"); // 0/6 Wall with regeneration + addCard(Zone.BATTLEFIELD, playerB, "Island", 4); + addCard(Zone.HAND, playerB, "Control Magic"); - attack(2, playerA, "The Wretched"); - block(2, playerB, "Wall of Pine Needles", "The Wretched"); - block(2, playerB, "Living Wall", "The Wretched"); + attack(3, playerA, "The Wretched"); + block(3, playerB, "Wall of Pine Needles", "The Wretched"); + block(3, playerB, "Living Wall", "The Wretched"); - castSpell(2, PhaseStep.POSTCOMBAT_MAIN, playerB, "Control Magic", "The Wretched"); + castSpell(4, PhaseStep.POSTCOMBAT_MAIN, playerB, "Control Magic", "The Wretched"); - setStopAt(2, PhaseStep.END_TURN); + setStopAt(4, PhaseStep.END_TURN); execute(); assertPermanentCount(playerB, "The Wretched", 1); @@ -80,20 +91,24 @@ public class TheWretchedTest extends CardTestPlayerBase { public void testRegenTheWretchedThusRemovingFromCombat() { addCard(Zone.BATTLEFIELD, playerA, "The Wretched"); + addCard(Zone.HAND, playerA, "Regenerate"); + addCard(Zone.BATTLEFIELD, playerA, "Forest", 2); + addCard(Zone.BATTLEFIELD, playerB, "Wall of Pine Needles"); // a 3/3 with regeneration - addCard(Zone.BATTLEFIELD, playerB, "Living Wall"); // 0/6 Wall with regeneration + addCard(Zone.BATTLEFIELD, playerB, "Wall of Spears"); // 3/2 - attack(2, playerA, "The Wretched"); - block(2, playerB, "Wall of Pine Needles", "The Wretched"); - block(2, playerB, "Living Wall", "The Wretched"); - castSpell(2, PhaseStep.DECLARE_BLOCKERS, playerA, "Regenerate", "The Wretched"); + attack(3, playerA, "The Wretched"); + block(3, playerB, "Wall of Pine Needles", "The Wretched"); + block(3, playerB, "Wall of Spears", "The Wretched"); - setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); + castSpell(3, PhaseStep.DECLARE_BLOCKERS, playerA, "Regenerate", "The Wretched"); + + setStopAt(3, PhaseStep.POSTCOMBAT_MAIN); execute(); assertPermanentCount(playerA, "The Wretched", 1); assertPermanentCount(playerB, "Wall of Pine Needles", 1); - assertPermanentCount(playerB, "Living Wall", 1); + assertPermanentCount(playerB, "Wall of Spears", 1); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/ElvishArchdruidTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/ElvishArchdruidTest.java index daddf04663..0372d6acc5 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/continuous/ElvishArchdruidTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/continuous/ElvishArchdruidTest.java @@ -49,11 +49,12 @@ public class ElvishArchdruidTest extends CardTestPlayerBase { addCard(Zone.BATTLEFIELD, playerA, "Mountain", 2); addCard(Zone.BATTLEFIELD, playerA, "Elvish Archdruid", 1); addCard(Zone.BATTLEFIELD, playerA, "Nettle Sentinel", 1); + // Pyroclasm deals 2 damage to each creature. addCard(Zone.HAND, playerA, "Pyroclasm"); - castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Pyroclasm"); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Pyroclasm"); - setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + setStopAt(1, PhaseStep.PRECOMBAT_MAIN); // has to be the same phase as the cast spell to see if Nettle Sentinel dies in this phase execute(); assertGraveyardCount(playerA, "Pyroclasm", 1); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/control/BattlefieldTriggeredAbilitiesTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/control/BattlefieldTriggeredAbilitiesTest.java index 6a6359941b..d9340ed375 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/control/BattlefieldTriggeredAbilitiesTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/control/BattlefieldTriggeredAbilitiesTest.java @@ -15,10 +15,16 @@ public class BattlefieldTriggeredAbilitiesTest extends CardTestPlayerBase { @Test public void testBeguilerofWillsAndPrimevalTitan() { + + // Whenever Primeval Titan enters the battlefield or attacks, you may search your library for up to two land cards, + // put them onto the battlefield tapped, then shuffle your library. addCard(Zone.BATTLEFIELD, playerA, "Primeval Titan"); addCard(Zone.LIBRARY, playerA, "Mountain", 10); + // {T}: Gain control of target creature with power less than or equal to the number of creatures you control. addCard(Zone.BATTLEFIELD, playerB, "Beguiler of Wills"); + + // Whenever Arrogant Bloodlord blocks or becomes blocked by a creature with power 1 or less, destroy Arrogant Bloodlord at end of combat. addCard(Zone.BATTLEFIELD, playerB, "Arrogant Bloodlord", 5); addCard(Zone.LIBRARY, playerB, "Mountain", 10); @@ -34,7 +40,7 @@ public class BattlefieldTriggeredAbilitiesTest extends CardTestPlayerBase { assertPermanentCount(playerB, "Beguiler of Wills", 1); assertPermanentCount(playerB, "Arrogant Bloodlord", 5); assertPermanentCount(playerB, "Primeval Titan", 1); - + // lands weren't added to playerA assertPermanentCount(playerA, "Mountain", 0); // but to playerB instead diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/CostModificationTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/CostModificationTest.java index 0e5db1f8e0..c0022e2195 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/CostModificationTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/cost/modification/CostModificationTest.java @@ -58,12 +58,15 @@ public class CostModificationTest extends CardTestPlayerBase { @Test public void testCostReductionWithManaSourceRestrictionWorking() { + // Artifact spells you cast cost {1} less to cast addCard(Zone.BATTLEFIELD, playerA, "Etherium Sculptor"); addCard(Zone.BATTLEFIELD, playerA, "Llanowar Elves"); + // Myr Superion {2} + // Spend only mana produced by creatures to cast Myr Superion. addCard(Zone.HAND, playerA, "Myr Superion"); - activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Add {G} to your mana pool."); + activateManaAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Add {G} to your mana pool."); castSpell(3, PhaseStep.PRECOMBAT_MAIN, playerA, "Myr Superion"); setStopAt(3, PhaseStep.BEGIN_COMBAT); execute(); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java index 451d18381c..7e696f8d92 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/replacement/DryadMilitantTest.java @@ -79,7 +79,7 @@ public class DryadMilitantTest extends CardTestPlayerBase { } /** - * Tests if Dryad Militant dies by damage spell, the + * Tests if Dryad Militant dies by destroy spell, the * spell don't get exiled */ @Test @@ -97,7 +97,7 @@ public class DryadMilitantTest extends CardTestPlayerBase { assertLife(playerB, 20); assertHandCount(playerA, "Terminate", 0); - assertGraveyardCount(playerB, "Terminate", 1); + assertGraveyardCount(playerA, "Terminate", 1); } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/FracturingGustTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/FracturingGustTest.java index a3e7c4bbd7..3c91554cf7 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/FracturingGustTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/FracturingGustTest.java @@ -44,8 +44,12 @@ public class FracturingGustTest extends CardTestPlayerBase { addCard(Zone.BATTLEFIELD, playerA, "Forest", 5); addCard(Zone.HAND, playerA, "Fracturing Gust", 1); + // Players can't gain life. + // At the beginning of your upkeep, Witch Hunt deals 4 damage to you. + // At the beginning of your end step, target opponent chosen at random gains control of Witch Hunt. addCard(Zone.BATTLEFIELD, playerB, "Witch Hunt", 1); + // Destroy all artifacts and enchantments. You gain 2 life for each permanent destroyed this way. castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Fracturing Gust"); setStopAt(1, PhaseStep.BEGIN_COMBAT); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/ParallaxWaveTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/ParallaxWaveTest.java index 9e0cf70631..e9afcbd6d7 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/ParallaxWaveTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/ParallaxWaveTest.java @@ -60,8 +60,12 @@ public class ParallaxWaveTest extends CardTestPlayerBase { */ @Test public void testFirstExileHandlingOfItself() { + // Each other non-Aura enchantment is a creature with power and toughness each equal to its converted mana cost. It's still an enchantment. addCard(Zone.BATTLEFIELD, playerA, "Opalescence"); addCard(Zone.BATTLEFIELD, playerA, "Plains", 4); + // Fading 5 (This enchantment enters the battlefield with five fade counters on it. At the beginning of your upkeep, remove a fade counter from it. If you can't, sacrifice it.) + // Remove a fade counter from Parallax Wave: Exile target creature. + // When Parallax Wave leaves the battlefield, each player returns to the battlefield all cards he or she owns exiled with Parallax Wave. addCard(Zone.HAND, playerA, "Parallax Wave"); addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion", 1); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/JournexToNowhereTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/JournexToNowhereTest.java index ddb20debb0..9199ba892e 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/JournexToNowhereTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/JournexToNowhereTest.java @@ -114,9 +114,9 @@ public class JournexToNowhereTest extends CardTestPlayerBase { /* Journey is played and targets the creature as it enters the battlefield. - The Journey will be returned to hand before the ability reolves. + The Journey will be returned to hand before the ability resolves. The Journey will be played again targeting another creature. - The journey will be disencahnted later, so only the second creatufre has to return to battlefield. + The Journey will be disenchanted later, so only the second creature has to return to battlefield. */ @Test diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/SoulWardenTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/SoulWardenTest.java index 8efda10359..df49fb232f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/SoulWardenTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/SoulWardenTest.java @@ -21,10 +21,11 @@ public class SoulWardenTest extends CardTestPlayerBase { public void testDisabledEffectOnChangeZone() { addCard(Zone.BATTLEFIELD, playerA, "Mountain", 1); addCard(Zone.HAND, playerA, "Lightning Bolt"); - addCard(Zone.BATTLEFIELD, playerA, "Plains", 2); + addCard(Zone.BATTLEFIELD, playerA, "Plains", 2); addCard(Zone.HAND, playerA, "Elite Vanguard", 2); addCard(Zone.BATTLEFIELD, playerA, "Soul Warden", 1); + // Creature 2/1 castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Elite Vanguard"); castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Lightning Bolt", "Soul Warden"); castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "Elite Vanguard"); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/BrainMaggotTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/BrainMaggotTest.java index 3c7a4a40ea..e8056826a7 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/BrainMaggotTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/BrainMaggotTest.java @@ -88,7 +88,7 @@ public class BrainMaggotTest extends CardTestPlayerBase { public void testCardFromHandWillBeExiledAndReturnMesmericFiend() { addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2); addCard(Zone.HAND, playerA, "Mesmeric Fiend", 2); - + // Sacrifice a creature: Put a +1/+1 counter on Bloodflow Connoisseur. addCard(Zone.HAND, playerB, "Bloodflow Connoisseur", 1); addCard(Zone.HAND, playerB, "Lightning Bolt", 1); addCard(Zone.BATTLEFIELD, playerB, "Mountain", 2); diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/HarvesterOfSoulsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/HarvesterOfSoulsTest.java index 750a0b7c82..7f1e00812f 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/HarvesterOfSoulsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/dies/HarvesterOfSoulsTest.java @@ -21,14 +21,19 @@ public class HarvesterOfSoulsTest extends CardTestPlayerBase { public void testDisabledEffectOnChangeZone() { addCard(Zone.BATTLEFIELD, playerA, "Plains", 4); addCard(Zone.BATTLEFIELD, playerA, "Mountain", 3); - addCard(Zone.HAND, playerA, "Day of Judgment", 1); + addCard(Zone.HAND, playerA, "Day of Judgment", 1); addCard(Zone.HAND, playerA, "Thatcher Revolt", 1); + // Whenever another nontoken creature dies, you may draw a card. addCard(Zone.BATTLEFIELD, playerA, "Harvester of Souls", 1); + addCard(Zone.BATTLEFIELD, playerA, "Craw Wurm", 1); + // Whenever Arrogant Bloodlord blocks or becomes blocked by a creature with power 1 or less, destroy Arrogant Bloodlord at end of combat. addCard(Zone.BATTLEFIELD, playerB, "Arrogant Bloodlord", 1); - + + // Put three 1/1 red Human creature tokens with haste onto the battlefield. Sacrifice those tokens at the beginning of the next end step. castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Thatcher Revolt"); + // Destroy all creatures. castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Day of Judgment"); setStopAt(1, PhaseStep.BEGIN_COMBAT); diff --git a/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java b/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java index bef9fb7f94..26249229be 100644 --- a/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/lki/LastKnownInformationTest.java @@ -33,10 +33,12 @@ public class LastKnownInformationTest extends CardTestPlayerBase { // Creature - Elf Scout // 2/2 // Persist - addCard(Zone.BATTLEFIELD, playerA, "Safehold Elite"); addCard(Zone.BATTLEFIELD, playerA, "Plains", 2); - addCard(Zone.HAND, playerA, "Murder Investigation",2); + // {1}{W} + // Enchant creature you control + // When enchanted creature dies, put X 1/1 white Soldier creature tokens onto the battlefield, where X is its power. + addCard(Zone.HAND, playerA, "Murder Investigation",1); addCard(Zone.HAND, playerB, "Lightning Bolt",2); addCard(Zone.BATTLEFIELD, playerB, "Mountain", 2); @@ -45,16 +47,18 @@ public class LastKnownInformationTest extends CardTestPlayerBase { castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Safehold Elite"); // choose triggered ability order - playerA.addChoice("When enchanted creature dies, put X 1/1 red and white Soldier creature token with haste onto the battlefield, where X is its power."); + playerA.addChoice("When enchanted creature dies"); castSpell(1, PhaseStep.POSTCOMBAT_MAIN, playerB, "Lightning Bolt", "Safehold Elite", "When enchanted creature dies, put X 1/1 red and white Soldier creature token with haste onto the battlefield, where X is its power"); setStopAt(1, PhaseStep.END_TURN); execute(); - assertActionCount(playerB, 0); + assertGraveyardCount(playerB, "Lightning Bolt", 2); assertPermanentCount(playerA, "Safehold Elite", 0); // because enchanted Safehold Elite's P/T was 2/2, Murder Investigation has to put 2 Soldier onto the battlefield assertPermanentCount(playerA, "Soldier", 2); + + assertActionCount(playerB, 0); } diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index 7d447091f6..1fb9cff865 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -436,7 +436,7 @@ public class TestPlayer extends ComputerPlayer { public TriggeredAbility chooseTriggeredAbility(List abilities, Game game) { if (!choices.isEmpty()) { for(TriggeredAbility ability :abilities) { - if (choices.get(0).equals(ability.toString())) { + if (ability.toString().startsWith(choices.get(0))) { choices.remove(0); return ability; } diff --git a/Mage/src/mage/MageObjectReference.java b/Mage/src/mage/MageObjectReference.java index 8d5237807b..7edac3720b 100644 --- a/Mage/src/mage/MageObjectReference.java +++ b/Mage/src/mage/MageObjectReference.java @@ -32,7 +32,6 @@ import java.util.UUID; import mage.cards.Card; import mage.game.Game; import mage.game.permanent.Permanent; -import mage.game.stack.Spell; /** * A object reference that takes zone changes into account. @@ -65,10 +64,11 @@ public class MageObjectReference implements Comparable { public MageObjectReference(UUID sourceId, Game game) { this.sourceId = sourceId; MageObject mageObject = game.getObject(sourceId); - if (mageObject != null) + if (mageObject != null) { this.zoneChangeCounter = mageObject.getZoneChangeCounter(game); - else - this.zoneChangeCounter = 0; + } else { + throw new IllegalArgumentException("The provided sourceId is not connected to an object in the game"); + } } public UUID getSourceId() { @@ -109,7 +109,10 @@ public class MageObjectReference implements Comparable { } public boolean refersTo(MageObject mageObject, Game game) { - return mageObject.getId().equals(sourceId) && this.zoneChangeCounter == mageObject.getZoneChangeCounter(game); + if (mageObject != null) { + return mageObject.getId().equals(sourceId) && this.zoneChangeCounter == mageObject.getZoneChangeCounter(game); + } + return false; } public Permanent getPermanent(Game game) { diff --git a/Mage/src/mage/abilities/Ability.java b/Mage/src/mage/abilities/Ability.java index 44a9fc1336..8216042b1e 100644 --- a/Mage/src/mage/abilities/Ability.java +++ b/Mage/src/mage/abilities/Ability.java @@ -499,8 +499,9 @@ public interface Ability extends Controllable, Serializable { * an ability was activated. * * @param mageObject + * @param game */ - void setSourceObject(MageObject mageObject); + void setSourceObject(MageObject mageObject, Game game); /** * Returns the object that actually existed while a ability triggerd or @@ -511,4 +512,17 @@ public interface Ability extends Controllable, Serializable { * @return */ MageObject getSourceObject(Game game); + + int getSourceObjectZoneChangeCounter(); + + /** + * Returns the object that actually existed while a ability triggerd or + * an ability was activated only if it has not changed zone meanwhile. + * If not set yet, the current object will be retrieved from the game. + * + * @param game + * @return + */ + + MageObject getSourceObjectIfItStillExists(Game game); } diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 02c4c47192..947974e88d 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -32,6 +32,7 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; import mage.MageObject; +import mage.MageObjectReference; import mage.Mana; import mage.abilities.costs.AdjustingSourceCosts; import mage.abilities.costs.AlternativeCost; @@ -109,6 +110,7 @@ public abstract class AbilityImpl implements Ability { protected boolean activated = false; protected boolean worksFaceDown = false; protected MageObject sourceObject; + protected int sourceObjectZoneChangeCounter; protected List watchers = null; protected List subAbilities = null; @@ -160,6 +162,7 @@ public abstract class AbilityImpl implements Ability { this.worksFaceDown = ability.worksFaceDown; this.abilityWord = ability.abilityWord; this.sourceObject = ability.sourceObject; + this.sourceObjectZoneChangeCounter = ability.sourceObjectZoneChangeCounter; } @Override @@ -213,6 +216,13 @@ public abstract class AbilityImpl implements Ability { else { game.addEffect((ContinuousEffect) effect, this); } + /** + * game.applyEffects() has to be done at least for every effect that moves cards/permanent between zones, + * so Static effects work as intened if dependant from the moved objects zone it is in + * Otherwise for example were static abilities with replacement effects deactivated to late + * Example: {@link org.mage.test.cards.replacement.DryadMilitantTest#testDiesByDestroy testDiesByDestroy} + */ +// game.applyEffects(); // some effects must be applied before next effect is resolved, because effect is dependend. if (effect.applyEffectsAfter()) { game.applyEffects(); @@ -236,6 +246,8 @@ public abstract class AbilityImpl implements Ability { return false; } + getSourceObject(game); + /* 20130201 - 601.2b * If the player wishes to splice any cards onto the spell (see rule 702.45), he * or she reveals those cards in his or her hand. @@ -243,13 +255,13 @@ public abstract class AbilityImpl implements Ability { if (this.abilityType.equals(AbilityType.SPELL)) { game.getContinuousEffects().applySpliceEffects(this, game); } - - // TODO: Because all (non targeted) choices have to be done during resolution - // this has to be removed, if all using effects are changed - sourceObject = this.getSourceObject(game); + + if (sourceObject != null) { sourceObject.adjustChoices(this, game); } + // TODO: Because all (non targeted) choices have to be done during resolution + // this has to be removed, if all using effects are changed for (UUID modeId :this.getModes().getSelectedModes()) { this.getModes().setMode(this.getModes().get(modeId)); if (getChoices().size() > 0 && getChoices().choose(game, this) == false) { @@ -660,16 +672,18 @@ public abstract class AbilityImpl implements Ability { @Override public List getWatchers() { - if (watchers != null) + if (watchers != null) { return watchers; - else + } else { return emptyWatchers; + } } @Override public void addWatcher(Watcher watcher) { - if (watchers == null) + if (watchers == null) { watchers = new ArrayList<>(); + } watcher.setSourceId(this.sourceId); watcher.setControllerId(this.controllerId); watchers.add(watcher); @@ -677,16 +691,18 @@ public abstract class AbilityImpl implements Ability { @Override public List getSubAbilities() { - if (subAbilities != null) + if (subAbilities != null) { return subAbilities; - else + } else { return emptyAbilities; + } } @Override public void addSubAbility(Ability ability) { - if (subAbilities == null) + if (subAbilities == null) { subAbilities = new ArrayList<>(); + } ability.setSourceId(this.sourceId); ability.setControllerId(this.controllerId); subAbilities.add(ability); @@ -842,8 +858,15 @@ public abstract class AbilityImpl implements Ability { return false; } + /** + * + * @param game + * @param source + * @param checkShortLivingLKI if the object was in the needed zone as the effect that's currently applied started, the check returns true + * @return + */ @Override - public boolean isInUseableZone(Game game, MageObject source, boolean checkLKI) { + public boolean isInUseableZone(Game game, MageObject source, boolean checkShortLivingLKI) { if (zone.equals(Zone.COMMAND)) { if (this.getSourceId() == null) { // commander effects return true; @@ -855,10 +878,13 @@ public abstract class AbilityImpl implements Ability { } } - // try LKI first - if (checkLKI) { - MageObject lkiTest = game.getShortLivingLKI(getSourceId(), zone); - if (lkiTest != null) { + // try LKI first (was the object with the id in the needed zone before) + if (checkShortLivingLKI) { + if (game.getShortLivingLKI(getSourceId(), zone)) { + return true; + } + } else { + if (game.getLastKnownInformation(getSourceId(), zone) != null) { return true; } } @@ -1097,16 +1123,38 @@ public abstract class AbilityImpl implements Ability { @Override public MageObject getSourceObject(Game game) { - if (sourceObject != null) { - return sourceObject; - } else { - return game.getObject(sourceId); + if (sourceObject == null) { + setSourceObject(null, game); } + return sourceObject; } @Override - public void setSourceObject(MageObject sourceObject) { - this.sourceObject = sourceObject; + public MageObject getSourceObjectIfItStillExists(Game game) { + MageObject currentObject = game.getObject(getSourceId()); + if (currentObject != null) { + MageObjectReference mor = new MageObjectReference(currentObject, game); + if (mor.getZoneChangeCounter() == getSourceObjectZoneChangeCounter()) { + // source object has meanwhile not changed zone + return sourceObject; + } + } + return null; + } + + @Override + public int getSourceObjectZoneChangeCounter() { + return sourceObjectZoneChangeCounter; + } + + @Override + public void setSourceObject(MageObject sourceObject, Game game) { + if (sourceObject == null) { + this.sourceObject = game.getObject(sourceId); + } else { + this.sourceObject = sourceObject; + } + this.sourceObjectZoneChangeCounter = game.getState().getZoneChangeCounter(sourceId); } diff --git a/Mage/src/mage/abilities/TriggeredAbilities.java b/Mage/src/mage/abilities/TriggeredAbilities.java index 705efd3737..d2ed7faf5a 100644 --- a/Mage/src/mage/abilities/TriggeredAbilities.java +++ b/Mage/src/mage/abilities/TriggeredAbilities.java @@ -1,32 +1,31 @@ /* -* 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. -*/ - + * 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.abilities; import java.util.ArrayList; @@ -38,6 +37,7 @@ import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; import mage.MageObject; +import mage.cards.Card; import mage.constants.Zone; import mage.game.Game; import mage.game.events.GameEvent; @@ -45,17 +45,18 @@ import mage.game.events.GameEvent.EventType; import mage.game.permanent.Permanent; /** -* -* @author BetaSteward_at_googlemail.com -*/ + * + * @author BetaSteward_at_googlemail.com + */ public class TriggeredAbilities extends ConcurrentHashMap { private final Map> sources = new HashMap<>(); - public TriggeredAbilities() {} + public TriggeredAbilities() { + } public TriggeredAbilities(final TriggeredAbilities abilities) { - for (Map.Entry entry: abilities.entrySet()) { + for (Map.Entry entry : abilities.entrySet()) { this.put(entry.getKey(), entry.getValue().copy()); } for (Map.Entry> entry : abilities.sources.entrySet()) { @@ -70,29 +71,34 @@ public class TriggeredAbilities extends ConcurrentHashMap uuidList = new LinkedList<>(); uuidList.add(sourceId); @@ -145,18 +150,18 @@ public class TriggeredAbilities extends ConcurrentHashMap keysToRemove = new ArrayList<>(); - for (String key: this.keySet()) { - if(key.endsWith(sourceId.toString())) { + for (String key : this.keySet()) { + if (key.endsWith(sourceId.toString())) { keysToRemove.add(key); } } - for(String key: keysToRemove) { + for (String key : keysToRemove) { remove(key); } } public void removeAllGainedAbilities() { - for(String key: sources.keySet()) { + for (String key : sources.keySet()) { this.remove(key); } sources.clear(); @@ -166,4 +171,4 @@ public class TriggeredAbilities extends ConcurrentHashMap abilities = layeredEffects.getAbility(effect.getId()); for (Ability ability: abilities) { // If e.g. triggerd abilities (non static) created the effect, the ability must not be in usable zone (e.g. Unearth giving Haste effect) - if (!(ability instanceof StaticAbility) || ability.isInUseableZone(game, null, false)) { + if (!(ability instanceof StaticAbility) || ability.isInUseableZone(game, null, true)) { layerEffects.add(effect); break; } @@ -332,7 +333,7 @@ public class ContinuousEffects implements Serializable { if(auraReplacementEffect.checksEventType(event, game) && auraReplacementEffect.applies(event, null, game)){ replaceEffects.put(auraReplacementEffect, null); } - boolean checkLKI = event.getType().equals(EventType.ZONE_CHANGE) || event.getType().equals(EventType.DESTROYED_PERMANENT); + // boolean checkLKI = event.getType().equals(EventType.ZONE_CHANGE) || event.getType().equals(EventType.DESTROYED_PERMANENT); //get all applicable transient Replacement effects for (ReplacementEffect effect: replacementEffects) { if (!effect.checksEventType(event, game)) { @@ -346,10 +347,11 @@ public class ContinuousEffects implements Serializable { HashSet abilities = replacementEffects.getAbility(effect.getId()); HashSet applicableAbilities = new HashSet<>(); for (Ability ability : abilities) { - if (!(ability instanceof StaticAbility) || ability.isInUseableZone(game, null, checkLKI)) { + // for replacment effects of static abilities do not use LKI to check if to apply + if (ability.getAbilityType() != AbilityType.STATIC || ability.isInUseableZone(game, null, true)) { if (effect.getDuration() != Duration.OneUse || !effect.isUsed()) { if (!game.getScopeRelevant() || effect.hasSelfScope() || !event.getTargetId().equals(ability.getSourceId())) { - if (checkAbilityStillExists(ability, effect, event, game)) { + if (checkAbilityStillExists(ability, effect, event, game)) { // TODO: This is really needed??? if (effect.applies(event, ability, game)) { applicableAbilities.add(ability); } @@ -374,7 +376,7 @@ public class ContinuousEffects implements Serializable { HashSet abilities = preventionEffects.getAbility(effect.getId()); HashSet applicableAbilities = new HashSet<>(); for (Ability ability : abilities) { - if (!(ability instanceof StaticAbility) || ability.isInUseableZone(game, null, false)) { + if (ability.getAbilityType() != AbilityType.STATIC || ability.isInUseableZone(game, null, true)) { if (effect.getDuration() != Duration.OneUse || !effect.isUsed()) { if (effect.applies(event, ability, game)) { applicableAbilities.add(ability); @@ -658,7 +660,7 @@ public class ContinuousEffects implements Serializable { continue; } for (Ability sourceAbility : continuousRuleModifyingEffects.getAbility(effect.getId())) { - if (!(sourceAbility instanceof StaticAbility) || sourceAbility.isInUseableZone(game, null, false)) { + if (!(sourceAbility instanceof StaticAbility) || sourceAbility.isInUseableZone(game, null, true)) { if (checkAbilityStillExists(sourceAbility, effect, event, game)) { if (effect.getDuration() != Duration.OneUse || !effect.isUsed()) { effect.setValue("targetAbility", targetAbility); diff --git a/Mage/src/mage/abilities/effects/ReplacementEffectImpl.java b/Mage/src/mage/abilities/effects/ReplacementEffectImpl.java index 2aaba09f90..1243f4a3f3 100644 --- a/Mage/src/mage/abilities/effects/ReplacementEffectImpl.java +++ b/Mage/src/mage/abilities/effects/ReplacementEffectImpl.java @@ -74,6 +74,11 @@ public abstract class ReplacementEffectImpl extends ContinuousEffectImpl impleme return selfScope; } + @Override + public boolean apply(Game game, Ability source) { + throw new UnsupportedOperationException("Not used for replacemnt effect."); + } + @Override public boolean checksEventType(GameEvent event, Game game) { return true; diff --git a/Mage/src/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java b/Mage/src/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java index 08627a8d60..de8085730a 100644 --- a/Mage/src/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java +++ b/Mage/src/mage/abilities/effects/common/CreateDelayedTriggeredAbilityEffect.java @@ -70,7 +70,7 @@ public class CreateDelayedTriggeredAbilityEffect extends OneShotEffect { DelayedTriggeredAbility delayedAbility = ability.copy(); delayedAbility.setSourceId(source.getSourceId()); delayedAbility.setControllerId(source.getControllerId()); - delayedAbility.setSourceObject(source.getSourceObject(game)); + delayedAbility.setSourceObject(source.getSourceObject(game), game); if (this.copyTargets) { if (source.getTargets().isEmpty()) { for(Effect effect : delayedAbility.getEffects()) { diff --git a/Mage/src/mage/abilities/effects/common/ExileSourceEffect.java b/Mage/src/mage/abilities/effects/common/ExileSourceEffect.java index 1f047fdfca..e77d833790 100644 --- a/Mage/src/mage/abilities/effects/common/ExileSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ExileSourceEffect.java @@ -28,14 +28,15 @@ package mage.abilities.effects.common; +import java.util.UUID; +import mage.MageObject; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; import mage.constants.Outcome; -import mage.constants.Zone; import mage.game.Game; -import mage.game.permanent.Permanent; import mage.players.Player; +import mage.util.CardUtil; /** * @@ -43,21 +44,26 @@ import mage.players.Player; */ public class ExileSourceEffect extends OneShotEffect { - private Zone onlyfromZone; + private boolean toUniqueExileZone; public ExileSourceEffect() { - this(Zone.ALL); + this(false); } - public ExileSourceEffect(Zone onlyFromZone) { + /** + * + * @param toUniqueExileZone moves the card to a source object dependant unique exile zone, so another + * effect of the same source object (e.g. Deadeye Navigator) can identify the card + */ + public ExileSourceEffect(boolean toUniqueExileZone) { super(Outcome.Exile); staticText = "Exile {this}"; - this.onlyfromZone = onlyFromZone; + this.toUniqueExileZone = toUniqueExileZone; } public ExileSourceEffect(final ExileSourceEffect effect) { super(effect); - this.onlyfromZone = effect.onlyfromZone; + this.toUniqueExileZone = effect.toUniqueExileZone; } @Override @@ -66,22 +72,22 @@ public class ExileSourceEffect extends OneShotEffect { } @Override - public boolean apply(Game game, Ability source) { - Zone zone = game.getState().getZone(source.getSourceId()); - if (!zone.match(onlyfromZone)) { - return false; - } - Permanent permanent = game.getPermanent(source.getSourceId()); + public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - if (permanent != null) { - return controller.moveCardToExileWithInfo(permanent, null, null, source.getSourceId(), game, zone); - } else { - Card card = game.getCard(source.getSourceId()); - if (card != null) { - return controller.moveCardToExileWithInfo(card, null, null, source.getSourceId(), game, zone); + if (controller != null) { + MageObject sourceObject = source.getSourceObjectIfItStillExists(game); + if (sourceObject instanceof Card) { + UUID exileZoneId = null; + String exileZoneName = ""; + if (toUniqueExileZone) { + exileZoneId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); + exileZoneName = sourceObject.getLogName(); + } + Card sourceCard = (Card) sourceObject; + return controller.moveCardToExileWithInfo(sourceCard, exileZoneId, exileZoneName, source.getSourceId(), game, game.getState().getZone(sourceCard.getId())); } + return true; } return false; } - } diff --git a/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java b/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java index f4da07a7af..de28d429d2 100644 --- a/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ExileTargetForSourceEffect.java @@ -69,7 +69,7 @@ public class ExileTargetForSourceEffect extends OneShotEffect { MageObject sourceObject = source.getSourceObject(game); if (controller != null && sourceObject != null) { Permanent permanent = game.getPermanent(getTargetPointer().getFirst(game, source)); - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (permanent != null) { return controller.moveCardToExileWithInfo(permanent, exileId, sourceObject.getLogName(), source.getSourceId(), game, Zone.BATTLEFIELD); } else { diff --git a/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java b/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java index 9b452d94fe..657569add1 100644 --- a/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java @@ -50,24 +50,41 @@ import mage.util.CardUtil; */ public class ReturnFromExileForSourceEffect extends OneShotEffect { - private Zone zone; + private Zone returnToZone; private boolean tapped; + private boolean previousZone; + /** + * + * @param zone Zone the card should return to + */ public ReturnFromExileForSourceEffect(Zone zone) { this(zone, false); } public ReturnFromExileForSourceEffect(Zone zone, boolean tapped) { + this(zone, tapped, true); + } + + /** + * + * @param zone + * @param tapped + * @param previousZone if this is used from a dies leave battlefield or destroyed trigger, the exile zone is based on previous zone of the object + */ + public ReturnFromExileForSourceEffect(Zone zone, boolean tapped, boolean previousZone) { super(Outcome.PutCardInPlay); - this.zone = zone; + this.returnToZone = zone; this.tapped = tapped; + this.previousZone = previousZone; setText(); } public ReturnFromExileForSourceEffect(final ReturnFromExileForSourceEffect effect) { super(effect); - this.zone = effect.zone; + this.returnToZone = effect.returnToZone; this.tapped = effect.tapped; + this.previousZone = effect.previousZone; } @Override @@ -78,9 +95,9 @@ public class ReturnFromExileForSourceEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObject sourceObject = source.getSourceObject(game); - if (controller != null && sourceObject != null) { - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + if (controller != null) { + int zoneChangeCounter = source.getSourceObjectZoneChangeCounter() - (previousZone ? 1:0); + UUID exileId = CardUtil.getExileZoneId(game, source.getSourceId(), zoneChangeCounter); ExileZone exile = game.getExile().getExileZone(exileId); if (exile != null) { // null is valid if source left battlefield before enters the battlefield effect resolved LinkedList cards = new LinkedList<>(exile); @@ -89,8 +106,8 @@ public class ReturnFromExileForSourceEffect extends OneShotEffect { if (card == null) { return false; } - game.informPlayers(controller.getName() + " moves " + card.getLogName() + " from exile to " + zone.toString().toLowerCase()); - card.moveToZone(zone, source.getSourceId(), game, tapped); + game.informPlayers(controller.getName() + " moves " + card.getLogName() + " from exile to " + returnToZone.toString().toLowerCase()); + card.moveToZone(returnToZone, source.getSourceId(), game, tapped); } exile.clear(); } @@ -102,7 +119,7 @@ public class ReturnFromExileForSourceEffect extends OneShotEffect { private void setText() { StringBuilder sb = new StringBuilder(); sb.append("return the exiled cards "); - switch(zone) { + switch(returnToZone) { case BATTLEFIELD: sb.append("to the battlefield under its owner's control"); if (tapped) { diff --git a/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java b/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java index 0a31c031ec..b786237bc6 100644 --- a/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlSourceEffect.java @@ -28,13 +28,16 @@ package mage.abilities.effects.common; -import mage.MageObjectReference; +import java.util.UUID; +import mage.MageObject; import mage.constants.Outcome; -import mage.constants.Zone; import mage.abilities.Ability; import mage.abilities.effects.OneShotEffect; import mage.cards.Card; +import mage.constants.Zone; +import mage.game.ExileZone; import mage.game.Game; +import mage.util.CardUtil; /** * @@ -42,16 +45,13 @@ import mage.game.Game; */ public class ReturnToBattlefieldUnderYourControlSourceEffect extends OneShotEffect { - private final Zone onlyFromZone; - public ReturnToBattlefieldUnderYourControlSourceEffect(Zone fromZone) { + public ReturnToBattlefieldUnderYourControlSourceEffect() { super(Outcome.Benefit); - this.onlyFromZone = fromZone; staticText = "return that card to the battlefield under your control"; } public ReturnToBattlefieldUnderYourControlSourceEffect(final ReturnToBattlefieldUnderYourControlSourceEffect effect) { super(effect); - this.onlyFromZone = effect.onlyFromZone; } @Override @@ -61,11 +61,11 @@ public class ReturnToBattlefieldUnderYourControlSourceEffect extends OneShotEffe @Override public boolean apply(Game game, Ability source) { - MageObjectReference mor = new MageObjectReference(source.getSourceObject(game), game); - Card card = game.getCard(source.getSourceId()); - if (card != null && game.getState().getZone(source.getSourceId()) == onlyFromZone && mor.getZoneChangeCounter() == card.getZoneChangeCounter(game) + 1) { - Zone currentZone = game.getState().getZone(card.getId()); - if (card.putOntoBattlefield(game, currentZone, source.getSourceId(), source.getControllerId())) { + UUID exileZoneId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); + ExileZone exileZone = game.getExile().getExileZone(exileZoneId); + if (exileZone != null && exileZone.contains(source.getSourceId())) { + Card card = game.getCard(source.getSourceId()); + if (card != null && card.putOntoBattlefield(game, Zone.EXILED, source.getSourceId(), source.getControllerId())) { return true; } } diff --git a/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java b/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java index 560e8c1c77..600df26f80 100644 --- a/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java +++ b/Mage/src/mage/abilities/effects/common/ReturnToBattlefieldUnderYourControlTargetEffect.java @@ -53,7 +53,7 @@ public class ReturnToBattlefieldUnderYourControlTargetEffect extends OneShotEffe /** * - * @param fromExileZone - the card will only be retunred if it's still in the sour obect specific exile zone + * @param fromExileZone - the card will only be returned if it's still in the sour obect specific exile zone */ public ReturnToBattlefieldUnderYourControlTargetEffect(boolean fromExileZone) { super(Outcome.Benefit); @@ -74,11 +74,10 @@ public class ReturnToBattlefieldUnderYourControlTargetEffect extends OneShotEffe @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObject sourceObject = source.getSourceObject(game); - if (controller != null && sourceObject != null) { + if (controller != null) { Card card = null; if (fromExileZone) { - UUID exilZoneId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exilZoneId = CardUtil.getExileZoneId(game, source.getSourceId(), source.getSourceObjectZoneChangeCounter()); if (exilZoneId != null) { card = game.getExile().getExileZone(exilZoneId).get(getTargetPointer().getFirst(game, source), game); } diff --git a/Mage/src/mage/abilities/keyword/ChampionAbility.java b/Mage/src/mage/abilities/keyword/ChampionAbility.java index 47853817d5..de9b8ce83f 100644 --- a/Mage/src/mage/abilities/keyword/ChampionAbility.java +++ b/Mage/src/mage/abilities/keyword/ChampionAbility.java @@ -155,7 +155,7 @@ class ChampionExileCost extends CostImpl { MageObject sourceObject = ability.getSourceObject(game); if (controller != null && sourceObject != null) { if (targets.choose(Outcome.Exile, controllerId, sourceId, game)) { - UUID exileId = CardUtil.getObjectExileZoneId(game, sourceObject); + UUID exileId = CardUtil.getExileZoneId(game, ability.getSourceId(), ability.getSourceObjectZoneChangeCounter()); for (UUID targetId: targets.get(0).getTargets()) { Permanent permanent = game.getPermanent(targetId); if (permanent == null) { diff --git a/Mage/src/mage/abilities/keyword/EchoAbility.java b/Mage/src/mage/abilities/keyword/EchoAbility.java index d00226a0e4..6b1d318678 100644 --- a/Mage/src/mage/abilities/keyword/EchoAbility.java +++ b/Mage/src/mage/abilities/keyword/EchoAbility.java @@ -29,7 +29,6 @@ package mage.abilities.keyword; import java.util.UUID; -import mage.MageObjectReference; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.TriggeredAbilityImpl; @@ -53,7 +52,7 @@ public class EchoAbility extends TriggeredAbilityImpl { protected UUID lastController; protected boolean echoPaid; - protected Costs echoCosts = new CostsImpl(); + protected Costs echoCosts = new CostsImpl<>(); private boolean manaEcho = true; public EchoAbility(String manaString) { @@ -94,6 +93,7 @@ public class EchoAbility extends TriggeredAbilityImpl { // reset the echo paid state back, if creature enteres the battlefield if (event.getType().equals(GameEvent.EventType.ENTERS_THE_BATTLEFIELD) && event.getTargetId().equals(this.getSourceId())) { + this.echoPaid = false; } if (event.getType().equals(GameEvent.EventType.UPKEEP_STEP_PRE)) { @@ -144,15 +144,17 @@ class EchoEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); - MageObjectReference mor = new MageObjectReference(source.getSourceId(), game); - if (controller != null && mor.refersTo(source.getSourceObject(game), game)) { + if (controller != null && source.getSourceObjectIfItStillExists(game) != null) { if (controller.chooseUse(Outcome.Benefit, "Pay " + cost.getText() /* + " or sacrifice " + permanent.getName() */ + "?", game)) { cost.clearPaid(); if (cost.pay(source, game, source.getSourceId(), source.getControllerId(), false)) { return true; } } - mor.getPermanent(game).sacrifice(source.getSourceId(), game); + Permanent permanent = game.getPermanent(source.getSourceId()); + if (permanent != null) { + permanent.sacrifice(source.getSourceId(), game); + } return true; } return false; diff --git a/Mage/src/mage/abilities/keyword/FlashbackAbility.java b/Mage/src/mage/abilities/keyword/FlashbackAbility.java index 66eb5866f5..ed39177385 100644 --- a/Mage/src/mage/abilities/keyword/FlashbackAbility.java +++ b/Mage/src/mage/abilities/keyword/FlashbackAbility.java @@ -35,10 +35,13 @@ import mage.abilities.costs.Cost; import mage.abilities.costs.VariableCost; import mage.abilities.costs.mana.VariableManaCost; import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.ReplacementEffectImpl; import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; import mage.abilities.effects.common.ExileSourceEffect; import mage.cards.Card; import mage.cards.SplitCard; +import mage.constants.CardType; +import mage.constants.Duration; import mage.constants.Outcome; import mage.constants.SpellAbilityType; import mage.constants.TimingRule; @@ -74,7 +77,6 @@ public class FlashbackAbility extends SpellAbility { this.timing = timingRule; this.usesStack = false; this.spellAbilityType = SpellAbilityType.BASE_ALTERNATE; - this.addEffect(new CreateDelayedTriggeredAbilityEffect(new FlashbackTriggeredAbility())); } public FlashbackAbility(final FlashbackAbility ability) { @@ -211,48 +213,59 @@ class FlashbackEffect extends OneShotEffect { } game.informPlayers(new StringBuilder(controller.getName()).append(" flashbacks ").append(card.getName()).toString()); spellAbility.setCostModificationActive(false); // prevents to apply cost modification twice for flashbacked spells - return controller.cast(spellAbility, game, true); + if (controller.cast(spellAbility, game, true)) { + game.addEffect(new FlashbackReplacementEffect(), source); + return true; + } + return false; } } return false; } } -class FlashbackTriggeredAbility extends DelayedTriggeredAbility { +class FlashbackReplacementEffect extends ReplacementEffectImpl { - public FlashbackTriggeredAbility() { - super(new ExileSourceEffect()); - usesStack = false; + public FlashbackReplacementEffect() { + super(Duration.OneUse, Outcome.Exile); + staticText = "(If the flashback cost was paid, exile this card instead of putting it anywhere else any time it would leave the stack)"; } - public FlashbackTriggeredAbility(final FlashbackTriggeredAbility ability) { - super(ability); + public FlashbackReplacementEffect(final FlashbackReplacementEffect effect) { + super(effect); } @Override - public FlashbackTriggeredAbility copy() { - return new FlashbackTriggeredAbility(this); + public FlashbackReplacementEffect copy() { + return new FlashbackReplacementEffect(this); } @Override - public boolean checkEventType(GameEvent event, Game game) { + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public boolean replaceEvent(GameEvent event, Ability source, Game game) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + Card card = game.getCard(event.getTargetId()); + if (card != null) { + return controller.moveCardToExileWithInfo(card, null, "", source.getSourceId(), game, game.getState().getZone(card.getId())); + } + } + return false; + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { return event.getType() == GameEvent.EventType.ZONE_CHANGE; } @Override - public boolean checkTrigger(GameEvent event, Game game) { - if (event.getTargetId().equals(this.sourceId)) { - ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getFromZone() == Zone.STACK) { - return true; - } - } - return false; + public boolean applies(GameEvent event, Ability source, Game game) { + return event.getTargetId().equals(source.getSourceId()) + && ((ZoneChangeEvent)event).getFromZone() == Zone.STACK + && ((ZoneChangeEvent)event).getToZone() != Zone.EXILED; } - - @Override - public String getRule() { - return "(If the flashback cost was paid, exile this card instead of putting it anywhere else any time it would leave the stack)"; - } - -} +} \ No newline at end of file diff --git a/Mage/src/mage/abilities/keyword/UnearthAbility.java b/Mage/src/mage/abilities/keyword/UnearthAbility.java index f094c79bbe..19e9b4724b 100644 --- a/Mage/src/mage/abilities/keyword/UnearthAbility.java +++ b/Mage/src/mage/abilities/keyword/UnearthAbility.java @@ -124,7 +124,7 @@ class UnearthDelayedTriggeredAbility extends DelayedTriggeredAbility { class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl { public UnearthLeavesBattlefieldEffect() { - super(Duration.WhileOnBattlefield, Outcome.Exile); + super(Duration.OneUse, Outcome.Exile); staticText = "When {this} leaves the battlefield, exile it"; } @@ -144,7 +144,7 @@ class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (event.getType() == EventType.ZONE_CHANGE && event.getTargetId().equals(source.getSourceId())) { + if (source.getSourceObjectIfItStillExists(game) != null) { ZoneChangeEvent zEvent = (ZoneChangeEvent)event; if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() != Zone.EXILED) { return true; @@ -153,14 +153,9 @@ class UnearthLeavesBattlefieldEffect extends ReplacementEffectImpl { return false; } - @Override - public boolean apply(Game game, Ability source) { - ExileSourceEffect effect = new ExileSourceEffect(); - return effect.apply(game, source); - } - @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { - return apply(game, source); + new ExileSourceEffect().apply(game, source); + return true; } } diff --git a/Mage/src/mage/game/Game.java b/Mage/src/mage/game/Game.java index 7e3f9f06a0..6694959ddf 100644 --- a/Mage/src/mage/game/Game.java +++ b/Mage/src/mage/game/Game.java @@ -142,7 +142,7 @@ public interface Game extends MageItem, Serializable { void setSimulation(boolean simulation); MageObject getLastKnownInformation(UUID objectId, Zone zone); MageObject getLastKnownInformation(UUID objectId, Zone zone, int zoneChangeCounter); - MageObject getShortLivingLKI(UUID objectId, Zone zone); + boolean getShortLivingLKI(UUID objectId, Zone zone); void rememberLKI(UUID objectId, Zone zone, MageObject object); void resetLKI(); void resetShortLivingLKI(); diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index c0a358a267..50a3f2967b 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -159,9 +159,11 @@ public abstract class GameImpl implements Game, Serializable { protected transient PlayerQueryEventSource playerQueryEventSource = new PlayerQueryEventSource(); protected Map gameCards = new HashMap<>(); + protected Map> lki = new EnumMap<>(Zone.class); protected Map> lkiExtended = new HashMap<>(); - protected Map> shortLivingLKI = new EnumMap<>(Zone.class); + // Used to check if an object was moved by the current effect in resolution (so Wrath like effect can be handled correctly) + protected Map> shortLivingLKI = new EnumMap<>(Zone.class); protected GameState state; private transient Stack savedStates = new Stack<>(); @@ -1131,6 +1133,9 @@ public abstract class GameImpl implements Game, Serializable { // 603.3. Once an ability has triggered, its controller puts it on the stack as an object that’s not a card the next time a player would receive priority checkStateAndTriggered(); applyEffects(); + if (state.getStack().isEmpty()) { + resetLKI(); + } saveState(false); if (isPaused() || gameOver(null)) { return; @@ -1158,7 +1163,7 @@ public abstract class GameImpl implements Game, Serializable { state.getPlayers().resetPassed(); fireUpdatePlayersEvent(); state.getRevealed().reset(); - resetShortLivingLKI(); + resetShortLivingLKI(); break; } else { resetLKI(); @@ -2195,15 +2200,12 @@ public abstract class GameImpl implements Game, Serializable { } @Override - public MageObject getShortLivingLKI(UUID objectId, Zone zone) { - Map shortLivingLkiMap = shortLivingLKI.get(zone); - if (shortLivingLkiMap != null) { - MageObject object = shortLivingLkiMap.get(objectId); - if (object != null) { - return object.copy(); - } + public boolean getShortLivingLKI(UUID objectId, Zone zone) { + Set idSet = shortLivingLKI.get(zone); + if (idSet != null) { + return idSet.contains(objectId); } - return null; + return false; } /** @@ -2226,16 +2228,15 @@ public abstract class GameImpl implements Game, Serializable { newMap.put(objectId, copy); lki.put(zone, newMap); } - - Map shortLivingLkiMap = shortLivingLKI.get(zone); - if (shortLivingLkiMap != null) { - shortLivingLkiMap.put(objectId, copy); - } else { - HashMap newMap = new HashMap<>(); - newMap.put(objectId, copy); - shortLivingLKI.put(zone, newMap); + // remembers if a object was in a zone during the resolution of an effect + // e.g. Wrath destroys all and you the question is is the replacement effect to apply because the source was also moved by the same effect + // because it ahppens all at the same time the replcaement effect has still to be applied + Set idSet = shortLivingLKI.get(zone); + if (idSet == null) { + idSet = new HashSet<>(); + shortLivingLKI.put(zone, idSet); } - + idSet.add(objectId); if (object instanceof Permanent) { Map lkiExtendedMap = lkiExtended.get(objectId); if (lkiExtendedMap != null) { diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java index b7ee51ce1d..5240c08e1b 100644 --- a/Mage/src/mage/game/GameState.java +++ b/Mage/src/mage/game/GameState.java @@ -394,6 +394,7 @@ public class GameState implements Serializable, Copyable { } public void applyEffects(Game game) { + game.resetShortLivingLKI(); for (Player player: players.values()) { player.reset(); } diff --git a/Mage/src/mage/game/stack/Spell.java b/Mage/src/mage/game/stack/Spell.java index d99f2b0891..bb93cb5e0a 100644 --- a/Mage/src/mage/game/stack/Spell.java +++ b/Mage/src/mage/game/stack/Spell.java @@ -198,6 +198,7 @@ public class Spell implements StackObject, Card { result |= spellAbility.resolve(game); } } + game.resetShortLivingLKI(); index++; } } diff --git a/Mage/src/mage/game/stack/StackAbility.java b/Mage/src/mage/game/stack/StackAbility.java index 4fa68ac39a..8ffbf916c5 100644 --- a/Mage/src/mage/game/stack/StackAbility.java +++ b/Mage/src/mage/game/stack/StackAbility.java @@ -499,12 +499,22 @@ public class StackAbility implements StackObject, Ability { @Override public MageObject getSourceObject(Game game) { - throw new UnsupportedOperationException("Not supported."); //To change body of generated methods, choose Tools | Templates. + throw new UnsupportedOperationException("Not supported."); } @Override - public void setSourceObject(MageObject sourceObject) { - throw new UnsupportedOperationException("Not supported."); //To change body of generated methods, choose Tools | Templates. + public MageObject getSourceObjectIfItStillExists(Game game) { + throw new UnsupportedOperationException("Not supported."); + } + + @Override + public int getSourceObjectZoneChangeCounter() { + throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. + } + + @Override + public void setSourceObject(MageObject sourceObject, Game game) { + throw new UnsupportedOperationException("Not supported."); } @Override diff --git a/Mage/src/mage/players/ManaPool.java b/Mage/src/mage/players/ManaPool.java index 588fa5bc96..ea8c3002ef 100644 --- a/Mage/src/mage/players/ManaPool.java +++ b/Mage/src/mage/players/ManaPool.java @@ -111,20 +111,23 @@ public class ManaPool implements Serializable { lockManaType(); // pay only one mana if mana payment is set to manually return true; } - MageObject sourceObject = ability.getSourceObject(game); for (ManaPoolItem mana : manaItems) { - if (filter == null || filter.match(sourceObject, game)) { - boolean spendAnyMana = spendAnyMana(ability, game); - if (mana.get(manaType) > 0 || (spendAnyMana && mana.count() > 0)) { - game.fireEvent(new GameEvent(GameEvent.EventType.MANA_PAYED, ability.getId(), mana.getSourceId(), ability.getControllerId(), 0, mana.getFlag())); - if (spendAnyMana) { - mana.removeAny(); - } else { - mana.remove(manaType); - } - lockManaType(); // pay only one mana if mana payment is set to manually - return true; + if (filter != null) { + MageObject sourceObject = game.getObject(mana.getSourceId()); + if (!filter.match(sourceObject, game)) { + continue; } + } + boolean spendAnyMana = spendAnyMana(ability, game); + if (mana.get(manaType) > 0 || (spendAnyMana && mana.count() > 0)) { + game.fireEvent(new GameEvent(GameEvent.EventType.MANA_PAYED, ability.getId(), mana.getSourceId(), ability.getControllerId(), 0, mana.getFlag())); + if (spendAnyMana) { + mana.removeAny(); + } else { + mana.remove(manaType); + } + lockManaType(); // pay only one mana if mana payment is set to manually + return true; } } return false; From 1c085b30e20e20310e7ede173f732f06aa20fc71 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 3 Apr 2015 16:53:50 +0200 Subject: [PATCH 034/175] Merge origin/master Conflicts: Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java --- Mage/src/mage/abilities/AbilityImpl.java | 2 +- .../effects/common/ReturnFromExileForSourceEffect.java | 7 ++++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 9a49dbe76c..84fec853f2 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -326,7 +326,7 @@ public abstract class AbilityImpl implements Ability { if (getTargets().size() > 0 && getTargets().chooseTargets(getEffects().get(0).getOutcome(), this.controllerId, this, game) == false) { if ((variableManaCost != null || announceString != null) && !game.isSimulation()) { game.informPlayer(controller, new StringBuilder(sourceObject != null ? sourceObject.getLogName(): "").append(": no valid targets with this value of X").toString()); - } + } return false; // when activation of ability is canceled during target selection } } // end modes diff --git a/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java b/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java index 278c4ddb89..6b22884e07 100644 --- a/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java +++ b/Mage/src/mage/abilities/effects/common/ReturnFromExileForSourceEffect.java @@ -106,9 +106,10 @@ public class ReturnFromExileForSourceEffect extends OneShotEffect { if (card == null) { return false; } - if (!game.isSimulation()) - game.informPlayers(controller.getName() + " moves " + card.getLogName() + " from exile to " + zone.toString().toLowerCase()); - card.moveToZone(zone, source.getSourceId(), game, tapped); + if (!game.isSimulation()) { + game.informPlayers(controller.getName() + " moves " + card.getLogName() + " from exile to " + returnToZone.toString().toLowerCase()); + } + card.moveToZone(returnToZone, source.getSourceId(), game, tapped); } exile.clear(); } From 42d34e754fa6f9ca342efd4a56c34c6c8bed99f6 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 3 Apr 2015 17:28:29 +0200 Subject: [PATCH 035/175] * Polymorphous Rush - Fixed missing filter (controlled creatures). --- .../src/mage/sets/journeyintonyx/PolymorphousRush.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java b/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java index fdb2adbfe7..fe4506ed66 100644 --- a/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java +++ b/Mage.Sets/src/mage/sets/journeyintonyx/PolymorphousRush.java @@ -31,7 +31,6 @@ import java.util.UUID; import mage.abilities.Ability; import mage.abilities.abilityword.StriveAbility; import mage.abilities.effects.OneShotEffect; -import mage.abilities.effects.common.CopyPermanentEffect; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Duration; @@ -52,7 +51,9 @@ import mage.util.functions.EmptyApplyToPermanent; * @author LevelX2 */ public class PolymorphousRush extends CardImpl { - + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature an opponent controls"); + static { filter.add(new ControllerPredicate(TargetController.YOU)); } @@ -61,10 +62,9 @@ public class PolymorphousRush extends CardImpl { super(ownerId, 46, "Polymorphous Rush", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{2}{U}"); this.expansionSetCode = "JOU"; - this.color.setBlue(true); - // Strive - Polymorphous Rush costs {1}{U} more to cast for each target beyond the first. this.addAbility(new StriveAbility("{1}{U}")); + // Choose a creature on the battlefield. Any number of target creatures you control each become a copy of that creature until end of turn. this.getSpellAbility().addTarget(new TargetCreaturePermanent(0, Integer.MAX_VALUE, filter, false)); this.getSpellAbility().addEffect(new PolymorphousRushCopyEffect()); From 763d1ae32c2b5aee2a8b8692692e974e54c0c4b3 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Fri, 3 Apr 2015 19:36:07 +0200 Subject: [PATCH 036/175] =?UTF-8?q?Rename=20Krond=20=E2=80=94=20Clothes=20?= =?UTF-8?q?in=20a=20Bag.dck=20to=20Krond=20-=20Clothes=20in=20a=20Bag.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...rond — Clothes in a Bag.dck => Krond - Clothes in a Bag.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2013/Modern/DailyMTG/{Krond — Clothes in a Bag.dck => Krond - Clothes in a Bag.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond — Clothes in a Bag.dck b/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond - Clothes in a Bag.dck similarity index 92% rename from Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond — Clothes in a Bag.dck rename to Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond - Clothes in a Bag.dck index 89855a54e6..5e5d8f8e1e 100644 --- a/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond — Clothes in a Bag.dck +++ b/Mage.Client/release/sample-decks/2013/Modern/DailyMTG/Krond - Clothes in a Bag.dck @@ -1,4 +1,4 @@ -NAME:Krond Clothes in a Bag +NAME:Krond — Clothes in a Bag 1 [CHK:10] Ghostly Prison 2 [PC2:9] Kor Spiritdancer 4 [M13:185] Rancor From 18a4a98f1acee327ce9bef252fe7e23ae23ab894 Mon Sep 17 00:00:00 2001 From: betasteward Date: Fri, 3 Apr 2015 13:37:11 -0400 Subject: [PATCH 037/175] moved copied cards to GameState --- .../test/cards/copy/IsochronScepterTest.java | 114 ++++++++++++++++++ .../cards/copy/ReversalOfFortuneTest.java | 90 ++++++++++++++ .../mage/test/cards/copy/SpelltwineTest.java | 72 +++++++++++ Mage/src/mage/game/Game.java | 1 - Mage/src/mage/game/GameImpl.java | 103 +++------------- Mage/src/mage/game/GameState.java | 43 ++++++- 6 files changed, 328 insertions(+), 95 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/copy/IsochronScepterTest.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/copy/ReversalOfFortuneTest.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/copy/SpelltwineTest.java diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/IsochronScepterTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/IsochronScepterTest.java new file mode 100644 index 0000000000..8ca4ed754f --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/IsochronScepterTest.java @@ -0,0 +1,114 @@ +/* + * 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 org.mage.test.cards.copy; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author BetaSteward + */ +public class IsochronScepterTest extends CardTestPlayerBase { + + + /** + * Isochron Scepter + * Artifact, 2 (2) + * Imprint — When Isochron Scepter enters the battlefield, you may exile an + * instant card with converted mana cost 2 or less from your hand. + * {2}, {T}: You may copy the exiled card. If you do, you may cast the copy + * without paying its mana cost. + * + */ + @Test + public void testImprint() { + addCard(Zone.BATTLEFIELD, playerA, "Forest", 4); + addCard(Zone.HAND, playerA, "Isochron Scepter"); + addCard(Zone.HAND, playerA, "Lightning Bolt"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Isochron Scepter"); + addTarget(playerA, "Lightning Bolt"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Isochron Scepter", 1); + assertExileCount("Lightning Bolt", 1); + assertLife(playerB, 20); + + } + + @Test + public void testCopyCard() { + addCard(Zone.BATTLEFIELD, playerA, "Forest", 4); + addCard(Zone.HAND, playerA, "Isochron Scepter"); + addCard(Zone.HAND, playerA, "Lightning Bolt"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Isochron Scepter"); + addTarget(playerA, "Lightning Bolt"); + activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{2},{T}:"); + setChoice(playerA, "Yes"); + setChoice(playerA, "Yes"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertPermanentCount(playerA, "Isochron Scepter", 1); + assertExileCount("Lightning Bolt", 1); + assertGraveyardCount(playerA, "Lightning Bolt", 0); + assertLife(playerB, 17); + + } + + @Test + public void testCopyCardButDontCast() { + addCard(Zone.BATTLEFIELD, playerA, "Forest", 4); + addCard(Zone.HAND, playerA, "Isochron Scepter"); + addCard(Zone.HAND, playerA, "Lightning Bolt"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Isochron Scepter"); + addTarget(playerA, "Lightning Bolt"); + activateAbility(1, PhaseStep.POSTCOMBAT_MAIN, playerA, "{2},{T}:"); + setChoice(playerA, "Yes"); + setChoice(playerA, "No"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertPermanentCount(playerA, "Isochron Scepter", 1); + assertExileCount("Lightning Bolt", 1); + assertGraveyardCount(playerA, "Lightning Bolt", 0); + assertLife(playerB, 20); + + } + +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/ReversalOfFortuneTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/ReversalOfFortuneTest.java new file mode 100644 index 0000000000..31d1197c01 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/ReversalOfFortuneTest.java @@ -0,0 +1,90 @@ +/* + * 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 org.mage.test.cards.copy; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author BetaSteward + */ +public class ReversalOfFortuneTest extends CardTestPlayerBase { + + + /** + * Reversal of Fortune + * Sorcery, 4RR (6) + * Target opponent reveals his or her hand. You may copy an instant or sorcery + * card in it. If you do, you may cast the copy without paying its mana cost. + * + */ + @Test + public void testCopyCard() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 6); + addCard(Zone.HAND, playerA, "Reversal of Fortune"); + addCard(Zone.HAND, playerB, "Lightning Bolt"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Reversal of Fortune", playerB); + addTarget(playerA, "Lightning Bolt"); + setChoice(playerA, "Yes"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertGraveyardCount(playerA, "Reversal of Fortune", 1); + assertGraveyardCount(playerA, "Lightning Bolt", 0); + assertGraveyardCount(playerB, "Lightning Bolt", 0); + assertLife(playerB, 17); + + } + + @Test + public void testCopyCardButDontCast() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 6); + addCard(Zone.HAND, playerA, "Reversal of Fortune"); + addCard(Zone.HAND, playerB, "Lightning Bolt"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Reversal of Fortune", playerB); + addTarget(playerA, "Lightning Bolt"); + setChoice(playerA, "No"); + + setStopAt(1, PhaseStep.END_TURN); + execute(); + + assertGraveyardCount(playerA, "Reversal of Fortune", 1); + assertGraveyardCount(playerA, "Lightning Bolt", 0); + assertGraveyardCount(playerB, "Lightning Bolt", 0); + assertLife(playerB, 20); + + } + +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/copy/SpelltwineTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/copy/SpelltwineTest.java new file mode 100644 index 0000000000..dc1ed92799 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/copy/SpelltwineTest.java @@ -0,0 +1,72 @@ +/* + * 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 org.mage.test.cards.copy; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author BetaSteward + */ +public class SpelltwineTest extends CardTestPlayerBase { + + + /** + * Spelltwine + * Sorcery, 5U (6) + * Exile target instant or sorcery card from your graveyard and target instant + * or sorcery card from an opponent's graveyard. Copy those cards. Cast the + * copies if able without paying their mana costs. Exile Spelltwine. + * + */ + @Test + public void testCopyCards() { + addCard(Zone.BATTLEFIELD, playerA, "Island", 6); + addCard(Zone.HAND, playerA, "Spelltwine"); + addCard(Zone.GRAVEYARD, playerA, "Lightning Bolt"); + addCard(Zone.GRAVEYARD, playerB, "Shock"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Spelltwine"); + addTarget(playerA, "Lightning Bolt"); + addTarget(playerA, "Shock"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertExileCount("Spelltwine", 1); + assertExileCount("Lightning Bolt", 1); + assertExileCount("Shock", 1); + assertLife(playerB, 15); + + } + +} diff --git a/Mage/src/mage/game/Game.java b/Mage/src/mage/game/Game.java index 6694959ddf..0d59775657 100644 --- a/Mage/src/mage/game/Game.java +++ b/Mage/src/mage/game/Game.java @@ -80,7 +80,6 @@ public interface Game extends MageItem, Serializable { //game data methods void loadCards(Set cards, UUID ownerId); - void unloadCard(Card card); Collection getCards(); Object getCustomData(); void setCustomData(Object data); diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index 84e3cc1fc0..f73f0d9786 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -220,10 +220,7 @@ public abstract class GameImpl implements Game, Serializable { this.freeMulligans = game.freeMulligans; this.attackOption = game.attackOption; this.state = game.state.copy(); - // Ai simulation modifies e.g. zoneChangeCounter so copy is needed if AI active - for (Map.Entry entry: game.gameCards.entrySet()) { - this.gameCards.put(entry.getKey(), entry.getValue().copy()); - } + this.gameCards = game.gameCards; this.simulation = game.simulation; this.gameOptions = game.gameOptions; this.lki.putAll(game.lki); @@ -294,20 +291,6 @@ public abstract class GameImpl implements Game, Serializable { } } - @Override - public void unloadCard(Card card) { - gameCards.remove(card.getId()); - state.removeCard(card); - if (card.isSplitCard()) { - Card leftCard = ((SplitCard)card).getLeftHalfCard(); - gameCards.remove(leftCard.getId()); - state.removeCard(leftCard); - Card rightCard = ((SplitCard)card).getRightHalfCard(); - gameCards.remove(rightCard.getId()); - state.removeCard(rightCard); - } - } - @Override public Collection getCards() { return gameCards.values(); @@ -428,7 +411,11 @@ public abstract class GameImpl implements Game, Serializable { if (cardId == null) { return null; } - return gameCards.get(cardId); + Card card = gameCards.get(cardId); + if (card == null) { + return state.getCopiedCard(cardId); + } + return card; } @Override @@ -1328,14 +1315,7 @@ public abstract class GameImpl implements Game, Serializable { @Override public Card copyCard(Card cardToCopy, Ability source, UUID newController) { - Card copiedCard = cardToCopy.copy(); - copiedCard.assignNewId(); - copiedCard.setCopy(true); - Set cards = new HashSet<>(); - cards.add(copiedCard); - loadCards(cards, source.getControllerId()); - - return copiedCard; + return state.copyCard(cardToCopy, source, this); } @Override @@ -1437,30 +1417,13 @@ public abstract class GameImpl implements Game, Serializable { } } - // 704.5e - for (Player player: getPlayers().values()) { - for (Card card: player.getHand().getCards(this)) { - if (card.isCopy()) { - player.getHand().remove(card); - this.unloadCard(card); - } - } - for (Card card: player.getGraveyard().getCards(this)) { - if (card.isCopy()) { - player.getGraveyard().remove(card); - this.unloadCard(card); - } - } - } + // 704.5e If a copy of a spell is in a zone other than the stack, it ceases to exist. If a copy of a card is in any zone other than the stack or the battlefield, it ceases to exist. // (Isochron Scepter) 12/1/2004: If you don't want to cast the copy, you can choose not to; the copy ceases to exist the next time state-based actions are checked. - for (Card card: this.getState().getExile().getAllCards(this)) { - if (card.isCopy()) { - this.getState().getExile().removeCard(card, this); - this.unloadCard(card); - } - } - // TODO Library + graveyard - + for (Card card: this.getState().getCopiedCards()) { + Zone zone = state.getZone(card.getId()); + if (zone != Zone.BATTLEFIELD && zone != Zone.STACK) + state.removeCopiedCard(card); + } List planeswalkers = new ArrayList<>(); List legendary = new ArrayList<>(); @@ -2277,14 +2240,11 @@ public abstract class GameImpl implements Game, Serializable { switch (command.getKey()) { case HAND: if (command.getValue().equals("clear")) { - removeCards(player.getHand()); + player.getHand().clear(); } break; case LIBRARY: if (command.getValue().equals("clear")) { - for (UUID card : player.getLibrary().getCardList()) { - removeCard(card); - } player.getLibrary().clear(); } break; @@ -2315,22 +2275,6 @@ public abstract class GameImpl implements Game, Serializable { return lki; } - private void removeCards(Cards cards) { - for (UUID card : cards) { - removeCard(card); - } - cards.clear(); - } - - private void removeCard(UUID cardId) { - Card card = this.getCard(cardId); - if(card != null && card.isSplitCard()) { - gameCards.remove(((SplitCard)card).getLeftHalfCard().getId()); - gameCards.remove(((SplitCard)card).getRightHalfCard().getId()); - } - gameCards.remove(cardId); - } - @Override public void cheat(UUID ownerId, List library, List hand, List battlefield, List graveyard) { Player player = getPlayer(ownerId); @@ -2374,25 +2318,6 @@ public abstract class GameImpl implements Game, Serializable { loadCards(set, ownerId); } - public void replaceLibrary(List cardsDownToTop, UUID ownerId) { - Player player = getPlayer(ownerId); - if (player != null) { - for (UUID card : player.getLibrary().getCardList()) { - removeCard(card); - } - player.getLibrary().clear(); - Set cards = new HashSet<>(); - for (Card card : cardsDownToTop) { - cards.add(card); - } - loadCards(cards, ownerId); - - for (Card card : cards) { - player.getLibrary().putOnTop(card, this); - } - } - } - @Override public boolean endTurn() { getTurn().endTurn(this, getActivePlayerId()); diff --git a/Mage/src/mage/game/GameState.java b/Mage/src/mage/game/GameState.java index 5240c08e1b..6a5b3d98dc 100644 --- a/Mage/src/mage/game/GameState.java +++ b/Mage/src/mage/game/GameState.java @@ -105,7 +105,8 @@ public class GameState implements Serializable, Copyable { private List simultaneousEvents = new ArrayList<>(); private Map cardState = new HashMap<>(); private Map zoneChangeCounter = new HashMap<>(); - + private Map copiedCards = new HashMap<>(); + public GameState() { players = new Players(); playerList = new PlayerList(); @@ -161,6 +162,7 @@ public class GameState implements Serializable, Copyable { cardState.put(entry.getKey(), entry.getValue().copy()); } this.zoneChangeCounter.putAll(state.zoneChangeCounter); + this.copiedCards.putAll(state.copiedCards); } @Override @@ -499,6 +501,7 @@ public class GameState implements Serializable, Copyable { this.simultaneousEvents = state.simultaneousEvents; this.cardState = state.cardState; this.zoneChangeCounter = state.zoneChangeCounter; + this.copiedCards = state.copiedCards; } public void addSimultaneousEvent(GameEvent event, Game game) { @@ -540,13 +543,18 @@ public class GameState implements Serializable, Copyable { } } - public void removeCard(Card card) { - zones.remove(card.getId()); + public void removeCopiedCard(Card card) { + if (copiedCards.containsKey(card.getId())) { + copiedCards.remove(card.getId()); + cardState.remove(card.getId()); + zones.remove(card.getId()); + zoneChangeCounter.remove(card.getId()); + } // TODO Watchers? // TODO Abilities? if (card.isSplitCard()) { - removeCard( ((SplitCard)card).getLeftHalfCard()); - removeCard( ((SplitCard)card).getRightHalfCard()); + removeCopiedCard( ((SplitCard)card).getLeftHalfCard()); + removeCopiedCard( ((SplitCard)card).getRightHalfCard()); } } @@ -819,4 +827,29 @@ public class GameState implements Serializable, Copyable { this.zoneChangeCounter.put(objectId, value); } + public Card getCopiedCard(UUID cardId) { + return copiedCards.get(cardId); + } + + public Collection getCopiedCards() { + return copiedCards.values(); + } + + public Card copyCard(Card cardToCopy, Ability source, Game game) { + Card copiedCard = cardToCopy.copy(); + copiedCard.assignNewId(); + copiedCard.setOwnerId(source.getControllerId()); + copiedCard.setCopy(true); + copiedCards.put(copiedCard.getId(), copiedCard); + addCard(copiedCard); + if (copiedCard.isSplitCard()) { + Card leftCard = ((SplitCard)copiedCard).getLeftHalfCard(); + copiedCards.put(leftCard.getId(), leftCard); + addCard(leftCard); + Card rightCard = ((SplitCard)copiedCard).getRightHalfCard(); + copiedCards.put(rightCard.getId(), rightCard); + addCard(rightCard); + } + return copiedCard; + } } From fb62c44e4504cac1fd5c30d7097ef05db78bc8a7 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:08:22 +0200 Subject: [PATCH 038/175] =?UTF-8?q?Rename=20Soul=20Sisters=20=E2=80=93=20C?= =?UTF-8?q?hris=20Folk.dck=20to=20Soul=20Sisters=20-=20Chris=20Folk.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...l Sisters – Chris Folk.dck => Soul Sisters - Chris Folk.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{Soul Sisters – Chris Folk.dck => Soul Sisters - Chris Folk.dck} (91%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Soul Sisters – Chris Folk.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Soul Sisters - Chris Folk.dck similarity index 91% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Soul Sisters – Chris Folk.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Soul Sisters - Chris Folk.dck index 25da037b93..c00393a222 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Soul Sisters – Chris Folk.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Soul Sisters - Chris Folk.dck @@ -1,4 +1,4 @@ -NAME:Soul Sisters Chris Folk +NAME:Soul Sisters – Chris Folk 4 [LRW:281] Windbrisk Heights 4 [M11:28] Serra Ascendant 4 [SHM:23] Spectral Procession From 69832cbaf3707b99c8b061a4a00dc929f360985d Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:08:46 +0200 Subject: [PATCH 039/175] =?UTF-8?q?Rename=20RG=20Tron=20=E2=80=93=20Jacob?= =?UTF-8?q?=20Wilson.dck=20to=20RG=20Tron=20-=20Jacob=20Wilson.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{RG Tron – Jacob Wilson.dck => RG Tron - Jacob Wilson.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{RG Tron – Jacob Wilson.dck => RG Tron - Jacob Wilson.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/RG Tron – Jacob Wilson.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/RG Tron - Jacob Wilson.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/RG Tron – Jacob Wilson.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/RG Tron - Jacob Wilson.dck index 71d2f24dbc..2d8fd90f67 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/RG Tron – Jacob Wilson.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/RG Tron - Jacob Wilson.dck @@ -1,4 +1,4 @@ -NAME:RG Tron Jacob Wilson +NAME:RG Tron – Jacob Wilson 4 [10E:302] Sylvan Scrying 4 [ROE:174] Ancient Stirrings 4 [CMD:254] Oblivion Stone From 9bba381d9a9e4d6036c9c6bc05d3535d1aaea88a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:09:08 +0200 Subject: [PATCH 040/175] =?UTF-8?q?Rename=20Affinity=20=E2=80=93=20Alex=20?= =?UTF-8?q?Ledo.dck=20to=20Affinity=20-=20Alex=20Ledo.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{Affinity – Alex Ledo.dck => Affinity - Alex Ledo.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{Affinity – Alex Ledo.dck => Affinity - Alex Ledo.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Affinity – Alex Ledo.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Affinity - Alex Ledo.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Affinity – Alex Ledo.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Affinity - Alex Ledo.dck index 0210458ec5..e883b2e0ad 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Affinity – Alex Ledo.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Affinity - Alex Ledo.dck @@ -1,4 +1,4 @@ -NAME:Affinity Alex Ledo +NAME:Affinity – Alex Ledo 2 [DDF:71] Thoughtcast 4 [HOP:110] Cranial Plating 4 [MMA:220] Blinkmoth Nexus From 789797fa9197e32b81a28cef3920f5797c2a284a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:10:19 +0200 Subject: [PATCH 041/175] =?UTF-8?q?Rename=20Cruel=20Control=20=E2=80=93=20?= =?UTF-8?q?Jeremiah=20Duggan.dck=20to=20Cruel=20Control=20-=20Jeremiah=20D?= =?UTF-8?q?uggan.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Jeremiah Duggan.dck => Cruel Control - Jeremiah Duggan.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{Cruel Control – Jeremiah Duggan.dck => Cruel Control - Jeremiah Duggan.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control – Jeremiah Duggan.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control - Jeremiah Duggan.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control – Jeremiah Duggan.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control - Jeremiah Duggan.dck index 3cb4a046ff..b5a94611f3 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control – Jeremiah Duggan.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control - Jeremiah Duggan.dck @@ -1,4 +1,4 @@ -NAME:Cruel Control Jeremiah Duggan +NAME:Cruel Control – Jeremiah Duggan 1 [WWK:134] Creeping Tar Pit 1 [PLC:85] Damnation 1 [RTR:238] Blood Crypt From 086f042ba2b39670307f94587b212239c75bc1c0 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:10:43 +0200 Subject: [PATCH 042/175] =?UTF-8?q?Rename=20Cruel=20Control=20=E2=80=93=20?= =?UTF-8?q?Scott=20Lewis.dck=20to=20Cruel=20Control=20-=20Scott=20Lewis.dc?= =?UTF-8?q?k?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ontrol – Scott Lewis.dck => Cruel Control - Scott Lewis.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{Cruel Control – Scott Lewis.dck => Cruel Control - Scott Lewis.dck} (93%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control – Scott Lewis.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control - Scott Lewis.dck similarity index 93% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control – Scott Lewis.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control - Scott Lewis.dck index 2e9c975da1..74aee52fc6 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control – Scott Lewis.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Cruel Control - Scott Lewis.dck @@ -1,4 +1,4 @@ -NAME:Cruel Control Scott Lewis +NAME:Cruel Control – Scott Lewis 1 [WWK:134] Creeping Tar Pit 1 [PLC:85] Damnation 2 [RTR:238] Blood Crypt From 99b1e9465a3b119977bf034148b3d739637a09f9 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:11:02 +0200 Subject: [PATCH 043/175] =?UTF-8?q?Rename=20Mono-Red=20Burn=20=E2=80=93=20?= =?UTF-8?q?Eric=20Rath.dck=20to=20Mono-Red=20Burn=20-=20Eric=20Rath.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...o-Red Burn – Eric Rath.dck => Mono-Red Burn - Eric Rath.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{Mono-Red Burn – Eric Rath.dck => Mono-Red Burn - Eric Rath.dck} (90%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Mono-Red Burn – Eric Rath.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Mono-Red Burn - Eric Rath.dck similarity index 90% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Mono-Red Burn – Eric Rath.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Mono-Red Burn - Eric Rath.dck index 835316b641..5f97696ebd 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Mono-Red Burn – Eric Rath.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Mono-Red Burn - Eric Rath.dck @@ -1,4 +1,4 @@ -NAME:Mono-Red Burn Eric Rath +NAME:Mono-Red Burn – Eric Rath 4 [10E:237] Spark Elemental 4 [M11:149] Lightning Bolt 4 [ZEN:211] Arid Mesa From fc5e68864d3be738f17e87fd831b708cb3e9cbb6 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:11:22 +0200 Subject: [PATCH 044/175] =?UTF-8?q?Rename=20Tribal=20Zoo=20=E2=80=93=20Bil?= =?UTF-8?q?ly=20Hahn.dck=20to=20Tribal=20Zoo=20-=20Billy=20Hahn.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{Tribal Zoo – Billy Hahn.dck => Tribal Zoo - Billy Hahn.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{Tribal Zoo – Billy Hahn.dck => Tribal Zoo - Billy Hahn.dck} (93%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Tribal Zoo – Billy Hahn.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Tribal Zoo - Billy Hahn.dck similarity index 93% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Tribal Zoo – Billy Hahn.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Tribal Zoo - Billy Hahn.dck index 6aa9e7fa31..2f8992d780 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Tribal Zoo – Billy Hahn.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/Tribal Zoo - Billy Hahn.dck @@ -1,4 +1,4 @@ -NAME:Tribal Zoo Billy Hahn +NAME:Tribal Zoo – Billy Hahn 1 [GTC:167] Ghor-Clan Rampager 4 [MMA:166] Tarmogoyf 4 [ZEN:220] Misty Rainforest From d3c41055029c25acc2607cf181eca81d92e9256a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:11:43 +0200 Subject: [PATCH 045/175] =?UTF-8?q?Rename=20White-Black=20Tokens=20?= =?UTF-8?q?=E2=80=93=20Jason=20Wrisley.dck=20to=20White-Black=20Tokens=20-?= =?UTF-8?q?=20Jason=20Wrisley.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Jason Wrisley.dck => White-Black Tokens - Jason Wrisley.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{White-Black Tokens – Jason Wrisley.dck => White-Black Tokens - Jason Wrisley.dck} (91%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black Tokens – Jason Wrisley.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black Tokens - Jason Wrisley.dck similarity index 91% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black Tokens – Jason Wrisley.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black Tokens - Jason Wrisley.dck index 4b154af517..2a855b8787 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black Tokens – Jason Wrisley.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black Tokens - Jason Wrisley.dck @@ -1,4 +1,4 @@ -NAME:White-Black Tokens Jason Wrisley +NAME:White-Black Tokens – Jason Wrisley 2 [ROE:115] Inquisition of Kozilek 3 [WWK:145] Tectonic Edge 4 [SHM:23] Spectral Procession From 05aa3a60e0a79a0555c94fd5f305d4892f3a90d1 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:12:07 +0200 Subject: [PATCH 046/175] =?UTF-8?q?Rename=20White-Black-Red=20Burn=20?= =?UTF-8?q?=E2=80=93=20Phillip=20Gorz.dck=20to=20White-Black-Red=20Burn=20?= =?UTF-8?q?-=20Phillip=20Gorz.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Phillip Gorz.dck => White-Black-Red Burn - Phillip Gorz.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{White-Black-Red Burn – Phillip Gorz.dck => White-Black-Red Burn - Phillip Gorz.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black-Red Burn – Phillip Gorz.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black-Red Burn - Phillip Gorz.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black-Red Burn – Phillip Gorz.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black-Red Burn - Phillip Gorz.dck index ebaf46ca22..e9e8798099 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black-Red Burn – Phillip Gorz.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Black-Red Burn - Phillip Gorz.dck @@ -1,4 +1,4 @@ -NAME:Grixis Control Thomas Mendenhall +NAME:Grixis Control – Thomas Mendenhall 4 [ROE:115] Inquisition of Kozilek 3 [WWK:134] Creeping Tar Pit 3 [ISD:105] Liliana of the Veil From 82ecb27318e72df72a6b01af5a9c87966540ad21 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:12:27 +0200 Subject: [PATCH 047/175] =?UTF-8?q?Rename=20White-Blue=20Tron=20=E2=80=93?= =?UTF-8?q?=20Kirby=20Kaufman.dck=20to=20White-Blue=20Tron=20-=20Kirby=20K?= =?UTF-8?q?aufman.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... – Kirby Kaufman.dck => White-Blue Tron - Kirby Kaufman.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/{White-Blue Tron – Kirby Kaufman.dck => White-Blue Tron - Kirby Kaufman.dck} (93%) diff --git a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Blue Tron – Kirby Kaufman.dck b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Blue Tron - Kirby Kaufman.dck similarity index 93% rename from Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Blue Tron – Kirby Kaufman.dck rename to Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Blue Tron - Kirby Kaufman.dck index 969d90e902..b585f42d6b 100644 --- a/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Blue Tron – Kirby Kaufman.dck +++ b/Mage.Client/release/sample-decks/2014/Modern/GP Minneapolis/Trial Winning Decklists/White-Blue Tron - Kirby Kaufman.dck @@ -1,4 +1,4 @@ -NAME:White-Blue Tron Kirby Kaufman +NAME:White-Blue Tron – Kirby Kaufman 2 [WWK:133] Celestial Colonnade 1 [RTR:35] Cyclonic Rift 4 [9ED:329] Urza's Tower From 89065dd69e219544a423467cd8258dbff0bb8205 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:27:10 +0200 Subject: [PATCH 048/175] =?UTF-8?q?Rename=20Alexander=20Pasgaard=20?= =?UTF-8?q?=E2=80=93=20Jeskai.dck=20to=20Alexander=20Pasgaard=20-=20Jeskai?= =?UTF-8?q?.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...er Pasgaard – Jeskai.dck => Alexander Pasgaard - Jeskai.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/{Alexander Pasgaard – Jeskai.dck => Alexander Pasgaard - Jeskai.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Alexander Pasgaard – Jeskai.dck b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Alexander Pasgaard - Jeskai.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Alexander Pasgaard – Jeskai.dck rename to Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Alexander Pasgaard - Jeskai.dck index 3f68a3cbfd..f87ff7cc2d 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Alexander Pasgaard – Jeskai.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Alexander Pasgaard - Jeskai.dck @@ -1,4 +1,4 @@ -NAME:Alexander Pasgaard Jeskai +NAME:Alexander Pasgaard – Jeskai 4 [KTK:184] Mantis Rider 1 [M15:240] Battlefield Forge 4 [KTK:181] Jeskai Charm From cca261e3d563b6fbd6fd5a447e64a6fe3d97a55f Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:27:40 +0200 Subject: [PATCH 049/175] =?UTF-8?q?Rename=20Christian=20Seibold=20?= =?UTF-8?q?=E2=80=93=20Sidisi.dck=20to=20Christian=20Seibold=20-=20Sidisi.?= =?UTF-8?q?dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...tian Seibold – Sidisi.dck => Christian Seibold - Sidisi.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/{Christian Seibold – Sidisi.dck => Christian Seibold - Sidisi.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Christian Seibold – Sidisi.dck b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Christian Seibold - Sidisi.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Christian Seibold – Sidisi.dck rename to Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Christian Seibold - Sidisi.dck index 88e519c159..c6153d0b5a 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Christian Seibold – Sidisi.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Christian Seibold - Sidisi.dck @@ -1,4 +1,4 @@ -NAME:Christian Seibold Sidisi +NAME:Christian Seibold – Sidisi 3 [KTK:239] Polluted Delta 1 [KTK:249] Wooded Foothills 2 [KTK:196] Sagu Mauler From f691e6acbbad33053e770865978de9c637baf31b Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:28:27 +0200 Subject: [PATCH 050/175] =?UTF-8?q?Rename=20Einar=20Baldvinsson=20?= =?UTF-8?q?=E2=80=93=20Temur=20Aggro.dck=20to=20Einar=20Baldvinsson=20-=20?= =?UTF-8?q?Temur=20Aggro.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...on – Temur Aggro.dck => Einar Baldvinsson - Temur Aggro.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/{Einar Baldvinsson – Temur Aggro.dck => Einar Baldvinsson - Temur Aggro.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Einar Baldvinsson – Temur Aggro.dck b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Einar Baldvinsson - Temur Aggro.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Einar Baldvinsson – Temur Aggro.dck rename to Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Einar Baldvinsson - Temur Aggro.dck index 81a814b54b..dd94786b27 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Einar Baldvinsson – Temur Aggro.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Einar Baldvinsson - Temur Aggro.dck @@ -1,4 +1,4 @@ -NAME:Einar Baldvinsson Temur Aggro +NAME:Einar Baldvinsson – Temur Aggro 4 [KTK:197] Savage Knuckleblade 4 [KTK:249] Wooded Foothills 3 [M15:155] Lightning Strike From 867f1da8b9fba7aa17c1cabd17f9a3f3e4f2f51f Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:28:47 +0200 Subject: [PATCH 051/175] =?UTF-8?q?Rename=20Giovanni=20Rosi=20=E2=80=93=20?= =?UTF-8?q?Mono-red.dck=20to=20Giovanni=20Rosi=20-=20Mono-red.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...iovanni Rosi – Mono-red.dck => Giovanni Rosi - Mono-red.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/{Giovanni Rosi – Mono-red.dck => Giovanni Rosi - Mono-red.dck} (91%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Giovanni Rosi – Mono-red.dck b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Giovanni Rosi - Mono-red.dck similarity index 91% rename from Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Giovanni Rosi – Mono-red.dck rename to Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Giovanni Rosi - Mono-red.dck index 24d7e766c8..2385fcbbdb 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Giovanni Rosi – Mono-red.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Giovanni Rosi - Mono-red.dck @@ -1,4 +1,4 @@ -NAME:Giovanni Rosi Mono-red +NAME:Giovanni Rosi – Mono-red 3 [M15:155] Lightning Strike 4 [THS:119] Dragon Mantle 4 [M15:145] Goblin Rabblemaster From 175f84f22cf94a081c979712fc4f280997dd02aa Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:29:05 +0200 Subject: [PATCH 052/175] =?UTF-8?q?Rename=20Lukas=20Blohon=20=E2=80=93=20G?= =?UTF-8?q?=5FB=20Enchantress.dck=20to=20Lukas=20Blohon=20-=20G=5FB=20Ench?= =?UTF-8?q?antress.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...– G_B Enchantress.dck => Lukas Blohon - G_B Enchantress.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/{Lukas Blohon – G_B Enchantress.dck => Lukas Blohon - G_B Enchantress.dck} (93%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Lukas Blohon – G_B Enchantress.dck b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Lukas Blohon - G_B Enchantress.dck similarity index 93% rename from Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Lukas Blohon – G_B Enchantress.dck rename to Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Lukas Blohon - G_B Enchantress.dck index 7dc0d50712..d4890c1bba 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Lukas Blohon – G_B Enchantress.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Lukas Blohon - G_B Enchantress.dck @@ -1,4 +1,4 @@ -NAME:Matej Zatlkaj Jeskai +NAME:Matej Zatlkaj – Jeskai 4 [KTK:184] Mantis Rider 3 [M15:240] Battlefield Forge 2 [KTK:250] Plains From 4a066b83e370ed65b9a94b298916a4045c2113fe Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:29:37 +0200 Subject: [PATCH 053/175] =?UTF-8?q?Rename=20Matteo=20Cirigliano=20?= =?UTF-8?q?=E2=80=93=20G=5FB=20Enchantress.dck=20to=20Matteo=20Cirigliano?= =?UTF-8?q?=20-=20G=5FB=20Enchantress.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ..._B Enchantress.dck => Matteo Cirigliano - G_B Enchantress.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/{Matteo Cirigliano – G_B Enchantress.dck => Matteo Cirigliano - G_B Enchantress.dck} (91%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Matteo Cirigliano – G_B Enchantress.dck b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Matteo Cirigliano - G_B Enchantress.dck similarity index 91% rename from Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Matteo Cirigliano – G_B Enchantress.dck rename to Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Matteo Cirigliano - G_B Enchantress.dck index 61304c2cfe..fbd2f69ced 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Matteo Cirigliano – G_B Enchantress.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Matteo Cirigliano - G_B Enchantress.dck @@ -1,4 +1,4 @@ -NAME:Matteo Cirigliano G_B Enchantress +NAME:Matteo Cirigliano – G_B Enchantress 2 [KTK:235] Jungle Hollow 3 [M15:198] Satyr Wayfinder 4 [JOU:165] Temple of Malady From dcdf37b31f794a6db7a0dae19c7b4862685db71a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:29:56 +0200 Subject: [PATCH 054/175] =?UTF-8?q?Rename=20Thiago=20Rodrigues=20=E2=80=93?= =?UTF-8?q?=20Abzan=20Midrange.dck=20to=20Thiago=20Rodrigues=20-=20Abzan?= =?UTF-8?q?=20Midrange.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... Abzan Midrange.dck => Thiago Rodrigues - Abzan Midrange.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/{Thiago Rodrigues – Abzan Midrange.dck => Thiago Rodrigues - Abzan Midrange.dck} (92%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Thiago Rodrigues – Abzan Midrange.dck b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Thiago Rodrigues - Abzan Midrange.dck similarity index 92% rename from Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Thiago Rodrigues – Abzan Midrange.dck rename to Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Thiago Rodrigues - Abzan Midrange.dck index 5cb964770c..3c92fac208 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Thiago Rodrigues – Abzan Midrange.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/GP Stockholm 2014-11/Thiago Rodrigues - Abzan Midrange.dck @@ -1,4 +1,4 @@ -NAME:Thiago Rodrigues Abzan Midrange +NAME:Thiago Rodrigues – Abzan Midrange 4 [KTK:248] Windswept Heath 2 [KTK:250] Plains 1 [JOU:163] Mana Confluence From 35125e34629683fe3a79038a5fc93840bac1c5a5 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:38:43 +0200 Subject: [PATCH 055/175] =?UTF-8?q?Rename=20Jak=20Gem=E2=80=99s=20Constell?= =?UTF-8?q?ation=20Recursion.dck=20to=20Jak=20Gem's=20Constellation=20Recu?= =?UTF-8?q?rsion.dck?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...lation Recursion.dck => Jak Gem's Constellation Recursion.dck} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/{Jak Gem’s Constellation Recursion.dck => Jak Gem's Constellation Recursion.dck} (90%) diff --git a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem’s Constellation Recursion.dck b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem's Constellation Recursion.dck similarity index 90% rename from Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem’s Constellation Recursion.dck rename to Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem's Constellation Recursion.dck index f3a86c02f2..807028923b 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem’s Constellation Recursion.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem's Constellation Recursion.dck @@ -1,4 +1,4 @@ -NAME:Jak Gems Constellation Recursion +NAME:Jak Gem’s Constellation Recursion 4 [RTR:243] Overgrown Tomb 4 [BNG:75] Herald of Torment 4 [RTR:248] Temple Garden From 014e8a2f0fa771a4e69fa84005a4bfce3a33b65b Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 00:39:09 +0200 Subject: [PATCH 056/175] Update Jak Gem's Constellation Recursion.dck --- .../Jak Gem's Constellation Recursion.dck | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem's Constellation Recursion.dck b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem's Constellation Recursion.dck index 807028923b..394bbd3ef3 100644 --- a/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem's Constellation Recursion.dck +++ b/Mage.Client/release/sample-decks/2014/Standard/DailyMTG ReConstructed Enchantress to Meet You/Jak Gem's Constellation Recursion.dck @@ -1,4 +1,4 @@ -NAME:Jak Gem’s Constellation Recursion +NAME:Jak Gem's Constellation Recursion 4 [RTR:243] Overgrown Tomb 4 [BNG:75] Herald of Torment 4 [RTR:248] Temple Garden From 7ca9bbc7ff998b88c1ef5e54981b4397eef59b77 Mon Sep 17 00:00:00 2001 From: Andy Fries Date: Fri, 3 Apr 2015 19:40:26 -0700 Subject: [PATCH 057/175] fixed bug in SelfInflictedWound --- Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java index 8854fb26c7..a39a0461e3 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java @@ -107,7 +107,7 @@ class SelfInflictedWoundEffect extends OneShotEffect { Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { if (permanent.sacrifice(source.getSourceId(), game)) { - controller.loseLife(2, game); + targetOpponent.loseLife(2, game); } } From 7bae8e395d1e668cf8946c1d53bc379b0ae56bab Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 09:00:41 +0200 Subject: [PATCH 058/175] * Self-Inflicted Wound - Fixed target handling. --- .../src/mage/sets/dragonsoftarkir/SelfInflictedWound.java | 4 ++-- Mage/src/mage/target/TargetPermanent.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java b/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java index a39a0461e3..49fb75f952 100644 --- a/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java +++ b/Mage.Sets/src/mage/sets/dragonsoftarkir/SelfInflictedWound.java @@ -100,9 +100,9 @@ class SelfInflictedWoundEffect extends OneShotEffect { filter.add(new CardTypePredicate(CardType.CREATURE)); filter.add(new ControllerPredicate(TargetController.YOU)); filter.add(Predicates.or(new ColorPredicate(ObjectColor.GREEN), new ColorPredicate(ObjectColor.WHITE))); - TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, false); + TargetControlledPermanent target = new TargetControlledPermanent(1, 1, filter, true); - if (target.canChoose(targetOpponent.getId(), game)) { + if (target.canChoose(source.getSourceId(), targetOpponent.getId(), game)) { targetOpponent.chooseTarget(Outcome.Sacrifice, target, source, game); Permanent permanent = game.getPermanent(target.getFirstTarget()); if (permanent != null) { diff --git a/Mage/src/mage/target/TargetPermanent.java b/Mage/src/mage/target/TargetPermanent.java index cbca0bbf2c..baaac9edf3 100644 --- a/Mage/src/mage/target/TargetPermanent.java +++ b/Mage/src/mage/target/TargetPermanent.java @@ -119,10 +119,10 @@ public class TargetPermanent extends TargetObject { * * Takes into account notTarget parameter, in case it's true doesn't check for protection, shroud etc. * - * @param sourceId - the target event source - * @param sourceControllerId - controller of the target event source + * @param sourceId the target event source + * @param sourceControllerId controller of the target event source * @param game - * @return - true if enough valid {@link Permanent} exist + * @return true if enough valid {@link Permanent} exist */ @Override public boolean canChoose(UUID sourceId, UUID sourceControllerId, Game game) { From 72b484948837b05b92db0379f8efce1c24d6c15a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 09:57:45 +0200 Subject: [PATCH 059/175] Fixed a bug of new handling of copied cards. --- Mage/src/mage/game/GameImpl.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Mage/src/mage/game/GameImpl.java b/Mage/src/mage/game/GameImpl.java index f73f0d9786..e532957cef 100644 --- a/Mage/src/mage/game/GameImpl.java +++ b/Mage/src/mage/game/GameImpl.java @@ -1419,10 +1419,13 @@ public abstract class GameImpl implements Game, Serializable { // 704.5e If a copy of a spell is in a zone other than the stack, it ceases to exist. If a copy of a card is in any zone other than the stack or the battlefield, it ceases to exist. // (Isochron Scepter) 12/1/2004: If you don't want to cast the copy, you can choose not to; the copy ceases to exist the next time state-based actions are checked. - for (Card card: this.getState().getCopiedCards()) { + Iterator copiedCards = this.getState().getCopiedCards().iterator(); + while (copiedCards.hasNext()) { + Card card = copiedCards.next(); Zone zone = state.getZone(card.getId()); - if (zone != Zone.BATTLEFIELD && zone != Zone.STACK) - state.removeCopiedCard(card); + if (zone != Zone.BATTLEFIELD && zone != Zone.STACK) { + copiedCards.remove(); + } } List planeswalkers = new ArrayList<>(); From 44e58a9a35cc19d416648fdae914903684580d01 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 09:58:09 +0200 Subject: [PATCH 060/175] Fixed some problems of Amplify keyword (not tested yet). --- .../effects/common/AmplifyEffect.java | 46 ++++++++----------- 1 file changed, 19 insertions(+), 27 deletions(-) diff --git a/Mage/src/mage/abilities/effects/common/AmplifyEffect.java b/Mage/src/mage/abilities/effects/common/AmplifyEffect.java index 05d3851711..7f34a22524 100644 --- a/Mage/src/mage/abilities/effects/common/AmplifyEffect.java +++ b/Mage/src/mage/abilities/effects/common/AmplifyEffect.java @@ -5,7 +5,8 @@ */ package mage.abilities.effects.common; -import java.util.UUID; +import java.util.ArrayList; +import java.util.List; import mage.abilities.Ability; import mage.abilities.Mode; import mage.abilities.effects.ReplacementEffectImpl; @@ -15,6 +16,8 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.counters.CounterType; import mage.filter.common.FilterCreatureCard; +import mage.filter.predicate.Predicate; +import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; import mage.game.events.GameEvent; @@ -40,8 +43,6 @@ import mage.target.common.TargetCardInHand; */ public class AmplifyEffect extends ReplacementEffectImpl { - private static final FilterCreatureCard filter = new FilterCreatureCard("creatures cards to reveal"); - private final AmplifyFactor amplifyFactor; public enum AmplifyFactor { @@ -74,7 +75,7 @@ public class AmplifyEffect extends ReplacementEffectImpl { } public AmplifyEffect(AmplifyFactor amplifyFactor) { - super(Duration.EndOfGame, Outcome.Benefit); + super(Duration.EndOfGame, Outcome.BoostCreature); this.amplifyFactor = amplifyFactor; } @@ -90,38 +91,29 @@ public class AmplifyEffect extends ReplacementEffectImpl { @Override public boolean applies(GameEvent event, Ability source, Game game) { - if (event.getTargetId().equals(source.getSourceId())) { - Permanent sourcePermanent = game.getPermanent(source.getSourceId()); - game.getState().setValue(sourcePermanent.getId().toString() + "revealed", null); - return true; - } - return false; - } - - @Override - public boolean apply(Game game, Ability source) { - return false; + return event.getTargetId().equals(source.getSourceId()); } @Override public boolean replaceEvent(GameEvent event, Ability source, Game game) { - Permanent creature = game.getPermanent(event.getTargetId()); - Player controller = game.getPlayer(creature.getControllerId()); - if (controller != null) { - for (String subtype : creature.getSubtype()) { - filter.add(new SubtypePredicate((subtype))); + Permanent sourceCreature = game.getPermanent(event.getTargetId()); + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null && sourceCreature != null) { + FilterCreatureCard filter = new FilterCreatureCard("creatures cards to reveal"); + List filterSubtypes = new ArrayList<>(); + for (String subtype : sourceCreature.getSubtype()) { + filterSubtypes.add(new SubtypePredicate((subtype))); } + filter.add(Predicates.or(filterSubtypes)); if (controller.getHand().count(filter, source.getSourceId(), source.getControllerId(), game) > 0){ - if (controller.chooseUse(Outcome.Benefit, "Reveal cards?", game)) { + if (controller.chooseUse(outcome, "Reveal cards to Amplify?", game)) { TargetCardInHand target = new TargetCardInHand(0, Integer.MAX_VALUE, filter); - if (controller.choose(Outcome.Benefit, target, source.getSourceId(), game)) { + if (controller.choose(outcome, target, source.getSourceId(), game) && !target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); - for (UUID uuid : target.getTargets()) { - cards.add(controller.getHand().get(uuid, game)); - } + cards.addAll(target.getTargets()); int amountCounters = cards.size() * amplifyFactor.getFactor(); - creature.addCounters(CounterType.P1P1.createInstance(amountCounters), game); - controller.revealCards("cards", cards, game); + sourceCreature.addCounters(CounterType.P1P1.createInstance(amountCounters), game); + controller.revealCards(sourceCreature.getLogName(), cards, game); } } } From a60ba1b20f9c2b76a29b9f66e12cf8ab97364a08 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 12:42:48 +0200 Subject: [PATCH 061/175] Added Amplify Test. --- .../cards/abilities/keywords/AmplifyTest.java | 119 ++++++++++++++++++ .../effects/common/AmplifyEffect.java | 9 +- 2 files changed, 125 insertions(+), 3 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/AmplifyTest.java diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/AmplifyTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/AmplifyTest.java new file mode 100644 index 0000000000..b65c521b24 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/AmplifyTest.java @@ -0,0 +1,119 @@ +/* + * 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 org.mage.test.cards.abilities.keywords; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ + +public class AmplifyTest extends CardTestPlayerBase { + + /** + * Tests if +1/+1 counters are added + */ + @Test + public void testAmplifyOneCard() { + // Creature — Dragon - Dragon 5/5 {5}{R}{R} + // Amplify 3 (As this creature enters the battlefield, put three +1/+1 counters on it for each Dragon card you reveal in your hand.) + // {T}: Kilnmouth Dragon deals damage equal to the number of +1/+1 counters on it to target creature or player + addCard(Zone.HAND, playerA, "Kilnmouth Dragon", 2); + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 7); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Kilnmouth Dragon"); + setChoice(playerA, "Yes"); + addTarget(playerA, "Kilnmouth Dragon"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Kilnmouth Dragon", 1); + assertPowerToughness(playerA, "Kilnmouth Dragon", 8,8); // 5 + 3 from Amplify + } + /** + * Tests if +1/+1 counters are added + */ + @Test + public void testAmplifyTwoCards() { + // Creature — Dragon - Dragon 5/5 {5}{R}{R} + // Amplify 3 (As this creature enters the battlefield, put three +1/+1 counters on it for each Dragon card you reveal in your hand.) + // {T}: Kilnmouth Dragon deals damage equal to the number of +1/+1 counters on it to target creature or player + addCard(Zone.HAND, playerA, "Kilnmouth Dragon", 2); + addCard(Zone.HAND, playerA, "Phantasmal Dragon", 1); + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 7); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Kilnmouth Dragon"); + setChoice(playerA, "Yes"); + addTarget(playerA, "Kilnmouth Dragon^Phantasmal Dragon"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Kilnmouth Dragon", 1); + assertPowerToughness(playerA, "Kilnmouth Dragon", 11,11); // 5 + 6 from Amplify + } + /** + * Tests that it works for Clone + */ + @Test + public void testAmplifyWithClone() { + // Creature — Dragon - Dragon 5/5 {5}{R}{R} + // Amplify 3 (As this creature enters the battlefield, put three +1/+1 counters on it for each Dragon card you reveal in your hand.) + // {T}: Kilnmouth Dragon deals damage equal to the number of +1/+1 counters on it to target creature or player + addCard(Zone.HAND, playerA, "Kilnmouth Dragon", 2); + addCard(Zone.BATTLEFIELD, playerA, "Mountain", 7); + + addCard(Zone.HAND, playerB, "Clone", 1); + addCard(Zone.HAND, playerB, "Phantasmal Dragon", 1); + addCard(Zone.BATTLEFIELD, playerB, "Island", 4); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Kilnmouth Dragon"); + setChoice(playerA, "Yes"); + addTarget(playerA, "Kilnmouth Dragon"); + + castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Clone"); + setChoice(playerB, "Kilnmouth Dragon"); + setChoice(playerB, "Yes"); + addTarget(playerB, "Phantasmal Dragon"); + + setStopAt(2, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Kilnmouth Dragon", 1); + assertPowerToughness(playerA, "Kilnmouth Dragon", 8,8); // 5 + 3 from Amplify + + assertPermanentCount(playerB, "Kilnmouth Dragon", 1); + assertPowerToughness(playerB, "Kilnmouth Dragon", 8,8); // 5 + 3 from Amplify + } + +} diff --git a/Mage/src/mage/abilities/effects/common/AmplifyEffect.java b/Mage/src/mage/abilities/effects/common/AmplifyEffect.java index 7f34a22524..3713801a12 100644 --- a/Mage/src/mage/abilities/effects/common/AmplifyEffect.java +++ b/Mage/src/mage/abilities/effects/common/AmplifyEffect.java @@ -16,7 +16,6 @@ import mage.constants.Duration; import mage.constants.Outcome; import mage.counters.CounterType; import mage.filter.common.FilterCreatureCard; -import mage.filter.predicate.Predicate; import mage.filter.predicate.Predicates; import mage.filter.predicate.mageobject.SubtypePredicate; import mage.game.Game; @@ -104,11 +103,15 @@ public class AmplifyEffect extends ReplacementEffectImpl { for (String subtype : sourceCreature.getSubtype()) { filterSubtypes.add(new SubtypePredicate((subtype))); } - filter.add(Predicates.or(filterSubtypes)); + if (filterSubtypes.size() > 1) { + filter.add(Predicates.or(filterSubtypes)); + } else if (filterSubtypes.size() == 1) { + filter.add(filterSubtypes.get(0)); + } if (controller.getHand().count(filter, source.getSourceId(), source.getControllerId(), game) > 0){ if (controller.chooseUse(outcome, "Reveal cards to Amplify?", game)) { TargetCardInHand target = new TargetCardInHand(0, Integer.MAX_VALUE, filter); - if (controller.choose(outcome, target, source.getSourceId(), game) && !target.getTargets().isEmpty()) { + if (controller.chooseTarget(outcome, target, source, game) && !target.getTargets().isEmpty()) { Cards cards = new CardsImpl(); cards.addAll(target.getTargets()); int amountCounters = cards.size() * amplifyFactor.getFactor(); From 787606272b2212d9dff5185b01f2938c898de2ba Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Sat, 4 Apr 2015 08:21:06 -0300 Subject: [PATCH 062/175] - Added Paladin of Prahv --- .../mage/sets/dissension/PaladinOfPrahv.java | 52 ++++++ .../sets/knightsvsdragons/PaladinOfPrahv.java | 151 ++++++++++++++++++ 2 files changed, 203 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/dissension/PaladinOfPrahv.java create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/PaladinOfPrahv.java diff --git a/Mage.Sets/src/mage/sets/dissension/PaladinOfPrahv.java b/Mage.Sets/src/mage/sets/dissension/PaladinOfPrahv.java new file mode 100644 index 0000000000..eeb45a44fa --- /dev/null +++ b/Mage.Sets/src/mage/sets/dissension/PaladinOfPrahv.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.dissension; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class PaladinOfPrahv extends mage.sets.knightsvsdragons.PaladinOfPrahv { + + public PaladinOfPrahv(UUID ownerId) { + super(ownerId); + this.cardNumber = 14; + this.expansionSetCode = "DIS"; + } + + public PaladinOfPrahv(final PaladinOfPrahv card) { + super(card); + } + + @Override + public PaladinOfPrahv copy() { + return new PaladinOfPrahv(this); + } +} diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/PaladinOfPrahv.java b/Mage.Sets/src/mage/sets/knightsvsdragons/PaladinOfPrahv.java new file mode 100644 index 0000000000..f9fd2d319e --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/PaladinOfPrahv.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.knightsvsdragons; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.DelayedTriggeredAbility; +import mage.abilities.common.DealsDamageGainLifeSourceTriggeredAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateDelayedTriggeredAbilityEffect; +import mage.abilities.keyword.ForecastAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.permanent.Permanent; +import mage.players.Player; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author FenrisulfrX + */ +public class PaladinOfPrahv extends CardImpl { + + public PaladinOfPrahv(UUID ownerId) { + super(ownerId, 22, "Paladin of Prahv", Rarity.UNCOMMON, new CardType[]{CardType.CREATURE}, "{4}{W}{W}"); + this.expansionSetCode = "DDG"; + this.subtype.add("Human"); + this.subtype.add("Knight"); + this.power = new MageInt(3); + this.toughness = new MageInt(4); + + // Whenever Paladin of Prahv deals damage, you gain that much life. + this.addAbility(new DealsDamageGainLifeSourceTriggeredAbility()); + + // Forecast - {1}{W}, Reveal Paladin of Prahv from your hand: Whenever target creature deals damage this turn, you gain that much life. + Ability ability = new ForecastAbility(new CreateDelayedTriggeredAbilityEffect( + new PaladinOfPrahvTriggeredAbility()), new ManaCostsImpl("{1}{W}")); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public PaladinOfPrahv(final PaladinOfPrahv card) { + super(card); + } + + @Override + public PaladinOfPrahv copy() { + return new PaladinOfPrahv(this); + } +} + +class PaladinOfPrahvTriggeredAbility extends DelayedTriggeredAbility { + + public PaladinOfPrahvTriggeredAbility() { + super(new PaladinOfPrahvEffect(), Duration.EndOfTurn, false); + } + + public PaladinOfPrahvTriggeredAbility(final PaladinOfPrahvTriggeredAbility ability) { + super(ability); + } + + + @Override + public PaladinOfPrahvTriggeredAbility copy() { + return new PaladinOfPrahvTriggeredAbility(this); + } + + @Override + public boolean checkTrigger(GameEvent event, Game game) { + if(event.getType().equals(GameEvent.EventType.DAMAGED_CREATURE) + || event.getType().equals(GameEvent.EventType.DAMAGED_PLAYER) + || event.getType().equals(GameEvent.EventType.DAMAGED_PLANESWALKER)) { + Permanent target = game.getPermanent(this.getFirstTarget()); + if (target != null && event.getSourceId().equals(target.getId())) { + for (Effect effect : this.getEffects()) { + effect.setValue("damage", event.getAmount()); + } + return true; + } + } + return false; + } + + @Override + public String getRule() { + return "Whenever target creature deals damage, " + super.getRule(); + } +} + +class PaladinOfPrahvEffect extends OneShotEffect { + + public PaladinOfPrahvEffect() { + super(Outcome.GainLife); + this.staticText = "you gain that much life"; + } + + public PaladinOfPrahvEffect(final PaladinOfPrahvEffect effect) { + super(effect); + } + + @Override + public PaladinOfPrahvEffect copy() { + return new PaladinOfPrahvEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + int amount = (Integer) getValue("damage"); + if (amount > 0) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null) { + controller.gainLife(amount, game); + return true; + } + } + return false; + } +} From 2723bf6cb73cabecadfc0b7d8dbfd9554cc8352b Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 14:11:49 +0200 Subject: [PATCH 063/175] * Fixed some problems with order selection of triggered abilities not showing the card images. --- .../java/org/mage/card/arcane/CardPanel.java | 57 +++++++++++-------- Mage.Common/src/mage/view/CardsView.java | 21 ++++++- 2 files changed, 50 insertions(+), 28 deletions(-) diff --git a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java index f6a60065d1..f2f2d7c790 100644 --- a/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java +++ b/Mage.Client/src/main/java/org/mage/card/arcane/CardPanel.java @@ -194,30 +194,30 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } }); } + if (!newGameCard.isAbility()) { + // panel to show counters on the card + counterPanel = new JPanel(); + counterPanel.setLayout(null); + counterPanel.setOpaque(false); + add(counterPanel); - // panel to show counters on the card - counterPanel = new JPanel(); - counterPanel.setLayout(null); - counterPanel.setOpaque(false); - add(counterPanel); + plusCounterLabel = new JLabel(""); + plusCounterLabel.setToolTipText("+1/+1"); + counterPanel.add(plusCounterLabel); - plusCounterLabel = new JLabel(""); - plusCounterLabel.setToolTipText("+1/+1"); - counterPanel.add(plusCounterLabel); + minusCounterLabel = new JLabel(""); + minusCounterLabel.setToolTipText("-1/-1"); + counterPanel.add(minusCounterLabel); - minusCounterLabel = new JLabel(""); - minusCounterLabel.setToolTipText("-1/-1"); - counterPanel.add(minusCounterLabel); + loyaltyCounterLabel = new JLabel(""); + loyaltyCounterLabel.setToolTipText("loyalty"); + counterPanel.add(loyaltyCounterLabel); - loyaltyCounterLabel = new JLabel(""); - loyaltyCounterLabel.setToolTipText("loyalty"); - counterPanel.add(loyaltyCounterLabel); - - otherCounterLabel = new JLabel(""); - counterPanel.add(otherCounterLabel); - - counterPanel.setVisible(false); + otherCounterLabel = new JLabel(""); + counterPanel.add(otherCounterLabel); + counterPanel.setVisible(false); + } if (newGameCard.isAbility()) { if (AbilityType.TRIGGERED.equals(newGameCard.getAbilityType())) { setTypeIcon(ImageManagerImpl.getInstance().getTriggeredAbilityImage(),"Triggered Ability"); @@ -841,7 +841,14 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } } - + if (counterPanel != null) { + updateCounters(card); + } + + repaint(); + } + + private void updateCounters(CardView card) { if (card.getCounters() != null && !card.getCounters().isEmpty()) { String name = ""; if (lastCardWidth != cardWidth) { @@ -890,8 +897,8 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti otherCounterLabel.setVisible(true); } } - } - + } + counterPanel.setVisible(true); } else { plusCounterLabel.setVisible(false); @@ -899,8 +906,8 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti loyaltyCounterLabel.setVisible(false); otherCounterLabel.setVisible(false); counterPanel.setVisible(false); - } - repaint(); + } + } private static ImageIcon getCounterImageWithAmount(int amount, BufferedImage image, int cardWidth) { @@ -1064,7 +1071,7 @@ public class CardPanel extends MagePermanent implements MouseListener, MouseMoti } } - return sbType.toString(); + return sbType.toString().trim(); } protected final String getText(String cardType, CardView card) { diff --git a/Mage.Common/src/mage/view/CardsView.java b/Mage.Common/src/mage/view/CardsView.java index 7285357e28..6f61d93769 100644 --- a/Mage.Common/src/mage/view/CardsView.java +++ b/Mage.Common/src/mage/view/CardsView.java @@ -68,27 +68,34 @@ public class CardsView extends LinkedHashMap { for ( Ability ability : abilities ) { MageObject sourceObject = null; AbilityView abilityView = null; + boolean isCard = false; + boolean isPermanent = false; switch ( ability.getZone() ) { case ALL: case EXILED: case GRAVEYARD: sourceObject = game.getCard(ability.getSourceId()); + isCard = true; break; case BATTLEFIELD: sourceObject = game.getPermanent(ability.getSourceId()); if (sourceObject == null) { sourceObject = (Permanent)game.getLastKnownInformation(ability.getSourceId(), Zone.BATTLEFIELD); } + isPermanent = true; break; case STACK: sourceObject = game.getObject(ability.getSourceId()); + if (sourceObject instanceof Card) { + isCard = true; + } break; case COMMAND: sourceObject = game.getObject(ability.getSourceId()); - if (sourceObject instanceof Emblem) { + if (sourceObject instanceof Emblem) { Card planeswalkerCard = game.getCard(((Emblem)sourceObject).getSourceId()); if (planeswalkerCard != null) { - abilityView = new AbilityView(ability, "Emblem " + planeswalkerCard.getName(), new CardView(sourceObject)); + abilityView = new AbilityView(ability, "Emblem " + planeswalkerCard.getName(), new CardView(new EmblemView((Emblem)sourceObject, planeswalkerCard))); abilityView.setName("Emblem " + planeswalkerCard.getName()); abilityView.setExpansionSetCode(planeswalkerCard.getExpansionSetCode()); } else { @@ -99,7 +106,15 @@ public class CardsView extends LinkedHashMap { } if (sourceObject != null) { if (abilityView == null) { - abilityView = new AbilityView(ability, sourceObject.getLogName(), new CardView(sourceObject)); + CardView sourceCardView; + if (isPermanent) { + sourceCardView = new CardView((Permanent)sourceObject); + } else if (isCard) { + sourceCardView = new CardView((Card)sourceObject); + } else { + sourceCardView = new CardView(sourceObject); + } + abilityView = new AbilityView(ability, sourceObject.getLogName(), sourceCardView); } if (ability.getTargets().size() > 0) { abilityView.setTargets(ability.getTargets()); From 03b8a22c43ad48d579b7af20e192ca5f69f93232 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 14:58:47 +0200 Subject: [PATCH 064/175] * Fixed Wirewood Channeler and Harabaz Druid allowing any combinations of Colors instead if any one color. --- .../mage/sets/legions/WirewoodChanneler.java | 5 ++-- .../src/mage/sets/worldwake/HarabazDruid.java | 5 ++-- .../effects/common/DynamicManaEffect.java | 27 ++++++++++++++++--- .../abilities/mana/DynamicManaAbility.java | 7 ++++- 4 files changed, 35 insertions(+), 9 deletions(-) diff --git a/Mage.Sets/src/mage/sets/legions/WirewoodChanneler.java b/Mage.Sets/src/mage/sets/legions/WirewoodChanneler.java index b3af010a32..f2028e62ad 100644 --- a/Mage.Sets/src/mage/sets/legions/WirewoodChanneler.java +++ b/Mage.Sets/src/mage/sets/legions/WirewoodChanneler.java @@ -30,6 +30,7 @@ package mage.sets.legions; import java.util.UUID; import mage.MageInt; import mage.Mana; +import mage.abilities.costs.common.TapSourceCost; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -61,8 +62,8 @@ public class WirewoodChanneler extends CardImpl { this.toughness = new MageInt(2); // {T}: Add X mana of any one color to your mana pool, where X is the number of Elves on the battlefield. - DynamicManaAbility ability = new DynamicManaAbility(new Mana(0,0,0,0,0,0,1), new PermanentsOnBattlefieldCount(filter), - "Add X mana of any one color to your mana pool, where X is the number of Elves on the battlefield"); + DynamicManaAbility ability = new DynamicManaAbility(new Mana(0,0,0,0,0,0,1), new PermanentsOnBattlefieldCount(filter), new TapSourceCost(), + "Add X mana of any one color to your mana pool, where X is the number of Elves on the battlefield", true); this.addAbility(ability); } diff --git a/Mage.Sets/src/mage/sets/worldwake/HarabazDruid.java b/Mage.Sets/src/mage/sets/worldwake/HarabazDruid.java index 0905f4d815..6150dcd02b 100644 --- a/Mage.Sets/src/mage/sets/worldwake/HarabazDruid.java +++ b/Mage.Sets/src/mage/sets/worldwake/HarabazDruid.java @@ -30,6 +30,7 @@ package mage.sets.worldwake; import java.util.UUID; import mage.MageInt; import mage.Mana; +import mage.abilities.costs.common.TapSourceCost; import mage.abilities.dynamicvalue.common.PermanentsOnBattlefieldCount; import mage.abilities.mana.DynamicManaAbility; import mage.cards.CardImpl; @@ -61,8 +62,8 @@ public class HarabazDruid extends CardImpl { this.toughness = new MageInt(1); // {T}: Add X mana of any one color to your mana pool, where X is the number of Allies you control. - this.addAbility(new DynamicManaAbility(new Mana(0,0,0,0,0,0,1), new PermanentsOnBattlefieldCount(filter), - "Add X mana of any one color to your mana pool, where X is the number of Allies you control")); + this.addAbility(new DynamicManaAbility(new Mana(0,0,0,0,0,0,1), new PermanentsOnBattlefieldCount(filter), new TapSourceCost(), + "Add X mana of any one color to your mana pool, where X is the number of Allies you control", true)); } public HarabazDruid(final HarabazDruid card) { diff --git a/Mage/src/mage/abilities/effects/common/DynamicManaEffect.java b/Mage/src/mage/abilities/effects/common/DynamicManaEffect.java index 14fb26fce3..7747f36075 100644 --- a/Mage/src/mage/abilities/effects/common/DynamicManaEffect.java +++ b/Mage/src/mage/abilities/effects/common/DynamicManaEffect.java @@ -45,6 +45,7 @@ public class DynamicManaEffect extends BasicManaEffect { private final Mana computedMana; private final DynamicValue amount; private String text = null; + private boolean oneChoice; public DynamicManaEffect(Mana mana, DynamicValue amount) { super(mana); @@ -53,10 +54,22 @@ public class DynamicManaEffect extends BasicManaEffect { } public DynamicManaEffect(Mana mana, DynamicValue amount, String text) { + this(mana, amount, text, false); + } + + /** + * + * @param mana + * @param amount + * @param text + * @param oneChoice is all mana from the same colour or if false the player can choose different colours + */ + public DynamicManaEffect(Mana mana, DynamicValue amount, String text, boolean oneChoice) { super(mana); this.amount = amount; computedMana = new Mana(); this.text = text; + this.oneChoice = oneChoice; } public DynamicManaEffect(final DynamicManaEffect effect) { @@ -64,6 +77,7 @@ public class DynamicManaEffect extends BasicManaEffect { this.computedMana = effect.computedMana.copy(); this.amount = effect.amount.copy(); this.text = effect.text; + this.oneChoice = effect.oneChoice; } @Override @@ -111,11 +125,13 @@ public class DynamicManaEffect extends BasicManaEffect { } else { Player controller = game.getPlayer(source.getControllerId()); if (controller != null) { + ChoiceColor choiceColor = new ChoiceColor(); for(int i = 0; i < count; i++){ - ChoiceColor choiceColor = new ChoiceColor(); - while (!controller.choose(Outcome.Benefit, choiceColor, game)) { - if (!controller.isInGame()) { - return computedMana; + if (!choiceColor.isChosen()) { + while (!controller.choose(Outcome.Benefit, choiceColor, game)) { + if (!controller.isInGame()) { + return computedMana; + } } } if (choiceColor.getColor().isBlack()) { @@ -129,6 +145,9 @@ public class DynamicManaEffect extends BasicManaEffect { } else if (choiceColor.getColor().isWhite()) { computedMana.addWhite(); } + if (!oneChoice) { + choiceColor.clearChoice(); + } } } } diff --git a/Mage/src/mage/abilities/mana/DynamicManaAbility.java b/Mage/src/mage/abilities/mana/DynamicManaAbility.java index f421fa8a23..72336b74e0 100644 --- a/Mage/src/mage/abilities/mana/DynamicManaAbility.java +++ b/Mage/src/mage/abilities/mana/DynamicManaAbility.java @@ -70,10 +70,15 @@ public class DynamicManaAbility extends ManaAbility { } public DynamicManaAbility(Mana mana, DynamicValue amount, Cost cost, String text) { - super(Zone.BATTLEFIELD, new DynamicManaEffect(mana, amount, text), cost); + this(mana, amount, cost, text, false); + } + + public DynamicManaAbility(Mana mana, DynamicValue amount, Cost cost, String text, boolean oneChoice) { + super(Zone.BATTLEFIELD, new DynamicManaEffect(mana, amount, text, oneChoice), cost); manaEffect = (DynamicManaEffect) this.getEffects().get(0); } + public DynamicManaAbility(final DynamicManaAbility ability) { super(ability); manaEffect = ability.manaEffect; From f61aa848cc3a58a742842c60c7caa880bc1a7a45 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sat, 4 Apr 2015 15:37:22 +0200 Subject: [PATCH 065/175] * Nether Traitor - Fixed that the last ability did not trigger if a Token creature died. --- .../mage/sets/timespiral/NetherTraitor.java | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Mage.Sets/src/mage/sets/timespiral/NetherTraitor.java b/Mage.Sets/src/mage/sets/timespiral/NetherTraitor.java index a9e3683bbf..4e9d353e61 100644 --- a/Mage.Sets/src/mage/sets/timespiral/NetherTraitor.java +++ b/Mage.Sets/src/mage/sets/timespiral/NetherTraitor.java @@ -35,7 +35,6 @@ import mage.abilities.effects.common.DoIfCostPaid; import mage.abilities.effects.common.ReturnSourceFromGraveyardToBattlefieldEffect; import mage.abilities.keyword.HasteAbility; import mage.abilities.keyword.ShadowAbility; -import mage.cards.Card; import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.ColoredManaSymbol; @@ -92,19 +91,21 @@ class NetherTraitorTriggeredAbility extends TriggeredAbilityImpl { public NetherTraitorTriggeredAbility copy(){ return new NetherTraitorTriggeredAbility(this); } + + @Override + public boolean checkEventType(GameEvent event, Game game) { + return event.getType() == GameEvent.EventType.ZONE_CHANGE; + } @Override public boolean checkTrigger(GameEvent event, Game game) { - if (event.getType() == GameEvent.EventType.ZONE_CHANGE) { - ZoneChangeEvent zEvent = (ZoneChangeEvent) event; - if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { - Card card = game.getCard(event.getTargetId()); - if (card != null && - card.getOwnerId().equals(this.getControllerId()) && - card.getCardType().contains(CardType.CREATURE)&& - !card.getId().equals(this.getSourceId())) { - return true; - } + ZoneChangeEvent zEvent = (ZoneChangeEvent) event; + if (zEvent.getFromZone() == Zone.BATTLEFIELD && zEvent.getToZone() == Zone.GRAVEYARD) { + if (zEvent.getTarget() != null && + zEvent.getTarget().getOwnerId().equals(this.getControllerId()) && + zEvent.getTarget().getCardType().contains(CardType.CREATURE)&& + !zEvent.getTarget().getId().equals(this.getSourceId())) { + return true; } } return false; From 18ce6a0305db6ebc0d34054af03fdb0ba88b5a3b Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 5 Apr 2015 00:28:22 +0200 Subject: [PATCH 066/175] * Chord of Calling - Fixed that it was mandatory to find a card if it did exist. --- Mage.Sets/src/mage/sets/ravnica/ChordOfCalling.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/ravnica/ChordOfCalling.java b/Mage.Sets/src/mage/sets/ravnica/ChordOfCalling.java index b62a631b9d..c475447bed 100644 --- a/Mage.Sets/src/mage/sets/ravnica/ChordOfCalling.java +++ b/Mage.Sets/src/mage/sets/ravnica/ChordOfCalling.java @@ -98,7 +98,7 @@ class ChordofCallingSearchEffect extends OneShotEffect { filter.add(new CardTypePredicate(CardType.CREATURE)); //Set the mana cost one higher to 'emulate' a less than or equal to comparison. filter.add(new ConvertedManaCostPredicate(Filter.ComparisonType.LessThan, xCost + 1)); - TargetCardInLibrary target = new TargetCardInLibrary(filter); + TargetCardInLibrary target = new TargetCardInLibrary(0,1,filter); if (player.searchLibrary(target, game)) { if (target.getTargets().size() > 0) { Card card = player.getLibrary().getCard(target.getFirstTarget(), game); From 5c2189fdd7287619f8ef7cc9c0d8003d864b7a9a Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 5 Apr 2015 09:43:45 +0200 Subject: [PATCH 067/175] Added Exception to read of server list that shows local buffered list. --- .../src/main/java/mage/client/dialog/ConnectDialog.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java index d8246a8a9d..c0da5bae33 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ConnectDialog.java @@ -54,6 +54,7 @@ import java.io.InputStreamReader; import java.io.Writer; import java.net.InetSocketAddress; import java.net.Proxy; +import java.net.SocketTimeoutException; import java.net.URL; import java.net.UnknownHostException; import java.util.ArrayList; @@ -442,7 +443,7 @@ public class ConnectDialog extends MageDialog { boolean URLNotFound = false; try { in = new BufferedReader(new InputStreamReader(serverListURL.openConnection(p).getInputStream())); - } catch (FileNotFoundException| UnknownHostException ex ) { + } catch (SocketTimeoutException |FileNotFoundException | UnknownHostException ex ) { logger.warn("Could not read serverlist from: " + serverListURL.toString()); File f = new File("serverlist.txt"); if (f.exists() && !f.isDirectory()) { From 66cf6909680d4ab6546e53edda74134cdeb6d233 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Sun, 5 Apr 2015 11:13:26 +0200 Subject: [PATCH 068/175] Fixed some bugs that prevent to select shroud or hexproof targets by not targeted effects (e.g. Proliferate). --- .../sets/scarsofmirrodin/ContagionEngine.java | 12 +- .../cards/single/ContagionEngineTest.java | 108 ++++++++++++++++++ .../java/org/mage/test/player/TestPlayer.java | 46 +++++--- .../common/counter/ProliferateEffect.java | 102 ++++++++--------- .../predicate/permanent/CounterPredicate.java | 10 +- Mage/src/mage/target/TargetPermanent.java | 2 +- .../common/TargetPermanentOrPlayer.java | 24 +++- .../TargetPermanentOrPlayerWithCounter.java | 15 ++- 8 files changed, 232 insertions(+), 87 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/single/ContagionEngineTest.java diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/ContagionEngine.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/ContagionEngine.java index b93cef49cb..f21304caff 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/ContagionEngine.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/ContagionEngine.java @@ -58,9 +58,13 @@ public class ContagionEngine extends CardImpl { public ContagionEngine (UUID ownerId) { super(ownerId, 145, "Contagion Engine", Rarity.RARE, new CardType[]{CardType.ARTIFACT}, "{6}"); this.expansionSetCode = "SOM"; + + // When Contagion Engine enters the battlefield, put a -1/-1 counter on each creature target player controls. Ability ability = new EntersBattlefieldTriggeredAbility(new ContagionEngineEffect()); ability.addTarget(new TargetPlayer()); this.addAbility(ability); + + // {4}, {T}: Proliferate, then proliferate again. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there. Then do it again.) ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new ProliferateEffect(), new GenericManaCost(4)); ability.addCost(new TapSourceCost()); ability.addEffect(new ProliferateEffect()); @@ -90,10 +94,10 @@ class ContagionEngineEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - Player target = game.getPlayer(source.getFirstTarget()); - if (target != null) { - for (Permanent p : game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), target.getId(), game)) { - p.addCounters(CounterType.M1M1.createInstance(), game); + Player targetPlayer = game.getPlayer(getTargetPointer().getFirst(game, source)); + if (targetPlayer != null) { + for (Permanent creature : game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), targetPlayer.getId(), game)) { + creature.addCounters(CounterType.M1M1.createInstance(), game); } return true; } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/ContagionEngineTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/ContagionEngineTest.java new file mode 100644 index 0000000000..c82415ee09 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/ContagionEngineTest.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 org.mage.test.cards.single; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import mage.counters.CounterType; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ + +public class ContagionEngineTest extends CardTestPlayerBase { + + // When Contagion Engine enters the battlefield, put a -1/-1 counter on each creature target player controls. + // {4}, {T}: Proliferate, then proliferate again. (You choose any number of permanents and/or players with + // counters on them, then give each another counter of a kind already there. Then do it again.) + @Test + public void testCountersArePut() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain",6); + addCard(Zone.HAND, playerA, "Contagion Engine"); + + addCard(Zone.BATTLEFIELD, playerB, "Silvercoat Lion"); + addCard(Zone.BATTLEFIELD, playerB, "Pincher Beetles"); // 3/1 + Shroud + addCard(Zone.BATTLEFIELD, playerB, "Sacred Wolf"); // 3/1 + Hexproof + addCard(Zone.BATTLEFIELD, playerB, "Beloved Chaplain"); // 3/1 + Protection from creatures + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Contagion Engine"); + addTarget(playerA, playerB); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + + assertPowerToughness(playerB, "Silvercoat Lion", 1, 1); + + assertGraveyardCount(playerB, "Sacred Wolf",1); + assertGraveyardCount(playerB, "Beloved Chaplain",1); + assertGraveyardCount(playerB, "Pincher Beetles",1); + + } + + @Test + public void testCountersDoubledByProliferate() { + addCard(Zone.BATTLEFIELD, playerA, "Mountain",6); + addCard(Zone.HAND, playerA, "Contagion Engine"); + + addCard(Zone.BATTLEFIELD, playerA, "Ajani Goldmane"); + + addCard(Zone.BATTLEFIELD, playerB, "Wall of Frost"); // 0/7 + addCard(Zone.BATTLEFIELD, playerB, "Kalonian Behemoth"); // 9/9 + Shroud + addCard(Zone.BATTLEFIELD, playerB, "Plated Slagwurm"); // 8/8 + Hexproof + addCard(Zone.BATTLEFIELD, playerB, "Teysa, Envoy of Ghosts"); // 4/4 + Protection from creatures + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Contagion Engine"); + addTarget(playerA, playerB); + + activateAbility(3, PhaseStep.PRECOMBAT_MAIN, playerA, "{4},{T}: Proliferate"); + setChoice(playerA, "Wall of Frost^Kalonian Behemoth^Plated Slagwurm^Teysa, Envoy of Ghosts^Ajani Goldmane"); + setChoice(playerA, "Wall of Frost^Kalonian Behemoth^Plated Slagwurm^Teysa, Envoy of Ghosts^Ajani Goldmane"); + + setStopAt(3, PhaseStep.BEGIN_COMBAT); + execute(); + + assertLife(playerA, 20); + assertLife(playerB, 20); + + assertCounterCount("Ajani Goldmane", CounterType.LOYALTY, 6); + + assertPowerToughness(playerB, "Kalonian Behemoth", 6, 6); + assertPowerToughness(playerB, "Plated Slagwurm", 5, 5); + assertPowerToughness(playerB, "Teysa, Envoy of Ghosts", 1, 1); + assertPowerToughness(playerB, "Wall of Frost", -3, 4); + + + } + +} \ No newline at end of file diff --git a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java index 1fb9cff865..1e9ba488b0 100644 --- a/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java +++ b/Mage.Tests/src/test/java/org/mage/test/player/TestPlayer.java @@ -69,6 +69,7 @@ import mage.cards.Card; import mage.constants.Zone; import mage.target.TargetSource; import mage.target.common.TargetCardInHand; +import mage.target.common.TargetPermanentOrPlayer; /** * @@ -301,23 +302,40 @@ public class TestPlayer extends ComputerPlayer { @Override public boolean choose(Outcome outcome, Target target, UUID sourceId, Game game, Map options) { if (!choices.isEmpty()) { - if (target instanceof TargetPermanent) { - for (Permanent permanent : game.getBattlefield().getAllActivePermanents((FilterPermanent)target.getFilter(), game)) { - for (String choose2: choices) { - if (permanent.getName().equals(choose2)) { - if (((TargetPermanent)target).canTarget(playerId, permanent.getId(), null, game) && !target.getTargets().contains(permanent.getId())) { - target.add(permanent.getId(), game); - choices.remove(choose2); - return true; + if ((target instanceof TargetPermanent) || (target instanceof TargetPermanentOrPlayer)) { // player target not implemted yet + FilterPermanent filterPermanent; + if (target instanceof TargetPermanentOrPlayer) { + filterPermanent = ((TargetPermanentOrPlayer) target).getFilterPermanent(); + } else { + filterPermanent = ((TargetPermanent) target).getFilter(); + } + for (String choose2: choices) { + String[] targetList = choose2.split("\\^"); + boolean targetFound = false; + for (String targetName: targetList) { + for (Permanent permanent : game.getBattlefield().getAllActivePermanents(filterPermanent, game)) { + if (target.getTargets().contains(permanent.getId())) { + continue; } - } else if ((permanent.getName()+"-"+permanent.getExpansionSetCode()).equals(choose2)) { - if (((TargetPermanent)target).canTarget(playerId, permanent.getId(), null, game) && !target.getTargets().contains(permanent.getId())) { - target.add(permanent.getId(), game); - choices.remove(choose2); - return true; + if (permanent.getName().equals(targetName)) { + if (target.isNotTarget() || ((TargetPermanent)target).canTarget(playerId, permanent.getId(), null, game)) { + target.add(permanent.getId(), game); + targetFound = true; + break; + } + } else if ((permanent.getName()+"-"+permanent.getExpansionSetCode()).equals(targetName)) { + if (target.isNotTarget() || ((TargetPermanent)target).canTarget(playerId, permanent.getId(), null, game)) { + target.add(permanent.getId(), game); + targetFound = true; + break; + } } } } + if (targetFound) { + choices.remove(choose2); + return true; + } } } if (target instanceof TargetPlayer) { @@ -362,7 +380,7 @@ public class TestPlayer extends ComputerPlayer { @Override public boolean chooseTarget(Outcome outcome, Target target, Ability source, Game game) { if (!targets.isEmpty()) { - if (target instanceof TargetPermanent) { + if ((target instanceof TargetPermanent) || (target instanceof TargetPermanentOrPlayer)) { for (String targetDefinition: targets) { String[] targetList = targetDefinition.split("\\^"); boolean targetFound = false; diff --git a/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java b/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java index bd1a44e939..6d86478974 100644 --- a/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java +++ b/Mage/src/mage/abilities/effects/common/counter/ProliferateEffect.java @@ -53,7 +53,7 @@ public class ProliferateEffect extends OneShotEffect { public ProliferateEffect() { super(Outcome.Benefit); - staticText = "Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.)"; + staticText = "Proliferate. (You choose any number of permanents and/or players with counters on them, then give each another counter of a kind already there.)"; } public ProliferateEffect(ProliferateEffect effect) { @@ -63,81 +63,71 @@ public class ProliferateEffect extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { Player controller = game.getPlayer(source.getControllerId()); + if (controller == null) { + return false; + } Target target = new TargetPermanentOrPlayerWithCounter(0, Integer.MAX_VALUE, true); + Map options = new HashMap<>(); + options.put("UI.right.btn.text", "Done"); + controller.choose(Outcome.Benefit, target, source.getSourceId(), game, options); - //A spell or ability could have removed the only legal target this player - //had, if thats the case this ability should fizzle. - if (target.canChoose(controller.getId(), game)) { - boolean abilityApplied = false; - Map options = new HashMap<>(); - options.put("UI.right.btn.text", "Done"); - while (target.canChoose(controller.getId(), game)) { - if (controller.choose(Outcome.Benefit, target, source.getSourceId(), game, options)) { - break; - } - } - - for (int idx = 0; idx < target.getTargets().size(); idx++) { - UUID chosen = (UUID) target.getTargets().get(idx); - Permanent permanent = game.getPermanent(chosen); - if (permanent != null) { - if (permanent.getCounters().size() > 0) { - if (permanent.getCounters().size() == 1) { - for (Counter counter : permanent.getCounters().values()) { + for (int idx = 0; idx < target.getTargets().size(); idx++) { + UUID chosen = (UUID) target.getTargets().get(idx); + Permanent permanent = game.getPermanent(chosen); + if (permanent != null) { + if (permanent.getCounters().size() > 0) { + if (permanent.getCounters().size() == 1) { + for (Counter counter : permanent.getCounters().values()) { + permanent.addCounters(counter.getName(), 1, game); + } + } else { + Choice choice = new ChoiceImpl(true); + Set choices = new HashSet<>(); + for (Counter counter : permanent.getCounters().values()) { + choices.add(counter.getName()); + } + choice.setChoices(choices); + choice.setMessage("Choose a counter to proliferate (" + permanent.getName() + ")"); + controller.choose(Outcome.Benefit, choice, game); + for (Counter counter : permanent.getCounters().values()) { + if (counter.getName().equals(choice.getChoice())) { permanent.addCounters(counter.getName(), 1, game); + break; + } + } + } + } + } else { + Player player = game.getPlayer(chosen); + if (player != null) { + if (player.getCounters().size() > 0) { + if (player.getCounters().size() == 1) { + for (Counter counter : player.getCounters().values()) { + Counter newCounter = new Counter(counter.getName()); + player.addCounters(newCounter, game); } } else { Choice choice = new ChoiceImpl(true); Set choices = new HashSet<>(); - for (Counter counter : permanent.getCounters().values()) { + for (Counter counter : player.getCounters().values()) { choices.add(counter.getName()); } choice.setChoices(choices); - choice.setMessage("Choose a counter to proliferate (" + permanent.getName() + ")"); + choice.setMessage("Choose a counter to proliferate (" + player.getName() + ")"); controller.choose(Outcome.Benefit, choice, game); - for (Counter counter : permanent.getCounters().values()) { + for (Counter counter : player.getCounters().values()) { if (counter.getName().equals(choice.getChoice())) { - permanent.addCounters(counter.getName(), 1, game); + Counter newCounter = new Counter(counter.getName()); + player.addCounters(newCounter, game); break; } } } } - } else { - Player player = game.getPlayer(chosen); - if (player != null) { - if (player.getCounters().size() > 0) { - if (player.getCounters().size() == 1) { - for (Counter counter : player.getCounters().values()) { - Counter newCounter = new Counter(counter.getName()); - player.addCounters(newCounter, game); - } - } else { - Choice choice = new ChoiceImpl(true); - Set choices = new HashSet<>(); - for (Counter counter : player.getCounters().values()) { - choices.add(counter.getName()); - } - choice.setChoices(choices); - choice.setMessage("Choose a counter to proliferate (" + player.getName() + ")"); - controller.choose(Outcome.Benefit, choice, game); - for (Counter counter : player.getCounters().values()) { - if (counter.getName().equals(choice.getChoice())) { - Counter newCounter = new Counter(counter.getName()); - player.addCounters(newCounter, game); - break; - } - } - } - } - } } - } - - return abilityApplied; } - return false; + return true; } @Override diff --git a/Mage/src/mage/filter/predicate/permanent/CounterPredicate.java b/Mage/src/mage/filter/predicate/permanent/CounterPredicate.java index eb66dacc00..24b1d53669 100644 --- a/Mage/src/mage/filter/predicate/permanent/CounterPredicate.java +++ b/Mage/src/mage/filter/predicate/permanent/CounterPredicate.java @@ -40,13 +40,21 @@ public class CounterPredicate implements Predicate { private final CounterType counter; + /** + * + * @param counter if null any counter selects the permanent + */ public CounterPredicate(CounterType counter) { this.counter = counter; } @Override public boolean apply(Permanent input, Game game) { - return input.getCounters().containsKey(counter); + if (counter == null) { + return !input.getCounters().keySet().isEmpty(); + } else { + return input.getCounters().containsKey(counter); + } } @Override diff --git a/Mage/src/mage/target/TargetPermanent.java b/Mage/src/mage/target/TargetPermanent.java index baaac9edf3..222e08d058 100644 --- a/Mage/src/mage/target/TargetPermanent.java +++ b/Mage/src/mage/target/TargetPermanent.java @@ -89,7 +89,7 @@ public class TargetPermanent extends TargetObject { // second for protection from sources (e.g. protection from artifacts + equip ability) if (!isNotTarget()) { if (!permanent.canBeTargetedBy(game.getObject(source.getId()), controllerId, game) || - !permanent.canBeTargetedBy(game.getObject(source.getSourceId()), controllerId, game)) { + !permanent.canBeTargetedBy(game.getObject(source.getSourceId()), controllerId, game)) { return false; } } diff --git a/Mage/src/mage/target/common/TargetPermanentOrPlayer.java b/Mage/src/mage/target/common/TargetPermanentOrPlayer.java index 5923470bb1..66ddcb7a68 100644 --- a/Mage/src/mage/target/common/TargetPermanentOrPlayer.java +++ b/Mage/src/mage/target/common/TargetPermanentOrPlayer.java @@ -71,7 +71,7 @@ public class TargetPermanentOrPlayer extends TargetImpl { } public TargetPermanentOrPlayer(int minNumTargets, int maxNumTargets, boolean notTarget) { - this(minNumTargets, maxNumTargets); + this(minNumTargets, maxNumTargets); this.notTarget = notTarget; } @@ -116,10 +116,21 @@ public class TargetPermanentOrPlayer extends TargetImpl { if (source != null) { MageObject targetSource = game.getObject(source.getSourceId()); if (permanent != null) { - return permanent.canBeTargetedBy(targetSource, source.getControllerId(), game) && filter.match(permanent, source.getSourceId(), source.getControllerId(), game); + if (!isNotTarget()) { + if (!permanent.canBeTargetedBy(game.getObject(source.getId()), source.getControllerId(), game) || + !permanent.canBeTargetedBy(game.getObject(source.getSourceId()), source.getControllerId(), game)) { + return false; + } + } + return filter.match(permanent, source.getSourceId(), source.getControllerId(), game); } if (player != null) { - return player.canBeTargetedBy(targetSource, game) && filter.match(player, game); + if (!isNotTarget()) { + if (!player.canBeTargetedBy(targetSource, game)) { + return false; + } + } + return filter.match(player, game); } } @@ -202,12 +213,12 @@ public class TargetPermanentOrPlayer extends TargetImpl { MageObject targetSource = game.getObject(sourceId); for (UUID playerId: game.getPlayer(sourceControllerId).getInRange()) { Player player = game.getPlayer(playerId); - if (player != null && player.canBeTargetedBy(targetSource, game) && filter.match(player, game)) { + if (player != null && (notTarget || player.canBeTargetedBy(targetSource, game)) && filter.match(player, game)) { possibleTargets.add(playerId); } } for (Permanent permanent: game.getBattlefield().getActivePermanents(new FilterPermanent(), sourceControllerId, game)) { - if (permanent.canBeTargetedBy(targetSource, sourceControllerId, game) && filter.match(permanent, sourceId, sourceControllerId, game)) { + if ((notTarget || permanent.canBeTargetedBy(targetSource, sourceControllerId, game)) && filter.match(permanent, sourceId, sourceControllerId, game)) { possibleTargets.add(permanent.getId()); } } @@ -252,4 +263,7 @@ public class TargetPermanentOrPlayer extends TargetImpl { return new TargetPermanentOrPlayer(this); } + public FilterPermanent getFilterPermanent() { + return filterPermanent.copy(); + } } diff --git a/Mage/src/mage/target/common/TargetPermanentOrPlayerWithCounter.java b/Mage/src/mage/target/common/TargetPermanentOrPlayerWithCounter.java index 49ddc3449c..463df69230 100644 --- a/Mage/src/mage/target/common/TargetPermanentOrPlayerWithCounter.java +++ b/Mage/src/mage/target/common/TargetPermanentOrPlayerWithCounter.java @@ -34,6 +34,9 @@ import mage.game.Game; import mage.game.permanent.Permanent; import mage.players.Player; import java.util.UUID; +import mage.counters.CounterType; +import mage.filter.FilterPermanent; +import mage.filter.predicate.permanent.CounterPredicate; /** * @@ -52,15 +55,15 @@ public class TargetPermanentOrPlayerWithCounter extends TargetPermanentOrPlayer } public TargetPermanentOrPlayerWithCounter(int minNumTargets, int maxNumTargets) { - super(minNumTargets, maxNumTargets); - this.filter = new FilterPermanentOrPlayerWithCounter(); - this.targetName = filter.getMessage(); - super.setFilter(this.filter); + this(minNumTargets, maxNumTargets, false); } public TargetPermanentOrPlayerWithCounter(int minNumTargets, int maxNumTargets, boolean notTarget) { - this(minNumTargets, maxNumTargets); - this.notTarget = notTarget; + super(minNumTargets, maxNumTargets, notTarget); + this.filter = new FilterPermanentOrPlayerWithCounter(); + this.filterPermanent = new FilterPermanent(); + this.filterPermanent.add(new CounterPredicate(null)); + this.targetName = filter.getMessage(); } public TargetPermanentOrPlayerWithCounter(final TargetPermanentOrPlayerWithCounter target) { From 389f2574ba8551e41f9e7be81b9cafc2542944f3 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 6 Apr 2015 08:48:55 +0200 Subject: [PATCH 069/175] Added Magmasaur, Mogg Infestation and Furnace Brood. --- .../src/mage/sets/exodus/FurnaceBrood.java | 52 ++++++++ .../mage/sets/stronghold/MoggInfestation.java | 104 +++++++++++++++ .../src/mage/sets/tempest/Magmasaur.java | 123 ++++++++++++++++++ .../sets/tempestremastered/FurnaceBrood.java | 70 ++++++++++ .../sets/tempestremastered/Magmasaur.java | 52 ++++++++ .../tempestremastered/MoggInfestation.java | 52 ++++++++ .../common/CantBeRegeneratedTargetEffect.java | 94 +++++++++++++ Mage/src/mage/game/events/GameEvent.java | 14 +- Mage/src/mage/game/permanent/token/Token.java | 7 +- 9 files changed, 563 insertions(+), 5 deletions(-) create mode 100644 Mage.Sets/src/mage/sets/exodus/FurnaceBrood.java create mode 100644 Mage.Sets/src/mage/sets/stronghold/MoggInfestation.java create mode 100644 Mage.Sets/src/mage/sets/tempest/Magmasaur.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/FurnaceBrood.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/Magmasaur.java create mode 100644 Mage.Sets/src/mage/sets/tempestremastered/MoggInfestation.java create mode 100644 Mage/src/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java diff --git a/Mage.Sets/src/mage/sets/exodus/FurnaceBrood.java b/Mage.Sets/src/mage/sets/exodus/FurnaceBrood.java new file mode 100644 index 0000000000..0109d003cd --- /dev/null +++ b/Mage.Sets/src/mage/sets/exodus/FurnaceBrood.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.exodus; + +import java.util.UUID; + +/** + * + * @author LevelX2 + */ +public class FurnaceBrood extends mage.sets.tempestremastered.FurnaceBrood { + + public FurnaceBrood(UUID ownerId) { + super(ownerId); + this.cardNumber = 84; + this.expansionSetCode = "EXO"; + } + + public FurnaceBrood(final FurnaceBrood card) { + super(card); + } + + @Override + public FurnaceBrood copy() { + return new FurnaceBrood(this); + } +} diff --git a/Mage.Sets/src/mage/sets/stronghold/MoggInfestation.java b/Mage.Sets/src/mage/sets/stronghold/MoggInfestation.java new file mode 100644 index 0000000000..b408d3a3d5 --- /dev/null +++ b/Mage.Sets/src/mage/sets/stronghold/MoggInfestation.java @@ -0,0 +1,104 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.stronghold; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.effects.Effect; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.CreateTokenEffect; +import mage.abilities.effects.common.CreateTokenTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.game.permanent.token.GoblinToken; +import mage.players.Player; +import mage.target.TargetPlayer; + +/** + * + * @author LevelX2 + */ +public class MoggInfestation extends CardImpl { + + public MoggInfestation(UUID ownerId) { + super(ownerId, 93, "Mogg Infestation", Rarity.RARE, new CardType[]{CardType.SORCERY}, "{3}{R}{R}"); + this.expansionSetCode = "STH"; + + // Destroy all creatures target player controls. For each creature that died this way, put two 1/1 red Goblin creature tokens onto the battlefield under that player's control. + getSpellAbility().addTarget(new TargetPlayer()); + getSpellAbility().addEffect(new MoggInfestationEffect()); + + } + + public MoggInfestation(final MoggInfestation card) { + super(card); + } + + @Override + public MoggInfestation copy() { + return new MoggInfestation(this); + } +} + +class MoggInfestationEffect extends OneShotEffect { + + public MoggInfestationEffect() { + super(Outcome.DestroyPermanent); + this.staticText = "Destroy all creatures target player controls. For each creature that died this way, put two 1/1 red Goblin creature tokens onto the battlefield under that player's control"; + } + + public MoggInfestationEffect(final MoggInfestationEffect effect) { + super(effect); + } + + @Override + public MoggInfestationEffect copy() { + return new MoggInfestationEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + if (controller != null && getTargetPointer().getFirst(game, source) != null) { + for (Permanent permanent: game.getBattlefield().getAllActivePermanents(new FilterCreaturePermanent(), getTargetPointer().getFirst(game, source), game)) { + if (permanent.destroy(source.getSourceId(), game, false)) { + Effect effect = new CreateTokenTargetEffect(new GoblinToken(), 2); + effect.setTargetPointer(getTargetPointer()); + effect.apply(game, source); + } + } + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/tempest/Magmasaur.java b/Mage.Sets/src/mage/sets/tempest/Magmasaur.java new file mode 100644 index 0000000000..74139e6e26 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempest/Magmasaur.java @@ -0,0 +1,123 @@ +/* + * 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.tempest; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.BeginningOfUpkeepTriggeredAbility; +import mage.abilities.common.EntersBattlefieldAbility; +import mage.abilities.effects.OneShotEffect; +import mage.abilities.effects.common.DamageEverythingEffect; +import mage.abilities.effects.common.counter.AddCountersSourceEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Outcome; +import mage.constants.Rarity; +import mage.constants.TargetController; +import mage.constants.Zone; +import mage.counters.CounterType; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.players.Player; + +/** + * + * @author LevelX2 + */ +public class Magmasaur extends CardImpl { + + public Magmasaur(UUID ownerId) { + super(ownerId, 188, "Magmasaur", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{3}{R}{R}"); + this.expansionSetCode = "TMP"; + this.subtype.add("Elemental"); + this.subtype.add("Lizard"); + this.power = new MageInt(0); + this.toughness = new MageInt(0); + + // Magmasaur enters the battlefield with five +1/+1 counters on it. + this.addAbility(new EntersBattlefieldAbility(new AddCountersSourceEffect(CounterType.P1P1.createInstance(5)), + "with five +1/+1 counters on it")); + + // At the beginning of your upkeep, you may remove a +1/+1 counter from Magmasaur. If you don't, sacrifice Magmasaur and it deals damage equal to the number of +1/+1 counters on it to each creature without flying and each player. + this.addAbility(new BeginningOfUpkeepTriggeredAbility(Zone.BATTLEFIELD, new MagmasaurEffect(), TargetController.YOU, false, false)); + } + + public Magmasaur(final Magmasaur card) { + super(card); + } + + @Override + public Magmasaur copy() { + return new Magmasaur(this); + } +} + +class MagmasaurEffect extends OneShotEffect { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); + + static { + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); + } + + public MagmasaurEffect() { + super(Outcome.Damage); + this.staticText = "you may remove a +1/+1 counter from {this}. If you don't, sacrifice {this} and it deals damage equal to the number of +1/+1 counters on it to each creature without flying and each player"; + } + + public MagmasaurEffect(final MagmasaurEffect effect) { + super(effect); + } + + @Override + public MagmasaurEffect copy() { + return new MagmasaurEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + Player controller = game.getPlayer(source.getControllerId()); + Permanent sourceObject = (Permanent)source.getSourceObjectIfItStillExists(game); + if (sourceObject != null && controller != null) { + if (controller.chooseUse(outcome, "Remove a +1/+1 counter from " + sourceObject.getLogName() + "?", game)) { + sourceObject.getCounters().removeCounter(CounterType.P1P1, 1); + } else { + int counters = sourceObject.getCounters().getCount(CounterType.P1P1); + sourceObject.sacrifice(source.getSourceId(), game); + new DamageEverythingEffect(counters, filter).apply(game, source); + } + return true; + } + return false; + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/FurnaceBrood.java b/Mage.Sets/src/mage/sets/tempestremastered/FurnaceBrood.java new file mode 100644 index 0000000000..e3ff5482f7 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/FurnaceBrood.java @@ -0,0 +1,70 @@ +/* + * Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON + * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + * The views and conclusions contained in the software and documentation are those of the + * authors and should not be interpreted as representing official policies, either expressed + * or implied, of BetaSteward_at_googlemail.com. + */ +package mage.sets.tempestremastered; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.Ability; +import mage.abilities.common.SimpleActivatedAbility; +import mage.abilities.costs.mana.ManaCostsImpl; +import mage.abilities.effects.common.CantBeRegeneratedTargetEffect; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author LevelX2 + */ +public class FurnaceBrood extends CardImpl { + + public FurnaceBrood(UUID ownerId) { + super(ownerId, 135, "Furnace Brood", Rarity.COMMON, new CardType[]{CardType.CREATURE}, "{3}{R}"); + this.expansionSetCode = "TPR"; + this.subtype.add("Elemental"); + this.power = new MageInt(3); + this.toughness = new MageInt(3); + + // {R}: Target creature can't be regenerated this turn. + Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CantBeRegeneratedTargetEffect(Duration.EndOfTurn), new ManaCostsImpl("{R}")); + ability.addTarget(new TargetCreaturePermanent()); + this.addAbility(ability); + } + + public FurnaceBrood(final FurnaceBrood card) { + super(card); + } + + @Override + public FurnaceBrood copy() { + return new FurnaceBrood(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/Magmasaur.java b/Mage.Sets/src/mage/sets/tempestremastered/Magmasaur.java new file mode 100644 index 0000000000..8217228d3e --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/Magmasaur.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author LevelX2 + */ +public class Magmasaur extends mage.sets.tempest.Magmasaur { + + public Magmasaur(UUID ownerId) { + super(ownerId); + this.cardNumber = 141; + this.expansionSetCode = "TPR"; + } + + public Magmasaur(final Magmasaur card) { + super(card); + } + + @Override + public Magmasaur copy() { + return new Magmasaur(this); + } +} diff --git a/Mage.Sets/src/mage/sets/tempestremastered/MoggInfestation.java b/Mage.Sets/src/mage/sets/tempestremastered/MoggInfestation.java new file mode 100644 index 0000000000..1680b2c471 --- /dev/null +++ b/Mage.Sets/src/mage/sets/tempestremastered/MoggInfestation.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.tempestremastered; + +import java.util.UUID; + +/** + * + * @author LevelX2 + */ +public class MoggInfestation extends mage.sets.stronghold.MoggInfestation { + + public MoggInfestation(UUID ownerId) { + super(ownerId); + this.cardNumber = 146; + this.expansionSetCode = "TPR"; + } + + public MoggInfestation(final MoggInfestation card) { + super(card); + } + + @Override + public MoggInfestation copy() { + return new MoggInfestation(this); + } +} diff --git a/Mage/src/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java b/Mage/src/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java new file mode 100644 index 0000000000..1f69d20f2d --- /dev/null +++ b/Mage/src/mage/abilities/effects/common/CantBeRegeneratedTargetEffect.java @@ -0,0 +1,94 @@ +/* + * 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.abilities.effects.common; + +import mage.abilities.Ability; +import mage.abilities.Mode; +import mage.abilities.effects.ContinuousRuleModifyingEffectImpl; +import mage.constants.Duration; +import mage.constants.Outcome; +import mage.game.Game; +import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; + +/** + * + * @author LevelX2 + */ +public class CantBeRegeneratedTargetEffect extends ContinuousRuleModifyingEffectImpl { + + public CantBeRegeneratedTargetEffect(Duration duration) { + super(duration, Outcome.Benefit, false, false); + } + + public CantBeRegeneratedTargetEffect(final CantBeRegeneratedTargetEffect effect) { + super(effect); + } + + @Override + public CantBeRegeneratedTargetEffect copy() { + return new CantBeRegeneratedTargetEffect(this); + } + + @Override + public boolean apply(Game game, Ability source) { + return true; + } + + @Override + public boolean checksEventType(GameEvent event, Game game) { + return event.getType() == EventType.REGENERATE; + } + + @Override + public boolean applies(GameEvent event, Ability source, Game game) { + return getTargetPointer().getTargets(game, source).contains(event.getTargetId()); + } + + @Override + public String getText(Mode mode) { + if (staticText != null && !staticText.isEmpty()) { + return staticText; + } + StringBuilder sb = new StringBuilder(); + if (!mode.getTargets().isEmpty()) { + sb.append("target ").append(mode.getTargets().get(0).getTargetName()); + } + sb.append(" can't be regenerated"); + if (!duration.toString().isEmpty()) { + sb.append(" "); + if (duration.equals(Duration.EndOfTurn)) { + sb.append(" this turn"); + } else { + sb.append(" ").append(duration.toString()); + } + } + return sb.toString(); + } + +} diff --git a/Mage/src/mage/game/events/GameEvent.java b/Mage/src/mage/game/events/GameEvent.java index 847772bafc..c182a808a6 100644 --- a/Mage/src/mage/game/events/GameEvent.java +++ b/Mage/src/mage/game/events/GameEvent.java @@ -149,12 +149,22 @@ public class GameEvent { ATTACH, ATTACHED, UNATTACH, UNATTACHED, ADD_COUNTER, COUNTER_ADDED, - ADD_COUNTERS, COUNTERS_ADDED, /* COUNTERS_ADDED not implemented yet */ + ADD_COUNTERS, COUNTERS_ADDED, COUNTER_REMOVED, LOSE_CONTROL, LOST_CONTROL, GAIN_CONTROL, GAINED_CONTROL, CREATE_TOKEN, - REGENERATE, REGENERATED, + + /* REGENERATE + targetId id of the creature to regenerate + sourceId sourceId of the effect doing the regeneration + playerId controller of the creature + amount not used for this event + flag not used for this event + */ + REGENERATE, + + REGENERATED, CHANGE_COLOR, COLOR_CHANGED, //combat events diff --git a/Mage/src/mage/game/permanent/token/Token.java b/Mage/src/mage/game/permanent/token/Token.java index c98c3a96b9..fd8a46bb1b 100644 --- a/Mage/src/mage/game/permanent/token/Token.java +++ b/Mage/src/mage/game/permanent/token/Token.java @@ -164,10 +164,11 @@ public class Token extends MageObjectImpl { game.getCombat().addAttackingCreature(newToken.getId(), game); } } - if (!game.isSimulation()) + if (!game.isSimulation()) { game.informPlayers(new StringBuilder(controller.getName()).append(" puts ") - .append(CardUtil.numberToText(amount, "a")).append(" ").append(this.getName()).append(" token").append(amount==1?"":"s") - .append(" onto the battlefield").toString()); + .append(CardUtil.numberToText(amount, "a")).append(" ").append(this.getName()).append(" token").append(amount==1?"":"s") + .append(" onto the battlefield").toString()); + } return true; } return false; From a1527ca74561f3b7e6d3466afa78f630d6ea0cbf Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 6 Apr 2015 07:25:53 -0300 Subject: [PATCH 070/175] Added Temporary Insanity --- .../knightsvsdragons/TemporaryInsanity.java | 52 ++++++++ .../mage/sets/torment/TemporaryInsanity.java | 121 ++++++++++++++++++ 2 files changed, 173 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/TemporaryInsanity.java create mode 100644 Mage.Sets/src/mage/sets/torment/TemporaryInsanity.java diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/TemporaryInsanity.java b/Mage.Sets/src/mage/sets/knightsvsdragons/TemporaryInsanity.java new file mode 100644 index 0000000000..f8b8b2f14f --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/TemporaryInsanity.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.knightsvsdragons; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class TemporaryInsanity extends mage.sets.torment.TemporaryInsanity { + + public TemporaryInsanity(UUID ownerId) { + super(ownerId); + this.cardNumber = 73; + this.expansionSetCode = "DDG"; + } + + public TemporaryInsanity(final TemporaryInsanity card) { + super(card); + } + + @Override + public TemporaryInsanity copy() { + return new TemporaryInsanity(this); + } +} diff --git a/Mage.Sets/src/mage/sets/torment/TemporaryInsanity.java b/Mage.Sets/src/mage/sets/torment/TemporaryInsanity.java new file mode 100644 index 0000000000..86ee015044 --- /dev/null +++ b/Mage.Sets/src/mage/sets/torment/TemporaryInsanity.java @@ -0,0 +1,121 @@ +/* + * 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.torment; + +import java.util.UUID; +import mage.MageObject; +import mage.abilities.Ability; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.UntapTargetEffect; +import mage.abilities.effects.common.continuous.GainAbilityTargetEffect; +import mage.abilities.effects.common.continuous.GainControlTargetEffect; +import mage.abilities.keyword.HasteAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.game.Game; +import mage.game.permanent.Permanent; +import mage.target.common.TargetCreaturePermanent; + +/** + * + * @author FenrisulfrX + */ +public class TemporaryInsanity extends CardImpl { + + public TemporaryInsanity(UUID ownerId) { + super(ownerId, 116, "Temporary Insanity", Rarity.UNCOMMON, new CardType[]{CardType.INSTANT}, "{3}{R}"); + this.expansionSetCode = "TOR"; + + // Untap target creature with power less than the number of cards in your graveyard + this.getSpellAbility().addTarget(new TargetCreatureWithPowerLessThanNumberOfCardsInYourGraveyard()); + this.getSpellAbility().addEffect(new UntapTargetEffect()); + + // and gain control of it until end of turn. + Effect effect = new GainControlTargetEffect(Duration.EndOfTurn); + effect.setText("and gain control of it until end of the turn. "); + this.getSpellAbility().addEffect(effect); + + // That creature gains haste until end of turn. + effect = new GainAbilityTargetEffect(HasteAbility.getInstance(), Duration.EndOfTurn); + effect.setText("That creature gains haste until end of the turn."); + this.getSpellAbility().addEffect(effect); + } + + public TemporaryInsanity(final TemporaryInsanity card) { + super(card); + } + + @Override + public TemporaryInsanity copy() { + return new TemporaryInsanity(this); + } +} + +class TargetCreatureWithPowerLessThanNumberOfCardsInYourGraveyard extends TargetCreaturePermanent { + + public TargetCreatureWithPowerLessThanNumberOfCardsInYourGraveyard() { + super(); + targetName = "creature with power less than the number of cards in your graveyard"; + } + + public TargetCreatureWithPowerLessThanNumberOfCardsInYourGraveyard(final TargetCreatureWithPowerLessThanNumberOfCardsInYourGraveyard target) { + super(target); + } + + @Override + public boolean canTarget(UUID controllerId, UUID id, Ability source, Game game) { + if (super.canTarget(controllerId, id, source, game)) { + Permanent target = game.getPermanent(id); + if (target != null) { + return target.getPower().getValue() < game.getPlayer(source.getControllerId()).getGraveyard().size(); + } + return false; + } + return false; + } + + @Override + public boolean canChoose(UUID sourceId, UUID sourceControllerId, Game game) { + MageObject targetSource = game.getObject(sourceId); + for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game)) { + if (permanent.canBeTargetedBy(targetSource, sourceControllerId, game)) { + if(permanent.getPower().getValue() < game.getPlayer(sourceControllerId).getGraveyard().size()) { + return true; + } + } + } + return false; + } + + @Override + public TargetCreatureWithPowerLessThanNumberOfCardsInYourGraveyard copy() { + return new TargetCreatureWithPowerLessThanNumberOfCardsInYourGraveyard(this); + } +} From c30e26e1b6b092a28e54f0b6228c333d6d63b3b3 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 6 Apr 2015 10:06:27 -0300 Subject: [PATCH 071/175] Added Spidersilk Armor --- .../knightsvsdragons/SpidersilkArmor.java | 72 +++++++++++++++++++ .../mercadianmasques/SpidersilkArmor.java | 52 ++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/SpidersilkArmor.java create mode 100644 Mage.Sets/src/mage/sets/mercadianmasques/SpidersilkArmor.java diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/SpidersilkArmor.java b/Mage.Sets/src/mage/sets/knightsvsdragons/SpidersilkArmor.java new file mode 100644 index 0000000000..2f3a4d9357 --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/SpidersilkArmor.java @@ -0,0 +1,72 @@ +/* + * 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.knightsvsdragons; + +import java.util.UUID; +import mage.abilities.Ability; +import mage.abilities.common.SimpleStaticAbility; +import mage.abilities.effects.Effect; +import mage.abilities.effects.common.continuous.BoostControlledEffect; +import mage.abilities.effects.common.continuous.GainAbilityControlledEffect; +import mage.abilities.keyword.ReachAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; +import mage.filter.common.FilterCreaturePermanent; + +/** + * + * @author FenrisulfrX + */ +public class SpidersilkArmor extends CardImpl { + + public SpidersilkArmor(UUID ownerId) { + super(ownerId, 32, "Spidersilk Armor", Rarity.COMMON, new CardType[]{CardType.ENCHANTMENT}, "{2}{G}"); + this.expansionSetCode = "DDG"; + + // Creatures you control get +0/+1 and have reach. + Ability ability = new SimpleStaticAbility(Zone.BATTLEFIELD, + new BoostControlledEffect(0, 1, Duration.WhileOnBattlefield)); + Effect effect = new GainAbilityControlledEffect(ReachAbility.getInstance(), + Duration.WhileOnBattlefield, new FilterCreaturePermanent()); + effect.setText("and have reach."); + ability.addEffect(effect); + this.addAbility(ability); + } + + public SpidersilkArmor(final SpidersilkArmor card) { + super(card); + } + + @Override + public SpidersilkArmor copy() { + return new SpidersilkArmor(this); + } +} diff --git a/Mage.Sets/src/mage/sets/mercadianmasques/SpidersilkArmor.java b/Mage.Sets/src/mage/sets/mercadianmasques/SpidersilkArmor.java new file mode 100644 index 0000000000..4a3cb1541e --- /dev/null +++ b/Mage.Sets/src/mage/sets/mercadianmasques/SpidersilkArmor.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.mercadianmasques; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class SpidersilkArmor extends mage.sets.knightsvsdragons.SpidersilkArmor { + + public SpidersilkArmor(UUID ownerId) { + super(ownerId); + this.cardNumber = 273; + this.expansionSetCode = "MMQ"; + } + + public SpidersilkArmor(final SpidersilkArmor card) { + super(card); + } + + @Override + public SpidersilkArmor copy() { + return new SpidersilkArmor(this); + } +} From 5eea5b9623753dba9c4d41a334e20e59613231b9 Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 6 Apr 2015 10:57:50 -0300 Subject: [PATCH 072/175] Added Thunder Dragon Also added both decks form the DUEL DECKS: KNIGHTS VS. DRAGONS set. --- .../Knights vs. Dragons/Dragons.dck | 35 +++++++++ .../Knights vs. Dragons/Knights.dck | 46 +++++++++++ .../sets/knightsvsdragons/ThunderDragon.java | 52 +++++++++++++ .../mage/sets/starter1999/ThunderDragon.java | 78 +++++++++++++++++++ 4 files changed, 211 insertions(+) create mode 100644 Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Dragons.dck create mode 100644 Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Knights.dck create mode 100644 Mage.Sets/src/mage/sets/knightsvsdragons/ThunderDragon.java create mode 100644 Mage.Sets/src/mage/sets/starter1999/ThunderDragon.java diff --git a/Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Dragons.dck b/Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Dragons.dck new file mode 100644 index 0000000000..0e524b390e --- /dev/null +++ b/Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Dragons.dck @@ -0,0 +1,35 @@ +1 [DDG:64] Breath of Darigaaz +1 [DDG:63] Dragon's Claw +1 [DDG:66] Punishing Fire +2 [DDG:65] Dragon Fodder +1 [DDG:60] Shivan Hellkite +2 [DDG:62] Armillary Sphere +1 [DDG:61] Thunder Dragon +1 [DDG:48] Cinder Wall +1 [DDG:47] Bogardan Hellkite +1 [DDG:68] Captive Flame +1 [DDG:49] Skirk Prospector +1 [DDG:67] Spitting Earth +1 [DDG:69] Ghostfire +6 [DDG:81] Mountain +1 [DDG:51] Fire-Belly Changeling +1 [DDG:77] Jaws of Stone +1 [DDG:50] Bloodmark Mentor +2 [DDG:76] Fiery Fall +1 [DDG:75] Cone of Flame +1 [DDG:74] Shiv's Embrace +1 [DDG:73] Temporary Insanity +1 [DDG:55] Henge Guardian +1 [DDG:72] Claws of Valakut +2 [DDG:54] Dragon Whelp +1 [DDG:71] Seismic Strike +1 [DDG:53] Dragonspeaker Shaman +2 [DDG:52] Mudbutton Torchrunner +1 [DDG:70] Seething Song +1 [DDG:59] Kilnmouth Dragon +1 [DDG:58] Mordant Dragon +1 [DDG:57] Bogardan Rager +1 [DDG:56] Voracious Dragon +6 [DDG:79] Mountain +6 [DDG:78] Mountain +6 [DDG:80] Mountain diff --git a/Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Knights.dck b/Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Knights.dck new file mode 100644 index 0000000000..4f296a35c1 --- /dev/null +++ b/Mage.Client/release/sample-decks/Duel Decks/Knights vs. Dragons/Knights.dck @@ -0,0 +1,46 @@ +1 [DDG:27] Reprisal +1 [DDG:28] Test of Faith +3 [DDG:40] Plains +1 [DDG:29] Heroes' Reunion +3 [DDG:42] Plains +1 [DDG:8] Silver Knight +1 [DDG:23] Harm's Way +3 [DDG:41] Plains +1 [DDG:24] Reciprocate +1 [DDG:7] Leonin Skyhunter +2 [DDG:44] Forest +1 [DDG:25] Edge of Autumn +2 [DDG:43] Forest +1 [DDG:26] Mighty Leap +1 [DDG:9] White Knight +1 [DDG:46] Forest +1 [DDG:45] Forest +1 [DDG:20] Plover Knights +1 [DDG:21] Juniper Order Ranger +2 [DDG:3] Lionheart Maverick +2 [DDG:4] Knight of Cliffhaven +1 [DDG:5] Knight of Meadowgrain +1 [DDG:6] Knight of the White Orchid +1 [DDG:1] Knight of the Reliquary +1 [DDG:2] Caravan Escort +1 [DDG:14] Knight Exemplar +1 [DDG:15] Wilt-Leaf Cavaliers +1 [DDG:38] Treetop Village +1 [DDG:12] Benalish Lancer +3 [DDG:39] Plains +1 [DDG:13] Zhalfirin Commander +1 [DDG:36] Sejiri Steppe +1 [DDG:55] Henge Guardian +1 [DDG:18] Alaborn Cavalier +2 [DDG:37] Selesnya Sanctuary +1 [DDG:19] Skyhunter Patrol +1 [DDG:34] Oblivion Ring +1 [DDG:16] Kabira Vindicator +2 [DDG:35] Grasslands +1 [DDG:17] Kinsbaile Cavalier +1 [DDG:32] Spidersilk Armor +1 [DDG:33] Griffin Guide +1 [DDG:30] Sigil Blessing +1 [DDG:31] Loxodon Warhammer +1 [DDG:10] Knotvine Paladin +1 [DDG:11] Steward of Valeron diff --git a/Mage.Sets/src/mage/sets/knightsvsdragons/ThunderDragon.java b/Mage.Sets/src/mage/sets/knightsvsdragons/ThunderDragon.java new file mode 100644 index 0000000000..c13f81d0f9 --- /dev/null +++ b/Mage.Sets/src/mage/sets/knightsvsdragons/ThunderDragon.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.knightsvsdragons; + +import java.util.UUID; + +/** + * + * @author FenrisulfrX + */ +public class ThunderDragon extends mage.sets.starter1999.ThunderDragon { + + public ThunderDragon(UUID ownerId) { + super(ownerId); + this.cardNumber = 61; + this.expansionSetCode = "DDG"; + } + + public ThunderDragon(final ThunderDragon card) { + super(card); + } + + @Override + public ThunderDragon copy() { + return new ThunderDragon(this); + } +} diff --git a/Mage.Sets/src/mage/sets/starter1999/ThunderDragon.java b/Mage.Sets/src/mage/sets/starter1999/ThunderDragon.java new file mode 100644 index 0000000000..96565db7db --- /dev/null +++ b/Mage.Sets/src/mage/sets/starter1999/ThunderDragon.java @@ -0,0 +1,78 @@ +/* + * 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.starter1999; + +import java.util.UUID; +import mage.MageInt; +import mage.abilities.TriggeredAbility; +import mage.abilities.common.EntersBattlefieldTriggeredAbility; +import mage.abilities.effects.common.DamageAllEffect; +import mage.abilities.keyword.FlyingAbility; +import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Rarity; +import mage.filter.common.FilterCreaturePermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.AbilityPredicate; + +/** + * + * @author FenrisulfrX + */ +public class ThunderDragon extends CardImpl { + + private static final FilterCreaturePermanent filter = new FilterCreaturePermanent("creature without flying"); + + static { + filter.add(Predicates.not(new AbilityPredicate(FlyingAbility.class))); + } + + public ThunderDragon(UUID ownerId) { + super(ownerId, 119, "Thunder Dragon", Rarity.RARE, new CardType[]{CardType.CREATURE}, "{5}{R}{R}"); + this.expansionSetCode = "S99"; + this.subtype.add("Dragon"); + this.power = new MageInt(5); + this.toughness = new MageInt(5); + + // Flying + this.addAbility(FlyingAbility.getInstance()); + + // When Thunder Dragon enters the battlefield, it deals 3 damage to each creature without flying. + TriggeredAbility ability = new EntersBattlefieldTriggeredAbility(new DamageAllEffect(3, filter)); + this.addAbility(ability); + } + + public ThunderDragon(final ThunderDragon card) { + super(card); + } + + @Override + public ThunderDragon copy() { + return new ThunderDragon(this); + } +} From b4cece842919fe721e9afaebf1c0b0418babcd0a Mon Sep 17 00:00:00 2001 From: FenrisulfrX Date: Mon, 6 Apr 2015 11:15:06 -0300 Subject: [PATCH 073/175] Kuldotha Forgemaster - Small fix to the filter text Fixes #884 --- .../src/mage/sets/scarsofmirrodin/KuldothaForgemaster.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaForgemaster.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaForgemaster.java index 052bc47d1a..4058384606 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaForgemaster.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/KuldothaForgemaster.java @@ -49,7 +49,7 @@ import mage.target.common.TargetControlledPermanent; public class KuldothaForgemaster extends CardImpl { private static final FilterArtifactCard filterArtifactCard = new FilterArtifactCard(); - private static final FilterControlledArtifactPermanent filterArtifactPermanent = new FilterControlledArtifactPermanent(); + private static final FilterControlledArtifactPermanent filterArtifactPermanent = new FilterControlledArtifactPermanent("three artifacts you control"); public KuldothaForgemaster(UUID ownerId) { super(ownerId, 169, "Kuldotha Forgemaster", Rarity.RARE, new CardType[]{CardType.ARTIFACT, CardType.CREATURE}, "{5}"); From a56cccebf95432ee558d40c464b5f752d3a3222c Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 7 Apr 2015 00:24:42 +0200 Subject: [PATCH 074/175] * Chained Throatseeker - Fixed that it could not attack if defending player hat a poison counter. --- .../sets/newphyrexia/ChainedThroatseeker.java | 58 +++++++++---------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/Mage.Sets/src/mage/sets/newphyrexia/ChainedThroatseeker.java b/Mage.Sets/src/mage/sets/newphyrexia/ChainedThroatseeker.java index d74d06e479..20e397dfdc 100644 --- a/Mage.Sets/src/mage/sets/newphyrexia/ChainedThroatseeker.java +++ b/Mage.Sets/src/mage/sets/newphyrexia/ChainedThroatseeker.java @@ -28,18 +28,19 @@ package mage.sets.newphyrexia; import java.util.UUID; - -import mage.constants.*; import mage.MageInt; import mage.abilities.Ability; import mage.abilities.common.SimpleStaticAbility; -import mage.abilities.effects.ReplacementEffectImpl; +import mage.abilities.effects.RestrictionEffect; import mage.abilities.keyword.InfectAbility; import mage.cards.CardImpl; +import mage.constants.CardType; +import mage.constants.Duration; +import mage.constants.Rarity; +import mage.constants.Zone; import mage.counters.CounterType; import mage.game.Game; -import mage.game.events.GameEvent; -import mage.game.events.GameEvent.EventType; +import mage.game.permanent.Permanent; import mage.players.Player; /** @@ -53,12 +54,14 @@ public class ChainedThroatseeker extends CardImpl { this.expansionSetCode = "NPH"; this.subtype.add("Horror"); - this.color.setBlue(true); this.power = new MageInt(5); this.toughness = new MageInt(5); + // Infect (This creature deals damage to creatures in the form of -1/-1 counters and to players in the form of poison counters.) this.addAbility(InfectAbility.getInstance()); - this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ChainedThroatseekerEffect())); + + // Chained Throatseeker can't attack unless defending player is poisoned. + this.addAbility(new SimpleStaticAbility(Zone.BATTLEFIELD, new ChainedThroatseekerCantAttackEffect())); } public ChainedThroatseeker(final ChainedThroatseeker card) { @@ -71,43 +74,36 @@ public class ChainedThroatseeker extends CardImpl { } } -class ChainedThroatseekerEffect extends ReplacementEffectImpl { +class ChainedThroatseekerCantAttackEffect extends RestrictionEffect { - public ChainedThroatseekerEffect() { - super(Duration.WhileOnBattlefield, Outcome.Detriment); + public ChainedThroatseekerCantAttackEffect() { + super(Duration.WhileOnBattlefield); staticText = "{this} can't attack unless defending player is poisoned"; } - public ChainedThroatseekerEffect(final ChainedThroatseekerEffect effect) { + public ChainedThroatseekerCantAttackEffect(final ChainedThroatseekerCantAttackEffect effect) { super(effect); } @Override - public ChainedThroatseekerEffect copy() { - return new ChainedThroatseekerEffect(this); + public boolean applies(Permanent permanent, Ability source, Game game) { + return permanent.getId().equals(source.getSourceId()); } @Override - public boolean apply(Game game, Ability source) { - return true; - } - - @Override - public boolean replaceEvent(GameEvent event, Ability source, Game game) { - return true; - } - - @Override - public boolean applies(GameEvent event, Ability source, Game game) { - if (event.getType() == EventType.DECLARE_ATTACKER && source.getSourceId().equals(event.getSourceId())) { - Player targetPlayer = game.getPlayer(event.getTargetId()); - if (targetPlayer != null) { - if (targetPlayer.getCounters().containsKey(CounterType.POISON)) { - return true; - } + public boolean canAttack(UUID defenderId, Ability source, Game game) { + Player targetPlayer = game.getPlayer(defenderId); + if (targetPlayer != null) { + if (targetPlayer.getCounters().containsKey(CounterType.POISON)) { + return true; } } return false; } -} + @Override + public ChainedThroatseekerCantAttackEffect copy() { + return new ChainedThroatseekerCantAttackEffect(this); + } + +} \ No newline at end of file From f62d3ac227917d06e33f08f996796de32bcf9991 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Tue, 7 Apr 2015 00:27:07 +0200 Subject: [PATCH 075/175] * Exploit - Fixed that Exploit also triggered if the creature with Exploit left the battlefield before the first ability of Exploit resolved. --- Mage.Client/serverlist.txt | 5 +- .../mage/sets/futuresight/ScoutsWarning.java | 4 +- .../src/mage/sets/guildpact/Quicken.java | 2 +- .../mage/sets/magic2014/SavageSummoning.java | 2 +- .../cards/abilities/keywords/ExploitTest.java | 140 ++++++++++++++++++ Mage/src/mage/abilities/Ability.java | 5 +- Mage/src/mage/abilities/AbilityImpl.java | 15 +- Mage/src/mage/abilities/StaticAbility.java | 14 +- .../mage/abilities/TriggeredAbilities.java | 2 +- .../mage/abilities/TriggeredAbilityImpl.java | 33 +++++ .../common/CycleTriggeredAbility.java | 3 +- .../common/DiesTriggeredAbility.java | 2 +- .../ExploitCreatureTriggeredAbility.java | 12 +- .../abilities/effects/ContinuousEffects.java | 20 +-- .../mage/abilities/keyword/HauntAbility.java | 6 +- Mage/src/mage/game/stack/StackAbility.java | 6 +- Mage/src/mage/util/trace/TraceUtil.java | 4 +- 17 files changed, 231 insertions(+), 44 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ExploitTest.java diff --git a/Mage.Client/serverlist.txt b/Mage.Client/serverlist.txt index db59294453..59d6968638 100644 --- a/Mage.Client/serverlist.txt +++ b/Mage.Client/serverlist.txt @@ -1,7 +1,6 @@ woogerworks (North America/USA) :xmage.woogerworks.com:17171 -Xmage.de 1 (Europe/Germany) :xmage.de:17171 -XMage.info 1 (Europe/France) :176.31.186.181:17171 -XMage.info 2 (Europe/France) :176.31.186.181:17000 +XMage.de 1 (Europe/Germany) fast :xmage.de:17171 +XMage.info 2 (Europe/France) slow :176.31.186.181:17000 IceMage (Europe/Netherlands) :ring0.cc:17171 Seedds Server (Asia) :115.29.203.80:17171 localhost -> connect to your local server (must be started):localhost:17171 diff --git a/Mage.Sets/src/mage/sets/futuresight/ScoutsWarning.java b/Mage.Sets/src/mage/sets/futuresight/ScoutsWarning.java index f6802ed282..624abe4f6e 100644 --- a/Mage.Sets/src/mage/sets/futuresight/ScoutsWarning.java +++ b/Mage.Sets/src/mage/sets/futuresight/ScoutsWarning.java @@ -56,8 +56,6 @@ public class ScoutsWarning extends CardImpl { super(ownerId, 16, "Scout's Warning", Rarity.RARE, new CardType[]{CardType.INSTANT}, "{W}"); this.expansionSetCode = "FUT"; - this.color.setWhite(true); - // The next creature card you play this turn can be played as though it had flash. this.getSpellAbility().addEffect(new ScoutsWarningAsThoughEffect()); this.getSpellAbility().addWatcher(new ScoutsWarningWatcher()); @@ -117,7 +115,7 @@ class ScoutsWarningAsThoughEffect extends AsThoughEffectImpl { if (watcher.isScoutsWarningSpellActive(source.getSourceId(), zoneChangeCounter)) { Card card = game.getCard(sourceId); if (card != null && card.getCardType().contains(CardType.CREATURE) && source.getControllerId().equals(affectedControllerId)) { - return card.getSpellAbility().isInUseableZone(game, card, false); + return card.getSpellAbility().isInUseableZone(game, card, null); } } return false; diff --git a/Mage.Sets/src/mage/sets/guildpact/Quicken.java b/Mage.Sets/src/mage/sets/guildpact/Quicken.java index b2f3f466f9..be65ccea16 100644 --- a/Mage.Sets/src/mage/sets/guildpact/Quicken.java +++ b/Mage.Sets/src/mage/sets/guildpact/Quicken.java @@ -118,7 +118,7 @@ class QuickenAsThoughEffect extends AsThoughEffectImpl { if (quickenWatcher.isQuickenSpellActive(source.getSourceId(), zoneChangeCounter)) { Card card = game.getCard(sourceId); if (card != null && card.getCardType().contains(CardType.SORCERY) && source.getControllerId().equals(affectedControllerId)) { - return card.getSpellAbility().isInUseableZone(game, card, false); + return card.getSpellAbility().isInUseableZone(game, card, null); } } return false; diff --git a/Mage.Sets/src/mage/sets/magic2014/SavageSummoning.java b/Mage.Sets/src/mage/sets/magic2014/SavageSummoning.java index db2399fb71..63694af386 100644 --- a/Mage.Sets/src/mage/sets/magic2014/SavageSummoning.java +++ b/Mage.Sets/src/mage/sets/magic2014/SavageSummoning.java @@ -132,7 +132,7 @@ class SavageSummoningAsThoughEffect extends AsThoughEffectImpl { if (watcher.isSavageSummoningSpellActive()) { Card card = game.getCard(sourceId); if (card != null && card.getCardType().contains(CardType.CREATURE) && card.getOwnerId().equals(source.getControllerId())) { - return card.getSpellAbility().isInUseableZone(game, card, false); + return card.getSpellAbility().isInUseableZone(game, card, null); } } return false; diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ExploitTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ExploitTest.java new file mode 100644 index 0000000000..97cf0d0798 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/ExploitTest.java @@ -0,0 +1,140 @@ +/* + * 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 org.mage.test.cards.abilities.keywords; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ + +public class ExploitTest extends CardTestPlayerBase { + + /** + * 702.109. Exploit + * + * 702.109a Exploit is a triggered ability. “Exploit” means “When this creature enters the battlefield, you may sacrifice a creature.” + * + * 702.109b A creature with exploit “exploits a creature” when the controller of the exploit ability sacrifices a creature as that ability resolves. + * + * You choose whether to sacrifice a creature and which creature to sacrifice as the exploit ability resolves. + * You can sacrifice the creature with exploit if it’s still on the battlefield. This will cause its other ability to trigger. + * You can’t sacrifice more than one creature to any one exploit ability. + * + */ + + @Test + public void testNormalUse() { + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 5); + // Exploit (When this creature enters the battlefield, you may sacrifice a creature.) + // When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn. + addCard(Zone.HAND, playerA, "Silumgar Butcher"); + addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion"); + + addCard(Zone.BATTLEFIELD, playerB, "Thundering Giant"); // 4/3 + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Silumgar Butcher"); + setChoice(playerA, "Yes"); + addTarget(playerA, "Silvercoat Lion"); // sacrifice to Exploit + addTarget(playerA, "Thundering Giant"); // Target for the -3/-3 + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Silumgar Butcher", 1); + assertGraveyardCount(playerA, "Silvercoat Lion", 1); + assertGraveyardCount(playerB, "Thundering Giant", 1); + + } + /** + * Test that the Exploit ability won't trigger if the creature with + * exploit left the battlefiled before the Enters the battlefield + * triggered ability resolves. + * + */ + @Test + public void testExploitTriggerWontGo() { + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 5); + // Exploit (When this creature enters the battlefield, you may sacrifice a creature.) + // When Silumgar Butcher exploits a creature, target creature gets -3/-3 until end of turn. + addCard(Zone.HAND, playerA, "Silumgar Butcher"); + addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion"); + + addCard(Zone.BATTLEFIELD, playerB, "Mountain", 1); + addCard(Zone.HAND, playerB, "Lightning Bolt", 1); + addCard(Zone.BATTLEFIELD, playerB, "Thundering Giant"); // 4/3 + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Silumgar Butcher"); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerB, "Lightning Bolt", "Silumgar Butcher"); + setChoice(playerA, "Yes"); + addTarget(playerA, "Silvercoat Lion"); // sacrifice to Exploit + addTarget(playerA, "Thundering Giant"); // Target for the -3/-3 + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerB, "Lightning Bolt", 1); + assertGraveyardCount(playerA, "Silumgar Butcher", 1); + assertGraveyardCount(playerA, "Silvercoat Lion", 1); + assertPermanentCount(playerB, "Thundering Giant", 1); + + } + + /** + * Test that the Exploit ability won't trigger if the creature with + * exploit left the battlefiled before the Enters the battlefield + * triggered ability resolves. + * + */ + @Test + public void testSacrificeCreatureWithExploit() { + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 2); + // Exploit (When this creature enters the battlefield, you may sacrifice a creature.) + // When Qarsi Sadist exploits a creature, target opponent loses 2 life and you gain 2 life. + addCard(Zone.HAND, playerA, "Qarsi Sadist"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Qarsi Sadist"); + setChoice(playerA, "Yes"); + addTarget(playerA, "Qarsi Sadist"); // sacrifice to Exploit + addTarget(playerA, playerB); // Target for lose life + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerA, "Qarsi Sadist", 1); + + assertLife(playerA, 22); + assertLife(playerB, 18); + + } + +} \ No newline at end of file diff --git a/Mage/src/mage/abilities/Ability.java b/Mage/src/mage/abilities/Ability.java index 8216042b1e..7d39b32193 100644 --- a/Mage/src/mage/abilities/Ability.java +++ b/Mage/src/mage/abilities/Ability.java @@ -47,6 +47,7 @@ import mage.constants.EffectType; import mage.constants.Zone; import mage.game.Controllable; import mage.game.Game; +import mage.game.events.GameEvent; import mage.players.Player; import mage.target.Target; import mage.target.Targets; @@ -382,10 +383,10 @@ public interface Ability extends Controllable, Serializable { * * @param game * @param source - * @param checkLKI + * @param event * @return */ - boolean isInUseableZone(Game game, MageObject source, boolean checkLKI); + boolean isInUseableZone(Game game, MageObject source, GameEvent event); /** * Returns true if this ability has to be shown as topmost of all the rules of the object diff --git a/Mage/src/mage/abilities/AbilityImpl.java b/Mage/src/mage/abilities/AbilityImpl.java index 84fec853f2..d38d793a59 100644 --- a/Mage/src/mage/abilities/AbilityImpl.java +++ b/Mage/src/mage/abilities/AbilityImpl.java @@ -67,6 +67,7 @@ import mage.constants.Zone; import mage.game.Game; import mage.game.command.Emblem; import mage.game.events.GameEvent; +import mage.game.events.GameEvent.EventType; import mage.game.events.ManaEvent; import mage.game.permanent.Permanent; import mage.game.permanent.PermanentCard; @@ -864,11 +865,10 @@ public abstract class AbilityImpl implements Ability { * * @param game * @param source - * @param checkShortLivingLKI if the object was in the needed zone as the effect that's currently applied started, the check returns true * @return */ @Override - public boolean isInUseableZone(Game game, MageObject source, boolean checkShortLivingLKI) { + public boolean isInUseableZone(Game game, MageObject source, GameEvent event) { if (zone.equals(Zone.COMMAND)) { if (this.getSourceId() == null) { // commander effects return true; @@ -880,17 +880,6 @@ public abstract class AbilityImpl implements Ability { } } - // try LKI first (was the object with the id in the needed zone before) - if (checkShortLivingLKI) { - if (game.getShortLivingLKI(getSourceId(), zone)) { - return true; - } - } else { - if (game.getLastKnownInformation(getSourceId(), zone) != null) { - return true; - } - } - MageObject object; UUID parameterSourceId; // for singleton abilities like Flying we can't rely on abilities' source because it's only once in continuous effects diff --git a/Mage/src/mage/abilities/StaticAbility.java b/Mage/src/mage/abilities/StaticAbility.java index a0d8dd8e6e..d868f70438 100644 --- a/Mage/src/mage/abilities/StaticAbility.java +++ b/Mage/src/mage/abilities/StaticAbility.java @@ -28,9 +28,13 @@ package mage.abilities; +import mage.MageObject; +import mage.abilities.effects.Effect; import mage.constants.AbilityType; import mage.constants.Zone; -import mage.abilities.effects.Effect; +import mage.game.Game; +import mage.game.events.GameEvent; + /** * @@ -49,6 +53,14 @@ public abstract class StaticAbility extends AbilityImpl { } } + @Override + public boolean isInUseableZone(Game game, MageObject source, GameEvent event) { + if (game.getShortLivingLKI(getSourceId(), zone)) { + return true; + } + return super.isInUseableZone(game, source, event); + } + public StaticAbility(StaticAbility ability) { super(ability); } diff --git a/Mage/src/mage/abilities/TriggeredAbilities.java b/Mage/src/mage/abilities/TriggeredAbilities.java index d2ed7faf5a..903a97a8dc 100644 --- a/Mage/src/mage/abilities/TriggeredAbilities.java +++ b/Mage/src/mage/abilities/TriggeredAbilities.java @@ -72,7 +72,7 @@ public class TriggeredAbilities extends ConcurrentHashMap