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());
}
}