Skip to content
Merged
91 changes: 85 additions & 6 deletions card_db_src/cards_db.json
Original file line number Diff line number Diff line change
Expand Up @@ -2902,6 +2902,20 @@
"Castle"
]
},
{
"card_tag": "Catapult - Rocks",
"cardset_tags": [
"empires"
],
"cost": "3*",
"count": "0",
"group_tag": "Catapult - Rocks",
"group_top": true,
"types": [
"Action",
"Attack"
]
},
{
"card_tag": "Catapult",
"cardset_tags": [
Expand All @@ -2910,7 +2924,7 @@
"cost": "3",
"count": "5",
"group_tag": "Catapult - Rocks",
"group_top": true,
"randomizer": false,
"types": [
"Action",
"Attack"
Expand Down Expand Up @@ -3044,6 +3058,19 @@
"Action"
]
},
{
"card_tag": "Encampment - Plunder",
"cardset_tags": [
"empires"
],
"cost": "2*",
"count": "0",
"group_tag": "Encampment - Plunder",
"group_top": true,
"types": [
"Action"
]
},
{
"card_tag": "Encampment",
"cardset_tags": [
Expand All @@ -3052,7 +3079,7 @@
"cost": "2",
"count": "5",
"group_tag": "Encampment - Plunder",
"group_top": true,
"randomizer": false,
"types": [
"Action"
]
Expand Down Expand Up @@ -3127,6 +3154,19 @@
"Landmark"
]
},
{
"card_tag": "Gladiator - Fortune",
"cardset_tags": [
"empires"
],
"cost": "3*",
"count": "0",
"group_tag": "Gladiator - Fortune",
"group_top": true,
"types": [
"Action"
]
},
{
"card_tag": "Gladiator",
"cardset_tags": [
Expand All @@ -3135,7 +3175,7 @@
"cost": "3",
"count": "5",
"group_tag": "Gladiator - Fortune",
"group_top": true,
"randomizer": false,
"types": [
"Action"
]
Expand Down Expand Up @@ -3257,6 +3297,19 @@
"Landmark"
]
},
{
"card_tag": "Patrician - Emporium",
"cardset_tags": [
"empires"
],
"cost": "2*",
"count": "0",
"group_tag": "Patrician - Emporium",
"group_top": true,
"types": [
"Action"
]
},
{
"card_tag": "Patrician",
"cardset_tags": [
Expand All @@ -3265,7 +3318,7 @@
"cost": "2",
"count": "5",
"group_tag": "Patrician - Emporium",
"group_top": true,
"randomizer": false,
"types": [
"Action"
]
Expand Down Expand Up @@ -3341,6 +3394,19 @@
"Event"
]
},
{
"card_tag": "Settlers - Bustling Village",
"cardset_tags": [
"empires"
],
"cost": "2*",
"count": "0",
"group_tag": "Settlers - Bustling Village",
"group_top": true,
"types": [
"Action"
]
},
{
"card_tag": "Settlers",
"cardset_tags": [
Expand All @@ -3349,7 +3415,7 @@
"cost": "2",
"count": "5",
"group_tag": "Settlers - Bustling Village",
"group_top": true,
"randomizer": false,
"types": [
"Action"
]
Expand Down Expand Up @@ -7349,6 +7415,19 @@
"Action"
]
},
{
"card_tag": "Sauna - Avanto",
"cardset_tags": [
"promo"
],
"cost": "4*",
"count": "0",
"group_tag": "Sauna - Avanto",
"group_top": true,
"types": [
"Action"
]
},
{
"card_tag": "Sauna",
"cardset_tags": [
Expand All @@ -7357,7 +7436,7 @@
"cost": "4",
"count": "5",
"group_tag": "Sauna - Avanto",
"group_top": true,
"randomizer": false,
"types": [
"Action"
]
Expand Down
22 changes: 11 additions & 11 deletions card_db_src/en_us/cards_en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@
"name": "Artist"
},
"Asceticism": {
"description": "Pay any amount of Coin to trash that many cards from your hand.",
"description": "Pay any amount of _ Coin to trash that many cards from your hand.",
"extra": "",
"name": "Asceticism"
},
Expand Down Expand Up @@ -541,7 +541,7 @@
"name": "Catapult"
},
"Catapult - Rocks": {
"description": "<left><u>Catapult</u>:</left><n>+1 Coin<n>Trash a card from your hand. If it costs 3 Coins or more, each other player gains a Curse. If it's a Treasure, each other player discards down to 3 cards in hand.<n><left><u>Rocks</u>:</left><n>+1 Coin<line>When you gain or trash this, gain a Silver; if it is your Buy phase, put the Silver on your deck, otherwise put it into your hand.",
"description": "This pile starts with 5 copies of Catapult on top, then 5 copies of Rocks. Only the top card of the pile can be gained or bought.",
"extra": "If the card you trash is a treasure, each other player discards down to 3 cards in hand; if the card you trash costs 3 Coins or more, each other player gains a Curse; if it is both (e.g. Silver), both things happen; if it is neither, neither thing happens. Rocks: If you have no cards in hand left to trash, neither thing happens. If it is another player's turn, then it is not your Buy phase, so the Silver goes to your hand.",
"name": "Catapult / Rocks"
},
Expand Down Expand Up @@ -591,7 +591,7 @@
"name": "Chancellor"
},
"Change": {
"description": "If you have any Debt, +3 Coin. Otherwise, trash a card from you hand, gain a card costing more Coin than it. +Debt equal to the difference in Coin.",
"description": "If you have any Debt, +3 Coin. Otherwise, trash a card from you hand, gain a card costing more _ Coin than it. +Debt equal to the difference in _ Coin.",
"extra": "Remember you can repay Debt at any point during your turn, which can sometimes let you choose which thing Change will do. If you have any Debt, Change gives you +3 Coin; otherwise you trash a card from your hand, gain any card costing more Coins, and take Debt equal to the difference. For example you could trash a Copper, gain a Province, and take 8 Debt. You can't gain a card costing the same amount of Coins or less Coins. This ignores other special aspects of cost; for example you could trash an Estate and gain an Alchemist, from Alchemy, which costs 3 Coins and 1 Potion.",
"name": "Change"
},
Expand Down Expand Up @@ -1094,7 +1094,7 @@
"name": "Encampment"
},
"Encampment - Plunder": {
"description": "<left><u>Encampment</u>:</left><n>+2 Cards<br>+2 Actions<n>You may reveal a Gold or Plunder from your hand. If you do not, set this aside, and return it to the Supply at the start of Clean-up.<n><left><u>Plunder</u>:</left><n>+2 Coin<br>+1 <VP>",
"description": "This pile starts with 5 copies of Encampment on top, then 5 copies of Plunder. Only the top card of the pile can be gained or bought.",
"extra": "Revealing a Plunder or Gold is optional. When you return Encampment to the Supply, it goes on top of its pile, potentially covering up a Plunder. Plunder: This gives you a <VP> token every time you play it.",
"name": "Encampment / Plunder"
},
Expand Down Expand Up @@ -1415,7 +1415,7 @@
"name": "Forts"
},
"Fortune": {
"description": "+1 Buy<n>When you play this, double your Coin if you haven't yet this turn.<line>When you gain this, gain a Gold per Gladiator you have in play.",
"description": "+1 Buy<n>When you play this, double your _ Coin if you haven't yet this turn.<line>When you gain this, gain a Gold per Gladiator you have in play.",
"extra": "You only double your Coin the first time you play a Fortune in a turn; any further times only get you +1 Buy.",
"name": "Fortune"
},
Expand Down Expand Up @@ -1520,7 +1520,7 @@
"name": "Gladiator"
},
"Gladiator - Fortune": {
"description": "<left><u>Gladiator</u>:</left><n>If there are no Gladiators in the Supply, you cannot trash one, but that does not stop you from getting the +1 Coin. If you have no cards in hand, the player to your left cannot reveal a copy of the card you revealed, so you will get the +1 Coin and trash a Gladiator.<n><left><u>Fortune</u>:</left><n>+1 Buy<n>When you play this, double your Coin if you haven't yet this turn.<line>When you gain this, gain a Gold per Gladiator you have in play.",
"description": "This pile starts with 5 copies of Gladiator on top, then 5 copies of Fortune. Only the top card of the pile can be gained or bought.",
"extra": "If there are no Gladiators in the Supply, you cannot trash one, but that does not stop you from getting the +1 Coin. If you have no cards in hand, the player to your left cannot reveal a copy of the card you revealed, so you will get the +1 Coin and trash a Gladiator. Fortune: You only double your Coin the first time you play a Fortune in a turn; any further times only get you +1 Buy.",
"name": "Gladiator / Fortune"
},
Expand Down Expand Up @@ -1603,7 +1603,7 @@
]
},
"Groom": {
"description": "Gain a card costing up to 4 Coin If it's an...<br>Action card, gain a Horse;<br>Treasure card, gain a Silver;<br>Victory card, +1 Card and +1 Action.",
"description": "Gain a card costing up to 4 Coin. If it's an...<br>Action card, gain a Horse;<br>Treasure card, gain a Silver;<br>Victory card, +1 Card and +1 Action.",
"extra": "First gain a card, then apply the bonuses in the order listed.<n>A card can give you multiple bonuses; for example, if you gain a Mill (from Intrigue), you gain a Horse and then get +1 Card and +1 Action.",
"name": "Groom"
},
Expand Down Expand Up @@ -2613,7 +2613,7 @@
"name": "Patrician"
},
"Patrician - Emporium": {
"description": "<left><u>Patrician</u>:</left><n>+1 Card<br>+1 Action<n>Reveal the top card of your deck. If it costs 5 Coin or more, put it into your hand.<n><left><u>Emporium</u>:</left><n>+1 Card<br>+1 Action<br>+1 Coin<line>When you gain this, if you have at least 5 Action cards in play, +2 <VP>.",
"description": "This pile starts with 5 copies of Patrician on top, then 5 copies of Emporium. Only the top card of the pile can be gained or bought.",
"extra": "Cards costing Debt do not cost 5 Coin or more unless they also have a Coin cost of 5 Coin or more. So Fortune does but City Quarter does not. Emporium: This counts Action cards in play, including Action cards played this turn, Duration cards in play from previous turns, and Reserve cards (from Adventures) called into play this turn.",
"name": "Patrician / Emporium"
},
Expand Down Expand Up @@ -3178,7 +3178,7 @@
"name": "Sauna"
},
"Sauna - Avanto": {
"description": "<left><u>Sauna</u>:</left><n>+1 Card<br>+1 Action<n>You may play an Avanto from your hand.<n>While this is in play, when you play a Silver, you may trash a card from your hand.<n><left><u>Avanto</u>:</left><n>+3 Cards<n>You may play a Sauna from your hand.",
"description": "This pile starts with 5 copies of Sauna on top, then 5 copies of Avanto. Only the top card of the pile can be gained or bought.",
"extra": "Sauna / Avanto is a split pile with five copies of Sauna placed on top of five copies of Avanto during setup. Sauna is a cantrip that allows you to trash a card when you play a Silver. Avanto is a terminal draw card that can potentially become non-terminal if you have a Sauna in your hand to play.",
"name": "Sauna / Avanto"
},
Expand Down Expand Up @@ -3318,7 +3318,7 @@
"name": "Settlers"
},
"Settlers - Bustling Village": {
"description": "<left><u>Settlers</u>:</left><n>+1 Card<br>+1 Action<n>Look through your discard pile. You may reveal a Copper from it and put it into your hand.<br><left><u>Bustling Village</u>:</left><n>+1 Card<br>+3 Actions<n>Look through your discard pile. You may reveal a Settlers from it and put it into your hand.",
"description": "This pile starts with 5 copies of Settlers on top, then 5 copies of Bustling Village. Only the top card of the pile can be gained or bought.",
"extra": "<u>Settlers</u>: You can look through your discard pile even if you know there is no Copper in it.<n><u>Bustling Village</u>: You can look through your discard pile even if you know there are no Settlers in it.",
"name": "Settlers / Bustling Village"
},
Expand Down Expand Up @@ -3585,7 +3585,7 @@
"name": "Storeroom"
},
"Storyteller": {
"description": "+1 Action<br>+1 Coin<n>Play up to 3 Treasures from your hand. Pay all of your _ Coins. +1 Card per Coin paid.",
"description": "+1 Action<br>+1 Coin<n>Play up to 3 Treasures from your hand. Pay all of your _ Coins. +1 Card per _ Coin paid.",
"extra": "This lets you play Treasures in your Action phase. They go into play and produce Coins, just like Treasures played in the Buy phase. Then Storyteller turns all of your Coins into +Cards; for each Coin you have you lose the Coin and get +1 Card. For example if you had 4 Coins, you lose the 4 Coins and draw 4 cards. This makes you lose all Coins you have so far that turn, including the Coins you get from playing the Treasures, the +1 Coin Storyteller gives you directly, and any you made earlier in the turn. You can track that the Treasures have been \"spent\" by putting them under the Storyteller. Potions, produced by Potions from Alchemy, is not Coin and so is not lost and does not get you any cards.",
"name": "Storyteller"
},
Expand Down
Binary file modified src/domdiv/card_db/cards_db.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/cs/cards_cs.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/de/cards_de.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/en_us/cards_en_us.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/es/cards_es.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/fr/cards_fr.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/it/cards_it.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/nl_nl/cards_nl_nl.json.gz
Binary file not shown.
Binary file modified src/domdiv/card_db/xx/cards_xx.json.gz
Binary file not shown.
7 changes: 4 additions & 3 deletions tests/carddb_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
def test_cardread():
# we test the number of cards only to make sure it doesn't get changed
# inadvertently by unrelated changes
num_cards_expected = 1068
num_cards_expected = 1074

