diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set09/set09-Gandalf-errata-playtest.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set09/set09-Gandalf-errata-playtest.hjson index 201a34db7..1c0b0e5a8 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set09/set09-Gandalf-errata-playtest.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set09/set09-Gandalf-errata-playtest.hjson @@ -193,7 +193,7 @@ { type: chooseActiveCards text: Choose Wizard to put in dead pile - filter: choose(wizard,inSkirmish) + filter: choose(your,wizard,inSkirmish) memorize: chosenWizard } { diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set09/Card_09_027_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set09/Card_09_027_ErrataTests.java index af94d313a..6ea43464f 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set09/Card_09_027_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set09/Card_09_027_ErrataTests.java @@ -1,10 +1,7 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set09; import com.gempukku.lotro.cards.GenericCardTestHelper; -import com.gempukku.lotro.common.CardType; -import com.gempukku.lotro.common.Culture; -import com.gempukku.lotro.common.Keyword; -import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; @@ -21,7 +18,15 @@ public class Card_09_027_ErrataTests new HashMap<>() {{ put("sentback", "79_27"); - // put other cards in here as needed for the test case + put("gandalf1", "1_72"); + put("gandalf2", "7_36"); + put("radagast1", "9_26"); + put("radagast2", "9_26"); + + put("saruman", "3_69"); + put("staff", "4_174"); + put("runner1", "1_178"); + put("runner2", "1_178"); }}, GenericCardTestHelper.FellowshipSites, GenericCardTestHelper.FOTRFrodo, @@ -59,17 +64,94 @@ public class Card_09_027_ErrataTests assertEquals(2, sentback.getBlueprint().getTwilightCost()); } - //@Test - public void SentBackTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void SkirmishAbilityDiscardsAllAssignedMinionsAndKillsWizard() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var sentback = scn.GetFreepsCard("sentback"); + var gandalf = scn.GetFreepsCard("gandalf1"); + var radagast = scn.GetFreepsCard("radagast1"); + scn.FreepsMoveCardToSupportArea(sentback); + scn.FreepsMoveCharToTable(gandalf, radagast); + + var saruman = scn.GetShadowCard("saruman"); + var staff = scn.GetShadowCard("staff"); + var runner1 = scn.GetShadowCard("runner1"); + var runner2 = scn.GetShadowCard("runner2"); + scn.ShadowMoveCharToTable(saruman, runner1, runner2); + scn.AttachCardsTo(saruman, staff); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(2, scn.GetTwilight()); + scn.SkipToPhase(Phase.MANEUVER); + scn.FreepsPassCurrentPhaseAction(); + scn.ShadowUseCardAction(staff); // permit saruman to skirmish + + scn.SkipToAssignments(); + scn.FreepsDeclineAssignments(); + scn.ShadowAssignToMinions(radagast, saruman, runner1, runner2); + + scn.FreepsResolveSkirmish(radagast); + + assertTrue(scn.FreepsActionAvailable(sentback)); + assertEquals(Zone.SHADOW_CHARACTERS, saruman.getZone()); + assertEquals(Zone.SHADOW_CHARACTERS, runner1.getZone()); + assertEquals(Zone.SHADOW_CHARACTERS, runner2.getZone()); + assertEquals(Zone.FREE_CHARACTERS, radagast.getZone()); + assertEquals(Zone.SUPPORT, sentback.getZone()); + scn.FreepsUseCardAction(sentback); + + // Radagast should be the only viable choice. Saruman is viable in the original, + // but the errata requires you to target "your Wizard" rather than "a Wizard" + assertNotEquals(Phase.SKIRMISH, scn.GetCurrentPhase()); + assertEquals(Zone.DISCARD, saruman.getZone()); + assertEquals(Zone.DISCARD, runner1.getZone()); + assertEquals(Zone.DISCARD, runner2.getZone()); + assertEquals(Zone.DEAD, radagast.getZone()); + assertEquals(Zone.DISCARD, sentback.getZone()); + } + + @Test + public void FellowshipAbilityCanResurrectDeadWizard() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var sentback = scn.GetFreepsCard("sentback"); + var grey = scn.GetFreepsCard("gandalf1"); + var white = scn.GetFreepsCard("gandalf2"); + scn.FreepsMoveCardToSupportArea(sentback); + scn.FreepsMoveCardToDeadPile(grey); + scn.FreepsMoveCardToHand(white); + + scn.StartGame(); + + assertTrue(scn.FreepsActionAvailable(sentback)); + assertEquals(Zone.DEAD, grey.getZone()); + assertEquals(Zone.HAND, white.getZone()); + scn.FreepsUseCardAction(sentback); + assertEquals(Zone.DEAD, grey.getZone()); + assertEquals(Zone.FREE_CHARACTERS, white.getZone()); + } + + @Test + public void SentBackHasNoRegroupAbility() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var sentback = scn.GetFreepsCard("sentback"); + var grey = scn.GetFreepsCard("gandalf1"); + var white = scn.GetFreepsCard("gandalf2"); + scn.FreepsMoveCardToSupportArea(sentback); + scn.FreepsMoveCardToDeadPile(grey); + scn.FreepsMoveCardToHand(white); + + scn.StartGame(); + + assertTrue(scn.FreepsActionAvailable(sentback)); + + scn.SkipToPhase(Phase.REGROUP); + + assertFalse(scn.FreepsActionAvailable(sentback)); } }