aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/base.ini148
-rw-r--r--data/cards/base/advisor.yml7
-rw-r--r--data/cards/base/archer.yml7
-rw-r--r--data/cards/base/cavalry.yml7
-rw-r--r--data/cards/base/cavalry_archer.yml7
-rw-r--r--data/cards/base/fighter.yml8
-rw-r--r--data/cards/base/great_sword.yml6
-rw-r--r--data/cards/base/knight.yml8
-rw-r--r--data/cards/base/misinformation.yml5
-rw-r--r--data/cards/base/missionary.yml7
-rw-r--r--data/cards/base/palisade.yml5
-rw-r--r--data/cards/base/pikeman.yml8
-rw-r--r--data/cards/base/pioneer.yml7
-rw-r--r--data/cards/base/recruit.yml7
-rw-r--r--data/cards/base/recruiter.yml9
-rw-r--r--data/cards/base/shield.yml6
-rw-r--r--data/cards/base/sword.yml6
-rw-r--r--data/cards/base/tax_collector.yml7
-rw-r--r--data/cards/base/tower_shield.yml6
-rw-r--r--data/cards/base/wormtongue.yml10
-rw-r--r--data/cards/equipments/armor.yml6
-rw-r--r--data/cards/equipments/banner.yml5
-rw-r--r--data/cards/equipments/cloak.yml6
-rw-r--r--data/cards/equipments/gear.yml6
-rw-r--r--data/cards/equipments/mace.yml6
-rw-r--r--data/cards/equipments/plate_armor.yml6
-rw-r--r--data/cards/equipments/poisoned_dagger.yml6
-rw-r--r--data/cards/equipments/reclaim!.yml5
-rw-r--r--data/cards/equipments/relic.yml5
-rw-r--r--data/cards/equipments/shatter!.yml5
-rw-r--r--data/cards/equipments/smith.yml11
-rw-r--r--data/cards/equipments/spear.yml6
-rw-r--r--data/cards/kraken/angry_squid.yml8
-rw-r--r--data/cards/kraken/chachalot.yml9
-rw-r--r--data/cards/kraken/clownfish.yml8
-rw-r--r--data/cards/kraken/dolphin.yml8
-rw-r--r--data/cards/kraken/frost_pylon.yml5
-rw-r--r--data/cards/kraken/gigantic_hail.yml4
-rw-r--r--data/cards/kraken/ice_berg.yml4
-rw-r--r--data/cards/kraken/sailfish.yml8
-rw-r--r--data/cards/kraken/suprise.yml4
-rw-r--r--data/cards/kraken/tentacle_slap.yml4
-rw-r--r--data/cards/kraken/the_kraken.yml4
-rw-r--r--data/cards/kraken/tides_change.yml4
-rw-r--r--data/cards/kraken/unholy_cannonball.yml6
-rw-r--r--data/cards/magic/action!.yml5
-rw-r--r--data/cards/magic/appear!.yml5
-rw-r--r--data/cards/magic/attack!.yml5
-rw-r--r--data/cards/magic/catalyst.yml5
-rw-r--r--data/cards/magic/clone!.yml5
-rw-r--r--data/cards/magic/defense!.yml5
-rw-r--r--data/cards/magic/die!.yml5
-rw-r--r--data/cards/magic/heal!.yml5
-rw-r--r--data/cards/magic/isolate!.yml5
-rw-r--r--data/cards/magic/mine!.yml5
-rw-r--r--data/cards/magic/more!.yml5
-rw-r--r--data/cards/magic/no!.yml5
-rw-r--r--data/cards/magic/pierce!.yml5
-rw-r--r--data/cards/magic/ritual!.yml5
-rw-r--r--data/cards/magic/rush!.yml5
-rw-r--r--data/cards/magic/select!.yml5
-rw-r--r--data/cards/magic/shroud!.yml5
-rw-r--r--data/cards/magic/stumble!.yml5
-rw-r--r--data/cards/magic/switch!.yml5
-rw-r--r--data/cards/magic/transmute!.yml5
-rw-r--r--data/cards/misc/farmer.yml6
-rw-r--r--data/cards/misc/king.yml8
-rw-r--r--data/cards/misc/stick_of_victory.yml5
-rw-r--r--data/cards/nautics/barge.yml7
-rw-r--r--data/cards/nautics/captain.yml8
-rw-r--r--data/cards/nautics/fish_trap.yml5
-rw-r--r--data/cards/nautics/fisher.yml8
-rw-r--r--data/cards/nautics/galley.yml8
-rw-r--r--data/cards/nautics/sailor.yml7
-rw-r--r--data/equipments.ini80
-rw-r--r--data/kraken.ini80
-rw-r--r--data/magic.ini119
-rw-r--r--data/misc.ini21
-rw-r--r--data/nautics.ini47
-rw-r--r--latex/Makefile100
-rw-r--r--latex/cards/advisor.tex19
-rw-r--r--latex/cards/angry_squid.tex19
-rw-r--r--latex/cards/archer.tex19
-rw-r--r--latex/cards/barge.tex19
-rw-r--r--latex/cards/base.tex50
-rw-r--r--latex/cards/base/advisor.tex12
-rw-r--r--latex/cards/base/archer.tex12
-rw-r--r--latex/cards/base/cavalry.tex12
-rw-r--r--latex/cards/base/cavalry_archer.tex12
-rw-r--r--latex/cards/base/fighter.tex12
-rw-r--r--latex/cards/base/great_sword.tex (renamed from latex/cards/great_sword.tex)11
-rw-r--r--latex/cards/base/knight.tex12
-rw-r--r--latex/cards/base/misinformation.tex (renamed from latex/cards/misinformation.tex)11
-rw-r--r--latex/cards/base/missionary.tex12
-rw-r--r--latex/cards/base/palisade.tex (renamed from latex/cards/palisade.tex)11
-rw-r--r--latex/cards/base/pikeman.tex12
-rw-r--r--latex/cards/base/pioneer.tex12
-rw-r--r--latex/cards/base/recruit.tex11
-rw-r--r--latex/cards/base/recruiter.tex12
-rw-r--r--latex/cards/base/shield.tex (renamed from latex/cards/shield.tex)11
-rw-r--r--latex/cards/base/sword.tex (renamed from latex/cards/sword.tex)11
-rw-r--r--latex/cards/base/tax_collector.tex12
-rw-r--r--latex/cards/base/tower_shield.tex (renamed from latex/cards/tower_shield.tex)11
-rw-r--r--latex/cards/base/wormtongue.tex12
-rw-r--r--latex/cards/captain.tex19
-rw-r--r--latex/cards/cavalry.tex19
-rw-r--r--latex/cards/cavl._archer.tex19
-rw-r--r--latex/cards/chachalot.tex19
-rw-r--r--latex/cards/clownfish.tex19
-rw-r--r--latex/cards/dolphin.tex19
-rw-r--r--latex/cards/equipments/armor.tex (renamed from latex/cards/armor.tex)11
-rw-r--r--latex/cards/equipments/banner.tex (renamed from latex/cards/banner.tex)11
-rw-r--r--latex/cards/equipments/cloak.tex (renamed from latex/cards/cloak.tex)11
-rw-r--r--latex/cards/equipments/gear.tex (renamed from latex/cards/gear.tex)11
-rw-r--r--latex/cards/equipments/mace.tex (renamed from latex/cards/mace.tex)11
-rw-r--r--latex/cards/equipments/plate_armor.tex (renamed from latex/cards/plate_armor.tex)11
-rw-r--r--latex/cards/equipments/poisoned_dagger.tex (renamed from latex/cards/poisoned_dagger.tex)11
-rw-r--r--latex/cards/equipments/reclaim!.tex (renamed from latex/cards/reclaim!.tex)11
-rw-r--r--latex/cards/equipments/relic.tex (renamed from latex/cards/relic.tex)11
-rw-r--r--latex/cards/equipments/shatter!.tex (renamed from latex/cards/shatter!.tex)11
-rw-r--r--latex/cards/equipments/smith.tex12
-rw-r--r--latex/cards/equipments/spear.tex (renamed from latex/cards/spear.tex)11
-rw-r--r--latex/cards/farmer.tex18
-rw-r--r--latex/cards/fighter.tex19
-rw-r--r--latex/cards/fish_trap.tex18
-rw-r--r--latex/cards/fisher.tex19
-rw-r--r--latex/cards/frost_pylon.tex19
-rw-r--r--latex/cards/galley.tex19
-rw-r--r--latex/cards/ice_berg.tex19
-rw-r--r--latex/cards/king.tex18
-rw-r--r--latex/cards/knight.tex19
-rw-r--r--latex/cards/kraken/angry_squid.tex12
-rw-r--r--latex/cards/kraken/chachalot.tex12
-rw-r--r--latex/cards/kraken/clownfish.tex12
-rw-r--r--latex/cards/kraken/dolphin.tex12
-rw-r--r--latex/cards/kraken/frost_pylon.tex12
-rw-r--r--latex/cards/kraken/gigantic_hail.tex12
-rw-r--r--latex/cards/kraken/ice_berg.tex11
-rw-r--r--latex/cards/kraken/sailfish.tex12
-rw-r--r--latex/cards/kraken/suprise.tex (renamed from latex/cards/suprise.tex)11
-rw-r--r--latex/cards/kraken/tentacle_slap.tex (renamed from latex/cards/tentacle_slap.tex)11
-rw-r--r--latex/cards/kraken/the_kraken.tex11
-rw-r--r--latex/cards/kraken/tides_change.tex (renamed from latex/cards/tides_change.tex)11
-rw-r--r--latex/cards/kraken/unholy_cannonball.tex12
-rw-r--r--latex/cards/magic/action!.tex (renamed from latex/cards/action!.tex)11
-rw-r--r--latex/cards/magic/appear!.tex (renamed from latex/cards/appear!.tex)11
-rw-r--r--latex/cards/magic/attack!.tex (renamed from latex/cards/attack!.tex)11
-rw-r--r--latex/cards/magic/catalyst.tex (renamed from latex/cards/catalyst.tex)11
-rw-r--r--latex/cards/magic/clone!.tex (renamed from latex/cards/clone!.tex)11
-rw-r--r--latex/cards/magic/defense!.tex (renamed from latex/cards/defense!.tex)11
-rw-r--r--latex/cards/magic/die!.tex (renamed from latex/cards/die!.tex)11
-rw-r--r--latex/cards/magic/heal!.tex (renamed from latex/cards/heal!.tex)11
-rw-r--r--latex/cards/magic/isolate!.tex (renamed from latex/cards/isolate!.tex)11
-rw-r--r--latex/cards/magic/mine!.tex (renamed from latex/cards/mine!.tex)11
-rw-r--r--latex/cards/magic/more!.tex (renamed from latex/cards/more!.tex)11
-rw-r--r--latex/cards/magic/no!.tex (renamed from latex/cards/no!.tex)11
-rw-r--r--latex/cards/magic/pierce!.tex (renamed from latex/cards/pierce!.tex)11
-rw-r--r--latex/cards/magic/ritual!.tex (renamed from latex/cards/ritual!.tex)11
-rw-r--r--latex/cards/magic/rush!.tex (renamed from latex/cards/rush!.tex)11
-rw-r--r--latex/cards/magic/select!.tex (renamed from latex/cards/select!.tex)11
-rw-r--r--latex/cards/magic/shroud!.tex (renamed from latex/cards/shroud!.tex)11
-rw-r--r--latex/cards/magic/stumble!.tex (renamed from latex/cards/stumble!.tex)11
-rw-r--r--latex/cards/magic/switch!.tex (renamed from latex/cards/switch!.tex)11
-rw-r--r--latex/cards/magic/transmute!.tex (renamed from latex/cards/transmute!.tex)11
-rw-r--r--latex/cards/misc/farmer.tex11
-rw-r--r--latex/cards/misc/king.tex11
-rw-r--r--latex/cards/misc/stick_of_victory.tex (renamed from latex/cards/stick_of_victory.tex)11
-rw-r--r--latex/cards/missionary.tex19
-rw-r--r--latex/cards/nautics/barge.tex12
-rw-r--r--latex/cards/nautics/captain.tex12
-rw-r--r--latex/cards/nautics/fish_trap.tex11
-rw-r--r--latex/cards/nautics/fisher.tex12
-rw-r--r--latex/cards/nautics/galley.tex12
-rw-r--r--latex/cards/nautics/sailor.tex11
-rw-r--r--latex/cards/pikeman.tex19
-rw-r--r--latex/cards/pioneer.tex19
-rw-r--r--latex/cards/players_turn.tex52
-rw-r--r--latex/cards/recruit.tex18
-rw-r--r--latex/cards/recruiter.tex19
-rw-r--r--latex/cards/sailfish.tex19
-rw-r--r--latex/cards/sailor.tex18
-rw-r--r--latex/cards/smith.tex19
-rw-r--r--latex/cards/tax_collector.tex19
-rw-r--r--latex/cards/the_kraken.tex18
-rw-r--r--latex/cards/unholy_cannonball.tex19
-rw-r--r--latex/cards/wormtongue.tex19
-rw-r--r--latex/common.tex3
-rw-r--r--latex/libs.tex2
-rwxr-xr-xscripts/generate_card.py165
-rwxr-xr-xscripts/generate_latex.py194
190 files changed, 1136 insertions, 1780 deletions
diff --git a/data/base.ini b/data/base.ini
deleted file mode 100644
index 2ab76973..00000000
--- a/data/base.ini
+++ /dev/null
@@ -1,148 +0,0 @@
-[Sword]
-type = equipment
-buy = 5
-play = 2
-durability = 3
-effect = Equipped unit gains +1 Melee Damage
-
-[Great Sword]
-type = equipment
-buy = 10
-play = 4
-durability = 3
-effect = Equipped unit gains +2 Melee Damage
-
-[Shield]
-type = equipment
-buy = 5
-play = 1
-durability = 3
-effect = Equipped unit gains +1 Health
-
-[Tower Shield]
-type = equipment
-buy = 7
-play = 2
-durability = 3
-effect = Equipped unit has +2 Health
-
-[Archer]
-type = unit
-attack = 1 Range 2
-health = 2
-movement = 2
-buy = 5
-upkeep = 1
-
-[Knight]
-type = unit
-attack = 2
-health = 2
-movement = 2
-buy = 7
-upkeep = 2
-effect = + 1 Armor
-
-[Fighter]
-type = unit
-attack = 1
-health = 2
-movement = 2
-buy = 7
-upkeep = 1
-effect = One additional attack action
-
-[Pikeman]
-type = unit
-attack = 1
-health = 2
-movement = 1
-buy = 5
-upkeep = 1
-effect = Range 2 against Units with Movement >= 3
-
-[Cavalry]
-type = unit
-attack = 2
-health = 1
-movement = 3
-buy = 5
-upkeep = 2
-
-[Tax Collector]
-type = unit
-health = 1
-movement = 2
-buy = 5
-upkeep = 1
-full_action = Get 2 additional Ressource
-
-[Pioneer]
-type = unit
-health = 5
-movement = 2
-buy = 7
-upkeep = 1
-full_action = Neutralize adjacent tile or Artifact
-
-[Recruiter]
-type = unit
-attack = 1
-health = 2
-movement = 2
-buy = 10
-upkeep = 1
-effect = Allow Units to be played in Range 1
-full_action = Create Recruit token on adjacent tile
-
-[Recruit]
-type = unit
-token = true
-attack = 1
-health = 1
-movement = 1
-upkeep = 0
-
-[Missionary]
-type = unit
-health = 1
-movement = 2
-buy = 10
-upkeep = 2
-full_action = Put two faith counters on target Unit. If there are more faith counters than the units buying cost you control target unit
-
-[Advisor]
-type = unit
-health = 1
-movement = 2
-buy = 10
-upkeep = 2
-full_action = Draw 1 card. You may exile 1 card from your hand
-
-[Wormtongue]
-type = unit
-health = 1
-movement = 2
-buy = 10
-upkeep = 2
-full_action = 3: Add a Misinformation token to an opponents pile
-
-[Misinformation]
-token = true
-type = spell
-effect = Exile this card
-play = 5
-
-[Cavl. Archer]
-type = unit
-attack = 1 Range 2
-health = 1
-movement = 3
-buy = 10
-upkeep = 2
-
-[Palisade]
-type = artifact
-buy = 7
-play = 3
-effect = Solid 6
diff --git a/data/cards/base/advisor.yml b/data/cards/base/advisor.yml
new file mode 100644
index 00000000..b22f6781
--- /dev/null
+++ b/data/cards/base/advisor.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Advisor
+health: 1
+movement: 2
+buy: 10
+upkeep: 2
+full_action: Draw 1 card. You may exile 1 card from your hand
diff --git a/data/cards/base/archer.yml b/data/cards/base/archer.yml
new file mode 100644
index 00000000..eb7553c5
--- /dev/null
+++ b/data/cards/base/archer.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Archer
+attack: 1 Range 2
+health: 2
+movement: 2
+buy: 5
+upkeep: 1
diff --git a/data/cards/base/cavalry.yml b/data/cards/base/cavalry.yml
new file mode 100644
index 00000000..574026e3
--- /dev/null
+++ b/data/cards/base/cavalry.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Cavalry
+attack: 2
+health: 1
+movement: 3
+buy: 5
+upkeep: 2
diff --git a/data/cards/base/cavalry_archer.yml b/data/cards/base/cavalry_archer.yml
new file mode 100644
index 00000000..f5da0265
--- /dev/null
+++ b/data/cards/base/cavalry_archer.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Cavalry Archer
+attack: 1 Range 2
+health: 1
+movement: 3
+buy: 10
+upkeep: 2
diff --git a/data/cards/base/fighter.yml b/data/cards/base/fighter.yml
new file mode 100644
index 00000000..113f69ff
--- /dev/null
+++ b/data/cards/base/fighter.yml
@@ -0,0 +1,8 @@
+type: unit
+name: Fighter
+attack: 1
+health: 2
+movement: 2
+buy: 7
+upkeep: 1
+effect: One additional attack action
diff --git a/data/cards/base/great_sword.yml b/data/cards/base/great_sword.yml
new file mode 100644
index 00000000..40542ed2
--- /dev/null
+++ b/data/cards/base/great_sword.yml
@@ -0,0 +1,6 @@
+type: equipment
+name: Great Sword
+buy: 10
+play: 4
+durability: 3
+effect: Equipped unit gains +2 Melee Damage
diff --git a/data/cards/base/knight.yml b/data/cards/base/knight.yml
new file mode 100644
index 00000000..f8d7bdd1
--- /dev/null
+++ b/data/cards/base/knight.yml
@@ -0,0 +1,8 @@
+type: unit
+name: Knight
+attack: 2
+health: 2
+movement: 2
+buy: 7
+upkeep: 2
+effect: + 1 Armor
diff --git a/data/cards/base/misinformation.yml b/data/cards/base/misinformation.yml
new file mode 100644
index 00000000..08e22fe3
--- /dev/null
+++ b/data/cards/base/misinformation.yml
@@ -0,0 +1,5 @@
+type: spell
+name: Misinformation
+token: true
+effect: Exile this card
+play: 5
diff --git a/data/cards/base/missionary.yml b/data/cards/base/missionary.yml
new file mode 100644
index 00000000..77fbb694
--- /dev/null
+++ b/data/cards/base/missionary.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Missionary
+health: 1
+movement: 2
+buy: 10
+upkeep: 2
+full_action: Put two faith counters on target Unit. If there are more faith counters than the units buying cost you control target unit
diff --git a/data/cards/base/palisade.yml b/data/cards/base/palisade.yml
new file mode 100644
index 00000000..de0d8c2c
--- /dev/null
+++ b/data/cards/base/palisade.yml
@@ -0,0 +1,5 @@
+type: artifact
+name: Palisade
+buy: 7
+play: 3
+effect: Solid 6
diff --git a/data/cards/base/pikeman.yml b/data/cards/base/pikeman.yml
new file mode 100644
index 00000000..766a8ff4
--- /dev/null
+++ b/data/cards/base/pikeman.yml
@@ -0,0 +1,8 @@
+type: unit
+name: Pikeman
+attack: 1
+health: 2
+movement: 1
+buy: 5
+upkeep: 1
+effect: Range 2 against Units with Movement >= 3
diff --git a/data/cards/base/pioneer.yml b/data/cards/base/pioneer.yml
new file mode 100644
index 00000000..3e1315a1
--- /dev/null
+++ b/data/cards/base/pioneer.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Pioneer
+health: 5
+movement: 2
+buy: 7
+upkeep: 1
+full_action: Neutralize adjacent tile or Artifact
diff --git a/data/cards/base/recruit.yml b/data/cards/base/recruit.yml
new file mode 100644
index 00000000..99ab85fa
--- /dev/null
+++ b/data/cards/base/recruit.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Recruit
+token: true
+attack: 1
+health: 1
+movement: 1
+upkeep: 0
diff --git a/data/cards/base/recruiter.yml b/data/cards/base/recruiter.yml
new file mode 100644
index 00000000..3dc62fbb
--- /dev/null
+++ b/data/cards/base/recruiter.yml
@@ -0,0 +1,9 @@
+type: unit
+name: Recruiter
+attack: 1
+health: 2
+movement: 2
+buy: 10
+upkeep: 1
+effect: Allow Units to be played in Range 1
+full_action: Create Recruit token on adjacent tile
diff --git a/data/cards/base/shield.yml b/data/cards/base/shield.yml
new file mode 100644
index 00000000..3ca09d6b
--- /dev/null
+++ b/data/cards/base/shield.yml
@@ -0,0 +1,6 @@
+type: equipment
+name: Shield
+buy: 5
+play: 1
+durability: 3
+effect: Equipped unit gains +1 Health
diff --git a/data/cards/base/sword.yml b/data/cards/base/sword.yml
new file mode 100644
index 00000000..b5875ec7
--- /dev/null
+++ b/data/cards/base/sword.yml
@@ -0,0 +1,6 @@
+type: equipment
+name: Sword
+buy: 5
+play: 2
+durability: 3
+effect: Equipped unit gains +1 Melee Damage
diff --git a/data/cards/base/tax_collector.yml b/data/cards/base/tax_collector.yml
new file mode 100644
index 00000000..47e46c27
--- /dev/null
+++ b/data/cards/base/tax_collector.yml
@@ -0,0 +1,7 @@
+type: unit
+name: Tax Collector
+health: 1
+movement: 2
+buy: 5
+upkeep: 1
+full_action: Get 2 additional Ressource
diff --git a/data/cards/base/tower_shield.yml b/data/cards/base/tower_shield.yml
new file mode 100644
index 00000000..d5d31ffa
--- /dev/null
+++ b/data/cards/base/tower_shield.yml
@@ -0,0 +1,6 @@
+type: equipment
+name: Tower Shield
+buy: 7
+play: 2
+durability: 3
+effect: Equipped unit has +2 Health
diff --git a/data/cards/base/wormtongue.yml b/data/cards/base/wormtongue.yml
new file mode 100644
index 00000000..73207ec5
--- /dev/null
+++ b/data/cards/base/wormtongue.yml
@@ -0,0 +1,10 @@
+type: unit
+name: Wormtongue
+health: 1
+movement: 2
+buy: 10
+upkeep: 2
+full_action:
+ cost: 3
+ effect: Add a Misinformation token to an opponents pile
+latex_full_action: "\\faRedo, 3: Add a Misinformation token to an opponents pile"
diff --git a/data/cards/equipments/armor.yml b/data/cards/equipments/armor.yml
new file mode 100644
index 00000000..c7ebb3c2
--- /dev/null
+++ b/data/cards/equipments/armor.yml
@@ -0,0 +1,6 @@
+name: Armor
+type: equipment
+buy: 7
+play: 2
+durability: 3
+effect: Equipped unit gains + 1 Armor
diff --git a/data/cards/equipments/banner.yml b/data/cards/equipments/banner.yml
new file mode 100644
index 00000000..57a6c976
--- /dev/null
+++ b/data/cards/equipments/banner.yml
@@ -0,0 +1,5 @@
+name: Banner
+type: artifact
+play: 7
+buy: 2
+effect: Units you control in range 1 gain +1 attack damage and +1 movement
diff --git a/data/cards/equipments/cloak.yml b/data/cards/equipments/cloak.yml
new file mode 100644
index 00000000..df3f605f
--- /dev/null
+++ b/data/cards/equipments/cloak.yml
@@ -0,0 +1,6 @@
+name: Cloak
+type: equipment
+play: 7
+buy: 3
+durability: 2
+effect: Equipped unit gains shroud (can't be targeted)
diff --git a/data/cards/equipments/gear.yml b/data/cards/equipments/gear.yml
new file mode 100644
index 00000000..e344779b
--- /dev/null
+++ b/data/cards/equipments/gear.yml
@@ -0,0 +1,6 @@
+name: Gear
+type: equipment
+play: 3
+buy: 2
+durability: 3
+effect: Equipped unit gain +1 movement
diff --git a/data/cards/equipments/mace.yml b/data/cards/equipments/mace.yml
new file mode 100644
index 00000000..1d52190e
--- /dev/null
+++ b/data/cards/equipments/mace.yml
@@ -0,0 +1,6 @@
+name: Mace
+type: equipment
+play: 6
+buy: 2
+durability: 3
+effect: Equipped unit afflicts Paralysis when dealing damage in melee combat
diff --git a/data/cards/equipments/plate_armor.yml b/data/cards/equipments/plate_armor.yml
new file mode 100644
index 00000000..df37de72
--- /dev/null
+++ b/data/cards/equipments/plate_armor.yml
@@ -0,0 +1,6 @@
+name: Plate Armor
+type: equipment
+buy: 8
+play: 3
+durability: 1
+effect: Equipped unit has +2 Armor and -2 Movement
diff --git a/data/cards/equipments/poisoned_dagger.yml b/data/cards/equipments/poisoned_dagger.yml
new file mode 100644
index 00000000..03ea2ee5
--- /dev/null
+++ b/data/cards/equipments/poisoned_dagger.yml
@@ -0,0 +1,6 @@
+name: Poisoned Dagger
+type: equipment
+play: 7
+buy: 3
+durability: 2
+effect: Equipped unit deals damage as poison counters in melee combat
diff --git a/data/cards/equipments/reclaim!.yml b/data/cards/equipments/reclaim!.yml
new file mode 100644
index 00000000..d264c7ad
--- /dev/null
+++ b/data/cards/equipments/reclaim!.yml
@@ -0,0 +1,5 @@
+name: Reclaim!
+type: spell
+buy: 5
+play: X
+effect: Teleport target Artifact you own with Playcost X to a free spawn tile of yours.
diff --git a/data/cards/equipments/relic.yml b/data/cards/equipments/relic.yml
new file mode 100644
index 00000000..8adfa12a
--- /dev/null
+++ b/data/cards/equipments/relic.yml
@@ -0,0 +1,5 @@
+name: Relic
+type: artifact
+play: 7
+buy: 3
+effect: In your upkeep the player controlling the most units in range 1 gains 1 resource. On ties all tied players gain 1 resource.
diff --git a/data/cards/equipments/shatter!.yml b/data/cards/equipments/shatter!.yml
new file mode 100644
index 00000000..90e7f570
--- /dev/null
+++ b/data/cards/equipments/shatter!.yml
@@ -0,0 +1,5 @@
+name: Shatter!
+type: spell
+buy: 5
+play: X
+effect: Destroy target artifact with buy = X
diff --git a/data/cards/equipments/smith.yml b/data/cards/equipments/smith.yml
new file mode 100644
index 00000000..1d3d55cf
--- /dev/null
+++ b/data/cards/equipments/smith.yml
@@ -0,0 +1,11 @@
+name: Smith
+type: unit
+buy: 10
+upkeep: 2
+health: 1
+movement: 2
+full_action:
+ cost: X
+ effect: Create Copy of artifact with buy cost = X in range 1 on empty tile in range 1
+
+latex_full_action: "\\faRedo, X: Create Copy of artifact with buy cost = X in range 1 on empty tile in range 1"
diff --git a/data/cards/equipments/spear.yml b/data/cards/equipments/spear.yml
new file mode 100644
index 00000000..4a7bc13c
--- /dev/null
+++ b/data/cards/equipments/spear.yml
@@ -0,0 +1,6 @@
+name: Spear
+type: equipment
+play: 7
+buy: 2
+durability: 3
+effect: Equipped unit gains +1 Attack and Range 2 against unit with M >= 3
diff --git a/data/cards/kraken/angry_squid.yml b/data/cards/kraken/angry_squid.yml
new file mode 100644
index 00000000..ac948323
--- /dev/null
+++ b/data/cards/kraken/angry_squid.yml
@@ -0,0 +1,8 @@
+name: Angry Squid
+type: unit
+ai: Aggressive
+attack: 1 Range 2
+health: 1
+movement: 2 swimming
+buy: 7
+upkeep: 2
diff --git a/data/cards/kraken/chachalot.yml b/data/cards/kraken/chachalot.yml
new file mode 100644
index 00000000..ed45f7d2
--- /dev/null
+++ b/data/cards/kraken/chachalot.yml
@@ -0,0 +1,9 @@
+name: Chachalot
+type: unit
+ai: Wandering
+attack: 2
+health: 2
+movement: 2 swimming
+buy: 10
+upkeep: 2
+effect: + 1 Armor
diff --git a/data/cards/kraken/clownfish.yml b/data/cards/kraken/clownfish.yml
new file mode 100644
index 00000000..1762a848
--- /dev/null
+++ b/data/cards/kraken/clownfish.yml
@@ -0,0 +1,8 @@
+name: Clownfish
+type: unit
+ai: Shy
+health: 1
+movement: 2 swimming
+buy: 10
+upkeep: 2
+full_action: Get 4 additional Ressource
diff --git a/data/cards/kraken/dolphin.yml b/data/cards/kraken/dolphin.yml
new file mode 100644
index 00000000..f9a0c26c
--- /dev/null
+++ b/data/cards/kraken/dolphin.yml
@@ -0,0 +1,8 @@
+name: Dolphin
+type: unit
+ai: Supportive
+health: 2
+movement: 2
+buy: 7
+upkeep: 1
+full_action: Give random Unit in range 1 random buff
diff --git a/data/cards/kraken/frost_pylon.yml b/data/cards/kraken/frost_pylon.yml
new file mode 100644
index 00000000..70ba8d0f
--- /dev/null
+++ b/data/cards/kraken/frost_pylon.yml
@@ -0,0 +1,5 @@
+name: Frost Pylon
+type: artifact
+buy: 5
+effect: Enemy units in range 1 can't activate abilities except full_Action(put a crack counter on Frost Pylon). If there are three or more crack counter on Frost Pylon destroy it. Frost Pylon can be played next to a random enemy unit
+latex_effect: "Enemy units in range 1 can't activate abilities except: \\enquote{~\\faRedo: put a crack counter on Frost Pylon}. \\\\ \\vspace{0.3cm} If there are three or more crack counter on Frost Pylon destroy it. Frost Pylon can be played next to a random enemy unit"
diff --git a/data/cards/kraken/gigantic_hail.yml b/data/cards/kraken/gigantic_hail.yml
new file mode 100644
index 00000000..d25433f2
--- /dev/null
+++ b/data/cards/kraken/gigantic_hail.yml
@@ -0,0 +1,4 @@
+name: Gigantic Hail
+type: spell
+play: 3
+effect: Place an Ice Berg token on a random empty tile
diff --git a/data/cards/kraken/ice_berg.yml b/data/cards/kraken/ice_berg.yml
new file mode 100644
index 00000000..02f9e53e
--- /dev/null
+++ b/data/cards/kraken/ice_berg.yml
@@ -0,0 +1,4 @@
+name: Ice Berg
+type: artifact
+token: true
+effect: Solid 3
diff --git a/data/cards/kraken/sailfish.yml b/data/cards/kraken/sailfish.yml
new file mode 100644
index 00000000..baf03f16
--- /dev/null
+++ b/data/cards/kraken/sailfish.yml
@@ -0,0 +1,8 @@
+name: Sailfish
+type: unit
+ai: Aggressive
+attack: 1
+health: 1
+movement: 3
+buy: 7
+upkeep: 1
diff --git a/data/cards/kraken/suprise.yml b/data/cards/kraken/suprise.yml
new file mode 100644
index 00000000..68701310
--- /dev/null
+++ b/data/cards/kraken/suprise.yml
@@ -0,0 +1,4 @@
+name: Suprise
+type: spell
+play: 1
+effect: Place the next Unit played this turn next to a random enemy Unit
diff --git a/data/cards/kraken/tentacle_slap.yml b/data/cards/kraken/tentacle_slap.yml
new file mode 100644
index 00000000..c4a7d5f4
--- /dev/null
+++ b/data/cards/kraken/tentacle_slap.yml
@@ -0,0 +1,4 @@
+name: Tentacle Slap
+type: spell
+play: 3
+effect: Each player discards their hand
diff --git a/data/cards/kraken/the_kraken.yml b/data/cards/kraken/the_kraken.yml
new file mode 100644
index 00000000..096446ba
--- /dev/null
+++ b/data/cards/kraken/the_kraken.yml
@@ -0,0 +1,4 @@
+name: The Kraken
+type: unit
+health: 5
+attack: 1
diff --git a/data/cards/kraken/tides_change.yml b/data/cards/kraken/tides_change.yml
new file mode 100644
index 00000000..1da2aa38
--- /dev/null
+++ b/data/cards/kraken/tides_change.yml
@@ -0,0 +1,4 @@
+name: Tides Change
+type: spell
+play: 5
+effect: Redistribute all store cards
diff --git a/data/cards/kraken/unholy_cannonball.yml b/data/cards/kraken/unholy_cannonball.yml
new file mode 100644
index 00000000..39618ebe
--- /dev/null
+++ b/data/cards/kraken/unholy_cannonball.yml
@@ -0,0 +1,6 @@
+name: Unholy Cannonball
+type: spell
+play: 5
+effect: If no enemy Units are in range 2 of The Kraken gain 5 ressource and draw a card. Otherwise put a fear counter on all enemy Units in range 2 of The Kraken
+
+effect: If no enemy Units are in range~2 of The Kraken gain 5~ressource and draw a card. \\ \vspace{0.3cm} Otherwise put a fear counter on all enemy Units in range~2 of The Kraken
diff --git a/data/cards/magic/action!.yml b/data/cards/magic/action!.yml
new file mode 100644
index 00000000..940e4553
--- /dev/null
+++ b/data/cards/magic/action!.yml
@@ -0,0 +1,5 @@
+name: Action!
+type: spell
+buy: 5
+play: 2
+effect: Move or attack with one unit
diff --git a/data/cards/magic/appear!.yml b/data/cards/magic/appear!.yml
new file mode 100644
index 00000000..4a23d982
--- /dev/null
+++ b/data/cards/magic/appear!.yml
@@ -0,0 +1,5 @@
+name: Appear!
+type: spell
+buy: 7
+play: 3X
+effect: Play one unit costing X on any free tile
diff --git a/data/cards/magic/attack!.yml b/data/cards/magic/attack!.yml
new file mode 100644
index 00000000..044bb1f9
--- /dev/null
+++ b/data/cards/magic/attack!.yml
@@ -0,0 +1,5 @@
+name: Attack!
+type: spell
+buy: 5
+play: 2
+effect: Distribute 2 times "+1 Attack this turn" on up to two units
diff --git a/data/cards/magic/catalyst.yml b/data/cards/magic/catalyst.yml
new file mode 100644
index 00000000..7a038280
--- /dev/null
+++ b/data/cards/magic/catalyst.yml
@@ -0,0 +1,5 @@
+name: catalyst
+type: artifact
+buy: 3
+play: 5
+effect: Spells any player controlling the most units in range 1 playes cost one less resource
diff --git a/data/cards/magic/clone!.yml b/data/cards/magic/clone!.yml
new file mode 100644
index 00000000..f5da8f1f
--- /dev/null
+++ b/data/cards/magic/clone!.yml
@@ -0,0 +1,5 @@
+name: Clone!
+type: spell
+buy: 7
+play: 3
+effect: Copy the next card you play. You may choose new targets. If you copy a permanent place a token copy of the parmanent in range 1 of the original
diff --git a/data/cards/magic/defense!.yml b/data/cards/magic/defense!.yml
new file mode 100644
index 00000000..38fae437
--- /dev/null
+++ b/data/cards/magic/defense!.yml
@@ -0,0 +1,5 @@
+name: Defense!
+type: spell
+buy: 5
+play: 3
+effect: Two units gain +1 Armor until end of turn
diff --git a/data/cards/magic/die!.yml b/data/cards/magic/die!.yml
new file mode 100644
index 00000000..f8b13155
--- /dev/null
+++ b/data/cards/magic/die!.yml
@@ -0,0 +1,5 @@
+name: Die!
+type: spell
+buy: 10
+play: 6
+effect: Destroy target Unit
diff --git a/data/cards/magic/heal!.yml b/data/cards/magic/heal!.yml
new file mode 100644
index 00000000..cd8af15d
--- /dev/null
+++ b/data/cards/magic/heal!.yml
@@ -0,0 +1,5 @@
+name: Heal!
+type: spell
+buy: 5
+play: 2
+effect: Target unit gains 1 Health or remove all Poison counters from it
diff --git a/data/cards/magic/isolate!.yml b/data/cards/magic/isolate!.yml
new file mode 100644
index 00000000..6c969c2c
--- /dev/null
+++ b/data/cards/magic/isolate!.yml
@@ -0,0 +1,5 @@
+name: Isolate!
+type: spell
+buy: 5
+play: 2
+effect: Target unit can not receive or deal damage this turn
diff --git a/data/cards/magic/mine!.yml b/data/cards/magic/mine!.yml
new file mode 100644
index 00000000..17571785
--- /dev/null
+++ b/data/cards/magic/mine!.yml
@@ -0,0 +1,5 @@
+name: Mine!
+type: spell
+buy: 5
+play: 2
+effect: Steal 2 resource from opponent
diff --git a/data/cards/magic/more!.yml b/data/cards/magic/more!.yml
new file mode 100644
index 00000000..d2bcfbe8
--- /dev/null
+++ b/data/cards/magic/more!.yml
@@ -0,0 +1,5 @@
+name: More!
+type: spell
+buy: 5
+play: 2
+effect: Draw two cards
diff --git a/data/cards/magic/no!.yml b/data/cards/magic/no!.yml
new file mode 100644
index 00000000..f5485b70
--- /dev/null
+++ b/data/cards/magic/no!.yml
@@ -0,0 +1,5 @@
+name: No!
+type: spell
+buy: 5
+play: 2
+effect: Counter target spell
diff --git a/data/cards/magic/pierce!.yml b/data/cards/magic/pierce!.yml
new file mode 100644
index 00000000..8dfd4628
--- /dev/null
+++ b/data/cards/magic/pierce!.yml
@@ -0,0 +1,5 @@
+name: Pierce!
+type: spell
+buy: 5
+play: 1X
+effect: Ignore X Armor of target unit this turn
diff --git a/data/cards/magic/ritual!.yml b/data/cards/magic/ritual!.yml
new file mode 100644
index 00000000..e317faab
--- /dev/null
+++ b/data/cards/magic/ritual!.yml
@@ -0,0 +1,5 @@
+name: Ritual!
+type: spell
+buy: 7
+play: 1
+effect: Gain 3 Ressource
diff --git a/data/cards/magic/rush!.yml b/data/cards/magic/rush!.yml
new file mode 100644
index 00000000..84439b30
--- /dev/null
+++ b/data/cards/magic/rush!.yml
@@ -0,0 +1,5 @@
+name: Rush!
+type: spell
+buy: 5
+play: 2
+effect: Distribute 2 times "+ 2 Movement this turn" on up to two units
diff --git a/data/cards/magic/select!.yml b/data/cards/magic/select!.yml
new file mode 100644
index 00000000..154f840a
--- /dev/null
+++ b/data/cards/magic/select!.yml
@@ -0,0 +1,5 @@
+name: Select!
+type: spell
+buy: 7
+play: 1
+effect: Draw 1. You may exile a card from your hand
diff --git a/data/cards/magic/shroud!.yml b/data/cards/magic/shroud!.yml
new file mode 100644
index 00000000..1a1309fa
--- /dev/null
+++ b/data/cards/magic/shroud!.yml
@@ -0,0 +1,5 @@
+name: Shroud!
+type: spell
+buy: 5
+play: 2
+effect: Target unit can not be targeted this turn
diff --git a/data/cards/magic/stumble!.yml b/data/cards/magic/stumble!.yml
new file mode 100644
index 00000000..b384854a
--- /dev/null
+++ b/data/cards/magic/stumble!.yml
@@ -0,0 +1,5 @@
+name: Stumble!
+type: spell
+buy: 5
+play: 2
+effect: Target unit can not move or attack this turn
diff --git a/data/cards/magic/switch!.yml b/data/cards/magic/switch!.yml
new file mode 100644
index 00000000..a93f29f1
--- /dev/null
+++ b/data/cards/magic/switch!.yml
@@ -0,0 +1,5 @@
+name: Switch!
+type: spell
+buy: 5
+play: 2
+effect: Switch the positions of two permanents you control
diff --git a/data/cards/magic/transmute!.yml b/data/cards/magic/transmute!.yml
new file mode 100644
index 00000000..6686b091
--- /dev/null
+++ b/data/cards/magic/transmute!.yml
@@ -0,0 +1,5 @@
+name: Transmute!
+type: spell
+buy: 5
+play: 5
+effect: Put one card from your store into your hand. Exile this card
diff --git a/data/cards/misc/farmer.yml b/data/cards/misc/farmer.yml
new file mode 100644
index 00000000..18c0a372
--- /dev/null
+++ b/data/cards/misc/farmer.yml
@@ -0,0 +1,6 @@
+name: Farmer
+type: unit
+attack: 1
+health: 1
+movement: 1
+upkeep: 1
diff --git a/data/cards/misc/king.yml b/data/cards/misc/king.yml
new file mode 100644
index 00000000..a4e7632e
--- /dev/null
+++ b/data/cards/misc/king.yml
@@ -0,0 +1,8 @@
+name: King
+token: true
+type: unit
+effect: "5 Resource: +shroud until end of turn. \\ Protection from Die!"
+upkeep: 0
+attack: 1
+health: 5
+movement: 1
diff --git a/data/cards/misc/stick_of_victory.yml b/data/cards/misc/stick_of_victory.yml
new file mode 100644
index 00000000..629b4b42
--- /dev/null
+++ b/data/cards/misc/stick_of_victory.yml
@@ -0,0 +1,5 @@
+name: Stick of Victory
+type: equipment
+token: true
+durability: infinite
+effect: The controller of the equipped unit increases its victory count by 1 in their upkeep
diff --git a/data/cards/nautics/barge.yml b/data/cards/nautics/barge.yml
new file mode 100644
index 00000000..20e26015
--- /dev/null
+++ b/data/cards/nautics/barge.yml
@@ -0,0 +1,7 @@
+name: Barge
+type: unit
+health: 3
+movement: 3 swimming
+buy: 5
+upkeep: 1
+effect: Crew 6
diff --git a/data/cards/nautics/captain.yml b/data/cards/nautics/captain.yml
new file mode 100644
index 00000000..fbab764f
--- /dev/null
+++ b/data/cards/nautics/captain.yml
@@ -0,0 +1,8 @@
+name: Captain
+type: unit
+health: 1
+movement: 1
+attack: 1
+buy: 7
+upkeep: 2
+effect: Other units in the same pile have no upkeep cost
diff --git a/data/cards/nautics/fish_trap.yml b/data/cards/nautics/fish_trap.yml
new file mode 100644
index 00000000..c7082093
--- /dev/null
+++ b/data/cards/nautics/fish_trap.yml
@@ -0,0 +1,5 @@
+name: Fish Trap
+type: artifact
+token: true
+effect: Adjacent Fisher have full_action(Gain 2 Resource)
+latex_effect: "Adjacent Fisher have \\\\ \\enquote{~\\faRedo: Gain 2 Resource}"
diff --git a/data/cards/nautics/fisher.yml b/data/cards/nautics/fisher.yml
new file mode 100644
index 00000000..9708fc67
--- /dev/null
+++ b/data/cards/nautics/fisher.yml
@@ -0,0 +1,8 @@
+name: Fisher
+type: unit
+health: 2
+movement: 2 swimming
+buy: 5
+upkeep: 1
+effect: Crew 2
+full_action: Create fish trap token on adjacent water tile
diff --git a/data/cards/nautics/galley.yml b/data/cards/nautics/galley.yml
new file mode 100644
index 00000000..c7da7c63
--- /dev/null
+++ b/data/cards/nautics/galley.yml
@@ -0,0 +1,8 @@
+name: Galley
+type: unit
+health: 4
+attack: 1 range 2
+movement: 3 swimming
+buy: 7
+upkeep: 1
+effect: Crew 3
diff --git a/data/cards/nautics/sailor.yml b/data/cards/nautics/sailor.yml
new file mode 100644
index 00000000..96c95b03
--- /dev/null
+++ b/data/cards/nautics/sailor.yml
@@ -0,0 +1,7 @@
+name: Sailor
+type: unit
+health: 1
+movement: 1
+attack: 1
+upkeep: 1
+effect: A crewed unit gets +1 movement while swimming
diff --git a/data/equipments.ini b/data/equipments.ini
deleted file mode 100644
index 81599d01..00000000
--- a/data/equipments.ini
+++ /dev/null
@@ -1,80 +0,0 @@
-[Armor]
-type = equipment
-buy = 7
-play = 2
-durability = 3
-effect = Equipped unit gains + 1 Armor
-
-[Relic]
-type = artifact
-play = 7
-buy = 3
-effect = In your upkeep the player controlling the most units in range 1 gains 1 resource. On ties all tied players gain 1 resource.
-
-[Banner]
-type = artifact
-play = 7
-buy = 2
-effect = Units you control in range 1 gain +1 attack damage and +1 movement
-
-[Gear]
-type = equipment
-play = 3
-buy = 2
-durability = 3
-effect = Equipped unit gain +1 movement
-
-[Poisoned Dagger]
-type = equipment
-play = 7
-buy = 3
-durability = 2
-effect = Equipped unit deals damage as poison counters in melee combat
-
-[Mace]
-type = equipment
-play = 6
-buy = 2
-durability = 3
-effect = Equipped unit afflicts Paralysis when dealing damage in melee combat
-
-[Plate Armor]
-type = equipment
-buy = 8
-play = 3
-durability = 1
-effect = Equipped unit has +2 Armor and -2 Movement
-
-[Cloak]
-type = equipment
-play = 7
-buy = 3
-durability = 2
-effect = Equipped unit gains shroud (can't be targeted)
-
-[Spear]
-type = equipment
-play = 7
-buy = 2
-durability = 3
-effect = Equipped unit gains +1 Attack and Range 2 against unit with M >= 3
-
-[Smith]
-type = unit
-buy = 10
-upkeep = 2
-health = 1
-movement = 2
-full_action = Pay X: Create Copy of artifact with buy cost = X in range 1 on empty tile in range 1
-
-[Shatter!]
-type = spell
-buy = 5
-play = X
-effect = Destroy target artifact with buy = X
-
-[Reclaim!]
-type = spell
-buy = 5
-play = X
-effect = Teleport target Artifact you own with Playcost X to a free spawn tile of yours.
diff --git a/data/kraken.ini b/data/kraken.ini
deleted file mode 100644
index 4fdf6ab4..00000000
--- a/data/kraken.ini
+++ /dev/null
@@ -1,80 +0,0 @@
-[The Kraken]
-type = unit
-health = 5
-attack = 1
-
-[Frost Pylon]
-type = artifact
-buy = 5
-effect = Enemy units in range 1 can't activate abilities except: "\\faRedo: put a crack counter on Frost Pylon". If there are three or more crack counter on Frost Pylon destroy it. Frots Pylon can be played next to a random enemy unit.
-
-[Ice Berg]
-type = artifact
-play = 3
-effect = Solid 3
-
-[Clownfish]
-type = unit
-ai = Shy
-health = 1
-movement = 2 swimming
-buy = 10
-upkeep = 2
-full_action = Get 4 additional Ressource
-
-[Angry Squid]
-type = unit
-ai = Aggressive
-attack = 1 Range 2
-health = 1
-movement = 2 swimming
-buy = 7
-upkeep = 2
-
-[Chachalot]
-type = unit
-ai = Wandering
-attack = 2
-health = 2
-movement = 2 swimming
-buy = 10
-upkeep = 2
-effect = + 1 Armor
-
-[Sailfish]
-type = unit
-ai = Aggressive
-attack = 1
-health = 1
-movement = 3
-buy = 7
-upkeep = 1
-
-[Dolphin]
-type = unit
-ai = Supportive
-health = 2
-movement = 2
-buy = 7
-upkeep = 1
-full_action = Give random Unit in range 1 random buff
-
-[Tentacle Slap]
-type = spell
-play = 3
-effect = Each player discards their hand
-
-[Tides Change]
-type = spell
-play = 5
-effect = Redistribute all store cards
-
-[Suprise]
-type = spell
-play = 1
-effect = Place the next Unit played this turn next to a random enemy Unit
-
-[Unholy Cannonball]
-type = spell
-play = 5
-effect = If no enemy Units are in range 2 of The Kraken gains 5 ressource and draws a card. \\ Otherwise put a fear counter on all enemy Units in range 2
diff --git a/data/magic.ini b/data/magic.ini
deleted file mode 100644
index 0d569601..00000000
--- a/data/magic.ini
+++ /dev/null
@@ -1,119 +0,0 @@
-[Defense!]
-type = spell
-buy = 5
-play = 3
-effect = Two units gain +1 Armor until end of turn
-
-[Heal!]
-type = spell
-buy = 5
-play = 2
-effect = Target unit gains 1 Health or remove all Poison counters from it
-
-[Rush!]
-type = spell
-buy = 5
-play = 2
-effect = Distribute 2 times "+ 2 Movement this turn" on up to two units
-
-[Attack!]
-type = spell
-buy = 5
-play = 2
-effect = Distribute 2 times "+1 Attack this turn" on up to two units
-
-[Action!]
-type = spell
-buy = 5
-play = 2
-effect = Move or attack with one unit
-
-[Stumble!]
-type = spell
-buy = 5
-play = 2
-effect = Target unit can not move or attack this turn
-
-[More!]
-type = spell
-buy = 5
-play = 2
-effect = Draw two cards
-
-[Select!]
-type = spell
-buy = 7
-play = 1
-effect = Draw 1. You may exile a card from your hand
-
-[Die!]
-type = spell
-buy = 10
-play = 6
-effect = Destroy target Unit
-
-[Clone!]
-type = spell
-buy = 7
-play = 3
-effect = Copy the next card you play. You may choose new targets. If you copy a permanent place a token copy of the parmanent in range 1 of the original
-
-[No!]
-type = spell
-buy = 5
-play = 2
-effect = Counter target spell
-
-[Mine!]
-type = spell
-buy = 5
-play = 2
-effect = Steal 2 resource from opponent
-
-[Isolate!]
-type = spell
-buy = 5
-play = 2
-effect = Target unit can not receive or deal damage this turn
-
-[Shroud!]
-type = spell
-buy = 5
-play = 2
-effect = Target unit can not be targeted this turn
-
-[Pierce!]
-type = spell
-buy = 5
-play = 1X
-effect = Ignore X Armor of target unit this turn
-
-[Ritual!]
-type = spell
-buy = 7
-play = 1
-effect = Gain 3 Ressource
-
-[Switch!]
-type = spell
-buy = 5
-play = 2
-effect = Switch the positions of two permanents you control
-
-[Transmute!]
-type = spell
-buy = 5
-play = 5
-effect = Put one card from your store into your hand. Exile this card
-
-[Appear!]
-type = spell
-buy = 7
-play = 3X
-effect = Play one unit costing X on any free tile
-
-[catalyst]
-type = artifact
-buy = 3
-play = 5
-effect = Spells any player controlling the most units in range 1 playes cost one less resource
diff --git a/data/misc.ini b/data/misc.ini
deleted file mode 100644
index a1ab9e19..00000000
--- a/data/misc.ini
+++ /dev/null
@@ -1,21 +0,0 @@
-[King]
-token = true
-type = unit
-effect = 5 Resource: +shroud until end of turn. \\ Protection from Die!
-upkeep = 0
-attack = 1
-health = 5
-movement = 1
-
-[Farmer]
-type = unit
-attack = 1
-health = 1
-movement = 1
-upkeep = 1
-
-[Stick of Victory]
-type = equipment
-token = true
-durability = infinite
-effect = The controller of the equipped unit increases its victory count by 1 in their upkeep
diff --git a/data/nautics.ini b/data/nautics.ini
deleted file mode 100644
index 48865938..00000000
--- a/data/nautics.ini
+++ /dev/null
@@ -1,47 +0,0 @@
-[Fisher]
-type = unit
-health = 2
-movement = 2 swimming
-buy = 5
-upkeep = 1
-effect = Crew 2
-full_action = Create fish trap token on adjacent water tile
-
-[Fish Trap]
-type = artifact
-token = true
-effect = Adjacent Fisher have \\ \faRedo: Gain 2 Resource
-
-[Sailor]
-type = unit
-health = 1
-movement = 1
-attack = 1
-upkeep = 1
-effect = A crewed unit gets +1 movement while swimming
-
-[Captain]
-type = unit
-health = 1
-movement = 1
-attack = 1
-buy = 7
-upkeep = 2
-effect = Other units in the same pile have no upkeep cost
-
-[Barge]
-type = unit
-health = 3
-movement = 3 swimming
-buy = 5
-upkeep = 1
-effect = Crew 6
-
-[Galley]
-type = unit
-health = 4
-attack = 1 range 2
-movement = 3 swimming
-buy = 7
-upkeep = 1
-effect = Crew 3
diff --git a/latex/Makefile b/latex/Makefile
index 5eedeb05..ce98c59d 100644
--- a/latex/Makefile
+++ b/latex/Makefile
@@ -1,4 +1,4 @@
-.PHONY: all clean
+.PHONY: all clean clean-all cards-tex cards-pdf cards-png
.DEFAULT_GOAL = all
@@ -6,57 +6,83 @@ PDFLATEX = lualatex
PDFTOPPM = pdftoppm
PDFUNITE = pdfunite
-PDFTOPPM_FLAGS = -singlefile -png -r 300
+GENERATE_CARD = $(GAME_ROOT)scripts/generate_card.py
-COMMON_TEX_FILES = libs.tex colors.tex tikzcards.tex
+PDFTOPPM_FLAGS = -singlefile -png -r 300
-CARDS_DIR = cards
-CARD_SOURCES = $(shell find $(CARDS_DIR) -name "*.tex")
+COMMON_TEX_FILES = common.tex libs.tex colors.tex tikzcards.tex
-SETS_DIR = sets
-SETS_SOURCES = $(shell find $(SETS_DIR) -name "*.tex")
+# The full path to the Makefile
+MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+# The path to the directory of the Makefile
+MAKEFILE_DIR := $(dir $(MAKEFILE_PATH))
-VERBOSE = @
-PDF_DIR = ./build
+LATEX_ROOT := $(MAKEFILE_DIR)
+GAME_ROOT := $(MAKEFILE_DIR)/../
+DATA_ROOT := $(GAME_ROOT)/data
+CARDS_YML_DIR := $(DATA_ROOT)/cards
+CARDS_TEX_DIR := $(LATEX_ROOT)/cards
+BUILDDIR := $(LATEX_ROOT)/build
-ALL_SOURCES = $(CARD_SOURCES) $(SETS_SOURCES)
-PDFS = $(notdir $(ALL_SOURCES:.tex=.pdf))
-PDFS_PREFIXED = $(addprefix $(PDF_DIR)/,$(PDFS))
+ASSETS_PATH = $(GAME_ROOT)/assets
+PDFLATEX_ENV := TEXINPUTS=".:$(ASSETS_PATH):"
-CARD_PNGS = $(notdir $(CARD_SOURCES:.tex=.png))
-CARD_PNGS_PREFIXED = $(addprefix $(PDF_DIR)/,$(CARD_PNGS))
+SETS := $(shell find $(CARDS_YML_DIR) -mindepth 1 -type d -printf "%f\n")
+SETS_SOURCEDIRS := $(foreach set, $(SETS), $(addprefix $(CARDS_YML_DIR)/, $(set)))
+SETS_TEXDIRS := $(foreach set, $(SETS), $(addprefix $(CARDS_TEX_DIR)/, $(set)))
+SETS_BUILDDIRS := $(foreach set, $(SETS), $(addprefix $(BUILDDIR)/, $(set)))
-MAKEFILE_LIST = Makefile
+# Add yml dirs to VPATH, the place make will look for the source files
+VPATH = $(SETS_SOURCEDIRS) $(SETS_TEXDIRS)
-ASSETS_PATH = ../assets
-PDFLATEX_ENV := TEXINPUTS=".:$(ASSETS_PATH):"
+# Create a list of yaml card definitions
+CARDS_YAML := $(foreach dir,$(SETS_SOURCEDIRS),$(wildcard $(dir)/*.yml))
+CARDS_TEX := $(subst $(CARDS_YML_DIR),$(CARDS_TEX_DIR),$(CARDS_YAML:.yml=.tex))
+CARDS_PDF := $(subst $(CARDS_YML_DIR),$(BUILDDIR),$(CARDS_YAML:.yml=.pdf))
+CARDS_PNG = $(CARDS_PDF:.pdf=.png)
-all: $(PDF_DIR)/print.pdf $(PDFS_PREFIXED) $(CARD_PNGS_PREFIXED)
+VERBOSE = @
-$(PDF_DIR)/print.pdf: print.tex $(CARD_SOURCES) $(COMMON_TEX_FILES) $(MAKEFILE_LIST)
- @echo "building › › $@"
- @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
- $(VERBOSE) $(PDFLATEX_ENV) $(PDFLATEX) --output-directory $(PDF_DIR) print.tex
+MAKEFILE_LIST = Makefile
-$(PDF_DIR)/cards.pdf: $(PDFS_PREFIXED) $(MAKEFILE_LIST)
+# Define the functions that will generate each rule
+define generatePdfRules
+$(1)/%.pdf: %.tex $(COMMON_TEX_FILES) $(MAKEFILE_LIST)
+ @echo building $$@
+ @if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi
+ $(VERBOSE)$(PDFLATEX_ENV) $(PDFLATEX) --output-directory $$(@D) $$<
+endef
+
+define generateTexRules
+$(1)/%.tex: %.yml
+ @echo building $$@
+ @if test \( ! \( -d $$(@D) \) \) ;then mkdir -p $$(@D);fi
+ $(VERBOSE)$(GENERATE_CARD) --latex-root $(LATEX_ROOT) $$<
+endef
+
+# Generate tex rules
+$(foreach texdir, $(SETS_TEXDIRS), $(eval $(call generateTexRules, $(texdir))))
+
+# Generate pdf rules
+$(foreach pdfdir, $(SETS_BUILDDIRS), $(eval $(call generatePdfRules, $(pdfdir))))
+
+all: cards-tex cards-pdf cards-png
+cards-tex: $(CARDS_TEX)
+cards-pdf: $(CARDS_PDF)
+cards-png: $(CARDS_PNG)
+
+$(BUILDDIR)/cards.pdf: $(CARDS_PDF) $(MAKEFILE_LIST)
@echo "building › › $@"
@if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
- $(VERBOSE) $(PDFUNITE) $(PDFS_PREFIXED) $@
-
-$(PDF_DIR)/%.pdf : $(CARDS_DIR)/%.tex $(COMMON_TEX_FILES) $(MAKEFILE_LIST)
- @echo "card › $@"
- @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
- $(VERBOSE) $(PDFLATEX_ENV) $(PDFLATEX) --output-directory $(PDF_DIR) $(CARDS_DIR)/$*.tex
+ $(VERBOSE)$(PDFUNITE) $(CARDS_PDF) $@
-$(PDF_DIR)/%.pdf : $(SETS_DIR)/%.tex $(CARD_SOURCES) $(COMMON_TEX_FILES) $(MAKEFILE_LIST)
- @echo "card › $@"
- @if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
- $(VERBOSE) $(PDFLATEX_ENV) $(PDFLATEX) --output-directory $(PDF_DIR) $^
-
-$(PDF_DIR)/%.png : $(PDF_DIR)/%.pdf $(MAKEFILE_LIST)
+%.png: %.pdf $(MAKEFILE_LIST)
@echo "png › $@"
@if test \( ! \( -d $(@D) \) \) ;then mkdir -p $(@D);fi
- $(VERBOSE) $(PDFTOPPM) $(PDFTOPPM_FLAGS) $(PDF_DIR)/$*.pdf $(PDF_DIR)/$*
+ $(VERBOSE)$(PDFTOPPM) $(PDFTOPPM_FLAGS) $< $*
clean:
- rm -rf build/
+ rm -rf $(BUILDDIR)
+
+clean-all: clean
+ rm -rf $(CARDS_TEX_DIR)
diff --git a/latex/cards/advisor.tex b/latex/cards/advisor.tex
deleted file mode 100644
index d2fe6354..00000000
--- a/latex/cards/advisor.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Advisor}
-\cardbuycost{10}
-\cardsplitcontent{Health: 1\\ Movement: 2}{\faRedo: Draw 1 card. You may exile 1 card from your hand}
-\cardplaycost{2}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/angry_squid.tex b/latex/cards/angry_squid.tex
deleted file mode 100644
index 4eb74177..00000000
--- a/latex/cards/angry_squid.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Angry Squid}
-\cardbuycost{7}
-\cardcontent{AI: Aggressive\\ Health: 1\\ Movement: 2 swimming\\ Attack: 1 Range 2}
-\cardplaycost{2}\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/archer.tex b/latex/cards/archer.tex
deleted file mode 100644
index d5acae5a..00000000
--- a/latex/cards/archer.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Archer}
-\cardbuycost{5}
-\cardcontent{Health: 2\\ Movement: 2\\ Attack: 1 Range 2}
-\cardplaycost{1}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/barge.tex b/latex/cards/barge.tex
deleted file mode 100644
index eb82ae5c..00000000
--- a/latex/cards/barge.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Barge}
-\cardbuycost{5}
-\cardsplitcontent{Health: 3\\ Movement: 3 swimming}{Crew 6}
-\cardplaycost{1}\cardmodule{nautics}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/base.tex b/latex/cards/base.tex
deleted file mode 100644
index c7231e76..00000000
--- a/latex/cards/base.tex
+++ /dev/null
@@ -1,50 +0,0 @@
-\documentclass[a4paper,landscape]{article}
-
-% Ränder des Dokuments anpassen
-\usepackage[margin=6mm,top=5mm]{geometry}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\usepackage{standalone}
-
-\begin{document}
-\begin{center}
-\pagestyle{empty}
-\input{cards/sword.tex}
-\hspace{5mm}
-\input{cards/great_sword.tex}
-\hspace{5mm}
-\input{cards/shield.tex}
-\hspace{5mm}
-\input{cards/tower_shield.tex}
-\vspace{5mm}
-
-\input{cards/archer.tex}
-\hspace{5mm}
-\input{cards/knight.tex}
-\hspace{5mm}
-\input{cards/pikeman.tex}
-\hspace{5mm}
-\input{cards/cavalry.tex}
-\vspace{5mm}
-
-\input{cards/tax_collector.tex}
-\hspace{5mm}
-\input{cards/pioneer.tex}
-\hspace{5mm}
-\input{cards/recruiter.tex}
-\hspace{5mm}
-\input{cards/missionary.tex}
-\vspace{5mm}
-
-\input{cards/cavl._archer.tex}
-\hspace{5mm}
-
-\end{center}
-\end{document}
-
diff --git a/latex/cards/base/advisor.tex b/latex/cards/base/advisor.tex
new file mode 100644
index 00000000..73b40ed9
--- /dev/null
+++ b/latex/cards/base/advisor.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Advisor}
+\cardbuycost{10}
+\cardsplitcontent{Health: 1\\Movement: 2}{\faRedo: Draw 1 card. You may exile 1 card from your hand}
+\cardplaycost{2}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/base/archer.tex b/latex/cards/base/archer.tex
new file mode 100644
index 00000000..a558454a
--- /dev/null
+++ b/latex/cards/base/archer.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Archer}
+\cardbuycost{5}
+\cardcontent{Health: 2\\Movement: 2\\Attack: 1 Range 2}
+\cardplaycost{1}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/base/cavalry.tex b/latex/cards/base/cavalry.tex
new file mode 100644
index 00000000..ead57ad0
--- /dev/null
+++ b/latex/cards/base/cavalry.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Cavalry}
+\cardbuycost{5}
+\cardcontent{Health: 1\\Movement: 3\\Attack: 2}
+\cardplaycost{2}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/base/cavalry_archer.tex b/latex/cards/base/cavalry_archer.tex
new file mode 100644
index 00000000..12dc9629
--- /dev/null
+++ b/latex/cards/base/cavalry_archer.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Cavalry Archer}
+\cardbuycost{10}
+\cardcontent{Health: 1\\Movement: 3\\Attack: 1 Range 2}
+\cardplaycost{2}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/base/fighter.tex b/latex/cards/base/fighter.tex
new file mode 100644
index 00000000..e92ce314
--- /dev/null
+++ b/latex/cards/base/fighter.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Fighter}
+\cardbuycost{7}
+\cardsplitcontent{Health: 2\\Movement: 2\\Attack: 1}{One additional attack action}
+\cardplaycost{1}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/great_sword.tex b/latex/cards/base/great_sword.tex
index 1f4fcfca..a791203e 100644
--- a/latex/cards/great_sword.tex
+++ b/latex/cards/base/great_sword.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/base/knight.tex b/latex/cards/base/knight.tex
new file mode 100644
index 00000000..8bce19de
--- /dev/null
+++ b/latex/cards/base/knight.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Knight}
+\cardbuycost{7}
+\cardsplitcontent{Health: 2\\Movement: 2\\Attack: 2}{+ 1 Armor}
+\cardplaycost{2}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/misinformation.tex b/latex/cards/base/misinformation.tex
index e624df15..718b73ac 100644
--- a/latex/cards/misinformation.tex
+++ b/latex/cards/base/misinformation.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -16,4 +10,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/base/missionary.tex b/latex/cards/base/missionary.tex
new file mode 100644
index 00000000..d3f43f09
--- /dev/null
+++ b/latex/cards/base/missionary.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Missionary}
+\cardbuycost{10}
+\cardsplitcontent{Health: 1\\Movement: 2}{\faRedo: Put two faith counters on target Unit. If there are more faith counters than the units buying cost you control target unit}
+\cardplaycost{2}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/palisade.tex b/latex/cards/base/palisade.tex
index 049c3f85..2c6c9c35 100644
--- a/latex/cards/palisade.tex
+++ b/latex/cards/base/palisade.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/base/pikeman.tex b/latex/cards/base/pikeman.tex
new file mode 100644
index 00000000..bb17dc7a
--- /dev/null
+++ b/latex/cards/base/pikeman.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Pikeman}
+\cardbuycost{5}
+\cardsplitcontent{Health: 2\\Movement: 1\\Attack: 1}{Range 2 against Units with Movement >= 3}
+\cardplaycost{1}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/base/pioneer.tex b/latex/cards/base/pioneer.tex
new file mode 100644
index 00000000..0964af43
--- /dev/null
+++ b/latex/cards/base/pioneer.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Pioneer}
+\cardbuycost{7}
+\cardsplitcontent{Health: 5\\Movement: 2}{\faRedo: Neutralize adjacent tile or Artifact}
+\cardplaycost{1}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/base/recruit.tex b/latex/cards/base/recruit.tex
new file mode 100644
index 00000000..8b88a6c6
--- /dev/null
+++ b/latex/cards/base/recruit.tex
@@ -0,0 +1,11 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnitToken{Recruit}
+\cardcontent{Health: 1\\Movement: 1\\Attack: 1}
+\cardplaycost{0}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/base/recruiter.tex b/latex/cards/base/recruiter.tex
new file mode 100644
index 00000000..d5f53693
--- /dev/null
+++ b/latex/cards/base/recruiter.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Recruiter}
+\cardbuycost{10}
+\cardsplitcontent{Health: 2\\Movement: 2\\Attack: 1}{Allow Units to be played in Range 1\\ \vspace{0.2cm} \faRedo: Create Recruit token on adjacent tile}
+\cardplaycost{1}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/shield.tex b/latex/cards/base/shield.tex
index 015f695f..3d51c1bc 100644
--- a/latex/cards/shield.tex
+++ b/latex/cards/base/shield.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/sword.tex b/latex/cards/base/sword.tex
index 7773df30..f4b34e62 100644
--- a/latex/cards/sword.tex
+++ b/latex/cards/base/sword.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/base/tax_collector.tex b/latex/cards/base/tax_collector.tex
new file mode 100644
index 00000000..0989fecf
--- /dev/null
+++ b/latex/cards/base/tax_collector.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Tax Collector}
+\cardbuycost{5}
+\cardsplitcontent{Health: 1\\Movement: 2}{\faRedo: Get 2 additional Ressource}
+\cardplaycost{1}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/tower_shield.tex b/latex/cards/base/tower_shield.tex
index fdaf1be7..b1e1d401 100644
--- a/latex/cards/tower_shield.tex
+++ b/latex/cards/base/tower_shield.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/base/wormtongue.tex b/latex/cards/base/wormtongue.tex
new file mode 100644
index 00000000..73a7ed36
--- /dev/null
+++ b/latex/cards/base/wormtongue.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Wormtongue}
+\cardbuycost{10}
+\cardsplitcontent{Health: 1\\Movement: 2}{\faRedo, 3: Add a Misinformation token to an opponents pile}
+\cardplaycost{2}\cardmodule{base}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/captain.tex b/latex/cards/captain.tex
deleted file mode 100644
index b7d9b0e6..00000000
--- a/latex/cards/captain.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Captain}
-\cardbuycost{7}
-\cardsplitcontent{Health: 1\\ Movement: 1\\ Attack: 1}{Other units in the same pile have no upkeep cost}
-\cardplaycost{2}\cardmodule{nautics}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/cavalry.tex b/latex/cards/cavalry.tex
deleted file mode 100644
index 729fcc77..00000000
--- a/latex/cards/cavalry.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Cavalry}
-\cardbuycost{5}
-\cardcontent{Health: 1\\ Movement: 3\\ Attack: 2}
-\cardplaycost{2}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/cavl._archer.tex b/latex/cards/cavl._archer.tex
deleted file mode 100644
index e004d367..00000000
--- a/latex/cards/cavl._archer.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Cavl. Archer}
-\cardbuycost{10}
-\cardcontent{Health: 1\\ Movement: 3\\ Attack: 1 Range 2}
-\cardplaycost{2}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/chachalot.tex b/latex/cards/chachalot.tex
deleted file mode 100644
index ae94e946..00000000
--- a/latex/cards/chachalot.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Chachalot}
-\cardbuycost{10}
-\cardsplitcontent{AI: Wandering\\ Health: 2\\ Movement: 2 swimming\\ Attack: 2}{+ 1 Armor}
-\cardplaycost{2}\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/clownfish.tex b/latex/cards/clownfish.tex
deleted file mode 100644
index dcb82f1e..00000000
--- a/latex/cards/clownfish.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Clownfish}
-\cardbuycost{10}
-\cardsplitcontent{AI: Shy\\ Health: 1\\ Movement: 2 swimming}{\faRedo: Get 4 additional Ressource}
-\cardplaycost{2}\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/dolphin.tex b/latex/cards/dolphin.tex
deleted file mode 100644
index e687d623..00000000
--- a/latex/cards/dolphin.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Dolphin}
-\cardbuycost{7}
-\cardsplitcontent{AI: Supportive\\ Health: 2\\ Movement: 2}{\faRedo: Give random Unit in range 1 random buff}
-\cardplaycost{1}\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/armor.tex b/latex/cards/equipments/armor.tex
index 5cb37056..0a32f9ca 100644
--- a/latex/cards/armor.tex
+++ b/latex/cards/equipments/armor.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/banner.tex b/latex/cards/equipments/banner.tex
index 677c82ef..8baa86a1 100644
--- a/latex/cards/banner.tex
+++ b/latex/cards/equipments/banner.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/cloak.tex b/latex/cards/equipments/cloak.tex
index 77d72ee2..329b6e56 100644
--- a/latex/cards/cloak.tex
+++ b/latex/cards/equipments/cloak.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/gear.tex b/latex/cards/equipments/gear.tex
index 36e4ae8e..be937384 100644
--- a/latex/cards/gear.tex
+++ b/latex/cards/equipments/gear.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/mace.tex b/latex/cards/equipments/mace.tex
index e400ca34..41859143 100644
--- a/latex/cards/mace.tex
+++ b/latex/cards/equipments/mace.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/plate_armor.tex b/latex/cards/equipments/plate_armor.tex
index b8252f41..284c7592 100644
--- a/latex/cards/plate_armor.tex
+++ b/latex/cards/equipments/plate_armor.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/poisoned_dagger.tex b/latex/cards/equipments/poisoned_dagger.tex
index 1e39fcd6..c584dd27 100644
--- a/latex/cards/poisoned_dagger.tex
+++ b/latex/cards/equipments/poisoned_dagger.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/reclaim!.tex b/latex/cards/equipments/reclaim!.tex
index 628b3309..3708183b 100644
--- a/latex/cards/reclaim!.tex
+++ b/latex/cards/equipments/reclaim!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/relic.tex b/latex/cards/equipments/relic.tex
index 7c3dd250..68f1342c 100644
--- a/latex/cards/relic.tex
+++ b/latex/cards/equipments/relic.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/shatter!.tex b/latex/cards/equipments/shatter!.tex
index fd3c58b6..87a9de27 100644
--- a/latex/cards/shatter!.tex
+++ b/latex/cards/equipments/shatter!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/equipments/smith.tex b/latex/cards/equipments/smith.tex
new file mode 100644
index 00000000..92b7cb12
--- /dev/null
+++ b/latex/cards/equipments/smith.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Smith}
+\cardbuycost{10}
+\cardsplitcontent{Health: 1\\Movement: 2}{\faRedo, X: Create Copy of artifact with buy cost = X in range 1 on empty tile in range 1}
+\cardplaycost{2}\cardmodule{equipments}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/spear.tex b/latex/cards/equipments/spear.tex
index cda86b4c..cc2f81bc 100644
--- a/latex/cards/spear.tex
+++ b/latex/cards/equipments/spear.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/farmer.tex b/latex/cards/farmer.tex
deleted file mode 100644
index e9a33023..00000000
--- a/latex/cards/farmer.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Farmer}
-\cardcontent{Health: 1\\ Movement: 1\\ Attack: 1}
-\cardplaycost{1}\cardmodule{}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/fighter.tex b/latex/cards/fighter.tex
deleted file mode 100644
index 855cdd0a..00000000
--- a/latex/cards/fighter.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Fighter}
-\cardbuycost{7}
-\cardsplitcontent{Health: 2\\ Movement: 2\\ Attack: 1}{One additional attack action}
-\cardplaycost{1}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/fish_trap.tex b/latex/cards/fish_trap.tex
deleted file mode 100644
index 2c8231b8..00000000
--- a/latex/cards/fish_trap.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeArtifactToken{Fish Trap}
-\cardcontent{Adjacent Fisher have \\ \faRedo: Gain 2 Resource}
-\cardmodule{nautics}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/fisher.tex b/latex/cards/fisher.tex
deleted file mode 100644
index ead0fb27..00000000
--- a/latex/cards/fisher.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Fisher}
-\cardbuycost{5}
-\cardsplitcontent{Health: 2\\ Movement: 2 swimming}{Crew 2\\ \vspace{0.2cm} \faRedo: Create fish trap token on adjacent water tile}
-\cardplaycost{1}\cardmodule{nautics}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/frost_pylon.tex b/latex/cards/frost_pylon.tex
deleted file mode 100644
index 54422837..00000000
--- a/latex/cards/frost_pylon.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeArtifact{Frost Pylon}
-\cardbuycost{5}
-\cardcontent{Enemy units in range 1 can't activate abilities except: "\\faRedo: put a crack counter on Frost Pylon". If there are three or more crack counter on Frost Pylon destroy it. Frots Pylon can be played next to a random enemy unit.}
-\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/galley.tex b/latex/cards/galley.tex
deleted file mode 100644
index 55e26948..00000000
--- a/latex/cards/galley.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Galley}
-\cardbuycost{7}
-\cardsplitcontent{Health: 4\\ Movement: 3 swimming\\ Attack: 1 range 2}{Crew 3}
-\cardplaycost{1}\cardmodule{nautics}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/ice_berg.tex b/latex/cards/ice_berg.tex
deleted file mode 100644
index dedb8303..00000000
--- a/latex/cards/ice_berg.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeArtifact{Ice Berg}
-\cardcontent{Solid 3}
-\cardplaycost{3}
-\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/king.tex b/latex/cards/king.tex
deleted file mode 100644
index ddc379d5..00000000
--- a/latex/cards/king.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnitToken{King}
-\cardsplitcontent{Health: 5\\ Movement: 1\\ Attack: 1}{5 Resource: +shroud until end of turn. \\ Protection from Die!}
-\cardplaycost{0}\cardmodule{}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/knight.tex b/latex/cards/knight.tex
deleted file mode 100644
index 20ad1601..00000000
--- a/latex/cards/knight.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Knight}
-\cardbuycost{7}
-\cardsplitcontent{Health: 2\\ Movement: 2\\ Attack: 2}{+ 1 Armor}
-\cardplaycost{2}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/kraken/angry_squid.tex b/latex/cards/kraken/angry_squid.tex
new file mode 100644
index 00000000..4b79bd2f
--- /dev/null
+++ b/latex/cards/kraken/angry_squid.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Angry Squid}
+\cardbuycost{7}
+\cardcontent{AI: Aggressive\\Health: 1\\Movement: 2 swimming\\Attack: 1 Range 2}
+\cardplaycost{2}\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/kraken/chachalot.tex b/latex/cards/kraken/chachalot.tex
new file mode 100644
index 00000000..8f980846
--- /dev/null
+++ b/latex/cards/kraken/chachalot.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Chachalot}
+\cardbuycost{10}
+\cardsplitcontent{AI: Wandering\\Health: 2\\Movement: 2 swimming\\Attack: 2}{+ 1 Armor}
+\cardplaycost{2}\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/kraken/clownfish.tex b/latex/cards/kraken/clownfish.tex
new file mode 100644
index 00000000..913a430e
--- /dev/null
+++ b/latex/cards/kraken/clownfish.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Clownfish}
+\cardbuycost{10}
+\cardsplitcontent{AI: Shy\\Health: 1\\Movement: 2 swimming}{\faRedo: Get 4 additional Ressource}
+\cardplaycost{2}\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/kraken/dolphin.tex b/latex/cards/kraken/dolphin.tex
new file mode 100644
index 00000000..ef8e5de0
--- /dev/null
+++ b/latex/cards/kraken/dolphin.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Dolphin}
+\cardbuycost{7}
+\cardsplitcontent{AI: Supportive\\Health: 2\\Movement: 2}{\faRedo: Give random Unit in range 1 random buff}
+\cardplaycost{1}\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/kraken/frost_pylon.tex b/latex/cards/kraken/frost_pylon.tex
new file mode 100644
index 00000000..0f25ac79
--- /dev/null
+++ b/latex/cards/kraken/frost_pylon.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeArtifact{Frost Pylon}
+\cardbuycost{5}
+\cardcontent{Enemy units in range 1 can't activate abilities except: \enquote{~\faRedo: put a crack counter on Frost Pylon}. \\ \vspace{0.3cm} If there are three or more crack counter on Frost Pylon destroy it. Frost Pylon can be played next to a random enemy unit}
+\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/kraken/gigantic_hail.tex b/latex/cards/kraken/gigantic_hail.tex
new file mode 100644
index 00000000..433d264d
--- /dev/null
+++ b/latex/cards/kraken/gigantic_hail.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeSpell{Gigantic Hail}
+\cardcontent{Place an Ice Berg token on a random empty tile}
+\cardplaycost{3}
+\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/kraken/ice_berg.tex b/latex/cards/kraken/ice_berg.tex
new file mode 100644
index 00000000..b9aff050
--- /dev/null
+++ b/latex/cards/kraken/ice_berg.tex
@@ -0,0 +1,11 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeArtifactToken{Ice Berg}
+\cardcontent{Solid 3}
+\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/kraken/sailfish.tex b/latex/cards/kraken/sailfish.tex
new file mode 100644
index 00000000..4dfd1fab
--- /dev/null
+++ b/latex/cards/kraken/sailfish.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Sailfish}
+\cardbuycost{7}
+\cardcontent{AI: Aggressive\\Health: 1\\Movement: 3\\Attack: 1}
+\cardplaycost{1}\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/suprise.tex b/latex/cards/kraken/suprise.tex
index ff8dc5e5..bced6c08 100644
--- a/latex/cards/suprise.tex
+++ b/latex/cards/kraken/suprise.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -16,4 +10,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/tentacle_slap.tex b/latex/cards/kraken/tentacle_slap.tex
index 24292cb9..cb4b9463 100644
--- a/latex/cards/tentacle_slap.tex
+++ b/latex/cards/kraken/tentacle_slap.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -16,4 +10,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/kraken/the_kraken.tex b/latex/cards/kraken/the_kraken.tex
new file mode 100644
index 00000000..ab6d5dc3
--- /dev/null
+++ b/latex/cards/kraken/the_kraken.tex
@@ -0,0 +1,11 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{The Kraken}
+\cardcontent{Health: 5\\Attack: 1}
+\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/tides_change.tex b/latex/cards/kraken/tides_change.tex
index 4a82d49e..9d44f674 100644
--- a/latex/cards/tides_change.tex
+++ b/latex/cards/kraken/tides_change.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -16,4 +10,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/kraken/unholy_cannonball.tex b/latex/cards/kraken/unholy_cannonball.tex
new file mode 100644
index 00000000..07cb51cb
--- /dev/null
+++ b/latex/cards/kraken/unholy_cannonball.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeSpell{Unholy Cannonball}
+\cardcontent{If no enemy Units are in range~2 of The Kraken gain 5~ressource and draw a card. \\ \vspace{0.3cm} Otherwise put a fear counter on all enemy Units in range~2 of The Kraken}
+\cardplaycost{5}
+\cardmodule{kraken}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/action!.tex b/latex/cards/magic/action!.tex
index 7f855587..53cc73c7 100644
--- a/latex/cards/action!.tex
+++ b/latex/cards/magic/action!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/appear!.tex b/latex/cards/magic/appear!.tex
index 4d4a41f7..994d9ec4 100644
--- a/latex/cards/appear!.tex
+++ b/latex/cards/magic/appear!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/attack!.tex b/latex/cards/magic/attack!.tex
index d0f44924..20707bcc 100644
--- a/latex/cards/attack!.tex
+++ b/latex/cards/magic/attack!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/catalyst.tex b/latex/cards/magic/catalyst.tex
index b9037954..36fb937e 100644
--- a/latex/cards/catalyst.tex
+++ b/latex/cards/magic/catalyst.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/clone!.tex b/latex/cards/magic/clone!.tex
index 5f03c662..139147b6 100644
--- a/latex/cards/clone!.tex
+++ b/latex/cards/magic/clone!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/defense!.tex b/latex/cards/magic/defense!.tex
index e242c9f4..c0619ca9 100644
--- a/latex/cards/defense!.tex
+++ b/latex/cards/magic/defense!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/die!.tex b/latex/cards/magic/die!.tex
index fab8c909..8674a709 100644
--- a/latex/cards/die!.tex
+++ b/latex/cards/magic/die!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/heal!.tex b/latex/cards/magic/heal!.tex
index 4b7fab6a..65d46a3d 100644
--- a/latex/cards/heal!.tex
+++ b/latex/cards/magic/heal!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/isolate!.tex b/latex/cards/magic/isolate!.tex
index ac7ffcf5..88468866 100644
--- a/latex/cards/isolate!.tex
+++ b/latex/cards/magic/isolate!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/mine!.tex b/latex/cards/magic/mine!.tex
index 7485ea53..e585603c 100644
--- a/latex/cards/mine!.tex
+++ b/latex/cards/magic/mine!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/more!.tex b/latex/cards/magic/more!.tex
index 77b6559a..1168aac6 100644
--- a/latex/cards/more!.tex
+++ b/latex/cards/magic/more!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/no!.tex b/latex/cards/magic/no!.tex
index a887d472..3719eab3 100644
--- a/latex/cards/no!.tex
+++ b/latex/cards/magic/no!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/pierce!.tex b/latex/cards/magic/pierce!.tex
index bed00ace..6d3a8f93 100644
--- a/latex/cards/pierce!.tex
+++ b/latex/cards/magic/pierce!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/ritual!.tex b/latex/cards/magic/ritual!.tex
index 434c658e..217386fb 100644
--- a/latex/cards/ritual!.tex
+++ b/latex/cards/magic/ritual!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/rush!.tex b/latex/cards/magic/rush!.tex
index cf143c58..b5eb53f3 100644
--- a/latex/cards/rush!.tex
+++ b/latex/cards/magic/rush!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/select!.tex b/latex/cards/magic/select!.tex
index 5cfbad25..37d8ffad 100644
--- a/latex/cards/select!.tex
+++ b/latex/cards/magic/select!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/shroud!.tex b/latex/cards/magic/shroud!.tex
index c6b2ca7c..e1e9eade 100644
--- a/latex/cards/shroud!.tex
+++ b/latex/cards/magic/shroud!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/stumble!.tex b/latex/cards/magic/stumble!.tex
index ad62b63a..9a8766df 100644
--- a/latex/cards/stumble!.tex
+++ b/latex/cards/magic/stumble!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/switch!.tex b/latex/cards/magic/switch!.tex
index d2dfefb5..491a5115 100644
--- a/latex/cards/switch!.tex
+++ b/latex/cards/magic/switch!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/transmute!.tex b/latex/cards/magic/transmute!.tex
index 38c05db7..b18d00c5 100644
--- a/latex/cards/transmute!.tex
+++ b/latex/cards/magic/transmute!.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -17,4 +11,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/misc/farmer.tex b/latex/cards/misc/farmer.tex
new file mode 100644
index 00000000..7e9ac9c2
--- /dev/null
+++ b/latex/cards/misc/farmer.tex
@@ -0,0 +1,11 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Farmer}
+\cardcontent{Health: 1\\Movement: 1\\Attack: 1}
+\cardplaycost{1}\cardmodule{}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/misc/king.tex b/latex/cards/misc/king.tex
new file mode 100644
index 00000000..7e95025a
--- /dev/null
+++ b/latex/cards/misc/king.tex
@@ -0,0 +1,11 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnitToken{King}
+\cardsplitcontent{Health: 5\\Movement: 1\\Attack: 1}{5 Resource: +shroud until end of turn. \ Protection from Die!}
+\cardplaycost{0}\cardmodule{}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/stick_of_victory.tex b/latex/cards/misc/stick_of_victory.tex
index 6586d237..5bd28a96 100644
--- a/latex/cards/stick_of_victory.tex
+++ b/latex/cards/misc/stick_of_victory.tex
@@ -1,11 +1,5 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
+\documentclass{standalone}
+\input{common.tex}
\begin{document}
\begin{tikzpicture}
@@ -15,4 +9,3 @@
\cardborder
\end{tikzpicture}
\end{document}
-
diff --git a/latex/cards/missionary.tex b/latex/cards/missionary.tex
deleted file mode 100644
index 98b8a708..00000000
--- a/latex/cards/missionary.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Missionary}
-\cardbuycost{10}
-\cardsplitcontent{Health: 1\\ Movement: 2}{\faRedo: Put two faith counters on target Unit. If there are more faith counters than the units buying cost you control target unit}
-\cardplaycost{2}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/nautics/barge.tex b/latex/cards/nautics/barge.tex
new file mode 100644
index 00000000..fd00b98a
--- /dev/null
+++ b/latex/cards/nautics/barge.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Barge}
+\cardbuycost{5}
+\cardsplitcontent{Health: 3\\Movement: 3 swimming}{Crew 6}
+\cardplaycost{1}\cardmodule{nautics}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/nautics/captain.tex b/latex/cards/nautics/captain.tex
new file mode 100644
index 00000000..802e7d99
--- /dev/null
+++ b/latex/cards/nautics/captain.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Captain}
+\cardbuycost{7}
+\cardsplitcontent{Health: 1\\Movement: 1\\Attack: 1}{Other units in the same pile have no upkeep cost}
+\cardplaycost{2}\cardmodule{nautics}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/nautics/fish_trap.tex b/latex/cards/nautics/fish_trap.tex
new file mode 100644
index 00000000..7e616a7a
--- /dev/null
+++ b/latex/cards/nautics/fish_trap.tex
@@ -0,0 +1,11 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeArtifactToken{Fish Trap}
+\cardcontent{Adjacent Fisher have \\ \enquote{~\faRedo: Gain 2 Resource}}
+\cardmodule{nautics}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/nautics/fisher.tex b/latex/cards/nautics/fisher.tex
new file mode 100644
index 00000000..01a389df
--- /dev/null
+++ b/latex/cards/nautics/fisher.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Fisher}
+\cardbuycost{5}
+\cardsplitcontent{Health: 2\\Movement: 2 swimming}{Crew 2\\ \vspace{0.2cm} \faRedo: Create fish trap token on adjacent water tile}
+\cardplaycost{1}\cardmodule{nautics}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/nautics/galley.tex b/latex/cards/nautics/galley.tex
new file mode 100644
index 00000000..c58ad617
--- /dev/null
+++ b/latex/cards/nautics/galley.tex
@@ -0,0 +1,12 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Galley}
+\cardbuycost{7}
+\cardsplitcontent{Health: 4\\Movement: 3 swimming\\Attack: 1 range 2}{Crew 3}
+\cardplaycost{1}\cardmodule{nautics}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/nautics/sailor.tex b/latex/cards/nautics/sailor.tex
new file mode 100644
index 00000000..dc83a664
--- /dev/null
+++ b/latex/cards/nautics/sailor.tex
@@ -0,0 +1,11 @@
+\documentclass{standalone}
+\input{common.tex}
+
+\begin{document}
+\begin{tikzpicture}
+\cardtypeUnit{Sailor}
+\cardsplitcontent{Health: 1\\Movement: 1\\Attack: 1}{A crewed unit gets +1 movement while swimming}
+\cardplaycost{1}\cardmodule{nautics}
+\cardborder
+\end{tikzpicture}
+\end{document}
diff --git a/latex/cards/pikeman.tex b/latex/cards/pikeman.tex
deleted file mode 100644
index 01159416..00000000
--- a/latex/cards/pikeman.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Pikeman}
-\cardbuycost{5}
-\cardsplitcontent{Health: 2\\ Movement: 1\\ Attack: 1}{Range 2 against Units with Movement >= 3}
-\cardplaycost{1}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/pioneer.tex b/latex/cards/pioneer.tex
deleted file mode 100644
index e455c5c2..00000000
--- a/latex/cards/pioneer.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Pioneer}
-\cardbuycost{7}
-\cardsplitcontent{Health: 5\\ Movement: 2}{\faRedo: Neutralize adjacent tile or Artifact}
-\cardplaycost{1}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/players_turn.tex b/latex/cards/players_turn.tex
deleted file mode 100644
index fb822c3b..00000000
--- a/latex/cards/players_turn.tex
+++ /dev/null
@@ -1,52 +0,0 @@
-\documentclass[]{standalone}
-
-\usepackage{enumitem}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-
-\begin{document}
-\begin{tikzpicture}
-
-\pgfmathsetmacro{\textWidth}{(\cardwidth-\strippadding-\textpadding-0.5)*1cm}
-\pgfmathsetmacro{\textLeft}{(\contentLeft-\stripwidth)}
-
-\begin{scope}[even odd rule]
-% Define a clipping path. All paths outside shapeCard will
-% be cut because the even odd rule is set.
- \clip[cardcorners] \shapeCard;
-% Fill shapeLeftStripLong and shapeLeftStripShort.
-% Since the even odd rule is set, only the card will be filled.
- \fill[strip, tokenbg] \shapeLeftStripShort;
-\end{scope}
-
-\node at (\strippadding+0.5*\stripwidth,\cardheight-\strippadding-\strippadding-0.37) {\color{white}\Large{?}};
-\cardtitle{Player's Turn}
-
-\node(content)[above right, text width=\textWidth] at (\textLeft, \contentBottom) {
- {\small
- \begin{enumerate}[leftmargin=5pt]
- \setlength{\itemsep}{-1pt}
- \item Mix discard pile into empty deck
- \item Draw till you have three cards
- \item Upkeep
- \begin{enumerate}[leftmargin=5pt]
- \setlength{\itemsep}{-1pt}
- \item Gain Ressource
- \item Pay units upkeep cost
- \end{enumerate}
- \item Actions
- \item Buy a card
- \end{enumerate}
- }
-};
-
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/recruit.tex b/latex/cards/recruit.tex
deleted file mode 100644
index 14eaa349..00000000
--- a/latex/cards/recruit.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnitToken{Recruit}
-\cardcontent{Health: 1\\ Movement: 1\\ Attack: 1}
-\cardplaycost{0}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/recruiter.tex b/latex/cards/recruiter.tex
deleted file mode 100644
index 1a183f63..00000000
--- a/latex/cards/recruiter.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Recruiter}
-\cardbuycost{10}
-\cardsplitcontent{Health: 2\\ Movement: 2\\ Attack: 1}{Allow Units to be played in Range 1\\ \vspace{0.2cm} \faRedo: Create Recruit token on adjacent tile}
-\cardplaycost{1}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/sailfish.tex b/latex/cards/sailfish.tex
deleted file mode 100644
index e174c7c6..00000000
--- a/latex/cards/sailfish.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Sailfish}
-\cardbuycost{7}
-\cardcontent{AI: Aggressive\\ Health: 1\\ Movement: 3\\ Attack: 1}
-\cardplaycost{1}\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/sailor.tex b/latex/cards/sailor.tex
deleted file mode 100644
index 5c4b0a0f..00000000
--- a/latex/cards/sailor.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Sailor}
-\cardsplitcontent{Health: 1\\ Movement: 1\\ Attack: 1}{A crewed unit gets +1 movement while swimming}
-\cardplaycost{1}\cardmodule{nautics}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/smith.tex b/latex/cards/smith.tex
deleted file mode 100644
index 5af8b486..00000000
--- a/latex/cards/smith.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Smith}
-\cardbuycost{10}
-\cardsplitcontent{Health: 1\\ Movement: 2}{\faRedo: Pay X: Create Copy of artifact with buy cost = X in range 1 on empty tile in range 1}
-\cardplaycost{2}\cardmodule{equipments}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/tax_collector.tex b/latex/cards/tax_collector.tex
deleted file mode 100644
index 4b8f9414..00000000
--- a/latex/cards/tax_collector.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Tax Collector}
-\cardbuycost{5}
-\cardsplitcontent{Health: 1\\ Movement: 2}{\faRedo: Get 2 additional Ressource}
-\cardplaycost{1}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/the_kraken.tex b/latex/cards/the_kraken.tex
deleted file mode 100644
index 21467fe7..00000000
--- a/latex/cards/the_kraken.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{The Kraken}
-\cardcontent{Health: 5\\ Attack: 1}
-\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/unholy_cannonball.tex b/latex/cards/unholy_cannonball.tex
deleted file mode 100644
index eb30a1c6..00000000
--- a/latex/cards/unholy_cannonball.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeSpell{Unholy Cannonball}
-\cardcontent{If no enemy Units are in range 2 of The Kraken gains 5 ressource and draws a card. \\ Otherwise put a fear counter on all enemy Units in range 2}
-\cardplaycost{5}
-\cardmodule{kraken}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/cards/wormtongue.tex b/latex/cards/wormtongue.tex
deleted file mode 100644
index 0c011b70..00000000
--- a/latex/cards/wormtongue.tex
+++ /dev/null
@@ -1,19 +0,0 @@
-\documentclass[]{standalone}
-
-% Pakete dazuladen
-\input{libs.tex}
-% Farbdefinitionen laden
-\input{colors.tex}
-% \card-Commands laden
-\input{tikzcards.tex}
-
-\begin{document}
-\begin{tikzpicture}
-\cardtypeUnit{Wormtongue}
-\cardbuycost{10}
-\cardsplitcontent{Health: 1\\ Movement: 2}{\faRedo: 3: Add a Misinformation token to an opponents pile}
-\cardplaycost{2}\cardmodule{base}
-\cardborder
-\end{tikzpicture}
-\end{document}
-
diff --git a/latex/common.tex b/latex/common.tex
new file mode 100644
index 00000000..552c0686
--- /dev/null
+++ b/latex/common.tex
@@ -0,0 +1,3 @@
+\input{libs.tex}
+\input{colors.tex}
+\input{tikzcards.tex}
diff --git a/latex/libs.tex b/latex/libs.tex
index 41529443..43ad3456 100644
--- a/latex/libs.tex
+++ b/latex/libs.tex
@@ -20,6 +20,8 @@
\usepackage{xparse} % for getnodedim macro
+\usepackage{csquotes}
+
% symbols
\usepackage{fourier-orns}
% \usepackage{amssymb} % Rsh
diff --git a/scripts/generate_card.py b/scripts/generate_card.py
new file mode 100755
index 00000000..c11c039b
--- /dev/null
+++ b/scripts/generate_card.py
@@ -0,0 +1,165 @@
+#!/usr/bin/env python3
+import argparse
+import pathlib
+import os
+from typing import MutableMapping
+import yaml
+
+CARD_TEMPLATE = \
+"""\\documentclass{{standalone}}
+\\input{{common.tex}}
+
+\\begin{{document}}
+\\begin{{tikzpicture}}
+{0}
+\\cardborder
+\\end{{tikzpicture}}
+\\end{{document}}"""
+
+SET_SYMBOLS = {
+ 'base': 'base',
+ 'magic': 'magic',
+ 'equipments': 'equipments',
+ 'nautics': 'nautics',
+ 'misc': '',
+ 'kraken': 'kraken'
+}
+
+LATEX_ROOT = pathlib.Path(os.getcwd())
+ASSETS_DIR = LATEX_ROOT / '../assets'
+CARDS_DIR = LATEX_ROOT / 'cards'
+
+def file_for_card(card_name: str) -> pathlib.Path:
+ """Return the corresponding latex file name for a card"""
+ return pathlib.Path(f'{card_name.lower().replace(" ", "_")}.tex')
+
+def get_latex_field(card: MutableMapping, field: str) -> str:
+ """Return the latex_ prefixed field from card or the field itself"""
+ latex_field = f'latex_{field}'
+ if latex_field in card:
+ return card[latex_field]
+ else:
+ return card[field]
+
+def generate_card(card: MutableMapping):
+ """Generate a standalone tikz picture with the card data"""
+ card_content = ""
+
+ card_file = file_for_card(card['name'])
+
+ for ext in ['.jpg', '.png']:
+ image_file = ASSETS_DIR / card_file.with_suffix(ext)
+ if image_file.exists():
+ card_content += f'\\cardbackground{{{image_file.name}}}\n'
+ break
+
+ card_content += f'\cardtype{card["type"].capitalize()}{"Token" if "token" in card else ""}{{{card["name"]}}}\n'
+
+ if 'buy' in card:
+ card_content += f'\cardbuycost{{{card["buy"]}}}\n'
+
+ if card['type'] == 'unit':
+ stats = []
+ abilities = []
+ if 'ai' in card:
+ stats.append(f'AI: {card["ai"]}')
+
+ if 'health' in card:
+ stats.append(f'Health: {card["health"]}')
+
+ if 'movement' in card:
+ stats.append(f'Movement: {card["movement"]}')
+
+ attack = card.get('attack', None)
+ if attack:
+ # attack_sym = '\\faFistRaised'
+ # if "Range" in attack:
+ # attack_sym = '\\ding{246}'
+ stats.append(f'Attack: {attack}')
+
+ if 'effect' in card:
+ abilities.append(get_latex_field(card, 'effect'))
+
+ if 'full_action' in card:
+ if 'latex_full_action' in card:
+ abilities.append(f'{card["latex_full_action"]}')
+ else:
+ abilities.append(f'\\faRedo: {card["full_action"]}')
+
+ stats_str = '\\\\'.join(stats)
+ ability_block = '\\\\ \\vspace{0.2cm} '.join(abilities)
+ if stats and abilities:
+ card_content += f'\cardsplitcontent{{{stats_str}}}{{{ability_block}}}'
+ elif stats:
+ card_content += f'\cardcontent{{{stats_str}}}'
+
+ card_content += '\n'
+
+ if 'upkeep' in card:
+ card_content += f'\cardplaycost{{{card["upkeep"]}}}'
+
+ elif card['type'] in ['spell', 'artifact']:
+ effect = get_latex_field(card, 'effect')
+ print(card['effect'])
+ assert effect is not None
+ card_content += f'\cardcontent{{{effect}}}\n'
+
+ elif card['type'] == 'equipment':
+ stats = f'Durability: {card["durability"]}'
+ effect = get_latex_field(card, 'effect')
+ card_content += f'\cardsplitcontent{{{stats}}}{{{effect}}}\n'
+ else:
+ print(f'WARNING: unknown card type {card["type"]}!')
+
+ if 'play' in card:
+ card_content += f'\cardplaycost{{{card["play"]}}}\n'
+
+ if card['set'] in SET_SYMBOLS:
+ card_content += f'\cardmodule{{{SET_SYMBOLS[card["set"]]}}}'
+ else:
+ print(f'WARNING unknown set: {card["set"]}')
+
+ set_dir = CARDS_DIR / card['set']
+ if not set_dir.exists():
+ set_dir.mkdir(parents=True)
+
+ with open(set_dir / card_file, 'w') as tex_file:
+ print(CARD_TEMPLATE.format(card_content), file=tex_file)
+
+
+def main():
+ """Generate one standalone tikz picture for each card in the input data"""
+
+ parser = argparse.ArgumentParser(description='generate latex standalone cards')
+ parser.add_argument('data', help='yaml file or directory containing yaml files defining the cards to generate')
+ parser.add_argument('--latex-root', help='path to the latex root directory')
+
+ args = parser.parse_args()
+
+ if args.latex_root:
+ global LATEX_ROOT
+ LATEX_ROOT = pathlib.Path(args.latex_root)
+ global CARDS_DIR
+ CARDS_DIR = LATEX_ROOT / 'cards'
+ global ASSETS_DIR
+ ASSETS_DIR = LATEX_ROOT / '../assets'
+
+
+ data_files = [args.data]
+ data_path = pathlib.Path(args.data)
+ if data_path.is_dir():
+ data_files = data_path.glob('*.yml')
+ card_set = data_path.stem
+ else:
+ card_set = data_path.parent.stem
+
+ for f in data_files:
+ with open(f, 'r') as yaml_file:
+ card = yaml.full_load(yaml_file)
+
+ card['set'] = card_set
+ generate_card(card)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/scripts/generate_latex.py b/scripts/generate_latex.py
deleted file mode 100755
index 71a99915..00000000
--- a/scripts/generate_latex.py
+++ /dev/null
@@ -1,194 +0,0 @@
-#!/usr/bin/env python3
-import argparse
-import configparser
-import pathlib
-import os
-from typing import MutableMapping
-
-COLLECTION_TEMPLATE = \
-"""\\documentclass[a4paper,landscape]{{article}}
-
-% Ränder des Dokuments anpassen
-\\usepackage[margin=6mm,top=5mm]{{geometry}}
-
-% Pakete dazuladen
-\\input{{libs.tex}}
-% Farbdefinitionen laden
-\\input{{colors.tex}}
-% \card-Commands laden
-\\input{{tikzcards.tex}}
-
-\\usepackage{{standalone}}
-
-\\begin{{document}}
-\\begin{{center}}
-\\pagestyle{{empty}}
-{0}
-\\end{{center}}
-\\end{{document}}
-"""
-
-CARD_TEMPLATE = \
-"""\\documentclass[]{{standalone}}
-
-% Pakete dazuladen
-\\input{{libs.tex}}
-% Farbdefinitionen laden
-\\input{{colors.tex}}
-% \card-Commands laden
-\\input{{tikzcards.tex}}
-
-\\begin{{document}}
-\\begin{{tikzpicture}}
-{0}
-\\cardborder
-\\end{{tikzpicture}}
-\\end{{document}}
-"""
-
-SET_SYMBOLS = {'base': 'base', 'magic': 'magic', 'equipments': 'equipments', 'nautics': 'nautics', 'misc': '', 'kraken': 'kraken'}
-
-LATEX_ROOT = pathlib.Path(os.getcwd())
-ASSETS_DIR = LATEX_ROOT / '../assets'
-CARDS_DIR = LATEX_ROOT / 'cards'
-
-def file_for_card(card_name: str) -> pathlib.Path:
- """Return the corresponding latex file name for a card"""
- return pathlib.Path(f'{card_name.lower().replace(" ", "_")}.tex')
-
-def generate_card(card_name: str, card: MutableMapping):
- """Generate a standalone tikz picture with the card data"""
- card_content = ""
-
- card_file = file_for_card(card_name)
-
- for ext in ['.jpg', '.png']:
- image_file = ASSETS_DIR / card_file.with_suffix(ext)
- if image_file.exists():
- card_content += f'\\cardbackground{{{image_file.name}}}\n'
- break
-
- card_content += f'\cardtype{card["type"].capitalize()}{"Token" if "token" in card else ""}{{{card_name}}}\n'
- # card_content += f'\cardtitle{{{card_name}}}\n'
-
- if 'buy' in card:
- card_content += f'\cardbuycost{{{card["buy"]}}}\n'
-
- if card['type'] == 'unit':
- stats = ''
- if 'ai' in card:
- stats += f'AI: {card["ai"]}'
-
- if 'health' in card:
- if stats:
- stats += '\\\\ '
- stats += f'Health: {card["health"]}'
-
- if 'movement' in card:
- if stats:
- stats += '\\\\ '
- stats += f'Movement: {card["movement"]}'
-
- attack = card.get('attack', None)
- if attack:
- attack_sym = '\\faFistRaised'
- if "Range" in attack:
- attack_sym = '\\ding{246}'
- # stats += f'\\\\ {attack_sym}: {attack}'
- if stats:
- stats += '\\\\ '
- stats += f'Attack: {attack}'
-
- if 'effect' in card or 'full_action' in card:
- ability_block = ""
-
- effect = card.get('effect', None)
- if effect:
- ability_block += f'{effect}'
-
- full_action = card.get('full_action', None)
- if full_action:
- if ability_block:
- ability_block += '\\\\ \\vspace{0.2cm} '
- ability_block += f'\\faRedo: {full_action}'
-
- card_content += f'\cardsplitcontent{{{stats}}}{{{ability_block}}}'
- elif stats:
- card_content += f'\cardcontent{{{stats}}}'
-
-
- card_content += '\n'
-
- if 'upkeep' in card:
- card_content += f'\cardplaycost{{{card["upkeep"]}}}'
-
- elif card['type'] == 'spell':
- card_content += f'\cardcontent{{{card["effect"]}}}\n'
-
- elif card['type'] == 'artifact':
- card_content += f'\cardcontent{{{card["effect"]}}}\n'
-
- elif card['type'] == 'equipment':
- # card_content += f'\cardsplitcontent{{\\faRecycle: {card["durability"]}}}{{{card["effect"]}}}'
- card_content += f'\cardsplitcontent{{Durability: {card["durability"]}}}{{{card["effect"]}}}\n'
- else:
- print(f'WARNING: unknown card type {card["type"]}!')
-
- if 'play' in card:
- card_content += f'\cardplaycost{{{card["play"]}}}\n'
-
- if card['set'] in SET_SYMBOLS:
- card_content += f'\cardmodule{{{SET_SYMBOLS[card["set"]]}}}'
- else:
- print(f'WARNING unknown set: {card["set"]}')
-
- with open(CARDS_DIR / card_file, 'w') as tex_file:
- print(CARD_TEMPLATE.format(card_content), file=tex_file)
-
-
-def main():
- """Generate one standalone tikz picture for each card in the input data"""
-
- parser = argparse.ArgumentParser(description='generate latex standalone cards')
- parser.add_argument('data', help='ini file or directory containing ini files defining the cards to generate')
- parser.add_argument('--latex-root', help='path to the latex root directory')
-
- args = parser.parse_args()
-
- if args.latex_root:
- global LATEX_ROOT
- LATEX_ROOT = pathlib.Path(args.latex_root)
- global CARDS_DIR
- CARDS_DIR = LATEX_ROOT / 'cards'
- global ASSETS_DIR
- ASSETS_DIR = LATEX_ROOT / '../assets'
-
-
- data_files = [args.data]
- data_path = pathlib.Path(args.data)
- if data_path.is_dir():
- data_files = data_path.glob('*.ini')
-
- for f in data_files:
- data = configparser.ConfigParser()
- data.read(f)
-
- collection_inputs = ""
- cards = [card for card in data if card != 'DEFAULT']
- for i, card in enumerate(cards):
- card_content = data[card]
- card_content = dict(card_content)
- card_content['set'] = pathlib.Path(f).stem
- generate_card(card, card_content)
- collection_inputs += f'\\input{{cards/{file_for_card(card)}}}\n'
- if i == 0 or i % 4 < 3:
- collection_inputs += f'\\hspace{{5mm}}\n'
- else:
- collection_inputs += f'\\vspace{{5mm}}\n\n'
-
- collection_path = pathlib.Path(f)
- with open(LATEX_ROOT / 'sets' / f'{collection_path.stem}.tex', 'w') as collection_file:
- print(COLLECTION_TEMPLATE.format(collection_inputs), file=collection_file)
-
-if __name__ == '__main__':
- main()