Fixed the default selector for the Reinforce effect being too restrictive

This commit is contained in:
Christian 'ketura' McCarty
2024-12-08 01:17:55 -06:00
parent 9b3b8f0e38
commit 75860d2821
3 changed files with 146 additions and 13 deletions

View File

@@ -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");

View File

@@ -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.<br>While Galadriel is the Ring-bearer, she is strength +2 and resistance +2.<br>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));
}
}

View File

@@ -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));
}
}