From 19a36808f17309f84ef071002b0bc0a33d1208d4 Mon Sep 17 00:00:00 2001 From: "marcin.sciesinski" Date: Fri, 15 Jan 2021 11:10:07 -0800 Subject: [PATCH] Fixed Ulaire Nartea (and all other cards using Duplicate or Optional effect) to not be able to play cards from discard on Great River --- .../field/effect/appender/Duplicate.java | 5 +++ .../build/field/effect/appender/Optional.java | 9 +++++ .../at/effects/PlayCardFromDiscardAtTest.java | 35 +++++++++++++++++++ 3 files changed, 49 insertions(+) diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Duplicate.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Duplicate.java index 9a9b1c5ba..9bd46ba32 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Duplicate.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Duplicate.java @@ -42,6 +42,11 @@ public class Duplicate implements EffectAppenderProducer { public boolean isPlayableInFull(ActionContext actionContext) { return effectAppender.isPlayableInFull(actionContext); } + + @Override + public boolean isPlayabilityCheckedForEffect() { + return effectAppender.isPlayabilityCheckedForEffect(); + } }; } } diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Optional.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Optional.java index 312372b67..51a2611ba 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Optional.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/Optional.java @@ -62,6 +62,15 @@ public class Optional implements EffectAppenderProducer { return true; } + + @Override + public boolean isPlayabilityCheckedForEffect() { + for (EffectAppender effectAppender : effectAppenders) { + if (effectAppender.isPlayabilityCheckedForEffect()) + return true; + } + return false; + } }; } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/effects/PlayCardFromDiscardAtTest.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/effects/PlayCardFromDiscardAtTest.java index 437c906bb..1ee8e880d 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/effects/PlayCardFromDiscardAtTest.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/at/effects/PlayCardFromDiscardAtTest.java @@ -4,11 +4,13 @@ import com.gempukku.lotro.at.AbstractAtTest; import com.gempukku.lotro.common.Phase; import com.gempukku.lotro.common.Zone; import com.gempukku.lotro.game.PhysicalCardImpl; +import com.gempukku.lotro.logic.decisions.AwaitingDecisionType; import org.junit.Test; import java.util.Map; import static junit.framework.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; public class PlayCardFromDiscardAtTest extends AbstractAtTest { @@ -114,4 +116,37 @@ public class PlayCardFromDiscardAtTest extends AbstractAtTest { playerDecided(P2, getCardActionId(P2, "Use The Balrog")); assertEquals(Zone.SHADOW_CHARACTERS, goblinSneakInDiscard.getZone()); } + + @Test + public void ulaireNerteaCantPlayMinionsOnGreatRiver() throws Exception { + initializeSimplestGame(); + + for (int i=0; i<4; i++) { + final PhysicalCardImpl greatRiver = createCard(P1, "1_306"); + _game.getGameState().addCardToZone(_game, greatRiver, Zone.FREE_CHARACTERS); + } + + skipMulligans(); + + final PhysicalCardImpl greatRiver = createCard(P2, "3_118"); + greatRiver.setSiteNumber(2); + _game.getGameState().addCardToZone(_game, greatRiver, Zone.ADVENTURE_PATH); + + final PhysicalCardImpl ulaireNertea = createCard(P2, "1_234"); + _game.getGameState().addCardToZone(_game, ulaireNertea, Zone.HAND); + + final PhysicalCardImpl goblinRunner = createCard(P2, "1_178"); + _game.getGameState().addCardToZone(_game, goblinRunner, Zone.DISCARD); + + _game.getGameState().setTwilight(20); + + // Fellowship phase + playerDecided(P1, ""); + + assertEquals(greatRiver, _game.getGameState().getCurrentSite()); + + playerDecided(P2, getCardActionId(P2, "Play Úlairë Nertëa")); + + assertFalse(_userFeedback.getAwaitingDecision(P2).getDecisionType() == AwaitingDecisionType.MULTIPLE_CHOICE); + } }