Add v2 Dunadan of Ithilien JSON and tests

This commit is contained in:
Devon Henegar
2024-04-29 20:24:50 -04:00
parent 7faba18fb8
commit fdd6537091
2 changed files with 185 additions and 15 deletions

View File

@@ -262,17 +262,37 @@
signet: Frodo
resistance: 6
keywords: Ranger
/*requires: {
requires: {
type: canSpot
filter: ranger
}
effects: [
{
type: activated
phase: skirmish
cost: {
type: discardFromHand
count: 1
filter: choose(culture(gondor))
forced: false
}
effect: {
type: wound
filter: choose(minion,inSkirmishAgainst(self),roaming)
memorize: chosenMinion
times: {
type: requires
requires: {
type: memoryMatches
memory: chosenMinion
filter: man
}
true: 2
false: 1
}
}
}
{
}
]*/
]
gametext: Ranger. To play, spot a ranger.<br>Skirmish: Discard a [Gondor] card from hand to wound a roaming minion skirmishing this companion. If that minion is a Man, wound it again.
lore: "All had swords at their sides, and were clad in green and brown of varied hues, as if the better to walk unseen in the glades of Ithilien."
promotext: ""

View File

@@ -19,6 +19,11 @@ public class Card_V2_019_Tests
new HashMap<>()
{{
put("card", "102_19");
put("rangerComp", "1_96");
put("gondorCardToChuck", "1_113");
put("threeVitMan", "4_154");
put("threeVitNonMan", "3_62");
put("nonRoamingMinion", "1_233");
// put other cards in here as needed for the test case
}},
GenericCardTestHelper.FellowshipSites,
@@ -64,18 +69,163 @@ public class Card_V2_019_Tests
assertEquals(Signet.FRODO, card.getBlueprint().getSignet());
}
// Uncomment any @Test markers below once this is ready to be used
//@Test
public void DunadanofIthilienTest1() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var card = scn.GetFreepsCard("card");
scn.FreepsMoveCardToHand(card);
@Test
public void dumpsAGondorCardToWoundRoamingNonManMinionSkirmishingHimOnce() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl card = scn.GetFreepsCard("card");
PhysicalCardImpl rangerComp = scn.GetFreepsCard("rangerComp");
PhysicalCardImpl gondorCardToChuck = scn.GetFreepsCard("gondorCardToChuck");
PhysicalCardImpl threeVitNonMan = scn.GetShadowCard("threeVitNonMan");
scn.FreepsMoveCardToHand(card, rangerComp, gondorCardToChuck);
scn.ShadowMoveCardToHand(threeVitNonMan);
scn.StartGame();
scn.FreepsPlayCard(rangerComp);
scn.FreepsPlayCard(card);
assertEquals(3, scn.GetTwilight());
assertEquals(6, scn.GetTwilight());
scn.SkipToPhase(Phase.SHADOW);
scn.ShadowPlayCard(threeVitNonMan);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.PassCurrentPhaseActions();
scn.FreepsAssignToMinions(card, threeVitNonMan);
scn.FreepsResolveSkirmish(card);
assertTrue(scn.FreepsActionAvailable(card));
assertEquals(0, scn.GetWoundsOn(threeVitNonMan));
assertEquals(1, scn.GetFreepsHandCount());
scn.FreepsUseCardAction(card);
assertEquals(1, scn.GetWoundsOn(threeVitNonMan));
assertEquals(0, scn.GetFreepsHandCount());
}
@Test
public void dumpsAGondorCardToWoundRoamingManMinionSkirmishingHimTwice() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl card = scn.GetFreepsCard("card");
PhysicalCardImpl rangerComp = scn.GetFreepsCard("rangerComp");
PhysicalCardImpl gondorCardToChuck = scn.GetFreepsCard("gondorCardToChuck");
PhysicalCardImpl threeVitMan = scn.GetShadowCard("threeVitMan");
scn.FreepsMoveCardToHand(card, rangerComp, gondorCardToChuck);
scn.ShadowMoveCardToHand(threeVitMan);
scn.StartGame();
scn.FreepsPlayCard(rangerComp);
scn.FreepsPlayCard(card);
assertEquals(6, scn.GetTwilight());
scn.SkipToPhase(Phase.SHADOW);
scn.ShadowPlayCard(threeVitMan);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.PassCurrentPhaseActions();
scn.FreepsAssignToMinions(card, threeVitMan);
scn.FreepsResolveSkirmish(card);
assertTrue(scn.FreepsActionAvailable(card));
assertEquals(0, scn.GetWoundsOn(threeVitMan));
assertEquals(1, scn.GetFreepsHandCount());
scn.FreepsUseCardAction(card);
assertEquals(2, scn.GetWoundsOn(threeVitMan));
assertEquals(0, scn.GetFreepsHandCount());
}
@Test
public void dumpsAGondorCardForNoEffectAgainstNonRoamingMinion() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl card = scn.GetFreepsCard("card");
PhysicalCardImpl rangerComp = scn.GetFreepsCard("rangerComp");
PhysicalCardImpl gondorCardToChuck = scn.GetFreepsCard("gondorCardToChuck");
PhysicalCardImpl nonRoamingMinion = scn.GetShadowCard("nonRoamingMinion");
scn.FreepsMoveCardToHand(card, rangerComp, gondorCardToChuck);
scn.ShadowMoveCardToHand(nonRoamingMinion);
scn.StartGame();
scn.FreepsPlayCard(rangerComp);
scn.FreepsPlayCard(card);
assertEquals(6, scn.GetTwilight());
scn.SkipToPhase(Phase.SHADOW);
scn.ShadowPlayCard(nonRoamingMinion);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.PassCurrentPhaseActions();
scn.FreepsAssignToMinions(card, nonRoamingMinion);
scn.FreepsResolveSkirmish(card);
assertTrue(scn.FreepsActionAvailable(card));
assertEquals(0, scn.GetWoundsOn(nonRoamingMinion));
assertEquals(1, scn.GetFreepsHandCount());
scn.FreepsUseCardAction(card);
assertEquals(0, scn.GetWoundsOn(nonRoamingMinion));
assertEquals(0, scn.GetFreepsHandCount());
}
@Test
public void dumpsAGondorCardForNoEffectWhenRoamingMinionIsSkirmishingOtherCompanion() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl card = scn.GetFreepsCard("card");
PhysicalCardImpl rangerComp = scn.GetFreepsCard("rangerComp");
PhysicalCardImpl gondorCardToChuck = scn.GetFreepsCard("gondorCardToChuck");
PhysicalCardImpl threeVitMan = scn.GetShadowCard("threeVitMan");
scn.FreepsMoveCardToHand(card, rangerComp, gondorCardToChuck);
scn.ShadowMoveCardToHand(threeVitMan);
scn.StartGame();
scn.FreepsPlayCard(rangerComp);
scn.FreepsPlayCard(card);
assertEquals(6, scn.GetTwilight());
scn.SkipToPhase(Phase.SHADOW);
scn.ShadowPlayCard(threeVitMan);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.PassCurrentPhaseActions();
scn.FreepsAssignToMinions(rangerComp, threeVitMan);
scn.FreepsResolveSkirmish(rangerComp);
assertTrue(scn.FreepsActionAvailable(card));
assertEquals(0, scn.GetWoundsOn(threeVitMan));
assertEquals(1, scn.GetFreepsHandCount());
scn.FreepsUseCardAction(card);
assertEquals(0, scn.GetFreepsHandCount());
}
}