total_cards = sum(c.num_ungrouped_cards for c in expected_card_counts)
assert total_cards == num_cards_expected
Expand Down Expand Up @@ -294,7 +294,8 @@ def assert_total_card_count(self, cards: list[Card]):
),
ExpectedSetCardCount(
"empires",
24 + 5 + 13 + 21, # 24 kingdom, 5 split pile, 13 events, 21 landmarks
# TODO this includes all the split pile cards and also their randomizers.
24 + 10 + 13 + 21, # 24 kingdom, 10 2-card split piles, 13 events, 21 landmarks
24 + 2,
300 - 24,
),
Expand Down Expand Up @@ -339,7 +340,7 @@ def assert_total_card_count(self, cards: list[Card]):
),
ExpectedSetCardCount(
"promo",
12 + 1, # sauna/avanto split
12 + 2, # sauna/avanto split pile (+ the randomizer in the main list)
12,
113, # 1 victory, summon
),
Expand Down
4 changes: 2 additions & 2 deletions tests/selection_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,9 @@ def test_group_special():
gladiator_fortune = gladiator_matches[0]
gladiator_fortune.name.startswith("Gladiator")
assert "Fortune" in gladiator_fortune.name
assert gladiator_fortune.getCardCounts() == [5, 5]
assert gladiator_fortune.getCardCounts() == [5, 5, 0]
assert gladiator_fortune.types == ["Action"]
assert gladiator_fortune.cost == "3"
assert gladiator_fortune.cost == "3*"

joust_matches = [c for c in cards if c.group_tag == "Joust and Rewards"]
assert len(joust_matches) == 1
Expand Down
Loading