Index: binaries/data/mods/public/maps/random/african_plains.js =================================================================== --- binaries/data/mods/public/maps/random/african_plains.js +++ binaries/data/mods/public/maps/random/african_plains.js @@ -68,8 +68,17 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); +const pattern = g_MapSettings.TeamPlacement; +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": { Index: binaries/data/mods/public/maps/random/african_plains.json =================================================================== --- binaries/data/mods/public/maps/random/african_plains.json +++ binaries/data/mods/public/maps/random/african_plains.json @@ -5,6 +5,14 @@ "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, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/alpine_lakes.js =================================================================== --- binaries/data/mods/public/maps/random/alpine_lakes.js +++ binaries/data/mods/public/maps/random/alpine_lakes.js @@ -99,8 +99,17 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); +const pattern = g_MapSettings.TeamPlacement; +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": { Index: binaries/data/mods/public/maps/random/alpine_lakes.json =================================================================== --- binaries/data/mods/public/maps/random/alpine_lakes.json +++ binaries/data/mods/public/maps/random/alpine_lakes.json @@ -3,7 +3,15 @@ "Name" : "Alpine Lakes", "Script" : "alpine_lakes.js", "Description" : "High Alpine mountains surrounding deep valleys strung with mountain streams and finger-like lakes.", + "Preview" : "alpine_lakes.png", "CircularMap" : true, - "Preview" : "alpine_lakes.png" + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/anatolian_plateau.js =================================================================== --- binaries/data/mods/public/maps/random/anatolian_plateau.js +++ binaries/data/mods/public/maps/random/anatolian_plateau.js @@ -47,8 +47,17 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); +const pattern = g_MapSettings.TeamPlacement; +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": { Index: binaries/data/mods/public/maps/random/anatolian_plateau.json =================================================================== --- binaries/data/mods/public/maps/random/anatolian_plateau.json +++ binaries/data/mods/public/maps/random/anatolian_plateau.json @@ -4,6 +4,14 @@ "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, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/archipelago.js =================================================================== --- binaries/data/mods/public/maps/random/archipelago.js +++ binaries/data/mods/public/maps/random/archipelago.js @@ -66,7 +66,14 @@ var islandRadius = scaleByMapSize(22, 31); -var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); +const pattern = g_MapSettings.TeamPlacement; +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) Index: binaries/data/mods/public/maps/random/archipelago.json =================================================================== --- binaries/data/mods/public/maps/random/archipelago.json +++ binaries/data/mods/public/maps/random/archipelago.json @@ -6,6 +6,14 @@ "Keywords": ["naval"], "Preview" : "archipelago.png", "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/arctic_summer.js =================================================================== --- binaries/data/mods/public/maps/random/arctic_summer.js +++ binaries/data/mods/public/maps/random/arctic_summer.js @@ -57,8 +57,17 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); +const pattern = g_MapSettings.TeamPlacement; +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": { Index: binaries/data/mods/public/maps/random/arctic_summer.json =================================================================== --- binaries/data/mods/public/maps/random/arctic_summer.json +++ binaries/data/mods/public/maps/random/arctic_summer.json @@ -5,6 +5,14 @@ "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, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/atlas_mountains.js =================================================================== --- binaries/data/mods/public/maps/random/atlas_mountains.js +++ binaries/data/mods/public/maps/random/atlas_mountains.js @@ -52,8 +52,17 @@ var clBaseResource = g_Map.createTileClass(); var clTreasure = g_Map.createTileClass(); +const pattern = g_MapSettings.TeamPlacement; +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": { Index: binaries/data/mods/public/maps/random/atlas_mountains.json =================================================================== --- binaries/data/mods/public/maps/random/atlas_mountains.json +++ binaries/data/mods/public/maps/random/atlas_mountains.json @@ -4,6 +4,14 @@ "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, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/botswanan_haven.js =================================================================== --- binaries/data/mods/public/maps/random/botswanan_haven.js +++ binaries/data/mods/public/maps/random/botswanan_haven.js @@ -64,8 +64,17 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); +const pattern = g_MapSettings.TeamPlacement; +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": { Index: binaries/data/mods/public/maps/random/botswanan_haven.json =================================================================== --- binaries/data/mods/public/maps/random/botswanan_haven.json +++ binaries/data/mods/public/maps/random/botswanan_haven.json @@ -4,7 +4,15 @@ "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" + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/continent.js =================================================================== --- binaries/data/mods/public/maps/random/continent.js +++ binaries/data/mods/public/maps/random/continent.js @@ -76,7 +76,14 @@ new TileClassPainter(clLand) ]); -var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.25)); +const pattern = g_MapSettings.TeamPlacement; +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) Index: binaries/data/mods/public/maps/random/continent.json =================================================================== --- binaries/data/mods/public/maps/random/continent.json +++ binaries/data/mods/public/maps/random/continent.json @@ -6,6 +6,12 @@ "Preview" : "continent.png", "Keywords": ["multiplayer"], "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/frontier.json =================================================================== --- binaries/data/mods/public/maps/random/frontier.json +++ binaries/data/mods/public/maps/random/frontier.json @@ -6,6 +6,6 @@ "Preview" : "frontier.png", "SupportedBiomes": "generic/", "CircularMap" : true, - "TeamPlacements": ["groupedCircle", "groupedLines", "randomGroup", "stronghold"] + "TeamPlacements": ["groupedCircle", "alternatingCircle", "groupedLines", "randomGroup", "stronghold"] } } Index: binaries/data/mods/public/maps/random/harbor.js =================================================================== --- binaries/data/mods/public/maps/random/harbor.js +++ binaries/data/mods/public/maps/random/harbor.js @@ -25,10 +25,11 @@ const mapCenter = g_Map.getCenter(); const startAngle = randomAngle(); +const pattern = g_MapSettings.TeamPlacement; const [playerIDs, playerPosition] = createBases( ...playerPlacementByPattern( - "groupedCircle", + pattern, fractionToTiles(0.38), fractionToTiles(0.05), startAngle, Index: binaries/data/mods/public/maps/random/harbor.json =================================================================== --- binaries/data/mods/public/maps/random/harbor.json +++ binaries/data/mods/public/maps/random/harbor.json @@ -6,6 +6,10 @@ "Keywords": [], "Preview" : "harbor.png", "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle" + ] } } Index: binaries/data/mods/public/maps/random/lake.js =================================================================== --- binaries/data/mods/public/maps/random/lake.js +++ binaries/data/mods/public/maps/random/lake.js @@ -61,7 +61,14 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); -var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); +const pattern = g_MapSettings.TeamPlacement; +const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); g_Map.log("Preventing water in player territory"); for (let i = 0; i < numPlayers; ++i) Index: binaries/data/mods/public/maps/random/lake.json =================================================================== --- binaries/data/mods/public/maps/random/lake.json +++ binaries/data/mods/public/maps/random/lake.json @@ -6,6 +6,10 @@ "Keywords": ["multiplayer"], "Preview" : "lake.png", "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle" + ] } } Index: binaries/data/mods/public/maps/random/mainland.js =================================================================== --- binaries/data/mods/public/maps/random/mainland.js +++ binaries/data/mods/public/maps/random/mainland.js @@ -54,8 +54,18 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); + +const pattern = g_MapSettings.TeamPlacement; +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": { Index: binaries/data/mods/public/maps/random/mainland.json =================================================================== --- binaries/data/mods/public/maps/random/mainland.json +++ binaries/data/mods/public/maps/random/mainland.json @@ -6,6 +6,14 @@ "Preview" : "mainland.png", "Keywords": ["multiplayer"], "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle", + "river", + "groupedLines", + "randomGroup", + "stronghold" + ] } } Index: binaries/data/mods/public/maps/random/neareastern_badlands.js =================================================================== --- binaries/data/mods/public/maps/random/neareastern_badlands.js +++ binaries/data/mods/public/maps/random/neareastern_badlands.js @@ -73,7 +73,14 @@ var oasisRadius = scaleByMapSize(14, 40); -var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35)); +const pattern = g_MapSettings.TeamPlacement; +const [playerIDs, playerPosition] = + playerPlacementByPattern( + pattern, + fractionToTiles(0.35), + fractionToTiles(0.1), + randomAngle(), + undefined); if (!isNomad()) for (let i = 0; i < numPlayers; ++i) Index: binaries/data/mods/public/maps/random/neareastern_badlands.json =================================================================== --- binaries/data/mods/public/maps/random/neareastern_badlands.json +++ 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, + "TeamPlacements": [ + "groupedCircle", + "alternatingCircle" + ] } }