Updated April errata batch to the latest design. Updated tests to match.

This commit is contained in:
Christian 'ketura' McCarty
2021-02-28 23:22:31 -06:00
parent aba80d4390
commit cc77db8762
6 changed files with 126 additions and 116 deletions

View File

@@ -22,7 +22,7 @@
"effect": {
"type": "heal",
"filter": "choose(ally,allyHome(fellowship,3))",
"count": "0-2"
"count": "0-3"
}
},
{
@@ -31,7 +31,16 @@
"cost": {
"type": "exert",
"filter": "self",
"times": 2
"times": {
"type": "condition",
"condition": {
"type": "canSpot",
"count": 2,
"filter": "not(self),culture(elven),ally"
},
"true": 1,
"false": 2
}
},
"effect": {
"type": "drawCards"
@@ -261,15 +270,18 @@
{
"type": "activated",
"phase": "fellowship",
"condition": {
"type": "canSpot",
"filter": "name(Frodo)"
},
"cost": {
"type": "exert",
"filter": "self",
"times": 2
},
"cost": [
{
"type": "exert",
"filter": "self",
"times": 1
},
{
"type": "exert",
"filter": "choose(another,companion)",
"times": 1
}
],
"effect": {
"type": "removeBurdens",
"amount": 1

View File

@@ -8,31 +8,21 @@
"target": "name(Boromir)",
"effects": {
"type": "activated",
"phase": "assignment",
"condition": {
"type": "canSpot",
"filter": "bearer,notAssignedToSkirmish"
},
"phase": "maneuver",
"cost": [
{
"type": "exert",
"filter": "bearer"
"filter": "bearer",
"times": 1
},
{
"type": "exert",
"filter": "choose(ally)",
"memorize": "summonedAlly",
"times": 1
}
],
"effect":[
{
"type": "assignFpCharacterToSkirmish",
"player": "fp",
"fpCharacter": "bearer",
"against": "choose(minion)"
},
{
"type": "modifyStrength",
"filter": "choose(ally,allyInCurrentRegion)",
"amount": 3,
"until": "start(regroup)",
"memorize": "summonedAlly"
},
{
"type": "allyCanParticipateInArcheryFireAndSkirmishes",
"filter": "memory(summonedAlly)",
@@ -83,18 +73,25 @@
"filter": "self",
"times": 1
},
"effect": [
{
"type": "preventWound",
"filter": "choose(uruk-hai)",
"memorize": "uruk"
},
{
"type": "addKeyword",
"filter": "memory(uruk)",
"keyword": "fierce"
}
]
"effect":
{
"type": "preventWound",
"filter": "choose(uruk-hai)"
}
},
{
"type": "activated",
"phase": "maneuver",
"cost": {
"type": "exert",
"filter": "self",
"times": 1
},
"effect": {
"type": "addKeyword",
"filter": "choose(uruk-hai)",
"keyword": "fierce"
}
},
]
},

View File

@@ -42,7 +42,7 @@ public class Elrond_LoRErrataTests
{{
put("elrond", "51_1040");
put("allyHome3_1", "1_60");
put("allyHome3_2", "1_27");
put("allyHome3_2", "1_27"); // tharin
put("allyHome6_1", "1_56");
put("allyHome6_2", "1_57");
}}
@@ -50,7 +50,7 @@ public class Elrond_LoRErrataTests
}
@Test
public void FellowshipActionExertsTwiceToDrawACard() throws DecisionResultInvalidException, CardNotFoundException {
public void FellowshipActionExertsTwiceToDrawACardIfNoAllies() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetSimpleDeckScenario();
PhysicalCardImpl elrond = scn.GetFreepsCard("elrond");
@@ -73,6 +73,32 @@ public class Elrond_LoRErrataTests
assertEquals(0, scn.GetFreepsDeckCount());
}
@Test
public void FellowshipActionExertsOnceToDrawACardIf2Allies() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetHome3AllyScenario();
PhysicalCardImpl elrond = scn.GetFreepsCard("elrond");
scn.FreepsMoveCharToTable("allyHome3_1");
scn.FreepsMoveCharToTable("allyHome6_1");
scn.FreepsMoveCharToTable(elrond);
scn.StartGame();
assertEquals(Phase.FELLOWSHIP, scn.GetCurrentPhase());
assertTrue(scn.FreepsCardActionAvailable(elrond));
assertEquals(0, scn.GetWoundsOn(elrond));
assertEquals(0, scn.GetFreepsHandCount());
//assertEquals(2, scn.GetFreepsDeckCount());
scn.FreepsUseCardAction(elrond);
assertEquals(1, scn.GetWoundsOn(elrond));
assertEquals(1, scn.GetFreepsHandCount());
//assertEquals(1, scn.GetFreepsDeckCount());
}
@Test
public void CardCanPlayIfGandalfInPlay() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
@@ -112,7 +138,7 @@ public class Elrond_LoRErrataTests
}
@Test
public void AllyHealsCappedAt2() throws DecisionResultInvalidException, CardNotFoundException {
public void AllyHealsCappedAt3() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetHome3AllyScenario();
scn.FreepsMoveCharToTable("elrond");
@@ -133,6 +159,6 @@ public class Elrond_LoRErrataTests
assertEquals(3, scn.FreepsGetADParamAsList("cardId").size());
assertEquals("0", scn.FreepsGetADParam("min"));
assertEquals("2", scn.FreepsGetADParam("max"));
assertEquals("3", scn.FreepsGetADParam("max"));
}
}

