From eec65a288110efc2ba4da33d701f52f6ff3103b3 Mon Sep 17 00:00:00 2001 From: LevelX2 Date: Mon, 11 May 2015 15:33:22 +0200 Subject: [PATCH] * Fixed that some mana effects did not send all neded events (prevented that Contamination chnaged conditonal mana from Cavern of Souls to black mana). --- .../cards/single/avr/CavernOfSoulsTest.java | 27 +++++++++++++++++++ .../AddConditionalManaOfAnyColorEffect.java | 1 + .../common/AddContinuousEffectToGame.java | 2 +- .../common/AddManaOfAnyColorEffect.java | 2 +- .../AddManaOfAnyTypeProducedEffect.java | 3 ++- .../abilities/effects/common/ManaEffect.java | 2 +- 6 files changed, 33 insertions(+), 4 deletions(-) diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/single/avr/CavernOfSoulsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/single/avr/CavernOfSoulsTest.java index 4b2fc04a518..eb69c8b1c41 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/single/avr/CavernOfSoulsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/single/avr/CavernOfSoulsTest.java @@ -223,4 +223,31 @@ public class CavernOfSoulsTest extends CardTestPlayerBase { assertPermanentCount(playerA, "Silvercoat Lion", 0); } + + /** + * Cavern of Souls can produce any colour of mana with its second ability when Contamination is in play. + */ + @Test + public void testUseWithConversionInPlay() { + addCard(Zone.BATTLEFIELD, playerA, "Plains", 3); + addCard(Zone.HAND, playerA, "Cavern of Souls"); + // Creature - Drake {3}{R} + addCard(Zone.HAND, playerA, "Desert Drake"); + + addCard(Zone.BATTLEFIELD, playerB, "Contamination", 1); + + + + playLand(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Cavern of Souls"); + setChoice(playerA, "Drake"); + castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Desert Drake"); + + setStopAt(1, PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerA, "Cavern of Souls", 1); + assertPermanentCount(playerA, "Desert Drake", 0); + + } + } diff --git a/Mage/src/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java b/Mage/src/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java index 946bbf9613e..1b37d1e395d 100644 --- a/Mage/src/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java +++ b/Mage/src/mage/abilities/effects/common/AddConditionalManaOfAnyColorEffect.java @@ -106,6 +106,7 @@ public class AddConditionalManaOfAnyColorEffect extends ManaEffect { } if (mana != null) { + checkToFirePossibleEvents(mana, game, source); controller.getManaPool().addMana(mana, game, source); result = true; } diff --git a/Mage/src/mage/abilities/effects/common/AddContinuousEffectToGame.java b/Mage/src/mage/abilities/effects/common/AddContinuousEffectToGame.java index 0ccc81a8dc0..1cfcdae0e27 100644 --- a/Mage/src/mage/abilities/effects/common/AddContinuousEffectToGame.java +++ b/Mage/src/mage/abilities/effects/common/AddContinuousEffectToGame.java @@ -59,7 +59,7 @@ public class AddContinuousEffectToGame extends OneShotEffect { @Override public boolean apply(Game game, Ability source) { - ContinuousEffect effectToAdd = (ContinuousEffect) effect.copy(); + ContinuousEffect effectToAdd = effect.copy(); game.addEffect(effectToAdd, source); return true; } diff --git a/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java b/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java index b79149a846a..ea14b2f8752 100644 --- a/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java +++ b/Mage/src/mage/abilities/effects/common/AddManaOfAnyColorEffect.java @@ -88,8 +88,8 @@ public class AddManaOfAnyColorEffect extends BasicManaEffect { createdMana = Mana.WhiteMana(amount); } if (createdMana != null) { - controller.getManaPool().addMana(createdMana, game, source); checkToFirePossibleEvents(createdMana, game, source); + controller.getManaPool().addMana(createdMana, game, source); } return true; } diff --git a/Mage/src/mage/abilities/effects/common/AddManaOfAnyTypeProducedEffect.java b/Mage/src/mage/abilities/effects/common/AddManaOfAnyTypeProducedEffect.java index cd3f1b5b39f..d07dd9f6f95 100644 --- a/Mage/src/mage/abilities/effects/common/AddManaOfAnyTypeProducedEffect.java +++ b/Mage/src/mage/abilities/effects/common/AddManaOfAnyTypeProducedEffect.java @@ -111,8 +111,9 @@ public class AddManaOfAnyTypeProducedEffect extends ManaEffect { newMana.setColorless(1); break; } - targetController.getManaPool().addMana(newMana, game, source); checkToFirePossibleEvents(newMana, game, source); + targetController.getManaPool().addMana(newMana, game, source); + } return true; } diff --git a/Mage/src/mage/abilities/effects/common/ManaEffect.java b/Mage/src/mage/abilities/effects/common/ManaEffect.java index c19e070a519..1541c53114e 100644 --- a/Mage/src/mage/abilities/effects/common/ManaEffect.java +++ b/Mage/src/mage/abilities/effects/common/ManaEffect.java @@ -56,7 +56,7 @@ public abstract class ManaEffect extends OneShotEffect { public abstract Mana getMana(Game game, Ability source); /** - * Only used for mana effects that decide which mana is produced during resolution of the effect. + * Only used for mana effects that decide which kind of mana is produced during resolution of the effect. * * @param mana * @param game