From 75860d2821fbc6c80782bc12d8049e11ccb8b272 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Sun, 8 Dec 2024 01:17:55 -0600 Subject: [PATCH] Fixed the default selector for the Reinforce effect being too restrictive --- .../effect/appender/ReinforceTokens.java | 2 +- .../official/set18/Card_18_011_Tests.java | 68 +++++++++++--- .../errata/set18/Card_18_011_ErrataTests.java | 89 +++++++++++++++++++ 3 files changed, 146 insertions(+), 13 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set18/Card_18_011_ErrataTests.java diff --git a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/ReinforceTokens.java b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/ReinforceTokens.java index 044e9f057..1ca620046 100644 --- a/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/ReinforceTokens.java +++ b/gemp-lotr/gemp-lotr-logic/src/main/java/com/gempukku/lotro/cards/build/field/effect/appender/ReinforceTokens.java @@ -33,7 +33,7 @@ public class ReinforceTokens implements EffectAppenderProducer { final Culture culture = FieldUtils.getEnum(Culture.class, effectObject.get("culture"), "culture"); final Token token = Token.findTokenForCulture(culture); - final String select = FieldUtils.getString(effectObject.get("select"), "select", "self"); + final String select = FieldUtils.getString(effectObject.get("select"), "select", "choose(any)"); final String memory = FieldUtils.getString(effectObject.get("memorize"), "memorize", "_temp"); final ValueSource valueSource = ValueResolver.resolveEvaluator(effectObject.get("times"), 1, environment); String player = FieldUtils.getString(effectObject.get("player"), "player", "you"); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set18/Card_18_011_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set18/Card_18_011_Tests.java index 78e8a4318..c36317886 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set18/Card_18_011_Tests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/official/set18/Card_18_011_Tests.java @@ -17,11 +17,14 @@ public class Card_18_011_Tests return new GenericCardTestHelper( new HashMap<>() {{ - put("card", "18_11"); - // put other cards in here as needed for the test case + put("ewer", "18_11"); + put("homestead", "13_22"); + put("defiance", "1_37"); + + put("savage", "1_151"); }}, GenericCardTestHelper.FellowshipSites, - GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.GaladrielRB, GenericCardTestHelper.RulingRing ); } @@ -38,12 +41,14 @@ public class Card_18_011_Tests * Twilight Cost: 2 * Type: Artifact * Subtype: Support area - * Game Text: To play, spot Galadriel or Celeborn.
While Galadriel is the Ring-bearer, she is strength +2 and resistance +2.
Each time you play an [elven] skirmish event, you may reinforce an [elven] token. + * Game Text: To play, spot Galadriel or Celeborn. + * While Galadriel is the Ring-bearer, she is strength +2 and resistance +2. + * Each time you play an [elven] skirmish event, you may reinforce an [elven] token. */ var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("ewer"); assertEquals("Galadriel's Silver Ewer", card.getBlueprint().getTitle()); assertNull(card.getBlueprint().getSubtitle()); @@ -55,18 +60,57 @@ public class Card_18_011_Tests assertEquals(2, card.getBlueprint().getTwilightCost()); } - // Uncomment any @Test markers below once this is ready to be used - //@Test - public void GaladrielsSilverEwerTest1() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void EwerPumpsGaladrielARB() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup var scn = GetScenario(); - var card = scn.GetFreepsCard("card"); - scn.FreepsMoveCardToHand(card); + var galadriel = scn.GetRingBearer(); + var ewer = scn.GetFreepsCard("ewer"); + scn.FreepsMoveCardToHand(ewer); scn.StartGame(); - scn.FreepsPlayCard(card); - assertEquals(2, scn.GetTwilight()); + //3 base +1 from ring + assertEquals(4, scn.GetStrength(galadriel)); + //3 base +1 from text -1 from burden + assertEquals(3, scn.GetResistance(galadriel)); + + scn.FreepsPlayCard(ewer); + + //3 base +1 from ring +2 from ewer + assertEquals(6, scn.GetStrength(galadriel)); + //3 base +1 from text -1 from burden + 2 from ewer + assertEquals(5, scn.GetResistance(galadriel)); + } + + @Test + public void EwerReinforcesAfterPlayingSkirmishEvent() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var galadriel = scn.GetRingBearer(); + var ewer = scn.GetFreepsCard("ewer"); + var homestead = scn.GetFreepsCard("homestead"); + var defiance = scn.GetFreepsCard("defiance"); + scn.FreepsMoveCardToSupportArea(ewer, homestead); + scn.FreepsMoveCardToHand(defiance); + + var savage = scn.GetShadowCard("savage"); + scn.ShadowMoveCharToTable(savage); + + scn.StartGame(); + + scn.AddTokensToCard(homestead, 1); + + scn.SkipToAssignments(); + scn.FreepsAssignToMinions(galadriel, savage); + scn.FreepsResolveSkirmish(galadriel); + + assertEquals(1, scn.GetCultureTokensOn(homestead)); + scn.FreepsPlayCard(defiance); + assertTrue(scn.FreepsHasOptionalTriggerAvailable()); + scn.FreepsAcceptOptionalTrigger(); + assertEquals(2, scn.GetCultureTokensOn(homestead)); } } diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set18/Card_18_011_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set18/Card_18_011_ErrataTests.java new file mode 100644 index 000000000..3b4d4064c --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set18/Card_18_011_ErrataTests.java @@ -0,0 +1,89 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set18; + +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.game.CardNotFoundException; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import java.util.HashMap; + +import static org.junit.Assert.*; + +public class Card_18_011_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("ewer", "68_11"); + put("homestead", "13_22"); + put("defiance", "1_37"); + + put("savage", "1_151"); + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.GaladrielRB, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void GaladrielsSilverEwerStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 18 + * Name: Galadriel's Silver Ewer + * Unique: True + * Side: Free Peoples + * Culture: Elven + * Twilight Cost: 2 + * Type: Artifact + * Subtype: Support area + * Game Text: To play, spot Galadriel or Celeborn. + * While Galadriel is the Ring-bearer, she is strength +1 and resistance +2. + * Each time you play an [elven] skirmish event, you may exert Galadriel to reinforce an [elven] token. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("ewer"); + + assertEquals("Galadriel's Silver Ewer", card.getBlueprint().getTitle()); + assertNull(card.getBlueprint().getSubtitle()); + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ELVEN, card.getBlueprint().getCulture()); + assertEquals(CardType.ARTIFACT, card.getBlueprint().getCardType()); + assertTrue(scn.hasKeyword(card, Keyword.SUPPORT_AREA)); + assertEquals(2, card.getBlueprint().getTwilightCost()); + } + + @Test + public void EwerPumpsGaladrielARB() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var galadriel = scn.GetRingBearer(); + var ewer = scn.GetFreepsCard("ewer"); + scn.FreepsMoveCardToHand(ewer); + + scn.StartGame(); + + //3 base +1 from ring + assertEquals(4, scn.GetStrength(galadriel)); + //4 base +1 from text -1 from burden + assertEquals(3, scn.GetResistance(galadriel)); + + scn.FreepsPlayCard(ewer); + + //3 base +1 from ring +1 from ewer + assertEquals(5, scn.GetStrength(galadriel)); + //4 base +1 from text -1 from burden + 2 from ewer + assertEquals(5, scn.GetResistance(galadriel)); + } +}