View File

@@ -38,11 +38,13 @@ public class Sam_SoHErrataTests
assertTrue(scn.FreepsCardActionAvailable(sam));
assertEquals(0, scn.GetWoundsOn(sam));
assertEquals(0, scn.GetWoundsOn(frodo));
assertEquals(1, scn.GetBurdens());
scn.FreepsUseCardAction(sam);
assertEquals(2, scn.GetWoundsOn(sam));
assertEquals(1, scn.GetWoundsOn(sam));
assertEquals(1, scn.GetWoundsOn(frodo));
assertEquals(0, scn.GetBurdens());
}

View File

@@ -76,7 +76,7 @@ public class HornOfBoromirErrataTests
}
@Test
public void AbilityExertsAndAssignsBoromir() throws DecisionResultInvalidException, CardNotFoundException {
public void AbilityExertsAndBoromirAndAllyToSkirmish() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetFOTRScenario();
@@ -97,52 +97,22 @@ public class HornOfBoromirErrataTests
scn.FreepsPlayCard(horn);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.SkipToPhase(Phase.MANEUVER);
assertTrue(scn.FreepsCardActionAvailable(horn));
scn.FreepsUseCardAction(horn);
scn.FreepsChooseCard(runner1);
assertEquals(1, scn.GetWoundsOn(boromir));
assertEquals(11, scn.GetStrength(elrond));
//Skip shadow player's action
assertEquals(1, scn.GetWoundsOn(elrond));
//Base version pumps strength, ensure that's not the case here.
assertEquals(8, scn.GetStrength(elrond));
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.SkipCurrentPhaseActions();
assertFalse(scn.FreepsCardActionAvailable(horn));
scn.SkipCurrentPhaseActions();
assertTrue(scn.IsCharAssigned(boromir));
scn.FreepsAssignToMinion(elrond, runner2);
assertTrue(scn.IsCharAssigned(elrond));
}
@Test
public void AbilityDoesNotPumpFarAwayAllies() throws DecisionResultInvalidException, CardNotFoundException {
GenericCardTestHelper scn = GetMovieScenario();
PhysicalCardImpl elrond = scn.GetFreepsCard("elrond");
PhysicalCardImpl boromir = scn.GetFreepsCard("boromir");
PhysicalCardImpl horn = scn.GetFreepsCard("horn");
PhysicalCardImpl runner1 = scn.GetShadowCard("runner1");
PhysicalCardImpl runner2 = scn.GetShadowCard("runner2");
scn.FreepsMoveCharToTable(elrond);
scn.FreepsMoveCharToTable(boromir);
scn.FreepsMoveCardToHand(horn);
scn.ShadowMoveCharToTable(runner1);
scn.ShadowMoveCharToTable(runner2);
scn.StartGame();
scn.FreepsPlayCard(horn);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.FreepsUseCardAction(horn);
scn.FreepsChooseCard(runner1);
assertEquals(1, scn.GetWoundsOn(boromir));
assertEquals(8, scn.GetStrength(elrond));
//Skip shadow player's action
scn.SkipCurrentPhaseActions();
}
}

