V2 balance update.

This commit is contained in:
Christian 'ketura' McCarty
2024-09-07 18:08:05 -05:00
parent ec1fccbb80
commit 5c26c2aa8a
13 changed files with 192 additions and 336 deletions

View File

@@ -650,149 +650,149 @@ var PCCards = {
//PC V2 - King of the Golden Hall
// Driven into the Hills (V2U1) [Playtest]
'102_1' : 'https://i.lotrtcgpc.net/sets/vset2/V2_01.jpg',
'102_1' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S001.0_card.jpg',
// Dunlending Raider (V2C2) [Playtest]
'102_2' : 'https://i.lotrtcgpc.net/sets/vset2/V2_02.jpg',
'102_2' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S002.0_card.jpg',
// Dunlending Reaver (V2U3) [Playtest]
'102_3' : 'https://i.lotrtcgpc.net/sets/vset2/V2_03.jpg',
'102_3' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S003.0_card.jpg',
// Horsemen Took Your Lands (V2R4) [Playtest]
'102_4' : 'https://i.lotrtcgpc.net/sets/vset2/V2_04.jpg',
'102_4' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S004.0_card.jpg',
// Haldir, Naith Commander (V2R5) [Playtest]
'102_5' : 'https://i.lotrtcgpc.net/sets/vset2/V2_05.jpg',
'102_5' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S005.0_card.jpg',
// Leithio i Phillin! (V2C6) [Playtest]
'102_6' : 'https://i.lotrtcgpc.net/sets/vset2/V2_06.jpg',
'102_6' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S006.0_card.jpg',
// Naith Armaments (V2U7) [Playtest]
'102_7' : 'https://i.lotrtcgpc.net/sets/vset2/V2_07.jpg',
'102_7' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S007.0_card.jpg',
// Arwen, Lady of Rivendell (V2U8) [Playtest]
'102_8' : 'https://i.lotrtcgpc.net/sets/vset2/V2_08.jpg',
'102_8' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S008.0_card.jpg',
// Your Friends Are With You (V2U9) [Playtest]
'102_9' : 'https://i.lotrtcgpc.net/sets/vset2/V2_09.jpg',
'102_9' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S009.0_card.jpg',
// Deadly Contest (V2C10) [Playtest]
'102_10' : 'https://i.lotrtcgpc.net/sets/vset2/V2_10.jpg',
'102_10' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S010.0_card.jpg',
// To Honor That Allegience (V2U11) [Playtest]
'102_11' : 'https://i.lotrtcgpc.net/sets/vset2/V2_11.jpg',
'102_11' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S011.0_card.jpg',
// Jetsam (V2U12) [Playtest]
'102_12' : 'https://i.lotrtcgpc.net/sets/vset2/V2_12.jpg',
'102_12' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S012.0_card.jpg',
// Saruman's Hospitality (V2R13) [Playtest]
'102_13' : 'https://i.lotrtcgpc.net/sets/vset2/V2_13.jpg',
'102_13' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S013.0_card.jpg',
// Gandalf, Lathspell (V2R14) [Playtest]
'102_14' : 'https://i.lotrtcgpc.net/sets/vset2/V2_14.jpg',
'102_14' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S014.0_card.jpg',
// Ride Out and Meet Them (V2C15) [Playtest]
'102_15' : 'https://i.lotrtcgpc.net/sets/vset2/V2_15.jpg',
'102_15' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S015.0_card.jpg',
// Aragorn, Last Hope Of Men (V2R16) [Playtest]
'102_16' : 'https://i.lotrtcgpc.net/sets/vset2/V2_16.jpg',
'102_16' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S016.0_card.jpg',
// I Will Die as One of Them (V2C17) [Playtest]
'102_17' : 'https://i.lotrtcgpc.net/sets/vset2/V2_17.jpg',
'102_17' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S017.0_card.jpg',
// Denethor, Formidable Father (V2U18) [Playtest]
'102_18' : 'https://i.lotrtcgpc.net/sets/vset2/V2_18.jpg',
'102_18' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S018.0_card.jpg',
// Dunadan of Ithilien (V2U19) [Playtest]
'102_19' : 'https://i.lotrtcgpc.net/sets/vset2/V2_19.jpg',
'102_19' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S019.0_card.jpg',
// Isengard Foreman (V2R20) [Playtest]
'102_20' : 'https://i.lotrtcgpc.net/sets/vset2/V2_20.jpg',
'102_20' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S020.0_card.jpg',
// Machinery of War (V2U21) [Playtest]
'102_21' : 'https://i.lotrtcgpc.net/sets/vset2/V2_21.jpg',
'102_21' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S021.0_card.jpg',
// Fires of Industry (V2U22) [Playtest]
'102_22' : 'https://i.lotrtcgpc.net/sets/vset2/V2_22.jpg',
'102_22' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S022.0_card.jpg',
// Isengard Grunt (V2C23) [Playtest]
'102_23' : 'https://i.lotrtcgpc.net/sets/vset2/V2_23.jpg',
'102_23' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S023.0_card.jpg',
// Wolf Pit (V2R24) [Playtest]
'102_24' : 'https://i.lotrtcgpc.net/sets/vset2/V2_24.jpg',
'102_24' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S024.0_card.jpg',
// Strength of the Pack (V2U25) [Playtest]
'102_25' : 'https://i.lotrtcgpc.net/sets/vset2/V2_25.jpg',
'102_25' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S025.0_card.jpg',
// Hound of Isengard (V2C26) [Playtest]
'102_26' : 'https://i.lotrtcgpc.net/sets/vset2/V2_26.jpg',
'102_26' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S026.0_card.jpg',
// Uruk Shield Wall (V2U27) [Playtest]
'102_27' : 'https://i.lotrtcgpc.net/sets/vset2/V2_27.jpg',
'102_27' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S027.0_card.jpg',
// Berserk Deathseeker (V2R28) [Playtest]
'102_28' : 'https://i.lotrtcgpc.net/sets/vset2/V2_28.jpg',
'102_28' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S028.0_card.jpg',
// Berserk Fanatic (V2C29) [Playtest]
'102_29' : 'https://i.lotrtcgpc.net/sets/vset2/V2_29.jpg',
'102_29' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S029.0_card.jpg',
// Breaching Shot (V2U30) [Playtest]
'102_30' : 'https://i.lotrtcgpc.net/sets/vset2/V2_30.jpg',
'102_30' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S030.0_card.jpg',
// Uruk Occupier (V2U31) [Playtest]
'102_31' : 'https://i.lotrtcgpc.net/sets/vset2/V2_31.jpg',
'102_31' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S031.0_card.jpg',
// Trail of Savagery (V2C32) [Playtest]
'102_32' : 'https://i.lotrtcgpc.net/sets/vset2/V2_32.jpg',
'102_32' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S032.0_card.jpg',
// Legion of Isengard (V2R33) [Playtest]
'102_33' : 'https://i.lotrtcgpc.net/sets/vset2/V2_33.jpg',
'102_33' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S033.0_card.jpg',
// Saruman, Mind of Metal and Wheels (V2U34) [Playtest]
'102_34' : 'https://i.lotrtcgpc.net/sets/vset2/V2_34.jpg',
'102_34' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S034.0_card.jpg',
// Back on the Menu (V2U35) [Playtest]
'102_35' : 'https://i.lotrtcgpc.net/sets/vset2/V2_35.jpg',
'102_35' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S035.0_card.jpg',
// Uruk Prowler (V2C36) [Playtest]
'102_36' : 'https://i.lotrtcgpc.net/sets/vset2/V2_36.jpg',
'102_36' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S036.0_card.jpg',
// Uneasy Alliance (V2C37) [Playtest]
'102_37' : 'https://i.lotrtcgpc.net/sets/vset2/V2_37.jpg',
'102_37' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S037.0_card.jpg',
// The Balrog, Lieutenant of Morgoth (V2R38) [Playtest]
'102_38' : 'https://i.lotrtcgpc.net/sets/vset2/V2_38.jpg',
'102_38' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S038.0_card.jpg',
// From Deepest Dungeon (V2U39) [Playtest]
'102_39' : 'https://i.lotrtcgpc.net/sets/vset2/V2_39.jpg',
'102_39' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S039.0_card.jpg',
// To Highest Peak (V2U40) [Playtest]
'102_40' : 'https://i.lotrtcgpc.net/sets/vset2/V2_40.jpg',
'102_40' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S040.0_card.jpg',
// Through Fire and Water (V2C41) [Playtest]
'102_41' : 'https://i.lotrtcgpc.net/sets/vset2/V2_41.jpg',
'102_41' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S041.0_card.jpg',
// Ancient Evil (V2R42) [Playtest]
'102_42' : 'https://i.lotrtcgpc.net/sets/vset2/V2_42.jpg',
'102_42' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S042.0_card.jpg',
// Theoden, Last of his House (V2R43) [Playtest]
'102_43' : 'https://i.lotrtcgpc.net/sets/vset2/V2_43.jpg',
'102_43' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S043.0_card.jpg',
// Erkenbrand, Kinsman of the House of Eorl (V2R44) [Playtest]
'102_44' : 'https://i.lotrtcgpc.net/sets/vset2/V2_44.jpg',
'102_44' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S044.0_card.jpg',
// Royal Attendant (V2R45) [Playtest]
'102_45' : 'https://i.lotrtcgpc.net/sets/vset2/V2_45.jpg',
'102_45' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S045.0_card.jpg',
// Now for Ruin (V2U46) [Playtest]
'102_46' : 'https://i.lotrtcgpc.net/sets/vset2/V2_46.jpg',
'102_46' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S046.0_card.jpg',
// Now for Wrath (V2U47) [Playtest]
'102_47' : 'https://i.lotrtcgpc.net/sets/vset2/V2_47.jpg',
'102_47' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S047.0_card.jpg',
// And the Red Dawn (V2U48) [Playtest]
'102_48' : 'https://i.lotrtcgpc.net/sets/vset2/V2_48.jpg',
'102_48' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S048.0_card.jpg',
// Guthwine, Eomer's Blade (V2R49) [Playtest]
'102_49' : 'https://i.lotrtcgpc.net/sets/vset2/V2_49.jpg',
'102_49' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S049.0_card.jpg',
// Let This Be the Hour (V2U50) [Playtest]
'102_50' : 'https://i.lotrtcgpc.net/sets/vset2/V2_50.jpg',
'102_50' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S050.0_card.jpg',
// To the King (V2C51) [Playtest]
'102_51' : 'https://i.lotrtcgpc.net/sets/vset2/V2_51.jpg',
'102_51' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S051.0_card.jpg',
// Do Not Trust to Hope (V2C52) [Playtest]
'102_52' : 'https://i.lotrtcgpc.net/sets/vset2/V2_52.jpg',
'102_52' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S052.0_card.jpg',
// An End Worthy of Remembrance (V2U53) [Playtest]
'102_53' : 'https://i.lotrtcgpc.net/sets/vset2/V2_53.jpg',
'102_53' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S053.0_card.jpg',
// Marsh Wight (V2U54) [Playtest]
'102_54' : 'https://i.lotrtcgpc.net/sets/vset2/V2_54.jpg',
'102_54' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S054.0_card.jpg',
// Down to Join the Dead Ones (V2R55) [Playtest]
'102_55' : 'https://i.lotrtcgpc.net/sets/vset2/V2_55.jpg',
'102_55' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S055.0_card.jpg',
// Trapped in its Gaze (V2U56) [Playtest]
'102_56' : 'https://i.lotrtcgpc.net/sets/vset2/V2_56.jpg',
'102_56' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S056.0_card.jpg',
// Shapes to See, Not to Touch (V2R57) [Playtest]
'102_57' : 'https://i.lotrtcgpc.net/sets/vset2/V2_57.jpg',
'102_57' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S057.0_card.jpg',
// Orc Searcher (V2U58) [Playtest]
'102_58' : 'https://i.lotrtcgpc.net/sets/vset2/V2_58.jpg',
'102_58' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S058.0_card.jpg',
// No One's Going To Save You Now (V2C59) [Playtest]
'102_59' : 'https://i.lotrtcgpc.net/sets/vset2/V2_59.jpg',
'102_59' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S059.0_card.jpg',
// Grishnakh, Servant of Lugburz (V2R60) [Playtest]
'102_60' : 'https://i.lotrtcgpc.net/sets/vset2/V2_60.jpg',
'102_60' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S060.0_card.jpg',
// Orc of Lugburz (V2U61) [Playtest]
'102_61' : 'https://i.lotrtcgpc.net/sets/vset2/V2_61.jpg',
'102_61' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S061.0_card.jpg',
// Lugburz Spotter (V2C62) [Playtest]
'102_62' : 'https://i.lotrtcgpc.net/sets/vset2/V2_62.jpg',
'102_62' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S062.0_card.jpg',
// Eastemnet Hills (V2U63) [Playtest]
'102_63' : 'https://i.lotrtcgpc.net/sets/vset2/V2_63.jpg',
'102_63' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S063.0_card.jpg',
// Theodred's Tomb (V2U64) [Playtest]
'102_64' : 'https://i.lotrtcgpc.net/sets/vset2/V2_64.jpg',
'102_64' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S064.0_card.jpg',
// Westfold Plains (V2U65) [Playtest]
'102_65' : 'https://i.lotrtcgpc.net/sets/vset2/V2_65.jpg',
'102_65' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S065.0_card.jpg',
// Breached Wall (V2U66) [Playtest]
'102_66' : 'https://i.lotrtcgpc.net/sets/vset2/V2_66.jpg',
'102_66' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S066.0_card.jpg',
// Isengard Gates (V2U67) [Playtest]
'102_67' : 'https://i.lotrtcgpc.net/sets/vset2/V2_67.jpg',
'102_67' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S067.0_card.jpg',
// Helm's Tower (V2U68) [Playtest]
'102_68' : 'https://i.lotrtcgpc.net/sets/vset2/V2_68.jpg',
'102_68' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S068.0_card.jpg',
// Desolation of Saruman (V2U69) [Playtest]
'102_69' : 'https://i.lotrtcgpc.net/sets/vset2/V2_69.jpg',
'102_69' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S069.0_card.jpg',
// Isengard Clefts (V2U70) [Playtest]
'102_70' : 'https://i.lotrtcgpc.net/sets/vset2/V2_70.jpg',
'102_70' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S070.0_card.jpg',
// Friendship of The Three Kindreds (V2R71) [Playtest]
'102_71' : 'https://i.lotrtcgpc.net/sets/vset2/V2_71.jpg',
'102_71' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S071.0_card.jpg',
// Palantir of Orthanc, Corrupted Relic (V2R72) [Playtest]
'102_72' : 'https://i.lotrtcgpc.net/sets/vset2/V2_72.jpg',
'102_72' : 'https://i.lotrtcgpc.net/sets/v02/LOTR-ENV2S072.0_card.jpg',
//V2-associated Errata
// Erethon, Naith Lieutenant (4R65) [Errata]

View File

@@ -16,7 +16,7 @@
style: Standard
}
title: Driven into the Hills
unique: true
unique: false
side: Shadow
culture: Dunland
twilight: 1
@@ -32,29 +32,18 @@
}
}
{
type: Modifier
type: modifier
modifier: {
type: SkipPhase
phase: Archery
requires: {
type: HaveInitiative
side: Shadow
type: ModifyInitiativeHandSize
amount: {
type: forEachYouCanSpot
filter: companion
over: 4
}
}
}
{
type: trigger
optional: false
trigger: {
type: SiteLiberated
}
effect: {
type: Discard
select: self
}
}
]
gametext: To play, spot a [Dunland] minion.<br>While the shadow has initiative, skip the archery phase.<br>When the Free-Peoples player liberates a site, discard this condition.
gametext: To play, spot a [Dunland] minion.<br>To play, spot a [Dunland] minion.\For each companion you can spot over 4, the Free Peoples player must have an additional card in hand to have initiative.
lore: "'Not in half a thousand years have they forgotten their grievance that the lords of Gondor gave the Mark to Eorl the Young and made alliance with him.'"
promotext: ""
alts: {
@@ -140,7 +129,7 @@
modifier: {
type: ModifyStrength
filter: self
amount: 1
amount: 3
requires: {
type: HaveInitiative
side: Shadow
@@ -160,7 +149,7 @@
}
}
]
gametext: While you have initiative, this minion is strength +1 and damage +1.
gametext: While you have initiative, this minion is strength +3 and damage +1.
lore: "Now they could hear, borne over the dark, the sound of harsh singing..."
promotext: ""
alts: {

View File

@@ -16,7 +16,7 @@
style: Standard
}
title: Aragorn
subtitle: Last Hope Of Men
subtitle: Last Hope of Men
unique: true
side: Free Peoples
culture: Gondor
@@ -30,24 +30,22 @@
keywords: Valiant
effects: [
{
type: modifier
modifier: {
type: FPCultureCount
requires: {
type: canSpot
count: 3
filter: valiant,companion
}
amount: -1
type: Trigger
trigger: {
type: StartOfTurn
}
optional: true
requires: {
type: CanSpot
filter: another,valiant,companion
}
effect: {
type: DrawCards
count: 1
}
}
{
type: activated
requires: {
type: canSpot
count: 1
filter: valiant,companion,inSkirmish
}
phase: skirmish
cost: {
type: exert
@@ -57,20 +55,11 @@
type: modifyStrength
select: choose(valiant,companion,inSkirmish)
memorize: chosenCompanion
amount: {
type: Conditional
requires: {
type: memoryMatches
memory: chosenCompanion
filter: Exhausted
}
true: 3
false: 2
}
amount: 2
}
}
]
gametext: Valiant.<br>While you can spot 3 valiant companions, the number of free peoples cultures that can be counted is-1.<br>Skirmish: If a valiant companion is skirmishing a minion with a strength of 12 or higher, exert Aragorn to make that companion strength +2 (or +3 if that companion is exhausted).
gametext: Valiant.<br>At the start of each turn you may spot another valiant companion to draw a card. <b>Skirmish</b>: Exert Aragorn to make a skirmishing valiant companion strength +2.
lore: ""
promotext: ""
alts: {

View File

@@ -144,11 +144,11 @@
type: If
check: {
type: CanSpot
filter: self,HasAnyCultureTokens(1)
filter: self,HasAnyCultureTokens(2)
}
true: {
type: RemoveCultureTokens
count: 1
count: 2
select: self
}
false: {
@@ -162,7 +162,7 @@
}
}
]
gametext: When you play this condition, spot a Wizard to add 2 [isengard] tokens here.<br>Each time an [isengard] Orc is defeated in a skirmish, add an [isengard] token here.<br><b>Skirmish<b>: Discard this condition (or remove an [isengard] token here) to cancel a skirmish involving an [isengard] Orc.
gametext: When you play this condition, spot a Wizard to add 2 [isengard] tokens here.<br>Each time an [isengard] Orc is defeated in a skirmish, add an [isengard] token here.<br><b>Skirmish<b>: Discard this condition (or remove 2 [isengard] tokens here) to cancel a skirmish involving an [isengard] Orc.
lore: ""
promotext: ""
alts: {
@@ -983,7 +983,7 @@
twilight: 8
type: Minion
race: Uruk-hai
strength: 15
strength: 17
vitality: 4
site: 5
keywords: Damage+1
@@ -1051,22 +1051,6 @@
vitality: 4
site: 4
effects: [
{
type: modifier
modifier: {
type: cantTakeWounds
requires: [
{
type: sarumanFirstSentenceActive
}
{
type: phase
phase: archery
}
]
filter: self
}
}
{
type: modifier
modifier: {
@@ -1078,36 +1062,31 @@
}
}
{
type: Activated
phase: Regroup
cost: [
{
type: Exert
select: self
times: 1
}
{
type: Discard
select: choose(uruk-hai)
}
]
effect: {
type: Preventable
text: Would you like to reinforce 2 {isengard} tokens on a machine to prevent {you} taking control of a site?
player: freeps
cost: {
type: ReinforceTokens
player: freeps
culture: isengard
select: choose(machine)
}
effect: {
type: TakeControlOfSite
}
type: modifier
modifier: {
type: cancelKeywordBonus
filter: companion,inSkirmishAgainst(culture(isengard),orc)
keyword: damage
}
}
{
type: Response
trigger: {
type: aboutToTakeWound
filter: culture(isengard),orc
}
cost: {
type: exert
select: self
}
effect:
{
type: preventWound
select: choose(culture(isengard),orc)
}
}
]
gametext: Saruman may not take wounds during the archery phase and may not be assigned to a skirmish.<br>Regroup: Exert Saruman and discard an [Isengard] Uruk-hai to take control of a site. The Free Peoples player may reinforce 2 [Isengard] tokens to prevent this.
gametext: Saruman may not be assigned to a skirmish.<br/>Companions skirmishing [Isengard] Orcs lose all damage bonuses.</b>If an [isengard] Orc is about to take a wound, you may exert Saruman to prevent that wound.
lore: ""
promotext: ""
alts: {

View File

@@ -506,7 +506,7 @@
twilight: 2
type: Minion
race: Orc
strength: 5
strength: 6
vitality: 2
site: 6
keywords: Tracker
@@ -516,7 +516,7 @@
modifier: {
type: modifystrength
filter: self,siteNumber(0-1)
amount: 4
amount: 5
}
}
]

View File

@@ -14,7 +14,7 @@ public class CancelKeywordBonus implements ModifierSourceProducer {
final JSONObject[] conditionArray = FieldUtils.getObjectArray(object.get("requires"), "requires");
final String filter = FieldUtils.getString(object.get("filter"), "filter");
final String from = FieldUtils.getString(object.get("from"), "from");
final String from = FieldUtils.getString(object.get("from"), "from", "any");
Keyword keyword = FieldUtils.getEnum(Keyword.class, object.get("keyword"), "keyword");
if (keyword == null)

View File

@@ -27,6 +27,16 @@ public class Card_V2_001_Tests
put("hillman", "15_90");
put("runner", "1_178");
//Dwarf guards for companion count
put("fodder1", "1_7");
put("fodder2", "1_7");
put("fodder3", "1_7");
put("fodder4", "1_7");
put("fodder5", "1_7");
put("fodder6", "1_7");
put("fodder7", "1_7");
put("fodder8", "1_7");
}},
GenericCardTestHelper.FellowshipSites,
GenericCardTestHelper.FOTRFrodo,
@@ -40,15 +50,14 @@ public class Card_V2_001_Tests
/**
* Set: V2
* Name: Driven into the Hills
* Unique: True
* Unique: False
* Side: Shadow
* Culture: Dunland
* Twilight Cost: 1
* Type: Condition
* Subtype: Support area
* Game Text: To play, spot a [Dunland] minion.
* While the shadow has initiative, skip the archery phase.
* If the Free-Peoples player liberates a site, discard this condition.
* For each companion you can spot over 4, the Free Peoples player must have an additional card in hand to have initiative.
*/
var scn = GetScenario();
@@ -57,7 +66,7 @@ public class Card_V2_001_Tests
assertEquals("Driven into the Hills", card.getBlueprint().getTitle());
assertNull(card.getBlueprint().getSubtitle());
assertTrue(card.getBlueprint().isUnique());
assertFalse(card.getBlueprint().isUnique());
assertEquals(Side.SHADOW, card.getBlueprint().getSide());
assertEquals(Culture.DUNLAND, card.getBlueprint().getCulture());
assertEquals(CardType.CONDITION, card.getBlueprint().getCardType());
@@ -88,97 +97,26 @@ public class Card_V2_001_Tests
}
@Test
public void DrivenSkipsArcheryPhaseIfShadowHasInitiative() throws DecisionResultInvalidException, CardNotFoundException {
public void DrivenMakesInitiativeTake5CardsWith5Companions() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var driven = scn.GetShadowCard("driven");
var madman = scn.GetShadowCard("madman");
scn.ShadowMoveCardToSupportArea(driven);
scn.ShadowMoveCharToTable(madman);
scn.FreepsMoveCharToTable("fodder1", "fodder2", "fodder3", "fodder4");
scn.FreepsMoveCardToHand("driven", "madman", "freca", "hillman");
scn.StartGame();
//cheating to give Shadow initiative
scn.ApplyAdHocModifier(new HasInitiativeModifier(null, null, Side.SHADOW));
scn.SkipToPhase(Phase.MANEUVER);
assertEquals(4, scn.GetFreepsHandCount());
assertTrue(scn.ShadowHasInitiative());
assertEquals(Phase.MANEUVER, scn.GetCurrentPhase());
scn.FreepsMoveCardToHand("runner");
scn.PassCurrentPhaseActions();
//Skipped archery entirely
assertEquals(Phase.ASSIGNMENT, scn.GetCurrentPhase());
}
@Test
public void DrivenDoesNotSkipsArcheryPhaseIfFreepsHasInitiative() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var driven = scn.GetShadowCard("driven");
var madman = scn.GetShadowCard("madman");
scn.ShadowMoveCardToSupportArea(driven);
scn.ShadowMoveCharToTable(madman);
scn.StartGame();
//cheating to give Freeps initiative, since there are too few cards in hand
scn.ApplyAdHocModifier(new HasInitiativeModifier(null, null, Side.FREE_PEOPLE));
scn.SkipToPhase(Phase.MANEUVER);
assertFalse(scn.ShadowHasInitiative());
assertEquals(Phase.MANEUVER, scn.GetCurrentPhase());
scn.PassCurrentPhaseActions();
//Did not skip archery
assertEquals(Phase.ARCHERY, scn.GetCurrentPhase());
}
@Test
public void DrivenSelfDiscardsWhenASiteIsLiberated() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var driven = scn.GetShadowCard("driven");
var madman = scn.GetShadowCard("madman");
var hillman = scn.GetShadowCard("hillman");
var freca = scn.GetShadowCard("freca");
scn.ShadowMoveCardToSupportArea(driven);
var site1 = scn.GetFreepsSite(1);
scn.StartGame();
//Need to have sites controlled to liberate
scn.SkipToSite(3);
scn.ShadowMoveCharToTable(hillman, madman);
scn.ShadowMoveCardToHand(freca);
scn.FreepsPassCurrentPhaseAction();
scn.ShadowPlayCard(freca);
scn.ShadowAcceptOptionalTrigger();
assertTrue(scn.IsSiteControlled(site1));
scn.SkipToPhase(Phase.MANEUVER);
assertTrue(scn.IsSiteControlled(site1));
assertEquals(Zone.SUPPORT, driven.getZone());
scn.SkipToPhase(Phase.REGROUP);
//Rapt Hillman gives Freeps the opportunity to liberate a site,
// and shadow can stop it (but we choose not to)
scn.FreepsAcceptOptionalTrigger();
scn.ShadowChooseNo();
assertFalse(scn.IsSiteControlled(site1));
assertEquals(Zone.DISCARD, driven.getZone());
assertEquals(5, scn.GetFreepsHandCount());
assertFalse(scn.ShadowHasInitiative());
}
}

