Fixed V2 An End Worthy of Remembrance never being playable

This commit is contained in:
Christian 'ketura' McCarty
2025-04-07 18:23:33 -05:00
parent aa961a6b8e
commit 8f56866ad0
2 changed files with 174 additions and 30 deletions

View File

@@ -84,17 +84,19 @@
timewords: Skirmish timewords: Skirmish
effects: { effects: {
type: event type: event
requires: { requires: [
{
type: CanSpot type: CanSpot
filter: HasCultureTokenCount(2,rohan) filter: condition,HasCultureTokenCount(2,rohan)
} }
]
cost: [ cost: [
{ {
type: ChooseActiveCards type: ChooseActiveCards
text: Choose how many {rohan} conditions to remove 2 tokens from. text: Choose how many {rohan} conditions to remove 2 tokens from.
count: { count: {
type: Range type: Range
from: 0 from: 1
to: { to: {
type: ForEachYouCanSpot type: ForEachYouCanSpot
filter: condition,HasCultureTokenCount(2,rohan) filter: condition,HasCultureTokenCount(2,rohan)
@@ -103,15 +105,17 @@
select: choose(HasCultureTokenCount(2,rohan)) select: choose(HasCultureTokenCount(2,rohan))
memorize: chosenConditions memorize: chosenConditions
} }
]
effect: [
{ {
type: CostToEffect
cost: {
type: RemoveCultureTokens type: RemoveCultureTokens
select: memory(chosenConditions) select: memory(chosenConditions)
count: 2 count: 2
ignoreCostCheckFailure: true ignoreCostCheckFailure: true
} }
] effect: {
effect: [
{
type: ModifyStrength type: ModifyStrength
select: choose(valiant, companion) select: choose(valiant, companion)
count: 3 count: 3
@@ -121,6 +125,7 @@
memory: chosenConditions memory: chosenConditions
} }
} }
}
] ]
} }
gametext: Spot X [rohan] conditions and remove 2 tokens from each to make 3 valiant companions strength +X until the regroup phase. gametext: Spot X [rohan] conditions and remove 2 tokens from each to make 3 valiant companions strength +X until the regroup phase.

View File

@@ -3,7 +3,6 @@ package com.gempukku.lotro.cards.unofficial.pc.vsets.set_v02;
import com.gempukku.lotro.cards.GenericCardTestHelper; import com.gempukku.lotro.cards.GenericCardTestHelper;
import com.gempukku.lotro.common.*; import com.gempukku.lotro.common.*;
import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test; import org.junit.Test;
@@ -18,8 +17,16 @@ public class Card_V2_046_Tests
return new GenericCardTestHelper( return new GenericCardTestHelper(
new HashMap<>() new HashMap<>()
{{ {{
put("card", "102_46"); put("end", "102_46");
// put other cards in here as needed for the test case put("fortress", "4_276");
put("none", "6_97");
put("doom", "8_86");
put("vhaldir", "102_8");
put("vgimli", "55_7");
put("veowyn", "4_270");
put("veomer", "6_92");
put("runner", "1_178");
}}, }},
GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo, GenericCardTestHelper.FOTRFrodo,
@@ -44,7 +51,7 @@ public class Card_V2_046_Tests
var scn = GetScenario(); var scn = GetScenario();
var card = scn.GetFreepsCard("card"); var card = scn.GetFreepsCard("end");
assertEquals("An End Worthy of Remembrance", card.getBlueprint().getTitle()); assertEquals("An End Worthy of Remembrance", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle()); assertNull(card.getBlueprint().getSubtitle());
@@ -56,18 +63,150 @@ public class Card_V2_046_Tests
assertEquals(2, card.getBlueprint().getTwilightCost()); assertEquals(2, card.getBlueprint().getTwilightCost());
} }
// Uncomment any @Test markers below once this is ready to be used @Test
//@Test public void AnEndWorthyofRemembrancePumps3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
public void AnEndWorthyofRemembranceTest1() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup //Pre-game setup
var scn = GetScenario(); var scn = GetScenario();
var card = scn.GetFreepsCard("card"); var end = scn.GetFreepsCard("end");
scn.FreepsMoveCardToHand(card); var fortress = scn.GetFreepsCard("fortress");
var none = scn.GetFreepsCard("none");
var doom = scn.GetFreepsCard("doom");
var vhaldir = scn.GetFreepsCard("vhaldir");
var vgimli = scn.GetFreepsCard("vgimli");
var veowyn = scn.GetFreepsCard("veowyn");
var veomer = scn.GetFreepsCard("veomer");
scn.FreepsMoveCardToHand(end);
scn.FreepsMoveCardToSupportArea(fortress, none, doom);
scn.FreepsMoveCharToTable(vhaldir, vgimli, veowyn, veomer);
scn.AddTokensToCard(fortress, 3);
scn.AddTokensToCard(none, 3);
scn.AddTokensToCard(doom, 3);
var runner = scn.GetShadowCard("runner");
scn.ShadowMoveCharToTable(runner);
scn.StartGame(); scn.StartGame();
scn.FreepsPlayCard(card); scn.SkipToAssignments();
scn.FreepsAssignToMinions(vgimli, runner);
scn.FreepsResolveSkirmish(vgimli);
assertEquals(2, scn.GetTwilight()); assertEquals(3, scn.GetCultureTokensOn(fortress));
assertEquals(3, scn.GetCultureTokensOn(none));
assertEquals(3, scn.GetCultureTokensOn(doom));
assertEquals(6, scn.GetStrength(vhaldir));
assertEquals(6, scn.GetStrength(vgimli));
assertEquals(6, scn.GetStrength(veowyn));
assertEquals(7, scn.GetStrength(veomer));
assertTrue(scn.FreepsPlayAvailable(end));
scn.FreepsPlayCard(end);
scn.FreepsChooseCards(fortress, none, doom);
assertEquals(3, scn.FreepsGetChoiceMax());
scn.FreepsChooseCards(vgimli, vhaldir, veowyn);
assertEquals(1, scn.GetCultureTokensOn(fortress));
assertEquals(1, scn.GetCultureTokensOn(none));
assertEquals(1, scn.GetCultureTokensOn(doom));
assertEquals(9, scn.GetStrength(vhaldir));
assertEquals(9, scn.GetStrength(vgimli));
assertEquals(9, scn.GetStrength(veowyn));
assertEquals(7, scn.GetStrength(veomer));
scn.ShadowPassCurrentPhaseAction();
scn.FreepsPassCurrentPhaseAction();
scn.FreepsDeclineOptionalTrigger();
assertEquals(Phase.REGROUP, scn.GetCurrentPhase());
assertEquals(6, scn.GetStrength(vhaldir));
assertEquals(6, scn.GetStrength(vgimli));
assertEquals(6, scn.GetStrength(veowyn));
assertEquals(7, scn.GetStrength(veomer));
}
@Test
public void AnEndWorthyofRemembranceCannotPlayIfNoConditionsWith2RohanTokens() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var frodo = scn.GetRingBearer();
var end = scn.GetFreepsCard("end");
var fortress = scn.GetFreepsCard("fortress");
var none = scn.GetFreepsCard("none");
var doom = scn.GetFreepsCard("doom");
scn.FreepsMoveCardToHand(end);
scn.FreepsMoveCardToSupportArea(fortress, none, doom);
scn.AddTokensToCard(fortress, 1);
scn.AddTokensToCard(none, 1);
scn.AddTokensToCard(doom, 1);
var runner = scn.GetShadowCard("runner");
scn.ShadowMoveCharToTable(runner);
scn.StartGame();
scn.SkipToAssignments();
scn.FreepsAssignToMinions(frodo, runner);
scn.FreepsResolveSkirmish(frodo);
assertEquals(1, scn.GetCultureTokensOn(fortress));
assertEquals(1, scn.GetCultureTokensOn(none));
assertEquals(1, scn.GetCultureTokensOn(doom));
assertFalse(scn.FreepsPlayAvailable(end));
}
@Test
public void AnEndWorthyofRemembrancePumps3ValiantCompanionsPlusOneIfOnlyOneConditionUsed() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var end = scn.GetFreepsCard("end");
var fortress = scn.GetFreepsCard("fortress");
var none = scn.GetFreepsCard("none");
var doom = scn.GetFreepsCard("doom");
var vhaldir = scn.GetFreepsCard("vhaldir");
var vgimli = scn.GetFreepsCard("vgimli");
var veowyn = scn.GetFreepsCard("veowyn");
scn.FreepsMoveCardToHand(end);
scn.FreepsMoveCardToSupportArea(fortress, none, doom);
scn.FreepsMoveCharToTable(vhaldir, vgimli, veowyn);
scn.AddTokensToCard(fortress, 3);
scn.AddTokensToCard(none, 3);
scn.AddTokensToCard(doom, 3);
var runner = scn.GetShadowCard("runner");
scn.ShadowMoveCharToTable(runner);
scn.StartGame();
scn.SkipToAssignments();
scn.FreepsAssignToMinions(vgimli, runner);
scn.FreepsResolveSkirmish(vgimli);
assertEquals(3, scn.GetCultureTokensOn(fortress));
assertEquals(3, scn.GetCultureTokensOn(none));
assertEquals(3, scn.GetCultureTokensOn(doom));
assertEquals(6, scn.GetStrength(vhaldir));
assertEquals(6, scn.GetStrength(vgimli));
assertEquals(6, scn.GetStrength(veowyn));
assertTrue(scn.FreepsPlayAvailable(end));
scn.FreepsPlayCard(end);
scn.FreepsChooseCards(fortress);
assertEquals(1, scn.GetCultureTokensOn(fortress));
assertEquals(3, scn.GetCultureTokensOn(none));
assertEquals(3, scn.GetCultureTokensOn(doom));
assertEquals(7, scn.GetStrength(vhaldir));
assertEquals(7, scn.GetStrength(vgimli));
assertEquals(7, scn.GetStrength(veowyn));
scn.ShadowPassCurrentPhaseAction();
scn.FreepsPassCurrentPhaseAction();
scn.FreepsDeclineOptionalTrigger();
assertEquals(Phase.REGROUP, scn.GetCurrentPhase());
assertEquals(6, scn.GetStrength(vhaldir));
assertEquals(6, scn.GetStrength(vgimli));
assertEquals(6, scn.GetStrength(veowyn));
} }
} }