Index: ps/trunk/binaries/data/mods/public/maps/random/snowflake_searocks.js =================================================================== --- ps/trunk/binaries/data/mods/public/maps/random/snowflake_searocks.js (revision 20307) +++ ps/trunk/binaries/data/mods/public/maps/random/snowflake_searocks.js (revision 20308) @@ -1,1775 +1,530 @@ RMS.LoadLibrary("rmgen"); RMS.LoadLibrary("rmbiome"); setSelectedBiome(); const tMainTerrain = g_Terrains.mainTerrain; const tForestFloor1 = g_Terrains.forestFloor1; const tForestFloor2 = g_Terrains.forestFloor2; const tCliff = g_Terrains.cliff; const tTier1Terrain = g_Terrains.tier1Terrain; const tTier2Terrain = g_Terrains.tier2Terrain; const tTier3Terrain = g_Terrains.tier3Terrain; const tHill = g_Terrains.mainTerrain; const tRoad = g_Terrains.road; const tRoadWild = g_Terrains.roadWild; const tTier4Terrain = g_Terrains.tier4Terrain; const tWater = g_Terrains.water; const oTree1 = g_Gaia.tree1; const oTree2 = g_Gaia.tree2; const oTree3 = g_Gaia.tree3; const oTree4 = g_Gaia.tree4; const oTree5 = g_Gaia.tree5; const oFruitBush = g_Gaia.fruitBush; const oMainHuntableAnimal = g_Gaia.mainHuntableAnimal; const oSecondaryHuntableAnimal = g_Gaia.secondaryHuntableAnimal; const oStoneLarge = g_Gaia.stoneLarge; const oStoneSmall = g_Gaia.stoneSmall; const oMetalLarge = g_Gaia.metalLarge; const aGrass = g_Decoratives.grass; const aGrassShort = g_Decoratives.grassShort; const aRockLarge = g_Decoratives.rockLarge; const aRockMedium = g_Decoratives.rockMedium; const aBushMedium = g_Decoratives.bushMedium; const aBushSmall = g_Decoratives.bushSmall; const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2]; const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1]; InitMap(); const numPlayers = getNumPlayers(); const mapSize = getMapSize(); -const mapArea = mapSize*mapSize; - -log(mapSize); var clPlayer = createTileClass(); var clHill = createTileClass(); var clForest = createTileClass(); var clDirt = createTileClass(); var clRock = createTileClass(); var clMetal = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); -var clSettlement = createTileClass(); var clLand = createTileClass(); -initTerrain(tWater); +const playerIslandRadius = scaleByMapSize(15, 30); +const islandHeight = 20; -const radius = scaleByMapSize(15,30); -const cliffRadius = 2; -const elevation = 20; +const islandBetweenPlayerAndCenterDist = 0.16; +const islandBetweenPlayerAndCenterRadius = 0.81; +const centralIslandRadius = 0.36; var [playerIDs, playerX, playerZ, playerAngle, startAngle] = radialPlayerPlacement(); -// Creating other islands var numIslands = 0; -//**************************** -//---------------------------- -//Tiny and Small Size -//---------------------------- -//**************************** -if ((mapSize == 128)||(mapSize == 192)){ - //2 PLAYERS - //----------------- - //----------------- - if (numPlayers == 2){ - numIslands = 4*numPlayers+1; - var IslandX = new Array(numIslands); - var IslandZ = new Array(numIslands); - var isConnected = new Array(numIslands); - for (var q=0; q 4){ - numIslands = numPlayers + 1; - var IslandX = new Array(numIslands); - var IslandZ = new Array(numIslands); - var isConnected = new Array(numIslands); - for (var q=0; q 4){ - numIslands = 2*numPlayers; - var IslandX = new Array(numIslands); - var IslandZ = new Array(numIslands); - var isConnected = new Array(numIslands); - for (var q=0; q 383){ - //2,3,4,5 PLAYERS - //----------------- - //----------------- - if ((numPlayers == 2)||(numPlayers == 3)||(numPlayers == 4)||(numPlayers == 5)){ - numIslands = 4*numPlayers+1; - var IslandX = new Array(numIslands); - var IslandZ = new Array(numIslands); - var isConnected = new Array(numIslands); - for (var q=0; q = 5 || z < Math.min(islandZ[m], islandZ[n]) || z > Math.max(islandZ[m], islandZ[n])) + continue; + + addToClass(ix, iz, clLand); + + let height; + let tileClass; + + let f = 3 - dis; + if (f > 0) + { + height = islandHeight; + tileClass = dis < 2 ? tHill : tCliff; + } + else + { + height = islandHeight + 10 * f; + tileClass = tCliff; + } + + if (getHeight(ix, iz) < height) { - var a = IslandZ[m]-IslandZ[n]; - var b = IslandX[n]-IslandX[m]; - var c = (IslandZ[m]*(IslandX[m]-IslandX[n]))-(IslandX[m]*(IslandZ[m]-IslandZ[n])); - var dis = abs(a*ix + b*iz + c)/sqrt(a*a + b*b); - var k = (a*ix + b*iz + c)/(a*a + b*b); - var y = iz-(b*k); - if((dis < 5)&&(y <= Math.max(IslandZ[m],IslandZ[n]))&&(y >= Math.min(IslandZ[m],IslandZ[n]))) - { - if (dis < 3) - { - var h = 20; - if (dis < 2) - var t = tHill; - else - var t = tCliff; - addToClass(ix, iz, clLand); - } - else - { - var h = 50 - 10 * dis; - var t = tCliff; - addToClass(ix, iz, clLand); - } - - if (getHeight(ix, iz)