View File

@@ -42,7 +42,7 @@ public class Card_V2_003_Tests
* Strength: 8
* Vitality: 1
* Site Number: 3
* Game Text: While you have initiative, this minion is strength +1 and damage +1.
* Game Text: While you have initiative, this minion is strength +3 and damage +1.
*/
var scn = GetScenario();

View File

@@ -50,8 +50,8 @@ public class Card_V2_016_Tests
* Resistance: 6
* Signet: Theoden
* Game Text: Valiant.
* While you can spot 3 valiant companions, the number of free peoples cultures that can be counted is-1.
* Skirmish: If a valiant companion is skirmishing a minion with a strength of 12 or higher, exert Aragorn to make that companion strength +2 (or +3 if that companion is exhausted).
* At the start of each turn you may spot another valiant companion to draw a card.
* Skirmish: Exert Aragorn to make a valiant companion strength +2.
*/
var scn = GetScenario();
@@ -59,7 +59,7 @@ public class Card_V2_016_Tests
var card = scn.GetFreepsCard("aragorn");
assertEquals("Aragorn", card.getBlueprint().getTitle());
assertEquals("Last Hope Of Men", card.getBlueprint().getSubtitle());
assertEquals("Last Hope of Men", card.getBlueprint().getSubtitle());
assertTrue(card.getBlueprint().isUnique());
assertEquals(Side.FREE_PEOPLE, card.getBlueprint().getSide());
assertEquals(Culture.GONDOR, card.getBlueprint().getCulture());
@@ -74,68 +74,51 @@ public class Card_V2_016_Tests
}
@Test
public void AragornReducesSpottableCulturesIf3ValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
public void AragornDrawsCardAtStartOfTurnIfOtherValiantCompanion() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var aragorn = scn.GetFreepsCard("aragorn");
var veowyn = scn.GetFreepsCard("veowyn");
var vgamling = scn.GetFreepsCard("vgamling");
var vrscout = scn.GetFreepsCard("vrscout");
var gandalf = scn.GetFreepsCard("gandalf");
scn.FreepsMoveCardToHand(aragorn, veowyn, gandalf, vgamling, vrscout);
var grima = scn.GetShadowCard("grima");
scn.ShadowMoveCharToTable(grima);
scn.FreepsMoveCharToTable(aragorn, veowyn);
scn.StartGame();
scn.FreepsPlayCard(aragorn);
scn.FreepsPlayCard(veowyn);
scn.FreepsPlayCard(gandalf);
assertEquals(0, scn.GetFreepsHandCount());
assertTrue(scn.FreepsHasOptionalTriggerAvailable());
scn.FreepsAcceptOptionalTrigger();
assertEquals(1, scn.GetFreepsHandCount());
}
//Shire, Gandalf, Rohan, Gondor
assertEquals(4, scn.GetFreepsCultureCount());
@Test
public void AragornCannotDrawCardAtStartOfTurnIfNoOtherValiantCompanion() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
scn.FreepsPlayCard(vgamling); //Now there are 3 valiants
var aragorn = scn.GetFreepsCard("aragorn");
scn.FreepsMoveCharToTable(aragorn);
//Shire, Gandalf, Rohan, Gondor, -1
assertEquals(3, scn.GetFreepsCultureCount());
scn.StartGame();
scn.SkipToPhase(Phase.MANEUVER);
scn.FreepsPassCurrentPhaseAction();
//Grima now can't see 4 cultures
assertFalse(scn.ShadowActionAvailable(grima));
assertEquals(0, scn.GetFreepsHandCount());
assertFalse(scn.FreepsHasOptionalTriggerAvailable());
}
@Test
public void ExertsToBoostValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
public void AragornExertsToBoostValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var aragorn = scn.GetFreepsCard("aragorn");
var veowyn = scn.GetFreepsCard("veowyn");
scn.FreepsMoveCardToHand(aragorn, veowyn);
scn.FreepsMoveCharToTable(aragorn, veowyn);
var twk = scn.GetShadowCard("twk");
scn.ShadowMoveCardToHand(twk);
scn.ShadowMoveCharToTable(twk);
scn.StartGame();
// Play Aragorn
scn.FreepsPlayCard(aragorn);
assertEquals(4, scn.GetTwilight());
// Play companions of two additional (non-gondor, non-shire) cultures to get to 4 total to spot
scn.FreepsPlayCard(veowyn);
// Get the game state to where Grima is on the table and it's the shadow player's turn during the maneuver phase
scn.SkipToPhase(Phase.SHADOW);
scn.ShadowPlayCard(twk);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.PassCurrentPhaseActions();
@@ -144,56 +127,27 @@ public class Card_V2_016_Tests
assertTrue(scn.FreepsActionAvailable(aragorn));
assertEquals(0, scn.GetWoundsOn(aragorn));
assertEquals(0, scn.GetWoundsOn(veowyn));
assertEquals(6, scn.GetStrength(veowyn));
scn.FreepsUseCardAction(aragorn);
assertEquals(1, scn.GetWoundsOn(aragorn));
assertEquals(0, scn.GetWoundsOn(veowyn));
// strength +2 because Eowyn isn't exhausted
assertEquals(8, scn.GetStrength(veowyn));
// Wound Eowyn twice and have the shadow player pass their skirmish action
scn.AddWoundsToChar(veowyn, 2);
scn.ShadowPassCurrentPhaseAction();
assertTrue(scn.FreepsActionAvailable(aragorn));
assertEquals(1, scn.GetWoundsOn(aragorn));
assertEquals(2, scn.GetWoundsOn(veowyn));
assertEquals(8, scn.GetStrength(veowyn));
scn.FreepsUseCardAction(aragorn);
assertEquals(2, scn.GetWoundsOn(aragorn));
assertEquals(2, scn.GetWoundsOn(veowyn));
// strength +3 because Eowyn isn't exhausted, now all she needs is Merry with a dagger to help her out
assertEquals(11, scn.GetStrength(veowyn));
}
@Test
public void CantExertToBoostNonValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
public void AragornCantExertToBoostNonValiantCompanions() throws DecisionResultInvalidException, CardNotFoundException {
//Pre-game setup
var scn = GetScenario();
var aragorn = scn.GetFreepsCard("aragorn");
var gandalf = scn.GetFreepsCard("gandalf");
scn.FreepsMoveCardToHand(aragorn, gandalf);
scn.FreepsMoveCharToTable(aragorn, gandalf);
var twk = scn.GetShadowCard("twk");
scn.ShadowMoveCardToHand(twk);
scn.ShadowMoveCharToTable(twk);
scn.StartGame();
// Play Aragorn
scn.FreepsPlayCard(aragorn);
assertEquals(4, scn.GetTwilight());
scn.FreepsPlayCard(gandalf);
// Get the game state to where Grima is on the table and it's the shadow player's turn during the maneuver phase
scn.SkipToPhase(Phase.SHADOW);
scn.ShadowPlayCard(twk);
scn.SkipToPhase(Phase.ASSIGNMENT);
scn.PassCurrentPhaseActions();
@@ -201,6 +155,12 @@ public class Card_V2_016_Tests
scn.FreepsResolveSkirmish(gandalf);
// Despite all evidence to the contrary, Gandalf isn't valiant so shouldn't be boostable
assertFalse(scn.FreepsActionAvailable(aragorn));
assertTrue(scn.FreepsActionAvailable(aragorn));
assertEquals(0, scn.GetWoundsOn(aragorn));
assertEquals(8, scn.GetStrength(gandalf));
scn.FreepsUseCardAction(aragorn);
assertEquals(1, scn.GetWoundsOn(aragorn));
assertEquals(8, scn.GetStrength(gandalf));
}
}

