fertig-classic-games/data/swdbg-cards.json

358 lines
35 KiB
JSON

{
"_readme": [
"Star Wars: The Deckbuilding Game — full card data. This file is the single",
"source of truth for every card: edit stats/text here and the game engine",
"picks the changes up on the next page load (no rebuild needed).",
"",
"Galaxy cards were transcribed from the owner's physical set",
"(assets/info/sw-force-cards.csv). tools/verifySWDBG.js cross-checks this",
"file against that CSV, so keep the two in sync when editing.",
"",
"CARD FIELDS:",
" id unique lowercase key (do not change once art is mapped)",
" name display name",
" faction 'empire' | 'rebel' | 'neutral'",
" type 'unit' | 'capital' (capital ships stay in play, have hp)",
" unique true = Hero card (CSV 'Hero' column): gold inset, and what",
" Hero-matters abilities (Chewbacca, Millennium Falcon) look for",
" traits flavor tags referenced by abilities (Fighter, Trooper, ...)",
" cost purchase cost in resources",
" attack / resources / force printed values gained when played",
" hp capital ships only — damage needed to destroy it in play",
" count copies in the galaxy deck",
" target attack needed to bounty-hunt/sabotage it in the row (faction",
" units only; neutral cards and capital ships use null)",
" reward what the defeater gains:",
" { resources?, force?, draw?, exile?, freePurchase? } or null",
" exile: n = exile up to n cards from your hand/discard",
" freePurchase: true = purchase a card of your faction for free",
" ability machine-readable effect (see OPS below) or null",
" text display-only rules text — keep in sync with `ability`",
"",
"ABILITY SHAPE: { timing, op, ...params, cost?, ...gates? }",
" timing 'action' = use once per turn while in play (the default)",
" 'constant' = always on while in play ('While ...')",
" 'onPlay' = triggers when the card is played",
" 'onBounty' = triggers when THIS card helps defeat a galaxy-row",
" target ('When X defeats ...')",
" 'onPurchase' = triggers when you purchase this card",
" 'onReveal' = bases only: when the base is revealed",
" cost paid before the op resolves; any of:",
" { exileSelf: true } exile this card from play",
" { exileFromHand: 1 } exile a card from your hand",
" { discardFromHand: 1 } discard a card from your hand",
" GATES (usable/fires only while true; combine freely):",
" requiresForce: true the Force is with you",
" requiresCapital: true you have a capital ship in play",
" requiresOppCapital: true your OPPONENT has a capital ship in play",
" requiresTraitInPlay: [...] you have a card with any listed trait in play",
" requiresOtherHero: true you have another Hero unit in play",
" nForce / amountForce = upgraded number while the Force is with you",
"",
"SUPPORTED OPS (the engine understands exactly these):",
" draw{n,nForce,nBase,nWithCard} draw cards. nBase:{base,n} = n while your",
" base is that id; nWithCard:{id,n} = n while the",
" named card is in your play area",
" gainResources{n,nForce} add resources to your pool this turn",
" gainForce{n} move the Force marker toward you",
" gainAttack{n,nForce} this card gains attack this turn",
" damageBase{n,nForce} damage enemy base directly (ignores capitals)",
" dealDamage{n} deal n damage to the enemy base OR one enemy",
" capital ship in play (attacker picks)",
" repairBase{n} remove damage from your base",
" oppDiscard{n,randomForce} opponent discards (random while Force is w/ you)",
" oppChoice{options} OPPONENT picks one option; each option is",
" {kind:'discardSelf'} (they discard 1),",
" {kind:'giveForce',n} (you gain n Force), or",
" {kind:'attackBoost',n} (this card gains n attack)",
" discardRow{} discard a card from the galaxy row (no reward)",
" destroyCapital{scope} destroy a capital ship. scope 'oppPlay' = only",
" ones your opponent has in play; 'any' = also",
" enemy capitals in the galaxy row",
" exileCards{n,nForce,optional} exile up to n cards from your hand/discard",
" freePurchase{faction,maxCost,forceTopdeck} take a row card for free",
" buyGalaxyDiscard{} purchase a card from the galaxy discard pile,",
" paying its cost, as if it were in the row",
" topdeckNextPurchase{} the next card you purchase this turn goes on",
" top of your deck instead of your discard",
" recoverDiscard{filter} return a card from your discard to your hand;",
" filter {trait:'X'} or {heroUnit:true}",
" lookTop{mayDiscard} look at top of galaxy deck, optionally discard",
" lookTopSwap{} look at top of galaxy deck; while the Force is",
" with you, you may swap it with a galaxy-row card",
" lookOppHand{forceTopdeck} look at opponent's hand; while the Force is with",
" you, put 1 card from it on top of their deck",
" takeRowTemp{faction} add a row card of that faction to your hand;",
" it is exiled at the end of your turn",
" revealTop{onMine} reveal top of galaxy deck; if it matches your",
" faction resolve onMine ({op:'gainForce'|'draw'|",
" 'gainResources', n}), if enemy you may discard",
" it, if neutral nothing happens",
" choose{options:[...]} pick one of the sub-abilities (2 or more)",
" multi{effects:[...]} resolve each sub-effect in order; a sub-effect",
" with its own gate (e.g. requiresForce) is",
" skipped when the gate fails",
" traitBoost{trait,amount} constant: your units with trait get +attack",
" typeBoost{cardType,amount} constant: your cards of that type ('capital'",
" or 'unit') get +attack",
" rowBonus{amount} constant: +attack when attacking the galaxy row",
" selfBoostWhileForce{amount} constant: +attack while the Force is with you",
" selfBoostWithTrait{trait,amount} constant: +attack while you have another",
" card with the trait in play",
" selfBoostPerBaseLost{amount} constant: +attack per base you have lost",
" capitalDiscount{n} constant (bases): your capital ships cost less",
" onPlayTraitAttack{trait,amount} constant (bases): played units with the",
" trait gain +attack",
"",
"BASES: hp, starting (true = begin the game with it), ability (onReveal /",
"constant / action ops above), text. Beginner game uses these five per side;",
"add more entries to play Full Galaxy mode."
],
"meta": {
"basesToWin": 3,
"handSize": 5,
"galaxyRowSize": 6,
"forceSpaces": 3,
"forceStartsWith": "rebel"
},
"starters": {
"rebel": [
{ "id": "allianceshuttle", "count": 7 },
{ "id": "rebeltrooper", "count": 2 },
{ "id": "templeguardian", "count": 1 }
],
"empire": [
{ "id": "imperialshuttle", "count": 7 },
{ "id": "stormtrooper", "count": 2 },
{ "id": "inquisitor", "count": 1 }
]
},
"starterCards": [
{ "id": "allianceshuttle", "name": "Alliance Shuttle", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Transport"], "cost": 0, "attack": 0, "resources": 1, "force": 0, "target": null, "reward": null, "ability": null,
"text": "The workhorse of the Rebellion's supply lines." },
{ "id": "rebeltrooper", "name": "Rebel Trooper", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 0, "attack": 2, "resources": 0, "force": 0, "target": null, "reward": null, "ability": null,
"text": "Rebels don't wait for the odds to look good." },
{ "id": "templeguardian", "name": "Temple Guardian", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Guardian"], "cost": 0, "attack": 1, "resources": 0, "force": 1, "target": null, "reward": null, "ability": null,
"text": "The Force is with me, and I am one with the Force." },
{ "id": "imperialshuttle", "name": "Imperial Shuttle", "faction": "empire", "type": "unit", "unique": false, "traits": ["Transport"], "cost": 0, "attack": 0, "resources": 1, "force": 0, "target": null, "reward": null, "ability": null,
"text": "Cleared for landing on platform 327." },
{ "id": "stormtrooper", "name": "Stormtrooper", "faction": "empire", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 0, "attack": 2, "resources": 0, "force": 0, "target": null, "reward": null, "ability": null,
"text": "Precision aim is a myth. Overwhelming numbers are not." },
{ "id": "inquisitor", "name": "Inquisitor", "faction": "empire", "type": "unit", "unique": false, "traits": ["Sith"], "cost": 0, "attack": 1, "resources": 0, "force": 1, "target": null, "reward": null, "ability": null,
"text": "There are things far worse than death." }
],
"outerRimPilot": {
"id": "outerrimpilot", "name": "Outer Rim Pilot", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Pilot"], "cost": 2, "attack": 0, "resources": 2, "force": 0, "count": 10, "target": null, "reward": null,
"ability": { "timing": "action", "op": "gainResources", "n": 1, "cost": { "exileSelf": true } },
"text": "Exile Outer Rim Pilot to gain 1 resource."
},
"cards": [
{ "id": "z95headhunter", "name": "Z-95 Headhunter", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 1, "attack": 2, "resources": 0, "force": 0, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "draw", "n": 1, "requiresOppCapital": true },
"text": "If your opponent has a capital ship in play, draw 1 card." },
{ "id": "jawascavenger", "name": "Jawa Scavenger", "faction": "neutral", "type": "unit", "unique": false, "traits": [], "cost": 1, "attack": 0, "resources": 2, "force": 0, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "buyGalaxyDiscard", "cost": { "exileSelf": true } },
"text": "Exile this unit to purchase a card from the galaxy discard pile as if it were in the galaxy row." },
{ "id": "rodiangunslinger", "name": "Rodian Gunslinger", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Bounty Hunter"], "cost": 2, "attack": 2, "resources": 0, "force": 0, "count": 2, "target": null, "reward": null,
"ability": { "timing": "constant", "op": "rowBonus", "amount": 2 },
"text": "This unit gains 2 attack while attacking a target in the galaxy row." },
{ "id": "keldormystic", "name": "Kel Dor Mystic", "faction": "neutral", "type": "unit", "unique": false, "traits": [], "cost": 2, "attack": 0, "resources": 0, "force": 2, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "exileCards", "n": 1, "optional": true, "cost": { "exileSelf": true } },
"text": "Exile this unit to exile 1 card from your hand or discard pile." },
{ "id": "lobot", "name": "Lobot", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 3, "attack": 0, "resources": 0, "force": 0, "count": 1, "target": null, "reward": null,
"ability": { "timing": "onPlay", "op": "choose", "options": [ { "op": "gainAttack", "n": 2 }, { "op": "gainResources", "n": 2 }, { "op": "gainForce", "n": 2 } ] },
"text": "When you play Lobot, choose: he gains 2 attack, 2 resources, or 2 Force this turn." },
{ "id": "bossk", "name": "Bossk", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Bounty Hunter"], "cost": 3, "attack": 3, "resources": 0, "force": 0, "count": 1, "target": null, "reward": null,
"ability": { "timing": "onBounty", "op": "gainForce", "n": 1 },
"text": "When Bossk defeats a target in the galaxy row, gain 1 Force." },
{ "id": "fangfighter", "name": "Fang Fighter", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 3, "attack": 3, "resources": 0, "force": 0, "count": 2, "target": null, "reward": null,
"ability": { "timing": "onPurchase", "op": "multi", "effects": [ { "op": "purchaseToHand" }, { "op": "draw", "n": 1, "requiresForce": true } ] },
"text": "When you purchase this unit, add it to your hand (and draw 1 card if the Force is with you)." },
{ "id": "twileksmuggler", "name": "Twi'lek Smuggler", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Scoundrel"], "cost": 3, "attack": 0, "resources": 3, "force": 0, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "topdeckNextPurchase" },
"text": "Place the next card you purchase this turn on top of your deck." },
{ "id": "crocruiser", "name": "C-ROC Cruiser", "faction": "neutral", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 3, "attack": 0, "resources": 1, "force": 0, "hp": 3, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "repairBase", "n": 3, "cost": { "discardFromHand": 1 } },
"text": "Discard 1 card from your hand to repair 3 damage from your base." },
{ "id": "dengar", "name": "Dengar", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Bounty Hunter"], "cost": 4, "attack": 4, "resources": 0, "force": 0, "count": 1, "target": null, "reward": null,
"ability": { "timing": "onBounty", "op": "gainResources", "n": 2 },
"text": "When Dengar defeats a target in the galaxy row, gain 2 resources." },
{ "id": "quarrenmercenary", "name": "Quarren Mercenary", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 4, "attack": 4, "resources": 0, "force": 0, "count": 2, "target": null, "reward": null,
"ability": { "timing": "onPurchase", "op": "exileCards", "n": 1, "nForce": 2, "optional": true },
"text": "When you purchase this unit, exile 1 card from your hand or discard pile (up to 2 cards instead if the Force is with you)." },
{ "id": "hwk290", "name": "HWK-290", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Transport"], "cost": 4, "attack": 0, "resources": 4, "force": 0, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "repairBase", "n": 4, "cost": { "exileSelf": true } },
"text": "Exile this unit to repair 4 damage from your base." },
{ "id": "blockaderunner", "name": "Blockade Runner", "faction": "neutral", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 4, "attack": 1, "resources": 1, "force": 0, "hp": 4, "count": 3, "target": null, "reward": null,
"ability": null,
"text": "Though designed as a diplomatic courier, the Corellian CR90 corvette is often used to run planetary blockades." },
{ "id": "ig88", "name": "IG-88", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Bounty Hunter", "Droid"], "cost": 5, "attack": 5, "resources": 0, "force": 0, "count": 1, "target": null, "reward": null,
"ability": { "timing": "onBounty", "op": "exileCards", "n": 1, "optional": true },
"text": "When IG-88 defeats a target in the galaxy row, exile 1 card from your hand or discard pile." },
{ "id": "nebulonbfrigate", "name": "Nebulon-B Frigate", "faction": "neutral", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 5, "attack": 0, "resources": 0, "force": 0, "hp": 5, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "choose", "options": [ { "op": "repairBase", "n": 3 }, { "op": "gainResources", "n": 3 } ] },
"text": "Choose: repair 3 damage from your base, or gain 3 resources." },
{ "id": "landocalrissian", "name": "Lando Calrissian", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Scoundrel"], "cost": 6, "attack": 3, "resources": 3, "force": 0, "count": 1, "target": null, "reward": null,
"ability": { "timing": "action", "op": "multi", "effects": [ { "op": "draw", "n": 1 }, { "op": "oppDiscard", "n": 1, "requiresForce": true } ] },
"text": "Draw 1 card. If the Force is with you, your opponent discards 1 card from their hand." },
{ "id": "jabbassailbarge", "name": "Jabba's Sail Barge", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Vehicle"], "cost": 7, "attack": 4, "resources": 3, "force": 0, "count": 1, "target": null, "reward": null,
"ability": { "timing": "action", "op": "recoverDiscard", "filter": { "trait": "Bounty Hunter" } },
"text": "Add a Bounty Hunter from your discard pile to your hand." },
{ "id": "jabbathehutt", "name": "Jabba the Hutt", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Scoundrel"], "cost": 8, "attack": 2, "resources": 2, "force": 2, "count": 1, "target": null, "reward": null,
"ability": { "timing": "action", "op": "draw", "n": 1, "nForce": 2, "cost": { "exileFromHand": 1 } },
"text": "Exile 1 card from your hand to draw 1 card (2 cards instead if the Force is with you)." },
{ "id": "ywing", "name": "Y-Wing", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 1, "attack": 2, "resources": 0, "force": 0, "count": 2, "target": 1, "reward": { "resources": 2 },
"ability": { "timing": "action", "op": "dealDamage", "n": 2, "cost": { "exileSelf": true } },
"text": "Exile this unit to deal 2 damage to your opponent's base or a capital ship they have in play." },
{ "id": "bazemalbus", "name": "Baze Malbus", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Trooper"], "cost": 2, "attack": 2, "resources": 0, "force": 0, "count": 1, "target": 2, "reward": { "force": 1 },
"ability": { "timing": "constant", "op": "selfBoostPerBaseLost", "amount": 1 },
"text": "Baze Malbus gains 1 attack for each Rebel base in your opponent's victory pile." },
{ "id": "snowspeeder", "name": "Snowspeeder", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Vehicle"], "cost": 2, "attack": 2, "resources": 0, "force": 0, "count": 2, "target": 2, "reward": { "exile": 1 },
"ability": { "timing": "action", "op": "oppDiscard", "n": 1 },
"text": "Your opponent discards 1 card from their hand." },
{ "id": "durosspy", "name": "Duros Spy", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 2, "attack": 0, "resources": 2, "force": 0, "count": 2, "target": 2, "reward": { "exile": 1 },
"ability": { "timing": "action", "op": "oppChoice", "options": [ { "kind": "discardSelf" }, { "kind": "giveForce", "n": 1 } ] },
"text": "Your opponent must choose: either they discard 1 card from their hand, or you gain 1 Force." },
{ "id": "rebeltransport", "name": "Rebel Transport", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 2, "attack": 0, "resources": 0, "force": 0, "hp": 2, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "choose", "options": [ { "op": "repairBase", "n": 2 }, { "op": "gainResources", "n": 1 } ] },
"text": "Choose: repair 2 damage from your base, or gain 1 resource." },
{ "id": "chirrutimwe", "name": "Chirrut Îmwe", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 3, "attack": 0, "resources": 0, "force": 2, "count": 1, "target": 3, "reward": { "force": 2 },
"ability": { "timing": "constant", "op": "selfBoostWhileForce", "amount": 2 },
"text": "While the Force is with you, Chirrut Îmwe gains 2 attack." },
{ "id": "rebelcommando", "name": "Rebel Commando", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 3, "attack": 3, "resources": 0, "force": 0, "count": 2, "target": 3, "reward": { "force": 2 },
"ability": { "timing": "action", "op": "oppDiscard", "n": 1, "randomForce": true },
"text": "Your opponent discards 1 card from their hand (at random if the Force is with you)." },
{ "id": "xwing", "name": "X-Wing", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 3, "attack": 3, "resources": 0, "force": 0, "count": 3, "target": 3, "reward": { "resources": 3 },
"ability": { "timing": "action", "op": "draw", "n": 1, "requiresForce": true },
"text": "If the Force is with you, draw 1 card." },
{ "id": "chewbacca", "name": "Chewbacca", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Scoundrel"], "cost": 4, "attack": 5, "resources": 0, "force": 0, "count": 1, "target": 4, "reward": { "force": 3 },
"ability": { "timing": "action", "op": "draw", "n": 1, "requiresOtherHero": true },
"text": "If you have another Hero unit in play, draw 1 card." },
{ "id": "jynerso", "name": "Jyn Erso", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Scoundrel"], "cost": 4, "attack": 4, "resources": 0, "force": 0, "count": 1, "target": 4, "reward": { "force": 3 },
"ability": { "timing": "action", "op": "lookOppHand", "forceTopdeck": true },
"text": "Look at your opponent's hand. If the Force is with you, place 1 card from their hand on top of their deck." },
{ "id": "uwing", "name": "U-Wing", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Transport"], "cost": 4, "attack": 0, "resources": 3, "force": 0, "count": 2, "target": 4, "reward": { "resources": 4 },
"ability": { "timing": "action", "op": "repairBase", "n": 3, "requiresForce": true },
"text": "If the Force is with you, repair 3 damage from your base." },
{ "id": "hammerheadcorvette", "name": "Hammerhead Corvette", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 4, "attack": 0, "resources": 2, "force": 0, "hp": 4, "count": 2, "target": null, "reward": null,
"ability": { "timing": "action", "op": "destroyCapital", "scope": "any", "cost": { "exileSelf": true } },
"text": "Exile this capital ship to destroy a capital ship your opponent has in play, or an enemy capital ship in the galaxy row." },
{ "id": "hansolo", "name": "Han Solo", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Scoundrel"], "cost": 5, "attack": 3, "resources": 2, "force": 0, "count": 1, "target": 5, "reward": { "resources": 3, "force": 2 },
"ability": { "timing": "action", "op": "draw", "n": 1, "nWithCard": { "id": "millenniumfalcon", "n": 2 } },
"text": "Draw 1 card (2 cards instead if you have the Millennium Falcon in play)." },
{ "id": "cassianandor", "name": "Cassian Andor", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Trooper"], "cost": 5, "attack": 5, "resources": 0, "force": 0, "count": 1, "target": 5, "reward": { "resources": 3, "force": 2 },
"ability": { "timing": "onBounty", "op": "oppDiscard", "n": 1 },
"text": "When Cassian Andor defeats a target in the galaxy row, your opponent discards 1 card from their hand." },
{ "id": "bwing", "name": "B-Wing", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 5, "attack": 5, "resources": 0, "force": 0, "count": 2, "target": 5, "reward": { "exile": 2 },
"ability": { "timing": "action", "op": "oppChoice", "options": [ { "kind": "discardSelf" }, { "kind": "attackBoost", "n": 2 } ] },
"text": "Your opponent must choose: either they discard 1 card from their hand, or this unit gains 2 attack." },
{ "id": "princessleia", "name": "Princess Leia", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 6, "attack": 2, "resources": 2, "force": 2, "count": 1, "target": 6, "reward": { "resources": 3, "force": 3 },
"ability": { "timing": "action", "op": "freePurchase", "faction": "rebel", "forceTopdeck": true },
"text": "Purchase a Rebel card from the galaxy row for free. If the Force is with you, place that card on top of your deck." },
{ "id": "moncalamaricruiser", "name": "Mon Calamari Cruiser", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 6, "attack": 3, "resources": 0, "force": 0, "hp": 6, "count": 2, "target": null, "reward": null,
"ability": null,
"text": "The backbone of the Rebel fleet, crewed by the galaxy's finest shipwrights." },
{ "id": "millenniumfalcon", "name": "Millennium Falcon", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Transport"], "cost": 7, "attack": 5, "resources": 2, "force": 0, "count": 1, "target": 7, "reward": { "freePurchase": true },
"ability": { "timing": "action", "op": "recoverDiscard", "filter": { "heroUnit": true } },
"text": "Add a Hero unit from your discard pile to your hand." },
{ "id": "lukeskywalker", "name": "Luke Skywalker", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Jedi"], "cost": 8, "attack": 6, "resources": 0, "force": 2, "count": 1, "target": 8, "reward": { "resources": 4, "force": 4 },
"ability": { "timing": "action", "op": "destroyCapital", "scope": "oppPlay", "requiresForce": true },
"text": "If the Force is with you, destroy a capital ship your opponent has in play." },
{ "id": "tiefighter", "name": "TIE Fighter", "faction": "empire", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 1, "attack": 2, "resources": 0, "force": 0, "count": 3, "target": 1, "reward": { "resources": 1 },
"ability": { "timing": "action", "op": "draw", "n": 1, "requiresCapital": true },
"text": "If you have a capital ship in play, draw 1 card." },
{ "id": "admiralpiett", "name": "Admiral Piett", "faction": "empire", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 2, "attack": 0, "resources": 2, "force": 0, "count": 1, "target": 2, "reward": { "force": 1 },
"ability": { "timing": "constant", "op": "typeBoost", "cardType": "capital", "amount": 1 },
"text": "While Admiral Piett is in play, each of your capital ships gains 1 attack." },
{ "id": "tiebomber", "name": "TIE Bomber", "faction": "empire", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 2, "attack": 2, "resources": 0, "force": 0, "count": 2, "target": 2, "reward": { "exile": 1 },
"ability": { "timing": "action", "op": "discardRow" },
"text": "Discard 1 card from the galaxy row." },
{ "id": "scouttrooper", "name": "Scout Trooper", "faction": "empire", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 2, "attack": 0, "resources": 2, "force": 0, "count": 2, "target": 2, "reward": { "exile": 1 },
"ability": { "timing": "action", "op": "revealTop", "onMine": { "op": "gainForce", "n": 1 } },
"text": "Reveal the top card of the galaxy deck. If it is an Empire card, gain 1 Force. If it is an enemy card, you may discard it." },
{ "id": "deathtrooper", "name": "Death Trooper", "faction": "empire", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 3, "attack": 3, "resources": 0, "force": 0, "count": 2, "target": 3, "reward": { "force": 2 },
"ability": { "timing": "constant", "op": "selfBoostWhileForce", "amount": 2 },
"text": "While the Force is with you, this unit gains 2 attack." },
{ "id": "tieinterceptor", "name": "TIE Interceptor", "faction": "empire", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 3, "attack": 3, "resources": 0, "force": 0, "count": 2, "target": 3, "reward": { "resources": 3 },
"ability": { "timing": "action", "op": "revealTop", "onMine": { "op": "draw", "n": 1 } },
"text": "Reveal the top card of the galaxy deck. If it is an Empire card, draw 1 card. If it is an enemy card, you may discard it." },
{ "id": "gozanticruiser", "name": "Gozanti Cruiser", "faction": "empire", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 3, "attack": 0, "resources": 2, "force": 0, "hp": 3, "count": 3, "target": null, "reward": null,
"ability": { "timing": "action", "op": "draw", "n": 1, "cost": { "discardFromHand": 1 } },
"text": "Discard 1 card from your hand to draw 1 card." },
{ "id": "moffjerjerrod", "name": "Moff Jerjerrod", "faction": "empire", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 4, "attack": 2, "resources": 2, "force": 0, "count": 1, "target": 4, "reward": { "force": 3 },
"ability": { "timing": "action", "op": "lookTopSwap" },
"text": "Look at the top card of the galaxy deck. If the Force is with you, you may swap that card with a card from the galaxy row." },
{ "id": "generalveers", "name": "General Veers", "faction": "empire", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 4, "attack": 4, "resources": 0, "force": 0, "count": 1, "target": 4, "reward": { "force": 3 },
"ability": { "timing": "action", "op": "draw", "n": 1, "requiresTraitInPlay": ["Trooper", "Vehicle"] },
"text": "If you have a Trooper or Vehicle in play, draw 1 card." },
{ "id": "atst", "name": "AT-ST", "faction": "empire", "type": "unit", "unique": false, "traits": ["Vehicle"], "cost": 4, "attack": 4, "resources": 0, "force": 0, "count": 2, "target": 4, "reward": { "exile": 2 },
"ability": { "timing": "action", "op": "discardRow" },
"text": "Discard 1 card from the galaxy row." },
{ "id": "landingcraft", "name": "Landing Craft", "faction": "empire", "type": "unit", "unique": false, "traits": ["Transport"], "cost": 4, "attack": 0, "resources": 0, "force": 0, "count": 2, "target": 4, "reward": { "resources": 4 },
"ability": { "timing": "action", "op": "choose", "options": [ { "op": "gainResources", "n": 4 }, { "op": "repairBase", "n": 4 } ] },
"text": "Choose: gain 4 resources, or repair 4 damage from your base." },
{ "id": "directorkrennic", "name": "Director Krennic", "faction": "empire", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 5, "attack": 3, "resources": 2, "force": 0, "count": 1, "target": 5, "reward": { "resources": 3, "force": 2 },
"ability": { "timing": "action", "op": "draw", "n": 1, "nBase": { "base": "deathstar", "n": 2 } },
"text": "Draw 1 card (2 cards instead if your base is the Death Star)." },
{ "id": "bobafett", "name": "Boba Fett", "faction": "empire", "type": "unit", "unique": true, "traits": ["Bounty Hunter"], "cost": 5, "attack": 5, "resources": 0, "force": 0, "count": 1, "target": 5, "reward": { "resources": 3, "force": 2 },
"ability": { "timing": "onBounty", "op": "draw", "n": 1 },
"text": "When Boba Fett defeats a target in the galaxy row, draw 1 card." },
{ "id": "imperialcarrier", "name": "Imperial Carrier", "faction": "empire", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 5, "attack": 0, "resources": 3, "force": 0, "hp": 5, "count": 2, "target": null, "reward": null,
"ability": { "timing": "constant", "op": "traitBoost", "trait": "Fighter", "amount": 1 },
"text": "While Imperial Carrier is in play, each of your Fighter units gains 1 attack." },
{ "id": "grandmofftarkin", "name": "Grand Moff Tarkin", "faction": "empire", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 6, "attack": 2, "resources": 2, "force": 2, "count": 1, "target": 6, "reward": { "resources": 3, "force": 3 },
"ability": { "timing": "action", "op": "takeRowTemp", "faction": "empire" },
"text": "Add an Empire card from the galaxy row to your hand. You must exile that card at the end of your turn." },
{ "id": "atat", "name": "AT-AT", "faction": "empire", "type": "unit", "unique": false, "traits": ["Vehicle"], "cost": 6, "attack": 6, "resources": 0, "force": 0, "count": 1, "target": 6, "reward": { "freePurchase": true },
"ability": { "timing": "action", "op": "recoverDiscard", "filter": { "trait": "Trooper" } },
"text": "Add a Trooper from your discard pile to your hand." },
{ "id": "stardestroyer", "name": "Star Destroyer", "faction": "empire", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 7, "attack": 4, "resources": 0, "force": 0, "hp": 7, "count": 2, "target": null, "reward": null,
"ability": null,
"text": "The Imperial Navy's argument, delivered at length." },
{ "id": "darthvader", "name": "Darth Vader", "faction": "empire", "type": "unit", "unique": true, "traits": ["Sith"], "cost": 8, "attack": 6, "resources": 0, "force": 0, "count": 1, "target": 8, "reward": { "resources": 4, "force": 4 },
"ability": { "timing": "constant", "op": "selfBoostWhileForce", "amount": 4 },
"text": "While the Force is with you, Darth Vader gains 4 attack." }
],
"bases": {
"rebel": [
{ "id": "dantooine", "name": "Dantooine", "hp": 8, "starting": true, "ability": null,
"text": "Rebel Outpost. Begin the game with this base in play." },
{ "id": "hoth", "name": "Hoth", "hp": 10, "starting": false,
"ability": { "timing": "onReveal", "op": "draw", "n": 2 },
"text": "Echo Station. When you reveal this base, draw 2 cards." },
{ "id": "sullust", "name": "Sullust", "hp": 12, "starting": false,
"ability": { "timing": "onReveal", "op": "exileCards", "n": 2, "optional": true },
"text": "Staging Point. When you reveal this base, exile up to 2 cards from your hand or discard pile." },
{ "id": "moncala", "name": "Mon Cala", "hp": 12, "starting": false,
"ability": { "timing": "constant", "op": "capitalDiscount", "n": 1 },
"text": "Shipyards. Your capital ships cost 1 less resource." },
{ "id": "yavin4", "name": "Yavin IV", "hp": 14, "starting": false,
"ability": { "timing": "constant", "op": "onPlayTraitAttack", "trait": "Fighter", "amount": 1 },
"text": "Great Temple. When you play a Fighter, it gains 1 attack." }
],
"empire": [
{ "id": "lothal", "name": "Lothal", "hp": 8, "starting": true, "ability": null,
"text": "Imperial Outpost. Begin the game with this base in play." },
{ "id": "corellia", "name": "Corellia", "hp": 10, "starting": false,
"ability": { "timing": "constant", "op": "capitalDiscount", "n": 1 },
"text": "Shipyards. Your capital ships cost 1 less resource." },
{ "id": "coruscant", "name": "Coruscant", "hp": 12, "starting": false,
"ability": { "timing": "onReveal", "op": "gainResources", "n": 3 },
"text": "Imperial Center. When you reveal this base, gain 3 resources." },
{ "id": "deathstar", "name": "Death Star", "hp": 14, "starting": false,
"ability": { "timing": "action", "op": "damageBase", "n": 1 },
"text": "Battle Station. Once per turn: deal 1 damage to the enemy base." },
{ "id": "endor", "name": "Endor", "hp": 16, "starting": false, "ability": null,
"text": "Shield Generator. The toughest Imperial position in the galaxy." }
]
}
}