Merge pull request #1 from Tbiesty/card-dev
Help implement FOTR block errata
This commit is contained in:
@@ -66,8 +66,8 @@
|
||||
},
|
||||
"effect": {
|
||||
"type": "heal",
|
||||
"filter": "choose(another,ally,allyHome(fellowship,6))",
|
||||
"count": "0-2"
|
||||
"filter": "choose(ally,allyHome(fellowship,6))",
|
||||
"count": "0-3"
|
||||
}
|
||||
},
|
||||
{
|
||||
@@ -92,7 +92,7 @@
|
||||
"culture": "gandalf",
|
||||
"cost": 1,
|
||||
"type": "ally",
|
||||
"allyHome": "fellowship,1",
|
||||
"allyHome": "fellowship,3",
|
||||
"race": "man",
|
||||
"strength": 2,
|
||||
"vitality": 2,
|
||||
@@ -103,32 +103,90 @@
|
||||
"effects": {
|
||||
"type": "activated",
|
||||
"phase": "fellowship",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": [
|
||||
"cost": [
|
||||
{
|
||||
"type": "discardFromHand",
|
||||
"forced": false,
|
||||
"count": "0-3",
|
||||
"memorize": "discardedCards"
|
||||
"type": "exert",
|
||||
"filter": "self"
|
||||
},
|
||||
{
|
||||
"type": "drawCards",
|
||||
"count": {
|
||||
"type": "forEachInMemory",
|
||||
"memory": "discardedCards"
|
||||
}
|
||||
"type": "discardFromHand",
|
||||
"forced": false
|
||||
}
|
||||
]
|
||||
],
|
||||
"effect": {
|
||||
"type": "drawCards"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"51_108": {
|
||||
"title": "*No Stranger to the Shadows",
|
||||
"culture": "gondor",
|
||||
"cost": 0,
|
||||
"type": "condition",
|
||||
"keyword": [
|
||||
"stealth"
|
||||
],
|
||||
"target": "ranger",
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "site",
|
||||
"amount": -1
|
||||
}
|
||||
}
|
||||
},
|
||||
"51_138": {
|
||||
"title": "Saruman's Snows",
|
||||
"culture": "isengard",
|
||||
"cost": 2,
|
||||
"type": "condition",
|
||||
"keyword": [
|
||||
"spell",
|
||||
"weather"
|
||||
],
|
||||
"target": "site",
|
||||
"effects": [
|
||||
{
|
||||
"type": "extraCost",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(isengard),minion)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "cantPlayPhaseEventsOrPhaseSpecialAbilities",
|
||||
"condition": [
|
||||
{
|
||||
"type": "location",
|
||||
"filter": "hasAttached(self)"
|
||||
},
|
||||
{
|
||||
"type": "canSpot",
|
||||
"filter": "culture(isengard),minion,inSkirmish"
|
||||
}
|
||||
],
|
||||
"phase": "skirmish"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "endOfTurn"
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"51_139": {
|
||||
"title": "Savagery To Match Their Numbers",
|
||||
"culture": "isengard",
|
||||
"cost": 0,
|
||||
"cost": 1,
|
||||
"type": "event",
|
||||
"keyword": "skirmish",
|
||||
"effects": {
|
||||
@@ -137,7 +195,7 @@
|
||||
"type": "choice",
|
||||
"texts": [
|
||||
"Make an Uruk-hai strength +2",
|
||||
"Make an Uruk-hai fierce until the regroup phase, and strength +4 (this skirmish)"
|
||||
"Make an Uruk-hai strength +4, and fierce until the regroup phase"
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
@@ -171,7 +229,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"51_195": {
|
||||
"title": "*Relics of Moria",
|
||||
"culture": "moria",
|
||||
@@ -192,7 +249,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"51_234": {
|
||||
"title": "*Úlairë Nertëa",
|
||||
"subtitle": "Messenger of Dol Guldur",
|
||||
@@ -218,16 +274,15 @@
|
||||
},
|
||||
"effect": {
|
||||
"type": "optional",
|
||||
"text": "Would you like to play minion from your discard?",
|
||||
"text": "Would you like to play a wraith minion from your discard?",
|
||||
"effect": {
|
||||
"type": "playCardFromDiscard",
|
||||
"filter": "choose(nazgul)"
|
||||
"filter": "choose(culture(wraith),minion)"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"51_248": {
|
||||
"title": "Forces of Mordor",
|
||||
"culture": "sauron",
|
||||
@@ -240,21 +295,16 @@
|
||||
"type": "exert",
|
||||
"filter": "choose(culture(sauron),minion)"
|
||||
},
|
||||
"cost": {
|
||||
"type": "chooseHowManyToSpot",
|
||||
"filter": "culture(sauron),minion",
|
||||
"memorize": "spottedCount"
|
||||
},
|
||||
"effect": {
|
||||
"type": "addTwilight",
|
||||
"amount": {
|
||||
"type": "forEachYouCanSpot",
|
||||
"filter": "culture(sauron),orc",
|
||||
"limit": 3
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
"51_311": {
|
||||
"title": "*Sam",
|
||||
"subtitle": "Son of Hamfast",
|
||||
@@ -273,13 +323,11 @@
|
||||
"cost": [
|
||||
{
|
||||
"type": "exert",
|
||||
"filter": "self",
|
||||
"times": 1
|
||||
"filter": "self"
|
||||
},
|
||||
{
|
||||
"type": "exert",
|
||||
"filter": "choose(another,companion)",
|
||||
"times": 1
|
||||
"filter": "choose(another,companion)"
|
||||
}
|
||||
],
|
||||
"effect": {
|
||||
@@ -300,32 +348,6 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"51_108": {
|
||||
"title": "*No Stranger to the Shadows",
|
||||
"culture": "gondor",
|
||||
"cost": 0,
|
||||
"type": "condition",
|
||||
"keyword": [
|
||||
"stealth"
|
||||
],
|
||||
"target": "ranger,not(hasAttached(name(No Stranger to the Shadows)))",
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "site",
|
||||
"amount": -1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
"51_313": {
|
||||
"title": "*Sting",
|
||||
"culture": "shire",
|
||||
@@ -350,13 +372,13 @@
|
||||
"hand": "shadowPlayer",
|
||||
"forced": true,
|
||||
"memorize": "revealedCards",
|
||||
"count":2
|
||||
"count": 4
|
||||
},
|
||||
{
|
||||
"type": "removeTwilight",
|
||||
"amount": {
|
||||
"type": "cardPhaseLimit",
|
||||
"limit": 2,
|
||||
"limit": 2,
|
||||
"amount": {
|
||||
"type": "forEachMatchingInMemory",
|
||||
"memory": "revealedCards",
|
||||
@@ -368,13 +390,12 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"51_316": {
|
||||
"title": "*A Talent for Not Being Seen",
|
||||
"title": "A Talent for Not Being Seen",
|
||||
"culture": "shire",
|
||||
"cost": 0,
|
||||
"type": "condition",
|
||||
"target": "or(name(Merry),name(Pippin))",
|
||||
"target": "or(name(Merry),name(Pippin)),not(hasAttached(name(A Talent for Not Being Seen)))",
|
||||
"keyword": [
|
||||
"stealth"
|
||||
],
|
||||
@@ -383,22 +404,8 @@
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "site",
|
||||
"amount": {
|
||||
"type": "condition",
|
||||
"condition": {
|
||||
"type": "cantSpot",
|
||||
"filter": "companion,not(hobbit)"
|
||||
},
|
||||
"true": -1,
|
||||
"false": 0
|
||||
}
|
||||
"amount": -1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"52_32": {
|
||||
"52_32": {
|
||||
"side": "free_people",
|
||||
"cost": 1,
|
||||
"strength": 1,
|
||||
@@ -17,7 +17,7 @@
|
||||
"phase": "skirmish",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"filter": "bearer,inSkirmishAgainst(Nazgul)",
|
||||
"filter": "bearer,inSkirmishAgainst(Nazgul)"
|
||||
},
|
||||
"cost": [
|
||||
{
|
||||
@@ -30,7 +30,7 @@
|
||||
"filter": "self"
|
||||
}
|
||||
],
|
||||
"effect":[
|
||||
"effect": [
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"filter": "memory(bearer)",
|
||||
@@ -42,10 +42,123 @@
|
||||
"keyword": "damage+1"
|
||||
}
|
||||
]
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"52_75": {
|
||||
"title": "*Bill Ferny",
|
||||
"subtitle": "Swarthy Sneering Fellow",
|
||||
"culture": "wraith",
|
||||
"cost": 2,
|
||||
"type": "minion",
|
||||
"race": "man",
|
||||
"strength": 4,
|
||||
"vitality": 1,
|
||||
"site": 2,
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "removeKeyword",
|
||||
"filter": "nazgul",
|
||||
"keyword": "roaming"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "cantBeAssignedToSkirmishByFpPlayer",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"filter": "hobbit"
|
||||
},
|
||||
"filter": "self"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "condition",
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "underground"
|
||||
}
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"52_101": {
|
||||
"title": "*Filibert Bolger",
|
||||
"subtitle": "Wily Rascal",
|
||||
"culture": "shire",
|
||||
"cost": 1,
|
||||
"type": "ally",
|
||||
"allyHome": "fellowship,1",
|
||||
"race": "hobbit",
|
||||
"strength": 1,
|
||||
"vitality": 2,
|
||||
"effects": {
|
||||
"type": "activated",
|
||||
"phase": "skirmish",
|
||||
"cost": [
|
||||
{
|
||||
"type": "exert",
|
||||
"filter": "choose(hobbit,companion,not(ring bearer))",
|
||||
"times": 2,
|
||||
"memorize": "exertedHobbit"
|
||||
}
|
||||
],
|
||||
"effect": {
|
||||
"type": "cancelSkirmish",
|
||||
"filter": "memory(exertedHobbit),infierceskirmish"
|
||||
}
|
||||
}
|
||||
},
|
||||
"52_108": {
|
||||
"title": "*O Elbereth! Gilthoniel!",
|
||||
"culture": "shire",
|
||||
"cost": 1,
|
||||
"type": "condition",
|
||||
"strength": 1,
|
||||
"keyword": "tale",
|
||||
"target": "ring bearer",
|
||||
"effects": {
|
||||
"type": "activated",
|
||||
"phase": "skirmish",
|
||||
"cost": [
|
||||
{
|
||||
"type": "memorize",
|
||||
"filter": "bearer",
|
||||
"memory": "bearer"
|
||||
},
|
||||
{
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
],
|
||||
"effect": {
|
||||
"type": "choice",
|
||||
"texts": [
|
||||
"Make the Ring-bearer strength +3 if skirmishing a Nazgul",
|
||||
"Take off The One Ring"
|
||||
],
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"filter": "memory(bearer),inSkirmishAgainst(nazgul)",
|
||||
"amount": 3
|
||||
},
|
||||
{
|
||||
"type": "takeOffRing"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"52_121": {
|
||||
"title": "*Gimli",
|
||||
"subtitle": "Dwarf of the Mountain-race",
|
||||
@@ -58,15 +171,27 @@
|
||||
"resistance": 6,
|
||||
"signet": "frodo",
|
||||
"keyword": "damage+1",
|
||||
"effects": {
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "underground,site",
|
||||
"amount": -1
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyCost",
|
||||
"filter": "underground,site",
|
||||
"amount": -1
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "modifyStrength",
|
||||
"amount": 1,
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "underground"
|
||||
},
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,71 @@
|
||||
{
|
||||
"53_42": {
|
||||
"53_17": {
|
||||
"title": "*Galadriel",
|
||||
"subtitle": "Lady of the Golden Wood",
|
||||
"culture": "elven",
|
||||
"cost": 3,
|
||||
"type": "ally",
|
||||
"allyHome": "fellowship,6",
|
||||
"race": "elf",
|
||||
"strength": 3,
|
||||
"vitality": 3,
|
||||
"effects": [
|
||||
{
|
||||
"type": "trigger",
|
||||
"optional": true,
|
||||
"trigger": {
|
||||
"type": "startOfTurn"
|
||||
},
|
||||
"effect": {
|
||||
"type": "heal",
|
||||
"filter": "another,elf"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "activated",
|
||||
"phase": "fellowship",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "self",
|
||||
"times": 2
|
||||
},
|
||||
"effect": {
|
||||
"type": "playNextSite",
|
||||
"filter": "forest"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"53_38": {
|
||||
"title": "*Aragorn",
|
||||
"subtitle": "Heir to the White City",
|
||||
"culture": "Gondor",
|
||||
"type": "companion",
|
||||
"race": "Man",
|
||||
"cost": 4,
|
||||
"strength": 8,
|
||||
"vitality": 4,
|
||||
"resistance": 6,
|
||||
"signet": "frodo",
|
||||
"keyword": [
|
||||
"Ranger"
|
||||
],
|
||||
"effects": {
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "moves"
|
||||
},
|
||||
"condition": {
|
||||
"type": "phase",
|
||||
"phase": "fellowship"
|
||||
},
|
||||
"effect": {
|
||||
"type": "removeTwilight",
|
||||
"amount": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"53_42": {
|
||||
"side": "free_people",
|
||||
"cost": 1,
|
||||
"culture": "Gondor",
|
||||
@@ -12,32 +78,76 @@
|
||||
"cost": [
|
||||
{
|
||||
"type": "exert",
|
||||
"filter": "bearer",
|
||||
"times": 1
|
||||
"filter": "bearer"
|
||||
},
|
||||
{
|
||||
"type": "discard",
|
||||
"filter": "self",
|
||||
},
|
||||
|
||||
"filter": "self"
|
||||
}
|
||||
],
|
||||
"effect":[
|
||||
"effect": [
|
||||
{
|
||||
"type": "modifyStrength",
|
||||
"type": "spot",
|
||||
"filter": "choose(ally)",
|
||||
"amount": 3,
|
||||
"until": "start(regroup)",
|
||||
"memorize": "summonedAlly"
|
||||
"memorize": "chosenAlly"
|
||||
},
|
||||
{
|
||||
"type": "addModifier",
|
||||
"modifier": {
|
||||
"type": "modifyStrength",
|
||||
"filter": "memory(chosenAlly)",
|
||||
"amount": 3,
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "allyCanParticipateInArcheryFireAndSkirmishes",
|
||||
"filter": "memory(summonedAlly)",
|
||||
"filter": "memory(chosenAlly)",
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
"53_67": {
|
||||
"title": "*The Palantir of Orthanc",
|
||||
"culture": "isengard",
|
||||
"cost": 0,
|
||||
"type": "artifact",
|
||||
"possession": "palantir",
|
||||
"keyword": "support area",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"filter": "culture(isengard),minion"
|
||||
},
|
||||
"effects": {
|
||||
"type": "activated",
|
||||
"phase": "shadow",
|
||||
"cost": [
|
||||
{
|
||||
"type": "removeTwilight",
|
||||
"amount": 2
|
||||
},
|
||||
{
|
||||
"type": "canSpot",
|
||||
"count": 2,
|
||||
"memorize": "culture(isengard),minion"
|
||||
}
|
||||
],
|
||||
"effect": [
|
||||
{
|
||||
"type": "revealRandomCardsFromHand",
|
||||
"forced": true,
|
||||
"hand": "fp",
|
||||
"count": 1,
|
||||
"memorize": "revealedCard"
|
||||
},
|
||||
{
|
||||
"type": "putCardsFromHandOnTopOfDeck",
|
||||
"filter": "choose(memory(revealedCard))"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"53_68": {
|
||||
"side": "shadow",
|
||||
"site": 4,
|
||||
@@ -50,13 +160,6 @@
|
||||
"title": "*Saruman",
|
||||
"type": "minion",
|
||||
"effects": [
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "cantbeassignedtoskirmish",
|
||||
"filter": "self"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
@@ -68,6 +171,27 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "modifier",
|
||||
"modifier": {
|
||||
"type": "cantbeassignedtoskirmish",
|
||||
"filter": "self"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "activated",
|
||||
"phase": "maneuver",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "self"
|
||||
},
|
||||
"effect": {
|
||||
"type": "addKeyword",
|
||||
"filter": "choose(uruk-hai)",
|
||||
"keyword": "fierce",
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "activatedTrigger",
|
||||
"trigger": {
|
||||
@@ -76,73 +200,22 @@
|
||||
},
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "self",
|
||||
"times": 1
|
||||
"filter": "self"
|
||||
},
|
||||
"effect":
|
||||
{
|
||||
"type": "preventWound",
|
||||
"filter": "choose(uruk-hai)"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "activated",
|
||||
"phase": "maneuver",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "self",
|
||||
"times": 1
|
||||
},
|
||||
"effect": {
|
||||
"type": "addKeyword",
|
||||
"filter": "choose(uruk-hai)",
|
||||
"keyword": "fierce",
|
||||
"until": "start(regroup)"
|
||||
}
|
||||
},
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
"53_38": {
|
||||
"side": "free_people",
|
||||
"title": "*Aragorn",
|
||||
"subtitle": "Heir to the White City",
|
||||
"culture": "Gondor",
|
||||
"type": "companion",
|
||||
"race": "Man",
|
||||
"cost": 4,
|
||||
"strength": 8,
|
||||
"vitality": 4,
|
||||
"resistance": 6,
|
||||
"signet": "frodo",
|
||||
"keyword": [
|
||||
"Ranger",
|
||||
],
|
||||
"effects": {
|
||||
"type": "trigger",
|
||||
"optional": false,
|
||||
"trigger": {
|
||||
"type": "movesfrom"
|
||||
},
|
||||
"condition": {
|
||||
"type": "phase",
|
||||
"phase": "fellowship"
|
||||
},
|
||||
"effect": {
|
||||
"type": "removeTwilight",
|
||||
"amount": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
"53_106": {
|
||||
"title": "*Bill the Pony",
|
||||
"culture": "Shire",
|
||||
"side": "free_people",
|
||||
"cost": 0,
|
||||
"type": "possession",
|
||||
"possession": "Pony",
|
||||
"keyword": [
|
||||
"stealth"
|
||||
],
|
||||
@@ -160,22 +233,72 @@
|
||||
"type": "trigger",
|
||||
"trigger": {
|
||||
"type": "condition",
|
||||
"condition": [
|
||||
{
|
||||
"type": "location",
|
||||
"filter": "underground"
|
||||
},
|
||||
{
|
||||
"type": "canSpot",
|
||||
"filter": "self,attachedTo(companion)"
|
||||
}
|
||||
]
|
||||
"condition": {
|
||||
"type": "location",
|
||||
"filter": "underground"
|
||||
}
|
||||
},
|
||||
"effect": {
|
||||
"type": "discard",
|
||||
"filter": "self"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
]
|
||||
},
|
||||
"53_108": {
|
||||
"title": "Frying Pan",
|
||||
"culture": "Shire",
|
||||
"cost": 1,
|
||||
"type": "possession",
|
||||
"possession": "hand weapon",
|
||||
"strength": 1,
|
||||
"target": "hobbit",
|
||||
"effects": {
|
||||
"type": "activated",
|
||||
"phase": "skirmish",
|
||||
"cost": {
|
||||
"type": "exert",
|
||||
"filter": "bearer"
|
||||
},
|
||||
"effect": {
|
||||
"type": "wound",
|
||||
"filter": "choose(orc,inSkirmishAgainst(bearer))"
|
||||
}
|
||||
}
|
||||
},
|
||||
"53_113": {
|
||||
"title": "*The Shire Countryside",
|
||||
"culture": "shire",
|
||||
"cost": 1,
|
||||
"type": "condition",
|
||||
"keyword": "support area",
|
||||
"condition": {
|
||||
"type": "canSpot",
|
||||
"count": 2,
|
||||
"filter": "culture(shire),companion"
|
||||
},
|
||||
"effects": {
|
||||
"type": "trigger",
|
||||
"optional": true,
|
||||
"trigger": {
|
||||
"type": "removesBurden",
|
||||
"filter": "not(hobbit)"
|
||||
},
|
||||
"condition": {
|
||||
"type": "perPhaseLimit",
|
||||
"limit": 1
|
||||
},
|
||||
"effect": [
|
||||
{
|
||||
"type": "incrementPerPhaseLimit",
|
||||
"limit": 1
|
||||
},
|
||||
{
|
||||
"type": "heal",
|
||||
"count": "0-2",
|
||||
"filter": "choose(companion)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,10 +2,14 @@ package com.gempukku.lotro.cards.build.field.effect.appender;
|
||||
|
||||
import com.gempukku.lotro.cards.build.ActionContext;
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.FilterableSource;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.EffectAppender;
|
||||
import com.gempukku.lotro.cards.build.field.effect.EffectAppenderProducer;
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.filters.Filter;
|
||||
import com.gempukku.lotro.filters.Filters;
|
||||
import com.gempukku.lotro.game.PhysicalCard;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.actions.CostToEffectAction;
|
||||
@@ -16,23 +20,44 @@ import org.json.simple.JSONObject;
|
||||
public class PlayNextSite implements EffectAppenderProducer {
|
||||
@Override
|
||||
public EffectAppender createEffectAppender(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "memorize");
|
||||
|
||||
FieldUtils.validateAllowedFields(effectObject, "filter", "memorize");
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter", "any");
|
||||
final String memorize = FieldUtils.getString(effectObject.get("memorize"), "memorize");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
|
||||
return new DelayedAppender() {
|
||||
@Override
|
||||
public boolean isPlayableInFull(ActionContext actionContext) {
|
||||
final LotroGame game = actionContext.getGame();
|
||||
final int currentSiteNumber = game.getGameState().getCurrentSiteNumber();
|
||||
final PhysicalCard nextSite = game.getGameState().getSite(currentSiteNumber + 1);
|
||||
return currentSiteNumber < 9
|
||||
&& (nextSite == null || game.getModifiersQuerying().canReplaceSite(game, actionContext.getPerformingPlayer(), nextSite));
|
||||
final int nextSiteNumber = game.getGameState().getCurrentSiteNumber() + 1;
|
||||
final PhysicalCard nextSite = game.getGameState().getSite(nextSiteNumber);
|
||||
final Filterable filterable = filterableSource.getFilterable(actionContext);
|
||||
final String playerId = actionContext.getPerformingPlayer();
|
||||
|
||||
if (nextSiteNumber > 9 || nextSiteNumber < 1)
|
||||
return false;
|
||||
|
||||
if (nextSite != null && !game.getModifiersQuerying().canReplaceSite(game, actionContext.getPerformingPlayer(), nextSite))
|
||||
return false;
|
||||
|
||||
if (game.getFormat().isOrderedSites()) {
|
||||
Filter printedSiteNumber = new Filter() {
|
||||
@Override
|
||||
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
|
||||
return physicalCard.getBlueprint().getSiteNumber() == nextSiteNumber;
|
||||
}
|
||||
};
|
||||
return Filters.filter(game.getGameState().getAdventureDeck(playerId), game, Filters.and(filterable, printedSiteNumber)).size() > 0;
|
||||
} else {
|
||||
return Filters.filter(game.getGameState().getAdventureDeck(playerId), game, filterable).size() > 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Effect createEffect(boolean cost, CostToEffectAction action, ActionContext actionContext) {
|
||||
return new PlayNextSiteEffect(action, actionContext.getPerformingPlayer()) {
|
||||
final Filterable filterable = filterableSource.getFilterable(actionContext);
|
||||
return new PlayNextSiteEffect(action, actionContext.getPerformingPlayer(), filterable) {
|
||||
@Override
|
||||
protected void sitePlayedCallback(PhysicalCard site) {
|
||||
if (memorize != null) {
|
||||
|
||||
@@ -41,6 +41,7 @@ public class FilterFactory {
|
||||
simpleFilters.put("unwounded", (actionContext) -> Filters.unwounded);
|
||||
simpleFilters.put("exhausted", (actionContext) -> Filters.exhausted);
|
||||
simpleFilters.put("inskirmish", (actionContext) -> Filters.inSkirmish);
|
||||
simpleFilters.put("infierceskirmish", (actionContext) -> Filters.inFierceSkirmish);
|
||||
simpleFilters.put("inplay", (actionContext) -> Filters.inPlay);
|
||||
simpleFilters.put("notassignedtoskirmish",
|
||||
(actionContext) -> Filters.notAssignedToSkirmish);
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.modifier;
|
||||
|
||||
import com.gempukku.lotro.cards.build.*;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.cards.build.field.effect.appender.MultiEffectAppender;
|
||||
import com.gempukku.lotro.logic.modifiers.CantBeAssignedToSkirmishModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier;
|
||||
import com.gempukku.lotro.logic.modifiers.Modifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class FreePeoplePlayerMayNotAssignCharacter implements ModifierSourceProducer {
|
||||
|
||||
@Override
|
||||
public ModifierSource getModifierSource(JSONObject effectObject, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(effectObject, "filter", "condition");
|
||||
|
||||
final JSONObject[] conditionArray = FieldUtils.getObjectArray(effectObject.get("condition"), "condition");
|
||||
final String filter = FieldUtils.getString(effectObject.get("filter"), "filter");
|
||||
|
||||
final FilterableSource filterableSource = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
final Requirement[] requirements = environment.getRequirementFactory().getRequirements(conditionArray, environment);
|
||||
|
||||
MultiEffectAppender result = new MultiEffectAppender();
|
||||
|
||||
return new ModifierSource() {
|
||||
@Override
|
||||
public Modifier getModifier(ActionContext actionContext) {
|
||||
return new FreePeoplePlayerMayNotAssignCharacterModifier(actionContext.getSource(),
|
||||
new RequirementCondition(requirements, actionContext),
|
||||
filterableSource.getFilterable(actionContext));
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,7 @@ import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.ModifierSource;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.logic.modifiers.FreePeoplePlayerMayNotAssignCharacterModifier;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
import java.util.HashMap;
|
||||
@@ -55,6 +56,7 @@ public class ModifierSourceFactory {
|
||||
modifierProducers.put("allycanparticipateinarcheryfireandskirmishes", new AllyCanParticipateInArcheryFireAndSkirmishes());
|
||||
modifierProducers.put("cantlookorrevealhand", new CantLookOrRevealHand());
|
||||
modifierProducers.put("cantbeassignedtoskirmish", new CantBeAssignedToSkirmish());
|
||||
modifierProducers.put("fpplayermaynotassigncharacter", new FreePeoplePlayerMayNotAssignCharacter());
|
||||
}
|
||||
|
||||
public ModifierSource getModifier(JSONObject object, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.gempukku.lotro.cards.build.field.effect.trigger;
|
||||
|
||||
import com.gempukku.lotro.cards.build.ActionContext;
|
||||
import com.gempukku.lotro.cards.build.CardGenerationEnvironment;
|
||||
import com.gempukku.lotro.cards.build.FilterableSource;
|
||||
import com.gempukku.lotro.cards.build.InvalidCardDefinitionException;
|
||||
import com.gempukku.lotro.cards.build.field.FieldUtils;
|
||||
import com.gempukku.lotro.logic.timing.TriggerConditions;
|
||||
import org.json.simple.JSONObject;
|
||||
|
||||
public class RemovesBurden implements TriggerCheckerProducer {
|
||||
@Override
|
||||
public TriggerChecker getTriggerChecker(JSONObject value, CardGenerationEnvironment environment) throws InvalidCardDefinitionException {
|
||||
FieldUtils.validateAllowedFields(value, "filter");
|
||||
|
||||
String filter = FieldUtils.getString(value.get("filter"), "filter", "any");
|
||||
|
||||
final FilterableSource sourceFilter = environment.getFilterFactory().generateFilter(filter, environment);
|
||||
|
||||
return new TriggerChecker() {
|
||||
@Override
|
||||
public boolean accepts(ActionContext actionContext) {
|
||||
return TriggerConditions.removedBurden(actionContext.getGame(), actionContext.getEffectResult(),
|
||||
sourceFilter.getFilterable(actionContext));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isBefore() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -39,6 +39,7 @@ public class TriggerCheckerFactory {
|
||||
triggerCheckers.put("discardfromhand", new DiscardFromHand());
|
||||
triggerCheckers.put("putsonring", new PutsOnRing());
|
||||
triggerCheckers.put("addsburden", new AddsBurden());
|
||||
triggerCheckers.put("removesburden", new RemovesBurden());
|
||||
triggerCheckers.put("addsthreat", new AddsThreat());
|
||||
triggerCheckers.put("transferred", new Transferred());
|
||||
triggerCheckers.put("killed", new Killed());
|
||||
|
||||
@@ -431,6 +431,18 @@ public class Filters {
|
||||
}
|
||||
};
|
||||
|
||||
public static final Filter inFierceSkirmish = new Filter() {
|
||||
@Override
|
||||
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
|
||||
Skirmish skirmish = game.getGameState().getSkirmish();
|
||||
if (skirmish != null && game.getGameState().isFierceSkirmishes()) {
|
||||
return (skirmish.getFellowshipCharacter() == physicalCard)
|
||||
|| skirmish.getShadowCharacters().contains(physicalCard);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
public static final Filter inPlay = new Filter() {
|
||||
@Override
|
||||
public boolean accepts(LotroGame game, PhysicalCard physicalCard) {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.gempukku.lotro.logic.effects;
|
||||
|
||||
import com.gempukku.lotro.common.Filterable;
|
||||
import com.gempukku.lotro.game.state.LotroGame;
|
||||
import com.gempukku.lotro.logic.timing.Action;
|
||||
|
||||
@@ -8,6 +9,10 @@ public class PlayNextSiteEffect extends PlaySiteEffect {
|
||||
super(action, playerId, null, 0);
|
||||
}
|
||||
|
||||
public PlayNextSiteEffect(Action action, String playerId, Filterable... extraSiteFilters) {
|
||||
super(action, playerId, null, 0, extraSiteFilters);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getSiteNumberToPlay(LotroGame game) {
|
||||
return game.getGameState().getCurrentSiteNumber() + 1;
|
||||
|
||||
@@ -108,6 +108,14 @@ public class TriggerConditions {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean removedBurden(LotroGame game, EffectResult effectResult, Filterable... sourceFilters) {
|
||||
if (effectResult.getType() == EffectResult.Type.REMOVE_BURDEN) {
|
||||
RemoveBurdenResult burdenResult = (RemoveBurdenResult) effectResult;
|
||||
return (Filters.and(sourceFilters).accepts(game, burdenResult.getSource()));
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static boolean addedThreat(LotroGame game, EffectResult effectResult, Filterable... sourceFilters) {
|
||||
if (effectResult.getType() == EffectResult.Type.ADD_THREAT) {
|
||||
AddThreatResult burdenResult = (AddThreatResult) effectResult;
|
||||
|
||||
Reference in New Issue
Block a user