From c0b54f76cdf435d8fa72d198da418420446046d6 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Fri, 22 Nov 2024 20:23:18 -0600 Subject: [PATCH] Errata update for Greenleaf, SFTF, and Foul Horde --- .../src/main/web/js/gemp-022/PC_Cards.js | 2 + .../pc/errata/set01/set01-Elven-errata.hjson | 3 +- .../errata/set05/set05-Isengard-errata.hjson | 62 ++++++++++++++ .../errata/set08/set08-Gandalf-errata.hjson | 14 +--- .../errata/set01/Card_01_050_ErrataTests.java | 8 +- .../errata/set05/Card_05_050_ErrataTests.java | 80 +++++++++++++++++++ .../errata/set08/Card_08_020_ErrataTests.java | 8 +- 7 files changed, 159 insertions(+), 18 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_050_ErrataTests.java diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/PC_Cards.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/PC_Cards.js index c60394293..a65ae4d70 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/PC_Cards.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/PC_Cards.js @@ -868,6 +868,8 @@ var PCCards = { '55_85' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E085.1_card.jpg', // Sigewulf, Brave Volunteer (5U92) [Errata] '55_92' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E092.1_card.jpg', + // Foul Horde (5R50) [Errata] + '55_50' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E050.1_card.jpg', //September 2024 Walk-on Qualifiers //Legolas, Greenleaf FA diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Elven-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Elven-errata.hjson index a5e3501ef..16151748d 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Elven-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set01/set01-Elven-errata.hjson @@ -374,6 +374,7 @@ vitality: 3 signet: Frodo resistance: 6 + keywords: Archer effects: { type: activated phase: archery @@ -415,7 +416,7 @@ } ] } - gametext: Archery: Exert Legolas to wound a minion. Exert him again unless he bears a ranged weapon or you can spot more minions than companions. + gametext: Archer.
Archery: Exert Legolas to wound a minion. Exert him again unless he bears a ranged weapon or you can spot more minions than companions. lore: And I too will go with him,' said Legolas. 'It would be faithless now to say farewell.' promotext: "" alts: { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Isengard-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Isengard-errata.hjson index f676323fd..c6dbef286 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Isengard-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Isengard-errata.hjson @@ -1,4 +1,66 @@ { + + 55_50: { + cardInfo: { + //id: 55_50.1 + parent: 5_50 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN05E050.1_card.jpg + collInfo: 5R50 + rarity: R + } + title: Foul Horde + unique: false + side: Shadow + culture: Isengard + twilight: 4 + type: Minion + race: Orc + strength: 9 + vitality: 3 + site: 4 + keywords: Warg-rider + effects: [ + { + type: modifier + modifier: { + type: addKeyword + filter: self,not(exhausted) + keyword: fierce + } + } + { + type: modifier + modifier: { + type: addKeyword + filter: self,minVitality(3) + keyword: ambush + amount: 1 + } + } + { + type: modifier + modifier: { + type: addKeyword + filter: self,minVitality(4) + keyword: damage + amount: 1 + } + } + ] + gametext: Warg-rider.
While Foul Horde is not exhausted, it is fierce.
While Foul Horde has at least 3 vitality, it is ambush (1).
While Foul Horde has at least 4 vitality, it is damage +1. + lore: "" + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + 55_57: { cardInfo: { //id: 5_57.1 diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set08/set08-Gandalf-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set08/set08-Gandalf-errata.hjson index bae6369b0..643002829 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set08/set08-Gandalf-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set08/set08-Gandalf-errata.hjson @@ -14,10 +14,10 @@ unique: false side: Free Peoples culture: Gandalf - twilight: 3 + twilight: 5 type: Event timewords: Fellowship - effects: { + effects: { type: event requires: { type: canSpot @@ -32,13 +32,7 @@ { type: putCardsFromDeckIntoHand select: choose(cultureFromMemory(killedCompanion)) - count: { - type: Range - from: 0 - to: { - type: RegionNumber - } - } + count: 0-3 reveal: true shuffle: true showAll: true @@ -48,7 +42,7 @@ } ] } - gametext: Spot Gandalf and place a companion (except the Ring-bearer) in the dead pile to take X cards into hand of that companion's culture from your draw deck, where X is the current region number. + gametext: Spot Gandalf and place a companion (except the Ring-bearer) in the dead pile to take up to 3 cards from that companion's culture into hand from your draw deck. Shuffle your draw deck. lore: "'...we will bear Faramir, Steward of Gondor, to a place where he can sleep in peace....'" promotext: "" alts: { diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_050_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_050_ErrataTests.java index 07e3e1343..1d9e8849d 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_050_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_050_ErrataTests.java @@ -3,13 +3,13 @@ package com.gempukku.lotro.cards.unofficial.pc.errata.set01; import com.gempukku.lotro.cards.GenericCardTestHelper; import com.gempukku.lotro.common.*; import com.gempukku.lotro.game.CardNotFoundException; +import com.gempukku.lotro.game.PhysicalCardImpl; import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; import org.junit.Test; import java.util.HashMap; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; public class Card_01_050_ErrataTests { @@ -43,7 +43,8 @@ public class Card_01_050_ErrataTests * Vitality: 3 * Resistance: 6 * Signet: Frodo - * Game Text: Archery: Exert Legolas to wound a minion. Exert him again unless he bears a ranged weapon or you can spot more minions than companions. + * Game Text: Archer. + * Archery: Exert Legolas to wound a minion. Exert him again unless he bears a ranged weapon or you can spot more minions than companions. */ var scn = GetScenario(); @@ -57,6 +58,7 @@ public class Card_01_050_ErrataTests assertEquals(Culture.ELVEN, card.getBlueprint().getCulture()); assertEquals(CardType.COMPANION, card.getBlueprint().getCardType()); assertEquals(Race.ELF, card.getBlueprint().getRace()); + assertTrue(scn.hasKeyword(card, Keyword.ARCHER)); assertEquals(2, card.getBlueprint().getTwilightCost()); assertEquals(6, card.getBlueprint().getStrength()); assertEquals(3, card.getBlueprint().getVitality()); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_050_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_050_ErrataTests.java new file mode 100644 index 000000000..a45d52407 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_050_ErrataTests.java @@ -0,0 +1,80 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set05; + +import com.gempukku.lotro.cards.GenericCardTestHelper; +import com.gempukku.lotro.common.*; +import com.gempukku.lotro.game.CardNotFoundException; +import com.gempukku.lotro.game.PhysicalCardImpl; +import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException; +import org.junit.Test; + +import java.util.HashMap; + +import static org.junit.Assert.*; + +public class Card_05_050_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "55_50"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void FoulHordeStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 5 + * Name: Foul Horde + * Unique: False + * Side: Shadow + * Culture: Isengard + * Twilight Cost: 4 + * Type: Minion + * Subtype: Orc + * Strength: 9 + * Vitality: 3 + * Site Number: 4 + * Game Text: Warg-rider.
While Foul Horde is not exhausted, it is fierce.
While Foul Horde has at least 3 vitality, it is ambush (1).
While Foul Horde has at least 4 vitality, it is damage +1. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Foul Horde", card.getBlueprint().getTitle()); + assertNull(card.getBlueprint().getSubtitle()); + assertFalse(card.getBlueprint().isUnique()); + assertEquals(Side.SHADOW, card.getBlueprint().getSide()); + assertEquals(Culture.ISENGARD, card.getBlueprint().getCulture()); + assertEquals(CardType.MINION, card.getBlueprint().getCardType()); + assertEquals(Race.ORC, card.getBlueprint().getRace()); + assertTrue(scn.hasKeyword(card, Keyword.WARG_RIDER)); + assertEquals(4, card.getBlueprint().getTwilightCost()); + assertEquals(9, card.getBlueprint().getStrength()); + assertEquals(3, card.getBlueprint().getVitality()); + assertEquals(4, card.getBlueprint().getSiteNumber()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void FoulHordeTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + scn.FreepsMoveCardToHand(card); + + scn.StartGame(); + scn.FreepsPlayCard(card); + + assertEquals(4, scn.GetTwilight()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set08/Card_08_020_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set08/Card_08_020_ErrataTests.java index c031be847..f1aaaf25a 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set08/Card_08_020_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set08/Card_08_020_ErrataTests.java @@ -36,10 +36,10 @@ public class Card_08_020_ErrataTests * Unique: False * Side: Free Peoples * Culture: Gandalf - * Twilight Cost: 3 + * Twilight Cost: 5 * Type: Event * Subtype: Fellowship - * Game Text: Spot Gandalf and place a companion (except the Ring-bearer) in the dead pile to take X cards into hand of that companion's culture from your draw deck, where X is the current region number. + * Game Text: Spot Gandalf and place a companion (except the Ring-bearer) in the dead pile to take up to 3 cards from that companion's culture into hand from your draw deck. Shuffle your draw deck. */ var scn = GetScenario(); @@ -53,7 +53,7 @@ public class Card_08_020_ErrataTests assertEquals(Culture.GANDALF, card.getBlueprint().getCulture()); assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); assertTrue(scn.hasTimeword(card, Timeword.FELLOWSHIP)); - assertEquals(3, card.getBlueprint().getTwilightCost()); + assertEquals(5, card.getBlueprint().getTwilightCost()); } // Uncomment any @Test markers below once this is ready to be used @@ -68,6 +68,6 @@ public class Card_08_020_ErrataTests scn.StartGame(); scn.FreepsPlayCard(card); - assertEquals(3, scn.GetTwilight()); + assertEquals(5, scn.GetTwilight()); } }