From 194c2eb371a941376f5864b6b4e139d93365b30e Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 25 May 2015 00:57:42 +0200 Subject: [PATCH] * Reflecting Pool - Fixed that it did not work correctly with lands that produce conditional mana (e.g. Sliver Hive or Caverns of Soul) fixes #993. --- .../src/mage/sets/magic2015/SliverHive.java | 2 +- .../src/mage/sets/tempest/ReflectingPool.java | 7 ++++ .../test/cards/mana/ConditionalManaTest.java | 34 +++++++++++++++++-- .../mana/ConditionalAnyColorManaAbility.java | 6 ++++ 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/Mage.Sets/src/mage/sets/magic2015/SliverHive.java b/Mage.Sets/src/mage/sets/magic2015/SliverHive.java index 1d2c1a0578f..d28e5e4d8eb 100644 --- a/Mage.Sets/src/mage/sets/magic2015/SliverHive.java +++ b/Mage.Sets/src/mage/sets/magic2015/SliverHive.java @@ -70,7 +70,7 @@ public class SliverHive extends CardImpl { this.addAbility(new ColorlessManaAbility()); // {T}: Add one mana of any color to your mana pool. Spend this mana only to cast a Sliver spell. - this.addAbility(new ConditionalAnyColorManaAbility(1, new SliverHiveManaBuilder())); + this.addAbility(new ConditionalAnyColorManaAbility(new TapSourceCost(), 1, new SliverHiveManaBuilder(), true)); // {5}, {T}: Put a 1/1 colorless Sliver creature token onto the battlefield. Activate this ability only if you control a Sliver. Ability ability = new SimpleActivatedAbility(Zone.BATTLEFIELD, new CreateTokenEffect(new SliverToken()), new TapSourceCost()); diff --git a/Mage.Sets/src/mage/sets/tempest/ReflectingPool.java b/Mage.Sets/src/mage/sets/tempest/ReflectingPool.java index c0c8f643134..005b0e53f88 100644 --- a/Mage.Sets/src/mage/sets/tempest/ReflectingPool.java +++ b/Mage.Sets/src/mage/sets/tempest/ReflectingPool.java @@ -179,6 +179,10 @@ class ReflectingPoolEffect extends ManaEffect { public List getNetMana(Game game, Ability source) { List netManas = new ArrayList<>(); Mana types = getManaTypes(game, source); + if (types.getAny()> 0) { + netManas.add(new Mana(0,0,0,0,0,0,1)); + return netManas; + } if (types.getBlack() > 0) { netManas.add(new Mana(ColoredManaSymbol.B)); } @@ -209,6 +213,9 @@ class ReflectingPoolEffect extends ManaEffect { if (!ability.equals(source) && ability.definesMana()) { for (Mana netMana: ability.getNetMana(game)) { types.add(netMana); + if (netMana.getAny() > 0) { + return types; + } } } } diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/mana/ConditionalManaTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/mana/ConditionalManaTest.java index 197b794d575..d7a9ca20297 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/mana/ConditionalManaTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/mana/ConditionalManaTest.java @@ -29,7 +29,6 @@ package org.mage.test.cards.mana; import mage.constants.PhaseStep; import mage.constants.Zone; -import org.junit.Assert; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -73,5 +72,36 @@ public class ConditionalManaTest extends CardTestPlayerBase { assertHandCount(playerA, "Silvercoat Lion", 1); // player A could not cast Silvercoat Lion because the conditional mana is not available } - + + @Test + public void testWorkingWithReflectingPool() { + addCard(Zone.BATTLEFIELD, playerA, "Cavern of Souls", 1); + addCard(Zone.BATTLEFIELD, playerA, "Reflecting Pool", 1); // can create white mana without restriction from the Cavern + addCard(Zone.HAND, playerA, "Silvercoat Lion", 1); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Silvercoat Lion"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Silvercoat Lion", 1); + } + + @Test + public void testWorkingWithReflectingPool2() { + addCard(Zone.BATTLEFIELD, playerA, "Reflecting Pool", 1); // can create white mana without restriction from the Hive + addCard(Zone.BATTLEFIELD, playerA, "Sliver Hive", 1); + addCard(Zone.HAND, playerA, "Silvercoat Lion", 1); + + activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add {1} to your mana pool"); + activateManaAbility(1, PhaseStep.PRECOMBAT_MAIN, playerA, "{T}: Add to your mana pool one mana of any type"); + setChoice(playerA, "White"); + + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Silvercoat Lion"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Silvercoat Lion", 1); + } } diff --git a/Mage/src/mage/abilities/mana/ConditionalAnyColorManaAbility.java b/Mage/src/mage/abilities/mana/ConditionalAnyColorManaAbility.java index 5aa3331e23f..70190ef50a0 100644 --- a/Mage/src/mage/abilities/mana/ConditionalAnyColorManaAbility.java +++ b/Mage/src/mage/abilities/mana/ConditionalAnyColorManaAbility.java @@ -77,6 +77,12 @@ public class ConditionalAnyColorManaAbility extends ManaAbility { return super.getNetMana(game); } + @Override + public boolean definesMana() { + return true; + } + + @Override public ConditionalAnyColorManaAbility copy() { return new ConditionalAnyColorManaAbility(this);