View File

@@ -40,8 +40,8 @@ public class Card_V2_021_Tests
* Type: Condition
* Subtype: Support area
* Game Text: When you play this condition, spot a Wizard to add 2 [isengard] tokens here.
* Each time an [isengard] Orc is defeated in a skirmish, add an [isengard] token here.
* Skirmish: Discard this condition (or remove an [isengard] token here) to cancel a skirmish involving an [isengard] Orc.
* Each time an [isengard] Orc is defeated in a skirmish, add an [isengard] token here.
* Skirmish: Discard this condition (or remove two [isengard] tokens here) to cancel a skirmish involving an [isengard] Orc.
*/
var scn = GetScenario();

View File

@@ -39,7 +39,7 @@ public class Card_V2_033_Tests
* Twilight Cost: 8
* Type: Minion
* Subtype: Uruk-hai
* Strength: 15
* Strength: 17
* Vitality: 4
* Site Number: 5
* Game Text: Damage +1.
@@ -61,7 +61,7 @@ public class Card_V2_033_Tests
assertTrue(scn.hasKeyword(card, Keyword.DAMAGE));
assertEquals(1, scn.GetKeywordCount(card, Keyword.DAMAGE));
assertEquals(8, card.getBlueprint().getTwilightCost());
assertEquals(15, card.getBlueprint().getStrength());
assertEquals(17, card.getBlueprint().getStrength());
assertEquals(4, card.getBlueprint().getVitality());
assertEquals(5, card.getBlueprint().getSiteNumber());
}

