From 9cfadbda5b6477e69deccaf6e3abed0c643279c0 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Wed, 3 Jun 2015 22:47:24 +0200 Subject: [PATCH] * Burning Earth - Fixed that the damage effect did not trigger. --- .../mage/sets/darksteel/BlinkmothNexus.java | 6 ++ .../src/mage/sets/magic2014/BurningEarth.java | 14 ++-- .../sets/scarsofmirrodin/RustedRelic.java | 2 +- .../abilities/keywords/MetalcraftTest.java | 69 ++++++++++++++++++ .../test/cards/triggers/BurningEarthTest.java | 71 +++++++++++++++++++ 5 files changed, 157 insertions(+), 5 deletions(-) create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MetalcraftTest.java create mode 100644 Mage.Tests/src/test/java/org/mage/test/cards/triggers/BurningEarthTest.java diff --git a/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java b/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java index 42204e235e8..2ddadf0ed3a 100644 --- a/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java +++ b/Mage.Sets/src/mage/sets/darksteel/BlinkmothNexus.java @@ -63,8 +63,14 @@ public class BlinkmothNexus extends CardImpl { public BlinkmothNexus(UUID ownerId) { super(ownerId, 163, "Blinkmoth Nexus", Rarity.RARE, new CardType[]{CardType.LAND}, null); this.expansionSetCode = "DST"; + + // {T}: Add {1}to your mana pool. this.addAbility(new ColorlessManaAbility()); + + // {1}: Blinkmoth Nexus becomes a 1/1 Blinkmoth artifact creature with flying until end of turn. It's still a land. this.addAbility(new SimpleActivatedAbility(Zone.BATTLEFIELD, new BecomesCreatureSourceEffect(new BlinkmothNexusToken(), "land", Duration.EndOfTurn), new GenericManaCost(1))); + + // {1}, {T}: Target Blinkmoth creature gets +1/+1 until end of turn. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new BoostTargetEffect(1, 1, Duration.EndOfTurn), new GenericManaCost(1)); ability.addCost(new TapSourceCost()); ability.addTarget(new TargetPermanent(filter)); diff --git a/Mage.Sets/src/mage/sets/magic2014/BurningEarth.java b/Mage.Sets/src/mage/sets/magic2014/BurningEarth.java index 7c62477e23a..9f4db5a56a4 100644 --- a/Mage.Sets/src/mage/sets/magic2014/BurningEarth.java +++ b/Mage.Sets/src/mage/sets/magic2014/BurningEarth.java @@ -34,7 +34,9 @@ import mage.cards.CardImpl; import mage.constants.CardType; import mage.constants.Rarity; import mage.constants.SetTargetPointer; -import mage.filter.common.FilterNonlandPermanent; +import mage.filter.common.FilterLandPermanent; +import mage.filter.predicate.Predicates; +import mage.filter.predicate.mageobject.SupertypePredicate; /** * @@ -42,16 +44,20 @@ import mage.filter.common.FilterNonlandPermanent; */ public class BurningEarth extends CardImpl { + private final static FilterLandPermanent filter = new FilterLandPermanent("a player taps a nonbasic land"); + + static { + filter.add(Predicates.not(new SupertypePredicate("Basic"))); + } + public BurningEarth(UUID ownerId) { super(ownerId, 130, "Burning Earth", Rarity.RARE, new CardType[]{CardType.ENCHANTMENT}, "{3}{R}"); this.expansionSetCode = "M14"; - // Whenever a player taps a nonbasic land for mana, Burning Earth deals 1 damage to that player. this.addAbility(new TapForManaAllTriggeredAbility( new DamageTargetEffect(1, true, "that player"), - new FilterNonlandPermanent("a player taps a nonbasic land"), - SetTargetPointer.PLAYER)); + filter, SetTargetPointer.PLAYER)); } public BurningEarth(final BurningEarth card) { diff --git a/Mage.Sets/src/mage/sets/scarsofmirrodin/RustedRelic.java b/Mage.Sets/src/mage/sets/scarsofmirrodin/RustedRelic.java index e6642c03feb..91a9e093543 100644 --- a/Mage.Sets/src/mage/sets/scarsofmirrodin/RustedRelic.java +++ b/Mage.Sets/src/mage/sets/scarsofmirrodin/RustedRelic.java @@ -55,7 +55,7 @@ public class RustedRelic extends CardImpl { new ConditionalContinuousEffect( new BecomesCreatureSourceEffect(new RustedRelicToken(), "artifact", Duration.WhileOnBattlefield), MetalcraftCondition.getInstance(), - "Metalcraft - Rusted Relic is a 5/5 Golem artifact creature as long as you control three or more artifacts"))); + "Metalcraft - {this} is a 5/5 Golem artifact creature as long as you control three or more artifacts"))); } public RustedRelic (final RustedRelic card) { diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MetalcraftTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MetalcraftTest.java new file mode 100644 index 00000000000..42a390fefcf --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/keywords/MetalcraftTest.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 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 MetalcraftTest extends CardTestPlayerBase { + + /** + * Rusted Relic or Blinkmoth nexus is bugged + * Either Relic does not see Blinkmoth as an artifact or it does not turn + * into one when it should. + * + */ + @Test + public void testMetalcraftFromBlinkmoth() { + addCard(Zone.BATTLEFIELD, playerA, "Darksteel Citadel",1); + + // Metalcraft - {this} is a 5/5 Golem artifact creature as long as you control three or more artifacts + addCard(Zone.BATTLEFIELD, playerA, "Rusted Relic", 1); + + // {T}: Add {1}to your mana pool. + // {1}: Blinkmoth Nexus becomes a 1/1 Blinkmoth artifact creature with flying until end of turn. It's still a land. + // {1}, {T}: Target Blinkmoth creature gets +1/+1 until end of turn. + addCard(Zone.BATTLEFIELD, playerA, "Blinkmoth Nexus", 1); + + activateAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{1}: Until end of turn {this} becomes "); + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPowerToughness(playerA, "Blinkmoth Nexus", 1, 1); + assertPowerToughness(playerA, "Rusted Relic", 5, 5); + + } + +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/triggers/BurningEarthTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/BurningEarthTest.java new file mode 100644 index 00000000000..21e6af173df --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/triggers/BurningEarthTest.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 org.mage.test.cards.triggers; + +import mage.constants.PhaseStep; +import mage.constants.Zone; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * + * @author LevelX2 + */ +public class BurningEarthTest extends CardTestPlayerBase { + + /** + * Burning Earth - It doesn't cause the damage it should. My opponent taps a + * Blood Crypt and an Overgrown Tomb for black and green mana respectively + * and casts his card all the while without taking any damage. + * + */ + @Test + public void testBurningEarth() { + // Destroy target artifact or creature. It can't be regenerated. + addCard(Zone.HAND, playerB, "Putrefy"); // {1}{B}{G} + addCard(Zone.BATTLEFIELD, playerB, "Darksteel Citadel", 1); + addCard(Zone.BATTLEFIELD, playerB, "Blood Crypt", 1); // {B}{R} + addCard(Zone.BATTLEFIELD, playerB, "Overgrown Tomb", 1); // {B}{G} + + // Whenever a player taps a nonbasic land for mana, Burning Earth deals 1 damage to that player. + addCard(Zone.BATTLEFIELD, playerA, "Burning Earth", 1); + addCard(Zone.BATTLEFIELD, playerA, "Silvercoat Lion", 1); + + castSpell(2, PhaseStep.PRECOMBAT_MAIN, playerB, "Putrefy", "Silvercoat Lion"); + + setStopAt(2, PhaseStep.BEGIN_COMBAT); + execute(); + + assertGraveyardCount(playerB, "Putrefy", 1); + assertGraveyardCount(playerA, "Silvercoat Lion", 1); + + assertLife(playerA, 20); + assertLife(playerB, 17); + } + +}