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