diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/cost/alternate/UseAlternateSourceCostsTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/cost/alternate/UseAlternateSourceCostsTest.java index fe78134d2c..88ff765efc 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/cost/alternate/UseAlternateSourceCostsTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/cost/alternate/UseAlternateSourceCostsTest.java @@ -13,22 +13,26 @@ public class UseAlternateSourceCostsTest extends CardTestPlayerBase { @Test public void DreamHallsCastColoredSpell() { + setStrictChooseMode(true); + // Rather than pay the mana cost for a spell, its controller may discard a card that shares a color with that spell. addCard(Zone.BATTLEFIELD, playerA, "Dream Halls", 1); - addCard(Zone.BATTLEFIELD, playerA, "Mountain", 3); // Add the mountains so the spell is included in teh available spells addCard(Zone.HAND, playerA, "Gray Ogre", 1); // Creature 3/1 addCard(Zone.HAND, playerA, "Lightning Bolt", 1); castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Gray Ogre"); // Cast Orgre by discarding the Lightning Bolt + setChoice(playerA, "Yes"); // Pay alternative costs? (Discard a card that shares a color with that spell) + setChoice(playerA, "Lightning Bolt"); setStopAt(1, PhaseStep.BEGIN_COMBAT); execute(); + assertAllCommandsUsed(); + //Gray Ogre is cast with the discard assertPermanentCount(playerA, "Gray Ogre", 1); assertGraveyardCount(playerA, "Lightning Bolt", 1); - assertTapped("Mountain", false); } @Test diff --git a/Mage/src/main/java/mage/players/PlayerImpl.java b/Mage/src/main/java/mage/players/PlayerImpl.java index 0180576e9e..7e24747ecc 100644 --- a/Mage/src/main/java/mage/players/PlayerImpl.java +++ b/Mage/src/main/java/mage/players/PlayerImpl.java @@ -3208,7 +3208,7 @@ public abstract class PlayerImpl implements Player, Serializable { // if cast for noMana no Alternative costs are allowed if (alternateSourceCostsAbility instanceof AlternativeSourceCosts) { if (((AlternativeSourceCosts) alternateSourceCostsAbility).isAvailable(ability, game)) { - if (alternateSourceCostsAbility.getCosts().canPay(ability, playerId, playerId, game)) { + if (alternateSourceCostsAbility.getCosts().canPay(ability, sourceObject.getId(), playerId, game)) { ManaCostsImpl manaCosts = new ManaCostsImpl(); for (Cost cost : alternateSourceCostsAbility.getCosts()) { if (cost instanceof ManaCost) { @@ -3250,7 +3250,7 @@ public abstract class PlayerImpl implements Player, Serializable { for (AlternativeSourceCosts alternateSourceCosts : getAlternativeSourceCosts()) { if (alternateSourceCosts instanceof Ability) { if (alternateSourceCosts.isAvailable(ability, game)) { - if (((Ability) alternateSourceCosts).getCosts().canPay(ability, playerId, playerId, game)) { + if (((Ability) alternateSourceCosts).getCosts().canPay(ability, sourceObject.getId(), playerId, game)) { ManaCostsImpl manaCosts = new ManaCostsImpl(); for (Cost cost : ((Ability) alternateSourceCosts).getCosts()) { if (cost instanceof ManaCost) {