diff --git a/binaries/data/mods/public/maps/random/alpine_valley.js b/binaries/data/mods/public/maps/random/alpine_valley.js index b23f3ed80b..ce42c161a5 100644 --- a/binaries/data/mods/public/maps/random/alpine_valley.js +++ b/binaries/data/mods/public/maps/random/alpine_valley.js @@ -312,6 +312,17 @@ while (possibleEdges.length > 0) continue; } + //we don't want ranges that are longer than half of the map's size + if ((((points[possibleEdges[index][0]][0] - points[possibleEdges[index][1]][0]) * + (points[possibleEdges[index][0]][0] - points[possibleEdges[index][1]][0])) + + ((points[possibleEdges[index][0]][1] - points[possibleEdges[index][1]][1]) * + (points[possibleEdges[index][0]][1] - points[possibleEdges[index][1]][1]))) > + mapArea) + { + possibleEdges.splice(index,1); + continue; + } + //dfs var q = [possibleEdges[index][0]]; diff --git a/binaries/data/mods/public/maps/random/archipelago.js b/binaries/data/mods/public/maps/random/archipelago.js index 4968b47700..fe46e89f46 100644 --- a/binaries/data/mods/public/maps/random/archipelago.js +++ b/binaries/data/mods/public/maps/random/archipelago.js @@ -5,50 +5,50 @@ TILE_CENTERED_HEIGHT_MAP = true; //random terrain textures var random_terrain = randomizeBiome(); -var tMainTerrain = rBiomeT1(); -var tForestFloor1 = rBiomeT2(); -var tForestFloor2 = rBiomeT3(); -var tCliff = rBiomeT4(); -var tTier1Terrain = rBiomeT5(); -var tTier2Terrain = rBiomeT6(); -var tTier3Terrain = rBiomeT7(); -var tHill = rBiomeT8(); -var tTier4Terrain = rBiomeT9(); -var tRoad = rBiomeT10(); -var tRoadWild = rBiomeT11(); -var tTier5Terrain = rBiomeT12(); -var tShoreBlend = rBiomeT13(); -var tShore = rBiomeT14(); -var tWater = rBiomeT15(); +const tMainTerrain = rBiomeT1(); +const tForestFloor1 = rBiomeT2(); +const tForestFloor2 = rBiomeT3(); +const tCliff = rBiomeT4(); +const tTier1Terrain = rBiomeT5(); +const tTier2Terrain = rBiomeT6(); +const tTier3Terrain = rBiomeT7(); +const tHill = rBiomeT8(); +const tTier4Terrain = rBiomeT9(); +const tRoad = rBiomeT10(); +const tRoadWild = rBiomeT11(); +const tTier5Terrain = rBiomeT12(); +const tShoreBlend = rBiomeT13(); +const tShore = rBiomeT14(); +const tWater = rBiomeT15(); // gaia entities -var oTree1 = rBiomeE1(); -var oTree2 = rBiomeE2(); -var oTree3 = rBiomeE3(); -var oTree4 = rBiomeE4(); -var oTree5 = rBiomeE5(); -var oFruitBush = rBiomeE6(); -var oChicken = rBiomeE7(); -var oMainHuntableAnimal = rBiomeE8(); -var oFish = rBiomeE9(); -var oSecondaryHuntableAnimal = rBiomeE10(); -var oStoneLarge = rBiomeE11(); -var oStoneSmall = rBiomeE12(); -var oMetalLarge = rBiomeE13(); -var oWood = "gaia/special_treasure_wood"; +const oTree1 = rBiomeE1(); +const oTree2 = rBiomeE2(); +const oTree3 = rBiomeE3(); +const oTree4 = rBiomeE4(); +const oTree5 = rBiomeE5(); +const oFruitBush = rBiomeE6(); +const oChicken = rBiomeE7(); +const oMainHuntableAnimal = rBiomeE8(); +const oFish = rBiomeE9(); +const oSecondaryHuntableAnimal = rBiomeE10(); +const oStoneLarge = rBiomeE11(); +const oStoneSmall = rBiomeE12(); +const oMetalLarge = rBiomeE13(); +const oWood = "gaia/special_treasure_wood"; // decorative props -var aGrass = rBiomeA1(); -var aGrassShort = rBiomeA2(); -var aReeds = rBiomeA3(); -var aLillies = rBiomeA4(); -var aRockLarge = rBiomeA5(); -var aRockMedium = rBiomeA6(); -var aBushMedium = rBiomeA7(); -var aBushSmall = rBiomeA8(); +const aGrass = rBiomeA1(); +const aGrassShort = rBiomeA2(); +const aReeds = rBiomeA3(); +const aLillies = rBiomeA4(); +const aRockLarge = rBiomeA5(); +const aRockMedium = rBiomeA6(); +const aBushMedium = rBiomeA7(); +const aBushSmall = rBiomeA8(); -var pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2]; -var pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1]; +const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2]; +const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1]; const BUILDING_ANGlE = -PI/4; // initialize map diff --git a/binaries/data/mods/public/maps/random/cantabrian_highlands.js b/binaries/data/mods/public/maps/random/cantabrian_highlands.js index a4b2c39811..42c09645d7 100644 --- a/binaries/data/mods/public/maps/random/cantabrian_highlands.js +++ b/binaries/data/mods/public/maps/random/cantabrian_highlands.js @@ -29,9 +29,9 @@ const oChicken = "gaia/fauna_chicken"; const oDeer = "gaia/fauna_deer"; const oFish = "gaia/fauna_fish"; const oSheep = "gaia/fauna_sheep"; -const oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -const oStoneSmall = "gaia/geology_stone_mediterranean"; -const oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; +const oStoneLarge = "gaia/geology_stonemine_temperate_quarry"; +const oStoneSmall = "gaia/geology_stone_temperate"; +const oMetalLarge = "gaia/geology_metal_temperate_slabs"; // decorative props const aGrass = "actor|props/flora/grass_soft_large_tall.xml"; @@ -374,7 +374,7 @@ for (var i = 0; i < sizes.length; i++) scaleByMapSize(15, 45) ); } -tGrassPatchBlend + RMS.SetProgress(50); log("Creating stone mines..."); diff --git a/binaries/data/mods/public/maps/random/canyon.js b/binaries/data/mods/public/maps/random/canyon.js index d1936035e1..f69653bc37 100644 --- a/binaries/data/mods/public/maps/random/canyon.js +++ b/binaries/data/mods/public/maps/random/canyon.js @@ -1,55 +1,54 @@ RMS.LoadLibrary("rmgen"); - //random terrain textures -var rt = randomizeBiome(); +var random_terrain = randomizeBiome(); -var tGrass = rBiomeT1(); -var tGrassPForest = rBiomeT2(); -var tGrassDForest = rBiomeT3(); -var tCliff = rBiomeT4(); -var tGrassA = rBiomeT5(); -var tGrassB = rBiomeT6(); -var tGrassC = rBiomeT7(); -var tHill = rBiomeT8(); -var tDirt = rBiomeT9(); -var tRoad = rBiomeT10(); -var tRoadWild = rBiomeT11(); -var tGrassPatch = rBiomeT12(); -var tShoreBlend = rBiomeT13(); -var tShore = rBiomeT14(); -var tWater = rBiomeT15(); +const tMainTerrain = rBiomeT1(); +const tForestFloor1 = rBiomeT2(); +const tForestFloor2 = rBiomeT3(); +const tCliff = rBiomeT4(); +const tTier1Terrain = rBiomeT5(); +const tTier2Terrain = rBiomeT6(); +const tTier3Terrain = rBiomeT7(); +const tHill = rBiomeT8(); +const tDirt = rBiomeT9(); +const tRoad = rBiomeT10(); +const tRoadWild = rBiomeT11(); +const tTier4Terrain = rBiomeT12(); +const tShoreBlend = rBiomeT13(); +const tShore = rBiomeT14(); +const tWater = rBiomeT15(); // gaia entities -var oOak = rBiomeE1(); -var oOakLarge = rBiomeE2(); -var oApple = rBiomeE3(); -var oPine = rBiomeE4(); -var oAleppoPine = rBiomeE5(); -var oBerryBush = rBiomeE6(); -var oChicken = rBiomeE7(); -var oDeer = rBiomeE8(); -var oFish = rBiomeE9(); -var oSheep = rBiomeE10(); -var oStoneLarge = rBiomeE11(); -var oStoneSmall = rBiomeE12(); -var oMetalLarge = rBiomeE13(); -var oWood = "gaia/special_treasure_wood"; -var oFood = "gaia/special_treasure_food_bin"; +const oTree1 = rBiomeE1(); +const oTree2 = rBiomeE2(); +const oTree3 = rBiomeE3(); +const oTree4 = rBiomeE4(); +const oTree5 = rBiomeE5(); +const oFruitBush = rBiomeE6(); +const oChicken = rBiomeE7(); +const oMainHuntableAnimal = rBiomeE8(); +const oFish = rBiomeE9(); +const oSecondaryHuntableAnimal = rBiomeE10(); +const oStoneLarge = rBiomeE11(); +const oStoneSmall = rBiomeE12(); +const oMetalLarge = rBiomeE13(); +const oWood = "gaia/special_treasure_wood"; +const oFood = "gaia/special_treasure_food_bin"; // decorative props -var aGrass = rBiomeA1(); -var aGrassShort = rBiomeA2(); -var aReeds = rBiomeA3(); -var aLillies = rBiomeA4(); -var aRockLarge = rBiomeA5(); -var aRockMedium = rBiomeA6(); -var aBushMedium = rBiomeA7(); -var aBushSmall = rBiomeA8(); -var aTree = rBiomeA9(); +const aGrass = rBiomeA1(); +const aGrassShort = rBiomeA2(); +const aReeds = rBiomeA3(); +const aLillies = rBiomeA4(); +const aRockLarge = rBiomeA5(); +const aRockMedium = rBiomeA6(); +const aBushMedium = rBiomeA7(); +const aBushSmall = rBiomeA8(); +const aTree = rBiomeA9(); -var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; -var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; +const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2]; +const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1]; const BUILDING_ANGlE = -PI/4; // initialize map @@ -83,7 +82,7 @@ for (var ix = 0; ix < mapSize; ix++) { var x = ix / (mapSize + 1.0); var z = iz / (mapSize + 1.0); - placeTerrain(ix, iz, tGrass); + placeTerrain(ix, iz, tMainTerrain); } } @@ -96,7 +95,7 @@ var lSize = sqrt(sqrt(sqrt(scaleByMapSize(1, 6)))); var placer = new ClumpPlacer(mapArea * 0.065 * lSize, 0.7, 0.1, 10, ix, iz); var terrainPainter = new LayeredPainter( - [tGrass, tGrass], // terrains + [tMainTerrain, tMainTerrain], // terrains [3] // widths ); var elevationPainter = new SmoothElevationPainter( @@ -146,7 +145,7 @@ for (var i = 0; i < numPlayers; i++) // create the hill var placer = new ClumpPlacer(hillSize, 0.65, 0.1, 10, ix, iz); var terrainPainter = new LayeredPainter( - [tGrass, tGrass], // terrains + [tMainTerrain, tMainTerrain], // terrains [cliffRadius] // widths ); var elevationPainter = new SmoothElevationPainter( @@ -179,7 +178,7 @@ for (var i = 0; i < numPlayers; i++) var bbX = round(fx + bbDist * cos(bbAngle)); var bbZ = round(fz + bbDist * sin(bbAngle)); group = new SimpleGroup( - [new SimpleObject(oBerryBush, 5,5, 0,3)], + [new SimpleObject(oFruitBush, 5,5, 0,3)], true, clBaseResource, bbX, bbZ ); createObjectGroup(group, 0); @@ -216,7 +215,7 @@ for (var i = 0; i < numPlayers; i++) var tX = round(fx + tDist * cos(tAngle)); var tZ = round(fz + tDist * sin(tAngle)); group = new SimpleGroup( - [new SimpleObject(oOak, num, num, 0,4)], + [new SimpleObject(oTree1, num, num, 0,4)], false, clBaseResource, tX, tZ ); createObjectGroup(group, 0, avoidClasses(clBaseResource,2)); @@ -239,7 +238,7 @@ for (var i = 0; i < numPlayers; i++) // create the city patch var cityRadius = radius/2; placer = new ClumpPlacer(PI*cityRadius*cityRadius, 0.6, 0.3, 10, fractionToTiles(playerX[i]), fractionToTiles(playerZ[i])); - var painter = new LayeredPainter([tGrass, tGrass], [1]); + var painter = new LayeredPainter([tMainTerrain, tMainTerrain], [1]); createArea(placer, [painter, paintClass(clPlayer)], null); } @@ -256,7 +255,7 @@ for (var i = 0; i < scaleByMapSize(9,16); i++) var iz2 = randInt(1, mapSize - 1); var placer = new PathPlacer(ix, iz, ix2, iz2, scaleByMapSize(11,16), 0.4, 3*(scaleByMapSize(1,4)), 0.1, 0); var terrainPainter = new LayeredPainter( - [tGrass, tGrass], // terrains + [tMainTerrain, tMainTerrain], // terrains [3] // widths ); var elevationPainter = new SmoothElevationPainter( @@ -267,14 +266,14 @@ for (var i = 0; i < scaleByMapSize(9,16); i++) createArea(placer, [terrainPainter, elevationPainter, paintClass(clHill2)], avoidClasses(clPlayer, 6, clHill2, 3, clHill, 2)); } -for (var g = 0; g < scaleByMapSize(10,40); g++) +for (var g = 0; g < scaleByMapSize(5,30); g++) { var tx = randInt(1, mapSize - 1); var tz = randInt(1, mapSize - 1); placer = new ClumpPlacer(mapArea * 0.01 * lSize, 0.7, 0.1, 10, tx, tz); terrainPainter = new LayeredPainter( - [tGrass, tGrass], // terrains + [tMainTerrain, tMainTerrain], // terrains [3] // widths ); elevationPainter = new SmoothElevationPainter( @@ -312,7 +311,7 @@ for (var g = 0; g < scaleByMapSize(10,40); g++) var placer = new PathPlacer(tx, tz, mapSize*playerX[p1], mapSize*playerZ[p1], scaleByMapSize(11,17), 0.4, 3*(scaleByMapSize(1,4)), 0.1, 0.1); var terrainPainter = new LayeredPainter( - [tGrass, tGrass], // terrains + [tMainTerrain, tMainTerrain], // terrains [3] // widths ); var elevationPainter = new SmoothElevationPainter( @@ -324,7 +323,7 @@ for (var g = 0; g < scaleByMapSize(10,40); g++) var placer = new PathPlacer(tx, tz, mapSize*playerX[p2], mapSize*playerZ[p2], scaleByMapSize(11,17), 0.4, 3*(scaleByMapSize(1,4)), 0.1, 0.1); var terrainPainter = new LayeredPainter( - [tGrass, tGrass], // terrains + [tMainTerrain, tMainTerrain], // terrains [3] // widths ); var elevationPainter = new SmoothElevationPainter( @@ -420,7 +419,7 @@ createAreas( log("Creating hills..."); placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1); terrainPainter = new LayeredPainter( - [tCliff, tGrass], // terrains + [tCliff, tMainTerrain], // terrains [2] // widths ); elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 40, 2); @@ -432,23 +431,23 @@ createAreas( ); // calculate desired number of trees for map (based on size) -if (rt == 6) +if (random_terrain == 6) { -var MIN_TREES = 200; -var MAX_TREES = 1250; -var P_FOREST = 0.02; + var MIN_TREES = 200; + var MAX_TREES = 1250; + var P_FOREST = 0.02; } -else if (rt == 7) +else if (random_terrain == 7) { -var MIN_TREES = 1000; -var MAX_TREES = 6000; -var P_FOREST = 0.6; + var MIN_TREES = 1000; + var MAX_TREES = 6000; + var P_FOREST = 0.6; } else { -var MIN_TREES = 500; -var MAX_TREES = 3000; -var P_FOREST = 0.7; + var MIN_TREES = 500; + var MAX_TREES = 3000; + var P_FOREST = 0.7; } var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES); var numForest = totalTrees * P_FOREST; @@ -457,11 +456,11 @@ var numStragglers = totalTrees * (1.0 - P_FOREST); // create forests log("Creating forests..."); var types = [ - [[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]], - [[tGrassPForest, tGrass, pForestP], [tGrassPForest, pForestP]] + [[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]], + [[tForestFloor1, tMainTerrain, pForest2], [tForestFloor1, pForest2]] ]; // some variation -if (rt == 6) +if (random_terrain == 6) { var size = numForest / (0.5 * scaleByMapSize(2,8) * numPlayers); } @@ -493,7 +492,7 @@ for (var i = 0; i < sizes.length; i++) { placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5); painter = new LayeredPainter( - [[tGrass,tGrassA],[tGrassA,tGrassB], [tGrassB,tGrassC]], // terrains + [[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]], // terrains [1,1] // widths ); createAreas( @@ -510,7 +509,7 @@ var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80) for (var i = 0; i < sizes.length; i++) { placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5); - painter = new TerrainPainter(tGrassPatch); + painter = new TerrainPainter(tTier4Terrain); createAreas( placer, painter, @@ -588,7 +587,7 @@ RMS.SetProgress(70); // create deer log("Creating deer..."); group = new SimpleGroup( - [new SimpleObject(oDeer, 5,7, 0,4)], + [new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)], true, clFood ); createObjectGroups(group, 0, @@ -596,10 +595,10 @@ createObjectGroups(group, 0, 3 * numPlayers, 50 ); -// create berries -log("Creating berries..."); +// create fruits +log("Creating fruits..."); group = new SimpleGroup( - [new SimpleObject(oBerryBush, 5,7, 0,4)], + [new SimpleObject(oFruitBush, 5,7, 0,4)], true, clFood ); createObjectGroups(group, 0, @@ -612,7 +611,7 @@ RMS.SetProgress(75); // create sheep log("Creating sheep..."); group = new SimpleGroup( - [new SimpleObject(oSheep, 2,3, 0,2)], + [new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)], true, clFood ); createObjectGroups(group, 0, @@ -625,7 +624,7 @@ RMS.SetProgress(85); // create straggler trees log("Creating straggler trees..."); -var types = [oOak, oOakLarge, oPine, oApple]; // some variation +var types = [oTree1, oTree2, oTree4, oTree3]; // some variation var num = floor(numStragglers / types.length); for (var i = 0; i < types.length; ++i) { @@ -640,7 +639,7 @@ for (var i = 0; i < types.length; ++i) } var planetm = 1; -if (rt==7) +if (random_terrain==7) { planetm = 8; } @@ -690,15 +689,15 @@ for (var i = 0; i < randInt(3,8); i++) placeObject(fx+randFloat(-7,7), fz+randFloat(-7,7), oFood, 0, randFloat(0, TWO_PI)) } -rt = randInt(1,3) -if (rt==1){ -setSkySet("cirrus"); +random_terrain = randInt(1,3) +if (random_terrain==1){ + setSkySet("cirrus"); } -else if (rt ==2){ -setSkySet("cumulus"); +else if (random_terrain ==2){ + setSkySet("cumulus"); } -else if (rt ==3){ -setSkySet("sunny"); +else if (random_terrain ==3){ + setSkySet("sunny"); } setSunRotation(randFloat(0, TWO_PI)); setSunElevation(randFloat(PI/ 5, PI / 3)); diff --git a/binaries/data/mods/public/maps/random/continent.js b/binaries/data/mods/public/maps/random/continent.js index a435b5fa1e..122aa08703 100644 --- a/binaries/data/mods/public/maps/random/continent.js +++ b/binaries/data/mods/public/maps/random/continent.js @@ -1,51 +1,51 @@ RMS.LoadLibrary("rmgen"); //random terrain textures -var rt = randomizeBiome(); +var random_terrain = randomizeBiome(); -var tGrass = rBiomeT1(); -var tGrassPForest = rBiomeT2(); -var tGrassDForest = rBiomeT3(); -var tCliff = rBiomeT4(); -var tGrassA = rBiomeT5(); -var tGrassB = rBiomeT6(); -var tGrassC = rBiomeT7(); -var tHill = rBiomeT8(); -var tDirt = rBiomeT9(); -var tRoad = rBiomeT10(); -var tRoadWild = rBiomeT11(); -var tGrassPatch = rBiomeT12(); -var tShoreBlend = rBiomeT13(); -var tShore = rBiomeT14(); -var tWater = rBiomeT15(); +const tMainTerrain = rBiomeT1(); +const tForestFloor1 = rBiomeT2(); +const tForestFloor2 = rBiomeT3(); +const tCliff = rBiomeT4(); +const tTier1Terrain = rBiomeT5(); +const tTier2Terrain = rBiomeT6(); +const tTier3Terrain = rBiomeT7(); +const tHill = rBiomeT8(); +const tDirt = rBiomeT9(); +const tRoad = rBiomeT10(); +const tRoadWild = rBiomeT11(); +const tTier4Terrain = rBiomeT12(); +const tShoreBlend = rBiomeT13(); +const tShore = rBiomeT14(); +const tWater = rBiomeT15(); // gaia entities -var oOak = rBiomeE1(); -var oOakLarge = rBiomeE2(); -var oApple = rBiomeE3(); -var oPine = rBiomeE4(); -var oAleppoPine = rBiomeE5(); -var oBerryBush = rBiomeE6(); -var oChicken = rBiomeE7(); -var oDeer = rBiomeE8(); -var oFish = rBiomeE9(); -var oSheep = rBiomeE10(); -var oStoneLarge = rBiomeE11(); -var oStoneSmall = rBiomeE12(); -var oMetalLarge = rBiomeE13(); +const oTree1 = rBiomeE1(); +const oTree2 = rBiomeE2(); +const oTree3 = rBiomeE3(); +const oTree4 = rBiomeE4(); +const oTree5 = rBiomeE5(); +const oFruitBush = rBiomeE6(); +const oChicken = rBiomeE7(); +const oMainHuntableAnimal = rBiomeE8(); +const oFish = rBiomeE9(); +const oSecondaryHuntableAnimal = rBiomeE10(); +const oStoneLarge = rBiomeE11(); +const oStoneSmall = rBiomeE12(); +const oMetalLarge = rBiomeE13(); // decorative props -var aGrass = rBiomeA1(); -var aGrassShort = rBiomeA2(); -var aReeds = rBiomeA3(); -var aLillies = rBiomeA4(); -var aRockLarge = rBiomeA5(); -var aRockMedium = rBiomeA6(); -var aBushMedium = rBiomeA7(); -var aBushSmall = rBiomeA8(); +const aGrass = rBiomeA1(); +const aGrassShort = rBiomeA2(); +const aReeds = rBiomeA3(); +const aLillies = rBiomeA4(); +const aRockLarge = rBiomeA5(); +const aRockMedium = rBiomeA6(); +const aBushMedium = rBiomeA7(); +const aBushSmall = rBiomeA8(); -var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; -var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; +const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2]; +const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1]; const BUILDING_ANGlE = -PI/4; // initialize map @@ -91,12 +91,12 @@ iz = round(fz); var placer = new ClumpPlacer(mapArea * 0.45, 0.9, 0.09, 10, ix, iz); var terrainPainter = new LayeredPainter( - [tWater, tShore, tGrass], // terrains - [4, 2] // widths + [tWater, tMainTerrain], // terrains + [3] // widths ); var elevationPainter = new SmoothElevationPainter( ELEVATION_SET, // type - 5, // elevation + 3, // elevation 4 // blend radius ); createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null); @@ -173,7 +173,7 @@ for (var i = 0; i < numPlayers; i++) var bbX = round(fx + bbDist * cos(bbAngle)); var bbZ = round(fz + bbDist * sin(bbAngle)); group = new SimpleGroup( - [new SimpleObject(oBerryBush, 5,5, 0,3)], + [new SimpleObject(oFruitBush, 5,5, 0,3)], true, clBaseResource, bbX, bbZ ); createObjectGroup(group, 0); @@ -210,7 +210,7 @@ for (var i = 0; i < numPlayers; i++) var tX = round(fx + tDist * cos(tAngle)); var tZ = round(fz + tDist * sin(tAngle)); group = new SimpleGroup( - [new SimpleObject(oOak, num, num, 0,3)], + [new SimpleObject(oTree1, num, num, 0,3)], false, clBaseResource, tX, tZ ); createObjectGroup(group, 0, avoidClasses(clBaseResource,2)); @@ -233,6 +233,24 @@ for (var i = 0; i < numPlayers; i++) RMS.SetProgress(20); +// create shore jaggedness +log("Creating shore jaggedness..."); +placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1); +terrainPainter = new LayeredPainter( + [tCliff, tHill], // terrains + [2] // widths +); +elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -5, 4); +createAreas( + placer, + [terrainPainter, elevationPainter, unPaintClass(clLand)], + [avoidClasses(clPlayer, 20), borderClasses(clLand, 7, 7)], + scaleByMapSize(7, 130) * 2, 150 +); + +paintTerrainBasedOnHeight(1, 3, 0, tShore); +paintTerrainBasedOnHeight(-8, 1, 2, tWater); + // create bumps log("Creating bumps..."); placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1); @@ -240,7 +258,7 @@ painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2); createAreas( placer, painter, - [avoidClasses(clWater, 2, clPlayer, 10), stayClasses(clLand, 3)], + [avoidClasses(clWater, 2, clPlayer, 10), stayClasses(clLand, 5)], scaleByMapSize(100, 200) ); @@ -255,19 +273,19 @@ elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 18, 2); createAreas( placer, [terrainPainter, elevationPainter, paintClass(clHill)], - [avoidClasses(clPlayer, 10, clHill, 15, clBaseResource, 3), stayClasses(clLand, 5)], + [avoidClasses(clPlayer, 20, clHill, 15, clBaseResource, 3), stayClasses(clLand, 5)], scaleByMapSize(1, 4) * numPlayers ); // calculate desired number of trees for map (based on size) -if (rt == 6) +if (random_terrain == 6) { var MIN_TREES = 200; var MAX_TREES = 1250; var P_FOREST = 0.02; } -else if (rt == 7) +else if (random_terrain == 7) { var MIN_TREES = 1000; var MAX_TREES = 6000; @@ -286,11 +304,11 @@ var numStragglers = totalTrees * (1.0 - P_FOREST); // create forests log("Creating forests..."); var types = [ - [[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]], - [[tGrassPForest, tGrass, pForestP], [tGrassPForest, pForestP]] + [[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]], + [[tForestFloor1, tMainTerrain, pForest2], [tForestFloor1, pForest2]] ]; // some variation -if (rt == 6) +if (random_terrain == 6) { var size = numForest / (0.5 * scaleByMapSize(2,8) * numPlayers); } @@ -309,7 +327,7 @@ for (var i = 0; i < types.length; ++i) createAreas( placer, [painter, paintClass(clForest)], - [avoidClasses(clPlayer, 6, clForest, 10, clHill, 0, clBaseResource,2), stayClasses(clLand, 7)], + [avoidClasses(clPlayer, 20, clForest, 10, clHill, 0, clBaseResource,2), stayClasses(clLand, 4)], num ); } @@ -317,33 +335,33 @@ for (var i = 0; i < types.length; ++i) RMS.SetProgress(50); // create dirt patches log("Creating dirt patches..."); -var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)]; +var sizes = [scaleByMapSize(5, 48), scaleByMapSize(8, 84), scaleByMapSize(13, 128)]; for (var i = 0; i < sizes.length; i++) { placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5); painter = new LayeredPainter( - [[tGrass,tGrassA],[tGrassA,tGrassB], [tGrassB,tGrassC]], // terrains + [[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]], // terrains [1,1] // widths ); createAreas( placer, [painter, paintClass(clDirt)], - [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 7)], + [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 5)], scaleByMapSize(15, 45) ); } // create grass patches log("Creating grass patches..."); -var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)]; +var sizes = [scaleByMapSize(4, 32), scaleByMapSize(6, 48), scaleByMapSize(8, 80)]; for (var i = 0; i < sizes.length; i++) { placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5); - painter = new TerrainPainter(tGrassPatch); + painter = new TerrainPainter(tTier4Terrain); createAreas( placer, painter, - [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 7)], + [avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 5)], scaleByMapSize(15, 45) ); } @@ -354,14 +372,14 @@ log("Creating stone mines..."); // create large stone quarries group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock); createObjectGroups(group, 0, - [avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 5)], + [avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1), stayClasses(clLand, 6)], scaleByMapSize(4,16), 100 ); // create small stone quarries group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock); createObjectGroups(group, 0, - [avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 5)], + [avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1), stayClasses(clLand, 6)], scaleByMapSize(4,16), 100 ); @@ -369,7 +387,7 @@ log("Creating metal mines..."); // create large metal quarries group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal); createObjectGroups(group, 0, - [avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 5)], + [avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 6)], scaleByMapSize(4,16), 100 ); @@ -405,11 +423,11 @@ RMS.SetProgress(70); // create deer log("Creating deer..."); group = new SimpleGroup( - [new SimpleObject(oDeer, 5,7, 0,4)], + [new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)], true, clFood ); createObjectGroups(group, 0, - [avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 3)], + [avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20), stayClasses(clLand, 3)], 3 * numPlayers, 50 ); @@ -418,11 +436,22 @@ RMS.SetProgress(75); // create sheep log("Creating sheep..."); group = new SimpleGroup( - [new SimpleObject(oSheep, 2,3, 0,2)], + [new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)], true, clFood ); createObjectGroups(group, 0, - [avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 3)], + [avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20), stayClasses(clLand, 3)], + 3 * numPlayers, 50 +); + +// create fruits +log("Creating fruits..."); +group = new SimpleGroup( + [new SimpleObject(oFruitBush, 5,7, 0,4)], + true, clFood +); +createObjectGroups(group, 0, + [avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20), stayClasses(clLand, 3)], 3 * numPlayers, 50 ); @@ -442,7 +471,7 @@ RMS.SetProgress(85); // create straggler trees log("Creating straggler trees..."); -var types = [oOak, oOakLarge, oPine, oApple]; // some variation +var types = [oTree1, oTree2, oTree4, oTree3]; // some variation var num = floor(numStragglers / types.length); for (var i = 0; i < types.length; ++i) { @@ -457,7 +486,7 @@ for (var i = 0; i < types.length; ++i) } var planetm = 1; -if (rt==7) +if (random_terrain==7) { planetm = 8; } @@ -495,14 +524,14 @@ createObjectGroups(group, 0, planetm * scaleByMapSize(13, 200), 50 ); -rt = randInt(1,3) -if (rt==1){ +random_terrain = randInt(1,3) +if (random_terrain==1){ setSkySet("cirrus"); } -else if (rt ==2){ +else if (random_terrain ==2){ setSkySet("cumulus"); } -else if (rt ==3){ +else if (random_terrain ==3){ setSkySet("sunny"); } setSunRotation(randFloat(0, TWO_PI)); diff --git a/binaries/data/mods/public/maps/random/corinthian_isthmus.js b/binaries/data/mods/public/maps/random/corinthian_isthmus.js index cb55b26b2a..afaf73cb61 100644 --- a/binaries/data/mods/public/maps/random/corinthian_isthmus.js +++ b/binaries/data/mods/public/maps/random/corinthian_isthmus.js @@ -8,10 +8,12 @@ const tHill = ["medit_grass_shrubs", "medit_rocks_grass_shrubs", "medit_rocks_sh const tMainDirt = "medit_dirt"; const tCliff = "medit_cliff_aegean"; const tForestFloor = "medit_grass_shrubs"; -const tGrass = ["medit_grass_shrubs", "medit_rocks_grass_shrubs", "medit_rocks_shrubs", "medit_rocks_grass", "medit_shrubs"]; +const tGrass = ["medit_grass_field", "medit_grass_field_a"]; const tGrassSand50 = "medit_grass_field_a"; const tGrassSand25 = "medit_grass_field_b"; const tDirt = "medit_dirt_b"; +const tDirt2 = "medit_rocks_grass"; +const tDirt3 = "medit_rocks_shrubs"; const tDirtCracks = "medit_dirt_c"; const tShore = "medit_sand"; const tWater = "medit_sand_wet"; @@ -42,7 +44,7 @@ const aBushes = [aBush1, aBush2, aBush3, aBush4]; const aDecorativeRock = "actor|geology/stone_granite_med.xml"; // terrain + entity (for painting) -var pForest = [tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor]; +const pForest = [tForestFloor, tForestFloor + TERRAIN_SEPARATOR + oCarob, tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor]; const BUILDING_ANGlE = -PI/4; @@ -50,9 +52,9 @@ log("Initializing map..."); InitMap(); -var numPlayers = getNumPlayers(); -var mapSize = getMapSize(); -var mapArea = mapSize*mapSize; +const numPlayers = getNumPlayers(); +const mapSize = getMapSize(); +const mapArea = mapSize*mapSize; // create tile classes @@ -67,11 +69,10 @@ var clBaseResource = createTileClass(); var clSettlement = createTileClass(); var clGrass = createTileClass(); var clHill = createTileClass(); -var clIsland = createTileClass(); // create the main river log("Creating the main river"); -var placer = new PathPlacer(fractionToTiles(0.5 + cos(3 * PI / 4)), fractionToTiles(0.5 + sin(3 * PI / 4)), fractionToTiles(0.5 + cos(- PI / 4)), fractionToTiles(0.5 + sin(- PI / 4)), scaleByMapSize(15,70), 0.5, 3*(scaleByMapSize(1,4)), 0.1, 0.01); +var placer = new PathPlacer(fractionToTiles(0.5 + cos(3 * PI / 4)), fractionToTiles(0.5 + sin(3 * PI / 4)), fractionToTiles(0.5 + cos(- PI / 4)), fractionToTiles(0.5 + sin(- PI / 4)), scaleByMapSize(15,70), 0.2, 3*(scaleByMapSize(5,15)), 0.04, 0.01); var terrainPainter = new LayeredPainter( [tShore, tWater, tWater], // terrains [1, 3] // widths @@ -85,12 +86,12 @@ createArea(placer, [terrainPainter, elevationPainter], avoidClasses(clPlayer, 4) placer = new ClumpPlacer(floor(PI*scaleByMapSize(15,70)*scaleByMapSize(15,70)/4), 0.95, 0.6, 10, fractionToTiles(0.5 + cos(3 * PI / 4))+3, fractionToTiles(0.5 + sin(3 * PI / 4))-3); var painter = new LayeredPainter([tWater, tWater], [1]); -var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -4, 0); +var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -4, 4); createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 8)); placer = new ClumpPlacer(floor(PI*scaleByMapSize(15,70)*scaleByMapSize(15,70)/4), 0.95, 0.6, 10, fractionToTiles(0.5 + cos(- PI / 4))-3, fractionToTiles(0.5 + sin(- PI / 4))+3); var painter = new LayeredPainter([tWater, tWater], [1]); -var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -4, 0); +var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -4, 4); createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 8)); for (var ix = 0; ix < mapSize; ix++) @@ -269,7 +270,7 @@ painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2); createAreas( placer, painter, - avoidClasses(clWater, 2, clPlayer, 6), + avoidClasses(clWater, 2, clPlayer, 20), scaleByMapSize(100, 200) ); @@ -290,7 +291,7 @@ var num = scaleByMapSize(10,30); placer = new ClumpPlacer(numForest / num, 0.15, 0.1, 0.5); painter = new TerrainPainter([tForestFloor, pForest]); createAreas(placer, [painter, paintClass(clForest)], - avoidClasses(clPlayer, 8, clForest, 10, clWater, 1, clBaseResource, 3), + avoidClasses(clPlayer, 20, clForest, 10, clWater, 1, clBaseResource, 3), num, 50 ); @@ -308,7 +309,7 @@ var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 16, 2); createAreas( placer, [terrainPainter, elevationPainter, paintClass(clHill)], - avoidClasses(clPlayer, 16, clForest, 1, clHill, 15, clWater, 3), + avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 3), scaleByMapSize(1, 4) * numPlayers ); @@ -328,7 +329,7 @@ for (var i = 0; i < sizes.length; i++) createAreas( placer, [painter, paintClass(clDirt)], - avoidClasses(clForest, 0, clGrass, 5, clPlayer, 10, clWater, 1, clDirt, 5, clHill, 1), + avoidClasses(clForest, 0, clGrass, 2, clPlayer, 10, clWater, 2, clDirt, 2, clHill, 1), scaleByMapSize(15, 45) ); } @@ -342,13 +343,13 @@ for (var i = 0; i < sizes.length; i++) { placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5); painter = new LayeredPainter( - [[tDirt,tDirtCracks],[tDirt,tMainDirt], [tDirtCracks,tMainDirt]], // terrains - [1,1] // widths + [tDirt3, tDirt2,[tDirt,tMainDirt], [tDirtCracks,tMainDirt]], // terrains + [1,1,1] // widths ); createAreas( placer, [painter, paintClass(clDirt)], - avoidClasses(clForest, 0, clDirt, 5, clPlayer, 10, clWater, 1, clGrass, 5, clHill, 1), + avoidClasses(clForest, 0, clDirt, 2, clPlayer, 10, clWater, 2, clGrass, 2, clHill, 1), scaleByMapSize(15, 45) ); } @@ -361,14 +362,14 @@ log("Creating stone mines..."); // create large stone quarries group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock); createObjectGroups(group, 0, - avoidClasses(clForest, 1, clPlayer, 12, clRock, 10, clWater, 1, clHill, 1), + avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 1, clHill, 1), scaleByMapSize(4,16), 100 ); // create small stone quarries group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock); createObjectGroups(group, 0, - avoidClasses(clForest, 1, clPlayer, 12, clRock, 10, clWater, 1, clHill, 1), + avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 1, clHill, 1), scaleByMapSize(4,16), 100 ); @@ -376,7 +377,7 @@ log("Creating metal mines..."); // create large metal quarries group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal); createObjectGroups(group, 0, - avoidClasses(clForest, 1, clPlayer, 12, clMetal, 10, clRock, 5, clWater, 1, clHill, 1), + avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clWater, 1, clHill, 1), scaleByMapSize(4,16), 100 ); @@ -413,7 +414,7 @@ RMS.SetProgress(70); log("Creating fish..."); group = new SimpleGroup([new SimpleObject(oFish, 1,3, 2,6)], true, clFood); createObjectGroups(group, 0, - [avoidClasses(clIsland, 2, clFood, 10), stayClasses(clWater, 5)], + [avoidClasses(clFood, 10), stayClasses(clWater, 5)], 3*scaleByMapSize(5,20), 50 ); @@ -421,7 +422,7 @@ createObjectGroups(group, 0, log("Creating sheeps..."); group = new SimpleGroup([new SimpleObject(oSheep, 5,7, 0,4)], true, clFood); createObjectGroups(group, 0, - avoidClasses(clForest, 0, clPlayer, 7, clWater, 1, clFood, 10, clHill, 1), + avoidClasses(clForest, 0, clPlayer, 20, clWater, 1, clFood, 10, clHill, 1), scaleByMapSize(5,20), 50 ); @@ -429,7 +430,7 @@ createObjectGroups(group, 0, log("Creating goats..."); group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood); createObjectGroups(group, 0, - avoidClasses(clForest, 0, clPlayer, 7, clWater, 1, clFood, 10, clHill, 1), + avoidClasses(clForest, 0, clPlayer, 20, clWater, 1, clFood, 10, clHill, 1), scaleByMapSize(5,20), 50 ); @@ -437,10 +438,21 @@ createObjectGroups(group, 0, log("Creating deers..."); group = new SimpleGroup([new SimpleObject(oDeer, 2,4, 0,2)], true, clFood); createObjectGroups(group, 0, - avoidClasses(clForest, 0, clPlayer, 7, clWater, 1, clFood, 10, clHill, 1), + avoidClasses(clForest, 0, clPlayer, 20, clWater, 1, clFood, 10, clHill, 1), scaleByMapSize(5,20), 50 ); +// create berry bush +log("Creating berry bush..."); +group = new SimpleGroup( + [new SimpleObject(oBerryBush, 5,7, 0,4)], + true, clFood +); +createObjectGroups(group, 0, + avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10), + randInt(1, 4) * numPlayers + 2, 50 +); + RMS.SetProgress(90); // create straggler trees diff --git a/binaries/data/mods/public/maps/random/corsica.js b/binaries/data/mods/public/maps/random/corsica.js index 5b46112dc1..f3332117e3 100644 --- a/binaries/data/mods/public/maps/random/corsica.js +++ b/binaries/data/mods/public/maps/random/corsica.js @@ -336,7 +336,7 @@ for (var i = 0; i < numPlayers; i++) createArea(placer, [painter,paintClass(clSettlement),elevationPainter], null); // create starting units - placeCivDefaultEntities(fx, fz, id, BUILDING_ANGlE); + placeCivDefaultEntities(fx, fz, id, BUILDING_ANGlE, {'iberWall' : false}); // create animals for (var j = 0; j < 2; ++j) diff --git a/binaries/data/mods/public/maps/random/cycladic_archipelago.js b/binaries/data/mods/public/maps/random/cycladic_archipelago.js index 0dabcf9d68..5ecd9380ae 100644 --- a/binaries/data/mods/public/maps/random/cycladic_archipelago.js +++ b/binaries/data/mods/public/maps/random/cycladic_archipelago.js @@ -65,10 +65,10 @@ const aRockSmall = "actor|geology/stone_granite_small.xml"; // terrain + entity (for painting) -var pPalmForest = [tForestFloor+TERRAIN_SEPARATOR+oPalm, tGrass]; -var pPineForest = [tForestFloor+TERRAIN_SEPARATOR+oPine, tGrass]; -var pPoplarForest = [tForestFloor+TERRAIN_SEPARATOR+oLombardyPoplar, tGrass]; -var pMainForest = [tForestFloor+TERRAIN_SEPARATOR+oCarob, tForestFloor+TERRAIN_SEPARATOR+oBeech, tGrass, tGrass]; +const pPalmForest = [tForestFloor+TERRAIN_SEPARATOR+oPalm, tGrass]; +const pPineForest = [tForestFloor+TERRAIN_SEPARATOR+oPine, tGrass]; +const pPoplarForest = [tForestFloor+TERRAIN_SEPARATOR+oLombardyPoplar, tGrass]; +const pMainForest = [tForestFloor+TERRAIN_SEPARATOR+oCarob, tForestFloor+TERRAIN_SEPARATOR+oBeech, tGrass, tGrass]; const BUILDING_ANGlE = -PI/4; @@ -78,8 +78,8 @@ log("Initializing map..."); InitMap(); -var numPlayers = getNumPlayers(); -var mapSize = getMapSize(); +const numPlayers = getNumPlayers(); +const mapSize = getMapSize(); // create tile classes diff --git a/binaries/data/mods/public/maps/random/english_channel.js b/binaries/data/mods/public/maps/random/english_channel.js index 66ab0f8ef5..3827d7251c 100644 --- a/binaries/data/mods/public/maps/random/english_channel.js +++ b/binaries/data/mods/public/maps/random/english_channel.js @@ -1,26 +1,26 @@ RMS.LoadLibrary("rmgen"); - // terrain textures -const tGrass = ["temp_grass_clovers"]; +const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"]; const tGrassPForest = "temp_plants_bog"; -const tGrassDForest = "alpine_dirt_grass_50"; -const tCliff = ["temp_cliff_a", "temp_cliff_b"]; -const tGrassA = "temp_grass_d"; -const tGrassB = "temp_grass_c"; -const tGrassC = "temp_grass_clovers_2"; +const tGrassDForest = "temp_plants_bog"; +const tGrassA = "temp_grass_plants"; +const tGrassB = "temp_plants_bog"; +const tGrassC = "temp_mud_a"; +const tDirt = ["temp_plants_bog", "temp_mud_a"]; const tHill = ["temp_highlands", "temp_grass_long_b"]; -const tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; +const tCliff = ["temp_cliff_a", "temp_cliff_b"]; const tRoad = "temp_road"; const tRoadWild = "temp_road_overgrown"; -const tGrassPatch = "temp_grass_plants"; -const tShoreBlend = "temp_mud_plants"; -const tShore = "medit_sand_wet"; -const tWater = "medit_sand_wet"; +const tGrassPatchBlend = "temp_grass_long_b"; +const tGrassPatch = ["temp_grass_d", "temp_grass_clovers"]; +const tShoreBlend = "temp_grass_plants"; +const tShore = "temp_dirt_gravel"; +const tWater = "temp_dirt_gravel_b"; // gaia entities -const oPoplar = "gaia/flora_tree_euro_beech"; -const oPalm = "gaia/flora_tree_poplar"; +const oBeech = "gaia/flora_tree_euro_beech"; +const oPoplar = "gaia/flora_tree_poplar"; const oApple = "gaia/flora_tree_apple"; const oOak = "gaia/flora_tree_oak"; const oBerryBush = "gaia/flora_bush_berry"; @@ -44,7 +44,7 @@ const aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; const aLillies = "actor|props/flora/water_lillies.xml"; // terrain + entity (for painting) -const pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oPoplar, tGrassDForest]; +const pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oBeech, tGrassDForest]; const pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oOak, tGrassPForest]; const WATER_WIDTH = 0.25; @@ -57,9 +57,9 @@ log("Initializing map..."); InitMap(); -var numPlayers = getNumPlayers(); -var mapSize = getMapSize(); -var mapArea = mapSize*mapSize; +const numPlayers = getNumPlayers(); +const mapSize = getMapSize(); +const mapArea = mapSize*mapSize; // create tile classes @@ -73,9 +73,6 @@ var clMetal = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); -var clSea = createTileClass(); -var clHighlands = createTileClass(); -var clFlatlands = createTileClass(); var clShallow = createTileClass(); // randomize player order @@ -244,25 +241,25 @@ for (var ix = 0; ix < mapSize; ix++) // add the rough shape of the water var km = 20/scaleByMapSize(35, 160); - var fadeDist = 0.05; + var fadeDist = 0.02; var cu = km*rndRiver(theta+x*0.5*(mapSize/64),seed); var cu2 = km*rndRiver(theta2+x*0.5*(mapSize/64),seed2); - if ((z > cu + 0.5 - WATER_WIDTH/2) && (z < cu + 0.5 + WATER_WIDTH/2)) + if ((z > cu + 0.5 - WATER_WIDTH/2) && (z < cu2 + 0.5 + WATER_WIDTH/2)) { var h; if (z < (cu + 0.5 + fadeDist - WATER_WIDTH/2)) { - h = 3 - 6 * (1 - ((cu + 0.5 + fadeDist - WATER_WIDTH/2) - z)/fadeDist); + h = 3 - 7 * (1 - ((cu + 0.5 + fadeDist - WATER_WIDTH/2) - z)/fadeDist); } else if (z > (cu2 + 0.5 - fadeDist + WATER_WIDTH/2)) { - h = 3 - 6 * (1 - (z - (cu2 + 0.5 - fadeDist + WATER_WIDTH/2))/fadeDist); + h = 3 - 7 * (1 - (z - (cu2 + 0.5 - fadeDist + WATER_WIDTH/2))/fadeDist); } else { - h = -3.0; + h = -4.0; } if (h < -1.5) @@ -275,9 +272,6 @@ for (var ix = 0; ix < mapSize; ix++) } setHeight(ix, iz, h); - if (h < 0){ - addToClass(ix, iz, clSea); - } } else { @@ -341,15 +335,16 @@ for (var i = 0; i <= randInt(8, (scaleByMapSize(12,20))); i++) [1, 3] // widths); ) var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -3, 3); - createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 22)); + createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 23)); } } } -passageMaker(fractionToTiles(0.2), fractionToTiles(0.25), fractionToTiles(0.8), fractionToTiles(0.25), scaleByMapSize(4,8), -2, -2, 2, clShallow, undefined, -4); -passageMaker(fractionToTiles(0.2), fractionToTiles(0.75), fractionToTiles(0.8), fractionToTiles(0.75), scaleByMapSize(4,8), -2, -2, 2, clShallow, undefined, -4); +passageMaker(round(fractionToTiles(0.2)), round(fractionToTiles(0.25)), round(fractionToTiles(0.8)), round(fractionToTiles(0.25)), scaleByMapSize(4,8), -2, -2, 2, clShallow, undefined, -4); +passageMaker(round(fractionToTiles(0.2)), round(fractionToTiles(0.75)), round(fractionToTiles(0.8)), round(fractionToTiles(0.75)), scaleByMapSize(4,8), -2, -2, 2, clShallow, undefined, -4); -paintTerrainBasedOnHeight(-5, 2, 1, tWater); +paintTerrainBasedOnHeight(-5, 1, 1, tWater); +paintTerrainBasedOnHeight(1, 3, 1, tShore); paintTileClassBasedOnHeight(-6, 0.5, 1, clWater) @@ -362,11 +357,11 @@ painter = new SmoothElevationPainter(ELEVATION_MODIFY, 4, 3); createAreas( placer, painter, - stayClasses(clHighlands, 1), - scaleByMapSize(300, 600) + avoidClasses(clWater, 5, clPlayer, 20), + scaleByMapSize(100, 200) ); -RMS.SetProgress(30); +RMS.SetProgress(45); // create hills log("Creating hills..."); @@ -375,15 +370,15 @@ var terrainPainter = new LayeredPainter( [tCliff, tHill], // terrains [2] // widths ); -var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 12, 2); +var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, 18, 2); createAreas( placer, [terrainPainter, elevationPainter, paintClass(clHill)], - avoidClasses(clSea, 5, clPlayer, 15, clWater, 5, clHill, 15, clHighlands, 5), + avoidClasses(clPlayer, 20, clWater, 5, clHill, 15), scaleByMapSize(1, 4) * numPlayers ); -RMS.SetProgress(35); +RMS.SetProgress(50); // calculate desired number of trees for map (based on size) const MIN_TREES = 500; @@ -411,33 +406,10 @@ for (var i = 0; i < types.length; ++i) createAreas( placer, [painter, paintClass(clForest)], - avoidClasses(clPlayer, 6, clWater, 3, clForest, 10, clHill, 0, clSea, 6, clBaseResource, 3), + avoidClasses(clPlayer, 20, clWater, 6, clForest, 10, clHill, 0, clBaseResource, 3), num ); } -RMS.SetProgress(45); -// create highland forests -log("Creating highland forests..."); -var types = [ - [[tGrassDForest, tGrass, pForestP], [tGrassDForest, pForestP]] -]; // some variation -var size = numForest / (scaleByMapSize(2,8) * numPlayers); -var num = floor(size / types.length); -for (var i = 0; i < types.length; ++i) -{ - placer = new ClumpPlacer(numForest / num, 0.1, 0.1, 1); - painter = new LayeredPainter( - types[i], // terrains - [2] // widths - ); - createAreas( - placer, - [painter, paintClass(clForest)], - avoidClasses(clPlayer, 6, clWater, 3, clForest, 2, clHill, 0, clSea, 6, clFlatlands, 3), - num - ); -} - RMS.SetProgress(70); @@ -448,30 +420,31 @@ for (var i = 0; i < sizes.length; i++) { placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5); painter = new LayeredPainter( - [[tGrass,tGrassA],[tGrassA,tGrassB], [tGrassB,tGrassC]], // terrains + [[tGrass,tGrassA], tGrassB, [tGrassB,tGrassC]], // terrains [1,1] // widths ); createAreas( placer, [painter, paintClass(clDirt)], - avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0, clSea, 0), + avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6), scaleByMapSize(15, 45) ); } -RMS.SetProgress(75); - // create grass patches log("Creating grass patches..."); var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)]; for (var i = 0; i < sizes.length; i++) { placer = new ClumpPlacer(sizes[i], 0.3, 0.06, 0.5); - painter = new TerrainPainter(tGrassPatch); + painter = new LayeredPainter( + [tGrassPatchBlend, tGrassPatch], // terrains + [1] // widths + ); createAreas( placer, painter, - avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0, clSea, 0), + avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6), scaleByMapSize(15, 45) ); } @@ -482,14 +455,14 @@ log("Creating stone mines..."); // create large stone quarries group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock); createObjectGroups(group, 0, - [avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10, clSea, 2, clHill, 2)], + [avoidClasses(clWater, 2, clForest, 1, clPlayer, 20, clRock, 10, clHill, 2)], scaleByMapSize(4,16), 100 ); // create small stone quarries group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock); createObjectGroups(group, 0, - [avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10, clSea, 2, clHill, 2)], + [avoidClasses(clWater, 2, clForest, 1, clPlayer, 20, clRock, 10, clHill, 2)], scaleByMapSize(4,16), 100 ); @@ -497,7 +470,7 @@ log("Creating metal mines..."); // create large metal quarries group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal); createObjectGroups(group, 0, - [avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clMetal, 10, clRock, 5, clSea, 0, clHill, 2)], + [avoidClasses(clWater, 2, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2)], scaleByMapSize(4,16), 100 ); @@ -511,7 +484,7 @@ group = new SimpleGroup( ); createObjectGroups( group, 0, - avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0, clSea, 0), + avoidClasses(clWater, 1, clForest, 0, clPlayer, 0, clHill, 0), scaleByMapSize(16, 262), 50 ); @@ -525,7 +498,7 @@ group = new SimpleGroup( ); createObjectGroups( group, 0, - avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0, clSea, 0), + avoidClasses(clWater, 1, clForest, 0, clPlayer, 0, clHill, 0), scaleByMapSize(8, 131), 50 ); @@ -537,19 +510,19 @@ group = new SimpleGroup( true, clFood ); createObjectGroups(group, 0, - avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0, clFood, 5, clSea, 0, clFlatlands, 0), + avoidClasses(clWater, 1, clForest, 0, clPlayer, 20, clHill, 0, clFood, 5), 6 * numPlayers, 50 ); -// create sheep -log("Creating sheep..."); +// create goat +log("Creating goat..."); group = new SimpleGroup( [new SimpleObject(oGoat, 2,3, 0,2)], true, clFood ); createObjectGroups(group, 0, - avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0, clFood, 20, clSea, 0), + avoidClasses(clWater, 1, clForest, 0, clPlayer, 20, clHill, 0, clFood, 20), 3 * numPlayers, 50 ); @@ -560,14 +533,14 @@ group = new SimpleGroup( true, clFood ); createObjectGroups(group, 0, - avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0, clFood, 20, clSea, 0, clFlatlands, 0), + avoidClasses(clWater, 1, clForest, 0, clPlayer, 20, clHill, 0, clFood, 20), 2 * numPlayers, 50 ); // create straggler trees log("Creating straggler trees..."); -var types = [oPoplar, oPalm, oApple]; // some variation +var types = [oBeech, oPoplar, oApple]; // some variation var num = floor(numStragglers / types.length); for (var i = 0; i < types.length; ++i) { @@ -576,7 +549,7 @@ for (var i = 0; i < types.length; ++i) true, clForest ); createObjectGroups(group, 0, - avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clMetal, 1, clRock, 1, clSea, 1, clHighlands, 25), + avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 8, clMetal, 1, clRock, 1), num ); } @@ -588,7 +561,7 @@ group = new SimpleGroup( [new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)] ); createObjectGroups(group, 0, - avoidClasses(clWater, 2, clHill, 2, clPlayer, 2, clDirt, 0, clSea, 1), + avoidClasses(clWater, 2, clHill, 2, clPlayer, 2, clDirt, 0), scaleByMapSize(13, 200) ); @@ -599,7 +572,7 @@ group = new SimpleGroup( [new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)] ); createObjectGroups(group, 0, - avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0, clSea, 1), + avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), scaleByMapSize(13, 200) ); @@ -611,7 +584,7 @@ group = new SimpleGroup( [new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)] ); createObjectGroups(group, 0, - avoidClasses(clWater, 1, clHill, 1, clPlayer, 1, clDirt, 1, clSea, 1), + avoidClasses(clWater, 1, clHill, 1, clPlayer, 1, clDirt, 1), scaleByMapSize(13, 200), 50 );