From 0bbb852a8989d3c866fcc0af186edcbacce0bb02 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Tue, 12 Nov 2024 20:44:24 -0600 Subject: [PATCH] New Errata Batch - Cirdan and Greenleaf update - Adding Fortification to Fortress Never Fallen - Adding Valiant to the set 5 Legolas and Gimli --- .../pc/errata/set01/set01-Elven-errata.hjson | 32 +++- .../pc/errata/set04/set04-Rohan-errata.hjson | 94 ++++++++++- .../errata/set05/set05-Dwarven-errata.hjson | 50 ++++++ .../pc/errata/set05/set05-Elven-errata.hjson | 55 +++++++ .../pc/errata/set10/set10-Elven-errata.hjson | 106 +++++++++++-- .../errata/set01/Card_01_050_ErrataTests.java | 7 +- ...old => Card_04_073_ErrataTests.java.1.old} | 0 .../errata/set04/Card_04_276_ErrataTests.java | 48 +++--- .../set04/Card_04_276_ErrataTests.java.1.old | 84 ++++++++++ .../errata/set05/Card_05_007_ErrataTests.java | 84 ++++++++++ .../errata/set05/Card_05_121_ErrataTests.java | 83 ++++++++++ .../errata/set10/Card_10_008_ErrataTests.java | 150 +++++++----------- .../set10/Card_10_008_ErrataTests.java.1.old | 120 ++++++++++++++ ...old => Card_10_011_ErrataTests.java.1.old} | 0 14 files changed, 764 insertions(+), 149 deletions(-) create mode 100644 gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Elven-errata.hjson rename gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/{Card_04_073_ErrataTests.java.old => Card_04_073_ErrataTests.java.1.old} (100%) create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java.1.old create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_007_ErrataTests.java create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_121_ErrataTests.java create mode 100644 gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_008_ErrataTests.java.1.old rename gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/{Card_10_011_ErrataTests.java.old => Card_10_011_ErrataTests.java.1.old} (100%) 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 2d37d527b..0a3edc991 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 @@ -353,7 +353,7 @@ 51_50: { cardInfo: { - //id: 1_50.1 + //id: 51_50.1 parent: 1_50 variant: ERRATA variantPath: errata/pc @@ -374,7 +374,6 @@ vitality: 3 signet: Frodo resistance: 6 - keywords: Archer effects: { type: activated phase: archery @@ -387,9 +386,36 @@ type: wound select: choose(minion) } + { + type: if + check: { + type: Or + requires: [ + { + type: CanSpot + filter: ranged weapon,AttachedTo(self) + } + { + type: isGreaterThan + firstNumber: { + type: forEachYouCanSpot + filter: minion + } + secondNumber: { + type: forEachYouCanSpot + filter: companion + } + } + ] + } + false: { + type: exert + select: self + } + } ] } - gametext: Archer.
Archery: Exert Legolas twice to wound a minion. + 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. 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/set04/set04-Rohan-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set04/set04-Rohan-errata.hjson index 41e1fa5c1..4122e95ae 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 @@ -1,22 +1,99 @@ { + # 54_276: { + # cardInfo: { + # //id: 4_276.1 + # parent: 4_276 + # variant: ERRATA + # variantPath: promos/pc + # revision: 1 + # image: errata/54_276.jpg + # collInfo: 4U276 + # rarity: U + # } + # title: Fortress Never Fallen + # unique: true + # culture: rohan + # twilight: 2 + # type: condition + # keyword: support area + # effects: [ + # { + # type: Trigger + # optional: true + # trigger: { + # type: winsSkirmish + # filter: culture(rohan),man + # } + # effect: { + # type: AddCultureTokens + # culture: rohan + # select: self + # } + # } + # { + # type: activated + # phase: regroup + # cost: [ + # { + # type: memorizeNumber + # memory: numberOfTokens + # amount: { + # type: ForEachCultureToken + # culture: rohan + # filter: self + # } + # } + # ] + # effect: [ + # { + # type: discard + # select: choose(side(shadow),condition) + # count: { + # type: fromMemory + # memory: numberOfTokens + # limit: 4 + # } + # } + # { + # type: discard + # select: self + # } + # ] + # } + # ] + # gametext: Plays to your support area.
Each time a [Rohan] Man wins a skirmish, you may place a [Rohan] token on this card.
Regroup: Discard a Shadow condition
for each [Rohan] token here (limit 4).
Discard this condition. + # lore: "'...it was the spirit of your people that held it strong.'" + # promotext: "" + # alts: { + # promos: { + # } + # errata: { + # } + # } + # } + 54_276: { cardInfo: { - //id: 4_276.1 + //id: 54_276.2 parent: 4_276 variant: ERRATA - variantPath: promos/pc - revision: 1 - image: errata/54_276.jpg + variantPath: errata/pc + revision: 2 + image: errata/LOTR-EN04E276.2_card.jpg collInfo: 4U276 rarity: U } title: Fortress Never Fallen unique: true - culture: rohan + side: Free Peoples + culture: Rohan twilight: 2 - type: condition - keyword: support area + type: Condition + keywords: [ + Fortification + Support Area + ] effects: [ { type: Trigger @@ -62,7 +139,7 @@ ] } ] - gametext: Plays to your support area.
Each time a [Rohan] Man wins a skirmish, you may place a [Rohan] token on this card.
Regroup: Discard a Shadow condition
for each [Rohan] token here (limit 4).
Discard this condition. + gametext: Fortification.
Each time a [Rohan] Man wins a skirmish, you may place a [Rohan] token on this card.
Regroup: Discard a Shadow condition
for each [Rohan] token here (limit 4).
Discard this condition. lore: "'...it was the spirit of your people that held it strong.'" promotext: "" alts: { @@ -72,4 +149,5 @@ } } } + } diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Dwarven-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Dwarven-errata.hjson index 8a656c409..ef9908a03 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Dwarven-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Dwarven-errata.hjson @@ -84,4 +84,54 @@ # } # } # } + + 55_7: { + cardInfo: { + //id: 55_7.1 + parent: 5_7 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN05E007.1_card.jpg + collInfo: 5R7 + rarity: R + } + title: Gimli + subtitle: Skilled Defender + unique: true + side: Free Peoples + culture: Dwarven + twilight: 2 + type: Companion + race: Dwarf + strength: 6 + vitality: 3 + signet: Theoden + resistance: 6 + keywords: [ + Damage+1 + Valiant + ] + effects: { + type: Trigger + optional: true + trigger: { + type: winsSkirmish + filter: self + } + effect: { + type: wound + select: choose(minion,assignedToSkirmish(unbound,companion)) + } + } + gametext: Damage +1. Valiant.
Each time Gimli wins a skirmish, you may wound a minion assigned to skirmish an unbound companion. + lore: "Despite Théoden's preparations, Gimli found it necessary to warn him of the advancing Uruk army." + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } } \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Elven-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Elven-errata.hjson new file mode 100644 index 000000000..509f3b273 --- /dev/null +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set05/set05-Elven-errata.hjson @@ -0,0 +1,55 @@ +{ + + 55_121: { + cardInfo: { + //id: 55_121.1 + parent: 5_121 + variant: ERRATA + variantPath: errata/pc + revision: 1 + image: errata/LOTR-EN05E121.1_card.jpg + collInfo: 5P121 + rarity: P + } + title: Legolas + subtitle: Archer of Mirkwood + unique: true + side: Free Peoples + culture: Elven + twilight: 2 + type: Companion + race: Elf + strength: 6 + vitality: 3 + signet: Theoden + resistance: 6 + keywords: [ + Archer + Valiant + ] + effects: [ + { + type: Trigger + optional: true + trigger: { + type: winsSkirmish + filter: self + } + effect: { + type: heal + select: choose(another,or(dwarf,elf),companion) + } + } + ] + gametext: Archer. Valiant.
Each time Legolas wins a skirmish, you may heal a Dwarf companion or another Elf companion. + lore: "'...even more would I give for a hundred good archers of Mirkwood. We shall need them.'" + promotext: "" + alts: { + promos: { + } + errata: { + } + } + } + +} diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Elven-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Elven-errata.hjson index b3a58ff04..628c9ce8e 100644 --- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Elven-errata.hjson +++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Elven-errata.hjson @@ -1,19 +1,95 @@ { + # 60_8: { + # cardInfo: { + # //id: 0_8.1 + # revision: 1 + # image: errata/60_8.jpg + # collInfo: 10R8 + # rarity: R + # } + # title: Cirdan + # subtitle: The Shipwright + # unique: true + # culture: Elven + # twilight: 4 + # type: companion + # race: Elf + # strength: 7 + # vitality: 4 + # resistance: 6 + # effects: [ + # { + # type: toPlay + # requires: { + # type: canSpot + # filter: elf + # count: 2 + # } + # } + # { + # type: activated + # phase: skirmish + # cost: { + # type: exert + # select: self + # } + # effect: [ + # { + # type: modifyStrength + # select: choose(minion,inSkirmishAgainst(self)) + # memorize: chosenMinion + # amount: { + # type: forEachInDiscard + # filter: your,culture(elven),event + # multiplier: -1 + # } + # } + # { + # type: If + # check: { + # type: memorymatches + # memory: chosenMinion + # filter: maxStrength(6) + # } + # true: { + # type: removeCardsInDiscardFromGame + # count: 3 + # select: choose(culture(elven),event) + # } + # } + # ] + # } + # ] + # gametext: To play, spot 2 Elves.
Skirmish: Exert Cirdan to make a minion he is skirmishing strength -1 for each [elven] event in your discard pile. If that minion is now strength 6 or less, remove 3 [elven] events in your discard pile from the game. + # lore: "...he was grey and old, save that his eyes were keen as stars...." + # promotext: "" + # alts: { + # promos: { + # } + # errata: { + # } + # } + # } + 60_8: { cardInfo: { - //id: 0_8.1 - revision: 1 - image: errata/60_8.jpg + //id: 60_8.2 + parent: 10_8 + variant: ERRATA + variantPath: errata/pc + revision: 2 + image: errata/LOTR-EN10E008.2_card.jpg collInfo: 10R8 rarity: R } title: Cirdan subtitle: The Shipwright unique: true + side: Free Peoples culture: Elven twilight: 4 - type: companion + type: Companion race: Elf strength: 7 vitality: 4 @@ -46,22 +122,28 @@ } } { - type: If - check: { - type: memorymatches - memory: chosenMinion - filter: maxStrength(6) + type: AddTrigger + trigger: { + type: losesSkirmish + overwhelm: true + filter: memory(chosenMinion) + against: self } - true: { + effect: { type: removeCardsInDiscardFromGame - count: 3 + count: { + type: ForEachInDiscard + discard: you + filter: culture(elven),event + divider: 2 + } select: choose(culture(elven),event) } } ] } ] - gametext: To play, spot 2 Elves.
Skirmish: Exert Cirdan to make a minion he is skirmishing strength -1 for each [elven] event in your discard pile. If that minion is now strength 6 or less, remove 3 [elven] events in your discard pile from the game. + gametext: To play, spot 2 Elves.
Skirmish: Exert Cirdan to make a minion he is skirmishing strength -1 for each [elven] event in your discard pile. If that minion is overwhelmed, remove half of the [elven] events in your discard pile from the game (rounded down). lore: "...he was grey and old, save that his eyes were keen as stars...." 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 69e645928..07e3e1343 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.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; public class Card_01_050_ErrataTests { @@ -43,7 +43,7 @@ public class Card_01_050_ErrataTests * Vitality: 3 * Resistance: 6 * Signet: Frodo - * Game Text: Archer.
Archery: Exert Legolas twice to wound a minion. + * 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. */ var scn = GetScenario(); @@ -57,7 +57,6 @@ 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/set04/Card_04_073_ErrataTests.java.old b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_073_ErrataTests.java.1.old similarity index 100% rename from gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_073_ErrataTests.java.old rename to gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_073_ErrataTests.java.1.old diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java index 547980057..056ee5f31 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java @@ -5,19 +5,18 @@ 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.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; public class Card_04_276_ErrataTests { protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { return new GenericCardTestHelper( - new HashMap() + new HashMap<>() {{ put("card", "54_276"); // put other cards in here as needed for the test case @@ -28,52 +27,47 @@ public class Card_04_276_ErrataTests ); } - // Uncomment both @Test markers below once this is ready to be used - - //@Test + @Test public void FortressNeverFallenStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { /** - * Set: 4 - * Title: *Fortress Never Fallen - * Side: Free Peoples - * Culture: Rohan - * Twilight Cost: 2 - * Type: condition - * Subtype: - * Game Text: Plays to your support area. + * Set: 4 + * Name: Fortress Never Fallen + * Unique: True + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 2 + * Type: Condition + * Subtype: Support area + * Game Text: Fortification. * Each time a [Rohan] Man wins a skirmish, you may place a [Rohan] token on this card. * Regroup: Discard a Shadow condition * for each [Rohan] token here (limit 4). * Discard this condition. */ - //Pre-game setup - GenericCardTestHelper scn = GetScenario(); + var scn = GetScenario(); - PhysicalCardImpl card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("card"); + assertEquals("Fortress Never Fallen", 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.CONDITION, card.getBlueprint().getCardType()); - //assertEquals(Race.CREATURE, card.getBlueprint().getRace()); + assertTrue(scn.hasKeyword(card, Keyword.FORTIFICATION)); assertTrue(scn.hasKeyword(card, Keyword.SUPPORT_AREA)); assertEquals(2, card.getBlueprint().getTwilightCost()); - //assertEquals(, card.getBlueprint().getStrength()); - //assertEquals(, card.getBlueprint().getVitality()); - //assertEquals(, card.getBlueprint().getResistance()); - //assertEquals(Signet., card.getBlueprint().getSignet()); - //assertEquals(, card.getBlueprint().getSiteNumber()); // Change this to getAllyHomeSiteNumbers for allies - } + // Uncomment any @Test markers below once this is ready to be used //@Test public void FortressNeverFallenTest1() throws DecisionResultInvalidException, CardNotFoundException { //Pre-game setup - GenericCardTestHelper scn = GetScenario(); + var scn = GetScenario(); - PhysicalCardImpl card = scn.GetFreepsCard("card"); + var card = scn.GetFreepsCard("card"); scn.FreepsMoveCardToHand(card); scn.StartGame(); diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java.1.old b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java.1.old new file mode 100644 index 000000000..547980057 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set04/Card_04_276_ErrataTests.java.1.old @@ -0,0 +1,84 @@ +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 java.util.HashMap; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class Card_04_276_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap() + {{ + put("card", "54_276"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + // Uncomment both @Test markers below once this is ready to be used + + //@Test + public void FortressNeverFallenStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 4 + * Title: *Fortress Never Fallen + * Side: Free Peoples + * Culture: Rohan + * Twilight Cost: 2 + * Type: condition + * Subtype: + * Game Text: Plays to your support area. + * Each time a [Rohan] Man wins a skirmish, you may place a [Rohan] token on this card. + * Regroup: Discard a Shadow condition + * for each [Rohan] token here (limit 4). + * Discard this condition. + */ + + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl card = scn.GetFreepsCard("card"); + + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ROHAN, card.getBlueprint().getCulture()); + assertEquals(CardType.CONDITION, card.getBlueprint().getCardType()); + //assertEquals(Race.CREATURE, card.getBlueprint().getRace()); + assertTrue(scn.hasKeyword(card, Keyword.SUPPORT_AREA)); + assertEquals(2, card.getBlueprint().getTwilightCost()); + //assertEquals(, card.getBlueprint().getStrength()); + //assertEquals(, card.getBlueprint().getVitality()); + //assertEquals(, card.getBlueprint().getResistance()); + //assertEquals(Signet., card.getBlueprint().getSignet()); + //assertEquals(, card.getBlueprint().getSiteNumber()); // Change this to getAllyHomeSiteNumbers for allies + + } + + //@Test + public void FortressNeverFallenTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl 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/set05/Card_05_007_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_007_ErrataTests.java new file mode 100644 index 000000000..c42d1cf83 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_007_ErrataTests.java @@ -0,0 +1,84 @@ +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_007_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "55_7"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void GimliStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 5 + * Name: Gimli, Skilled Defender + * Unique: True + * Side: Free Peoples + * Culture: Dwarven + * Twilight Cost: 2 + * Type: Companion + * Subtype: Dwarf + * Strength: 6 + * Vitality: 3 + * Resistance: 6 + * Signet: Theoden + * Game Text: Damage +1. Valiant.
Each time Gimli wins a skirmish, you may wound a minion assigned to skirmish an unbound companion. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Gimli", card.getBlueprint().getTitle()); + assertEquals("Skilled Defender", card.getBlueprint().getSubtitle()); + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.DWARVEN, card.getBlueprint().getCulture()); + assertEquals(CardType.COMPANION, card.getBlueprint().getCardType()); + assertEquals(Race.DWARF, card.getBlueprint().getRace()); + assertTrue(scn.hasKeyword(card, Keyword.DAMAGE)); + assertEquals(1, scn.GetKeywordCount(card, Keyword.DAMAGE)); + assertTrue(scn.hasKeyword(card, Keyword.VALIANT)); + assertEquals(2, card.getBlueprint().getTwilightCost()); + assertEquals(6, card.getBlueprint().getStrength()); + assertEquals(3, card.getBlueprint().getVitality()); + assertEquals(6, card.getBlueprint().getResistance()); + assertEquals(Signet.THEODEN, card.getBlueprint().getSignet()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void GimliTest1() 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/set05/Card_05_121_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_121_ErrataTests.java new file mode 100644 index 000000000..e92f7d8e1 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set05/Card_05_121_ErrataTests.java @@ -0,0 +1,83 @@ +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_121_ErrataTests +{ + + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "55_121"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } + + @Test + public void LegolasStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 5 + * Name: Legolas, Archer of Mirkwood + * Unique: True + * Side: Free Peoples + * Culture: Elven + * Twilight Cost: 2 + * Type: Companion + * Subtype: Elf + * Strength: 6 + * Vitality: 3 + * Resistance: 6 + * Signet: Theoden + * Game Text: Archer. Valiant.
Each time Legolas wins a skirmish, you may heal a Dwarf companion or another Elf companion. + */ + + var scn = GetScenario(); + + var card = scn.GetFreepsCard("card"); + + assertEquals("Legolas", card.getBlueprint().getTitle()); + assertEquals("Archer of Mirkwood", card.getBlueprint().getSubtitle()); + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ELVEN, card.getBlueprint().getCulture()); + assertEquals(CardType.COMPANION, card.getBlueprint().getCardType()); + assertEquals(Race.ELF, card.getBlueprint().getRace()); + assertTrue(scn.hasKeyword(card, Keyword.ARCHER)); + assertTrue(scn.hasKeyword(card, Keyword.VALIANT)); + assertEquals(2, card.getBlueprint().getTwilightCost()); + assertEquals(6, card.getBlueprint().getStrength()); + assertEquals(3, card.getBlueprint().getVitality()); + assertEquals(6, card.getBlueprint().getResistance()); + assertEquals(Signet.THEODEN, card.getBlueprint().getSignet()); + } + + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void LegolasTest1() 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/set10/Card_10_008_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_008_ErrataTests.java index bb567ddf5..72f6f7082 100644 --- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_008_ErrataTests.java +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_008_ErrataTests.java @@ -9,112 +9,72 @@ import org.junit.Test; import java.util.HashMap; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; public class Card_10_008_ErrataTests { - protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { - return new GenericCardTestHelper( - new HashMap<>() {{ - put("cirdan", "60_8"); - put("event1", "1_37"); - put("event2", "1_37"); - put("event3", "1_37"); - put("event4", "1_37"); - put("nazgul", "1_233"); - }} - ); - } + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() + {{ + put("card", "60_8"); + // put other cards in here as needed for the test case + }}, + GenericCardTestHelper.FellowshipSites, + GenericCardTestHelper.FOTRFrodo, + GenericCardTestHelper.RulingRing + ); + } - @Test - public void CirdanStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + @Test + public void CirdanStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { - /** - * Set: 10E - * Title: Cirdan - * Subtitle: The Shipwright - * Side: Free Peoples - * Culture: Elven - * Twilight Cost: 4 - * Type: Companion - * Race: Elf - * Strength: 7 - * Vitality: 4 - * Resistance: 6 - * Signet: None - * Errata Game Text: To play, spot 2 Elves. - * Skirmish: Exert Cirdan to make a minion he is skirmishing strength -1 for each [ELVEN] event in your discard pile. - * If that minion is now strength 6 or less, remove 3 [ELVEN] events in your discard pile from the game. - */ + /** + * Set: 10 + * Name: Cirdan, The Shipwright + * Unique: True + * Side: Free Peoples + * Culture: Elven + * Twilight Cost: 4 + * Type: Companion + * Subtype: Elf + * Strength: 7 + * Vitality: 4 + * Resistance: 6 + * Game Text: To play, spot 2 Elves. + * Skirmish: Exert Cirdan to make a minion he is skirmishing strength -1 for each [elven] event in your discard pile. If that minion is overwhelmed, remove half of the [elven] events in your discard pile from the game (rounded down). + */ - //Pre-game setup - GenericCardTestHelper scn = GetScenario(); + var scn = GetScenario(); - PhysicalCardImpl cirdan = scn.GetFreepsCard("cirdan"); + var card = scn.GetFreepsCard("card"); - assertTrue(cirdan.getBlueprint().isUnique()); - assertEquals(4, cirdan.getBlueprint().getTwilightCost()); - assertEquals(CardType.COMPANION, cirdan.getBlueprint().getCardType()); - assertEquals(Culture.ELVEN, cirdan.getBlueprint().getCulture()); - assertEquals(Race.ELF, cirdan.getBlueprint().getRace()); - assertEquals(7, cirdan.getBlueprint().getStrength()); - assertEquals(4, cirdan.getBlueprint().getVitality()); - assertEquals(6, cirdan.getBlueprint().getResistance()); - } + assertEquals("Cirdan", card.getBlueprint().getTitle()); + assertEquals("The Shipwright", card.getBlueprint().getSubtitle()); + assertTrue(card.getBlueprint().isUnique()); + assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide()); + assertEquals(Culture.ELVEN, card.getBlueprint().getCulture()); + assertEquals(CardType.COMPANION, card.getBlueprint().getCardType()); + assertEquals(Race.ELF, card.getBlueprint().getRace()); + assertEquals(4, card.getBlueprint().getTwilightCost()); + assertEquals(7, card.getBlueprint().getStrength()); + assertEquals(4, card.getBlueprint().getVitality()); + assertEquals(6, card.getBlueprint().getResistance()); + } - @Test - public void ReducesMinionStrengthAndRemovesEvents() throws DecisionResultInvalidException, CardNotFoundException { - //Pre-game setup - GenericCardTestHelper scn = GetScenario(); + // Uncomment any @Test markers below once this is ready to be used + //@Test + public void CirdanTest1() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + var scn = GetScenario(); - PhysicalCardImpl cirdan = scn.GetFreepsCard("cirdan"); - PhysicalCardImpl nazgul = scn.GetShadowCard("nazgul"); - - scn.ShadowMoveCharToTable(cirdan); - scn.FreepsMoveCardToDiscard("event1"); - scn.FreepsMoveCardToDiscard("event2"); - scn.FreepsMoveCardToDiscard("event3"); - scn.FreepsMoveCardToDiscard("event4"); - - scn.ShadowMoveCharToTable(nazgul); - - scn.StartGame(); - - scn.SkipToPhase(Phase.ASSIGNMENT); - scn.PassCurrentPhaseActions(); - scn.FreepsAssignToMinions(cirdan, nazgul); - - //this nazgul should be strength 10, -4 = 6, enough to trigger Cirdan's secondary effect - scn.FreepsResolveSkirmish(cirdan); - assertTrue(scn.FreepsActionAvailable("Use Cirdan")); - scn.FreepsUseCardAction(cirdan); - - assertTrue(scn.FreepsDecisionAvailable("Choose card from discard")); - scn.FreepsChoose(scn.FreepsGetCardChoices().get(0), scn.FreepsGetCardChoices().get(1), scn.FreepsGetCardChoices().get(2)); - - assertEquals(6, scn.GetStrength(nazgul)); - scn.ShadowPassCurrentPhaseAction(); - scn.FreepsPassCurrentPhaseAction(); - - assertEquals(1, scn.GetWoundsOn(cirdan)); - assertEquals(1, scn.GetWoundsOn(nazgul)); - - //fierce skirmish - scn.PassCurrentPhaseActions(); - scn.FreepsAssignToMinions(cirdan, nazgul); - scn.FreepsResolveSkirmish(cirdan); - - //There is now only one elven event in the discard pile, so cirdan's ability should only make - // the nazgul 10 - 1 = 9, not triggering the removal clause. - assertTrue(scn.FreepsActionAvailable("Use Cirdan")); - scn.FreepsUseCardAction(cirdan); - - assertEquals(9, scn.GetStrength(nazgul)); - assertFalse(scn.FreepsDecisionAvailable("Choose card from discard")); - } + 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/set10/Card_10_008_ErrataTests.java.1.old b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_008_ErrataTests.java.1.old new file mode 100644 index 000000000..bb567ddf5 --- /dev/null +++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_008_ErrataTests.java.1.old @@ -0,0 +1,120 @@ +package com.gempukku.lotro.cards.unofficial.pc.errata.set10; + +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.assertFalse; +import static org.junit.Assert.assertTrue; + +public class Card_10_008_ErrataTests +{ + protected GenericCardTestHelper GetScenario() throws CardNotFoundException, DecisionResultInvalidException { + return new GenericCardTestHelper( + new HashMap<>() {{ + put("cirdan", "60_8"); + put("event1", "1_37"); + put("event2", "1_37"); + put("event3", "1_37"); + put("event4", "1_37"); + + put("nazgul", "1_233"); + }} + ); + } + + @Test + public void CirdanStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException { + + /** + * Set: 10E + * Title: Cirdan + * Subtitle: The Shipwright + * Side: Free Peoples + * Culture: Elven + * Twilight Cost: 4 + * Type: Companion + * Race: Elf + * Strength: 7 + * Vitality: 4 + * Resistance: 6 + * Signet: None + * Errata Game Text: To play, spot 2 Elves. + * Skirmish: Exert Cirdan to make a minion he is skirmishing strength -1 for each [ELVEN] event in your discard pile. + * If that minion is now strength 6 or less, remove 3 [ELVEN] events in your discard pile from the game. + */ + + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl cirdan = scn.GetFreepsCard("cirdan"); + + assertTrue(cirdan.getBlueprint().isUnique()); + assertEquals(4, cirdan.getBlueprint().getTwilightCost()); + assertEquals(CardType.COMPANION, cirdan.getBlueprint().getCardType()); + assertEquals(Culture.ELVEN, cirdan.getBlueprint().getCulture()); + assertEquals(Race.ELF, cirdan.getBlueprint().getRace()); + assertEquals(7, cirdan.getBlueprint().getStrength()); + assertEquals(4, cirdan.getBlueprint().getVitality()); + assertEquals(6, cirdan.getBlueprint().getResistance()); + } + + @Test + public void ReducesMinionStrengthAndRemovesEvents() throws DecisionResultInvalidException, CardNotFoundException { + //Pre-game setup + GenericCardTestHelper scn = GetScenario(); + + PhysicalCardImpl cirdan = scn.GetFreepsCard("cirdan"); + PhysicalCardImpl nazgul = scn.GetShadowCard("nazgul"); + + scn.ShadowMoveCharToTable(cirdan); + scn.FreepsMoveCardToDiscard("event1"); + scn.FreepsMoveCardToDiscard("event2"); + scn.FreepsMoveCardToDiscard("event3"); + scn.FreepsMoveCardToDiscard("event4"); + + scn.ShadowMoveCharToTable(nazgul); + + scn.StartGame(); + + scn.SkipToPhase(Phase.ASSIGNMENT); + scn.PassCurrentPhaseActions(); + scn.FreepsAssignToMinions(cirdan, nazgul); + + //this nazgul should be strength 10, -4 = 6, enough to trigger Cirdan's secondary effect + scn.FreepsResolveSkirmish(cirdan); + assertTrue(scn.FreepsActionAvailable("Use Cirdan")); + scn.FreepsUseCardAction(cirdan); + + assertTrue(scn.FreepsDecisionAvailable("Choose card from discard")); + scn.FreepsChoose(scn.FreepsGetCardChoices().get(0), scn.FreepsGetCardChoices().get(1), scn.FreepsGetCardChoices().get(2)); + + assertEquals(6, scn.GetStrength(nazgul)); + scn.ShadowPassCurrentPhaseAction(); + scn.FreepsPassCurrentPhaseAction(); + + assertEquals(1, scn.GetWoundsOn(cirdan)); + assertEquals(1, scn.GetWoundsOn(nazgul)); + + //fierce skirmish + scn.PassCurrentPhaseActions(); + scn.FreepsAssignToMinions(cirdan, nazgul); + scn.FreepsResolveSkirmish(cirdan); + + //There is now only one elven event in the discard pile, so cirdan's ability should only make + // the nazgul 10 - 1 = 9, not triggering the removal clause. + assertTrue(scn.FreepsActionAvailable("Use Cirdan")); + scn.FreepsUseCardAction(cirdan); + + assertEquals(9, scn.GetStrength(nazgul)); + assertFalse(scn.FreepsDecisionAvailable("Choose card from discard")); + } + + +} diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_011_ErrataTests.java.old b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_011_ErrataTests.java.1.old similarity index 100% rename from gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_011_ErrataTests.java.old rename to gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_011_ErrataTests.java.1.old