From 877bb6a5bd54ea2eaec8a5499fb7c0485bd41612 Mon Sep 17 00:00:00 2001 From: real_tabasco_sauce Date: Sat, 14 Sep 2024 11:00:10 -0700 Subject: [PATCH] add placement options for many maps --- .../mods/public/maps/random/african_plains.js | 11 +++++++++- .../public/maps/random/african_plains.json | 9 +++++++- .../mods/public/maps/random/alpine_lakes.js | 11 +++++++++- .../mods/public/maps/random/alpine_lakes.json | 11 ++++++++-- .../public/maps/random/anatolian_plateau.js | 11 +++++++++- .../public/maps/random/anatolian_plateau.json | 9 +++++++- .../mods/public/maps/random/archipelago.js | 9 +++++++- .../mods/public/maps/random/archipelago.json | 9 +++++++- .../mods/public/maps/random/arctic_summer.js | 11 +++++++++- .../public/maps/random/arctic_summer.json | 9 +++++++- .../public/maps/random/ardennes_forest.js | 9 +++++++- .../public/maps/random/ardennes_forest.json | 8 ++++++- .../public/maps/random/atlas_mountains.js | 11 +++++++++- .../public/maps/random/atlas_mountains.json | 9 +++++++- .../public/maps/random/botswanan_haven.js | 11 +++++++++- .../public/maps/random/botswanan_haven.json | 10 +++++++-- .../data/mods/public/maps/random/continent.js | 9 +++++++- .../mods/public/maps/random/continent.json | 7 ++++++- .../public/maps/random/extinct_volcano.js | 9 +++++++- .../public/maps/random/extinct_volcano.json | 19 ++++++++++------- .../data/mods/public/maps/random/india.js | 11 +++++++++- .../data/mods/public/maps/random/india.json | 7 ++++++- binaries/data/mods/public/maps/random/lake.js | 10 ++++++++- .../data/mods/public/maps/random/lake.json | 6 +++++- .../data/mods/public/maps/random/lions_den.js | 2 +- .../data/mods/public/maps/random/mainland.js | 11 +++++++++- .../mods/public/maps/random/mainland.json | 9 +++++++- .../maps/random/neareastern_badlands.js | 9 +++++++- .../maps/random/neareastern_badlands.json | 6 +++++- .../public/maps/random/persian_highlands.js | 12 ++++++++++- .../public/maps/random/persian_highlands.json | 21 ++++++++++++------- .../public/maps/random/rhine_marshlands.js | 11 +++++++++- .../public/maps/random/rhine_marshlands.json | 9 +++++++- .../data/mods/public/maps/random/sahel.js | 11 +++++++++- .../data/mods/public/maps/random/sahel.json | 9 +++++++- .../data/mods/public/maps/random/syria.js | 9 +++++++- .../data/mods/public/maps/random/syria.json | 18 ++++++++++------ .../mods/public/maps/random/volcanic_lands.js | 11 +++++++++- .../public/maps/random/volcanic_lands.json | 7 ++++++- 39 files changed, 332 insertions(+), 59 deletions(-) diff --git a/binaries/data/mods/public/maps/random/african_plains.js b/binaries/data/mods/public/maps/random/african_plains.js index 7fa98ac531..0ccf674ea6 100644 --- a/binaries/data/mods/public/maps/random/african_plains.js +++ b/binaries/data/mods/public/maps/random/african_plains.js @@ -74,8 +74,17 @@ function* GenerateMap(mapSettings) const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/african_plains.json b/binaries/data/mods/public/maps/random/african_plains.json index 30f2b6e84f..53ee4e71b3 100644 --- a/binaries/data/mods/public/maps/random/african_plains.json +++ b/binaries/data/mods/public/maps/random/african_plains.json @@ -5,6 +5,13 @@ "Description" : "The central region of the vast continent of Africa, birthplace of humanity. Players start in a lush area teeming with vegetation and wildlife.", "SupportedBiomes": ["generic/savanna", "generic/sahara", "generic/nubia"], "Preview" : "african_plains.png", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/alpine_lakes.js b/binaries/data/mods/public/maps/random/alpine_lakes.js index cfaedca0a2..7cb8609f8c 100644 --- a/binaries/data/mods/public/maps/random/alpine_lakes.js +++ b/binaries/data/mods/public/maps/random/alpine_lakes.js @@ -38,8 +38,17 @@ function* GenerateMap(mapSettings) const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/alpine_lakes.json b/binaries/data/mods/public/maps/random/alpine_lakes.json index 36e5308058..df99c12772 100644 --- a/binaries/data/mods/public/maps/random/alpine_lakes.json +++ b/binaries/data/mods/public/maps/random/alpine_lakes.json @@ -3,8 +3,15 @@ "Name" : "Alpine Lakes", "Script" : "alpine_lakes.js", "Description" : "High Alpine mountains surrounding deep valleys strung with mountain streams and finger-like lakes.", - "CircularMap" : true, "Preview" : "alpine_lakes.png", - "SupportedBiomes": "alpine/" + "SupportedBiomes": "alpine/", + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/anatolian_plateau.js b/binaries/data/mods/public/maps/random/anatolian_plateau.js index 0de997ab1e..d383b2a11b 100644 --- a/binaries/data/mods/public/maps/random/anatolian_plateau.js +++ b/binaries/data/mods/public/maps/random/anatolian_plateau.js @@ -52,8 +52,17 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/anatolian_plateau.json b/binaries/data/mods/public/maps/random/anatolian_plateau.json index e70334c7d2..6f246a8893 100644 --- a/binaries/data/mods/public/maps/random/anatolian_plateau.json +++ b/binaries/data/mods/public/maps/random/anatolian_plateau.json @@ -4,6 +4,13 @@ "Script" : "anatolian_plateau.js", "Description" : "An indefensible open land with little wood and stone, representing the central basin of Asia Minor.", "Preview" : "anatolian_plateau.png", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/archipelago.js b/binaries/data/mods/public/maps/random/archipelago.js index b9072b93fe..c8ca86a436 100644 --- a/binaries/data/mods/public/maps/random/archipelago.js +++ b/binaries/data/mods/public/maps/random/archipelago.js @@ -76,7 +76,14 @@ function* GenerateMap() const islandRadius = scaleByMapSize(22, 31); - const [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); g_Map.log("Creating player islands"); for (let i = 0; i < numPlayers; ++i) diff --git a/binaries/data/mods/public/maps/random/archipelago.json b/binaries/data/mods/public/maps/random/archipelago.json index 270108b28e..cd955c8119 100644 --- a/binaries/data/mods/public/maps/random/archipelago.json +++ b/binaries/data/mods/public/maps/random/archipelago.json @@ -6,6 +6,13 @@ "Keywords": ["naval"], "Preview" : "archipelago.png", "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/arctic_summer.js b/binaries/data/mods/public/maps/random/arctic_summer.js index dd7ac34e95..45a71f604d 100644 --- a/binaries/data/mods/public/maps/random/arctic_summer.js +++ b/binaries/data/mods/public/maps/random/arctic_summer.js @@ -63,8 +63,17 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/arctic_summer.json b/binaries/data/mods/public/maps/random/arctic_summer.json index db2481eb3f..35128befb1 100644 --- a/binaries/data/mods/public/maps/random/arctic_summer.json +++ b/binaries/data/mods/public/maps/random/arctic_summer.json @@ -5,6 +5,13 @@ "Description" : "Summer has arrived to the cold regions of the north and with it have many animals, profiting from its milder climate. Wolves, ever present, have shed their winter clothes; deer, hares and muskox populate the plains. The last traces of winter are rapidly disappearing, only to reappear very soon.", "Keywords": [], "Preview" : "arctic_summer.png", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/ardennes_forest.js b/binaries/data/mods/public/maps/random/ardennes_forest.js index 5be5673372..c5c12bfa75 100644 --- a/binaries/data/mods/public/maps/random/ardennes_forest.js +++ b/binaries/data/mods/public/maps/random/ardennes_forest.js @@ -104,7 +104,14 @@ function* GenerateMap() } } - const [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.3)); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); function distanceToPlayers(x, z) { diff --git a/binaries/data/mods/public/maps/random/ardennes_forest.json b/binaries/data/mods/public/maps/random/ardennes_forest.json index d82212bf9c..57c55959df 100644 --- a/binaries/data/mods/public/maps/random/ardennes_forest.json +++ b/binaries/data/mods/public/maps/random/ardennes_forest.json @@ -5,6 +5,12 @@ "Description" : "Each player starts deep in the forest.\n\nThe Ardennes is a region of extensive forests, rolling hills and ridges formed within the Givetian Ardennes mountain range, primarily in modern day Belgium and Luxembourg. The region took its name from the ancient Silva, a vast forest in Roman times called Arduenna Silva.", "Keywords": ["multiplayer"], "CircularMap" : true, - "Preview" : "ardennes_forest.png" + "Preview" : "ardennes_forest.png", + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup" + ] } } diff --git a/binaries/data/mods/public/maps/random/atlas_mountains.js b/binaries/data/mods/public/maps/random/atlas_mountains.js index d94c94422c..4c2acf3537 100644 --- a/binaries/data/mods/public/maps/random/atlas_mountains.js +++ b/binaries/data/mods/public/maps/random/atlas_mountains.js @@ -60,8 +60,17 @@ function* GenerateMap() const clBaseResource = g_Map.createTileClass(); const clTreasure = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/atlas_mountains.json b/binaries/data/mods/public/maps/random/atlas_mountains.json index 880cc2bd7e..f6f78734c5 100644 --- a/binaries/data/mods/public/maps/random/atlas_mountains.json +++ b/binaries/data/mods/public/maps/random/atlas_mountains.json @@ -4,6 +4,13 @@ "Script" : "atlas_mountains.js", "Description" : "A rugged land with small room for buildings with scarce wood. Represents the mountain range in the Northwest Africa.", "Preview" : "atlas_mountains.png", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/botswanan_haven.js b/binaries/data/mods/public/maps/random/botswanan_haven.js index c76f39b192..24c753da57 100644 --- a/binaries/data/mods/public/maps/random/botswanan_haven.js +++ b/binaries/data/mods/public/maps/random/botswanan_haven.js @@ -66,8 +66,17 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/botswanan_haven.json b/binaries/data/mods/public/maps/random/botswanan_haven.json index 628afdacf6..7886fba62d 100644 --- a/binaries/data/mods/public/maps/random/botswanan_haven.json +++ b/binaries/data/mods/public/maps/random/botswanan_haven.json @@ -3,8 +3,14 @@ "Name" : "Botswanan Haven", "Script" : "botswanan_haven.js", "Description" : "Botswanan Africa during the wet season, a land which was arid and inhospitable just weeks before has come to life totally transformed. Herds of zebras graze amid the tall, lush grasses in which lions lie waiting, while in the shallow pools lurk fearsome crocodiles.", - "Keywords": [], + "Preview" : "botswanan_haven.png", "CircularMap" : true, - "Preview" : "botswanan_haven.png" + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/continent.js b/binaries/data/mods/public/maps/random/continent.js index 9cf324fd7a..56264851c7 100644 --- a/binaries/data/mods/public/maps/random/continent.js +++ b/binaries/data/mods/public/maps/random/continent.js @@ -86,7 +86,14 @@ function* GenerateMap() new TileClassPainter(clLand) ]); - const [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.25)); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.25), + fractionToTiles(0.1), + randomAngle(), + undefined); g_Map.log("Ensuring initial player land"); for (let i = 0; i < numPlayers; ++i) diff --git a/binaries/data/mods/public/maps/random/continent.json b/binaries/data/mods/public/maps/random/continent.json index 5c79044c1e..0fabf88cec 100644 --- a/binaries/data/mods/public/maps/random/continent.json +++ b/binaries/data/mods/public/maps/random/continent.json @@ -6,6 +6,11 @@ "Preview" : "continent.png", "Keywords": ["multiplayer"], "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/extinct_volcano.js b/binaries/data/mods/public/maps/random/extinct_volcano.js index 45143e1a2e..0c4f282769 100644 --- a/binaries/data/mods/public/maps/random/extinct_volcano.js +++ b/binaries/data/mods/public/maps/random/extinct_volcano.js @@ -79,7 +79,14 @@ function* GenerateMap() const playerMountainSize = defaultPlayerBaseRadius(); - const [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); g_Map.log("Creating CC mountains"); if (!isNomad()) diff --git a/binaries/data/mods/public/maps/random/extinct_volcano.json b/binaries/data/mods/public/maps/random/extinct_volcano.json index 04b647ecb3..3a12306c9b 100644 --- a/binaries/data/mods/public/maps/random/extinct_volcano.json +++ b/binaries/data/mods/public/maps/random/extinct_volcano.json @@ -1,11 +1,16 @@ { - "settings" : { - "Name" : "Extinct Volcano", - "Script" : "extinct_volcano.js", - "Description" : "[color=\"red\"]IMPORTANT NOTE: AI PLAYERS DO NOT WORK WITH THIS MAP[/color]\n\nA once fertile valley, desolated by the eruption of the long-dormant volcano in the heart of the region. Following years of empty, scorched deadness, signs of life started reappearing and spreading. Now the land is half-way to the full lushness of its former era. Alas, it is not to be: following a long stretch of drought, interminable rains have set in in the higher regions to the north. Water levels are rising at drastic levels, slowly forcing players to seek the high ground of the lesser, extinct volcanoes or the now again dormant great cone.", - "Keywords": ["trigger"], - "CircularMap" : true, - "Preview" : "extinctvolcano.png", + "settings": { + "Name": "Extinct Volcano", + "Script": "extinct_volcano.js", + "Description": "[color=\"red\"]IMPORTANT NOTE: AI PLAYERS DO NOT WORK WITH THIS MAP[/color]\n\nA once fertile valley, desolated by the eruption of the long-dormant volcano in the heart of the region. Following years of empty, scorched deadness, signs of life started reappearing and spreading. Now the land is half-way to the full lushness of its former era. Alas, it is not to be: following a long stretch of drought, interminable rains have set in in the higher regions to the north. Water levels are rising at drastic levels, slowly forcing players to seek the high ground of the lesser, extinct volcanoes or the now again dormant great cone.", + "Keywords": [ "trigger" ], + "CircularMap": true, + "Preview": "extinctvolcano.png", + "PlayerPlacements": [ + "circle", + "river", + "randomGroup" + ], "SeaLevelRise": { "Min": 0, "Max": 60, diff --git a/binaries/data/mods/public/maps/random/india.js b/binaries/data/mods/public/maps/random/india.js index 7f374402b6..96b1b19d36 100644 --- a/binaries/data/mods/public/maps/random/india.js +++ b/binaries/data/mods/public/maps/random/india.js @@ -44,8 +44,17 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, // No city patch diff --git a/binaries/data/mods/public/maps/random/india.json b/binaries/data/mods/public/maps/random/india.json index aa807dff07..41977ce5ed 100644 --- a/binaries/data/mods/public/maps/random/india.json +++ b/binaries/data/mods/public/maps/random/india.json @@ -5,6 +5,11 @@ "Description" : "Central India just before the monsoon season - a parched land awaits the life-bringing rain which is already two months late. Due to the extended dryness and scorching heat, only the largest lake remains. The hardy trees which have survived the climate are spread out, yet not too scarce.", "Preview" : "india.png", "Keywords": [], - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/lake.js b/binaries/data/mods/public/maps/random/lake.js index 19a0da814a..351fbe2c00 100644 --- a/binaries/data/mods/public/maps/random/lake.js +++ b/binaries/data/mods/public/maps/random/lake.js @@ -71,7 +71,15 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); - const [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); + const pattern = g_MapSettings.PlayerPlacement; + const teamDist = (pattern == 'river') ? .55 : .35; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(teamDist), + fractionToTiles(0.1), + randomAngle(), + undefined); g_Map.log("Preventing water in player territory"); for (let i = 0; i < numPlayers; ++i) diff --git a/binaries/data/mods/public/maps/random/lake.json b/binaries/data/mods/public/maps/random/lake.json index 6370c1f752..5e13566664 100644 --- a/binaries/data/mods/public/maps/random/lake.json +++ b/binaries/data/mods/public/maps/random/lake.json @@ -6,6 +6,10 @@ "Keywords": ["multiplayer"], "Preview" : "lake.png", "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river" + ] } } diff --git a/binaries/data/mods/public/maps/random/lions_den.js b/binaries/data/mods/public/maps/random/lions_den.js index 0ea8cde342..c9fce1599f 100644 --- a/binaries/data/mods/public/maps/random/lions_den.js +++ b/binaries/data/mods/public/maps/random/lions_den.js @@ -29,7 +29,7 @@ function* GenerateMap() createBases( ...playerPlacementByPattern( - "radial", + "circle", fractionToTiles(0.4), fractionToTiles(randFloat(0.05, 0.1)), startAngle, diff --git a/binaries/data/mods/public/maps/random/mainland.js b/binaries/data/mods/public/maps/random/mainland.js index 3cfc6d876b..c4224488c1 100644 --- a/binaries/data/mods/public/maps/random/mainland.js +++ b/binaries/data/mods/public/maps/random/mainland.js @@ -64,8 +64,17 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/mainland.json b/binaries/data/mods/public/maps/random/mainland.json index 64c871f32f..f6ba1fa34b 100644 --- a/binaries/data/mods/public/maps/random/mainland.json +++ b/binaries/data/mods/public/maps/random/mainland.json @@ -6,6 +6,13 @@ "Preview" : "mainland.png", "Keywords": ["multiplayer"], "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/neareastern_badlands.js b/binaries/data/mods/public/maps/random/neareastern_badlands.js index 6775280e78..0270a2d346 100644 --- a/binaries/data/mods/public/maps/random/neareastern_badlands.js +++ b/binaries/data/mods/public/maps/random/neareastern_badlands.js @@ -83,7 +83,14 @@ function* GenerateMap(mapSettings) const oasisRadius = scaleByMapSize(14, 40); - const [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); if (!isNomad()) for (let i = 0; i < numPlayers; ++i) diff --git a/binaries/data/mods/public/maps/random/neareastern_badlands.json b/binaries/data/mods/public/maps/random/neareastern_badlands.json index fa8bfcdabc..affbbc3773 100644 --- a/binaries/data/mods/public/maps/random/neareastern_badlands.json +++ b/binaries/data/mods/public/maps/random/neareastern_badlands.json @@ -6,6 +6,10 @@ "SupportedBiomes": ["generic/sahara", "generic/nubia", "generic/savanna"], "Keywords": ["multiplayer"], "Preview" : "neareastern_badlands.png", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river" + ] } } diff --git a/binaries/data/mods/public/maps/random/persian_highlands.js b/binaries/data/mods/public/maps/random/persian_highlands.js index 37e1506954..f09c788e0e 100644 --- a/binaries/data/mods/public/maps/random/persian_highlands.js +++ b/binaries/data/mods/public/maps/random/persian_highlands.js @@ -63,8 +63,18 @@ function* GenerateMap(mapSettings) const clBaseResource = g_Map.createTileClass(); const clCP = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const teamDist = (pattern == "river") ? .50 : .35; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(teamDist), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "BaseResourceClass": clBaseResource, "CityPatch": { "outerTerrain": tCity, diff --git a/binaries/data/mods/public/maps/random/persian_highlands.json b/binaries/data/mods/public/maps/random/persian_highlands.json index 5001e2bea5..23a5cbec87 100644 --- a/binaries/data/mods/public/maps/random/persian_highlands.json +++ b/binaries/data/mods/public/maps/random/persian_highlands.json @@ -1,11 +1,16 @@ { - "settings" : { - "Name" : "Persian Highlands", - "Script" : "persian_highlands.js", - "Description" : "A dry central plateau rich in minerals surrounded by rocky hills\n\nThe southern parts of Zagros Mountains were the heart of the Persian empires and population. Although the altitude is high, the southern parts are drier that the northern Zagros, leading to a semi-arid climate. Still there are some sparse oak forests in the higher grounds.", - "Keywords": ["multiplayer"], - "Preview" : "persian_highlands_summer.png", - "CircularMap" : true, - "SupportedBiomes": "persian_highlands/" + "settings": { + "Name": "Persian Highlands", + "Script": "persian_highlands.js", + "Description": "A dry central plateau rich in minerals surrounded by rocky hills\n\nThe southern parts of Zagros Mountains were the heart of the Persian empires and population. Although the altitude is high, the southern parts are drier that the northern Zagros, leading to a semi-arid climate. Still there are some sparse oak forests in the higher grounds.", + "Keywords": [ "multiplayer" ], + "Preview": "persian_highlands_summer.png", + "CircularMap": true, + "SupportedBiomes": "persian_highlands/", + "PlayerPlacements": [ + "circle", + "river", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/rhine_marshlands.js b/binaries/data/mods/public/maps/random/rhine_marshlands.js index aaab4cd330..de507f1e31 100644 --- a/binaries/data/mods/public/maps/random/rhine_marshlands.js +++ b/binaries/data/mods/public/maps/random/rhine_marshlands.js @@ -55,8 +55,17 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/rhine_marshlands.json b/binaries/data/mods/public/maps/random/rhine_marshlands.json index 37002fd36a..a75f73dc2c 100644 --- a/binaries/data/mods/public/maps/random/rhine_marshlands.json +++ b/binaries/data/mods/public/maps/random/rhine_marshlands.json @@ -4,6 +4,13 @@ "Script" : "rhine_marshlands.js", "Description" : "Shallow, passable wetlands with little room for building. Represents the lowlands of the Rhine basin in Europe.", "Preview" : "rhine_marshlands.png", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/sahel.js b/binaries/data/mods/public/maps/random/sahel.js index 5f1597b6b7..255b3d59d9 100644 --- a/binaries/data/mods/public/maps/random/sahel.js +++ b/binaries/data/mods/public/maps/random/sahel.js @@ -46,8 +46,17 @@ function* GenerateMap() const clFood = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/sahel.json b/binaries/data/mods/public/maps/random/sahel.json index a791f85144..9a363871ea 100644 --- a/binaries/data/mods/public/maps/random/sahel.json +++ b/binaries/data/mods/public/maps/random/sahel.json @@ -4,6 +4,13 @@ "Script" : "sahel.js", "Description" : "A somewhat open map with an abundance of food and mineral resources, while wood is somewhat scarce.", "Preview" : "sahel.png", - "CircularMap" : true + "CircularMap" : true, + "PlayerPlacements": [ + "circle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/syria.js b/binaries/data/mods/public/maps/random/syria.js index 1655d0026b..174e0873a7 100644 --- a/binaries/data/mods/public/maps/random/syria.js +++ b/binaries/data/mods/public/maps/random/syria.js @@ -52,7 +52,14 @@ function* GenerateMap() const clBaseResource = g_Map.createTileClass(); const clGrass = g_Map.createTileClass(); - const [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); g_Map.log("Creating big grass patches around the playerbases"); for (let i = 0; i < numPlayers; ++i) diff --git a/binaries/data/mods/public/maps/random/syria.json b/binaries/data/mods/public/maps/random/syria.json index 36467ca699..19c4200a76 100644 --- a/binaries/data/mods/public/maps/random/syria.json +++ b/binaries/data/mods/public/maps/random/syria.json @@ -1,9 +1,15 @@ { - "settings" : { - "Name" : "Syria", - "Script" : "syria.js", - "Description" : "Players start in a plains with slightly rolling highlands.", - "Preview" : "syria.png", - "CircularMap" : true + "settings": { + "Name": "Syria", + "Script": "syria.js", + "Description": "Players start in a plains with slightly rolling highlands.", + "Preview": "syria.png", + "CircularMap": true, + "PlayerPlacements": [ + "circle", + "river", + "randomGroup", + "stronghold" + ] } } diff --git a/binaries/data/mods/public/maps/random/volcanic_lands.js b/binaries/data/mods/public/maps/random/volcanic_lands.js index 8eb271abdb..e078a771b8 100644 --- a/binaries/data/mods/public/maps/random/volcanic_lands.js +++ b/binaries/data/mods/public/maps/random/volcanic_lands.js @@ -41,8 +41,17 @@ function* GenerateMap() const clMetal = g_Map.createTileClass(); const clBaseResource = g_Map.createTileClass(); + const pattern = g_MapSettings.PlayerPlacement; + const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); + placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), + "PlayerPlacement": [playerIDs, playerPosition], "PlayerTileClass": clPlayer, "BaseResourceClass": clBaseResource, "CityPatch": { diff --git a/binaries/data/mods/public/maps/random/volcanic_lands.json b/binaries/data/mods/public/maps/random/volcanic_lands.json index b08a612894..8d05022ee6 100644 --- a/binaries/data/mods/public/maps/random/volcanic_lands.json +++ b/binaries/data/mods/public/maps/random/volcanic_lands.json @@ -4,6 +4,11 @@ "Script" : "volcanic_lands.js", "Description" : "A charred dead land where players start around a smoking volcano.", "CircularMap" : true, - "Preview" : "volcanic_lands.png" + "Preview" : "volcanic_lands.png", + "PlayerPlacements": [ + "circle", + "river", + "stronghold" + ] } }