From 9c065dc68900a76fc9e0516e06dd3b4042458078 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Wed, 20 Nov 2024 21:08:03 -0600 Subject: [PATCH] V2 errata and wording fixes - Updated wording for V2 Uruk Shield Wall and V2 An End Worthy of Remembrance - Fixed V1 Writhing Tentacle using an errata URL - Added errata for both Herugrim, Simbelmyne, Let Us Be Swift, No Rest for the Weary, and Sigewulf - Fixed a rare Neekerbreeker's Bog (d + e) issue where it would both heal and exert the same character if Lingering Shadow was in play. --- .../src/main/web/js/gemp-022/PC_Cards.js | 34 ++-- .../cards/official/set11/set11-Sites.hjson | 3 +- .../pc/errata/set04/set04-Rohan-errata.hjson | 97 ++++++++++++ .../pc/errata/set05/set05-Rohan-errata.hjson | 149 ++++++++++++++++++ .../pc/errata/set07/set07-Rohan-errata.hjson | 64 ++++++++ .../pc/errata/set11/set11-Sites-errata.hjson | 3 +- .../cards/unofficial/pc/setV01/V1_moria.hjson | 2 +- .../unofficial/pc/setV02/V2-Isengard.hjson | 2 +- .../cards/unofficial/pc/setV02/V2-Rohan.hjson | 4 +- .../errata/set04/Card_04_280_ErrataTests.java | 77 +++++++++ .../errata/set04/Card_04_289_ErrataTests.java | 75 +++++++++ .../errata/set05/Card_05_085_ErrataTests.java | 73 +++++++++ .../errata/set05/Card_05_086_ErrataTests.java | 73 +++++++++ .../errata/set05/Card_05_092_ErrataTests.java | 80 ++++++++++ .../errata/set07/Card_07_236_ErrataTests.java | 77 +++++++++ 15 files changed, 797 insertions(+), 16 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Rohan-errata.hjson create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_280_ErrataTests.java create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_289_ErrataTests.java create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_085_ErrataTests.java create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_086_ErrataTests.java create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_092_ErrataTests.java create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set07/Card_07_236_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 f2e683868..c60394293 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 @@ -198,6 +198,12 @@ var PCCards = { '101_63': 'https://i.lotrtcgpc.net/sets/vset1/V1_063.jpg', '101_64': 'https://i.lotrtcgpc.net/sets/vset1/V1_064.jpg', + //2024 V1 additions: + // Sirannon Dam (V165) + '101_65' : 'https://i.lotrtcgpc.net/sets/vset1/LOTR-ENV1S065.0_card.jpg', + // Writhing Tentacle (V1C66) + '101_66' : 'https://i.lotrtcgpc.net/sets/vset1/LOTR-ENV1S066.0_card.jpg', + // Christmas 2021 Errata '51_7': 'https://i.lotrtcgpc.net/errata/balancing/51_007.jpg', @@ -846,6 +852,22 @@ var PCCards = { '68_9' : 'https://i.lotrtcgpc.net/errata/LOTR-EN18E009.1_card.jpg', // Haldir, Warrior Messenger (18R14) [Errata] '68_14' : 'https://i.lotrtcgpc.net/errata/LOTR-EN18E014.1_card.jpg', + // Legolas, Archer of Mirkwood (5P121) [Errata] + '55_121' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E121.1_card.jpg', + // Gimli, Skilled Defender (5R7) [Errata] + '55_7' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E007.1_card.jpg', + // Herugrim (4U280) [Errata] + '54_280' : 'https://i.lotrtcgpc.net/errata/LOTR-EN04E280.1_card.jpg', + // Herugrim, Sword of the Mark (7R236) [Errata] + '57_236' : 'https://i.lotrtcgpc.net/errata/LOTR-EN07E236.1_card.jpg', + // Simbelmyne (4R289) [Errata] + '54_289' : 'https://i.lotrtcgpc.net/errata/LOTR-EN04E289.1_card.jpg', + // No Rest for the Weary (5R86) [Errata] + '55_86' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E086.1_card.jpg', + // Let Us Be Swift (5C85) [Errata] + '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', //September 2024 Walk-on Qualifiers //Legolas, Greenleaf FA @@ -930,17 +952,9 @@ var PCCards = { '60_8' : 'https://i.lotrtcgpc.net/errata/LOTR-EN10E008.2_card.jpg', // Fortress Never Fallen (4U276) [Errata] '54_276' : 'https://i.lotrtcgpc.net/errata/LOTR-EN04E276.2_card.jpg', - // Legolas, Archer of Mirkwood (5P121) [Errata] - '55_121' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E121.1_card.jpg', - // Gimli, Skilled Defender (5R7) [Errata] - '55_7' : 'https://i.lotrtcgpc.net/errata/LOTR-EN05E007.1_card.jpg', // Boromir, Redeemed (V1 20) [Errata] - '101_20' : 'https://i.lotrtcgpc.net/sets/vset1/LOTR-ENV1E020.1_card.jpg', + '101_20' : 'https://i.lotrtcgpc.net/sets/vset1/LOTR-ENV1E020.1_card.jpg' + - //V1 additions: - // Sirannon Dam (V165) - '101_65' : 'https://i.lotrtcgpc.net/sets/vset1/LOTR-ENV1S065.0_card.jpg', - // Writhing Tentacle (V1C66) - '101_66' : 'https://i.lotrtcgpc.net/sets/vset1/LOTR-ENV1E066.2_card.jpg' } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson index e4a386530..1f497d714 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set11/set11-Sites.hjson @@ -902,10 +902,11 @@ { type: heal select: all(character,minResistance(5)) + memorize: healedChars } { type: exert - select: all(character,maxResistance(4)) + select: all(character,not(memory(healedChars))) } ] } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set04/set04-Rohan-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set04/set04-Rohan-errata.hjson index 4122e95ae..a3485c961 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set04/set04-Rohan-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set04/set04-Rohan-errata.hjson @@ -150,4 +150,101 @@ } } + 54_280: { + cardInfo: { + //id: 54_280.1 + parent: 4_280 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN04E280.1_card.jpg + collInfo: 4U280 + rarity: U + } + title: Herugrim + unique: true + side: Free Peoples + culture: Rohan + twilight: 2 + type: Artifact + strength: 2 + vitality: 1 + itemclass: Hand weapon + target: title(Théoden) + effects: [ + { + type: modifier + modifier: { + type: addKeyword + filter: bearer + keyword: damage + amount: 1 + } + } + ] + gametext: Bearer must be Théoden.
He is damage +1. + lore: "'Here, lord, is Herugrim, your ancient blade....'" + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + + 54_289: { + cardInfo: { + //id: 54_289.1 + parent: 4_289 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN04E289.1_card.jpg + collInfo: 4R289 + rarity: R + } + title: Simbelmynë + unique: false + side: Free Peoples + culture: Rohan + twilight: 1 + type: Event + timewords: Fellowship + effects: { + type: event + requires: { + type: or + requires: [ + { + type: canSpot + filter: culture(rohan),man + count: 2 + } + { + type: canSpot + filter: valiant,culture(rohan),man + } + ] + }, + effect: [ + { + type: playCardFromDrawDeck + select: choose(culture(rohan),or(character,item)) + showAll: true + shuffle: true + } + ] + } + gametext: Fellowship: Spot 2 [rohan] Men (or 1 valiant [rohan] Man) to play a [rohan] character or [rohan] item from your draw deck. + lore: "'How fair are the bright eyes in the grass! Evermind they are called... for they blossom in all seasons of the year, and grow where dead men rest.'" + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Rohan-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Rohan-errata.hjson new file mode 100644 index 000000000..12498af94 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Rohan-errata.hjson @@ -0,0 +1,149 @@ +{ + + 55_85: { + cardInfo: { + //id: 55_85.1 + parent: 5_85 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN05E085.1_card.jpg + collInfo: 5C85 + rarity: C + } + title: Let Us Be Swift + unique: false + side: Free Peoples + culture: Rohan + twilight: 1 + type: Event + timewords: Regroup + effects: { + type: event + requires: { + type: canSpot + filter: valiant,companion + count: 3 + }, + effect: [ + { + type: discard + select: choose(condition) + count: 0-2 + } + { + type: liberateSite + } + ] + } + gametext: Regroup: Spot 3 valiant companions to discard up to 2 conditions and liberate a site. + lore: "'Let us drive through such foes as are already between us and the fastness.'" + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + + 55_86: { + cardInfo: { + //id: 55_86.1 + parent: 5_86 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN05E086.1_card.jpg + collInfo: 5R86 + rarity: R + } + title: No Rest for the Weary + unique: false + side: Free Peoples + culture: Rohan + twilight: 1 + type: Event + timewords: Maneuver + effects: { + type: event + requires: { + type: canSpot + filter: valiant,companion + count: 3 + }, + effect: [ + { + type: addKeyword + select: choose(valiant,companion) + keyword: defender + amount: 1 + until: regroup + } + ] + } + gametext: Maneuver: Spot 3 valiant companions to make one of those companions defender +1 until the regroup phase. + lore: "'We must draw all our forces now behind the walls.'" + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + + 55_92: { + cardInfo: { + //id: 55_92.1 + parent: 5_92 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN05E092.1_card.jpg + collInfo: 5U92 + rarity: U + } + title: Sigewulf + subtitle: Brave Volunteer + unique: true + side: Free Peoples + culture: Rohan + twilight: 1 + type: Ally + allyHome: 4T + race: Man + strength: 4 + vitality: 2 + keywords: Villager + effects: [ + { + type: activated + phase: regroup + cost: { + type: exert + select: self + } + requires: { + type: canSpot + filter: valiant,companion + count: 5 + } + effect: { + type: discard + select: choose(minion) + } + } + ] + gametext: Villager.
Regroup: Exert Sigewulf and spot 5 valiant companions to discard a minion. + lore: "The courage of Sigewulf and other Rohirrim like him will not be forgotten." + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set07/set07-Rohan-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set07/set07-Rohan-errata.hjson index 74cfe771c..384087abc 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set07/set07-Rohan-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set07/set07-Rohan-errata.hjson @@ -1,4 +1,68 @@ { + + 57_236: { + cardInfo: { + //id: 57_236.1 + parent: 7_236 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN07E236.1_card.jpg + collInfo: 7R236 + rarity: R + } + title: Herugrim + subtitle: Sword of the Mark + unique: true + side: Free Peoples + culture: Rohan + twilight: 3 + type: Artifact + strength: 2 + vitality: 1 + itemclass: Hand weapon + target: title(Théoden) + effects: [ + { + type: modifier + modifier: { + type: addKeyword + filter: bearer + keyword: damage + amount: 1 + } + } + { + type: Response + trigger: { + type: aboutToTakeWound + filter: bearer + } + requires: { + type: cantSpotThreats + amount: 3 + } + cost: { + type: addThreats + amount: 2 + } + effect: { + type: preventWound + select: bearer + } + } + ] + gametext: Bearer must be Théoden.
He is damage +1.
Response: If Théoden is about to take a wound and you cannot spot 3 threats, add 2 threats to prevent that wound. + lore: "Out swept his sword, and he spurred to the standard, hewed staff and bearer...." + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + 57_256: { cardInfo: { //id: 7_256.1 diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson index 78e0a7477..f3d69cb2a 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set11/set11-Sites-errata.hjson @@ -242,10 +242,11 @@ { type: heal select: all(character,minResistance(5)) + memorize: healedChars } { type: exert - select: all(character,not(minResistance(5))) + select: all(character,not(memory(healedChars))) } ] } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson index 04ac65dc0..a28c92975 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV01/V1_moria.hjson @@ -643,7 +643,7 @@ cardInfo: { //id: 101_66.1 revision: 1 - image: sets/vset1/LOTR-ENV1E066.2_card.jpg + image: sets/vset1/LOTR-ENV1E066.1_card.jpg collInfo: V1_66 rarity: C } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Isengard.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Isengard.hjson index 4d03cd41d..4a786e483 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Isengard.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Isengard.hjson @@ -1157,7 +1157,7 @@ } } ] - gametext: Machine.
While you can spot X [isengard] tokens here, each time an [isengard] Uruk-hai costing X is about to take a wound, exert it instead.
Maneuver: Exert an Uruk-hai to add an [isengard] token here. + gametext: Machine. Each time an Uruk-hai costing X is about to take a wound (except during a skirmish), exert it instead, where X is the number of [isengard] tokens you can spot here.
Maneuver: Exert an Uruk-hai to add an [isengard] token here. lore: "They held their great shields above them like a roof..." promotext: "" alts: { diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Rohan.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Rohan.hjson index 3d488e9b2..617cd9c9e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Rohan.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Rohan.hjson @@ -94,7 +94,7 @@ text: Choose how many {rohan} conditions to remove 2 tokens from. count: { type: Range - from: 1 + from: 0 to: { type: ForEachYouCanSpot filter: condition,HasCultureTokenCount(2,rohan) @@ -122,7 +122,7 @@ } ] } - gametext: Remove 2 tokens from X [rohan] conditions to make 3 valiant companions strength +X until the regroup phase. + gametext: Spot X [rohan] conditions and remove 2 tokens from each to make 3 valiant companions strength +X until the regroup phase. lore: "Captains and champions fell or fled before them. Neither orc nor man withstood them." promotext: "" alts: { diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_280_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_280_ErrataTests.java new file mode 100644 index 000000000..dd0fb2b1c --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_280_ErrataTests.java @@ -0,0 +1,77 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set04; + +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_04_280_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "54_280"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void HerugrimStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 4 + * Name: Herugrim + * Unique: True + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 2 + * Type: Artifact + * Subtype: Hand weapon + * Strength: 2 + * Vitality: 1 + * Game Text: Bearer must be Théoden.
He is damage +1. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Herugrim", card.getBlueprint().getTitle()); + assertNull(card.getBlueprint().getSubtitle()); + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ROHAN, card.getBlueprint().getCulture()); + assertEquals(CardType.ARTIFACT, card.getBlueprint().getCardType()); + assertTrue(card.getBlueprint().getPossessionClasses().contains(PossessionClass.HAND_WEAPON)); + assertEquals(2, card.getBlueprint().getTwilightCost()); + assertEquals(2, card.getBlueprint().getStrength()); + assertEquals(1, card.getBlueprint().getVitality()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void HerugrimTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + scn.FreepsMoveCardToHand(card); + + scn.StartGame(); + scn.FreepsPlayCard(card); + + assertEquals(2, scn.GetTwilight()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_289_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_289_ErrataTests.java new file mode 100644 index 000000000..a39657c0a --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_289_ErrataTests.java @@ -0,0 +1,75 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set04; + +import com.gempukku.lotro.cards.GenericCardTestHelper; +import com.gempukku.lotro.common.CardType; +import com.gempukku.lotro.common.Culture; +import com.gempukku.lotro.common.Side; +import com.gempukku.lotro.common.Timeword; +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_04_289_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "54_289"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void SimbelmyneStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 4 + * Name: Simbelmyne + * Unique: False + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 1 + * Type: Event + * Subtype: Fellowship + * Game Text: Fellowship: Spot 2 [rohan] Men (or 1 valiant [rohan] Man) to play a [rohan] character or [rohan] item from your draw deck. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Simbelmynë", card.getBlueprint().getTitle()); + assertNull(card.getBlueprint().getSubtitle()); + assertFalse(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ROHAN, card.getBlueprint().getCulture()); + assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); + assertTrue(scn.hasTimeword(card, Timeword.FELLOWSHIP)); + assertEquals(1, card.getBlueprint().getTwilightCost()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void SimbelmyneTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + scn.FreepsMoveCardToHand(card); + + scn.StartGame(); + scn.FreepsPlayCard(card); + + assertEquals(1, scn.GetTwilight()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_085_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_085_ErrataTests.java new file mode 100644 index 000000000..54695b014 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_085_ErrataTests.java @@ -0,0 +1,73 @@ +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_085_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "55_85"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void LetUsBeSwiftStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 5 + * Name: Let Us Be Swift + * Unique: False + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 1 + * Type: Event + * Subtype: Regroup + * Game Text: Regroup: Spot 3 valiant companions to discard up to 2 conditions and liberate a site. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Let Us Be Swift", card.getBlueprint().getTitle()); + assertNull(card.getBlueprint().getSubtitle()); + assertFalse(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ROHAN, card.getBlueprint().getCulture()); + assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); + assertTrue(scn.hasTimeword(card, Timeword.REGROUP)); + assertEquals(1, card.getBlueprint().getTwilightCost()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void LetUsBeSwiftTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + scn.FreepsMoveCardToHand(card); + + scn.StartGame(); + scn.FreepsPlayCard(card); + + assertEquals(1, scn.GetTwilight()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_086_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_086_ErrataTests.java new file mode 100644 index 000000000..9ab7410b7 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_086_ErrataTests.java @@ -0,0 +1,73 @@ +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_086_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "55_86"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void NoRestfortheWearyStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 5 + * Name: No Rest for the Weary + * Unique: False + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 1 + * Type: Event + * Subtype: Maneuver + * Game Text: Maneuver: Spot 3 valiant companions to make one of those companions defender +1 until the regroup phase. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("No Rest for the Weary", card.getBlueprint().getTitle()); + assertNull(card.getBlueprint().getSubtitle()); + assertFalse(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ROHAN, card.getBlueprint().getCulture()); + assertEquals(CardType.EVENT, card.getBlueprint().getCardType()); + assertTrue(scn.hasTimeword(card, Timeword.MANEUVER)); + assertEquals(1, card.getBlueprint().getTwilightCost()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void NoRestfortheWearyTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + scn.FreepsMoveCardToHand(card); + + scn.StartGame(); + scn.FreepsPlayCard(card); + + assertEquals(1, scn.GetTwilight()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_092_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_092_ErrataTests.java new file mode 100644 index 000000000..f20c73fbb --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_092_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_092_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "55_92"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void SigewulfStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 5 + * Name: Sigewulf, Brave Volunteer + * Unique: True + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 1 + * Type: Ally + * Subtype: Man + * Strength: 4 + * Vitality: 2 + * Site Number: 4T + * Game Text: Villager.
Regroup: Exert Sigewulf and spot 5 valiant companions to discard a minion. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Sigewulf", card.getBlueprint().getTitle()); + assertEquals("Brave Volunteer", card.getBlueprint().getSubtitle()); + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ROHAN, card.getBlueprint().getCulture()); + assertEquals(CardType.ALLY, card.getBlueprint().getCardType()); + assertEquals(Race.MAN, card.getBlueprint().getRace()); + assertTrue(scn.hasKeyword(card, Keyword.VILLAGER)); + assertEquals(1, card.getBlueprint().getTwilightCost()); + assertEquals(4, card.getBlueprint().getStrength()); + assertEquals(2, card.getBlueprint().getVitality()); + assertTrue(card.getBlueprint().hasAllyHome(new AllyHome(SitesBlock.TWO_TOWERS, 4))); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void SigewulfTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + scn.FreepsMoveCardToHand(card); + + scn.StartGame(); + scn.FreepsPlayCard(card); + + assertEquals(1, scn.GetTwilight()); + } +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set07/Card_07_236_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set07/Card_07_236_ErrataTests.java new file mode 100644 index 000000000..cda8746a4 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set07/Card_07_236_ErrataTests.java @@ -0,0 +1,77 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set07; + +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_07_236_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "57_236"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void HerugrimStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 7 + * Name: Herugrim, Sword of the Mark + * Unique: True + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 3 + * Type: Artifact + * Subtype: Hand weapon + * Strength: 2 + * Vitality: 1 + * Game Text: Bearer must be Théoden.
He is damage +1.
Response: If Théoden is about to take a wound and you cannot spot 3 threats, add 2 threats to prevent that wound. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Herugrim", card.getBlueprint().getTitle()); + assertEquals("Sword of the Mark", card.getBlueprint().getSubtitle()); + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ROHAN, card.getBlueprint().getCulture()); + assertEquals(CardType.ARTIFACT, card.getBlueprint().getCardType()); + assertTrue(card.getBlueprint().getPossessionClasses().contains(PossessionClass.HAND_WEAPON)); + assertEquals(3, card.getBlueprint().getTwilightCost()); + assertEquals(2, card.getBlueprint().getStrength()); + assertEquals(1, card.getBlueprint().getVitality()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void HerugrimTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + scn.FreepsMoveCardToHand(card); + + scn.StartGame(); + scn.FreepsPlayCard(card); + + assertEquals(3, scn.GetTwilight()); + } +}