diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/setv02-Rohan-playtest.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/setv02-Rohan-playtest.hjson index fe8141e84..e61dd805d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/setv02-Rohan-playtest.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/setv02-Rohan-playtest.hjson @@ -412,7 +412,7 @@ times: { type: ForEachInMemory memory: discardedHand - filter: side(freeps) + filter: side(shadow) } effect: { type: Exert @@ -424,7 +424,7 @@ times: { type: ForEachInMemory memory: discardedHand - filter: side(shadow) + filter: side(freeps) } effect: { type: Heal diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_048_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_048_Tests.java index 828369dea..6e0abc342 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_048_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_048_Tests.java @@ -18,8 +18,25 @@ public class Card_V2_048_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "102_48"); - // put other cards in here as needed for the test case + put("red", "102_48"); + put("velf", "55_10"); + put("varagorn", "102_16"); + put("vrohan", "7_224"); + put("rohan", "12_107"); + + //Maneuver ability and event + put("albert", "1_69"); + put("valor", "1_103"); + + put("freeps1", "1_70"); + put("freeps2", "1_71"); + put("freeps3", "1_72"); + put("freeps4", "1_73"); + put("freeps5", "1_74"); + + put("uruk1", "5_45"); + put("uruk2", "5_46"); + put("uruk3", "5_47"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -44,7 +61,7 @@ public class Card_V2_048_Tests var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("red"); assertEquals("And the Red Dawn", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -56,18 +73,472 @@ public class Card_V2_048_Tests assertEquals(2, card.getBlueprint().getTwilightCost()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void AndtheRedDawnTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void AndtheRedDawnCannotBePlayedWithout3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var red = scn.GetFreepsCard("red"); + + var velf = scn.GetFreepsCard("velf"); + var varagorn = scn.GetFreepsCard("varagorn"); + var vrohan = scn.GetFreepsCard("vrohan"); + var rohan = scn.GetFreepsCard("rohan"); + var valor = scn.GetFreepsCard("valor"); + + scn.FreepsMoveCharToTable(velf, varagorn, rohan); + scn.FreepsMoveCardToHand("albert"); + scn.FreepsMoveCardToHand(vrohan, valor); + scn.FreepsMoveCardToSupportArea(red); + + scn.ShadowMoveCharToTable("uruk1"); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(2, scn.GetTwilight()); + scn.SkipToPhase(Phase.MANEUVER); + + assertFalse(scn.FreepsActionAvailable(red)); + scn.FreepsMoveCharToTable(vrohan); + scn.FreepsPlayCard(valor); + scn.ShadowPassCurrentPhaseAction(); + + assertTrue(scn.FreepsActionAvailable(red)); + } + + @Test + public void AndtheRedDawnSpots3ValiantCompanionsToDiscardHandAndHaveEffects() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var red = scn.GetFreepsCard("red"); + + scn.FreepsMoveCardToSupportArea(red); + + var frodo = scn.GetRingBearer(); + + var velf = scn.GetFreepsCard("velf"); + var varagorn = scn.GetFreepsCard("varagorn"); + var vrohan = scn.GetFreepsCard("vrohan"); + var rohan = scn.GetFreepsCard("rohan"); + + scn.FreepsMoveCharToTable(velf, varagorn, vrohan, rohan); + + scn.AddWoundsToChar(velf, 2); + scn.AddWoundsToChar(varagorn, 2); + scn.AddWoundsToChar(vrohan, 2); + scn.AddWoundsToChar(rohan, 2); + scn.AddWoundsToChar(frodo, 2); + + var albert = scn.GetFreepsCard("albert"); + var valor = scn.GetFreepsCard("valor"); + + scn.FreepsMoveCharToTable(albert); + scn.FreepsMoveCardToHand(valor); + + var freeps1 = scn.GetFreepsCard("freeps1"); + var freeps2 = scn.GetFreepsCard("freeps2"); + var freeps3 = scn.GetFreepsCard("freeps3"); + var freeps4 = scn.GetFreepsCard("freeps4"); + var freeps5 = scn.GetFreepsCard("freeps5"); + var shadow1 = scn.GetFreepsCard("uruk1"); + var shadow2 = scn.GetFreepsCard("uruk2"); + var shadow3 = scn.GetFreepsCard("uruk3"); + + scn.FreepsMoveCardToHand(freeps1, freeps2, freeps3, freeps4, freeps5, shadow1, shadow2, shadow3); + + var uruk1 = scn.GetShadowCard("uruk1"); + var uruk2 = scn.GetShadowCard("uruk2"); + var uruk3 = scn.GetShadowCard("uruk3"); + + scn.ShadowMoveCharToTable(uruk1, uruk2, uruk3); + + scn.StartGame(); + + scn.SkipToPhase(Phase.MANEUVER); + + assertTrue(scn.FreepsActionAvailable(red)); + assertTrue(scn.FreepsPlayAvailable(valor)); + assertTrue(scn.FreepsActionAvailable(albert)); + scn.FreepsMoveCardToDiscard(valor); + + assertEquals(Zone.HAND, freeps1.getZone()); + assertEquals(Zone.HAND, freeps2.getZone()); + assertEquals(Zone.HAND, freeps3.getZone()); + assertEquals(Zone.HAND, freeps4.getZone()); + assertEquals(Zone.HAND, freeps5.getZone()); + assertEquals(Zone.HAND, shadow1.getZone()); + assertEquals(Zone.HAND, shadow2.getZone()); + assertEquals(Zone.HAND, shadow3.getZone()); + + assertEquals(2, scn.GetWoundsOn(velf)); + assertEquals(2, scn.GetWoundsOn(varagorn)); + assertEquals(2, scn.GetWoundsOn(vrohan)); + assertEquals(2, scn.GetWoundsOn(rohan)); + assertEquals(2, scn.GetWoundsOn(frodo)); + + assertEquals(0, scn.GetWoundsOn(uruk1)); + assertEquals(0, scn.GetWoundsOn(uruk2)); + assertEquals(0, scn.GetWoundsOn(uruk3)); + + scn.FreepsUseCardAction(red); + + assertEquals(Zone.DISCARD, freeps1.getZone()); + assertEquals(Zone.DISCARD, freeps2.getZone()); + assertEquals(Zone.DISCARD, freeps3.getZone()); + assertEquals(Zone.DISCARD, freeps4.getZone()); + assertEquals(Zone.DISCARD, freeps5.getZone()); + assertEquals(Zone.DISCARD, shadow1.getZone()); + assertEquals(Zone.DISCARD, shadow2.getZone()); + assertEquals(Zone.DISCARD, shadow3.getZone()); + + //Should have 3 exertions for 3 discarded shadow cards + //1 + assertTrue(scn.FreepsDecisionAvailable("exert")); + var choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(uruk1.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk2.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk3.getCardId()))); + scn.FreepsChooseCard(uruk1); + assertEquals(1, scn.GetWoundsOn(uruk1)); + + //2 + assertTrue(scn.FreepsDecisionAvailable("exert")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(uruk1.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk2.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk3.getCardId()))); + scn.FreepsChooseCard(uruk2); + assertEquals(1, scn.GetWoundsOn(uruk2)); + + //3 + assertTrue(scn.FreepsDecisionAvailable("exert")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(uruk1.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk2.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk3.getCardId()))); + scn.FreepsChooseCard(uruk3); + assertEquals(1, scn.GetWoundsOn(uruk3)); + + + //Should have 5 heals for 5 discarded freeps cards + //1 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(velf); + assertEquals(1, scn.GetWoundsOn(velf)); + + //2 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(varagorn); + assertEquals(1, scn.GetWoundsOn(varagorn)); + + //3 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(vrohan); + assertEquals(1, scn.GetWoundsOn(vrohan)); + + //4 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(rohan); + assertEquals(1, scn.GetWoundsOn(rohan)); + + //5 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(velf); + assertEquals(0, scn.GetWoundsOn(velf)); + + scn.FreepsMoveCardToHand(valor); + scn.ShadowPassCurrentPhaseAction(); + assertTrue(scn.FreepsDecisionAvailable("maneuver")); + assertFalse(scn.FreepsPlayAvailable(valor)); + assertFalse(scn.FreepsActionAvailable(albert)); + } + + @Test + public void AndtheRedDawnExertAMinionForEachDiscardedShadowCard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var red = scn.GetFreepsCard("red"); + + scn.FreepsMoveCardToSupportArea(red); + + var frodo = scn.GetRingBearer(); + + var velf = scn.GetFreepsCard("velf"); + var varagorn = scn.GetFreepsCard("varagorn"); + var vrohan = scn.GetFreepsCard("vrohan"); + var rohan = scn.GetFreepsCard("rohan"); + + scn.FreepsMoveCharToTable(velf, varagorn, vrohan, rohan); + + scn.AddWoundsToChar(velf, 2); + scn.AddWoundsToChar(varagorn, 2); + scn.AddWoundsToChar(vrohan, 2); + scn.AddWoundsToChar(rohan, 2); + scn.AddWoundsToChar(frodo, 2); + + var albert = scn.GetFreepsCard("albert"); + var valor = scn.GetFreepsCard("valor"); + + scn.FreepsMoveCharToTable(albert); + scn.FreepsMoveCardToHand(valor); + + var freeps1 = scn.GetFreepsCard("freeps1"); + var freeps2 = scn.GetFreepsCard("freeps2"); + var freeps3 = scn.GetFreepsCard("freeps3"); + var freeps4 = scn.GetFreepsCard("freeps4"); + var freeps5 = scn.GetFreepsCard("freeps5"); + var shadow1 = scn.GetFreepsCard("uruk1"); + var shadow2 = scn.GetFreepsCard("uruk2"); + var shadow3 = scn.GetFreepsCard("uruk3"); + + scn.FreepsMoveCardToHand(shadow1, shadow2, shadow3); // no freeps + + var uruk1 = scn.GetShadowCard("uruk1"); + var uruk2 = scn.GetShadowCard("uruk2"); + var uruk3 = scn.GetShadowCard("uruk3"); + + scn.ShadowMoveCharToTable(uruk1, uruk2, uruk3); + + scn.StartGame(); + + scn.SkipToPhase(Phase.MANEUVER); + + assertTrue(scn.FreepsActionAvailable(red)); + assertTrue(scn.FreepsPlayAvailable(valor)); + assertTrue(scn.FreepsActionAvailable(albert)); + scn.FreepsMoveCardToDiscard(valor); + + assertEquals(Zone.HAND, shadow1.getZone()); + assertEquals(Zone.HAND, shadow2.getZone()); + assertEquals(Zone.HAND, shadow3.getZone()); + + assertEquals(2, scn.GetWoundsOn(velf)); + assertEquals(2, scn.GetWoundsOn(varagorn)); + assertEquals(2, scn.GetWoundsOn(vrohan)); + assertEquals(2, scn.GetWoundsOn(rohan)); + assertEquals(2, scn.GetWoundsOn(frodo)); + + assertEquals(0, scn.GetWoundsOn(uruk1)); + assertEquals(0, scn.GetWoundsOn(uruk2)); + assertEquals(0, scn.GetWoundsOn(uruk3)); + + scn.FreepsUseCardAction(red); + + assertEquals(Zone.DISCARD, shadow1.getZone()); + assertEquals(Zone.DISCARD, shadow2.getZone()); + assertEquals(Zone.DISCARD, shadow3.getZone()); + + //Should have 3 exertions for 3 discarded shadow cards + //1 + assertTrue(scn.FreepsDecisionAvailable("exert")); + var choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(uruk1.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk2.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk3.getCardId()))); + scn.FreepsChooseCard(uruk1); + assertEquals(1, scn.GetWoundsOn(uruk1)); + + //2 + assertTrue(scn.FreepsDecisionAvailable("exert")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(uruk1.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk2.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk3.getCardId()))); + scn.FreepsChooseCard(uruk2); + assertEquals(1, scn.GetWoundsOn(uruk2)); + + //3 + assertTrue(scn.FreepsDecisionAvailable("exert")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(uruk1.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk2.getCardId()))); + assertTrue(choices.contains(String.valueOf(uruk3.getCardId()))); + scn.FreepsChooseCard(uruk3); + assertEquals(1, scn.GetWoundsOn(uruk3)); + + assertFalse(scn.FreepsDecisionAvailable("heal")); + + scn.FreepsMoveCardToHand(valor); + scn.ShadowPassCurrentPhaseAction(); + assertTrue(scn.FreepsDecisionAvailable("maneuver")); + assertFalse(scn.FreepsPlayAvailable(valor)); + assertFalse(scn.FreepsActionAvailable(albert)); + } + + @Test + public void AndtheRedDawnHealsAValiantOrRohanCompanionForEachDiscardedFreepsCard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var red = scn.GetFreepsCard("red"); + + scn.FreepsMoveCardToSupportArea(red); + + var frodo = scn.GetRingBearer(); + + var velf = scn.GetFreepsCard("velf"); + var varagorn = scn.GetFreepsCard("varagorn"); + var vrohan = scn.GetFreepsCard("vrohan"); + var rohan = scn.GetFreepsCard("rohan"); + + scn.FreepsMoveCharToTable(velf, varagorn, vrohan, rohan); + + scn.AddWoundsToChar(velf, 2); + scn.AddWoundsToChar(varagorn, 2); + scn.AddWoundsToChar(vrohan, 2); + scn.AddWoundsToChar(rohan, 2); + scn.AddWoundsToChar(frodo, 2); + + var albert = scn.GetFreepsCard("albert"); + var valor = scn.GetFreepsCard("valor"); + + scn.FreepsMoveCharToTable(albert); + scn.FreepsMoveCardToHand(valor); + + var freeps1 = scn.GetFreepsCard("freeps1"); + var freeps2 = scn.GetFreepsCard("freeps2"); + var freeps3 = scn.GetFreepsCard("freeps3"); + var freeps4 = scn.GetFreepsCard("freeps4"); + var freeps5 = scn.GetFreepsCard("freeps5"); + var shadow1 = scn.GetFreepsCard("uruk1"); + var shadow2 = scn.GetFreepsCard("uruk2"); + var shadow3 = scn.GetFreepsCard("uruk3"); + + scn.FreepsMoveCardToHand(freeps1, freeps2, freeps3, freeps4, freeps5); // no shadow + + var uruk1 = scn.GetShadowCard("uruk1"); + var uruk2 = scn.GetShadowCard("uruk2"); + var uruk3 = scn.GetShadowCard("uruk3"); + + scn.ShadowMoveCharToTable(uruk1, uruk2, uruk3); + + scn.StartGame(); + + scn.SkipToPhase(Phase.MANEUVER); + + assertTrue(scn.FreepsActionAvailable(red)); + assertTrue(scn.FreepsPlayAvailable(valor)); + assertTrue(scn.FreepsActionAvailable(albert)); + scn.FreepsMoveCardToDiscard(valor); + + assertEquals(Zone.HAND, freeps1.getZone()); + assertEquals(Zone.HAND, freeps2.getZone()); + assertEquals(Zone.HAND, freeps3.getZone()); + assertEquals(Zone.HAND, freeps4.getZone()); + assertEquals(Zone.HAND, freeps5.getZone()); + + assertEquals(2, scn.GetWoundsOn(velf)); + assertEquals(2, scn.GetWoundsOn(varagorn)); + assertEquals(2, scn.GetWoundsOn(vrohan)); + assertEquals(2, scn.GetWoundsOn(rohan)); + assertEquals(2, scn.GetWoundsOn(frodo)); + + assertEquals(0, scn.GetWoundsOn(uruk1)); + assertEquals(0, scn.GetWoundsOn(uruk2)); + assertEquals(0, scn.GetWoundsOn(uruk3)); + + scn.FreepsUseCardAction(red); + + assertEquals(Zone.DISCARD, freeps1.getZone()); + assertEquals(Zone.DISCARD, freeps2.getZone()); + assertEquals(Zone.DISCARD, freeps3.getZone()); + assertEquals(Zone.DISCARD, freeps4.getZone()); + assertEquals(Zone.DISCARD, freeps5.getZone()); + + assertFalse(scn.FreepsDecisionAvailable("exert")); + + + //Should have 5 heals for 5 discarded freeps cards + //1 + assertTrue(scn.FreepsDecisionAvailable("heal")); + var choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(velf); + assertEquals(1, scn.GetWoundsOn(velf)); + + //2 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(varagorn); + assertEquals(1, scn.GetWoundsOn(varagorn)); + + //3 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(vrohan); + assertEquals(1, scn.GetWoundsOn(vrohan)); + + //4 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(rohan); + assertEquals(1, scn.GetWoundsOn(rohan)); + + //5 + assertTrue(scn.FreepsDecisionAvailable("heal")); + choices = scn.FreepsGetCardChoices(); + assertTrue(choices.contains(String.valueOf(velf.getCardId()))); + assertTrue(choices.contains(String.valueOf(varagorn.getCardId()))); + assertTrue(choices.contains(String.valueOf(vrohan.getCardId()))); + assertTrue(choices.contains(String.valueOf(rohan.getCardId()))); + assertFalse(choices.contains(String.valueOf(frodo.getCardId()))); + scn.FreepsChooseCard(velf); + assertEquals(0, scn.GetWoundsOn(velf)); + + scn.FreepsMoveCardToHand(valor); + scn.ShadowPassCurrentPhaseAction(); + assertTrue(scn.FreepsDecisionAvailable("maneuver")); + assertFalse(scn.FreepsPlayAvailable(valor)); + assertFalse(scn.FreepsActionAvailable(albert)); } }