View File

@@ -31,33 +31,26 @@ public class Saruman_KoIErrataTests
);
}
@Test
public void SarumanWorks() throws DecisionResultInvalidException, CardNotFoundException {
public void SarumanImmunityAndWoundBlock() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl legolas = scn.GetFreepsCard("legolas");
PhysicalCardImpl tale = scn.GetFreepsCard("tale");
PhysicalCardImpl doubleshot = scn.GetFreepsCard("doubleshot");
PhysicalCardImpl saruman = scn.GetShadowCard("saruman");
PhysicalCardImpl uruk1 = scn.GetShadowCard("uruk1");
PhysicalCardImpl uruk2 = scn.GetShadowCard("uruk2");
scn.FreepsMoveCharToTable(legolas);
scn.FreepsMoveCardToHand(tale);
scn.FreepsMoveCardToHand(doubleshot);
scn.ShadowMoveCharToTable(saruman);
scn.ShadowMoveCharToTable(uruk1);
scn.ShadowMoveCharToTable(uruk2);
scn.StartGame();
scn.FreepsPlayCard(tale);
scn.SkipToPhase(Phase.ARCHERY);
//can't hit saruman
@@ -72,33 +65,15 @@ public class Saruman_KoIErrataTests
assertEquals(0, scn.GetWoundsOn(uruk1));
assertEquals(1, scn.GetWoundsOn(saruman));
assertTrue(scn.HasKeyword(uruk1, Keyword.FIERCE));
//Old version made them fierc, ensure that was removed
assertFalse(scn.HasKeyword(uruk1, Keyword.FIERCE));
//shadow has to skip archery actions
scn.ShadowSkipCurrentPhaseAction();
//Repeat the greenleaf ability to ensure the last can't be blocked by saruman
scn.FreepsUseCardAction(legolas);
scn.FreepsChooseCard(uruk1);
scn.ShadowUseCardAction(saruman);
scn.ShadowSkipCurrentPhaseAction();
scn.FreepsUseCardAction(legolas);
scn.FreepsChooseCard(uruk1);
scn.ShadowUseCardAction(saruman);
scn.ShadowSkipCurrentPhaseAction();
//greenleaf is out of vitality, so play doubleshot
scn.FreepsPlayCard(doubleshot);
scn.ShadowSkipCurrentPhaseAction();
scn.FreepsSkipCurrentPhaseAction();
//Archery wound
scn.ShadowChooseCard(uruk1);
//Now that we've done 4 total wounds, we should see an exhausted saruman and an uruk1 with 1 wound
assertEquals(1, scn.GetWoundsOn(uruk1));
assertEquals(3, scn.GetWoundsOn(saruman));
assertEquals(0, scn.GetWoundsOn(uruk1));
assertEquals(1, scn.GetWoundsOn(saruman));
scn.SkipToPhase(Phase.ASSIGNMENT);
@@ -108,4 +83,32 @@ public class Saruman_KoIErrataTests
assertEquals(2, scn.FreepsGetADParamAsList("minions").size());
}
@Test
public void SarumanAbilityGrantsFierce() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
GenericCardTestHelper scn = GetScenario();
PhysicalCardImpl saruman = scn.GetShadowCard("saruman");
PhysicalCardImpl uruk1 = scn.GetShadowCard("uruk1");
scn.ShadowMoveCharToTable(saruman);
scn.ShadowMoveCharToTable(uruk1);
scn.StartGame();
scn.SkipToPhase(Phase.MANEUVER);
scn.FreepsSkipCurrentPhaseAction();
assertTrue(scn.ShadowCardActionAvailable(saruman));
scn.ShadowUseCardAction(saruman);
assertTrue(scn.HasKeyword(uruk1, Keyword.FIERCE));
assertEquals(0, scn.GetWoundsOn(uruk1));
assertEquals(1, scn.GetWoundsOn(saruman));
}
}