diff --git a/.gitignore b/.gitignore
index 5d065f4..78865bb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,4 @@ tools/card_db
.doit.db
.mypy_cache/
.tox/
+.venv/
diff --git a/convert.ff b/convert.ff
index 5d94918..c77e0c9 100755
--- a/convert.ff
+++ b/convert.ff
@@ -1,3 +1,3 @@
-#!/usr/local/bin/fontforge
+#!/usr/bin/fontforge
Open($1)
Generate($1:r + ".ttf")
diff --git a/img_sources/base_set.pdf b/img_sources/base_set.pdf
deleted file mode 100644
index 454120a..0000000
Binary files a/img_sources/base_set.pdf and /dev/null differ
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..d0e2683
--- /dev/null
+++ b/main.py
@@ -0,0 +1,22 @@
+import domdiv.main
+
+base_args = [
+ "--papersize", "A4",
+ "--language", "de",
+ "--size", "9.5x6.25",
+ "--types",
+ "--tab-side", "left-alternate",
+ "--tabwidth", "4.0",
+ "--tab-name-align", "center",
+ "--order", "cost",
+ "--expansion-dividers",
+ "--centre-expansion-dividers",
+ "--expansion-reset-tabs",
+ "--expansions", "base", "alchemy", "cornucopia", "dark ages", "dominion2ndEdition", "empires", "promo",
+ "--no-trash",
+ "--group-kingdom",
+ "--group-special",
+]
+opts = domdiv.main.parse_opts(base_args)
+opts = domdiv.main.clean_opts(opts)
+domdiv.main.generate(opts)
diff --git a/src/domdiv/card_db/cards_db.json b/src/domdiv/card_db/cards_db.json
index c43def3..0e52d45 100644
--- a/src/domdiv/card_db/cards_db.json
+++ b/src/domdiv/card_db/cards_db.json
@@ -1378,7 +1378,6 @@
"dark ages"
],
"cost": "1",
- "group_tag": "Shelters",
"group_top": true,
"randomizer": false,
"types": [
@@ -1490,7 +1489,6 @@
"dark ages"
],
"cost": "1",
- "group_tag": "Shelters",
"randomizer": false,
"types": [
"Action",
@@ -1503,7 +1501,6 @@
"dark ages"
],
"cost": "1",
- "group_tag": "Shelters",
"randomizer": false,
"types": [
"Victory",
diff --git a/src/domdiv/card_db/de/cards_de.json b/src/domdiv/card_db/de/cards_de.json
index 0f3283b..9885fa6 100644
--- a/src/domdiv/card_db/de/cards_de.json
+++ b/src/domdiv/card_db/de/cards_de.json
@@ -370,37 +370,37 @@
"name": "Trank"
},
"Copper": {
- "description": "+1 <*COIN*>",
+ "description": "1 <*COIN*>",
"extra": "60 Karten pro Spiel.",
"name": "Kupfer"
},
"Curse": {
"description": "-1 <*VP*>",
- "extra": "Je nach Spieleranzahl wird die folgende Anzahl an Fluchkarten offen in die Tischmitte gelegt: Bei 6 Spielern: 50 Karten, Bei 5 Spielern: 40 Karten, Bei 4 Spielern: 30 Karten, Bei 3 Spielern: 20 Karten, Bei 2 Spielern: 10 Karten",
+ "extra": "2 Spieler: 10 Karten
3 Spieler: 20 Karten
4 Spieler: 30 Karten
5 Spieler: 40 Karten
6 Spieler: 50 Karten",
"name": "Fluch"
},
"Duchy": {
"description": "3 <*VP*>",
- "extra": "Bei 5 und 6 Spielern: 12 Herzogtümer, Bei 3 und 4 Spielern: 12 Herzogtümer, Bei 2 Spielern: 8 Herzogtümer",
+ "extra": "2 Spieler: 8 Herzogtümer
3+ Spieler: 12 Herzogtümer",
"name": "Herzogtum"
},
"Estate": {
"description": "1 <*VP*>",
- "extra": "Bei 5 und 6 Spielern: 12 Anwesen, Bei 3 und 4 Spielern: 12 Anwesen, Bei 2 Spielern: 8 Anwesen",
+ "extra": "2 Spieler: 8 Anwesen
3+ Spieler: 12 Anwesen",
"name": "Anwesen"
},
"Gold": {
- "description": "+3 <*COIN*>",
+ "description": "3 <*COIN*>",
"extra": "30 Karten pro Spiel.",
"name": "Gold"
},
"Province": {
"description": "6 <*VP*>",
- "extra": "Bei 6 Spielern: 18 Provinzen, Bei 5 Spielern: 15 Provinzen, Bei 3 und 4 Spielern: 12 Provinzen, Bei 2 Spielern: 8 Provinzen",
+ "extra": "2 Spieler: 8 Provinzen
2 oder 3 Spieler: 12 Provinzen
5 Spieler: 15 Provinzen
6 Spieler: 18 Provinzen",
"name": "Provinz"
},
"Silver": {
- "description": "+2 <*COIN*>",
+ "description": "2 <*COIN*>",
"extra": "40 Karten pro Spiel.",
"name": "Silber"
},
diff --git a/src/domdiv/card_db/de/sets_de.json b/src/domdiv/card_db/de/sets_de.json
index 1f9bf7a..93a20c8 100644
--- a/src/domdiv/card_db/de/sets_de.json
+++ b/src/domdiv/card_db/de/sets_de.json
@@ -20,8 +20,8 @@
"text_icon": "An"
},
"base": {
- "set_name": "Base",
- "set_text": "This is all the basic Victory, Treasure, and Curse cards from the Dominion games and its expansions. It does not include any Victory or Treasure cards that are Kingdom cards.",
+ "set_name": "Basis",
+ "set_text": "Alle normalen Punkte-, Geld-, und Fluchkarten vom Dominion Basisspiel und Erweiterungen. Es enthält keine Punkte- oder Geldkarten die zugleich Königreichkarten sind.",
"text_icon": "B"
},
"cornucopia": {
@@ -30,7 +30,7 @@
"text_icon": "RE"
},
"cornucopia extras": {
- "set_name": "Cornucopia Extras",
+ "set_name": "Reiche Ernte Extras",
"set_text": "",
"text_icon": "C"
},
diff --git a/src/domdiv/main.py b/src/domdiv/main.py
index 5debbce..0572cbd 100644
--- a/src/domdiv/main.py
+++ b/src/domdiv/main.py
@@ -1357,12 +1357,71 @@ class CardSorter(object):
return card.getType().getTypeNames(), self.strip_accents(card.name)
def by_cost_sort_key(self, card):
- return (
+ """
+ Enforce color order:
+ 1 Action
+ 2 Treasure
+ 3 Curse
+ 4 Victory
+ 5 Event
+ 6 Landmark
+ 7 Way (?)
+ 8 Project (?)
+ 9 Ruine
+ 10 Hideout
+ 11 Hex (?)
+ 12 Night (?)
+ 13 State (?)
+ 14 Boon (?)
+ 99 Expansion
+ """
+ types = card.getType().getTypeNames()
+ # order of if-statements matters!
+ if "Ruins" in types:
+ type_index = 9
+ elif "Shelter" in types:
+ type_index = 10
+ elif "Event" in types:
+ type_index = 5
+ elif "Landmark" in types:
+ type_index = 6
+ elif "Way" in types:
+ type_index = 7
+ elif "Project" in types:
+ type_index = 8
+ elif "Action" in types:
+ type_index = 1
+ elif "Treasure" in types:
+ type_index = 2
+ elif "Curse" in types:
+ type_index = 3
+ elif "Victory" in types:
+ type_index = 4
+ elif "Hex" in types:
+ type_index = 11
+ elif "Night" in types:
+ type_index = 12
+ elif "State" in types:
+ type_index = 13
+ elif "Boon" in types:
+ type_index = 14
+ elif "Expansion" in types:
+ type_index = 99
+ else:
+ raise NotImplementedError(f"Unknown types {types} for card {card.name}")
+
+ x = (
card.cardset,
int(card.isExpansion()),
- str(card.get_total_cost(card)),
+ self.baseIndex(card.name),
+ #card.getType().getTypeNames()[0],
+ type_index,
+ int(card.get_total_cost(card)[0]),
+ int(card.get_total_cost(card)[1]),
+ int(card.get_total_cost(card)[2]),
self.strip_accents(card.name),
)
+ return x
@staticmethod
def strip_accents(s):