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 555d9539f..6c980a0d4 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
@@ -962,7 +962,7 @@ var PCCards = {
// Saelbeth, Elven Councilor (3U25) [Errata]
'53_25' : 'https://i.lotrtcgpc.net/errata/LOTR-EN03E025.2_card.jpg',
// Gandalf, Lathspell (V213) [Errata]
- '102_13' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2E013.1_card.jpg',
+ //'102_13' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2E013.1_card.jpg',
// Now for Wrath (V251) [Errata]
'102_51' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2E051.1_card.jpg',
// Demands of the Sackville-Bagginses (2C40) [Errata]
@@ -972,7 +972,7 @@ var PCCards = {
// Rivendell Gateway (V1U59) [Errata]
'101_59' : 'https://i.lotrtcgpc.net/sets/vset1/LOTR-ENV1E059.1_card.jpg',
// Gandalf's Staff, Old Man's Crutch (V2_77)
- '102_77' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S077.0_card.jpg',
+ //'102_77' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S077.0_card.jpg',
// Goblin Archer (1R172) [Errata]
'51_172' : 'https://i.lotrtcgpc.net/errata/LOTR-EN01E172.1_card.jpg',
// Shadowfax, Greatest of the Mearas (17R24) [Errata]
@@ -987,6 +987,20 @@ var PCCards = {
// FA Sam, Great Elf Warrior
'10_129': 'https://i.lotrtcgpc.net/promos/LOTR-EN10U122.0_card.jpg',
// July 2025 WC Circuit: FA Mumak Commander, GATS
- '15_211': 'https://i.lotrtcgpc.net/promos/LOTR-EN15U086.0_card.jpg'
+ '15_211': 'https://i.lotrtcgpc.net/promos/LOTR-EN15U086.0_card.jpg',
+
+ // 2025 Pre-WC Errata
+ // Foul Creation (1U44) [Errata]
+ '51_44' : 'https://i.lotrtcgpc.net/errata/LOTR-EN01E044.1_card.jpg',
+ // Denethor, Lord of Minas Tirith (10R28) [Errata]
+ '60_28' : 'https://i.lotrtcgpc.net/errata/LOTR-EN10E028.2_card.jpg',
+ // Merry, Horticulturalist (2C104) [Errata]
+ '52_104' : 'https://i.lotrtcgpc.net/errata/LOTR-EN02E104.2_card.jpg',
+ // Uruk Raider (3C74) [Errata]
+ '53_74' : 'https://i.lotrtcgpc.net/errata/LOTR-EN03E074.2_card.jpg',
+ // Gandalf, Lathspell (V213) [Errata]
+ '102_13' : 'https://i.lotrtcgpc.net/sets/V2/LOTR-ENV2E013.2_card.jpg',
+ // Gandalf's Staff, Old Man's Crutch (V277) [Errata]
+ '102_77' : 'https://i.lotrtcgpc.net/sets/V2/LOTR-ENV2E077.1_card.jpg'
}
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Rohan.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Rohan.hjson
index 11ccd78ff..e330253d0 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Rohan.hjson
+++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/official/set12/set12-Rohan.hjson
@@ -407,13 +407,33 @@
culture: Rohan
twilight: 0
type: Event
- timewords: Regroup
+ timewords: [
+ Maneuver
+ Regroup
+ ]
effects: [
{
type: event
- requires: {
- type: canSpot
- filter: culture(rohan),man
+ cost: {
+ type: If
+ check: {
+ type: Phase
+ phase: Maneuver
+ }
+ true: [
+ {
+ type: Exert
+ select: choose(Culture(Rohan), Man, MinResistance(3), CanExert)
+ }
+ {
+ type: Spot
+ filter: culture(Rohan),Man
+ }
+ ]
+ false: {
+ type: Spot
+ filter: culture(Rohan),Man
+ }
}
effect: [
{
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 16151748d..75415b510 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
@@ -290,6 +290,65 @@
}
}
}
+
+ 51_44: {
+ cardInfo: {
+ //id: 51_44.1
+ parent: 1_44
+ variant: ERRATA
+ variantPath: errata/pc
+ revision: 1
+ image: errata/LOTR-EN01E044.1_card.jpg
+ collInfo: 1U44
+ rarity: U
+ }
+ title: Foul Creation
+ unique: false
+ side: Free Peoples
+ culture: Elven
+ twilight: 1
+ type: Event
+ timewords: Fellowship
+ effects: {
+ type: event
+ cost: {
+ type: exert
+ select: choose(elf)
+ }
+ effect: [
+ {
+ type: revealHand
+ hand: shadowPlayer
+ memorize: revealedCards
+ }
+ {
+ type: If
+ check: {
+ type: MemoryMatches
+ memory: revealedCards
+ filter: culture(isengard),minion
+ }
+ true: {
+ type: optional
+ text: Would you like to draw 2 cards?
+ effect: {
+ type: drawCards
+ count: 2
+ }
+ }
+ }
+ ]
+ }
+ gametext: Fellowship: Exert an Elf to reveal an opponent's hand. You may draw 2 cards if an [isengard] minion was revealed.
+ lore: "Saruman's Uruk-hai mirrored the singular focus of their master, viewing with contempt and disgust all they encountered."
+ promotext: ""
+ alts: {
+ promos: {
+ }
+ errata: {
+ }
+ }
+ }
51_45: {
cardInfo: {
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set02/set02-Shire-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set02/set02-Shire-errata.hjson
index f6531b7be..0519728d3 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set02/set02-Shire-errata.hjson
+++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set02/set02-Shire-errata.hjson
@@ -48,14 +48,64 @@
}
}
+ # 52_104: {
+ # cardInfo: {
+ # //id: 2_104.1
+ # parent: 2_104
+ # variant: ERRATA
+ # variantPath: errata/pc
+ # revision: 1
+ # image: errata/LOTR-EN02E104.1_card.jpg
+ # collInfo: 2C104
+ # rarity: C
+ # }
+ # title: Merry
+ # subtitle: Horticulturalist
+ # unique: true
+ # side: Free Peoples
+ # culture: Shire
+ # twilight: 1
+ # type: Companion
+ # race: Hobbit
+ # strength: 3
+ # vitality: 4
+ # signet: Gandalf
+ # resistance: 6
+ # effects: {
+ # type: activated
+ # limitPerTurn: 1
+ # phase: fellowship
+ # cost: {
+ # type: exert
+ # select: self
+ # }
+ # effect: {
+ # type: PutCardsFromDeckIntoHand
+ # select: choose(culture(shire),ally)
+ # reveal: true
+ # showAll: true
+ # shuffle: true
+ # }
+ # }
+ # gametext: Fellowship: Exert Merry to take a [shire] ally into hand from your draw deck (limit once per turn).
+ # lore: "'Ow... I think I've broken something.'"
+ # promotext: ""
+ # alts: {
+ # promos: {
+ # }
+ # errata: {
+ # }
+ # }
+ # }
+
52_104: {
cardInfo: {
- //id: 2_104.1
+ //id: 52_104.2
parent: 2_104
variant: ERRATA
variantPath: errata/pc
- revision: 1
- image: errata/LOTR-EN02E104.1_card.jpg
+ revision: 2
+ image: errata/LOTR-EN02E104.2_card.jpg
collInfo: 2C104
rarity: C
}
@@ -81,13 +131,13 @@
}
effect: {
type: PutCardsFromDeckIntoHand
- select: choose(culture(shire),ally)
+ select: choose(Hobbit,ally)
reveal: true
showAll: true
shuffle: true
}
}
- gametext: Fellowship: Exert Merry to take a [shire] ally into hand from your draw deck (limit once per turn).
+ gametext: Fellowship: Exert Merry to take a Hobbit ally into hand from your draw deck (limit once per turn).
lore: "'Ow... I think I've broken something.'"
promotext: ""
alts: {
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set03/set03-Isengard-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set03/set03-Isengard-errata.hjson
index df0a33c51..7b37358b6 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set03/set03-Isengard-errata.hjson
+++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set03/set03-Isengard-errata.hjson
@@ -594,14 +594,97 @@
}
}
+ # 53_74: {
+ # cardInfo: {
+ # //id: 53_74.1
+ # parent: 3_74
+ # variant: ERRATA
+ # variantPath: errata/pc
+ # revision: 1
+ # image: errata/LOTR-EN03E074.1_card.jpg
+ # collInfo: 3C74
+ # rarity: C
+ # }
+ # title: Uruk Raider
+ # unique: false
+ # side: Shadow
+ # culture: Isengard
+ # twilight: 2
+ # type: Minion
+ # race: Uruk-hai
+ # strength: 6
+ # vitality: 2
+ # site: 5
+ # keywords: [
+ # Tracker
+ # Damage+1
+ # ]
+ # effects: [
+ # {
+ # type: modifier
+ # modifier: {
+ # type: modifyStrength
+ # requires: {
+ # type: hasCardInDeadPile
+ # filter: ally
+ # }
+ # filter: self
+ # amount: 3
+ # }
+ # }
+ # {
+ # type: modifier
+ # modifier: {
+ # type: addKeyword
+ # requires: {
+ # type: hasCardInDeadPile
+ # filter: ally
+ # }
+ # filter: self
+ # keyword: fierce
+ # }
+ # }
+ # {
+ # type: Trigger
+ # optional: true
+ # trigger: {
+ # type: Exerted
+ # filter: ally
+ # memorize: exertedAlly
+ # }
+ # requires: {
+ # type: CanSpot
+ # filter: culture(isengard),another
+ # }
+ # cost: {
+ # type: Exert
+ # select: self
+ # }
+ # effect: {
+ # type: Wound
+ # select: memory(exertedAlly)
+ # }
+ # }
+ # ]
+ # gametext: Tracker. Damage +1.
While an ally is in the dead pile, this minion is strength +3 and fierce.
Each time an ally exerts, you may spot another [isengard] card and exert this minion to wound that ally.
+ # lore: "'There is no safety where Saruman's emblem is shown.'"
+ # promotext: ""
+ # alts: {
+ # promos: {
+ # }
+ # errata: {
+ # }
+ # }
+ # }
+
53_74: {
cardInfo: {
- //id: 53_74.1
+ //id: 53_74.2
parent: 3_74
variant: ERRATA
variantPath: errata/pc
- revision: 1
- image: errata/LOTR-EN03E074.1_card.jpg
+ revision: 2
+ image: errata/LOTR-EN03E074.2_card.jpg
collInfo: 3C74
rarity: C
}
@@ -615,10 +698,7 @@
strength: 6
vitality: 2
site: 5
- keywords: [
- Tracker
- Damage+1
- ]
+ keywords: Tracker
effects: [
{
type: modifier
@@ -641,7 +721,7 @@
filter: ally
}
filter: self
- keyword: fierce
+ keyword: damage+1
}
}
{
@@ -666,7 +746,7 @@
}
}
]
- gametext: Tracker. Damage +1.
While an ally is in the dead pile, this minion is strength +3 and fierce.
Each time an ally exerts, you may spot another [isengard] card and exert this minion to wound that ally.
+ gametext: Tracker.
While an ally is in the dead pile, this minion is strength +3 and damage +1.
Each time an ally exerts, you may spot another [isengard] card and exert this minion to wound that ally.
lore: "'There is no safety where Saruman's emblem is shown.'"
promotext: ""
alts: {
@@ -676,4 +756,5 @@
}
}
}
+
}
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Gondor-errata.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Gondor-errata.hjson
index d69ee3db3..f63cddb48 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Gondor-errata.hjson
+++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/errata/set10/set10-Gondor-errata.hjson
@@ -1,9 +1,85 @@
{
+ # 60_28: {
+ # cardInfo: {
+ # //id: 60_28.1
+ # revision: 1
+ # image: errata/LOTR-EN10E028.1_card.jpg
+ # collInfo: 10R28
+ # rarity: R
+ # }
+ # title: Denethor
+ # subtitle: Lord of Minas Tirith
+ # unique: true
+ # side: Free Peoples
+ # culture: Gondor
+ # twilight: 2
+ # type: Companion
+ # race: Man
+ # strength: 5
+ # vitality: 3
+ # signet: Aragorn
+ # resistance: 6
+ # effects: [
+ # {
+ # type: toPlay
+ # requires: {
+ # type: canSpot
+ # filter: culture(gondor),man
+ # count: 2
+ # }
+ # }
+ # {
+ # type: activated
+ # phase: fellowship
+ # requires: {
+ # type: location
+ # filter: sanctuary
+ # }
+ # cost: {
+ # type: exert
+ # select: self
+ # }
+ # effect: [
+ # {
+ # type: putCardsFromDeckIntoHand
+ # select: choose(culture(gondor),or(condition, item))
+ # reveal: true
+ # shuffle: true
+ # showAll: true
+ # }
+ # {
+ # type: optional
+ # player: shadow
+ # text: Would you like to draw a card?
+ # effect: {
+ # type: drawCards
+ # player: shadow
+ # count: 1
+ # }
+ # }
+ # ]
+ # }
+ # ]
+ # gametext: To play, spot 2 [gondor] Men.
Fellowship: If at a sanctuary, exert Denethor to take a [gondor] condition or item into hand from your draw deck. Choose an opponent who may draw 2 cards.
+ # lore: "There Denethor sat in a grey gloom, like an old patient spider...."
+ # promotext: ""
+ # alts: {
+ # promos: {
+ # }
+ # errata: {
+ # }
+ # }
+ # }
+
+
60_28: {
cardInfo: {
- //id: 60_28.1
- revision: 1
- image: errata/LOTR-EN10E028.1_card.jpg
+ //id: 60_28.2
+ parent: 10_28
+ variant: ERRATA
+ variantPath: errata/pc
+ revision: 2
+ image: errata/LOTR-EN10E028.2_card.jpg
collInfo: 10R28
rarity: R
}
@@ -15,7 +91,7 @@
twilight: 2
type: Companion
race: Man
- strength: 5
+ strength: 8
vitality: 3
signet: Aragorn
resistance: 6
@@ -60,7 +136,7 @@
]
}
]
- gametext: To play, spot 2 [gondor] Men.
Fellowship: If at a sanctuary, exert Denethor to take a [gondor] condition or item into hand from your draw deck. Choose an opponent who may draw 2 cards.
+ gametext: To play, spot 2 [gondor] Men.
Fellowship: If at a sanctuary, exert Denethor to take a [gondor] item or condition into hand from your draw deck. Choose an opponent who may draw a card.
lore: "There Denethor sat in a grey gloom, like an old patient spider...."
promotext: ""
alts: {
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Gandalf.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Gandalf.hjson
index 642bcaf28..48c375643 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Gandalf.hjson
+++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/cards/unofficial/pc/setV02/V2-Gandalf.hjson
@@ -77,11 +77,88 @@
# }
# }
+ # 102_13: {
+ # cardInfo: {
+ # //id: 102_13
+ # image: sets/V2/LOTR-ENV2S013.1_card.jpg
+ # collInfo: V2_13
+ # rarity: _
+ # }
+ # title: Gandalf
+ # subtitle: Lathspell
+ # unique: true
+ # side: Free Peoples
+ # culture: Gandalf
+ # twilight: 4
+ # type: Companion
+ # race: Wizard
+ # strength: 7
+ # vitality: 4
+ # signet: Theoden
+ # resistance: 6
+ # effects: [
+ # {
+ # type: Modifier
+ # modifier: {
+ # type: AddKeyword
+ # keyword: valiant
+ # filter: companion,mounted
+ # }
+ # }
+ # {
+ # type: Trigger
+ # optional: true
+ # trigger: {
+ # type: UsesSpecialAbility
+ # filter: minion
+ # memorize: activatedMinion
+ # }
+ # requires: {
+ # type: not
+ # requires: {
+ # type: phase
+ # phase: skirmish
+ # }
+ # }
+ # cost: [
+ # {
+ # type: Spot
+ # count: 3
+ # filter: valiant, companion
+ # }
+ # {
+ # type: Exert
+ # select: self
+ # times: 1
+ # }
+ # ]
+ # effect: [
+ # {
+ # type: cancelSpecialAbility
+ # }
+ # ]
+ # }
+ # ]
+ # gametext: Each mounted companion gains valiant.
Response: If a minion's special ability is used (except during a skirmish), spot 3 valiant companions and exert Gandalf to prevent that.
+ # lore: "'No counsel have I to give to those that despair. Yet counsel I could give, and words I could speak to you.'"
+ # promotext: ""
+ # alts: {
+ # promos: {
+ # }
+ # errata: {
+ # }
+ # }
+ # }
+
102_13: {
cardInfo: {
- //id: 102_13
- image: sets/V2/LOTR-ENV2S013.0_card.jpg
- collInfo: V2_13
+ //id: 102_13.2
+ parent: 102_13
+ variant: ERRATA
+ variantPath: errata/pc
+ revision: 2
+ image: sets/V2/LOTR-ENV2E013.2_card.jpg
+ collInfo: V213
rarity: _
}
title: Gandalf
@@ -129,17 +206,22 @@
{
type: Exert
select: self
- times: 1
+ times: 2
}
]
effect: [
{
type: cancelSpecialAbility
}
+ {
+ type: Exert
+ select: memory(activatedMinion)
+ times: 1
+ }
]
}
]
- gametext: Each mounted companion gains valiant.
Response: If a minion's special ability is used (except during a skirmish), spot 3 valiant companions and exert Gandalf to prevent that.
+ gametext: Each mounted companion gains valiant.
Response: If a minion's special ability is used, spot 3 valiant companions and exert Gandalf twice to prevent that and exert that minion.
lore: "'No counsel have I to give to those that despair. Yet counsel I could give, and words I could speak to you.'"
promotext: ""
alts: {
@@ -149,7 +231,7 @@
}
}
}
-
+
102_14: {
cardInfo: {
//id: 102_14
@@ -199,14 +281,81 @@
}
}
+ # 102_77: {
+ # cardInfo: {
+ # //id: 102_77.0
+ # parent: 102_77
+ # variant: ERRATA
+ # variantPath: errata/pc
+ # revision: 0
+ # image: sets/V2/LOTR-ENV2S077.0_card.jpg
+ # collInfo: V277
+ # rarity: _
+ # }
+ # title: Gandalf's Staff
+ # subtitle: Old Man's Crutch
+ # unique: true
+ # side: Free Peoples
+ # culture: Gandalf
+ # twilight: 2
+ # type: Artifact
+ # vitality: 1
+ # itemclass: Staff
+ # target: title(Gandalf)
+ # effects: [
+ # {
+ # type: Trigger
+ # optional: false
+ # trigger: {
+ # type: ConstantlyCheck
+ # requires: [
+ # {
+ # type: canSpot
+ # filter: weapon,attachedTo(bearer)
+ # }
+ # ]
+ # }
+ # effect: {
+ # type: discard
+ # select: all(weapon,attachedTo(bearer))
+ # }
+ # }
+ # {
+ # type: Trigger
+ # optional: true
+ # limitPerPhase: 1
+ # trigger: {
+ # type: Exerted
+ # filter: bearer
+ # source: side(freeps)
+ # }
+ # effect: [
+ # {
+ # type: Wound
+ # select: choose(minion)
+ # }
+ # ]
+ # }
+ # ]
+ # gametext: Bearer must be Gandalf.
Discard any weapon he bears.
Each time Gandalf is exerted by a Free Peoples card, you may wound a minion (limit once per phase).
+ # lore: "'The staff in the hand of a wizard may be more than a prop for age.'"
+ # promotext: ""
+ # alts: {
+ # promos: {
+ # }
+ # errata: {
+ # }
+ # }
+ # }
+
102_77: {
cardInfo: {
- //id: 102_77.0
+ //id: 102_77.1
parent: 102_77
variant: ERRATA
variantPath: errata/pc
- revision: 0
- image: sets/V2/LOTR-ENV2S077.0_card.jpg
+ revision: 1
+ image: sets/V2/LOTR-ENV2E077.1_card.jpg
collInfo: V277
rarity: _
}
@@ -241,7 +390,7 @@
{
type: Trigger
optional: true
- limitPerPhase: 1
+ limitPerTurn: 1
trigger: {
type: Exerted
filter: bearer
@@ -249,13 +398,13 @@
}
effect: [
{
- type: Wound
- select: choose(minion)
+ type: Heal
+ select: bearer
}
]
}
]
- gametext: Bearer must be Gandalf.
Discard any weapon he bears.
Each time Gandalf is exerted by a Free Peoples card, you may wound a minion (limit once per phase).
+ gametext: Bearer must be Gandalf.
Discard any weapon he bears.
Response: If Gandalf is exerted by a Free Peoples card, heal him (limit once per turn).
lore: "'The staff in the hand of a wizard may be more than a prop for age.'"
promotext: ""
alts: {
diff --git a/gemp-lotr/gemp-lotr-cards/src/main/resources/lotrFormats.hjson b/gemp-lotr/gemp-lotr-cards/src/main/resources/lotrFormats.hjson
index c537540a5..c602c92f0 100644
--- a/gemp-lotr/gemp-lotr-cards/src/main/resources/lotrFormats.hjson
+++ b/gemp-lotr/gemp-lotr-cards/src/main/resources/lotrFormats.hjson
@@ -167,11 +167,11 @@
hall: false
# Fill this up with the current batch of errata for it to show up on the playtest server.
valid: [
- "51_172",
- "52_40",
- "53_14", "53_20", "53_25", "53_74", "53_85",
- "101_59",
- "102_13", "102_51", "102_77"
+ "51_44",
+ "52_104",
+ "53_74",
+ "60_28",
+ "102_13", "102_77"
]
sets: [
100
diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_044_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_044_ErrataTests.java
new file mode 100644
index 000000000..776eea172
--- /dev/null
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set01/Card_01_044_ErrataTests.java
@@ -0,0 +1,85 @@
+package com.gempukku.lotro.cards.unofficial.pc.errata.set01;
+
+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.framework.VirtualTableScenario;
+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_01_044_ErrataTests
+{
+
+ protected VirtualTableScenario GetScenario() throws CardNotFoundException, DecisionResultInvalidException {
+ return new VirtualTableScenario(
+ new HashMap<>()
+ {{
+ put("card", "51_44");
+ // put other cards in here as needed for the test case
+ }},
+ VirtualTableScenario.FellowshipSites,
+ VirtualTableScenario.FOTRFrodo,
+ VirtualTableScenario.RulingRing
+ );
+ }
+
+ @Test
+ public void FoulCreationStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException {
+
+ /**
+ * Set: 1
+ * Name: Foul Creation
+ * Unique: false
+ * Side: Free Peoples
+ * Culture: Elven
+ * Twilight Cost: 1
+ * Type: Event
+ * Subtype: Fellowship
+ * Game Text: Fellowship: Exert an Elf to reveal an opponent's hand. If an [isengard] minion was revealed, you may draw 2 cards.
+ */
+
+ var scn = GetScenario();
+
+ var card = scn.GetFreepsCard("card");
+
+ assertEquals("Foul Creation", card.getBlueprint().getTitle());
+ assertNull(card.getBlueprint().getSubtitle());
+ assertFalse(card.getBlueprint().isUnique());
+ assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide());
+ assertEquals(Culture.ELVEN, 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 FoulCreationTest1() throws DecisionResultInvalidException, CardNotFoundException {
+ //Pre-game setup
+ var scn = GetScenario();
+
+ var card = scn.GetFreepsCard("card");
+ scn.MoveCardsToHand(card);
+ //scn.MoveCompanionsToTable(card);
+ scn.MoveCardsToSupportArea(card);
+ scn.MoveCardsToDiscard(card);
+ scn.MoveCardsToTopOfDeck(card);
+
+ //var card = scn.GetShadowCard("card");
+ scn.MoveCardsToHand(card);
+ scn.MoveMinionsToTable(card);
+ scn.MoveCardsToSupportArea(card);
+ scn.MoveCardsToDiscard(card);
+ scn.MoveCardsToTopOfDeck(card);
+
+ scn.StartGame();
+
+ assertFalse(true);
+ }
+}
diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_104_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_104_ErrataTests.java
index 2cdc6d633..99b56ed8a 100644
--- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_104_ErrataTests.java
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set02/Card_02_104_ErrataTests.java
@@ -1,9 +1,8 @@
package com.gempukku.lotro.cards.unofficial.pc.errata.set02;
-import com.gempukku.lotro.framework.VirtualTableScenario;
import com.gempukku.lotro.common.*;
+import com.gempukku.lotro.framework.VirtualTableScenario;
import com.gempukku.lotro.game.CardNotFoundException;
-import com.gempukku.lotro.game.PhysicalCardImpl;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
@@ -33,7 +32,7 @@ public class Card_02_104_ErrataTests
/**
* Set: 2
* Name: Merry, Horticulturalist
- * Unique: True
+ * Unique: true
* Side: Free Peoples
* Culture: Shire
* Twilight Cost: 1
@@ -43,7 +42,7 @@ public class Card_02_104_ErrataTests
* Vitality: 4
* Resistance: 6
* Signet: Gandalf
- * Game Text: Fellowship: Exert Merry to take a [shire] ally into hand from your draw deck (limit once per turn).
+ * Game Text: Fellowship: Exert Merry to take a Hobbit ally into hand from your draw deck (limit once per turn).
*/
var scn = GetScenario();
@@ -72,10 +71,20 @@ public class Card_02_104_ErrataTests
var card = scn.GetFreepsCard("card");
scn.MoveCardsToHand(card);
+ //scn.MoveCompanionsToTable(card);
+ scn.MoveCardsToSupportArea(card);
+ scn.MoveCardsToDiscard(card);
+ scn.MoveCardsToTopOfDeck(card);
+
+ //var card = scn.GetShadowCard("card");
+ scn.MoveCardsToHand(card);
+ scn.MoveMinionsToTable(card);
+ scn.MoveCardsToSupportArea(card);
+ scn.MoveCardsToDiscard(card);
+ scn.MoveCardsToTopOfDeck(card);
scn.StartGame();
- scn.FreepsPlayCard(card);
-
- assertEquals(1, scn.GetTwilight());
+
+ assertFalse(true);
}
}
diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_074_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_074_ErrataTests.java
index 3feb9d8e1..1642bb2f8 100644
--- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_074_ErrataTests.java
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_074_ErrataTests.java
@@ -1,7 +1,7 @@
package com.gempukku.lotro.cards.unofficial.pc.errata.set03;
-import com.gempukku.lotro.framework.VirtualTableScenario;
import com.gempukku.lotro.common.*;
+import com.gempukku.lotro.framework.VirtualTableScenario;
import com.gempukku.lotro.game.CardNotFoundException;
import com.gempukku.lotro.logic.decisions.DecisionResultInvalidException;
import org.junit.Test;
@@ -34,7 +34,7 @@ public class Card_03_074_ErrataTests
/**
* Set: 3
* Name: Uruk Raider
- * Unique: False
+ * Unique: false
* Side: Shadow
* Culture: Isengard
* Twilight Cost: 2
@@ -43,8 +43,8 @@ public class Card_03_074_ErrataTests
* Strength: 6
* Vitality: 2
* Site Number: 5
- * Game Text: Tracker. Damage +1.
- * While an ally is in the dead pile, this minion is strength +3 and fierce.
+ * Game Text: Tracker.
+ * While an ally is in the dead pile, this minion is strength +3 and damage +1.
* Each time an ally exerts, you may spot another [isengard] card and exert this minion to wound that ally.
*/
@@ -60,8 +60,6 @@ public class Card_03_074_ErrataTests
assertEquals(CardType.MINION, card.getBlueprint().getCardType());
assertEquals(Race.URUK_HAI, card.getBlueprint().getRace());
assertTrue(scn.HasKeyword(card, Keyword.TRACKER));
- assertTrue(scn.HasKeyword(card, Keyword.DAMAGE));
- assertEquals(1, scn.GetKeywordCount(card, Keyword.DAMAGE));
assertEquals(2, card.getBlueprint().getTwilightCost());
assertEquals(6, card.getBlueprint().getStrength());
assertEquals(2, card.getBlueprint().getVitality());
@@ -83,13 +81,13 @@ public class Card_03_074_ErrataTests
assertEquals(Zone.HAND, rosie.getZone());
assertEquals(6, scn.GetStrength(raider));
- assertFalse(scn.HasKeyword(raider, Keyword.FIERCE));
+ assertFalse(scn.HasKeyword(raider, Keyword.DAMAGE));
scn.MoveCardsToDeadPile(rosie);
assertEquals(Zone.DEAD, rosie.getZone());
assertEquals(9, scn.GetStrength(raider));
- assertTrue(scn.HasKeyword(raider, Keyword.FIERCE));
+ assertTrue(scn.HasKeyword(raider, Keyword.DAMAGE));
}
@Test
@@ -171,30 +169,4 @@ public class Card_03_074_ErrataTests
assertEquals(Zone.DEAD, rosie.getZone());
assertEquals(1, scn.GetWoundsOn(raider));
}
-
- // Uncomment any @Test markers below once this is ready to be used
- //@Test
- public void UrukRaiderTest1() throws DecisionResultInvalidException, CardNotFoundException {
- //Pre-game setup
- var scn = GetScenario();
-
-// var card = scn.GetFreepsCard("card");
-// scn.MoveCardsToHand(card);
-// scn.MoveCompanionToTable(card);
-// scn.MoveCardsToSupportArea(card);
-// scn.MoveCardToDiscard(card);
-// scn.MoveCardsToTopOfDeck(card);
-
- var card = scn.GetShadowCard("card");
- scn.MoveCardsToHand(card);
- scn.MoveMinionsToTable(card);
- scn.MoveCardsToSupportArea(card);
- scn.MoveCardsToDiscard(card);
- scn.MoveCardsToTopOfDeck(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/set03/Card_03_074_ErrataTests.java.old b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_074_ErrataTests.java.old
new file mode 100644
index 000000000..fb2e0158c
--- /dev/null
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set03/Card_03_074_ErrataTests.java.old
@@ -0,0 +1,201 @@
+package com.gempukku.lotro.cards.unofficial.pc.errata.set03;
+
+import com.gempukku.lotro.framework.VirtualTableScenario;
+import com.gempukku.lotro.common.*;
+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_03_074_ErrataTests
+{
+
+ protected VirtualTableScenario GetScenario() throws CardNotFoundException, DecisionResultInvalidException {
+ return new VirtualTableScenario(
+ new HashMap<>()
+ {{
+ put("raider", "53_74");
+ put("demands", "2_40");
+
+ put("rosie", "1_309");
+ }},
+ VirtualTableScenario.FellowshipSites,
+ VirtualTableScenario.FOTRFrodo,
+ VirtualTableScenario.RulingRing
+ );
+ }
+
+ @Test
+ public void UrukRaiderStatsAndKeywordsAreCorrect() throws DecisionResultInvalidException, CardNotFoundException {
+
+ /**
+ * Set: 3
+ * Name: Uruk Raider
+ * Unique: False
+ * Side: Shadow
+ * Culture: Isengard
+ * Twilight Cost: 2
+ * Type: Minion
+ * Subtype: Uruk-hai
+ * Strength: 6
+ * Vitality: 2
+ * Site Number: 5
+ * Game Text: Tracker. Damage +1.
+ * While an ally is in the dead pile, this minion is strength +3 and fierce.
+ * Each time an ally exerts, you may spot another [isengard] card and exert this minion to wound that ally.
+ */
+
+ var scn = GetScenario();
+
+ var card = scn.GetFreepsCard("raider");
+
+ assertEquals("Uruk Raider", card.getBlueprint().getTitle());
+ assertNull(card.getBlueprint().getSubtitle());
+ assertFalse(card.getBlueprint().isUnique());
+ assertEquals(Side.SHADOW, card.getBlueprint().getSide());
+ assertEquals(Culture.ISENGARD, card.getBlueprint().getCulture());
+ assertEquals(CardType.MINION, card.getBlueprint().getCardType());
+ assertEquals(Race.URUK_HAI, card.getBlueprint().getRace());
+ assertTrue(scn.HasKeyword(card, Keyword.TRACKER));
+ assertTrue(scn.HasKeyword(card, Keyword.DAMAGE));
+ assertEquals(1, scn.GetKeywordCount(card, Keyword.DAMAGE));
+ assertEquals(2, card.getBlueprint().getTwilightCost());
+ assertEquals(6, card.getBlueprint().getStrength());
+ assertEquals(2, card.getBlueprint().getVitality());
+ assertEquals(5, card.getBlueprint().getSiteNumber());
+ }
+
+ @Test
+ public void UrukRaiderIsStrengthPlus3AndFierceWhileAllyIsInDeadPile() throws DecisionResultInvalidException, CardNotFoundException {
+ //Pre-game setup
+ var scn = GetScenario();
+
+ var rosie = scn.GetFreepsCard("rosie");
+ scn.MoveCardsToHand(rosie);
+
+ var raider = scn.GetShadowCard("raider");
+ scn.MoveMinionsToTable(raider);
+
+ scn.StartGame();
+
+ assertEquals(Zone.HAND, rosie.getZone());
+ assertEquals(6, scn.GetStrength(raider));
+ assertFalse(scn.HasKeyword(raider, Keyword.FIERCE));
+
+ scn.MoveCardsToDeadPile(rosie);
+
+ assertEquals(Zone.DEAD, rosie.getZone());
+ assertEquals(9, scn.GetStrength(raider));
+ assertTrue(scn.HasKeyword(raider, Keyword.FIERCE));
+ }
+
+ @Test
+ public void UrukRaiderCannotRespondToAllyExertionIfNoOtherIsengardCard() throws DecisionResultInvalidException, CardNotFoundException {
+ //Pre-game setup
+ var scn = GetScenario();
+
+ var rosie = scn.GetFreepsCard("rosie");
+ scn.MoveCardsToSupportArea(rosie);
+
+ var raider = scn.GetShadowCard("raider");
+ scn.MoveMinionsToTable(raider);
+
+ scn.StartGame();
+
+ assertEquals(0, scn.GetWoundsOn(raider));
+ assertEquals(0, scn.GetWoundsOn(rosie));
+ assertEquals(Zone.SUPPORT, rosie.getZone());
+
+ scn.FreepsUseCardAction(rosie);
+ assertFalse(scn.ShadowHasOptionalTriggerAvailable());
+
+ assertEquals(Zone.SUPPORT, rosie.getZone());
+ assertEquals(0, scn.GetWoundsOn(raider));
+ assertEquals(1, scn.GetWoundsOn(rosie));
+ }
+
+ @Test
+ public void UrukRaiderCannotRespondToAllyExertionIfSpotsOtherIsengardCardButCannotExert() throws DecisionResultInvalidException, CardNotFoundException {
+ //Pre-game setup
+ var scn = GetScenario();
+
+ var rosie = scn.GetFreepsCard("rosie");
+ scn.MoveCardsToSupportArea(rosie);
+
+ var raider = scn.GetShadowCard("raider");
+ var demands = scn.GetShadowCard("demands");
+ scn.MoveMinionsToTable(raider);
+ scn.MoveCardsToSupportArea(demands);
+ scn.AddWoundsToChar(raider, 1);
+
+ scn.StartGame();
+
+ assertEquals(1, scn.GetWoundsOn(raider));
+ assertEquals(0, scn.GetWoundsOn(rosie));
+ assertEquals(Zone.SUPPORT, rosie.getZone());
+
+ scn.FreepsUseCardAction(rosie);
+ assertFalse(scn.ShadowHasOptionalTriggerAvailable());
+
+ assertEquals(Zone.SUPPORT, rosie.getZone());
+ assertEquals(1, scn.GetWoundsOn(raider));
+ assertEquals(1, scn.GetWoundsOn(rosie));
+ }
+
+ @Test
+ public void UrukRaiderCanSpotAnotherIsengardCardAndExertToWoundExertingAlly() throws DecisionResultInvalidException, CardNotFoundException {
+ //Pre-game setup
+ var scn = GetScenario();
+
+ var rosie = scn.GetFreepsCard("rosie");
+ scn.MoveCardsToSupportArea(rosie);
+
+ var raider = scn.GetShadowCard("raider");
+ var demands = scn.GetShadowCard("demands");
+ scn.MoveMinionsToTable(raider);
+ scn.MoveCardsToSupportArea(demands);
+
+ scn.StartGame();
+
+ assertEquals(0, scn.GetWoundsOn(raider));
+ assertEquals(0, scn.GetWoundsOn(rosie));
+ assertEquals(Zone.SUPPORT, rosie.getZone());
+
+ scn.FreepsUseCardAction(rosie);
+ assertTrue(scn.ShadowHasOptionalTriggerAvailable());
+ scn.ShadowAcceptOptionalTrigger();
+
+ assertEquals(Zone.DEAD, rosie.getZone());
+ assertEquals(1, scn.GetWoundsOn(raider));
+ }
+
+ // Uncomment any @Test markers below once this is ready to be used
+ //@Test
+ public void UrukRaiderTest1() throws DecisionResultInvalidException, CardNotFoundException {
+ //Pre-game setup
+ var scn = GetScenario();
+
+// var card = scn.GetFreepsCard("card");
+// scn.MoveCardsToHand(card);
+// scn.MoveCompanionToTable(card);
+// scn.MoveCardsToSupportArea(card);
+// scn.MoveCardToDiscard(card);
+// scn.MoveCardsToTopOfDeck(card);
+
+ var card = scn.GetShadowCard("card");
+ scn.MoveCardsToHand(card);
+ scn.MoveMinionsToTable(card);
+ scn.MoveCardsToSupportArea(card);
+ scn.MoveCardsToDiscard(card);
+ scn.MoveCardsToTopOfDeck(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_028_ErrataTests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_028_ErrataTests.java
index 0b912a847..6657e5f9b 100644
--- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_028_ErrataTests.java
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/errata/set10/Card_10_028_ErrataTests.java
@@ -1,15 +1,14 @@
package com.gempukku.lotro.cards.unofficial.pc.errata.set10;
-import com.gempukku.lotro.framework.VirtualTableScenario;
import com.gempukku.lotro.common.*;
+import com.gempukku.lotro.framework.VirtualTableScenario;
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.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
public class Card_10_028_ErrataTests
{
@@ -33,13 +32,13 @@ public class Card_10_028_ErrataTests
/**
* Set: 10
* Name: Denethor, Lord of Minas Tirith
- * Unique: True
+ * Unique: true
* Side: Free Peoples
* Culture: Gondor
* Twilight Cost: 2
* Type: Companion
* Subtype: Man
- * Strength: 5
+ * Strength: 8
* Vitality: 3
* Resistance: 6
* Signet: Aragorn
@@ -58,7 +57,7 @@ public class Card_10_028_ErrataTests
assertEquals(CardType.COMPANION, card.getBlueprint().getCardType());
assertEquals(Race.MAN, card.getBlueprint().getRace());
assertEquals(2, card.getBlueprint().getTwilightCost());
- assertEquals(5, card.getBlueprint().getStrength());
+ assertEquals(8, card.getBlueprint().getStrength());
assertEquals(3, card.getBlueprint().getVitality());
assertEquals(6, card.getBlueprint().getResistance());
assertEquals(Signet.ARAGORN, card.getBlueprint().getSignet());
@@ -72,10 +71,20 @@ public class Card_10_028_ErrataTests
var card = scn.GetFreepsCard("card");
scn.MoveCardsToHand(card);
+ //scn.MoveCompanionsToTable(card);
+ scn.MoveCardsToSupportArea(card);
+ scn.MoveCardsToDiscard(card);
+ scn.MoveCardsToTopOfDeck(card);
+
+ //var card = scn.GetShadowCard("card");
+ scn.MoveCardsToHand(card);
+ scn.MoveMinionsToTable(card);
+ scn.MoveCardsToSupportArea(card);
+ scn.MoveCardsToDiscard(card);
+ scn.MoveCardsToTopOfDeck(card);
scn.StartGame();
- scn.FreepsPlayCard(card);
-
- assertEquals(2, scn.GetTwilight());
+
+ assertFalse(true);
}
}
diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java
index 3a6b9e8b6..5c3e05055 100644
--- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_013_Tests.java
@@ -41,7 +41,7 @@ public class Card_V2_013_Tests
/**
* Set: V2
* Name: Gandalf, Lathspell
- * Unique: True
+ * Unique: true
* Side: Free Peoples
* Culture: Gandalf
* Twilight Cost: 4
@@ -52,8 +52,8 @@ public class Card_V2_013_Tests
* Resistance: 6
* Signet: Theoden
* Game Text: Each mounted companion gains valiant.
- * Response: If a minion's special ability is used (except during a skirmish), spot 3 valiant companions and exert Gandalf to prevent that.
- */
+ * Response: If a minion's special ability is used, spot 3 valiant companions and exert Gandalf twice to prevent that and exert that minion.
+ */
var scn = GetScenario();
@@ -70,7 +70,7 @@ public class Card_V2_013_Tests
assertEquals(7, card.getBlueprint().getStrength());
assertEquals(4, card.getBlueprint().getVitality());
assertEquals(6, card.getBlueprint().getResistance());
- assertEquals(Signet.THEODEN, card.getBlueprint().getSignet());
+ assertEquals(Signet.THEODEN, card.getBlueprint().getSignet());
}
@Test
@@ -146,9 +146,9 @@ public class Card_V2_013_Tests
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
scn.FreepsAcceptOptionalTrigger();
assertEquals(0, scn.GetWoundsOn(valiant1));
- assertEquals(1, scn.GetWoundsOn(gandalf));
- //Lathspell's retribution no longer wounds, just blocks
- assertEquals(1, scn.GetWoundsOn(shotgun));
+ assertEquals(2, scn.GetWoundsOn(gandalf));
+ //Lathspell's retribution exerts and blocks
+ assertEquals(2, scn.GetWoundsOn(shotgun));
}
@Test
@@ -193,7 +193,7 @@ public class Card_V2_013_Tests
}
@Test
- public void GandalfCanBlockGrishnakhIf3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
+ public void GandalfCanBlockGrishnakhAndExertHimIf3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
@@ -221,7 +221,7 @@ public class Card_V2_013_Tests
assertEquals(2, scn.GetWoundsOn(grishnakh));
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
scn.FreepsAcceptOptionalTrigger();
- assertEquals(1, scn.GetWoundsOn(gandalf));
+ assertEquals(2, scn.GetWoundsOn(gandalf));
//Lathspell's retribution no longer wounds
assertEquals(Zone.SHADOW_CHARACTERS, grishnakh.getZone());
assertEquals(2, scn.GetWoundsOn(grishnakh));
@@ -229,51 +229,6 @@ public class Card_V2_013_Tests
assertEquals(7, scn.GetShadowDeckCount());
}
- @Test
- public void GandalfCanBlockGrishnakhAndWoundHimIf3ValiantCompanionsAndBearingNewStaff() throws DecisionResultInvalidException, CardNotFoundException {
- //Pre-game setup
- var scn = GetScenario();
-
- var gandalf = scn.GetFreepsCard("gandalf");
- var crutch = scn.GetFreepsCard("crutch");
- var valiant1 = scn.GetFreepsCard("valiant1");
- scn.MoveCompanionToTable(gandalf);
- scn.AttachCardsTo(gandalf, crutch);
- scn.MoveCompanionToTable("valiant1", "valiant2", "valiant3");
-
- var grishnakh = scn.GetShadowCard("grishnakh");
- scn.MoveMinionsToTable(grishnakh);
- scn.MoveMinionsToTable("marauder");
-
- scn.StartGame();
-
- scn.FreepsPassCurrentPhaseAction();
-
- assertTrue(scn.ShadowActionAvailable(grishnakh));
-
- assertEquals(0, scn.GetWoundsOn(gandalf));
- assertEquals(0, scn.GetWoundsOn(grishnakh));
- assertEquals(0, scn.GetShadowHandCount());
- assertEquals(7, scn.GetShadowDeckCount());
- scn.ShadowUseCardAction(grishnakh);
- //Grishnakh's own exertions
- assertEquals(2, scn.GetWoundsOn(grishnakh));
- assertTrue(scn.FreepsHasOptionalTriggerAvailable());
- scn.FreepsAcceptOptionalTrigger();
- assertEquals(1, scn.GetWoundsOn(gandalf));
- //Lathspell's retribution no longer wounds
- assertEquals(Zone.SHADOW_CHARACTERS, grishnakh.getZone());
- assertEquals(2, scn.GetWoundsOn(grishnakh));
- assertEquals(0, scn.GetShadowHandCount());
- assertEquals(7, scn.GetShadowDeckCount());
-
- //The staff makes up for it tho
- assertTrue(scn.FreepsHasOptionalTriggerAvailable());
- scn.FreepsAcceptOptionalTrigger();
- scn.FreepsChooseCard(grishnakh);
- assertEquals(Zone.DISCARD, grishnakh.getZone());
- }
-
@Test
public void GandalfCannotBlockSkirmishAbilityEvenWith3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
diff --git a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_077_Tests.java b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_077_Tests.java
index 5d9b3a26f..08ab8380b 100644
--- a/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_077_Tests.java
+++ b/gemp-lotr/gemp-lotr-server/src/test/java/com/gempukku/lotro/cards/unofficial/pc/vsets/set_v02/Card_V2_077_Tests.java
@@ -37,7 +37,7 @@ public class Card_V2_077_Tests
/**
* Set: V2
* Name: Gandalf's Staff, Old Man's Crutch
- * Unique: True
+ * Unique: true
* Side: Free Peoples
* Culture: Gandalf
* Twilight Cost: 2
@@ -45,9 +45,9 @@ public class Card_V2_077_Tests
* Subtype: Staff
* Vitality: 1
* Game Text: Bearer must be Gandalf.
- * Discard any weapon he bears.
- * Each time Gandalf is exerted by a Free Peoples card, you may wound a minion (limit once per phase).
- */
+ * Discard any weapon he bears.
+ * Response: If Gandalf is exerted by a Free Peoples card, heal him (limit once per turn).
+ */
var scn = GetScenario();
@@ -92,7 +92,7 @@ public class Card_V2_077_Tests
}
@Test
- public void GandalfsStaffCanWoundAMinionWhenExertingOncePerPhase() throws DecisionResultInvalidException, CardNotFoundException {
+ public void GandalfsStaffCanHealBearerWhenExertingOncePerTurn() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
@@ -121,14 +121,15 @@ public class Card_V2_077_Tests
assertEquals(0, scn.GetWoundsOn(shotgun));
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
scn.FreepsAcceptOptionalTrigger();
- assertEquals(1, scn.GetWoundsOn(shotgun));
+ assertEquals(0, scn.GetWoundsOn(gandalf));
scn.ShadowPassCurrentPhaseAction();
//Staff doesn't trigger a second time
+ assertEquals(0, scn.GetWoundsOn(gandalf));
scn.FreepsUseCardAction(betrayal);
- assertEquals(2, scn.GetWoundsOn(gandalf));
- assertEquals(1, scn.GetWoundsOn(shotgun));
+ assertEquals(1, scn.GetWoundsOn(gandalf));
+ assertEquals(0, scn.GetWoundsOn(shotgun));
assertFalse(scn.FreepsHasOptionalTriggerAvailable());
}
}