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 03c7e6188..d719aa534 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
@@ -193,25 +193,38 @@
{
type: activated
phase: assignment
+ requires: [
+ {
+ type: CanSpot
+ filter: ringBearer,AssignableToSkirmishAgainst(minion)
+ }
+ {
+ type: CanSpot
+ filter: minion,AssignableToSkirmishAgainst(ringBearer)
+ }
+ ]
cost: [
{
type: exert
select: self
}
- {
+ ]
+ effect: {
+ type: CostToEffect
+ cost: {
type: assignFPCharacterToSkirmish
fpCharacter: choose(ringBearer)
minion: choose(minion)
memorizeMinion: chosenMinion
}
- ]
- effect: {
- type: addModifier
- modifier: {
- type: removeAllKeywords
- filter: memory(chosenMinion)
+ effect: {
+ type: addModifier
+ modifier: {
+ type: removeAllKeywords
+ filter: memory(chosenMinion)
+ }
+ until: regroup
}
- until: regroup
}
}
]
@@ -433,40 +446,49 @@
{
type: activated
phase: assignment
- cost: {
- type: assignFPCharacterToSkirmish
- fpCharacter: choose(name(Frodo))
- minion: choose(minion)
- memorizeMinion: chosenMinion
- }
- effect: {
- type: doWhile
- check: {
- type: memoryIs
- memory: choice
- value: yes
+ requires: [
+ {
+ type: CanSpot
+ filter: name(Frodo,AssignableToSkirmishAgainst(minion))
}
- effect: [
- {
- type: chooseAKeyword
- memorize: keyword
+ {
+ type: CanSpot
+ filter: minion,AssignableToSkirmishAgainst(name(Frodo))
+ }
+ ]
+ effect: {
+ type: CostToEffect
+ cost: {
+ type: assignFPCharacterToSkirmish
+ fpCharacter: choose(name(Frodo))
+ minion: choose(minion)
+ memorizeMinion: chosenMinion
+ }
+ effect: {
+ type: doWhile
+ check: {
+ type: memoryIs
+ memory: choice
+ value: yes
}
- {
- type: sendMessage
- text: '{player} chose "{keyword}"'
- }
- {
- type: removeKeyword
- select: memory(chosenMinion)
- keywordFromMemory: keyword
- until: regroup
- }
- {
- type: chooseYesOrNo
- text: Would you like to choose more keywords?
- memorize: choice
- }
- ]
+ effect: [
+ {
+ type: chooseAKeyword
+ memorize: keyword
+ }
+ {
+ type: removeKeyword
+ select: memory(chosenMinion)
+ keywordFromMemory: keyword
+ until: regroup
+ }
+ {
+ type: chooseYesOrNo
+ text: Would you like to choose more keywords?
+ memorize: choice
+ }
+ ]
+ }
}
}
]
diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java
index a184f6aee..823d9be51 100644
--- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java
+++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/AssignFpCharacterToSkirmish.java
@@ -73,8 +73,7 @@ public class AssignFpCharacterToSkirmish implements EffectAppenderProducer {
final Collection extends PhysicalCard> fpChar = actionContext.getCardsFromMemory(fpCharacterMemory);
final Collection extends PhysicalCard> minion = actionContext.getCardsFromMemory(minionMemory);
if (fpChar.size() == 1 && minion.size() == 1) {
- AssignmentEffect effect = new AssignmentEffect(assigningPlayer, fpChar.iterator().next(), minion.iterator().next(), ignoreExistingAssignments, ignoreDefender, ignoreAllyLocation);
- return effect;
+ return new AssignmentEffect(assigningPlayer, fpChar.iterator().next(), minion.iterator().next(), ignoreExistingAssignments, ignoreDefender, ignoreAllyLocation);
} else {
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 527148ad4..81b9e66f1 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
@@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.official.set17;
import com.gempukku.lotro.cards.GenericCardTestHelper;
import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.CardNotFoundException;
-import com.gempukku.lotro.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
@@ -18,8 +17,9 @@ public class Card_17_096_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
- put("card", "17_96");
- // put other cards in here as needed for the test case
+ put("eowyn", "17_96");
+ put("scout", "1_270");
+ put("soldier", "1_271");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -42,12 +42,14 @@ public class Card_17_096_Tests
* Strength: 6
* Vitality: 3
* Resistance: 7
- * Game Text: While the Ring-bearer is assigned to a skirmish, Éowyn cannot take wounds while skirmishing.
Assignment: Exert Éowyn and assign a minion to the Ring-bearer to make that minion lose all game text keywords and unable to gain game text keywords until the regroup phase.
+ * Game Text: While the Ring-bearer is assigned to a skirmish, Éowyn cannot take wounds while skirmishing.
+ * Assignment: Exert Éowyn and assign a minion to the Ring-bearer to make that minion lose
+ * all game text keywords and unable to gain game text keywords until the regroup phase.
*/
var scn = GetScenario();
- var card = scn.GetFreepsCard("card");
+ var card = scn.GetFreepsCard("eowyn");
assertEquals("Éowyn", card.getBlueprint().getTitle());
assertEquals("Northwoman", card.getBlueprint().getSubtitle());
@@ -62,18 +64,39 @@ public class Card_17_096_Tests
assertEquals(7, card.getBlueprint().getResistance());
}
- // Uncomment any @Test markers below once this is ready to be used
- //@Test
- public void EowynTest1() throws DecisionResultInvalidException, CardNotFoundException {
+ @Test
+ public void EowynAbilityAssignsRingBearerToRemoveGameText() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
- var card = scn.GetFreepsCard("card");
- scn.FreepsMoveCardToHand(card);
+ var frodo = scn.GetRingBearer();
+ var eowyn = scn.GetFreepsCard("eowyn");
+ scn.FreepsMoveCharToTable(eowyn);
+
+ var scout = scn.GetShadowCard("scout");
+ scn.ShadowMoveCharToTable(scout);
scn.StartGame();
- scn.FreepsPlayCard(card);
+ scn.SkipToPhase(Phase.ASSIGNMENT);
- assertEquals(2, scn.GetTwilight());
+ assertTrue(scn.hasKeyword(scout, Keyword.TRACKER));
+ assertTrue(scn.FreepsActionAvailable(eowyn));
+ assertEquals(0, scn.GetWoundsOn(eowyn));
+ assertFalse(scn.IsCharAssigned(frodo));
+ assertFalse(GetScenario().IsCharAssigned(scout));
+
+ scn.FreepsUseCardAction(eowyn);
+ assertFalse(scn.hasKeyword(scout, Keyword.TRACKER));
+ assertFalse(scn.FreepsActionAvailable(eowyn));
+ assertEquals(1, scn.GetWoundsOn(eowyn));
+ assertTrue(scn.IsCharAssigned(frodo));
+ assertTrue(scn.IsCharAssigned(scout));
+
+ scn.ShadowPassCurrentPhaseAction();
+ scn.FreepsPassCurrentPhaseAction();
+ scn.FreepsResolveSkirmish(frodo);
+ scn.FreepsPassCurrentPhaseAction();
+
+ assertTrue(scn.ShadowAnyActionsAvailable());
}
}