Goblin Archer errata tests (plus original)

This commit is contained in:
Christian 'ketura' McCarty
2025-04-17 14:21:32 -05:00
parent 4011ff7fca
commit 7a2a61b955
2 changed files with 92 additions and 31 deletions

View File

@@ -4,6 +4,7 @@ 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.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier;
import org.junit.Test; import org.junit.Test;
import java.util.HashMap; import java.util.HashMap;
@@ -17,8 +18,8 @@ public class Card_01_172_Tests
return new GenericCardTestHelper( return new GenericCardTestHelper(
new HashMap<>() new HashMap<>()
{{ {{
put("card", "1_172"); put("archer", "1_172");
// put other cards in here as needed for the test case put("runner", "1_178");
}}, }},
GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo, GenericCardTestHelper.FOTRFrodo,
@@ -46,7 +47,7 @@ public class Card_01_172_Tests
var scn = GetScenario(); var scn = GetScenario();
var card = scn.GetFreepsCard("card"); var card = scn.GetFreepsCard("archer");
assertEquals("Goblin Archer", card.getBlueprint().getTitle()); assertEquals("Goblin Archer", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle()); assertNull(card.getBlueprint().getSubtitle());
@@ -62,18 +63,38 @@ public class Card_01_172_Tests
assertEquals(4, card.getBlueprint().getSiteNumber()); assertEquals(4, card.getBlueprint().getSiteNumber());
} }
// Uncomment any @Test markers below once this is ready to be used @Test
//@Test public void GoblinArcherSpotsAnotherMoriaOrcToMakeFellowshipArcheryTotalMinus6() throws DecisionResultInvalidException, CardNotFoundException {
public void GoblinArcherTest1() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup //Pre-game setup
var scn = GetScenario(); var scn = GetScenario();
var card = scn.GetFreepsCard("card"); var archer = scn.GetShadowCard("archer");
scn.FreepsMoveCardToHand(card); var runner = scn.GetShadowCard("runner");
scn.ShadowMoveCharToTable(runner);
scn.ShadowMoveCardToHand(archer);
scn.StartGame(); scn.StartGame();
scn.FreepsPlayCard(card); scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.FREE_PEOPLE, 7));
scn.SkipToPhase(Phase.ARCHERY);
assertEquals(5, scn.GetTwilight()); assertEquals(7, scn.GetFreepsArcheryTotal());
scn.FreepsMoveCharToTable(archer);
assertEquals(1, scn.GetFreepsArcheryTotal());
}
@Test
public void GoblinArcherDoesNotAlterFellowshipArcheryTotalIfNoOtherMoriaOrc() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var archer = scn.GetShadowCard("archer");
scn.ShadowMoveCharToTable(archer);
scn.StartGame();
scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.FREE_PEOPLE, 7));
scn.SkipToPhase(Phase.ARCHERY);
assertEquals(7, scn.GetFreepsArcheryTotal());
} }
} }

View File

@@ -4,6 +4,7 @@ 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.logic.decisions.DecisionResultInvalidException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import com.gempukku.lotro.logic.modifiers.ArcheryTotalModifier;
import org.junit.Test; import org.junit.Test;
import java.util.HashMap; import java.util.HashMap;
@@ -17,12 +18,17 @@ public class Card_01_172_ErrataTests
return new GenericCardTestHelper( return new GenericCardTestHelper(
new HashMap<>() new HashMap<>()
{{ {{
put("card", "51_172"); put("archer", "51_172");
// put other cards in here as needed for the test case put("marksman", "1_176");
put("commander", "2_49");
put("bowman", "2_60");
put("troop", "2_67");
put("runner", "1_178");
}}, }},
GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo, GenericCardTestHelper.FOTRFrodo,
GenericCardTestHelper.RulingRing GenericCardTestHelper.ATARRing
); );
} }
@@ -48,7 +54,7 @@ public class Card_01_172_ErrataTests
var scn = GetScenario(); var scn = GetScenario();
var card = scn.GetFreepsCard("card"); var card = scn.GetFreepsCard("archer");
assertEquals("Goblin Archer", card.getBlueprint().getTitle()); assertEquals("Goblin Archer", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle()); assertNull(card.getBlueprint().getSubtitle());
@@ -64,29 +70,63 @@ public class Card_01_172_ErrataTests
assertEquals(4, card.getBlueprint().getSiteNumber()); assertEquals(4, card.getBlueprint().getSiteNumber());
} }
// Uncomment any @Test markers below once this is ready to be used @Test
//@Test public void GoblinArcherMakesFellowshipArcheryTotalMinus1PerMoriaArcher() throws DecisionResultInvalidException, CardNotFoundException {
public void GoblinArcherTest1() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup //Pre-game setup
var scn = GetScenario(); var scn = GetScenario();
// var card = scn.GetFreepsCard("card"); var archer = scn.GetShadowCard("archer");
// scn.FreepsMoveCardToHand(card); var marksman = scn.GetShadowCard("marksman");
// scn.FreepsMoveCharToTable(card); var commander = scn.GetShadowCard("commander");
// scn.FreepsMoveCardToSupportArea(card); var bowman = scn.GetShadowCard("bowman");
// scn.FreepsMoveCardToDiscard(card); var troop = scn.GetShadowCard("troop");
// scn.FreepsMoveCardsToTopOfDeck(card); var runner = scn.GetShadowCard("runner");
var card = scn.GetShadowCard("card"); scn.ShadowMoveCharToTable(marksman, commander, bowman, troop, runner);
scn.ShadowMoveCardToHand(card); scn.ShadowMoveCardToHand(archer);
scn.ShadowMoveCharToTable(card);
scn.ShadowMoveCardToSupportArea(card);
scn.ShadowMoveCardToDiscard(card);
scn.ShadowMoveCardsToTopOfDeck(card);
scn.StartGame(); scn.StartGame();
scn.FreepsPlayCard(card); scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.FREE_PEOPLE, 6));
scn.SkipToPhase(Phase.ARCHERY);
assertEquals(6, scn.GetFreepsArcheryTotal());
scn.FreepsMoveCharToTable(archer);
// -5 for the 5 archers, the runner doesn't count
assertEquals(1, scn.GetFreepsArcheryTotal());
}
@Test
public void GoblinArcherAssignmentAbilityPreventsMoriaArchersFromSkirmishing() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var archer = scn.GetShadowCard("archer");
var marksman = scn.GetShadowCard("marksman");
var commander = scn.GetShadowCard("commander");
var bowman = scn.GetShadowCard("bowman");
var troop = scn.GetShadowCard("troop");
var runner = scn.GetShadowCard("runner");
scn.ShadowMoveCharToTable(archer, marksman, commander, bowman, troop, runner);
var frodo = scn.GetRingBearer();
//so frodo doesn't die to all the arrows
scn.ApplyAdHocModifier(new ArcheryTotalModifier(null, Side.SHADOW, -6));
scn.StartGame();
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.FreepsPassCurrentPhaseAction();
assertTrue(scn.ShadowActionAvailable(archer));
assertEquals(0, scn.GetWoundsOn(archer));
scn.ShadowUseCardAction(archer);
assertEquals(1, scn.GetWoundsOn(archer));
scn.PassAssignmentActions();
//Only the runner is now assignable
assertEquals(1, scn.FreepsGetShadowAssignmentTargetCount());
assertEquals(5, scn.GetTwilight());
} }
} }