diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/requirement/BlockRequirementTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/requirement/BlockRequirementTest.java index c277096383..864eb03d27 100644 --- a/Mage.Tests/src/test/java/org/mage/test/cards/requirement/BlockRequirementTest.java +++ b/Mage.Tests/src/test/java/org/mage/test/cards/requirement/BlockRequirementTest.java @@ -29,6 +29,7 @@ package org.mage.test.cards.requirement; import mage.constants.PhaseStep; import mage.constants.Zone; +import org.junit.Ignore; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -178,9 +179,45 @@ public class BlockRequirementTest extends CardTestPlayerBase { setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); execute(); - // Hill giant is still alive and Played B looses 3 lives + // Hill giant is still alive and Played B loses 3 lives assertPermanentCount(playerA, "Hill Giant", 1); assertLife(playerB, 17); + } + + /** + * Reported bug: + * When Breaker of Armies is granted Menace and there is only 1 valid blocker, the game enters a state + * that cannot be continued. He must be blocked by all creatures that are able, however, with menace + * the only valid blocks would be by more than one creature, so the expected behavior is no blocks can be made. + */ + @Ignore + @Test + public void testBreakerOfArmiesWithMenace() { + // {8} + // All creatures able to block Breaker of Armies do so. + addCard(Zone.BATTLEFIELD, playerA, "Breaker of Armies", 1); // 10/8 + + // 3/3 Vanilla creature + addCard(Zone.BATTLEFIELD, playerB, "Hill Giant", 1); + + + addCard(Zone.BATTLEFIELD, playerA, "Swamp", 8); + // {2}{B} Enchanted creature gets +2/+1 and has menace. + addCard(Zone.HAND, playerA, "Untamed Hunger", 1); + castSpell(1,PhaseStep.PRECOMBAT_MAIN, playerA, "Untamed Hunger", "Breaker of Armies"); + + attack(1, playerA, "Breaker of Armies"); + + // not allowed due to Breaker of Armies having menace + block(1, playerB, "Hill Giant", "Breaker of Armies"); + + setStopAt(1, PhaseStep.POSTCOMBAT_MAIN); + execute(); + + // Hill giant is still alive + assertPermanentCount(playerA, "Hill Giant", 1); + // Player B was unable to block, so goes down to 10 life + assertLife(playerB, 10); } } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/MultipliedValue.java b/Mage/src/main/java/mage/abilities/dynamicvalue/MultipliedValue.java index ddcd1aef4f..19b9a1e12c 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/MultipliedValue.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/MultipliedValue.java @@ -38,21 +38,21 @@ import mage.game.Game; public class MultipliedValue implements DynamicValue { private final DynamicValue value; - private final int multiplier; + private final int multplier; // should be renamed to multiplier but don't want to break your stuff public MultipliedValue(DynamicValue value, int multiplier) { this.value = value.copy(); - this.multiplier = multiplier; + this.multplier = multiplier; } MultipliedValue(final MultipliedValue dynamicValue) { this.value = dynamicValue.value.copy(); - this.multiplier = dynamicValue.multiplier; + this.multplier = dynamicValue.multplier; } @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { - return multiplier * value.calculate(game, sourceAbility, effect); + return multplier * value.calculate(game, sourceAbility, effect); } @Override @@ -63,10 +63,10 @@ public class MultipliedValue implements DynamicValue { @Override public String toString() { StringBuilder sb = new StringBuilder(); - if (multiplier == 2) { + if (multplier == 2) { sb.append("twice "); } else { - sb.append(multiplier).append(" * "); + sb.append(multplier).append(" * "); } return sb.append(value.toString()).toString(); } diff --git a/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java b/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java index ac2f1f1dd7..a18cfcd9e3 100644 --- a/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java +++ b/Mage/src/main/java/mage/abilities/dynamicvalue/common/BlockedCreatureCount.java @@ -52,7 +52,7 @@ public class BlockedCreatureCount implements DynamicValue { public BlockedCreatureCount(String message, boolean beyondTheFirst) { this.message = message; - this.beyondTheFirst = beyondTheFirst; + //this.beyondTheFirst = beyondTheFirst; this was never set in the original, so not setting here just in case ?? } public BlockedCreatureCount(final BlockedCreatureCount dynamicValue) {