diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantDiscardFromPlayModifier.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantDiscardFromPlayModifier.java index f756f4ce9..01ba5861a 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantDiscardFromPlayModifier.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/logic/modifiers/CantDiscardFromPlayModifier.java @@ -18,10 +18,13 @@ public class CantDiscardFromPlayModifier extends AbstractModifier { @Override public boolean canBeDiscardedFromPlay(LotroGame game, String performingPlayer, PhysicalCard card, PhysicalCard source) { + + if (bannedPlayer != null && !bannedPlayer.equals(performingPlayer)) + return true; + if (_sourceFilter.accepts(game, source)) return false; - if (bannedPlayer != null && !bannedPlayer.equals(performingPlayer)) - return false; + return true; } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_306_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_306_Tests.java index 53960b791..3aca83f3f 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_306_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set01/Card_01_306_Tests.java @@ -18,8 +18,11 @@ public class Card_01_306_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "1_306"); - // put other cards in here as needed for the test case + put("pippin", "1_306"); + put("taba", "1_317"); + + put("uruk", "1_151"); + put("power", "1_136"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -48,7 +51,7 @@ public class Card_01_306_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("pippin"); assertEquals("Pippin", card.getBlueprint().getTitle()); assertEquals("Friend to Frodo", card.getBlueprint().getSubtitle()); @@ -64,18 +67,50 @@ public class Card_01_306_Tests assertEquals(Signet.FRODO, card.getBlueprint().getSignet()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void PippinTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void PippinDoesNotBlockFreepsUsingThereAndBackAgain() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var frodo = scn.GetRingBearer(); + var pippin = scn.GetFreepsCard("pippin"); + var taba = scn.GetFreepsCard("taba"); + scn.FreepsMoveCharToTable(pippin); + scn.FreepsAttachCardsTo(frodo, taba); + + var power = scn.GetShadowCard("power"); + scn.ShadowMoveCharToTable("uruk"); + scn.ShadowMoveCardToHand(power); scn.StartGame(); - scn.FreepsPlayCard(card); + scn.SkipToPhase(Phase.MANEUVER); - assertEquals(1, scn.GetTwilight()); + assertTrue(scn.FreepsActionAvailable(taba)); + assertEquals(Zone.ATTACHED, taba.getZone()); + scn.FreepsUseCardAction(taba); + assertEquals(Zone.DISCARD, taba.getZone()); + } + + @Test + public void PippinPreventsShadowDiscardingShadowCards() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var frodo = scn.GetRingBearer(); + var pippin = scn.GetFreepsCard("pippin"); + var taba = scn.GetFreepsCard("taba"); + scn.FreepsMoveCharToTable(pippin); + scn.FreepsAttachCardsTo(frodo, taba); + + var power = scn.GetShadowCard("power"); + scn.ShadowMoveCharToTable("uruk"); + scn.ShadowMoveCardToHand(power); + + scn.StartGame(); + scn.FreepsPassCurrentPhaseAction(); + + assertEquals(Zone.ATTACHED, taba.getZone()); + scn.ShadowPlayCard(power); + assertEquals(Zone.ATTACHED, taba.getZone()); } }