From e6c8a53f677370e168d5a7b7fbc9aea077cb4bb8 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Thu, 21 Jul 2022 07:43:31 -0500 Subject: [PATCH] Reworked Olorin and Counsel of the Wise --- .../cards/set101/set101_gandalf_playtest.json | 5 + .../pc/vset1/vpack1/Card_V1_013_Tests.java | 32 ++++ .../pc/vset1/vpack1/Card_V1_014_Tests.java | 152 +++++++++++++++--- 3 files changed, 165 insertions(+), 24 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json index c53084592..95f8ff3d7 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json +++ b/gemp-lotr/gemp-lotr-async/src/main/web/cards/set101/set101_gandalf_playtest.json @@ -62,6 +62,10 @@ "filter": "culture(elven),ally", "count": 2 }, + "cost": { + "type": "exert", + "filter": "choose(name(Gandalf))" + }, "effect": { "type": "shuffleCardsFromDiscardIntoDrawDeck", "filter": "choose(or(culture(gandalf),culture(elven)))" @@ -124,6 +128,7 @@ "effects": [ { "type": "trigger", + "optional": true, "trigger": { "type": "movesTo", "filter": "not(your)" diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_013_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_013_Tests.java index d818a27ee..b599d19fb 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_013_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_013_Tests.java @@ -108,6 +108,38 @@ public class Card_V1_013_Tests assertEquals(1, scn.GetFreepsDiscardCount()); assertEquals(4, scn.GetTwilight()); } + + @Test + public void CanRevealWithoutPaying() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl counsel = scn.GetFreepsCard("counsel"); + PhysicalCardImpl elrond = scn.GetFreepsCard("elrond"); + PhysicalCardImpl gandalf = scn.GetFreepsCard("gandalf"); + scn.FreepsMoveCardToHand(counsel); + scn.FreepsMoveCharToTable(gandalf); + + scn.StartGame(); + + assertEquals(1, scn.GetFreepsHandCount()); + assertEquals(3, scn.GetFreepsDeckCount()); + assertEquals(0, scn.GetTwilight()); + + scn.FreepsPlayCard(counsel); + assertTrue(scn.FreepsDecisionAvailable("Choose card from deck")); + // Choices available should be 1 Elrond, 1 Galadriel, 1 Orophin + assertEquals(3, scn.GetFreepsCardChoiceCount()); + scn.FreepsChooseCardBPFromSelection(scn.GetFreepsCard("elrond")); + assertTrue(scn.FreepsDecisionAvailable("Would you like to pay")); + scn.FreepsChooseNo(); + + assertEquals(0, scn.GetFreepsHandCount()); + assertEquals(Zone.DECK, elrond.getZone()); + assertEquals(3, scn.GetFreepsDeckCount()); + assertEquals(1, scn.GetFreepsDiscardCount()); + assertEquals(0, scn.GetTwilight()); + } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_014_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_014_Tests.java index f363c1cd0..6d0d3616b 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_014_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vset1/vpack1/Card_V1_014_Tests.java @@ -22,8 +22,16 @@ public class Card_V1_014_Tests return new GenericCardTestHelper( new HashMap() {{ - put("card", "151_14"); - // put other cards in here as needed for the test case + put("gandalf", "151_14"); + put("elrond", "1_40"); + put("elrondcomp", "7_21"); + put("galadriel", "1_45"); + put("celeborn", "1_34"); + put("orophin", "1_56"); + + put("boats", "1_46"); + put("bb", "1_70"); + }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -31,9 +39,7 @@ public class Card_V1_014_Tests ); } - // Uncomment both @Test markers below once this is ready to be used - - //@Test + @Test public void GandalfStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { /** @@ -55,34 +61,132 @@ public class Card_V1_014_Tests //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl card = scn.GetFreepsCard("card"); + PhysicalCardImpl gandalf = scn.GetFreepsCard("gandalf"); - assertTrue(card.getBlueprint().isUnique()); - assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); - assertEquals(Culture.GANDALF, card.getBlueprint().getCulture()); - assertEquals(CardType.COMPANION, card.getBlueprint().getCardType()); - assertEquals(Race.CREATURE, card.getBlueprint().getRace()); - assertTrue(scn.HasKeyword(card, Keyword.SUPPORT_AREA)); // test for keywords as needed - assertEquals(4, card.getBlueprint().getTwilightCost()); - assertEquals(6, card.getBlueprint().getStrength()); - assertEquals(4, card.getBlueprint().getVitality()); - //assertEquals(, card.getBlueprint().getResistance()); - assertEquals(Signet.GANDALF, card.getBlueprint().getSignet()); - //assertEquals(, card.getBlueprint().getSiteNumber()); // Change this to getAllyHomeSiteNumbers for allies + assertTrue(gandalf.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, gandalf.getBlueprint().getSide()); + assertEquals(Culture.GANDALF, gandalf.getBlueprint().getCulture()); + assertEquals(CardType.COMPANION, gandalf.getBlueprint().getCardType()); + assertEquals(Race.WIZARD, gandalf.getBlueprint().getRace()); + //assertTrue(scn.HasKeyword(gandalf, Keyword.SUPPORT_AREA)); // test for keywords as needed + assertEquals(4, gandalf.getBlueprint().getTwilightCost()); + assertEquals(6, gandalf.getBlueprint().getStrength()); + assertEquals(4, gandalf.getBlueprint().getVitality()); + //assertEquals(, gandalf.getBlueprint().getResistance()); + assertEquals(Signet.GANDALF, gandalf.getBlueprint().getSignet()); + //assertEquals(, gandalf.getBlueprint().getSiteNumber()); // Change this to getAllyHomeSiteNumbers for allies } - //@Test - public void GandalfTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void GandalfExertsAndSpotsTwoElvenAlliesToShuffleACardFromDiscardIntoDeck() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup GenericCardTestHelper scn = GetScenario(); - PhysicalCardImpl card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + PhysicalCardImpl gandalf = scn.GetFreepsCard("gandalf"); + PhysicalCardImpl boats = scn.GetFreepsCard("boats"); + PhysicalCardImpl bb = scn.GetFreepsCard("bb"); + + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCharToTable("galadriel", "orophin"); + scn.FreepsMoveCardToDiscard(boats, bb); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(4, scn.GetTwilight()); + assertEquals(0, scn.GetWoundsOn(gandalf)); + assertEquals(Zone.DISCARD, boats.getZone()); + assertEquals(Zone.DISCARD, bb.getZone()); + + assertTrue(scn.FreepsHasOptionalTriggerAvailable()); + scn.FreepsAcceptOptionalTrigger(); + assertTrue(scn.FreepsDecisionAvailable("Choose card from discard")); + //One each of Elven and Gandalf cards in the discard to choose from + assertEquals(2, scn.GetFreepsCardChoiceCount()); + scn.FreepsChooseCardBPFromSelection(boats); + + assertEquals(1, scn.GetWoundsOn(gandalf)); + assertEquals(Zone.DECK, boats.getZone()); + assertEquals(Zone.DISCARD, bb.getZone()); + } + + @Test + public void WhileThereAre3ElvenAlliesGandalfIsStrengthPlus2() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl gandalf = scn.GetFreepsCard("gandalf"); + PhysicalCardImpl elrond = scn.GetFreepsCard("elrond"); + PhysicalCardImpl galadriel = scn.GetFreepsCard("galadriel"); + PhysicalCardImpl orophin = scn.GetFreepsCard("orophin"); + + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCardToHand(elrond, galadriel, orophin); + + scn.StartGame(); + + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(elrond); + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(galadriel); + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(orophin); + assertEquals(8, scn.GetStrength(gandalf)); + } + + @Test + public void WhileThereAre3WhiteCouncilMembersGandalfIsStrengthPlus2() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl gandalf = scn.GetFreepsCard("gandalf"); + PhysicalCardImpl elrondcomp = scn.GetFreepsCard("elrondcomp"); + PhysicalCardImpl galadriel = scn.GetFreepsCard("galadriel"); + PhysicalCardImpl celeborn = scn.GetFreepsCard("celeborn"); + + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCardToHand(elrondcomp, galadriel, celeborn); + + scn.StartGame(); + + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(galadriel); + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(elrondcomp); + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(celeborn); + assertEquals(8, scn.GetStrength(gandalf)); + } + + @Test + public void WhileThereAreBothAlliesAndWhiteCouncilMembersGandalfIsStrengthPlus4() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl gandalf = scn.GetFreepsCard("gandalf"); + PhysicalCardImpl elrond = scn.GetFreepsCard("elrond"); + PhysicalCardImpl galadriel = scn.GetFreepsCard("galadriel"); + PhysicalCardImpl celeborn = scn.GetFreepsCard("celeborn"); + + scn.FreepsMoveCharToTable(gandalf); + scn.FreepsMoveCardToHand(elrond, galadriel, celeborn); + + scn.StartGame(); + + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(elrond); + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(galadriel); + assertEquals(6, scn.GetStrength(gandalf)); + + scn.FreepsPlayCard(celeborn); + assertEquals(10, scn.GetStrength(gandalf)); } }