From b91879e51ea4a2d213768ca0799d7be8156e9349 Mon Sep 17 00:00:00 2001 From: Brian Fertig Date: Tue, 7 Jul 2026 22:13:45 -0600 Subject: [PATCH] refactor: rebalance card abilities and stats across factions - Outer Rim Pilot: change from card exile to resource gain on self-exile - TIE Fighter: reduce cost from 2 to 1 - Scout Trooper: add 2 attack, reduce target from 3 to 2 - Imperial Carrier: increase resources from 1 to 3 - Star Destroyer: increase attack from 3 to 4 - Duros Spy: change trait from Spy to Trooper - Luke Skywalker: increase reward, change ability from onPlay to action, clarify target - Hammerhead Corvette: reduce cost to 4, remove attack, add resources, clarify target options - Mon Calamari Cruiser: reduce cost from 8 to 6, reduce hp from 8 to 6 - Kel Dor Mystic: add self-exile cost to ability - IG-88: increase attack to 5, change from rowBonus to exileCards on bounty --- data/swdbg-cards.json | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/data/swdbg-cards.json b/data/swdbg-cards.json index 3fbc728..c36b680 100644 --- a/data/swdbg-cards.json +++ b/data/swdbg-cards.json @@ -107,15 +107,15 @@ "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": "exileCards", "n": 1, "optional": true, "cost": { "exileSelf": true } }, - "text": "Exile Outer Rim Pilot from play: exile a card from your hand or discard pile." + "ability": { "timing": "action", "op": "gainResources", "n": 1, "cost": { "exileSelf": true } }, + "text": "Exile Outer Rim Pilot to gain 1 resource." }, "cards": [ - { "id": "tiefighter", "name": "TIE Fighter", "faction": "empire", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 2, "attack": 2, "resources": 0, "force": 0, "count": 5, "target": 1, "reward": { "resources": 1 }, + { "id": "tiefighter", "name": "TIE Fighter", "faction": "empire", "type": "unit", "unique": false, "traits": ["Fighter"], "cost": 1, "attack": 2, "resources": 0, "force": 0, "count": 5, "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": "scouttrooper", "name": "Scout Trooper", "faction": "empire", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 2, "attack": 0, "resources": 2, "force": 0, "count": 3, "target": 3, "reward": { "resources": 1 }, + { "id": "scouttrooper", "name": "Scout Trooper", "faction": "empire", "type": "unit", "unique": false, "traits": ["Trooper"], "cost": 2, "attack": 2, "resources": 2, "force": 0, "count": 3, "target": 2, "reward": { "resources": 1 }, "ability": { "timing": "action", "op": "revealTop" }, "text": "Reveal the top card of the galaxy deck. If it is an Empire card, gain 1 resource. If it is a Rebel 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": 3, "target": 4, "reward": { "resources": 2 }, @@ -151,10 +151,10 @@ { "id": "gozanticruiser", "name": "Gozanti Cruiser", "faction": "empire", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 3, "attack": 0, "resources": 1, "force": 0, "hp": 3, "count": 2, "target": null, "reward": null, "ability": null, "text": "A slow freighter with just enough guns to matter." }, - { "id": "imperialcarrier", "name": "Imperial Carrier", "faction": "empire", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 5, "attack": 0, "resources": 1, "force": 0, "hp": 5, "count": 2, "target": null, "reward": null, + { "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": "Your Fighters gain 1 attack while Imperial Carrier is in play." }, - { "id": "stardestroyer", "name": "Star Destroyer", "faction": "empire", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 7, "attack": 3, "resources": 1, "force": 0, "hp": 7, "count": 2, "target": null, "reward": null, + { "id": "stardestroyer", "name": "Star Destroyer", "faction": "empire", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 7, "attack": 4, "resources": 1, "force": 0, "hp": 7, "count": 2, "target": null, "reward": null, "ability": null, "text": "The Imperial Navy's argument, delivered at length." }, @@ -167,7 +167,7 @@ { "id": "snowspeeder", "name": "Snowspeeder", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Vehicle"], "cost": 2, "attack": 2, "resources": 0, "force": 0, "count": 2, "target": 3, "reward": { "resources": 1 }, "ability": { "timing": "constant", "op": "selfBoostWhileForce", "amount": 1 }, "text": "Snowspeeder gains 1 attack while the Force is with you." }, - { "id": "durosspy", "name": "Duros Spy", "faction": "rebel", "type": "unit", "unique": false, "traits": ["Spy"], "cost": 2, "attack": 0, "resources": 2, "force": 0, "count": 2, "target": 2, "reward": { "force": 1 }, + { "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": { "force": 1 }, "ability": { "timing": "action", "op": "spyChoice" }, "text": "Your opponent chooses one: they discard a card from their hand, or you gain 1 Force." }, { "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": 1, "force": 1 }, @@ -197,19 +197,19 @@ { "id": "princessleia", "name": "Princess Leia", "faction": "rebel", "type": "unit", "unique": true, "traits": ["Officer"], "cost": 6, "attack": 2, "resources": 2, "force": 2, "count": 1, "target": 9, "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": "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": 3, "force": 3 }, - "ability": { "timing": "onPlay", "op": "destroyCapital", "requiresForce": true }, - "text": "If the Force is with you, destroy an enemy capital ship." }, + { "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", "requiresForce": true }, + "text": "If the Force is with you, destroy a capital ship your opponent has in play." }, { "id": "blockaderunner", "name": "Blockade Runner", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 4, "attack": 1, "resources": 1, "force": 0, "hp": 4, "count": 2, "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": "hammerheadcorvette", "name": "Hammerhead Corvette", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 5, "attack": 1, "resources": 1, "force": 0, "hp": 4, "count": 1, "target": null, "reward": null, + { "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": 1, "target": null, "reward": null, "ability": { "timing": "action", "op": "destroyCapital", "cost": { "exileSelf": true } }, - "text": "Exile Hammerhead Corvette from play: destroy a capital ship." }, + "text": "Exile this card to destroy a capital ship your opponent has in play, or an enemy capital ship in the galaxy row." }, { "id": "medicalfrigate", "name": "Medical Frigate", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 6, "attack": 0, "resources": 1, "force": 0, "hp": 5, "count": 1, "target": null, "reward": null, "ability": { "timing": "action", "op": "repairBase", "n": 1 }, "text": "Repair 1 damage from your base." }, - { "id": "moncalamaricruiser", "name": "Mon Calamari Cruiser", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 8, "attack": 3, "resources": 1, "force": 0, "hp": 8, "count": 1, "target": null, "reward": null, + { "id": "moncalamaricruiser", "name": "Mon Calamari Cruiser", "faction": "rebel", "type": "capital", "unique": false, "traits": ["Capital Ship"], "cost": 6, "attack": 3, "resources": 1, "force": 0, "hp": 6, "count": 1, "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": "capital", "unique": true, "traits": ["Capital Ship", "Freighter"], "cost": 7, "attack": 2, "resources": 1, "force": 0, "hp": 6, "count": 1, "target": null, "reward": null, @@ -223,8 +223,8 @@ "ability": { "timing": "action", "op": "exileCards", "n": 1, "optional": true }, "text": "Exile a card from your hand or discard pile. Utinni!" }, { "id": "keldormystic", "name": "Kel Dor Mystic", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Mystic"], "cost": 2, "attack": 0, "resources": 0, "force": 2, "count": 3, "target": null, "reward": null, - "ability": { "timing": "action", "op": "exileCards", "n": 1, "optional": true }, - "text": "Exile a card from your hand or discard pile." }, + "ability": { "timing": "action", "op": "exileCards", "n": 1, "optional": true, "cost": { "exileSelf": true } }, + "text": "Exile this card to exile 1 card from your hand or discard pile." }, { "id": "rodiangunslinger", "name": "Rodian Gunslinger", "faction": "neutral", "type": "unit", "unique": false, "traits": ["Bounty Hunter"], "cost": 2, "attack": 2, "resources": 0, "force": 0, "count": 3, "target": null, "reward": null, "ability": { "timing": "constant", "op": "rowBonus", "amount": 2 }, "text": "Rodian Gunslinger gains 2 attack while attacking a target in the galaxy row." }, @@ -243,9 +243,9 @@ { "id": "bossk", "name": "Bossk", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Bounty Hunter"], "cost": 4, "attack": 3, "resources": 0, "force": 0, "count": 1, "target": null, "reward": null, "ability": { "timing": "onBounty", "op": "gainResources", "n": 2 }, "text": "When you defeat a card in the galaxy row, gain 2 resources." }, - { "id": "ig88", "name": "IG-88", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Droid", "Bounty Hunter"], "cost": 5, "attack": 4, "resources": 0, "force": 0, "count": 1, "target": null, "reward": null, - "ability": { "timing": "constant", "op": "rowBonus", "amount": 2 }, - "text": "IG-88 gains 2 attack while attacking a target in the galaxy row." }, + { "id": "ig88", "name": "IG-88", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Droid", "Bounty Hunter"], "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": "bobafett", "name": "Boba Fett", "faction": "neutral", "type": "unit", "unique": true, "traits": ["Bounty Hunter"], "cost": 6, "attack": 5, "resources": 0, "force": 0, "count": 1, "target": null, "reward": null, "ability": { "timing": "onBounty", "op": "draw", "n": 1 }, "text": "When you defeat a card in the galaxy row, draw a card." },