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
effects: {
type: event
requires: {
type: CanSpot
filter: HasCultureTokenCount(2,rohan)
}
requires: [
{
type: CanSpot
filter: condition,HasCultureTokenCount(2,rohan)
}
]
cost: [
{
type: ChooseActiveCards
text: Choose how many {rohan} conditions to remove 2 tokens from.
count: {
type: Range
from: 0
from: 1
to: {
type: ForEachYouCanSpot
filter: condition,HasCultureTokenCount(2,rohan)
@@ -102,23 +104,26 @@
}
select: choose(HasCultureTokenCount(2,rohan))
memorize: chosenConditions
}
{
type: RemoveCultureTokens
select: memory(chosenConditions)
count: 2
ignoreCostCheckFailure: true
}
}
]
effect: [
{
type: ModifyStrength
select: choose(valiant, companion)
count: 3
until: start(regroup)
amount: {
type: ForEachInMemory
memory: chosenConditions
type: CostToEffect
cost: {
type: RemoveCultureTokens
select: memory(chosenConditions)
count: 2
ignoreCostCheckFailure: true
}
effect: {
type: ModifyStrength
select: choose(valiant, companion)
count: 3
until: start(regroup)
amount: {
type: ForEachInMemory
memory: chosenConditions
}
}
}
]

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.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,16 @@ public class Card_V2_046_Tests
return new GenericCardTestHelper(
new HashMap<>()
{{
put("card", "102_46");
// put other cards in here as needed for the test case
put("end", "102_46");
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.FOTRFrodo,
@@ -44,7 +51,7 @@ public class Card_V2_046_Tests
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
var card = scn.GetFreepsCard("end");
assertEquals("An End Worthy of Remembrance", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
@@ -56,18 +63,150 @@ public class Card_V2_046_Tests
assertEquals(2, card.getBlueprint().getTwilightCost());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void AnEndWorthyofRemembranceTest1() throws DecisionResultInvalidException, CardNotFoundException {
@Test
public void AnEndWorthyofRemembrancePumps3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
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");
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.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));
}
}