Fixed Eowyn, Northwoman and Into the Caves never being usable.

This commit is contained in:
Christian 'ketura' McCarty
2025-03-24 08:28:44 -05:00
parent 905093a5ac
commit 7c6d77a01f
3 changed files with 98 additions and 54 deletions

View File

@@ -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
}
]
}
}
}
]

View File

@@ -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;
}

View File

@@ -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.<br><b>Assignment:</b> 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.
* <b>Assignment:</b> 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());
}
}