Adds Scandinavia map (#4561)

> **Before opening a PR:** discuss new features on
[Discord](https://discord.gg/K9zernJB5z) first, and file bugs or small
improvements as
[issues](https://github.com/openfrontio/OpenFrontIO/issues/new/choose).
You must be assigned to an `approved` issue — unsolicited PRs will be
auto-closed.

**Add approved & assigned issue number here:**

Resolves #4543 

## Description:

Adds Map of Scandinavia. This is highly requested and I'm surprised this
map doesnt exist already. The layout is based on the Territorial
version.
Land area: 2.47M pixels
Nations: 24, with additional nations totaling to 62.

<img width="2006" height="2243" alt="image"
src="https://github.com/user-attachments/assets/a959acd3-7871-4d94-8722-b0b69defa9db"
/>
<img width="551" height="590" alt="Screenshot 2026-07-08 162324"
src="https://github.com/user-attachments/assets/e4a49073-04dc-416d-841a-ab945a40d260"
/>


## Please complete the following:

- [x] I have added screenshots for all UI updates
- [x] I process any text displayed to the user through translateText()
and I've added it to the en.json file
- [x] I have added relevant tests to the test directory

## Please put your Discord username so you can be contacted if a bug or
regression is found:

DISCORD_USERNAME crunchybbbbb

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
This commit is contained in:
crunchybbb
2026-07-10 14:18:08 -07:00
committed by GitHub
parent f1fc5434be
commit c25f898809
9 changed files with 669 additions and 0 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

@@ -0,0 +1,321 @@
{
"id": "Scandinavia",
"name": "Scandinavia",
"translation_key": "map.scandinavia",
"categories": ["europe", "new"],
"multiplayer_frequency": 7,
"nations": [
{
"coordinates": [419, 1426],
"name": "Norway",
"flag": "no"
},
{
"coordinates": [811, 1499],
"name": "Sweden",
"flag": "se"
},
{
"coordinates": [513, 1893],
"name": "Denmark",
"flag": "dk"
},
{
"coordinates": [734, 2170],
"name": "Germany",
"flag": "de"
},
{
"coordinates": [276, 2227],
"name": "Netherlands",
"flag": "nl"
},
{
"coordinates": [1381, 1251],
"name": "Finland",
"flag": "fi"
},
{
"coordinates": [1466, 1479],
"name": "Estonia",
"flag": "ee"
},
{
"coordinates": [1329, 1789],
"name": "Latvia",
"flag": "lv"
},
{
"coordinates": [1394, 1994],
"name": "Lithuania",
"flag": "lt"
},
{
"coordinates": [1057, 2129],
"name": "Poland",
"flag": "pl"
},
{
"coordinates": [1761, 2096],
"name": "Belarus",
"flag": "by"
},
{
"coordinates": [1262, 896],
"name": "Ostrobothnia",
"flag": "fi"
},
{
"coordinates": [1750, 796],
"name": "Karelia",
"flag": "ru"
},
{
"coordinates": [1798, 278],
"name": "Murmansk",
"flag": "ru"
},
{
"coordinates": [1418, 468],
"name": "Lapland",
"flag": "fi"
},
{
"coordinates": [1733, 1325],
"name": "St. Petersburg",
"flag": "ru"
},
{
"coordinates": [1670, 1724],
"name": "Pskov",
"flag": "ru"
},
{
"coordinates": [2007, 1727],
"name": "Tver",
"flag": "ru"
},
{
"coordinates": [781, 1865],
"name": "Skåne",
"flag": "se"
},
{
"coordinates": [1110, 1374],
"name": "Aland Islands",
"flag": "ax"
},
{
"coordinates": [911, 1121],
"name": "Norrland",
"flag": "se"
},
{
"coordinates": [1028, 714],
"name": "Norrbotten",
"flag": "se"
},
{
"coordinates": [891, 443],
"name": "Troms",
"flag": "no"
},
{
"coordinates": [1304, 159],
"name": "Finnmark",
"flag": "no"
}
],
"additionalNations": [
{
"coordinates": [1063, 1699],
"name": "Gotland",
"flag": "se"
},
{
"coordinates": [952, 1810],
"name": "Kalmar",
"flag": "se"
},
{
"coordinates": [1226, 2004],
"name": "Kaliningrad",
"flag": "ru"
},
{
"coordinates": [650, 1974],
"name": "Zealand",
"flag": "dk"
},
{
"coordinates": [421, 1588],
"name": "Telemark",
"flag": "no"
},
{
"coordinates": [1668, 946],
"name": "North Karelia",
"flag": "North karelia"
},
{
"coordinates": [1545, 980],
"name": "Savonia",
"flag": "fi"
},
{
"coordinates": [1811, 1533],
"name": "Novgorod",
"flag": "ru"
},
{
"coordinates": [1198, 2148],
"name": "Pomerania",
"flag": "prussia"
},
{
"coordinates": [1307, 1550],
"name": "Saaremaa",
"flag": "ee"
},
{
"coordinates": [689, 920],
"name": "Trøndelag",
"flag": "no"
},
{
"coordinates": [765, 1148],
"name": "Jämtland",
"flag": "se"
},
{
"coordinates": [482, 1257],
"name": "Innlandet",
"flag": "no"
},
{
"coordinates": [315, 1344],
"name": "Vestland",
"flag": "no"
},
{
"coordinates": [728, 1688],
"name": "Västra Götaland",
"flag": "se"
},
{
"coordinates": [869, 1756],
"name": "Jönköping",
"flag": "se"
},
{
"coordinates": [1012, 1454],
"name": "Stockholm County",
"flag": "se"
},
{
"coordinates": [926, 1307],
"name": "Gävleborg",
"flag": "se"
},
{
"coordinates": [507, 2162],
"name": "Schleswig",
"flag": "prussia"
},
{
"coordinates": [833, 2208],
"name": "Mecklenberg",
"flag": "de"
},
{
"coordinates": [454, 2231],
"name": "Bremen",
"flag": "de"
},
{
"coordinates": [1290, 342],
"name": "Sapmi",
"flag": "Sami flag"
},
{
"coordinates": [971, 877],
"name": "Västerbotten",
"flag": "se"
},
{
"coordinates": [1452, 1283],
"name": "Uusimaa",
"flag": "fi"
},
{
"coordinates": [1211, 1286],
"name": "Finland Proper",
"flag": "fi"
},
{
"coordinates": [1344, 1078],
"name": "Birkaland",
"flag": "fi"
},
{
"coordinates": [1503, 747],
"name": "Kainuu",
"flag": "fi"
},
{
"coordinates": [1957, 1217],
"name": "Leningrad",
"flag": "ussr"
},
{
"coordinates": [1985, 2189],
"name": "Smolensk",
"flag": "ru"
},
{
"coordinates": [1285, 1887],
"name": "Lithuania Minor",
"flag": "lt"
},
{
"coordinates": [1592, 2071],
"name": "Dainava",
"flag": "lt"
},
{
"coordinates": [1444, 2176],
"name": "Sudovia",
"flag": "lt"
},
{
"coordinates": [1766, 1925],
"name": "Vitsebsk",
"flag": "by"
},
{
"coordinates": [1756, 2232],
"name": "Minsk",
"flag": "by"
},
{
"coordinates": [1487, 1615],
"name": "Southern Estonia",
"flag": "ee"
},
{
"coordinates": [1412, 1721],
"name": "Vidzeme",
"flag": "lv"
},
{
"coordinates": [1556, 1791],
"name": "Latgale",
"flag": "lv"
},
{
"coordinates": [1439, 1860],
"name": "Zemgale",
"flag": "lv"
}
]
}
+1
View File
@@ -994,6 +994,7 @@
"random": "Random",
"russia": "Russia",
"sanfrancisco": "San Francisco",
"scandinavia": "Scandinavia",
"sierpinski": "Sierpinski",
"southamerica": "South America",
"southeastasia": "Southeast Asia",
+336
View File
@@ -0,0 +1,336 @@
{
"additionalNations": [
{
"coordinates": [1063, 1699],
"flag": "se",
"name": "Gotland"
},
{
"coordinates": [952, 1810],
"flag": "se",
"name": "Kalmar"
},
{
"coordinates": [1226, 2004],
"flag": "ru",
"name": "Kaliningrad"
},
{
"coordinates": [650, 1974],
"flag": "dk",
"name": "Zealand"
},
{
"coordinates": [421, 1588],
"flag": "no",
"name": "Telemark"
},
{
"coordinates": [1668, 946],
"flag": "North karelia",
"name": "North Karelia"
},
{
"coordinates": [1545, 980],
"flag": "fi",
"name": "Savonia"
},
{
"coordinates": [1811, 1533],
"flag": "ru",
"name": "Novgorod"
},
{
"coordinates": [1198, 2148],
"flag": "prussia",
"name": "Pomerania"
},
{
"coordinates": [1307, 1550],
"flag": "ee",
"name": "Saaremaa"
},
{
"coordinates": [689, 920],
"flag": "no",
"name": "Trøndelag"
},
{
"coordinates": [765, 1148],
"flag": "se",
"name": "Jämtland"
},
{
"coordinates": [482, 1257],
"flag": "no",
"name": "Innlandet"
},
{
"coordinates": [315, 1344],
"flag": "no",
"name": "Vestland"
},
{
"coordinates": [728, 1688],
"flag": "se",
"name": "Västra Götaland"
},
{
"coordinates": [869, 1756],
"flag": "se",
"name": "Jönköping"
},
{
"coordinates": [1012, 1454],
"flag": "se",
"name": "Stockholm County"
},
{
"coordinates": [926, 1307],
"flag": "se",
"name": "Gävleborg"
},
{
"coordinates": [507, 2162],
"flag": "prussia",
"name": "Schleswig"
},
{
"coordinates": [833, 2208],
"flag": "de",
"name": "Mecklenberg"
},
{
"coordinates": [454, 2231],
"flag": "de",
"name": "Bremen"
},
{
"coordinates": [1290, 342],
"flag": "Sami flag",
"name": "Sapmi"
},
{
"coordinates": [971, 877],
"flag": "se",
"name": "Västerbotten"
},
{
"coordinates": [1452, 1283],
"flag": "fi",
"name": "Uusimaa"
},
{
"coordinates": [1211, 1286],
"flag": "fi",
"name": "Finland Proper"
},
{
"coordinates": [1344, 1078],
"flag": "fi",
"name": "Birkaland"
},
{
"coordinates": [1503, 747],
"flag": "fi",
"name": "Kainuu"
},
{
"coordinates": [1957, 1217],
"flag": "ussr",
"name": "Leningrad"
},
{
"coordinates": [1985, 2189],
"flag": "ru",
"name": "Smolensk"
},
{
"coordinates": [1285, 1887],
"flag": "lt",
"name": "Lithuania Minor"
},
{
"coordinates": [1592, 2071],
"flag": "lt",
"name": "Dainava"
},
{
"coordinates": [1444, 2176],
"flag": "lt",
"name": "Sudovia"
},
{
"coordinates": [1766, 1925],
"flag": "by",
"name": "Vitsebsk"
},
{
"coordinates": [1756, 2232],
"flag": "by",
"name": "Minsk"
},
{
"coordinates": [1487, 1615],
"flag": "ee",
"name": "Southern Estonia"
},
{
"coordinates": [1412, 1721],
"flag": "lv",
"name": "Vidzeme"
},
{
"coordinates": [1556, 1791],
"flag": "lv",
"name": "Latgale"
},
{
"coordinates": [1439, 1860],
"flag": "lv",
"name": "Zemgale"
}
],
"categories": ["europe", "new"],
"id": "Scandinavia",
"map": {
"height": 2240,
"num_land_tiles": 2475461,
"width": 2004
},
"map16x": {
"height": 560,
"num_land_tiles": 145629,
"width": 501
},
"map4x": {
"height": 1120,
"num_land_tiles": 605086,
"width": 1002
},
"multiplayer_frequency": 7,
"name": "Scandinavia",
"nations": [
{
"coordinates": [419, 1426],
"flag": "no",
"name": "Norway"
},
{
"coordinates": [811, 1499],
"flag": "se",
"name": "Sweden"
},
{
"coordinates": [513, 1893],
"flag": "dk",
"name": "Denmark"
},
{
"coordinates": [734, 2170],
"flag": "de",
"name": "Germany"
},
{
"coordinates": [276, 2227],
"flag": "nl",
"name": "Netherlands"
},
{
"coordinates": [1381, 1251],
"flag": "fi",
"name": "Finland"
},
{
"coordinates": [1466, 1479],
"flag": "ee",
"name": "Estonia"
},
{
"coordinates": [1329, 1789],
"flag": "lv",
"name": "Latvia"
},
{
"coordinates": [1394, 1994],
"flag": "lt",
"name": "Lithuania"
},
{
"coordinates": [1057, 2129],
"flag": "pl",
"name": "Poland"
},
{
"coordinates": [1761, 2096],
"flag": "by",
"name": "Belarus"
},
{
"coordinates": [1262, 896],
"flag": "fi",
"name": "Ostrobothnia"
},
{
"coordinates": [1750, 796],
"flag": "ru",
"name": "Karelia"
},
{
"coordinates": [1798, 278],
"flag": "ru",
"name": "Murmansk"
},
{
"coordinates": [1418, 468],
"flag": "fi",
"name": "Lapland"
},
{
"coordinates": [1733, 1325],
"flag": "ru",
"name": "St. Petersburg"
},
{
"coordinates": [1670, 1724],
"flag": "ru",
"name": "Pskov"
},
{
"coordinates": [2007, 1727],
"flag": "ru",
"name": "Tver"
},
{
"coordinates": [781, 1865],
"flag": "se",
"name": "Skåne"
},
{
"coordinates": [1110, 1374],
"flag": "ax",
"name": "Aland Islands"
},
{
"coordinates": [911, 1121],
"flag": "se",
"name": "Norrland"
},
{
"coordinates": [1028, 714],
"flag": "se",
"name": "Norrbotten"
},
{
"coordinates": [891, 443],
"flag": "no",
"name": "Troms"
},
{
"coordinates": [1304, 159],
"flag": "no",
"name": "Finnmark"
}
],
"translation_key": "map.scandinavia"
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

+8
View File
@@ -81,6 +81,7 @@ export enum GameMapType {
Pluto = "Pluto", // map-generator/assets/maps/pluto/info.json
Russia = "Russia", // map-generator/assets/maps/russia/info.json
SanFrancisco = "San Francisco", // map-generator/assets/maps/sanfrancisco/info.json
Scandinavia = "Scandinavia", // map-generator/assets/maps/scandinavia/info.json
Sierpinski = "Sierpinski", // map-generator/assets/maps/sierpinski/info.json
SouthAmerica = "South America", // map-generator/assets/maps/southamerica/info.json
SoutheastAsia = "SoutheastAsia", // map-generator/assets/maps/southeastasia/info.json
@@ -731,6 +732,13 @@ export const maps: readonly MapInfo[] = [
categories: ["north_america"],
multiplayerFrequency: 3,
},
{
id: "Scandinavia",
type: GameMapType.Scandinavia,
translationKey: "map.scandinavia",
categories: ["europe", "new"],
multiplayerFrequency: 7,
},
{
id: "Sierpinski",
type: GameMapType.Sierpinski,