New Map! "Surrounded" 🏝️ (#2770)

## Description:

A new map where you basically have to hop from island to island :) 
We don't have such a map at the moment.
There is a special center island which isn't necessary to get 80% of the
map.
This map could be very interesting in team games. One hydro will destroy
an entire island.
Size: 1976 x 1976
Nations: 8

<img width="949" height="951" alt="Screenshot 2026-01-02 214219"
src="https://github.com/user-attachments/assets/7139bcc9-6a05-414d-90c1-33cc36dd94fb"
/>

## 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
- [X] I confirm I have thoroughly tested these changes and take full
responsibility for any bugs introduced

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

FloPinguin
This commit is contained in:
FloPinguin
2026-01-02 22:09:59 +01:00
committed by GitHub
parent 4877e202f6
commit 1eee8b4ddb
13 changed files with 116 additions and 1 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

@@ -0,0 +1,45 @@
{
"name": "Surrounded",
"nations": [
{
"coordinates": [1043, 910],
"flag": "",
"name": "Endangered Islander"
},
{
"coordinates": [684, 271],
"flag": "",
"name": "North Islander"
},
{
"coordinates": [1429, 429],
"flag": "",
"name": "Isolated Islander"
},
{
"coordinates": [1726, 1022],
"flag": "",
"name": "Volcano Islander"
},
{
"coordinates": [1422, 1569],
"flag": "",
"name": "Resilient Islander"
},
{
"coordinates": [670, 1742],
"flag": "",
"name": "Vulnerable Islander"
},
{
"coordinates": [282, 1160],
"flag": "",
"name": "Unyielding Islander"
},
{
"coordinates": [384, 469],
"flag": "",
"name": "Rugged Islander"
}
]
}
+1
View File
@@ -57,6 +57,7 @@ var maps = []struct {
{Name: "pluto"},
{Name: "southamerica"},
{Name: "straitofgibraltar"},
{Name: "surrounded"},
{Name: "svalmel"},
{Name: "world"},
{Name: "lemnos"},
+2 -1
View File
@@ -251,7 +251,8 @@
"manicouagan": "Manicouagan",
"lemnos": "Lemnos",
"twolakes": "Two Lakes",
"straitofhormuz": "Strait of Hormuz"
"straitofhormuz": "Strait of Hormuz",
"surrounded": "Surrounded"
},
"map_categories": {
"continental": "Continental",
+60
View File
@@ -0,0 +1,60 @@
{
"map": {
"height": 1976,
"num_land_tiles": 767607,
"width": 1976
},
"map16x": {
"height": 494,
"num_land_tiles": 45797,
"width": 494
},
"map4x": {
"height": 988,
"num_land_tiles": 188989,
"width": 988
},
"name": "Surrounded",
"nations": [
{
"coordinates": [1043, 910],
"flag": "",
"name": "Endangered Islander"
},
{
"coordinates": [684, 271],
"flag": "",
"name": "North Islander"
},
{
"coordinates": [1429, 429],
"flag": "",
"name": "Isolated Islander"
},
{
"coordinates": [1726, 1022],
"flag": "",
"name": "Volcano Islander"
},
{
"coordinates": [1422, 1569],
"flag": "",
"name": "Resilient Islander"
},
{
"coordinates": [670, 1742],
"flag": "",
"name": "Vulnerable Islander"
},
{
"coordinates": [282, 1160],
"flag": "",
"name": "Unyielding Islander"
},
{
"coordinates": [384, 469],
"flag": "",
"name": "Rugged Islander"
}
]
}
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: 7.8 KiB

+1
View File
@@ -46,6 +46,7 @@ export const MapDescription: Record<keyof typeof GameMapType, string> = {
Lemnos: "Lemnos",
TwoLakes: "Two Lakes",
StraitOfHormuz: "Strait of Hormuz",
Surrounded: "Surrounded",
};
@customElement("map-display")
+1
View File
@@ -87,6 +87,7 @@ const numPlayersConfig = {
[GameMapType.Lemnos]: [20, 15, 10],
[GameMapType.TwoLakes]: [60, 50, 40],
[GameMapType.StraitOfHormuz]: [40, 36, 30],
[GameMapType.Surrounded]: [56, 28, 14], // 4, 2, 1 players per island
} as const satisfies Record<GameMapType, [number, number, number]>;
export abstract class DefaultServerConfig implements ServerConfig {
+2
View File
@@ -109,6 +109,7 @@ export enum GameMapType {
Lemnos = "Lemnos",
TwoLakes = "Two Lakes",
StraitOfHormuz = "Strait of Hormuz",
Surrounded = "Surrounded",
}
export type GameMapName = keyof typeof GameMapType;
@@ -159,6 +160,7 @@ export const mapCategories: Record<string, GameMapType[]> = {
GameMapType.BaikalNukeWars,
GameMapType.FourIslands,
GameMapType.Svalmel,
GameMapType.Surrounded,
],
};
+1
View File
@@ -59,6 +59,7 @@ const frequency: Partial<Record<GameMapName, number>> = {
Lemnos: 3,
TwoLakes: 6,
StraitOfHormuz: 4,
Surrounded: 4,
};
interface MapWithMode {