diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/GethsVerdictTest.java b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/GethsVerdictTest.java new file mode 100644 index 00000000000..d443d69b644 --- /dev/null +++ b/Mage.Tests/src/test/java/org/mage/test/cards/abilities/oneshot/sacrifice/GethsVerdictTest.java @@ -0,0 +1,29 @@ +package org.mage.test.cards.abilities.oneshot.sacrifice; + +import mage.Constants; +import org.junit.Test; +import org.mage.test.serverside.base.CardTestPlayerBase; + +/** + * @author noxx + */ +public class GethsVerdictTest extends CardTestPlayerBase { + + /** + * Checks that pro black can still be sacrificed + */ + @Test + public void testVersusProtectionFromBlack() { + addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp"); + addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp"); + addCard(Constants.Zone.HAND, playerA, "Geth's Verdict"); + addCard(Constants.Zone.BATTLEFIELD, playerB, "White Knight"); + + castSpell(1, Constants.PhaseStep.PRECOMBAT_MAIN, playerA, "Geth's Verdict"); + setStopAt(1, Constants.PhaseStep.BEGIN_COMBAT); + execute(); + + assertPermanentCount(playerB, "White Knight", 0); + assertLife(playerB, 19); + } +} diff --git a/Mage.Tests/src/test/java/org/mage/test/cards/targets/sacrifice/GethsVerdict.java b/Mage.Tests/src/test/java/org/mage/test/cards/targets/sacrifice/GethsVerdict.java deleted file mode 100644 index a5d21ffdcf6..00000000000 --- a/Mage.Tests/src/test/java/org/mage/test/cards/targets/sacrifice/GethsVerdict.java +++ /dev/null @@ -1,22 +0,0 @@ -package org.mage.test.cards.targets.sacrifice; - -import mage.Constants; -import org.junit.Test; -import org.mage.test.serverside.base.CardTestBase; - -public class GethsVerdict extends CardTestBase { - - @Test - public void test() { - addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp"); - addCard(Constants.Zone.BATTLEFIELD, playerA, "Swamp"); - addCard(Constants.Zone.HAND, playerA, "Geth's Verdict"); - addCard(Constants.Zone.BATTLEFIELD, playerB, "Copper Myr"); - - castSpell(playerA, "Geth's Verdict"); - execute(); - - assertPermanentCount(playerB, "Copper Myr", 0); - assertLife(playerB, 19); - } -} diff --git a/Mage/src/mage/target/TargetPermanent.java b/Mage/src/mage/target/TargetPermanent.java index aab3c935c2c..75771069380 100644 --- a/Mage/src/mage/target/TargetPermanent.java +++ b/Mage/src/mage/target/TargetPermanent.java @@ -28,9 +28,6 @@ package mage.target; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.Constants.Zone; import mage.MageObject; import mage.abilities.Ability; @@ -38,6 +35,10 @@ import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author BetaSteward_at_googlemail.com @@ -108,8 +109,9 @@ public class TargetPermanent> extends TargetObject< } /** - * Checks if there are enough {@link Permanent} that can be chosen. Should only be used - * for Ability targets since this checks for protection, shroud etc. + * Checks if there are enough {@link Permanent} that can be chosen. + * + * Takes into account notTarget parameter, it case it's true doesn't check for protection, shroud etc. * * @param sourceId - the target event source * @param sourceControllerId - controller of the target event source @@ -124,10 +126,13 @@ public class TargetPermanent> extends TargetObject< int count = 0; MageObject targetSource = game.getObject(sourceId); for (Permanent permanent: game.getBattlefield().getActivePermanents(filter, sourceControllerId, sourceId, game)) { - if (!targets.containsKey(permanent.getId()) && permanent.canBeTargetedBy(targetSource, sourceControllerId, game)) { - count++; - if (count >= remainingTargets) - return true; + if (!targets.containsKey(permanent.getId())) { + if (!notTarget || permanent.canBeTargetedBy(targetSource, sourceControllerId, game)) { + count++; + if (count >= remainingTargets) { + return true; + } + } } } return false;