Errata Pack 1 and most of Errata Pack 2 complete
This commit is contained in:
@@ -66,7 +66,7 @@
|
||||
},
|
||||
"effect": {
|
||||
"type": "heal",
|
||||
"filter": "choose(ally,allyHome(fellowship,6))",
|
||||
"filter": "choose(another,ally,allyHome(fellowship,6))",
|
||||
"count": "0-2"
|
||||
}
|
||||
},
|
||||
@@ -76,12 +76,12 @@
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "self",
|
||||
"times": 2
|
||||
"times": 1
|
||||
},
|
||||
"effect": {
|
||||
"type": "play",
|
||||
"filter": "choose(elf)",
|
||||
"cost": -2
|
||||
"cost": -1
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -307,7 +307,7 @@
|
||||
|
||||
|
||||
"51_108": {
|
||||
"title": "No Stranger to the Shadows",
|
||||
"title": "*No Stranger to the Shadows",
|
||||
"culture": "gondor",
|
||||
"cost": 0,
|
||||
"type": "condition",
|
||||
@@ -318,9 +318,9 @@
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "addKeyword",
|
||||
"filter": "bearer",
|
||||
"keyword": "concealed"
|
||||
"type": "modifyCost",
|
||||
"filter": "site",
|
||||
"amount": -1
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -350,18 +350,19 @@
|
||||
"hand": "shadowPlayer",
|
||||
"forced": true,
|
||||
"memorize": "revealedCards",
|
||||
"count":3
|
||||
"count":2
|
||||
},
|
||||
{
|
||||
"type": "addKeyword",
|
||||
"filter": "choose(companion,not(concealed))",
|
||||
"keyword": "concealed",
|
||||
"until": "start(regroup)",
|
||||
"type": "removeTwilight",
|
||||
"amount": {
|
||||
"type": "forEachMatchingInMemory",
|
||||
"memory": "revealedCards",
|
||||
"filter": "orc",
|
||||
"limit": 1
|
||||
"type": "cardPhaseLimit",
|
||||
"limit": 2,
|
||||
"amount": {
|
||||
"type": "forEachMatchingInMemory",
|
||||
"memory": "revealedCards",
|
||||
"filter": "orc",
|
||||
"limit": 2
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -373,37 +374,26 @@
|
||||
"culture": "shire",
|
||||
"cost": 0,
|
||||
"type": "condition",
|
||||
"target": "or(name(Merry),name(Pippin))",
|
||||
"keyword": [
|
||||
"stealth",
|
||||
"support area"
|
||||
"stealth"
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"type": "extraCost",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(hobbit)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "moves"
|
||||
},
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"count": 2,
|
||||
"filter": "hobbit,companion"
|
||||
},
|
||||
"effect": {
|
||||
"type": "addKeyword",
|
||||
"filter": "choose(hobbit,companion)",
|
||||
"keyword": "concealed",
|
||||
"until": "start(regroup)"
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "site",
|
||||
"amount": {
|
||||
"type": "condition",
|
||||
"condition": {
|
||||
"type": "cantSpot",
|
||||
"filter": "companion,not(hobbit)"
|
||||
},
|
||||
"true": -1,
|
||||
"false": 0
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -58,40 +58,14 @@
|
||||
"resistance": 6,
|
||||
"signet": "frodo",
|
||||
"keyword": "damage+1",
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifier",
|
||||
|
||||
"modifier": {
|
||||
"type": "addKeyword",
|
||||
"filter": "self",
|
||||
"keyword": "concealed",
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "underground"
|
||||
}
|
||||
},
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"optional": true,
|
||||
"trigger": {
|
||||
"type": "movesTo",
|
||||
"filter": "underground",
|
||||
|
||||
},
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": {
|
||||
"type": "addKeyword",
|
||||
"filter": "choose(another,companion)",
|
||||
"keyword": "concealed",
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "underground,site",
|
||||
"amount": -1
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
],
|
||||
"effects": {
|
||||
"type": "trigger",
|
||||
"optional": true,
|
||||
"optional": false,
|
||||
"trigger": {
|
||||
"type": "movesfrom"
|
||||
},
|
||||
@@ -122,46 +122,9 @@
|
||||
"phase": "fellowship"
|
||||
},
|
||||
"effect": {
|
||||
"type": "preventable",
|
||||
"effect": [
|
||||
{
|
||||
"type": "addKeyword",
|
||||
"filter": "choose(another,companion)",
|
||||
"keyword": "concealed",
|
||||
"until": "start(regroup)"
|
||||
},
|
||||
{
|
||||
"type": "addKeyword",
|
||||
"filter": "self",
|
||||
"keyword": "concealed",
|
||||
"until": "start(regroup)"
|
||||
},
|
||||
],
|
||||
"text": "Would you like to discard a minion (or reveal a tracker) from hand to prevent a companion becoming concealed?",
|
||||
"player": "shadowPlayer",
|
||||
"cost": {
|
||||
"type": "choice",
|
||||
"player": "shadowPlayer",
|
||||
"texts": [
|
||||
"Discard a minion from hand",
|
||||
"Reveal a tracker from hand"
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"type": "revealCardsFromHand",
|
||||
"filter": "choose(tracker)",
|
||||
"hand": "shadowPlayer"
|
||||
},
|
||||
{
|
||||
"type": "discardFromHand",
|
||||
"filter": "choose(minion)",
|
||||
"forced": false,
|
||||
"hand": "shadowPlayer",
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
},
|
||||
"type": "removeTwilight",
|
||||
"amount": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -175,23 +138,12 @@
|
||||
"possession": "Pony",
|
||||
"target": "name(Sam)",
|
||||
"effects": [
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "played",
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": {
|
||||
"type": "heal",
|
||||
"filter": "bearer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "addKeyword",
|
||||
"filter": "bearer",
|
||||
"keyword": "concealed"
|
||||
"type": "modifyCost",
|
||||
"filter": "site",
|
||||
"amount": -1
|
||||
}
|
||||
},
|
||||
{
|
||||
|
||||
@@ -28,15 +28,15 @@ public class Galadriel_LoLErrataTests
|
||||
{{
|
||||
put("galadriel", "51_45");
|
||||
put("allyHome3_1", "1_60");
|
||||
put("allyHome3_2", "1_27");
|
||||
put("allyHome6_1", "1_56");
|
||||
put("allyHome6_2", "1_57");
|
||||
put("allyHome6_3", "1_34");
|
||||
}}
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void FellowshipActionExertsTwiceToDiscountAnElf() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void FellowshipActionExertsToDiscountAnElf() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetSimplePlayScenario();
|
||||
|
||||
@@ -55,9 +55,9 @@ public class Galadriel_LoLErrataTests
|
||||
|
||||
scn.FreepsUseCardAction(galadriel);
|
||||
|
||||
assertEquals(2, scn.GetWoundsOn(galadriel));
|
||||
assertEquals(1, scn.GetWoundsOn(galadriel));
|
||||
assertEquals(0, scn.GetFreepsHandCount());
|
||||
assertEquals(2, scn.GetTwilight());
|
||||
assertEquals(3, scn.GetTwilight());
|
||||
}
|
||||
|
||||
|
||||
@@ -67,20 +67,21 @@ public class Galadriel_LoLErrataTests
|
||||
GenericCardTestHelper scn = GetHome6AllyScenario();
|
||||
scn.FreepsMoveCharToTable("galadriel");
|
||||
scn.FreepsMoveCharToTable("allyHome3_1");
|
||||
scn.FreepsMoveCharToTable("allyHome3_2");
|
||||
scn.FreepsMoveCharToTable("allyHome6_1");
|
||||
scn.FreepsMoveCharToTable("allyHome6_2");
|
||||
scn.FreepsMoveCharToTable("allyHome6_3");
|
||||
|
||||
scn.FreepsAddWoundsToChar("galadriel", 1);
|
||||
scn.FreepsAddWoundsToChar("allyHome3_1", 1);
|
||||
scn.FreepsAddWoundsToChar("allyHome3_2", 1);
|
||||
scn.FreepsAddWoundsToChar("allyHome6_1", 1);
|
||||
scn.FreepsAddWoundsToChar("allyHome6_2", 1);
|
||||
scn.FreepsAddWoundsToChar("allyHome6_3", 1);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
assertEquals(Phase.BETWEEN_TURNS, scn.GetCurrentPhase());
|
||||
|
||||
//There are 5 total elf allies in play: 1 is home 3, and 1 is Galadriel herself. The rest should be eligible.
|
||||
assertEquals(3, scn.FreepsGetADParamAsList("cardId").size());
|
||||
assertEquals("0", scn.FreepsGetADParam("min"));
|
||||
assertEquals("2", scn.FreepsGetADParam("max"));
|
||||
|
||||
@@ -2,6 +2,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set1;
|
||||
|
||||
import com.gempukku.lotro.cards.GenericCardTestHelper;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.game.CardNotFoundException;
|
||||
import com.gempukku.lotro.game.PhysicalCardImpl;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
@@ -30,13 +31,14 @@ public class NoStrangerErrataTests
|
||||
|
||||
|
||||
@Test
|
||||
public void NoStrangerHasStealth() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void NoStrangerIsUniqueAndHasStealth() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl nostranger = scn.GetFreepsCard("nostranger");
|
||||
|
||||
assertTrue(scn.HasKeyword(nostranger, Keyword.STEALTH));
|
||||
assertTrue(nostranger.getBlueprint().isUnique());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -64,34 +66,9 @@ public class NoStrangerErrataTests
|
||||
assertEquals(2, scn.FreepsGetADParamAsList("cardId").size());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NoStrangerLimitOnePerBearer() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl aragorn = scn.GetFreepsCard("aragorn");
|
||||
PhysicalCardImpl arwen = scn.GetFreepsCard("arwen");
|
||||
PhysicalCardImpl nostranger = scn.GetFreepsCard("nostranger");
|
||||
PhysicalCardImpl nostranger2 = scn.GetFreepsCard("nostranger2");
|
||||
|
||||
scn.FreepsMoveCharToTable(aragorn);
|
||||
scn.FreepsMoveCharToTable(arwen);
|
||||
scn.FreepsMoveCardToHand(nostranger);
|
||||
scn.FreepsMoveCardToHand(nostranger2);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.FreepsPlayCard(nostranger);
|
||||
scn.FreepsChooseCard(aragorn);
|
||||
scn.FreepsPlayCard(nostranger2);
|
||||
|
||||
//No prompt means it was placed automatically on Arwen, with no choice between Arwen and Aragorn
|
||||
assertFalse(scn.FreepsAnyActionsAvailable());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void NoStrangerAddsConcealed() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void NoStrangerReducesTwilight() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
@@ -105,6 +82,9 @@ public class NoStrangerErrataTests
|
||||
|
||||
scn.FreepsPlayCard(nostranger);
|
||||
|
||||
scn.HasKeyword(aragorn, Keyword.CONCEALED);
|
||||
scn.FreepsSkipCurrentPhaseAction();
|
||||
|
||||
// 2 for Frodo/Aragorn, 1 for the site, -1 for No Stranger
|
||||
assertEquals(2, scn.GetTwilight());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -78,7 +78,7 @@ public class StingErrataTests
|
||||
}
|
||||
|
||||
@Test
|
||||
public void StingAbilityExertsFrodoAndRevealsThreeCards() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void StingAbilityExertsFrodoAndRevealsTwoCards() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl frodo = scn.GetRingBearer();
|
||||
@@ -97,13 +97,13 @@ public class StingErrataTests
|
||||
|
||||
scn.FreepsUseCardAction(sting);
|
||||
|
||||
//Reveals 3 cards
|
||||
assertEquals(3, scn.FreepsGetADParamAsList("blueprintId").size());
|
||||
//Reveals 2 cards
|
||||
assertEquals(2, scn.FreepsGetADParamAsList("blueprintId").size());
|
||||
assertEquals(1, scn.GetWoundsOn(frodo));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void StingAbilityMakesConcealedIfOrcRevealed() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void StingAbilityRemovesTwilight() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl frodo = scn.GetRingBearer();
|
||||
@@ -120,63 +120,28 @@ public class StingErrataTests
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.FreepsUseCardAction(sting);
|
||||
|
||||
//Both players have revealed cards as an action to dismiss
|
||||
scn.SkipCurrentPhaseActions();
|
||||
|
||||
assertTrue(scn.FreepsCanChooseCharacter(frodo));
|
||||
assertTrue(scn.FreepsCanChooseCharacter(sam));
|
||||
assertTrue(scn.FreepsCanChooseCharacter(merry));
|
||||
|
||||
scn.FreepsChooseCard(frodo);
|
||||
assertTrue(scn.HasKeyword(frodo, Keyword.CONCEALED));
|
||||
scn.SetTwilight(10);
|
||||
|
||||
scn.FreepsUseCardAction(sting);
|
||||
scn.SkipCurrentPhaseActions();
|
||||
assertFalse(scn.FreepsCanChooseCharacter(frodo));
|
||||
assertTrue(scn.FreepsCanChooseCharacter(sam));
|
||||
assertTrue(scn.FreepsCanChooseCharacter(merry));
|
||||
|
||||
scn.FreepsChooseCard(sam);
|
||||
assertTrue(scn.HasKeyword(sam, Keyword.CONCEALED));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void StingConcealedLastsUntilNextRegroup() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl frodo = scn.GetRingBearer();
|
||||
PhysicalCardImpl sting = scn.GetFreepsCard("sting");
|
||||
PhysicalCardImpl sam = scn.GetFreepsCard("sam");
|
||||
|
||||
PhysicalCardImpl orc1 = scn.GetShadowCard("orc1");
|
||||
|
||||
scn.FreepsMoveCharToTable(sam);
|
||||
scn.AttachCard(sting, frodo);
|
||||
|
||||
scn.ShadowMoveCardToHand(orc1);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.SkipToPhase(Phase.REGROUP);
|
||||
|
||||
scn.FreepsUseCardAction(sting);
|
||||
scn.FreepsChooseCard(frodo);
|
||||
//Both players have revealed cards as an action to dismiss
|
||||
scn.SkipCurrentPhaseActions();
|
||||
|
||||
scn.FreepsChooseCard(frodo);
|
||||
assertTrue(scn.HasKeyword(frodo, Keyword.CONCEALED));
|
||||
|
||||
scn.ShadowSkipCurrentPhaseAction();
|
||||
//Both players need to dismiss the card reveal dialog.
|
||||
scn.FreepsSkipCurrentPhaseAction();
|
||||
//shadow reconcile
|
||||
scn.ShadowSkipCurrentPhaseAction();
|
||||
|
||||
scn.FreepsChooseToMove();
|
||||
// 10 twilight - 1 orc in the hand = 9 twilight
|
||||
assertEquals(9, scn.GetTwilight());
|
||||
|
||||
scn.FreepsUseCardAction(sting);
|
||||
scn.FreepsSkipCurrentPhaseAction();
|
||||
scn.ShadowSkipCurrentPhaseAction();
|
||||
// 9 twilight - 1 orc in the hand = 8 twilight
|
||||
assertEquals(8, scn.GetTwilight());
|
||||
|
||||
scn.FreepsUseCardAction(sting);
|
||||
scn.FreepsSkipCurrentPhaseAction();
|
||||
scn.ShadowSkipCurrentPhaseAction();
|
||||
// limit of 2 should have been hit, so no twilight should be removed
|
||||
assertEquals(8, scn.GetTwilight());
|
||||
|
||||
assertTrue(scn.HasKeyword(frodo, Keyword.CONCEALED));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,9 +3,11 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set1;
|
||||
import com.gempukku.lotro.cards.GenericCardTestHelper;
|
||||
import com.gempukku.lotro.common.Keyword;
|
||||
import com.gempukku.lotro.common.Phase;
|
||||
import com.gempukku.lotro.common.Zone;
|
||||
import com.gempukku.lotro.game.CardNotFoundException;
|
||||
import com.gempukku.lotro.game.PhysicalCardImpl;
|
||||
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
|
||||
import junit.framework.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -22,7 +24,8 @@ public class TalentForNBSErrataTests
|
||||
{{
|
||||
put("talent", "51_316");
|
||||
put("sam", "1_311");
|
||||
put("gaffer", "1_291");
|
||||
put("merry", "1_302");
|
||||
put("pippin", "1_307");
|
||||
put("boromir", "1_97");
|
||||
}}
|
||||
);
|
||||
@@ -38,92 +41,73 @@ public class TalentForNBSErrataTests
|
||||
assertTrue(scn.HasKeyword(talent, Keyword.STEALTH));
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void TalentExertsAHobbitOnPlay() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void TalentOnlyPlaysOnMerryOrPippin() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl frodo = scn.GetRingBearer();
|
||||
PhysicalCardImpl sam = scn.GetFreepsCard("sam");
|
||||
PhysicalCardImpl gaffer = scn.GetFreepsCard("gaffer");
|
||||
PhysicalCardImpl boromir = scn.GetFreepsCard("boromir");
|
||||
PhysicalCardImpl merry = scn.GetFreepsCard("merry");
|
||||
PhysicalCardImpl pippin = scn.GetFreepsCard("pippin");
|
||||
PhysicalCardImpl talent = scn.GetFreepsCard("talent");
|
||||
|
||||
scn.FreepsMoveCharToTable(sam, gaffer, boromir);
|
||||
scn.FreepsMoveCharToTable(sam);
|
||||
scn.FreepsMoveCharToTable(merry);
|
||||
scn.FreepsMoveCharToTable(pippin);
|
||||
scn.FreepsMoveCardToHand(talent);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.FreepsPlayCard(talent);
|
||||
//Frodo, Sam, Gaffer, but not Boromir
|
||||
assertEquals(3, scn.FreepsCardChoiceCount());
|
||||
|
||||
scn.FreepsChooseCard(frodo);
|
||||
assertEquals(1, scn.GetWoundsOn(frodo));
|
||||
//There are 4 companions in play, but only 2 valid targets
|
||||
assertEquals(2, scn.FreepsGetADParamAsList("cardId").size());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void TalentAbilityTriggersConcealedOnMove() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void TalentReducesTwilightIfOnlyHobbits() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl frodo = scn.GetRingBearer();
|
||||
PhysicalCardImpl sam = scn.GetFreepsCard("sam");
|
||||
PhysicalCardImpl gaffer = scn.GetFreepsCard("gaffer");
|
||||
PhysicalCardImpl boromir = scn.GetFreepsCard("boromir");
|
||||
PhysicalCardImpl merry = scn.GetFreepsCard("merry");
|
||||
PhysicalCardImpl talent = scn.GetFreepsCard("talent");
|
||||
|
||||
scn.FreepsMoveCharToTable(sam, gaffer, boromir);
|
||||
scn.FreepsMoveCharToTable(merry);
|
||||
scn.FreepsMoveCardToHand(talent);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.FreepsPlayCard(talent);
|
||||
scn.FreepsChooseCard(frodo);
|
||||
scn.FreepsSkipCurrentPhaseAction();
|
||||
|
||||
//Sam and Frodo, but not Gaffer or Boromir
|
||||
assertEquals(2, scn.FreepsCardChoiceCount());
|
||||
scn.FreepsChooseCard(frodo);
|
||||
assertTrue(scn.HasKeyword(frodo, Keyword.CONCEALED));
|
||||
|
||||
scn.SkipToPhase(Phase.REGROUP);
|
||||
scn.SkipCurrentPhaseActions();
|
||||
|
||||
scn.FreepsChooseToMove();
|
||||
//Sam and Frodo, but not Gaffer or Boromir
|
||||
assertEquals(2, scn.FreepsCardChoiceCount());
|
||||
scn.FreepsChooseCard(sam);
|
||||
assertEquals(Phase.SHADOW, scn.GetCurrentPhase());
|
||||
assertFalse(scn.HasKeyword(frodo, Keyword.CONCEALED));
|
||||
assertTrue(scn.HasKeyword(sam, Keyword.CONCEALED));
|
||||
// 2 for Frodo/Merry, 1 for the site, -1 for Talent
|
||||
assertEquals(2, scn.GetTwilight());
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void TalentOnlyTriggersWithTwoHobbitCompanions() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void TalentDoesNotReduceIfNonHobbitCompanions() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetScenario();
|
||||
|
||||
PhysicalCardImpl frodo = scn.GetRingBearer();
|
||||
PhysicalCardImpl sam = scn.GetFreepsCard("sam");
|
||||
PhysicalCardImpl gaffer = scn.GetFreepsCard("gaffer");
|
||||
PhysicalCardImpl merry = scn.GetFreepsCard("merry");
|
||||
PhysicalCardImpl boromir = scn.GetFreepsCard("boromir");
|
||||
PhysicalCardImpl talent = scn.GetFreepsCard("talent");
|
||||
|
||||
scn.FreepsMoveCharToTable(gaffer, boromir);
|
||||
scn.FreepsMoveCharToTable(merry, boromir);
|
||||
scn.FreepsMoveCardToHand(talent);
|
||||
|
||||
scn.StartGame();
|
||||
|
||||
scn.FreepsPlayCard(talent);
|
||||
scn.FreepsChooseCard(frodo);
|
||||
scn.FreepsSkipCurrentPhaseAction();
|
||||
|
||||
//neither gaffer nor boromir should permit the move trigger to choose a companion
|
||||
assertEquals(Phase.SHADOW, scn.GetCurrentPhase());
|
||||
assertFalse(scn.HasKeyword(frodo, Keyword.CONCEALED));
|
||||
// 3 for Frodo/Merry/Boromir, 1 for the site, Talent does not trigger
|
||||
assertEquals(4, scn.GetTwilight());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -129,5 +129,8 @@ public class FlamingBrandErrataTests
|
||||
scn.FreepsUseCardAction(brand);
|
||||
assertEquals(11, scn.GetStrength(aragorn));
|
||||
assertTrue(scn.HasKeyword(aragorn, Keyword.DAMAGE));
|
||||
|
||||
//Brand is discarded
|
||||
assertFalse(scn.IsAttachedTo(brand, aragorn));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,7 +26,6 @@ public class HornOfBoromirErrataTests
|
||||
put("aragorn", "1_89");
|
||||
|
||||
put("runner1", "1_178");
|
||||
put("runner2", "1_178");
|
||||
}},
|
||||
GenericCardTestHelper.FellowshipSites,
|
||||
GenericCardTestHelper.FOTRFrodo,
|
||||
@@ -44,7 +43,6 @@ public class HornOfBoromirErrataTests
|
||||
put("aragorn", "1_89");
|
||||
|
||||
put("runner1", "1_178");
|
||||
put("runner2", "1_178");
|
||||
}}
|
||||
);
|
||||
}
|
||||
@@ -76,7 +74,7 @@ public class HornOfBoromirErrataTests
|
||||
}
|
||||
|
||||
@Test
|
||||
public void AbilityExertsAndBoromirAndAllyToSkirmish() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
public void AbilityExertsAndDiscardsToPermitAllyToSkirmish() throws DecisionResultInvalidException, CardNotFoundException {
|
||||
//Pre-game setup
|
||||
GenericCardTestHelper scn = GetFOTRScenario();
|
||||
|
||||
@@ -84,14 +82,12 @@ public class HornOfBoromirErrataTests
|
||||
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();
|
||||
|
||||
@@ -101,16 +97,16 @@ public class HornOfBoromirErrataTests
|
||||
assertTrue(scn.FreepsCardActionAvailable(horn));
|
||||
scn.FreepsUseCardAction(horn);
|
||||
|
||||
//discards
|
||||
assertFalse(scn.IsAttachedTo(horn, boromir));
|
||||
assertEquals(1, scn.GetWoundsOn(boromir));
|
||||
assertEquals(1, scn.GetWoundsOn(elrond));
|
||||
//Base version pumps strength, ensure that's not the case here.
|
||||
assertEquals(8, scn.GetStrength(elrond));
|
||||
assertEquals(11, scn.GetStrength(elrond));
|
||||
|
||||
scn.SkipToPhase(Phase.ASSIGNMENT);
|
||||
|
||||
scn.SkipCurrentPhaseActions();
|
||||
|
||||
scn.FreepsAssignToMinion(elrond, runner2);
|
||||
scn.FreepsAssignToMinion(elrond, runner1);
|
||||
assertTrue(scn.IsCharAssigned(elrond));
|
||||
}
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@ public class Saruman_KoIErrataTests
|
||||
|
||||
assertEquals(0, scn.GetWoundsOn(uruk1));
|
||||
assertEquals(1, scn.GetWoundsOn(saruman));
|
||||
//Old version made them fierc, ensure that was removed
|
||||
//Old version made them fierce, ensure that was removed
|
||||
assertFalse(scn.HasKeyword(uruk1, Keyword.FIERCE));
|
||||
|
||||
//shadow has to skip archery actions
|
||||
|
||||
Reference in New Issue
Block a user