From b043dc6c156d2d2f8f235b0220dc7e39014210f8 Mon Sep 17 00:00:00 2001 From: RickD004 Date: Thu, 28 May 2026 16:34:26 -0600 Subject: [PATCH] Team Maps Expansion: New team spawnzones for multiple maps (#4058) ## Description: Lets give Teams and HvN gamemodes some attention. Adds team spawnzones to the following maps, and boosts them to appear more frequently as this gamemode: - Straitofgibraltar - 2 teams - Aegean - 2 teams - Beringsea - 2 teams - Beringstrait - 2 teams - Bosphorusstraits - 2 teams - Conakry - 2 teams - Falklandislands - 2 teams - Straitofhormuz - 2 teams - Tradersdream - 2 teams - Surrounded - 2 teams & 4 teams - Pluto - 2 teams - Gulf of St. Lawrence - 3 teams These maps (especially the ones for 2 teams) are all very symmetrical and would be nice gift for the playerbase, which enjoys these kind of games like FourIslands4Teams and Baikal2Teams. This is also nice for HvN, as it centralizes the players and gives them a better chance at defeating the nations. Screenshots of the maps with the new team spawnzones: Captura de pantalla 2026-05-28
001558 Captura de pantalla 2026-05-28
001913 Captura de pantalla 2026-05-28
002032 Captura de pantalla 2026-05-28
002348 Captura de pantalla 2026-05-28
002704 Captura de pantalla 2026-05-28
002859 Captura de pantalla 2026-05-28
003134 Captura de pantalla 2026-05-28
003449 Captura de pantalla 2026-05-28
003650 Captura de pantalla 2026-05-28
003951 Captura de pantalla 2026-05-28
004632 Captura de pantalla 2026-05-28
005518 Captura de pantalla 2026-05-28
000505 ## 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: tri.star1011 --- map-generator/assets/maps/aegean/info.json | 18 +++++++- map-generator/assets/maps/beringsea/info.json | 18 +++++++- .../assets/maps/beringstrait/info.json | 18 +++++++- .../assets/maps/bosphorusstraits/info.json | 18 +++++++- map-generator/assets/maps/conakry/info.json | 18 +++++++- .../assets/maps/falklandislands/info.json | 18 +++++++- .../assets/maps/gulfofstlawrence/info.json | 24 +++++++++- map-generator/assets/maps/pluto/info.json | 18 +++++++- .../assets/maps/straitofgibraltar/info.json | 18 +++++++- .../assets/maps/straitofhormuz/info.json | 18 +++++++- .../assets/maps/surrounded/info.json | 44 ++++++++++++++++++- .../assets/maps/tradersdream/info.json | 18 +++++++- resources/maps/aegean/manifest.json | 18 +++++++- resources/maps/beringsea/manifest.json | 18 +++++++- resources/maps/beringstrait/manifest.json | 18 +++++++- resources/maps/bosphorusstraits/manifest.json | 18 +++++++- resources/maps/conakry/manifest.json | 18 +++++++- resources/maps/falklandislands/manifest.json | 18 +++++++- resources/maps/gulfofstlawrence/manifest.json | 24 +++++++++- resources/maps/pluto/manifest.json | 18 +++++++- .../maps/straitofgibraltar/manifest.json | 18 +++++++- resources/maps/straitofhormuz/manifest.json | 18 +++++++- resources/maps/surrounded/manifest.json | 44 ++++++++++++++++++- resources/maps/tradersdream/manifest.json | 18 +++++++- src/server/MapPlaylist.ts | 12 +++++ 25 files changed, 484 insertions(+), 24 deletions(-) diff --git a/map-generator/assets/maps/aegean/info.json b/map-generator/assets/maps/aegean/info.json index 349ecc622..e6d211c00 100644 --- a/map-generator/assets/maps/aegean/info.json +++ b/map-generator/assets/maps/aegean/info.json @@ -121,5 +121,21 @@ "coordinates": [1416, 1755], "name": "Carpathos" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 2000, + "width": 850, + "x": 0, + "y": 0 + }, + { + "height": 2000, + "width": 850, + "x": 850, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/beringsea/info.json b/map-generator/assets/maps/beringsea/info.json index 40cad8a39..6707a6a43 100644 --- a/map-generator/assets/maps/beringsea/info.json +++ b/map-generator/assets/maps/beringsea/info.json @@ -121,5 +121,21 @@ "name": "Magadan", "flag": "ru" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1600, + "width": 1375, + "x": 0, + "y": 0 + }, + { + "height": 1600, + "width": 1125, + "x": 1375, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/beringstrait/info.json b/map-generator/assets/maps/beringstrait/info.json index 39f7d004b..ca93613e2 100644 --- a/map-generator/assets/maps/beringstrait/info.json +++ b/map-generator/assets/maps/beringstrait/info.json @@ -11,5 +11,21 @@ "name": "Russia", "flag": "ru" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 916, + "width": 750, + "x": 0, + "y": 0 + }, + { + "height": 916, + "width": 750, + "x": 750, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/bosphorusstraits/info.json b/map-generator/assets/maps/bosphorusstraits/info.json index 195b6c896..2cd6dddea 100644 --- a/map-generator/assets/maps/bosphorusstraits/info.json +++ b/map-generator/assets/maps/bosphorusstraits/info.json @@ -111,5 +111,21 @@ "name": "Esenyurt", "flag": "tr" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 612, + "width": 500, + "x": 0, + "y": 0 + }, + { + "height": 612, + "width": 500, + "x": 500, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/conakry/info.json b/map-generator/assets/maps/conakry/info.json index e861f07f0..60e1eedd5 100644 --- a/map-generator/assets/maps/conakry/info.json +++ b/map-generator/assets/maps/conakry/info.json @@ -101,5 +101,21 @@ "name": "Dioumaya", "flag": "gn" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1000, + "width": 1290, + "x": 0, + "y": 0 + }, + { + "height": 1000, + "width": 1166, + "x": 1290, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/falklandislands/info.json b/map-generator/assets/maps/falklandislands/info.json index 9484b29af..3be7de628 100644 --- a/map-generator/assets/maps/falklandislands/info.json +++ b/map-generator/assets/maps/falklandislands/info.json @@ -61,5 +61,21 @@ "name": "San Carlos", "flag": "fk" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1400, + "width": 1050, + "x": 0, + "y": 0 + }, + { + "height": 1400, + "width": 1050, + "x": 1050, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/gulfofstlawrence/info.json b/map-generator/assets/maps/gulfofstlawrence/info.json index a28d6df80..98dcb936e 100644 --- a/map-generator/assets/maps/gulfofstlawrence/info.json +++ b/map-generator/assets/maps/gulfofstlawrence/info.json @@ -131,5 +131,27 @@ "name": "Yarmouth", "flag": "ca_ns" } - ] + ], + "teamGameSpawnAreas": { + "3": [ + { + "height": 500, + "width": 900, + "x": 0, + "y": 0 + }, + { + "height": 1348, + "width": 720, + "x": 900, + "y": 0 + }, + { + "height": 848, + "width": 900, + "x": 0, + "y": 500 + } + ] + } } diff --git a/map-generator/assets/maps/pluto/info.json b/map-generator/assets/maps/pluto/info.json index 60cda0d49..8d3cec1e3 100644 --- a/map-generator/assets/maps/pluto/info.json +++ b/map-generator/assets/maps/pluto/info.json @@ -81,5 +81,21 @@ "name": "Free Pluto State", "flag": "" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1300, + "width": 1050, + "x": 0, + "y": 0 + }, + { + "height": 1300, + "width": 1050, + "x": 1050, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/straitofgibraltar/info.json b/map-generator/assets/maps/straitofgibraltar/info.json index 1a826d7e7..c87639aec 100644 --- a/map-generator/assets/maps/straitofgibraltar/info.json +++ b/map-generator/assets/maps/straitofgibraltar/info.json @@ -33,5 +33,21 @@ "coordinates": [1555, 258], "name": "Andalusia" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 651, + "width": 2900, + "x": 0, + "y": 0 + }, + { + "height": 825, + "width": 2900, + "x": 0, + "y": 651 + } + ] + } } diff --git a/map-generator/assets/maps/straitofhormuz/info.json b/map-generator/assets/maps/straitofhormuz/info.json index 97a05615c..cf3c1757a 100644 --- a/map-generator/assets/maps/straitofhormuz/info.json +++ b/map-generator/assets/maps/straitofhormuz/info.json @@ -101,5 +101,21 @@ "name": "Al Wakrah", "flag": "" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 700, + "width": 1300, + "x": 0, + "y": 500 + }, + { + "height": 500, + "width": 1800, + "x": 0, + "y": 0 + } + ] + } } diff --git a/map-generator/assets/maps/surrounded/info.json b/map-generator/assets/maps/surrounded/info.json index 7b2b4fdf8..f5ae29d31 100644 --- a/map-generator/assets/maps/surrounded/info.json +++ b/map-generator/assets/maps/surrounded/info.json @@ -41,5 +41,47 @@ "flag": "", "name": "Rugged Islander" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1976, + "width": 988, + "x": 0, + "y": 0 + }, + { + "height": 1976, + "width": 988, + "x": 988, + "y": 0 + } + ], + "4": [ + { + "height": 988, + "width": 988, + "x": 0, + "y": 0 + }, + { + "height": 988, + "width": 988, + "x": 988, + "y": 0 + }, + { + "height": 988, + "width": 988, + "x": 0, + "y": 988 + }, + { + "height": 988, + "width": 988, + "x": 988, + "y": 988 + } + ] + } } diff --git a/map-generator/assets/maps/tradersdream/info.json b/map-generator/assets/maps/tradersdream/info.json index bc1a8d4cc..c14927a43 100644 --- a/map-generator/assets/maps/tradersdream/info.json +++ b/map-generator/assets/maps/tradersdream/info.json @@ -66,5 +66,21 @@ "flag": "", "name": "Harborwick" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 960, + "width": 2200, + "x": 0, + "y": 0 + }, + { + "height": 960, + "width": 2200, + "x": 0, + "y": 960 + } + ] + } } diff --git a/resources/maps/aegean/manifest.json b/resources/maps/aegean/manifest.json index 71964495b..3f9519162 100644 --- a/resources/maps/aegean/manifest.json +++ b/resources/maps/aegean/manifest.json @@ -136,5 +136,21 @@ "coordinates": [1416, 1755], "name": "Carpathos" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 2000, + "width": 850, + "x": 0, + "y": 0 + }, + { + "height": 2000, + "width": 850, + "x": 850, + "y": 0 + } + ] + } } diff --git a/resources/maps/beringsea/manifest.json b/resources/maps/beringsea/manifest.json index ccd036da5..7e9b3464a 100644 --- a/resources/maps/beringsea/manifest.json +++ b/resources/maps/beringsea/manifest.json @@ -136,5 +136,21 @@ "flag": "ru", "name": "Magadan" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1600, + "width": 1375, + "x": 0, + "y": 0 + }, + { + "height": 1600, + "width": 1125, + "x": 1375, + "y": 0 + } + ] + } } diff --git a/resources/maps/beringstrait/manifest.json b/resources/maps/beringstrait/manifest.json index a5c3e6b23..6213c1e1e 100644 --- a/resources/maps/beringstrait/manifest.json +++ b/resources/maps/beringstrait/manifest.json @@ -26,5 +26,21 @@ "flag": "ru", "name": "Russia" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 916, + "width": 750, + "x": 0, + "y": 0 + }, + { + "height": 916, + "width": 750, + "x": 750, + "y": 0 + } + ] + } } diff --git a/resources/maps/bosphorusstraits/manifest.json b/resources/maps/bosphorusstraits/manifest.json index e7a090e5b..db673d280 100644 --- a/resources/maps/bosphorusstraits/manifest.json +++ b/resources/maps/bosphorusstraits/manifest.json @@ -126,5 +126,21 @@ "flag": "tr", "name": "Esenyurt" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 612, + "width": 500, + "x": 0, + "y": 0 + }, + { + "height": 612, + "width": 500, + "x": 500, + "y": 0 + } + ] + } } diff --git a/resources/maps/conakry/manifest.json b/resources/maps/conakry/manifest.json index 985d197dd..c90a9fc00 100644 --- a/resources/maps/conakry/manifest.json +++ b/resources/maps/conakry/manifest.json @@ -116,5 +116,21 @@ "flag": "gn", "name": "Dioumaya" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1000, + "width": 1290, + "x": 0, + "y": 0 + }, + { + "height": 1000, + "width": 1166, + "x": 1290, + "y": 0 + } + ] + } } diff --git a/resources/maps/falklandislands/manifest.json b/resources/maps/falklandislands/manifest.json index a6c8aa93a..7fec0b38c 100644 --- a/resources/maps/falklandislands/manifest.json +++ b/resources/maps/falklandislands/manifest.json @@ -76,5 +76,21 @@ "flag": "fk", "name": "San Carlos" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1400, + "width": 1050, + "x": 0, + "y": 0 + }, + { + "height": 1400, + "width": 1050, + "x": 1050, + "y": 0 + } + ] + } } diff --git a/resources/maps/gulfofstlawrence/manifest.json b/resources/maps/gulfofstlawrence/manifest.json index fcf309cae..91ed7f8a9 100644 --- a/resources/maps/gulfofstlawrence/manifest.json +++ b/resources/maps/gulfofstlawrence/manifest.json @@ -146,5 +146,27 @@ "flag": "ca_ns", "name": "Yarmouth" } - ] + ], + "teamGameSpawnAreas": { + "3": [ + { + "height": 500, + "width": 900, + "x": 0, + "y": 0 + }, + { + "height": 1348, + "width": 720, + "x": 900, + "y": 0 + }, + { + "height": 848, + "width": 900, + "x": 0, + "y": 500 + } + ] + } } diff --git a/resources/maps/pluto/manifest.json b/resources/maps/pluto/manifest.json index 1d5aed32c..e6033022d 100644 --- a/resources/maps/pluto/manifest.json +++ b/resources/maps/pluto/manifest.json @@ -96,5 +96,21 @@ "flag": "", "name": "Free Pluto State" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1300, + "width": 1050, + "x": 0, + "y": 0 + }, + { + "height": 1300, + "width": 1050, + "x": 1050, + "y": 0 + } + ] + } } diff --git a/resources/maps/straitofgibraltar/manifest.json b/resources/maps/straitofgibraltar/manifest.json index 4b2a1fa9a..7d9baa11e 100644 --- a/resources/maps/straitofgibraltar/manifest.json +++ b/resources/maps/straitofgibraltar/manifest.json @@ -48,5 +48,21 @@ "coordinates": [1555, 258], "name": "Andalusia" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 651, + "width": 2900, + "x": 0, + "y": 0 + }, + { + "height": 825, + "width": 2900, + "x": 0, + "y": 651 + } + ] + } } diff --git a/resources/maps/straitofhormuz/manifest.json b/resources/maps/straitofhormuz/manifest.json index 78e027e1f..ca01c0f65 100644 --- a/resources/maps/straitofhormuz/manifest.json +++ b/resources/maps/straitofhormuz/manifest.json @@ -116,5 +116,21 @@ "flag": "", "name": "Al Wakrah" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 700, + "width": 1300, + "x": 0, + "y": 500 + }, + { + "height": 500, + "width": 1800, + "x": 0, + "y": 0 + } + ] + } } diff --git a/resources/maps/surrounded/manifest.json b/resources/maps/surrounded/manifest.json index 90eb40b74..45b34a4d1 100644 --- a/resources/maps/surrounded/manifest.json +++ b/resources/maps/surrounded/manifest.json @@ -56,5 +56,47 @@ "flag": "", "name": "Rugged Islander" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 1976, + "width": 988, + "x": 0, + "y": 0 + }, + { + "height": 1976, + "width": 988, + "x": 988, + "y": 0 + } + ], + "4": [ + { + "height": 988, + "width": 988, + "x": 0, + "y": 0 + }, + { + "height": 988, + "width": 988, + "x": 988, + "y": 0 + }, + { + "height": 988, + "width": 988, + "x": 0, + "y": 988 + }, + { + "height": 988, + "width": 988, + "x": 988, + "y": 988 + } + ] + } } diff --git a/resources/maps/tradersdream/manifest.json b/resources/maps/tradersdream/manifest.json index f943bae52..0f82a12a2 100644 --- a/resources/maps/tradersdream/manifest.json +++ b/resources/maps/tradersdream/manifest.json @@ -81,5 +81,21 @@ "flag": "", "name": "Harborwick" } - ] + ], + "teamGameSpawnAreas": { + "2": [ + { + "height": 960, + "width": 2200, + "x": 0, + "y": 0 + }, + { + "height": 960, + "width": 2200, + "x": 0, + "y": 960 + } + ] + } } diff --git a/src/server/MapPlaylist.ts b/src/server/MapPlaylist.ts index d5d318b4d..098ab5b2d 100644 --- a/src/server/MapPlaylist.ts +++ b/src/server/MapPlaylist.ts @@ -131,6 +131,18 @@ const SPECIAL_TEAM_MAPS: ReadonlyMap = new Map([ [GameMapType.Baikal, 2], [GameMapType.FourIslands, 4], [GameMapType.Luna, 2], + [GameMapType.StraitOfGibraltar, 2], + [GameMapType.StraitOfHormuz, 2], + [GameMapType.Aegean, 2], + [GameMapType.BeringSea, 2], + [GameMapType.BeringStrait, 2], + [GameMapType.BosphorusStraits, 2], + [GameMapType.Conakry, 2], + [GameMapType.Pluto, 2], + [GameMapType.FalklandIslands, 2], + [GameMapType.TradersDream, 2], + [GameMapType.Surrounded, 4], + [GameMapType.GulfOfStLawrence, 3], ]); type ModifierKey =