diff --git a/Mage.Sets/src/mage/cards/i/Ichorid.java b/Mage.Sets/src/mage/cards/i/Ichorid.java index 8ebbed75ce..ed7a226e4f 100644 --- a/Mage.Sets/src/mage/cards/i/Ichorid.java +++ b/Mage.Sets/src/mage/cards/i/Ichorid.java @@ -27,7 +27,6 @@ */ package mage.cards.i; -import java.util.UUID; import mage.MageInt; import mage.ObjectColor; import mage.abilities.Ability; @@ -52,6 +51,8 @@ import mage.game.Game; import mage.players.Player; import mage.target.common.TargetCardInYourGraveyard; +import java.util.UUID; + /** * * @author Plopman @@ -92,7 +93,11 @@ class IchoridTriggerdAbility extends BeginningOfUpkeepTriggeredAbility{ public IchoridTriggerdAbility(FilterCard filter){ super(Zone.GRAVEYARD, - new DoIfCostPaid(new ReturnSourceFromGraveyardToBattlefieldEffect(), new ExileFromGraveCost(new TargetCardInYourGraveyard(filter))), + new DoIfCostPaid(new ReturnSourceFromGraveyardToBattlefieldEffect(), + new ExileFromGraveCost( + new TargetCardInYourGraveyard(1, 1, filter, true) + ) + ), TargetController.YOU, false); } 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 f3f8d72281..a760f4928c 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,8 @@ package org.mage.test.cards.requirement; import mage.constants.PhaseStep; import mage.constants.Zone; +import mage.game.permanent.Permanent; +import org.junit.Assert; import org.junit.Test; import org.mage.test.serverside.base.CardTestPlayerBase; @@ -66,7 +68,7 @@ public class BlockRequirementTest extends CardTestPlayerBase { castSpell(1, PhaseStep.PRECOMBAT_MAIN, playerA, "Oppressive Rays", "Silvercoat Lion"); - // Silvercoat Lion has not to block because it has to pay {3} to block + // Silvercoat Lion cannot block because it has to pay {3} to block attack(2, playerB, "Prized Unicorn"); setStopAt(2, PhaseStep.POSTCOMBAT_MAIN); @@ -247,4 +249,39 @@ public class BlockRequirementTest extends CardTestPlayerBase { assertGraveyardCount(playerB, "Dimensional Infiltrator", 1); assertGraveyardCount(playerB, "Llanowar Elves", 1); } + + /* + Reported bug: Nacatl War-pride unable to be blocked ? + */ + @Test + public void testNacatlWarPrideBlockOneCreature() { + /* + Nacatl War-Pride {3}{G}{G}{G} + Creature - Cat Warrior 3/3 + Nacatl War-Pride must be blocked by exactly one creature if able. + Whenever Nacatl War-Pride attacks, create X tokens that are copies of Nacatl War-Pride and that are tapped and attacking, + where X is the number of creatures defending player controls. Exile the tokens at the beginning of the next end step. + */ + addCard(Zone.BATTLEFIELD, playerA, "Nacatl War-Pride"); + + /* + Primeval Titan {4}{G}{G} + Creature - Giant 6/6 + Trample. Whenever Primeval Titan enters the battlefield or attacks, you may search your library for up to two land cards, + put them onto the battlefield tapped, then shuffle your library. + */ + addCard(Zone.BATTLEFIELD, playerB, "Primeval Titan"); + + attack(1, playerA, "Nacatl War-Pride"); + block(1, playerB, "Primeval Titan", "Nacatl War-Pride"); + + setStopAt(1, PhaseStep.END_COMBAT); + execute(); + + assertLife(playerB, 17); // one 3/3 tokens attacking got through still + assertGraveyardCount(playerA, "Nacatl War-Pride", 1); + + Permanent primetime = getPermanent("Primeval Titan", playerB); + Assert.assertEquals("Damage to Primeval should be 3 not 0", 3, primetime.getDamage()); + } } diff --git a/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java b/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java index f93b28dff1..0d16c674ad 100644 --- a/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java +++ b/Mage/src/main/java/mage/target/common/TargetCardInYourGraveyard.java @@ -27,9 +27,6 @@ */ package mage.target.common; -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; import mage.abilities.Ability; import mage.cards.Card; import mage.cards.Cards; @@ -40,6 +37,10 @@ import mage.game.events.GameEvent; import mage.players.Player; import mage.target.TargetCard; +import java.util.HashSet; +import java.util.Set; +import java.util.UUID; + /** * * @author BetaSteward_at_googlemail.com @@ -59,7 +60,12 @@ public class TargetCardInYourGraveyard extends TargetCard { } public TargetCardInYourGraveyard(int minNumTargets, int maxNumTargets, FilterCard filter) { - super(minNumTargets, maxNumTargets, Zone.GRAVEYARD, filter); + this(minNumTargets, maxNumTargets, filter, false); + } + + public TargetCardInYourGraveyard(int minNumTarget, int maxNumTargets, FilterCard filter, boolean notTarget) { + super(minNumTarget, maxNumTargets, Zone.GRAVEYARD, filter); + this.setNotTarget(notTarget); } public TargetCardInYourGraveyard(final TargetCardInYourGraveyard target) {