diff --git a/map-generator/assets/maps/france/image.png b/map-generator/assets/maps/france/image.png
new file mode 100644
index 0000000000..3b6e3c25e1
Binary files /dev/null and b/map-generator/assets/maps/france/image.png differ
diff --git a/map-generator/assets/maps/france/info.json b/map-generator/assets/maps/france/info.json
new file mode 100644
index 0000000000..f993683448
--- /dev/null
+++ b/map-generator/assets/maps/france/info.json
@@ -0,0 +1,134 @@
+{
+ "id": "France",
+ "name": "France",
+ "translation_key": "map.france",
+ "categories": ["new", "europe", "countries"],
+ "multiplayer_frequency": 8,
+ "nations": [
+ {
+ "coordinates": [1140, 389],
+ "name": "Nord-Pas-de-Calais",
+ "flag": "Flanders"
+ },
+ {
+ "coordinates": [1173, 579],
+ "name": "Picardy",
+ "flag": "fr-s"
+ },
+ {
+ "coordinates": [889, 579],
+ "name": "Haute-Normandie",
+ "flag": "normandy"
+ },
+ {
+ "coordinates": [684, 621],
+ "name": "Basse-Normandie",
+ "flag": "normandy"
+ },
+ {
+ "coordinates": [471, 835],
+ "name": "Brittany",
+ "flag": "brittany"
+ },
+ {
+ "coordinates": [1284, 714],
+ "name": "Île-de-France",
+ "flag": "fr-idf"
+ },
+ {
+ "coordinates": [1508, 641],
+ "name": "Champagne-Ardenne",
+ "flag": "fr-g"
+ },
+ {
+ "coordinates": [1787, 681],
+ "name": "Lorraine",
+ "flag": "fr-m"
+ },
+ {
+ "coordinates": [1920, 845],
+ "name": "Alsace",
+ "flag": "fr-a"
+ },
+ {
+ "coordinates": [1691, 1149],
+ "name": "Franche-Comté",
+ "flag": "fr-i"
+ },
+ {
+ "coordinates": [1440, 1037],
+ "name": "Burgundy",
+ "flag": "fr-d"
+ },
+ {
+ "coordinates": [1000, 897],
+ "name": "Centre-Val de Loire",
+ "flag": "fr-cvl"
+ },
+ {
+ "coordinates": [691, 1004],
+ "name": "Pays de la Loire",
+ "flag": "fr-pdl"
+ },
+ {
+ "coordinates": [771, 1349],
+ "name": "Poitou-Charentes",
+ "flag": "fr-t"
+ },
+ {
+ "coordinates": [727, 1833],
+ "name": "Aquitaine",
+ "flag": "aquitaine"
+ },
+ {
+ "coordinates": [1018, 1885],
+ "name": "Midi-Pyrénées",
+ "flag": "1_Occitania"
+ },
+ {
+ "coordinates": [1344, 1811],
+ "name": "Languedoc-Roussillon",
+ "flag": "fr-k"
+ },
+ {
+ "coordinates": [1792, 1700],
+ "name": "Provence-Alpes-Côte d'Azur",
+ "flag": "fr-pac"
+ },
+ {
+ "coordinates": [1635, 1460],
+ "name": "Rhône-Alpes",
+ "flag": "fr-v"
+ },
+ {
+ "coordinates": [1353, 1372],
+ "name": "Auvergne",
+ "flag": "fr-c"
+ },
+ {
+ "coordinates": [1053, 1326],
+ "name": "Limousin",
+ "flag": "fr-l"
+ },
+ {
+ "coordinates": [1936, 1788],
+ "name": "Monaco",
+ "flag": "mc"
+ },
+ {
+ "coordinates": [515, 606],
+ "name": "Jersey",
+ "flag": "je"
+ },
+ {
+ "coordinates": [445, 550],
+ "name": "Guernsey",
+ "flag": "gg"
+ },
+ {
+ "coordinates": [2201, 2120],
+ "name": "Corsica",
+ "flag": "Corsica"
+ }
+ ]
+}
diff --git a/resources/countries.json b/resources/countries.json
index 853bad92cf..340307b28c 100644
--- a/resources/countries.json
+++ b/resources/countries.json
@@ -98,6 +98,11 @@
"continent": "Africa",
"name": "Almoravid Dynasty"
},
+ {
+ "code": "fr-a",
+ "continent": "Europe",
+ "name": "Alsace"
+ },
{
"code": "Amazigh flag",
"continent": "Africa",
@@ -267,6 +272,16 @@
"continent": "Oceania",
"name": "Australian Aboriginal Flag"
},
+ {
+ "code": "fr-c",
+ "continent": "Europe",
+ "name": "Auvergne"
+ },
+ {
+ "code": "fr-ara",
+ "continent": "Europe",
+ "name": "Auvergne-Rhône-Alpes"
+ },
{
"code": "Ayyubid Dynasty",
"continent": "Asia",
@@ -416,6 +431,11 @@
"continent": "Africa",
"name": "Botswana"
},
+ {
+ "code": "fr-bfc",
+ "continent": "Europe",
+ "name": "Bourgogne-Franche-Comté"
+ },
{
"code": "bv",
"name": "Bouvet Island"
@@ -486,10 +506,15 @@
"name": "Burkina Faso"
},
{
- "code": "burgundy",
+ "code": "fr-d",
"continent": "Europe",
"name": "Burgundy"
},
+ {
+ "code": "burgundy",
+ "continent": "Europe",
+ "name": "Cross Of Burgundy"
+ },
{
"code": "Burma",
"continent": "Asia",
@@ -579,6 +604,11 @@
"continent": "Africa",
"name": "Central African Republic"
},
+ {
+ "code": "fr-cvl",
+ "continent": "Europe",
+ "name": "Centre-Val de Loire"
+ },
{
"code": "Chaco",
"continent": "South America",
@@ -594,6 +624,11 @@
"continent": "Asia",
"name": "Chaldea"
},
+ {
+ "code": "fr-g",
+ "continent": "Europe",
+ "name": "Champagne-Ardenne"
+ },
{
"code": "Cherokee Nation",
"continent": "North America",
@@ -1063,11 +1098,21 @@
"continent": "Europe",
"name": "France"
},
+ {
+ "code": "fr-i",
+ "continent": "Europe",
+ "name": "Franche-Comté"
+ },
{
"code": "1_Franks",
"continent": "Europe",
"name": "Franks"
},
+ {
+ "code": "Free France",
+ "continent": "Europe",
+ "name": "Free France"
+ },
{
"code": "French foreign legion",
"name": "French Foreign Legion"
@@ -1111,6 +1156,11 @@
"continent": "Africa",
"name": "Gambia"
},
+ {
+ "code": "Gascony",
+ "continent": "Europe",
+ "name": "Gascony"
+ },
{
"code": "Garamant",
"continent": "Africa",
@@ -1167,6 +1217,11 @@
"continent": "Asia",
"name": "Golden Horde"
},
+ {
+ "code": "fr-ges",
+ "continent": "Europe",
+ "name": "Grand Est"
+ },
{
"code": "Grand Duchy of Finland",
"continent": "Europe",
@@ -1252,6 +1307,11 @@
"continent": "North America",
"name": "Haida"
},
+ {
+ "code": "fr-hdf",
+ "continent": "Europe",
+ "name": "Hauts-de-France"
+ },
{
"code": "Hawaii",
"continent": "Oceania",
@@ -1301,6 +1361,11 @@
"continent": "North America",
"name": "Idaho"
},
+ {
+ "code": "fr-idf",
+ "continent": "Europe",
+ "name": "Île-de-France"
+ },
{
"code": "Illinois (Centennial)",
"continent": "North America",
@@ -1531,6 +1596,11 @@
"continent": "Africa",
"name": "Kingdom of Egypt"
},
+ {
+ "code": "Kingdom of France",
+ "continent": "Europe",
+ "name": "Kingdom of France"
+ },
{
"code": "Kingdom of Iraq",
"continent": "Asia",
@@ -1660,6 +1730,11 @@
"continent": "Europe",
"name": "Lancashire"
},
+ {
+ "code": "fr-k",
+ "continent": "Europe",
+ "name": "Languedoc-Roussillon"
+ },
{
"code": "la",
"continent": "Asia",
@@ -1733,6 +1808,11 @@
"continent": "North America",
"name": "Lincoln"
},
+ {
+ "code": "fr-l",
+ "continent": "Europe",
+ "name": "Limousin"
+ },
{
"code": "Listenbourg",
"name": "Listenbourg"
@@ -1757,6 +1837,11 @@
"continent": "South America",
"name": "Los Rios"
},
+ {
+ "code": "fr-m",
+ "continent": "Europe",
+ "name": "Lorraine"
+ },
{
"code": "Louisiana",
"continent": "North America",
@@ -2087,6 +2172,11 @@
"continent": "Africa",
"name": "Namibia"
},
+ {
+ "code": "Napoleon",
+ "continent": "Europe",
+ "name": "Napoleon"
+ },
{
"code": "NATO",
"name": "NATO"
@@ -2305,6 +2395,11 @@
"continent": "Europe",
"name": "Norway"
},
+ {
+ "code": "fr-naq",
+ "continent": "Europe",
+ "name": "Nouvelle-Aquitaine"
+ },
{
"code": "novascotia",
"continent": "North America",
@@ -2420,6 +2515,11 @@
"continent": "Europe",
"name": "Paris"
},
+ {
+ "code": "fr-pdl",
+ "continent": "Europe",
+ "name": "Pays de la Loire"
+ },
{
"code": "Pennsylvania",
"continent": "North America",
@@ -2465,6 +2565,11 @@
"continent": "Asia",
"name": "Phrygia"
},
+ {
+ "code": "fr-s",
+ "continent": "Europe",
+ "name": "Picardy"
+ },
{
"code": "Pine Tree Flag",
"continent": "North America",
@@ -2475,6 +2580,11 @@
"continent": "Oceania",
"name": "Pitcairn"
},
+ {
+ "code": "fr-t",
+ "continent": "Europe",
+ "name": "Poitou-Charentes"
+ },
{
"code": "pl",
"continent": "Europe",
@@ -2519,6 +2629,11 @@
"continent": "Europe",
"name": "Provence"
},
+ {
+ "code": "fr-pac",
+ "continent": "Europe",
+ "name": "Provence-Alpes-Côte d'Azur"
+ },
{
"code": "prussia",
"continent": "Europe",
@@ -2618,6 +2733,11 @@
"continent": "North America",
"name": "Rhode Island"
},
+ {
+ "code": "fr-v",
+ "continent": "Europe",
+ "name": "Rhône-Alpes"
+ },
{
"code": "rio_de_janeiro",
"continent": "South America",
diff --git a/resources/flags/Free France.svg b/resources/flags/Free France.svg
new file mode 100644
index 0000000000..ff7be89697
--- /dev/null
+++ b/resources/flags/Free France.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/Gascony.svg b/resources/flags/Gascony.svg
new file mode 100644
index 0000000000..ab1651e56a
--- /dev/null
+++ b/resources/flags/Gascony.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/Kingdom of France.svg b/resources/flags/Kingdom of France.svg
new file mode 100644
index 0000000000..ba734386b8
--- /dev/null
+++ b/resources/flags/Kingdom of France.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/Napoleon.svg b/resources/flags/Napoleon.svg
new file mode 100644
index 0000000000..94102f9fe9
--- /dev/null
+++ b/resources/flags/Napoleon.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-a.svg b/resources/flags/fr-a.svg
new file mode 100644
index 0000000000..badb6b657e
--- /dev/null
+++ b/resources/flags/fr-a.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-ara.svg b/resources/flags/fr-ara.svg
new file mode 100644
index 0000000000..84c2136cc2
--- /dev/null
+++ b/resources/flags/fr-ara.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-bfc.svg b/resources/flags/fr-bfc.svg
new file mode 100644
index 0000000000..d509361609
--- /dev/null
+++ b/resources/flags/fr-bfc.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-c.svg b/resources/flags/fr-c.svg
new file mode 100644
index 0000000000..80cf3925c4
--- /dev/null
+++ b/resources/flags/fr-c.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-cvl.svg b/resources/flags/fr-cvl.svg
new file mode 100644
index 0000000000..2d9aa92b7d
--- /dev/null
+++ b/resources/flags/fr-cvl.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-d.svg b/resources/flags/fr-d.svg
new file mode 100644
index 0000000000..3ad02f02a2
--- /dev/null
+++ b/resources/flags/fr-d.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-g.svg b/resources/flags/fr-g.svg
new file mode 100644
index 0000000000..20525c7670
--- /dev/null
+++ b/resources/flags/fr-g.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-ges.svg b/resources/flags/fr-ges.svg
new file mode 100644
index 0000000000..1b1df2f8ae
--- /dev/null
+++ b/resources/flags/fr-ges.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-hdf.svg b/resources/flags/fr-hdf.svg
new file mode 100644
index 0000000000..70ab5ca9cf
--- /dev/null
+++ b/resources/flags/fr-hdf.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-i.svg b/resources/flags/fr-i.svg
new file mode 100644
index 0000000000..0e43eeba0c
--- /dev/null
+++ b/resources/flags/fr-i.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-idf.svg b/resources/flags/fr-idf.svg
new file mode 100644
index 0000000000..bcdfedf2cd
--- /dev/null
+++ b/resources/flags/fr-idf.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-k.svg b/resources/flags/fr-k.svg
new file mode 100644
index 0000000000..079546a160
--- /dev/null
+++ b/resources/flags/fr-k.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-l.svg b/resources/flags/fr-l.svg
new file mode 100644
index 0000000000..591f577459
--- /dev/null
+++ b/resources/flags/fr-l.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-m.svg b/resources/flags/fr-m.svg
new file mode 100644
index 0000000000..f01c65fa38
--- /dev/null
+++ b/resources/flags/fr-m.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-naq.svg b/resources/flags/fr-naq.svg
new file mode 100644
index 0000000000..5be5db4238
--- /dev/null
+++ b/resources/flags/fr-naq.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-pac.svg b/resources/flags/fr-pac.svg
new file mode 100644
index 0000000000..12a5b6a361
--- /dev/null
+++ b/resources/flags/fr-pac.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-pdl.svg b/resources/flags/fr-pdl.svg
new file mode 100644
index 0000000000..17de074134
--- /dev/null
+++ b/resources/flags/fr-pdl.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-s.svg b/resources/flags/fr-s.svg
new file mode 100644
index 0000000000..e9bf502cde
--- /dev/null
+++ b/resources/flags/fr-s.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-t.svg b/resources/flags/fr-t.svg
new file mode 100644
index 0000000000..6c77768061
--- /dev/null
+++ b/resources/flags/fr-t.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/flags/fr-v.svg b/resources/flags/fr-v.svg
new file mode 100644
index 0000000000..db21d75431
--- /dev/null
+++ b/resources/flags/fr-v.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/resources/lang/en.json b/resources/lang/en.json
index c413c8a9c2..2aa8ac67ee 100644
--- a/resources/lang/en.json
+++ b/resources/lang/en.json
@@ -1021,6 +1021,7 @@
"featured": "Featured",
"fingerlakes": "Finger Lakes",
"fourislands": "Four Islands",
+ "france": "France",
"gatewaytotheatlantic": "Gateway to the Atlantic",
"germany": "Germany",
"giantworldmap": "Giant World Map",
diff --git a/resources/maps/france/manifest.json b/resources/maps/france/manifest.json
new file mode 100644
index 0000000000..cc9d148e96
--- /dev/null
+++ b/resources/maps/france/manifest.json
@@ -0,0 +1,149 @@
+{
+ "categories": ["new", "europe", "countries"],
+ "id": "France",
+ "map": {
+ "height": 2424,
+ "num_land_tiles": 2047093,
+ "width": 2424
+ },
+ "map16x": {
+ "height": 606,
+ "num_land_tiles": 123911,
+ "width": 606
+ },
+ "map4x": {
+ "height": 1212,
+ "num_land_tiles": 506105,
+ "width": 1212
+ },
+ "multiplayer_frequency": 8,
+ "name": "France",
+ "nations": [
+ {
+ "coordinates": [1140, 389],
+ "flag": "Flanders",
+ "name": "Nord-Pas-de-Calais"
+ },
+ {
+ "coordinates": [1173, 579],
+ "flag": "fr-s",
+ "name": "Picardy"
+ },
+ {
+ "coordinates": [889, 579],
+ "flag": "normandy",
+ "name": "Haute-Normandie"
+ },
+ {
+ "coordinates": [684, 621],
+ "flag": "normandy",
+ "name": "Basse-Normandie"
+ },
+ {
+ "coordinates": [471, 835],
+ "flag": "brittany",
+ "name": "Brittany"
+ },
+ {
+ "coordinates": [1284, 714],
+ "flag": "fr-idf",
+ "name": "Île-de-France"
+ },
+ {
+ "coordinates": [1508, 641],
+ "flag": "fr-g",
+ "name": "Champagne-Ardenne"
+ },
+ {
+ "coordinates": [1787, 681],
+ "flag": "fr-m",
+ "name": "Lorraine"
+ },
+ {
+ "coordinates": [1920, 845],
+ "flag": "fr-a",
+ "name": "Alsace"
+ },
+ {
+ "coordinates": [1691, 1149],
+ "flag": "fr-i",
+ "name": "Franche-Comté"
+ },
+ {
+ "coordinates": [1440, 1037],
+ "flag": "fr-d",
+ "name": "Burgundy"
+ },
+ {
+ "coordinates": [1000, 897],
+ "flag": "fr-cvl",
+ "name": "Centre-Val de Loire"
+ },
+ {
+ "coordinates": [691, 1004],
+ "flag": "fr-pdl",
+ "name": "Pays de la Loire"
+ },
+ {
+ "coordinates": [771, 1349],
+ "flag": "fr-t",
+ "name": "Poitou-Charentes"
+ },
+ {
+ "coordinates": [727, 1833],
+ "flag": "aquitaine",
+ "name": "Aquitaine"
+ },
+ {
+ "coordinates": [1018, 1885],
+ "flag": "1_Occitania",
+ "name": "Midi-Pyrénées"
+ },
+ {
+ "coordinates": [1344, 1811],
+ "flag": "fr-k",
+ "name": "Languedoc-Roussillon"
+ },
+ {
+ "coordinates": [1792, 1700],
+ "flag": "fr-pac",
+ "name": "Provence-Alpes-Côte d'Azur"
+ },
+ {
+ "coordinates": [1635, 1460],
+ "flag": "fr-v",
+ "name": "Rhône-Alpes"
+ },
+ {
+ "coordinates": [1353, 1372],
+ "flag": "fr-c",
+ "name": "Auvergne"
+ },
+ {
+ "coordinates": [1053, 1326],
+ "flag": "fr-l",
+ "name": "Limousin"
+ },
+ {
+ "coordinates": [1936, 1788],
+ "flag": "mc",
+ "name": "Monaco"
+ },
+ {
+ "coordinates": [515, 606],
+ "flag": "je",
+ "name": "Jersey"
+ },
+ {
+ "coordinates": [445, 550],
+ "flag": "gg",
+ "name": "Guernsey"
+ },
+ {
+ "coordinates": [2201, 2120],
+ "flag": "Corsica",
+ "name": "Corsica"
+ }
+ ],
+ "translation_key": "map.france"
+}
diff --git a/resources/maps/france/map.bin b/resources/maps/france/map.bin
new file mode 100644
index 0000000000..c52087907b
Binary files /dev/null and b/resources/maps/france/map.bin differ
diff --git a/resources/maps/france/map16x.bin b/resources/maps/france/map16x.bin
new file mode 100644
index 0000000000..62ff78d85e
Binary files /dev/null and b/resources/maps/france/map16x.bin differ
diff --git a/resources/maps/france/map4x.bin b/resources/maps/france/map4x.bin
new file mode 100644
index 0000000000..ba4c0ccd02
Binary files /dev/null and b/resources/maps/france/map4x.bin differ
diff --git a/resources/maps/france/thumbnail.webp b/resources/maps/france/thumbnail.webp
new file mode 100644
index 0000000000..8219a5f2e2
Binary files /dev/null and b/resources/maps/france/thumbnail.webp differ
diff --git a/src/core/game/Maps.gen.ts b/src/core/game/Maps.gen.ts
index 405fdf1269..9c8025cb0a 100644
--- a/src/core/game/Maps.gen.ts
+++ b/src/core/game/Maps.gen.ts
@@ -47,6 +47,7 @@ export enum GameMapType {
FaroeIslands = "Faroe Islands", // map-generator/assets/maps/faroeislands/info.json
FingerLakes = "Finger Lakes", // map-generator/assets/maps/fingerlakes/info.json
FourIslands = "Four Islands", // map-generator/assets/maps/fourislands/info.json
+ France = "France", // map-generator/assets/maps/france/info.json
GatewayToTheAtlantic = "Gateway to the Atlantic", // map-generator/assets/maps/gatewaytotheatlantic/info.json
Germany = "Germany", // map-generator/assets/maps/germany/info.json
GiantWorldMap = "Giant World Map", // map-generator/assets/maps/giantworldmap/info.json
@@ -508,6 +509,13 @@ export const maps: readonly MapInfo[] = [
multiplayerFrequency: 4,
specialTeamCount: 4,
},
+ {
+ id: "France",
+ type: GameMapType.France,
+ translationKey: "map.france",
+ categories: ["new", "europe", "countries"],
+ multiplayerFrequency: 8,
+ },
{
id: "GatewayToTheAtlantic",
type: GameMapType.GatewayToTheAtlantic,