From ac22e0644d23f79ed84794cdd606bc73815ae373 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Sun, 6 Apr 2025 17:07:55 -0500 Subject: [PATCH] Fixed Into the Caves, for realsies this time. --- .../cards/official/set17/set17-Rohan.hjson | 2 +- .../com/gempukku/lotro/common/Keyword.java | 11 ++++ .../official/set17/Card_17_096_Tests.java | 2 +- .../official/set17/Card_17_100_Tests.java | 55 +++++++++++++++---- 4 files changed, 57 insertions(+), 13 deletions(-) diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Rohan.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Rohan.hjson index d719aa534..b98b62df7 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Rohan.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set17/set17-Rohan.hjson @@ -449,7 +449,7 @@ requires: [ { type: CanSpot - filter: name(Frodo,AssignableToSkirmishAgainst(minion)) + filter: name(Frodo),AssignableToSkirmishAgainst(minion) } { type: CanSpot diff --git a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java index fa071e0b0..82bb81f24 100644 --- a/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java +++ b/gemp-lotr/gemp-lotr-common/src/main/java/com/gempukku/lotro/common/Keyword.java @@ -115,4 +115,15 @@ public enum Keyword implements Filterable { public boolean isRealKeyword() { return realKeyword; } + + public static Keyword parse(String name) { + String nameCaps = name.toUpperCase().trim().replace(' ', '_').replace('-', '_'); + String nameLower = name.toLowerCase(); + + for (Keyword keyword : values()) { + if (keyword.getHumanReadable().toLowerCase().equals(nameLower) || keyword.toString().equals(nameCaps)) + return keyword; + } + return null; + } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_096_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_096_Tests.java index 81b9e66f1..cc535a435 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_096_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_096_Tests.java @@ -18,8 +18,8 @@ public class Card_17_096_Tests new HashMap<>() {{ put("eowyn", "17_96"); + put("scout", "1_270"); - put("soldier", "1_271"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_100_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_100_Tests.java index 5de385637..818e9d3be 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_100_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set17/Card_17_100_Tests.java @@ -17,8 +17,9 @@ public class Card_17_100_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "17_100"); - // put other cards in here as needed for the test case + put("caves", "17_100"); + + put("sauron", "9_48"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -38,12 +39,14 @@ public class Card_17_100_Tests * Twilight Cost: 1 * Type: Condition * Subtype: Support area - * Game Text: To play, spot 3 [rohan] companions.
Assignment: Assign a minion to Frodo to make that minion lose all game text keywords of your choice and unable to gain game text keywords until the regroup phase. + * Game Text: To play, spot 3 [rohan] companions. + * Assignment: Assign a minion to Frodo to make that minion lose all game text keywords of your choice + * and unable to gain game text keywords until the regroup phase. */ var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("caves"); assertEquals("Into the Caves", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -55,18 +58,48 @@ public class Card_17_100_Tests assertEquals(1, card.getBlueprint().getTwilightCost()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void IntotheCavesTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void IntotheCavesAssignsFrodoToMinionToRemoveKeywords() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var frodo = scn.GetRingBearer(); + var caves = scn.GetFreepsCard("caves"); + scn.FreepsMoveCardToSupportArea(caves); + + var sauron = scn.GetShadowCard("sauron"); + scn.ShadowMoveCharToTable(sauron); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(1, scn.GetTwilight()); + scn.SkipToPhase(Phase.ARCHERY); + scn.SkipToPhase(Phase.ASSIGNMENT); + assertTrue(scn.hasKeyword(sauron, Keyword.DAMAGE)); + assertTrue(scn.hasKeyword(sauron, Keyword.ENDURING)); + assertTrue(scn.hasKeyword(sauron, Keyword.FIERCE)); + assertFalse(scn.IsCharAssigned(frodo)); + assertFalse(scn.IsCharAssigned(sauron)); + assertTrue(scn.FreepsActionAvailable(caves)); + + scn.FreepsUseCardAction(caves); + assertTrue(scn.IsCharAssigned(frodo)); + assertTrue(scn.IsCharAssigned(sauron)); + + assertTrue(scn.FreepsDecisionAvailable("keyword")); + scn.FreepsChooseMultipleChoiceOption("DAMAGE"); + assertFalse(scn.hasKeyword(sauron, Keyword.DAMAGE)); + assertTrue(scn.hasKeyword(sauron, Keyword.ENDURING)); + assertTrue(scn.hasKeyword(sauron, Keyword.FIERCE)); + scn.FreepsChooseYes(); + scn.FreepsChooseMultipleChoiceOption("ENDURING"); + assertFalse(scn.hasKeyword(sauron, Keyword.DAMAGE)); + assertFalse(scn.hasKeyword(sauron, Keyword.ENDURING)); + assertTrue(scn.hasKeyword(sauron, Keyword.FIERCE)); + scn.FreepsChooseNo(); + assertFalse(scn.hasKeyword(sauron, Keyword.DAMAGE)); + assertFalse(scn.hasKeyword(sauron, Keyword.ENDURING)); + assertTrue(scn.hasKeyword(sauron, Keyword.FIERCE)); + + assertTrue(scn.ShadowAnyDecisionsAvailable()); } }