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 @@ -1,7 +1,7 @@ Engine.LoadLibrary("rmgen"); Engine.LoadLibrary("rmgen-common"); Engine.LoadLibrary("rmbiome"); - +Engine.LoadLibrary("rmgen2") setSelectedBiome(); const tMainTerrain = g_Terrains.mainTerrain; @@ -45,6 +45,11 @@ const numPlayers = getNumPlayers(); +initTileClasses(); +createArea( + new MapBoundsPlacer(), + new TileClassPainter(g_TileClasses.land)); + var clPlayer = g_Map.createTileClass(); var clHill = g_Map.createTileClass(); var clForest = g_Map.createTileClass(); @@ -54,44 +59,29 @@ var clFood = g_Map.createTileClass(); var clBaseResource = g_Map.createTileClass(); -placePlayerBases({ - "PlayerPlacement": playerPlacementCircle(fractionToTiles(0.35)), - "PlayerTileClass": clPlayer, - "BaseResourceClass": clBaseResource, - "CityPatch": { - "outerTerrain": tRoadWild, - "innerTerrain": tRoad - }, - "StartingAnimal": { - }, - "Berries": { - "template": oFruitBush - }, - "Mines": { - "types": [ - { "template": oMetalLarge }, - { "template": oStoneLarge } - ] - }, - "Trees": { - "template": oTree1, - "count": 5 - } - // No decoratives -}); +if (!isNomad()) +{ + let pattern = g_MapSettings.TeamPlacement || pickRandom(Object.keys(g_PlayerbaseTypes)); + createBasesByPattern( + pattern, + g_PlayerbaseTypes[pattern].distance, + g_PlayerbaseTypes[pattern].groupedDistance, + randomAngle()); +} + Engine.SetProgress(20); -createBumps(avoidClasses(clPlayer, 20)); +createBumps(avoidClasses(g_TileClasses.player, 20)); if (randBool()) - createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15), clHill, scaleByMapSize(3, 15)); + createHills([tCliff, tCliff, tHill], avoidClasses(g_TileClasses.player, 20, clHill, 15), clHill, scaleByMapSize(3, 15)); else - createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15), clHill, scaleByMapSize(3, 15)); + createMountains(tCliff, avoidClasses(g_TileClasses.player, 20, clHill, 15), clHill, scaleByMapSize(3, 15)); var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1)); createDefaultForests( [tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2], - avoidClasses(clPlayer, 20, clForest, 18, clHill, 0), + avoidClasses(g_TileClasses.player, 20, clForest, 18, clHill, 0), clForest, forestTrees); @@ -102,7 +92,7 @@ [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)], [[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]], [1, 1], - avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), + avoidClasses(clForest, 0, clHill, 0, clDirt, 5, g_TileClasses.player, 12), scaleByMapSize(15, 45), clDirt); @@ -110,7 +100,7 @@ createPatches( [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)], tTier4Terrain, - avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), + avoidClasses(clForest, 0, clHill, 0, clDirt, 5, g_TileClasses.player, 12), scaleByMapSize(15, 45), clDirt); Engine.SetProgress(55); @@ -120,7 +110,7 @@ oMetalSmall, oMetalLarge, clMetal, - avoidClasses(clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1) + avoidClasses(clForest, 1, g_TileClasses.player, scaleByMapSize(20, 35), clHill, 1) ); g_Map.log("Creating stone mines"); @@ -128,7 +118,7 @@ oStoneSmall, oStoneLarge, clRock, - avoidClasses(clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10) + avoidClasses(clForest, 1, g_TileClasses.player, scaleByMapSize(20, 35), clHill, 1, clMetal, 10) ); Engine.SetProgress(65); @@ -153,7 +143,7 @@ planetm * scaleByMapAreaAbsolute(13), planetm * scaleByMapAreaAbsolute(13) ], - avoidClasses(clForest, 0, clPlayer, 10, clHill, 0)); + avoidClasses(clForest, 0, g_TileClasses.player, 10, clHill, 0)); Engine.SetProgress(70); @@ -166,7 +156,7 @@ 3 * numPlayers, 3 * numPlayers ], - avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 20), + avoidClasses(g_TileClasses.player, 0, clPlayer, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 20), clFood); Engine.SetProgress(75); @@ -178,17 +168,17 @@ [ 3 * numPlayers ], - avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 10), + avoidClasses(clForest, 0, g_TileClasses.player, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 10), clFood); Engine.SetProgress(85); createStragglerTrees( [oTree1, oTree2, oTree4, oTree3], - avoidClasses(clForest, 8, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6, clFood, 1), + avoidClasses(clForest, 8, clHill, 1, g_TileClasses.player, 12, clMetal, 6, clRock, 6, clFood, 1), clForest, stragglerTrees); -placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); +placePlayersNomad(g_TileClasses.player, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)); g_Map.ExportMap(); 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,7 @@ "Preview" : "mainland.png", "Keywords": ["multiplayer"], "SupportedBiomes": "generic/", - "CircularMap" : true + "CircularMap" : true, + "TeamPlacements": ["radial", "line", "randomGroup", "stronghold"] } }