View File

@@ -42,8 +42,9 @@ public class Card_V2_034_Tests
* Strength: 8
* Vitality: 4
* Site Number: 4
* Game Text: Saruman may not take wounds during the archery phase and may not be assigned to a skirmish.
* Regroup: Exert Saruman and discard an [Isengard] Uruk-hai to take control of a site. The Free Peoples player may reinforce 2 [Isengard] tokens to prevent this.
* Game Text: Saruman may not be assigned to a skirmish.
* Companions skirmishing [Isengard] orcs lose all damage bonuses.
* If an [isengard] orc is about to take a wound, you may exert Saruman to prevent this.
*/
var scn = GetScenario();

View File

@@ -39,11 +39,11 @@ public class Card_V2_062_Tests
* Twilight Cost: 2
* Type: Minion
* Subtype: Orc
* Strength: 5
* Strength: 6
* Vitality: 2
* Site Number: 6
* Game Text: Tracker.
* If this minion's site number is 1 or less, it is strength +4.
* If this minion's site number is 1 or less, it is strength +5.
*/
var scn = GetScenario();
@@ -59,7 +59,7 @@ public class Card_V2_062_Tests
assertEquals(Race.ORC, card.getBlueprint().getRace());
assertTrue(scn.hasKeyword(card, Keyword.TRACKER));
assertEquals(2, card.getBlueprint().getTwilightCost());
assertEquals(5, card.getBlueprint().getStrength());
assertEquals(6, card.getBlueprint().getStrength());
assertEquals(2, card.getBlueprint().getVitality());
assertEquals(6, card.getBlueprint().getSiteNumber());
}