From bc805bd357bf644758227d477932826c38e352e3 Mon Sep 17 00:00:00 2001 From: Spahbod Date: Sat, 25 Feb 2012 15:53:43 +0000 Subject: [PATCH] Adds the path placer library by historic_brunno to rmgen. Fixes #892. Also takes all the duplicated parts of random maps including the new player start entities and random biome system into rmgen libraries. Tweaks nile river and snowflake random maps. This was SVN commit r11152. --- .../mods/public/maps/random/aegean_sea.js | 65 +-- .../public/maps/random/anatolian_plateau.js | 2 +- .../public/maps/random/atlas_mountains.js | 23 +- .../maps/random/cantabrian_highlands.js | 23 +- .../data/mods/public/maps/random/continent.js | 390 ++------------- .../public/maps/random/guadalquivir_river.js | 72 +-- .../public/maps/random/hyrcanian_shores.js | 67 +-- .../data/mods/public/maps/random/islands.js | 22 +- binaries/data/mods/public/maps/random/lake.js | 390 ++------------- .../data/mods/public/maps/random/latium.js | 23 +- .../data/mods/public/maps/random/migration.js | 389 ++------------- .../mods/public/maps/random/new_rms_test.js | 24 +- .../public/maps/random/persian_highlands.js | 23 +- .../public/maps/random/pheonician_levant.js | 66 +-- .../data/mods/public/maps/random/rivers.js | 445 ++---------------- .../data/mods/public/maps/random/rmgen/map.js | 54 +-- .../mods/public/maps/random/rmgen/mapgen.js | 2 - .../mods/public/maps/random/rmgen/misc.js | 1 + .../public/maps/random/rmgen/pathplacer.js | 195 ++++++++ .../public/maps/random/rmgen/randombiome.js | 1 + .../public/maps/random/snowflake_searocks.js | 2 +- .../data/mods/public/maps/random/the_nile.js | 194 ++++---- 22 files changed, 470 insertions(+), 2003 deletions(-) create mode 100644 binaries/data/mods/public/maps/random/rmgen/misc.js create mode 100644 binaries/data/mods/public/maps/random/rmgen/pathplacer.js create mode 100644 binaries/data/mods/public/maps/random/rmgen/randombiome.js diff --git a/binaries/data/mods/public/maps/random/aegean_sea.js b/binaries/data/mods/public/maps/random/aegean_sea.js index d0d4dcefb2..c01dfc326a 100644 --- a/binaries/data/mods/public/maps/random/aegean_sea.js +++ b/binaries/data/mods/public/maps/random/aegean_sea.js @@ -1,48 +1,6 @@ RMS.LoadLibrary("rmgen"); //TILE_CENTERED_HEIGHT_MAP = true; -function rndRiver(f, seed) -{ - var rndRq = seed; - var rndRw = rndRq; - var rndRe = 0; - var rndRr = f-floor(f); - var rndRa = 0; - for (var rndRx=0; rndRx<=floor(f); rndRx++) - { - rndRw = 10*(rndRw-floor(rndRw)); - } - if (rndRx%2==0) - { - var rndRs = -1; - } - else - { - var rndRs = 1; - } - rndRe = (floor(rndRw))%5; - if (rndRe==0) - { - rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5); - } - else if (rndRe==1) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7); - } - else if (rndRe==2) - { - rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8); - } - else if (rndRe==3) - { - rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8); - } - else if (rndRe==4) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7); - } - return rndRa; -} const tCity = "medit_city_pavement"; const tCityPlaza = "medit_city_pavement"; @@ -173,27 +131,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -202,7 +141,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/anatolian_plateau.js b/binaries/data/mods/public/maps/random/anatolian_plateau.js index a06703353f..ccd50d5808 100644 --- a/binaries/data/mods/public/maps/random/anatolian_plateau.js +++ b/binaries/data/mods/public/maps/random/anatolian_plateau.js @@ -1 +1 @@ -RMS.LoadLibrary("rmgen"); var tGrass = ["steppe_grass_a", "steppe_grass_b", "steppe_grass_c", "steppe_grass_d"]; var tGrassPForest = "steppe_grass_c"; var tGrassDForest = "steppe_grass_c"; var tGrassA = "steppe_grass_green_a"; var tGrassB = "steppe_grass_dirt_33"; var tGrassC = ["steppe_grass_b", "steppe_grass_c", "steppe_grass_d"]; var tDirt = ["steppe_dirt_a", "steppe_dirt_b"]; var tRoad = "road_stones"; var tRoadWild = "road_stones"; var tShoreBlend = "desert_shore_stones"; var tShore = "dirta"; var tWater = "desert_sand_wet"; // gaia entities var oBeech = "gaia/flora_tree_euro_beech"; var oBush = "gaia/flora_bush_temperate"; var oBerryBush = "gaia/flora_bush_berry"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_rabbit"; var oFish = "gaia/fauna_fish"; var oSheep = "gaia/fauna_sheep"; var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneSmall = "gaia/geology_stone_mediterranean"; var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; // decorative props var aGrass = "actor|props/flora/grass_soft_small_tall.xml"; var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aRockLarge = "actor|geology/stone_granite_med.xml"; var aRockMedium = "actor|geology/stone_granite_med.xml"; var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oBeech, tGrassDForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oBeech, tGrassPForest]; const BUILDING_ANGlE = 0.75*PI; // initialize map log("Initializing map..."); InitMap(); var numPlayers = getNumPlayers(); var mapSize = getMapSize(); var mapArea = mapSize*mapSize; // create tile classes var clPlayer = createTileClass(); var clHill = createTileClass(); var clForest = createTileClass(); var clWater = createTileClass(); var clDirt = createTileClass(); var clRock = createTileClass(); var clMetal = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); // randomize player order var playerIDs = []; for (var i = 0; i < numPlayers; i++) { playerIDs.push(i+1); } playerIDs = shuffleArray(playerIDs); // place players var playerX = new Array(numPlayers); var playerZ = new Array(numPlayers); var playerAngle = new Array(numPlayers); var startAngle = randFloat(0, TWO_PI); for (var i = 0; i < numPlayers; i++) { playerAngle[i] = startAngle + i*TWO_PI/numPlayers; playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); } for (var i = 0; i < numPlayers; i++) { var id = playerIDs[i]; log("Creating base for player " + id + "..."); // some constants var radius = scaleByMapSize(15,25); var cliffRadius = 2; var elevation = 20; // get the x and z in tiles var fx = fractionToTiles(playerX[i]); var fz = fractionToTiles(playerZ[i]); var ix = round(fx); var iz = round(fz); addToClass(ix, iz, clPlayer); addToClass(ix+5, iz, clPlayer); addToClass(ix, iz+5, clPlayer); addToClass(ix-5, iz, clPlayer); addToClass(ix, iz-5, clPlayer); // create the city patch var cityRadius = radius/3; var placer = new ClumpPlacer(PI*cityRadius*cityRadius, 0.6, 0.3, 10, ix, iz); var painter = new LayeredPainter([tRoadWild, tRoad], [1]); createArea(placer, painter, null); // get civ specific starting entities var civEntities = getStartingEntities(id-1); // create the TC var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], true, null, ix, iz ); createObjectGroup(group, id); // create starting units var uDist = 6; var uSpace = 2; for (var j = 1; j < civEntities.length; ++j) { var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); for (var numberofentities = 0; numberofentities < count; numberofentities++) { var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); } } // create animals for (var j = 0; j < 2; ++j) { var aAngle = randFloat(0, TWO_PI); var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); createObjectGroup(group, 0); } // create berry bushes var bbAngle = randFloat(0, TWO_PI); var bbDist = 12; var bbX = round(fx + bbDist * cos(bbAngle)); var bbZ = round(fz + bbDist * sin(bbAngle)); group = new SimpleGroup( [new SimpleObject(oBerryBush, 5,5, 0,3)], true, clBaseResource, bbX, bbZ ); createObjectGroup(group, 0); // create metal mine var mAngle = bbAngle; while(abs(mAngle - bbAngle) < PI/3) { mAngle = randFloat(0, TWO_PI); } var mDist = radius - 4; var mX = round(fx + mDist * cos(mAngle)); var mZ = round(fz + mDist * sin(mAngle)); group = new SimpleGroup( [new SimpleObject(oMetalLarge, 1,1, 0,0)], true, clBaseResource, mX, mZ ); createObjectGroup(group, 0); // create stone mines mAngle += randFloat(PI/8, PI/4); mX = round(fx + mDist * cos(mAngle)); mZ = round(fz + mDist * sin(mAngle)); group = new SimpleGroup( [new SimpleObject(oStoneLarge, 1,1, 0,2)], true, clBaseResource, mX, mZ ); createObjectGroup(group, 0); var hillSize = PI * radius * radius; // create starting straggler trees var num = hillSize / 110; for (var j = 0; j < num; j++) { var tAngle = randFloat(0, TWO_PI); var tDist = randFloat(6, radius - 2); var tX = round(fx + tDist * cos(tAngle)); var tZ = round(fz + tDist * sin(tAngle)); group = new SimpleGroup( [new SimpleObject(oBeech, 1,3, 0,2)], false, clBaseResource, tX, tZ ); createObjectGroup(group, 0, avoidClasses(clBaseResource,2)); } // create grass tufts var num = hillSize / 250; for (var j = 0; j < num; j++) { var gAngle = randFloat(0, TWO_PI); var gDist = radius - (5 + randInt(7)); var gX = round(fx + gDist * cos(gAngle)); var gZ = round(fz + gDist * sin(gAngle)); group = new SimpleGroup( [new SimpleObject(aGrassShort, 2,5, 0,1, -PI/8,PI/8)], false, clBaseResource, gX, gZ ); createObjectGroup(group, 0); } } RMS.SetProgress(20); // create bumps log("Creating bumps..."); placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1); painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2); createAreas( placer, painter, avoidClasses(clPlayer, 13), scaleByMapSize(300, 800) ); // calculate desired number of trees for map (based on size) var MIN_TREES = 150; var MAX_TREES = 900; var P_FOREST = 0.65; var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES); var numForest = totalTrees * P_FOREST; var numStragglers = totalTrees * (1.0 - P_FOREST); // create forests log("Creating forests..."); var types = [ [[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]], [[tGrassPForest, tGrass, pForestP], [tGrassPForest, pForestP]] ]; // some variation var size = numForest / (scaleByMapSize(2,8) * numPlayers); var num = 4 * 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, 13, clForest, 20, clHill, 1), num ); } RMS.SetProgress(50); // create grass patches log("Creating grass patches..."); var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 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,tGrassC],[tGrass,tGrassA,tGrassC], [tGrass,tGrassA,tGrassC]], // terrains [1,1] // widths ); createAreas( placer, [painter, paintClass(clDirt)], avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 10), scaleByMapSize(20, 60) ); } // create dirt patches log("Creating dirt 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 LayeredPainter( [tGrassB ,tDirt], // terrains [1] // widths ); createAreas( placer, painter, avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 10), scaleByMapSize(30, 90) ); } RMS.SetProgress(55); 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), scaleByMapSize(1,4), 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), scaleByMapSize(1,4), 100 ); 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), scaleByMapSize(2,8), 100 ); RMS.SetProgress(65); // create small decorative rocks log("Creating small decorative rocks..."); group = new SimpleGroup( [new SimpleObject(aRockMedium, 1,3, 0,1)], true ); createObjectGroups( group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 0), scaleByMapSize(16, 262), 50 ); // create large decorative rocks log("Creating large decorative rocks..."); group = new SimpleGroup( [new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)], true ); createObjectGroups( group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 0), scaleByMapSize(8, 131), 50 ); RMS.SetProgress(70); // create deer log("Creating deer..."); group = new SimpleGroup( [new SimpleObject(oDeer, 5,7, 0,4)], true, clFood ); createObjectGroups(group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 6 * numPlayers, 50 ); RMS.SetProgress(75); // create sheep log("Creating sheep..."); group = new SimpleGroup( [new SimpleObject(oSheep, 2,3, 0,2)], true, clFood ); createObjectGroups(group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 3 * numPlayers, 50 ); RMS.SetProgress(85); // create straggler trees log("Creating straggler trees..."); var types = [oBush, oBeech]; // some variation var num = floor(numStragglers / types.length); for (var i = 0; i < types.length; ++i) { group = new SimpleGroup( [new SimpleObject(types[i], 1,1, 0,3)], true, clForest ); createObjectGroups(group, 0, avoidClasses(clForest, 1, clHill, 1, clPlayer, 13, clMetal, 1, clRock, 1), num ); } // create large grass tufts log("Creating large grass tufts..."); 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), scaleByMapSize(13, 200) ); RMS.SetProgress(95); // create bushes log("Creating bushes..."); 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), scaleByMapSize(13, 200), 50 ); ExportMap(); \ No newline at end of file +RMS.LoadLibrary("rmgen"); var tGrass = ["steppe_grass_a", "steppe_grass_b", "steppe_grass_c", "steppe_grass_d"]; var tGrassPForest = "steppe_grass_c"; var tGrassDForest = "steppe_grass_c"; var tGrassA = "steppe_grass_green_a"; var tGrassB = "steppe_grass_dirt_33"; var tGrassC = ["steppe_grass_b", "steppe_grass_c", "steppe_grass_d"]; var tDirt = ["steppe_dirt_a", "steppe_dirt_b"]; var tRoad = "road_stones"; var tRoadWild = "road_stones"; var tShoreBlend = "desert_shore_stones"; var tShore = "dirta"; var tWater = "desert_sand_wet"; // gaia entities var oBeech = "gaia/flora_tree_euro_beech"; var oBush = "gaia/flora_bush_temperate"; var oBerryBush = "gaia/flora_bush_berry"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_rabbit"; var oFish = "gaia/fauna_fish"; var oSheep = "gaia/fauna_sheep"; var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneSmall = "gaia/geology_stone_mediterranean"; var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; // decorative props var aGrass = "actor|props/flora/grass_soft_small_tall.xml"; var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aRockLarge = "actor|geology/stone_granite_med.xml"; var aRockMedium = "actor|geology/stone_granite_med.xml"; var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oBeech, tGrassDForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oBeech, tGrassPForest]; const BUILDING_ANGlE = 0.75*PI; // initialize map log("Initializing map..."); InitMap(); var numPlayers = getNumPlayers(); var mapSize = getMapSize(); var mapArea = mapSize*mapSize; // create tile classes var clPlayer = createTileClass(); var clHill = createTileClass(); var clForest = createTileClass(); var clWater = createTileClass(); var clDirt = createTileClass(); var clRock = createTileClass(); var clMetal = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); // randomize player order var playerIDs = []; for (var i = 0; i < numPlayers; i++) { playerIDs.push(i+1); } playerIDs = shuffleArray(playerIDs); // place players var playerX = new Array(numPlayers); var playerZ = new Array(numPlayers); var playerAngle = new Array(numPlayers); var startAngle = randFloat(0, TWO_PI); for (var i = 0; i < numPlayers; i++) { playerAngle[i] = startAngle + i*TWO_PI/numPlayers; playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); } for (var i = 0; i < numPlayers; i++) { var id = playerIDs[i]; log("Creating base for player " + id + "..."); // some constants var radius = scaleByMapSize(15,25); var cliffRadius = 2; var elevation = 20; // get the x and z in tiles var fx = fractionToTiles(playerX[i]); var fz = fractionToTiles(playerZ[i]); var ix = round(fx); var iz = round(fz); addToClass(ix, iz, clPlayer); addToClass(ix+5, iz, clPlayer); addToClass(ix, iz+5, clPlayer); addToClass(ix-5, iz, clPlayer); addToClass(ix, iz-5, clPlayer); // create the city patch var cityRadius = radius/3; var placer = new ClumpPlacer(PI*cityRadius*cityRadius, 0.6, 0.3, 10, ix, iz); var painter = new LayeredPainter([tRoadWild, tRoad], [1]); createArea(placer, painter, null); // get civ specific starting entities var civEntities = getStartingEntities(id-1); // create starting units createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) { var aAngle = randFloat(0, TWO_PI); var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); createObjectGroup(group, 0); } // create berry bushes var bbAngle = randFloat(0, TWO_PI); var bbDist = 12; var bbX = round(fx + bbDist * cos(bbAngle)); var bbZ = round(fz + bbDist * sin(bbAngle)); group = new SimpleGroup( [new SimpleObject(oBerryBush, 5,5, 0,3)], true, clBaseResource, bbX, bbZ ); createObjectGroup(group, 0); // create metal mine var mAngle = bbAngle; while(abs(mAngle - bbAngle) < PI/3) { mAngle = randFloat(0, TWO_PI); } var mDist = radius - 4; var mX = round(fx + mDist * cos(mAngle)); var mZ = round(fz + mDist * sin(mAngle)); group = new SimpleGroup( [new SimpleObject(oMetalLarge, 1,1, 0,0)], true, clBaseResource, mX, mZ ); createObjectGroup(group, 0); // create stone mines mAngle += randFloat(PI/8, PI/4); mX = round(fx + mDist * cos(mAngle)); mZ = round(fz + mDist * sin(mAngle)); group = new SimpleGroup( [new SimpleObject(oStoneLarge, 1,1, 0,2)], true, clBaseResource, mX, mZ ); createObjectGroup(group, 0); var hillSize = PI * radius * radius; // create starting straggler trees var num = hillSize / 110; for (var j = 0; j < num; j++) { var tAngle = randFloat(0, TWO_PI); var tDist = randFloat(6, radius - 2); var tX = round(fx + tDist * cos(tAngle)); var tZ = round(fz + tDist * sin(tAngle)); group = new SimpleGroup( [new SimpleObject(oBeech, 1,3, 0,2)], false, clBaseResource, tX, tZ ); createObjectGroup(group, 0, avoidClasses(clBaseResource,2)); } // create grass tufts var num = hillSize / 250; for (var j = 0; j < num; j++) { var gAngle = randFloat(0, TWO_PI); var gDist = radius - (5 + randInt(7)); var gX = round(fx + gDist * cos(gAngle)); var gZ = round(fz + gDist * sin(gAngle)); group = new SimpleGroup( [new SimpleObject(aGrassShort, 2,5, 0,1, -PI/8,PI/8)], false, clBaseResource, gX, gZ ); createObjectGroup(group, 0); } } RMS.SetProgress(20); // create bumps log("Creating bumps..."); placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1); painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2); createAreas( placer, painter, avoidClasses(clPlayer, 13), scaleByMapSize(300, 800) ); // calculate desired number of trees for map (based on size) var MIN_TREES = 150; var MAX_TREES = 900; var P_FOREST = 0.65; var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES); var numForest = totalTrees * P_FOREST; var numStragglers = totalTrees * (1.0 - P_FOREST); // create forests log("Creating forests..."); var types = [ [[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]], [[tGrassPForest, tGrass, pForestP], [tGrassPForest, pForestP]] ]; // some variation var size = numForest / (scaleByMapSize(2,8) * numPlayers); var num = 4 * 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, 13, clForest, 20, clHill, 1), num ); } RMS.SetProgress(50); // create grass patches log("Creating grass patches..."); var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 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,tGrassC],[tGrass,tGrassA,tGrassC], [tGrass,tGrassA,tGrassC]], // terrains [1,1] // widths ); createAreas( placer, [painter, paintClass(clDirt)], avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 10), scaleByMapSize(20, 60) ); } // create dirt patches log("Creating dirt 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 LayeredPainter( [tGrassB ,tDirt], // terrains [1] // widths ); createAreas( placer, painter, avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 10), scaleByMapSize(30, 90) ); } RMS.SetProgress(55); 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), scaleByMapSize(1,4), 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), scaleByMapSize(1,4), 100 ); 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), scaleByMapSize(2,8), 100 ); RMS.SetProgress(65); // create small decorative rocks log("Creating small decorative rocks..."); group = new SimpleGroup( [new SimpleObject(aRockMedium, 1,3, 0,1)], true ); createObjectGroups( group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 0), scaleByMapSize(16, 262), 50 ); // create large decorative rocks log("Creating large decorative rocks..."); group = new SimpleGroup( [new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)], true ); createObjectGroups( group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 0), scaleByMapSize(8, 131), 50 ); RMS.SetProgress(70); // create deer log("Creating deer..."); group = new SimpleGroup( [new SimpleObject(oDeer, 5,7, 0,4)], true, clFood ); createObjectGroups(group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 6 * numPlayers, 50 ); RMS.SetProgress(75); // create sheep log("Creating sheep..."); group = new SimpleGroup( [new SimpleObject(oSheep, 2,3, 0,2)], true, clFood ); createObjectGroups(group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 3 * numPlayers, 50 ); RMS.SetProgress(85); // create straggler trees log("Creating straggler trees..."); var types = [oBush, oBeech]; // some variation var num = floor(numStragglers / types.length); for (var i = 0; i < types.length; ++i) { group = new SimpleGroup( [new SimpleObject(types[i], 1,1, 0,3)], true, clForest ); createObjectGroups(group, 0, avoidClasses(clForest, 1, clHill, 1, clPlayer, 13, clMetal, 1, clRock, 1), num ); } // create large grass tufts log("Creating large grass tufts..."); 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), scaleByMapSize(13, 200) ); RMS.SetProgress(95); // create bushes log("Creating bushes..."); 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), scaleByMapSize(13, 200), 50 ); ExportMap(); \ No newline at end of file diff --git a/binaries/data/mods/public/maps/random/atlas_mountains.js b/binaries/data/mods/public/maps/random/atlas_mountains.js index cad2f163c9..e7e5d5a82f 100644 --- a/binaries/data/mods/public/maps/random/atlas_mountains.js +++ b/binaries/data/mods/public/maps/random/atlas_mountains.js @@ -123,27 +123,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -152,7 +133,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/cantabrian_highlands.js b/binaries/data/mods/public/maps/random/cantabrian_highlands.js index 7a731f9709..c436afd929 100644 --- a/binaries/data/mods/public/maps/random/cantabrian_highlands.js +++ b/binaries/data/mods/public/maps/random/cantabrian_highlands.js @@ -146,27 +146,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -175,7 +156,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/continent.js b/binaries/data/mods/public/maps/random/continent.js index a96900aa0a..ed2880988e 100644 --- a/binaries/data/mods/public/maps/random/continent.js +++ b/binaries/data/mods/public/maps/random/continent.js @@ -1,338 +1,48 @@ RMS.LoadLibrary("rmgen"); //random terrain textures -var rt = randInt(1,7); -//temperate -if (rt == 1){ -var tGrass = ["temp_grass_long_b"]; -var tGrassPForest = "temp_forestfloor_pine"; -var tGrassDForest = "temp_plants_bog"; -var tCliff = ["temp_cliff_a", "temp_cliff_b"]; -var tGrassA = "temp_grass_d"; -var tGrassB = "temp_grass_c"; -var tGrassC = "temp_grass_clovers_2"; -var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tRoad = "temp_road"; -var tRoadWild = "temp_road_overgrown"; -var tGrassPatch = "temp_grass_plants"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "sand_grass_25"; -var tWater = "medit_sand_wet"; +var rt = 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(); // gaia entities -var oOak = "gaia/flora_tree_oak"; -var oOakLarge = "gaia/flora_tree_oak_large"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; +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(); // decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/pond_lillies_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//snowy -else if (rt == 2) -{ -setSunColour(0.550, 0.601, 0.644); // a little darker - -var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"]; -var tGrassPForest = "polar_tundra_snow"; -var tGrassDForest = "polar_tundra_snow"; -var tCliff = ["polar_cliff_a", "polar_cliff_b"]; -var tGrassA = "snow grass 2"; -var tGrassB = "polar_snow_a"; -var tGrassC = "polar_ice_snow"; -var tHill = ["polar_snow_rocks", "polar_cliff_snow"]; -var tDirt = ["polar_ice_b", "polar_ice_c"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "polar_ice_cracked"; -var tGrassPatch = "snow grass 2"; -var tShoreBlend = "polar_ice"; -var tShore = "snow_glacial_01"; -var tWater = "polar_ice_c"; - -// gaia entities -var oOak = "gaia/flora_tree_pine_w"; -var oOakLarge = "gaia/flora_tree_pine_w"; -var oApple = "gaia/flora_tree_pine_w"; -var oPine = "gaia/flora_tree_pine_w"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_muskox"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_walrus"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) - -} -//desert -else if (rt == 3) -{ -setSunColour(0.733, 0.746, 0.574); - -var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; -var tGrassPForest = "forestfloor_dirty"; -var tGrassDForest = "desert_forestfloor_palms"; -var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"]; -var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"]; -var tGrassB = "dirta"; -var tGrassC = "medit_dirt_dry"; -var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"]; -var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"]; -var tRoad = "desert_city_tile"; -var tRoadWild = "desert_city_tile"; -var tGrassPatch = "desert_dirt_rough"; -var tShoreBlend = "desert_shore_stones"; -var tShore = "dirta"; -var tWater = "desert_sand_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall"; -var oApple = "gaia/flora_tree_fig"; -var oPine = "gaia/flora_tree_dead"; -var oAleppoPine = "gaia/flora_tree_date_palm"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_camel"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_desert_small"; -var oMetalLarge = "gaia/geology_metal_desert_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_desert_med.xml"; -var aRockMedium = "actor|geology/stone_desert_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; -// terrain + entity (for painting) -} -//alpine -else if (rt == 4) -{ -var tGrass = ["alpine_dirt_grass_50"]; -var tGrassPForest = "alpine_forrestfloor"; -var tGrassDForest = "alpine_forrestfloor"; -var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"]; -var tGrassA = "alpine_grass_rocky"; -var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"]; -var tGrassC = ["alpine_snow_a", "alpine_snow_b"]; -var tHill = "alpine_cliff_snow"; -var tDirt = ["alpine_dirt", "alpine_grass_d"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "new_alpine_citytile"; -var tGrassPatch = "new_alpine_grass_a"; -var tShoreBlend = "alpine_shore_rocks"; -var tShore = "alpine_shore_rocks_grass_50"; -var tWater = "alpine_shore_rocks"; - -// gaia entities -var oOak = "gaia/flora_tree_pine"; -var oOakLarge = "gaia/flora_tree_pine"; -var oApple = "gaia/flora_tree_pine"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_goat"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_deer"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) -} -//medit -else if (rt == 5){ -var tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; -var tGrassPForest = "medit_plants_dirt"; -var tGrassDForest = "medit_grass_shrubs"; -var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"]; -var tGrassA = "medit_grass_field_b"; -var tGrassB = "medit_grass_field_brown"; -var tGrassC = "medit_grass_field_dry"; -var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"]; -var tDirt = ["medit_dirt", "medit_dirt_b"]; -var tRoad = "medit_city_tile"; -var tRoadWild = "medit_city_tile"; -var tGrassPatch = "medit_grass_wild"; -var tShoreBlend = "medit_sand"; -var tShore = "sand_grass_25"; -var tWater = "medit_sand_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_medit_fan_palm"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_cypress"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/pond_lillies_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//savanah -else if (rt == 6) -{ -var tGrass = ["savanna_grass_a", "savanna_grass_b"]; -var tGrassPForest = "savanna_forestfloor_a"; -var tGrassDForest = "savanna_forestfloor_b"; -var tCliff = ["savanna_cliff_a", "savanna_cliff_b"]; -var tGrassA = "savanna_shrubs_a"; -var tGrassB = "savanna_dirt_rocks_b"; -var tGrassC = "dirt_brown_e"; -var tHill = ["savanna_grass_a", "savanna_grass_b"]; -var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"]; -var tRoad = "savanna_tile_a"; -var tRoadWild = "savanna_tile_a"; -var tGrassPatch = "savanna_grass_a"; -var tShoreBlend = "savanna_riparian"; -var tShore = "savanna_riparian_bank"; -var tWater = "savanna_riparian_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_baobab"; -var oOakLarge = "gaia/flora_tree_baobab"; -var oApple = "gaia/flora_tree_baobab"; -var oPine = "gaia/flora_tree_baobab"; -var oAleppoPine = "gaia/flora_tree_baobab"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var rts = randInt(1,4); -if (rts==1){ -var oDeer = "gaia/fauna_wildebeest"; -} -else if (rts==2) -{ -var oDeer = "gaia/fauna_zebra"; -} -else if (rts==3) -{ -var oDeer = "gaia/fauna_giraffe"; -} -else if (rts==4) -{ -var oDeer = "gaia/fauna_elephant_african_bush"; -} -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_savanna_small"; -var oMetalLarge = "gaia/geology_metal_savanna_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_savanna.xml"; -var aGrassShort = "actor|props/flora/grass_medit_field.xml"; -var aRockLarge = "actor|geology/stone_savanna_med.xml"; -var aRockMedium = "actor|geology/stone_savanna_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_dry_a.xml"; -// terrain + entity (for painting) -} -else if (rt == 7){ -var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"]; -var tGrassPForest = "tropic_plants_c"; -var tGrassDForest = "tropic_plants_c"; -var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"]; -var tGrassA = "tropic_grass_c"; -var tGrassB = "tropic_grass_plants"; -var tGrassC = "tropic_plants"; -var tHill = ["tropic_cliff_grass"]; -var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"]; -var tRoad = "tropic_citytile_a"; -var tRoadWild = "tropic_citytile_plants"; -var tGrassPatch = "tropic_plants_b"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "tropic_beach_dry"; -var tWater = "tropic_beach_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_poplar"; -var oOakLarge = "gaia/flora_tree_poplar"; -var oApple = "gaia/flora_tree_poplar"; -var oPine = "gaia/flora_tree_cretan_date_palm_short"; -var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_tiger"; -var oStoneLarge = "gaia/geology_stonemine_tropic_quarry"; -var oStoneSmall = "gaia/geology_stone_tropic_a"; -var oMetalLarge = "gaia/geology_metal_tropic_slabs"; - -// decorative props -var aGrass = "actor|props/flora/plant_tropic_a.xml"; -var aGrassShort = "actor|props/flora/plant_lg.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_b.xml"; -var aLillies = "actor|props/flora/water_lillies.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/plant_tropic_large.xml"; -var aBushSmall = "actor|props/flora/plant_tropic_large.xml"; - -// terrain + entity (for painting) - -} +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 pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; @@ -443,28 +153,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -473,7 +163,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/guadalquivir_river.js b/binaries/data/mods/public/maps/random/guadalquivir_river.js index 9d0c269232..6c9fb32e86 100644 --- a/binaries/data/mods/public/maps/random/guadalquivir_river.js +++ b/binaries/data/mods/public/maps/random/guadalquivir_river.js @@ -1,48 +1,5 @@ RMS.LoadLibrary("rmgen"); -function rndRiver(f, seed) -{ - var rndRq = seed; - var rndRw = rndRq; - var rndRe = 0; - var rndRr = f-floor(f); - var rndRa = 0; - for (var rndRx=0; rndRx<=floor(f); rndRx++) - { - rndRw = 10*(rndRw-floor(rndRw)); - } - if (rndRx%2==0) - { - var rndRs = -1; - } - else - { - var rndRs = 1; - } - rndRe = (floor(rndRw))%5; - if (rndRe==0) - { - rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5); - } - else if (rndRe==1) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7); - } - else if (rndRe==2) - { - rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8); - } - else if (rndRe==3) - { - rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8); - } - else if (rndRe==4) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7); - } - return rndRa; -} - var tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; var tGrassPForest = "medit_plants_dirt"; var tGrassDForest = "medit_grass_shrubs"; @@ -187,36 +144,17 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) { var aAngle = randFloat(0, TWO_PI); - var aDist = 7; + var aDist = 6; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); @@ -225,7 +163,7 @@ for (var i = 0; i < numPlayers; i++) // create berry bushes var bbAngle = randFloat(0, TWO_PI); - var bbDist = 12; + var bbDist = 8; var bbX = round(fx + bbDist * cos(bbAngle)); var bbZ = round(fz + bbDist * sin(bbAngle)); group = new SimpleGroup( @@ -240,7 +178,7 @@ for (var i = 0; i < numPlayers; i++) { mAngle = randFloat(0, TWO_PI); } - var mDist = radius - 4; + var mDist = radius - 7; var mX = round(fx + mDist * cos(mAngle)); var mZ = round(fz + mDist * sin(mAngle)); group = new SimpleGroup( diff --git a/binaries/data/mods/public/maps/random/hyrcanian_shores.js b/binaries/data/mods/public/maps/random/hyrcanian_shores.js index 7ff11fb167..62c359407b 100644 --- a/binaries/data/mods/public/maps/random/hyrcanian_shores.js +++ b/binaries/data/mods/public/maps/random/hyrcanian_shores.js @@ -1,47 +1,5 @@ RMS.LoadLibrary("rmgen"); -function rndRiver(f, seed) -{ - var rndRq = sqrt(seed); - var rndRw = rndRq; - var rndRe = 0; - var rndRr = f-floor(f); - var rndRa = 0; - for (var rndRx=0; rndRx<=floor(f); rndRx++) - { - rndRw = 10*(rndRw-floor(rndRw)); - } - if (rndRx%2==0) - { - var rndRs = -1; - } - else - { - var rndRs = 1; - } - rndRe = (floor(rndRw))%5; - if (rndRe==0) - { - rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5); - } - else if (rndRe==1) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7); - } - else if (rndRe==2) - { - rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8); - } - else if (rndRe==3) - { - rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8); - } - else if (rndRe==4) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7); - } - return rndRa; -} // terrain textures const tGrass = ["temp_grass_clovers"]; @@ -172,36 +130,17 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) - // create chickens + // create animals for (var j = 0; j < 2; ++j) { var aAngle = randFloat(0, TWO_PI); var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/islands.js b/binaries/data/mods/public/maps/random/islands.js index 5a1841e890..dd16033699 100644 --- a/binaries/data/mods/public/maps/random/islands.js +++ b/binaries/data/mods/public/maps/random/islands.js @@ -282,27 +282,9 @@ if((numPlayers>=6)||(i==startingPlaces[numPlayers-1][nPlayer])){ // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) + nPlayer++; } diff --git a/binaries/data/mods/public/maps/random/lake.js b/binaries/data/mods/public/maps/random/lake.js index 4fd5c68ff5..f04e0cc300 100644 --- a/binaries/data/mods/public/maps/random/lake.js +++ b/binaries/data/mods/public/maps/random/lake.js @@ -2,339 +2,48 @@ RMS.LoadLibrary("rmgen"); //random terrain textures -var rt = randInt(1,7); -//temperate -if (rt == 1){ -var tGrass = ["temp_grass_long_b"]; -var tGrassPForest = "temp_forestfloor_pine"; -var tGrassDForest = "temp_plants_bog"; -var tCliff = ["temp_cliff_a", "temp_cliff_b"]; -var tGrassA = "temp_grass_d"; -var tGrassB = "temp_grass_c"; -var tGrassC = "temp_grass_clovers_2"; -var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tRoad = "temp_road"; -var tRoadWild = "temp_road_overgrown"; -var tGrassPatch = "temp_grass_plants"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "sand_grass_25"; -var tWater = "medit_sand_wet"; +var rt = 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(); // gaia entities -var oOak = "gaia/flora_tree_oak"; -var oOakLarge = "gaia/flora_tree_oak_large"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; +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(); // decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/pond_lillies_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//snowy -else if (rt == 2) -{ -setSunColour(0.550, 0.601, 0.644); // a little darker - -var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"]; -var tGrassPForest = "polar_tundra_snow"; -var tGrassDForest = "polar_tundra_snow"; -var tCliff = ["polar_cliff_a", "polar_cliff_b"]; -var tGrassA = "snow grass 2"; -var tGrassB = "polar_snow_a"; -var tGrassC = "polar_ice_snow"; -var tHill = ["polar_snow_rocks", "polar_cliff_snow"]; -var tDirt = ["polar_ice_b", "polar_ice_c"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "polar_ice_cracked"; -var tGrassPatch = "snow grass 2"; -var tShoreBlend = "polar_ice"; -var tShore = "snow_glacial_01"; -var tWater = "polar_ice_c"; - -// gaia entities -var oOak = "gaia/flora_tree_pine_w"; -var oOakLarge = "gaia/flora_tree_pine_w"; -var oApple = "gaia/flora_tree_pine_w"; -var oPine = "gaia/flora_tree_pine_w"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_muskox"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_walrus"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) - -} -//desert -else if (rt == 3) -{ -setSunColour(0.733, 0.746, 0.574); - -var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; -var tGrassPForest = "forestfloor_dirty"; -var tGrassDForest = "desert_forestfloor_palms"; -var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"]; -var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"]; -var tGrassB = "dirta"; -var tGrassC = "medit_dirt_dry"; -var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"]; -var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"]; -var tRoad = "desert_city_tile"; -var tRoadWild = "desert_city_tile"; -var tGrassPatch = "desert_dirt_rough"; -var tShoreBlend = "desert_shore_stones"; -var tShore = "dirta"; -var tWater = "desert_sand_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall"; -var oApple = "gaia/flora_tree_fig"; -var oPine = "gaia/flora_tree_dead"; -var oAleppoPine = "gaia/flora_tree_date_palm"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_camel"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_desert_small"; -var oMetalLarge = "gaia/geology_metal_desert_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_desert_med.xml"; -var aRockMedium = "actor|geology/stone_desert_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; -// terrain + entity (for painting) -} -//alpine -else if (rt == 4) -{ -var tGrass = ["alpine_dirt_grass_50"]; -var tGrassPForest = "alpine_forrestfloor"; -var tGrassDForest = "alpine_forrestfloor"; -var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"]; -var tGrassA = "alpine_grass_rocky"; -var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"]; -var tGrassC = ["alpine_snow_a", "alpine_snow_b"]; -var tHill = "alpine_cliff_snow"; -var tDirt = ["alpine_dirt", "alpine_grass_d"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "new_alpine_citytile"; -var tGrassPatch = "new_alpine_grass_a"; -var tShoreBlend = "alpine_shore_rocks"; -var tShore = "alpine_shore_rocks_grass_50"; -var tWater = "alpine_shore_rocks"; - -// gaia entities -var oOak = "gaia/flora_tree_pine"; -var oOakLarge = "gaia/flora_tree_pine"; -var oApple = "gaia/flora_tree_pine"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_goat"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_deer"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) -} -//medit -else if (rt == 5){ -var tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; -var tGrassPForest = "medit_plants_dirt"; -var tGrassDForest = "medit_grass_shrubs"; -var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"]; -var tGrassA = "medit_grass_field_b"; -var tGrassB = "medit_grass_field_brown"; -var tGrassC = "medit_grass_field_dry"; -var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"]; -var tDirt = ["medit_dirt", "medit_dirt_b"]; -var tRoad = "medit_city_tile"; -var tRoadWild = "medit_city_tile"; -var tGrassPatch = "medit_grass_wild"; -var tShoreBlend = "medit_sand"; -var tShore = "sand_grass_25"; -var tWater = "medit_sand_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_medit_fan_palm"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_cypress"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/pond_lillies_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//savanah -else if (rt == 6) -{ -var tGrass = ["savanna_grass_a", "savanna_grass_b"]; -var tGrassPForest = "savanna_forestfloor_a"; -var tGrassDForest = "savanna_forestfloor_b"; -var tCliff = ["savanna_cliff_a", "savanna_cliff_b"]; -var tGrassA = "savanna_shrubs_a"; -var tGrassB = "savanna_dirt_rocks_b"; -var tGrassC = "dirt_brown_e"; -var tHill = ["savanna_grass_a", "savanna_grass_b"]; -var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"]; -var tRoad = "savanna_tile_a"; -var tRoadWild = "savanna_tile_a"; -var tGrassPatch = "savanna_grass_a"; -var tShoreBlend = "savanna_riparian"; -var tShore = "savanna_riparian_bank"; -var tWater = "savanna_riparian_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_baobab"; -var oOakLarge = "gaia/flora_tree_baobab"; -var oApple = "gaia/flora_tree_baobab"; -var oPine = "gaia/flora_tree_baobab"; -var oAleppoPine = "gaia/flora_tree_baobab"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var rts = randInt(1,4); -if (rts==1){ -var oDeer = "gaia/fauna_wildebeest"; -} -else if (rts==2) -{ -var oDeer = "gaia/fauna_zebra"; -} -else if (rts==3) -{ -var oDeer = "gaia/fauna_giraffe"; -} -else if (rts==4) -{ -var oDeer = "gaia/fauna_elephant_african_bush"; -} -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_savanna_small"; -var oMetalLarge = "gaia/geology_metal_savanna_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_savanna.xml"; -var aGrassShort = "actor|props/flora/grass_medit_field.xml"; -var aRockLarge = "actor|geology/stone_savanna_med.xml"; -var aRockMedium = "actor|geology/stone_savanna_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_dry_a.xml"; -// terrain + entity (for painting) -} -//tropic -else if (rt == 7){ -var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"]; -var tGrassPForest = "tropic_plants_c"; -var tGrassDForest = "tropic_plants_c"; -var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"]; -var tGrassA = "tropic_grass_c"; -var tGrassB = "tropic_grass_plants"; -var tGrassC = "tropic_plants"; -var tHill = ["tropic_cliff_grass"]; -var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"]; -var tRoad = "tropic_citytile_a"; -var tRoadWild = "tropic_citytile_plants"; -var tGrassPatch = "tropic_plants_b"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "tropic_beach_dry"; -var tWater = "tropic_beach_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_poplar"; -var oOakLarge = "gaia/flora_tree_poplar"; -var oApple = "gaia/flora_tree_poplar"; -var oPine = "gaia/flora_tree_cretan_date_palm_short"; -var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_tiger"; -var oStoneLarge = "gaia/geology_stonemine_tropic_quarry"; -var oStoneSmall = "gaia/geology_stone_tropic_a"; -var oMetalLarge = "gaia/geology_metal_tropic_slabs"; - -// decorative props -var aGrass = "actor|props/flora/plant_tropic_a.xml"; -var aGrassShort = "actor|props/flora/plant_lg.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_b.xml"; -var aLillies = "actor|props/flora/water_lillies.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/plant_tropic_large.xml"; -var aBushSmall = "actor|props/flora/plant_tropic_large.xml"; - -// terrain + entity (for painting) - -} +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 pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; @@ -444,27 +153,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -473,7 +163,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/latium.js b/binaries/data/mods/public/maps/random/latium.js index dbebf85d30..72cc8cb301 100644 --- a/binaries/data/mods/public/maps/random/latium.js +++ b/binaries/data/mods/public/maps/random/latium.js @@ -433,27 +433,8 @@ for (var i = 1; i <= numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -462,7 +443,7 @@ for (var i = 1; i <= numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/migration.js b/binaries/data/mods/public/maps/random/migration.js index 7ce7938d60..c9d385c9d7 100644 --- a/binaries/data/mods/public/maps/random/migration.js +++ b/binaries/data/mods/public/maps/random/migration.js @@ -2,338 +2,48 @@ RMS.LoadLibrary("rmgen"); //random terrain textures -var rt = randInt(1,7); -//temperate -if (rt == 1){ -var tGrass = ["temp_grass_long_b"]; -var tGrassPForest = "temp_forestfloor_pine"; -var tGrassDForest = "temp_plants_bog"; -var tCliff = ["temp_cliff_a", "temp_cliff_b"]; -var tGrassA = "temp_grass_d"; -var tGrassB = "temp_grass_c"; -var tGrassC = "temp_grass_clovers_2"; -var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tRoad = "temp_road"; -var tRoadWild = "temp_road_overgrown"; -var tGrassPatch = "temp_grass_plants"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "sand_grass_25"; -var tWater = "medit_sand_wet"; +var rt = 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(); // gaia entities -var oOak = "gaia/flora_tree_oak"; -var oOakLarge = "gaia/flora_tree_oak_large"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; +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(); // decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/pond_lillies_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//snowy -else if (rt == 2) -{ -setSunColour(0.550, 0.601, 0.644); // a little darker - -var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"]; -var tGrassPForest = "polar_tundra_snow"; -var tGrassDForest = "polar_tundra_snow"; -var tCliff = ["polar_cliff_a", "polar_cliff_b"]; -var tGrassA = "snow grass 2"; -var tGrassB = "polar_snow_a"; -var tGrassC = "polar_ice_snow"; -var tHill = ["polar_snow_rocks", "polar_cliff_snow"]; -var tDirt = ["polar_ice_b", "polar_ice_c"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "polar_ice_cracked"; -var tGrassPatch = "snow grass 2"; -var tShoreBlend = "polar_ice"; -var tShore = "snow_glacial_01"; -var tWater = "polar_ice_c"; - -// gaia entities -var oOak = "gaia/flora_tree_pine_w"; -var oOakLarge = "gaia/flora_tree_pine_w"; -var oApple = "gaia/flora_tree_pine_w"; -var oPine = "gaia/flora_tree_pine_w"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_muskox"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_walrus"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) - -} -//desert -else if (rt == 3) -{ -setSunColour(0.733, 0.746, 0.574); - -var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; -var tGrassPForest = "forestfloor_dirty"; -var tGrassDForest = "desert_forestfloor_palms"; -var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"]; -var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"]; -var tGrassB = "dirta"; -var tGrassC = "medit_dirt_dry"; -var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"]; -var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"]; -var tRoad = "desert_city_tile"; -var tRoadWild = "desert_city_tile"; -var tGrassPatch = "desert_dirt_rough"; -var tShoreBlend = "desert_shore_stones"; -var tShore = "dirta"; -var tWater = "desert_sand_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall"; -var oApple = "gaia/flora_tree_fig"; -var oPine = "gaia/flora_tree_dead"; -var oAleppoPine = "gaia/flora_tree_date_palm"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_camel"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_desert_small"; -var oMetalLarge = "gaia/geology_metal_desert_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_desert_med.xml"; -var aRockMedium = "actor|geology/stone_desert_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; -// terrain + entity (for painting) -} -//alpine -else if (rt == 4) -{ -var tGrass = ["alpine_dirt_grass_50"]; -var tGrassPForest = "alpine_forrestfloor"; -var tGrassDForest = "alpine_forrestfloor"; -var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"]; -var tGrassA = "alpine_grass_rocky"; -var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"]; -var tGrassC = ["alpine_snow_a", "alpine_snow_b"]; -var tHill = "alpine_cliff_snow"; -var tDirt = ["alpine_dirt", "alpine_grass_d"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "new_alpine_citytile"; -var tGrassPatch = "new_alpine_grass_a"; -var tShoreBlend = "alpine_shore_rocks"; -var tShore = "alpine_shore_rocks_grass_50"; -var tWater = "alpine_shore_rocks"; - -// gaia entities -var oOak = "gaia/flora_tree_pine"; -var oOakLarge = "gaia/flora_tree_pine"; -var oApple = "gaia/flora_tree_pine"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_goat"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_deer"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) -} -//medit -else if (rt == 5){ -var tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; -var tGrassPForest = "medit_plants_dirt"; -var tGrassDForest = "medit_grass_shrubs"; -var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"]; -var tGrassA = "medit_grass_field_b"; -var tGrassB = "medit_grass_field_brown"; -var tGrassC = "medit_grass_field_dry"; -var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"]; -var tDirt = ["medit_dirt", "medit_dirt_b"]; -var tRoad = "medit_city_tile"; -var tRoadWild = "medit_city_tile"; -var tGrassPatch = "medit_grass_wild"; -var tShoreBlend = "medit_sand"; -var tShore = "sand_grass_25"; -var tWater = "medit_sand_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_medit_fan_palm"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_cypress"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/pond_lillies_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//savanah -else if (rt == 6) -{ -var tGrass = ["savanna_grass_a", "savanna_grass_b"]; -var tGrassPForest = "savanna_forestfloor_a"; -var tGrassDForest = "savanna_forestfloor_b"; -var tCliff = ["savanna_cliff_a", "savanna_cliff_b"]; -var tGrassA = "savanna_shrubs_a"; -var tGrassB = "savanna_dirt_rocks_b"; -var tGrassC = "dirt_brown_e"; -var tHill = ["savanna_grass_a", "savanna_grass_b"]; -var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"]; -var tRoad = "savanna_tile_a"; -var tRoadWild = "savanna_tile_a"; -var tGrassPatch = "savanna_grass_a"; -var tShoreBlend = "savanna_riparian"; -var tShore = "savanna_riparian_bank"; -var tWater = "savanna_riparian_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_baobab"; -var oOakLarge = "gaia/flora_tree_baobab"; -var oApple = "gaia/flora_tree_baobab"; -var oPine = "gaia/flora_tree_baobab"; -var oAleppoPine = "gaia/flora_tree_baobab"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var rts = randInt(1,4); -if (rts==1){ -var oDeer = "gaia/fauna_wildebeest"; -} -else if (rts==2) -{ -var oDeer = "gaia/fauna_zebra"; -} -else if (rts==3) -{ -var oDeer = "gaia/fauna_giraffe"; -} -else if (rts==4) -{ -var oDeer = "gaia/fauna_elephant_african_bush"; -} -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_savanna_small"; -var oMetalLarge = "gaia/geology_metal_savanna_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_savanna.xml"; -var aGrassShort = "actor|props/flora/grass_medit_field.xml"; -var aRockLarge = "actor|geology/stone_savanna_med.xml"; -var aRockMedium = "actor|geology/stone_savanna_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_dry_a.xml"; -// terrain + entity (for painting) -} -else if (rt == 7){ -var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"]; -var tGrassPForest = "tropic_plants_c"; -var tGrassDForest = "tropic_plants_c"; -var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"]; -var tGrassA = "tropic_grass_c"; -var tGrassB = "tropic_grass_plants"; -var tGrassC = "tropic_plants"; -var tHill = ["tropic_cliff_grass"]; -var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"]; -var tRoad = "tropic_citytile_a"; -var tRoadWild = "tropic_citytile_plants"; -var tGrassPatch = "tropic_plants_b"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "tropic_beach_dry"; -var tWater = "tropic_beach_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_poplar"; -var oOakLarge = "gaia/flora_tree_poplar"; -var oApple = "gaia/flora_tree_poplar"; -var oPine = "gaia/flora_tree_cretan_date_palm_short"; -var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_tiger"; -var oStoneLarge = "gaia/geology_stonemine_tropic_quarry"; -var oStoneSmall = "gaia/geology_stone_tropic_a"; -var oMetalLarge = "gaia/geology_metal_tropic_slabs"; - -// decorative props -var aGrass = "actor|props/flora/plant_tropic_a.xml"; -var aGrassShort = "actor|props/flora/plant_lg.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_b.xml"; -var aLillies = "actor|props/flora/water_lillies.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/plant_tropic_large.xml"; -var aBushSmall = "actor|props/flora/plant_tropic_large.xml"; - -// terrain + entity (for painting) - -} +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 pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; @@ -444,27 +154,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -473,7 +164,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/new_rms_test.js b/binaries/data/mods/public/maps/random/new_rms_test.js index 099e289b36..56433857d4 100644 --- a/binaries/data/mods/public/maps/random/new_rms_test.js +++ b/binaries/data/mods/public/maps/random/new_rms_test.js @@ -58,28 +58,12 @@ for (var i=0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) + } + + // Export map data ExportMap(); diff --git a/binaries/data/mods/public/maps/random/persian_highlands.js b/binaries/data/mods/public/maps/random/persian_highlands.js index aff94028c2..ce940c8c1d 100644 --- a/binaries/data/mods/public/maps/random/persian_highlands.js +++ b/binaries/data/mods/public/maps/random/persian_highlands.js @@ -113,27 +113,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -142,7 +123,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/pheonician_levant.js b/binaries/data/mods/public/maps/random/pheonician_levant.js index bbb73f208e..1e14828a72 100644 --- a/binaries/data/mods/public/maps/random/pheonician_levant.js +++ b/binaries/data/mods/public/maps/random/pheonician_levant.js @@ -1,48 +1,7 @@ RMS.LoadLibrary("rmgen"); //TILE_CENTERED_HEIGHT_MAP = true; -function rndRiver(f, seed) -{ - var rndRq = seed; - var rndRw = rndRq; - var rndRe = 0; - var rndRr = f-floor(f); - var rndRa = 0; - for (var rndRx=0; rndRx<=floor(f); rndRx++) - { - rndRw = 10*(rndRw-floor(rndRw)); - } - if (rndRx%2==0) - { - var rndRs = -1; - } - else - { - var rndRs = 1; - } - rndRe = (floor(rndRw))%5; - if (rndRe==0) - { - rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5); - } - else if (rndRe==1) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7); - } - else if (rndRe==2) - { - rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8); - } - else if (rndRe==3) - { - rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8); - } - else if (rndRe==4) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7); - } - return rndRa; -} + const tCity = "medit_city_pavement"; const tCityPlaza = "medit_city_pavement"; @@ -158,27 +117,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -187,7 +127,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/rivers.js b/binaries/data/mods/public/maps/random/rivers.js index 2d3a1efb8d..2b3817d37a 100644 --- a/binaries/data/mods/public/maps/random/rivers.js +++ b/binaries/data/mods/public/maps/random/rivers.js @@ -1,395 +1,49 @@ RMS.LoadLibrary("rmgen"); -//very important. DO NOT CHANGE ANYTHING. this is -//rndRiver is a fuction that creates random values useful for making the river jagged. -//it works the same as sin or cos function. the only difference is that it's period is 1 instead of 2*pi -//it needs the "seed" parameter to use it to make random curves that don't get broken. -//seed must be created using randFloat(). or else it won't work -function rndRiver(f, seed) -{ - var rndRq = sqrt(seed); - var rndRw = rndRq; - var rndRe = 0; - var rndRr = f-floor(f); - var rndRa = 0; - for (var rndRx=0; rndRx<=floor(f); rndRx++) - { - rndRw = 10*(rndRw-floor(rndRw)); - } - if (rndRx%2==0) - { - var rndRs = -1; - } - else - { - var rndRs = 1; - } - rndRe = (floor(rndRw))%5; - if (rndRe==0) - { - rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5); - } - else if (rndRe==1) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7); - } - else if (rndRe==2) - { - rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8); - } - else if (rndRe==3) - { - rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8); - } - else if (rndRe==4) - { - rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7); - } - return rndRa; -} //random terrain textures -var rt = randInt(1,7); -//temperate -if (rt == 1){ -var tGrass = ["temp_grass_long_b"]; -var tGrassPForest = "temp_forestfloor_pine"; -var tGrassDForest = "temp_plants_bog"; -var tCliff = ["temp_cliff_a", "temp_cliff_b"]; -var tGrassA = "temp_grass_d"; -var tGrassB = "temp_grass_c"; -var tGrassC = "temp_grass_clovers_2"; -var tHill = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; -var tRoad = "temp_road"; -var tRoadWild = "temp_road_overgrown"; -var tGrassPatch = "temp_grass_plants"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "sand_grass_25"; -var tWater = "medit_sand_wet"; +var rt = 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(); // gaia entities -var oOak = "gaia/flora_tree_oak"; -var oOakLarge = "gaia/flora_tree_oak_large"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; +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(); // decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/water_lillies.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//snowy -else if (rt == 2) -{ -setSunColour(0.550, 0.601, 0.644); // a little darker - -var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"]; -var tGrassPForest = "polar_tundra_snow"; -var tGrassDForest = "polar_tundra_snow"; -var tCliff = ["polar_cliff_a", "polar_cliff_b"]; -var tGrassA = "snow grass 2"; -var tGrassB = "polar_snow_a"; -var tGrassC = "polar_ice_snow"; -var tHill = ["polar_snow_rocks", "polar_cliff_snow"]; -var tDirt = ["polar_ice_b", "polar_ice_c"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "polar_ice_cracked"; -var tGrassPatch = "snow grass 2"; -var tShoreBlend = "polar_ice"; -var tShore = "alpine_shore_rocks_icy"; -var tWater = "alpine_shore_rocks"; - -// gaia entities -var oOak = "gaia/flora_tree_pine_w"; -var oOakLarge = "gaia/flora_tree_pine_w"; -var oApple = "gaia/flora_tree_pine_w"; -var oPine = "gaia/flora_tree_pine_w"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_muskox"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_walrus"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_dry.xml"; -var aLillies = "actor|geology/stone_granite_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) - -} -//desert -else if (rt == 3) -{ -setSunColour(0.733, 0.746, 0.574); - -var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; -var tGrassPForest = "forestfloor_dirty"; -var tGrassDForest = "desert_forestfloor_palms"; -var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"]; -var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"]; -var tGrassB = "dirta"; -var tGrassC = "medit_dirt_dry"; -var tHill = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"]; -var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"]; -var tRoad = "desert_city_tile"; -var tRoadWild = "desert_city_tile"; -var tGrassPatch = "desert_dirt_rough"; -var tShoreBlend = "desert_shore_stones"; -var tShore = "dirta"; -var tWater = "desert_sand_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall"; -var oApple = "gaia/flora_tree_fig"; -var oPine = "gaia/flora_tree_dead"; -var oAleppoPine = "gaia/flora_tree_date_palm"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_camel"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_desert_small"; -var oMetalLarge = "gaia/geology_metal_desert_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/reeds_pond_lush_b.xml"; -var aRockLarge = "actor|geology/stone_desert_med.xml"; -var aRockMedium = "actor|geology/stone_desert_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; -// terrain + entity (for painting) -} -//alpine -else if (rt == 4) -{ -var tGrass = ["alpine_dirt_grass_50"]; -var tGrassPForest = "alpine_forrestfloor"; -var tGrassDForest = "alpine_forrestfloor"; -var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"]; -var tGrassA = "alpine_grass_rocky"; -var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"]; -var tGrassC = ["alpine_snow_a", "alpine_snow_b"]; -var tHill = "alpine_cliff_snow"; -var tDirt = ["alpine_dirt", "alpine_grass_d"]; -var tRoad = "new_alpine_citytile"; -var tRoadWild = "new_alpine_citytile"; -var tGrassPatch = "new_alpine_grass_a"; -var tShoreBlend = "alpine_shore_rocks"; -var tShore = "alpine_shore_rocks_grass_50"; -var tWater = "alpine_shore_rocks"; - -// gaia entities -var oOak = "gaia/flora_tree_pine"; -var oOakLarge = "gaia/flora_tree_pine"; -var oApple = "gaia/flora_tree_pine"; -var oPine = "gaia/flora_tree_pine"; -var oAleppoPine = "gaia/flora_tree_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_goat"; -var oFish = "gaia/fauna_fish_tuna"; -var oSheep = "gaia/fauna_deer"; -var oStoneLarge = "gaia/geology_stone_alpine_a"; -var oStoneSmall = "gaia/geology_stone_alpine_a"; -var oMetalLarge = "gaia/geology_metal_alpine"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_dry.xml"; -var aLillies = "actor|geology/stone_granite_large.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; - -// terrain + entity (for painting) -} -//medit -else if (rt == 5){ -var tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; -var tGrassPForest = "medit_plants_dirt"; -var tGrassDForest = "medit_grass_shrubs"; -var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"]; -var tGrassA = "medit_grass_field_b"; -var tGrassB = "medit_grass_field_brown"; -var tGrassC = "medit_grass_field_dry"; -var tHill = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"]; -var tDirt = ["medit_dirt", "medit_dirt_b"]; -var tRoad = "medit_city_tile"; -var tRoadWild = "medit_city_tile"; -var tGrassPatch = "medit_grass_wild"; -var tShoreBlend = "medit_sand"; -var tShore = "medit_rocks"; -var tWater = "medit_rocks_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_cretan_date_palm_short"; -var oOakLarge = "gaia/flora_tree_medit_fan_palm"; -var oApple = "gaia/flora_tree_apple"; -var oPine = "gaia/flora_tree_cypress"; -var oAleppoPine = "gaia/flora_tree_aleppo_pine"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_sheep"; -var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; -var oStoneSmall = "gaia/geology_stone_mediterranean"; -var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; -var aGrassShort = "actor|props/flora/grass_soft_large.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_b.xml"; -var aLillies = "actor|props/flora/water_lillies.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/bush_medit_me.xml"; -var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; - -// terrain + entity (for painting) - -} -//savanah -else if (rt == 6) -{ -var tGrass = ["savanna_grass_a", "savanna_grass_b"]; -var tGrassPForest = "savanna_forestfloor_a"; -var tGrassDForest = "savanna_forestfloor_b"; -var tCliff = ["savanna_cliff_a", "savanna_cliff_b"]; -var tGrassA = "savanna_shrubs_a"; -var tGrassB = "savanna_dirt_rocks_b"; -var tGrassC = "dirt_brown_e"; -var tHill = ["savanna_grass_a", "savanna_grass_b"]; -var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"]; -var tRoad = "savanna_tile_a"; -var tRoadWild = "savanna_tile_a"; -var tGrassPatch = "savanna_grass_a"; -var tShoreBlend = "savanna_riparian"; -var tShore = "savanna_riparian_bank"; -var tWater = "savanna_riparian_wet"; - -// gaia entities -var oOak = "gaia/flora_tree_baobab"; -var oOakLarge = "gaia/flora_tree_baobab"; -var oApple = "gaia/flora_tree_baobab"; -var oPine = "gaia/flora_tree_baobab"; -var oAleppoPine = "gaia/flora_tree_baobab"; -var oBerryBush = "gaia/flora_bush_grapes"; -var oChicken = "gaia/fauna_chicken"; -var rts = randInt(1,4); -if (rts==1){ -var oDeer = "gaia/fauna_wildebeest"; -} -else if (rts==2) -{ -var oDeer = "gaia/fauna_zebra"; -} -else if (rts==3) -{ -var oDeer = "gaia/fauna_giraffe"; -} -else if (rts==4) -{ -var oDeer = "gaia/fauna_elephant_african_bush"; -} -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_gazelle"; -var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; -var oStoneSmall = "gaia/geology_stone_savanna_small"; -var oMetalLarge = "gaia/geology_metal_savanna_slabs"; - -// decorative props -var aGrass = "actor|props/flora/grass_savanna.xml"; -var aGrassShort = "actor|props/flora/grass_medit_field.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; -var aLillies = "actor|props/flora/reeds_pond_lush_b.xml"; -var aRockLarge = "actor|geology/stone_savanna_med.xml"; -var aRockMedium = "actor|geology/stone_savanna_med.xml"; -var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; -var aBushSmall = "actor|props/flora/bush_dry_a.xml"; -// terrain + entity (for painting) -} -//tropic -else if (rt == 7){ -var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"]; -var tGrassPForest = "tropic_plants_c"; -var tGrassDForest = "tropic_plants_c"; -var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"]; -var tGrassA = "tropic_grass_c"; -var tGrassB = "tropic_grass_plants"; -var tGrassC = "tropic_plants"; -var tHill = ["tropic_cliff_grass"]; -var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"]; -var tRoad = "tropic_citytile_a"; -var tRoadWild = "tropic_citytile_plants"; -var tGrassPatch = "tropic_plants_b"; -var tShoreBlend = "temp_mud_plants"; -var tShore = "tropic_dirt_a_plants"; -var tWater = "tropic_mud_a"; - -// gaia entities -var oOak = "gaia/flora_tree_poplar"; -var oOakLarge = "gaia/flora_tree_poplar"; -var oApple = "gaia/flora_tree_poplar"; -var oPine = "gaia/flora_tree_cretan_date_palm_short"; -var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall"; -var oBerryBush = "gaia/flora_bush_berry"; -var oChicken = "gaia/fauna_chicken"; -var oDeer = "gaia/fauna_deer"; -var oFish = "gaia/fauna_fish"; -var oSheep = "gaia/fauna_tiger"; -var oStoneLarge = "gaia/geology_stonemine_tropic_quarry"; -var oStoneSmall = "gaia/geology_stone_tropic_a"; -var oMetalLarge = "gaia/geology_metal_tropic_slabs"; - -// decorative props -var aGrass = "actor|props/flora/plant_tropic_a.xml"; -var aGrassShort = "actor|props/flora/plant_lg.xml"; -var aReeds = "actor|props/flora/reeds_pond_lush_b.xml"; -var aLillies = "actor|props/flora/water_lillies.xml"; -var aRockLarge = "actor|geology/stone_granite_large.xml"; -var aRockMedium = "actor|geology/stone_granite_med.xml"; -var aBushMedium = "actor|props/flora/plant_tropic_large.xml"; -var aBushSmall = "actor|props/flora/plant_tropic_large.xml"; - -// terrain + entity (for painting) - -} +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 pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; @@ -499,27 +153,8 @@ for (var i = 0; i < numPlayers; i++) // get civ specific starting entities var civEntities = getStartingEntities(id-1); - // create the TC - var group = new SimpleGroup( // elements (type, min/max count, min/max distance, min/max angle) - [new SimpleObject(civEntities[0].Template, 1,1, 0,0, BUILDING_ANGlE, BUILDING_ANGlE)], - true, null, ix, iz - ); - createObjectGroup(group, id); - // create starting units - var uDist = 6; - var uSpace = 2; - for (var j = 1; j < civEntities.length; ++j) - { - var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; - var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); - for (var numberofentities = 0; numberofentities < count; numberofentities++) - { - var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); - var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); - placeObject(ux, uz, civEntities[j].Template, id, (j % 2 - 1) * PI + uAngle); - } - } + createStartingPlayerEntities(fx, fz, id, civEntities, BUILDING_ANGlE) // create animals for (var j = 0; j < 2; ++j) @@ -528,7 +163,7 @@ for (var i = 0; i < numPlayers; i++) var aDist = 7; var aX = round(fx + aDist * cos(aAngle)); var aZ = round(fz + aDist * sin(aAngle)); - group = new SimpleGroup( + var group = new SimpleGroup( [new SimpleObject(oChicken, 5,5, 0,3)], true, clBaseResource, aX, aZ ); diff --git a/binaries/data/mods/public/maps/random/rmgen/map.js b/binaries/data/mods/public/maps/random/rmgen/map.js index daca2da118..3147586c42 100644 --- a/binaries/data/mods/public/maps/random/rmgen/map.js +++ b/binaries/data/mods/public/maps/random/rmgen/map.js @@ -31,16 +31,7 @@ function Map(size, baseHeight) } // Create 2D array for heightmap - var mapSize; - if (TILE_CENTERED_HEIGHT_MAP) - { - mapSize = size; - } - else - { - mapSize = size+1; - } - + var mapSize = size+1; this.height = new Array(mapSize); for (var i = 0; i < mapSize; i++) { @@ -117,17 +108,10 @@ Map.prototype.validT = function(x, z) } }; -// Check bounds on height map if TILE_CENTERED_HEIGHT_MAP==false then this is (size + 1 by size + 1) otherwise (size, size) +// Check bounds on height map (size + 1 by size + 1) Map.prototype.validH = function(x, z) { - if (TILE_CENTERED_HEIGHT_MAP) - { - return x >= 0 && z >= 0 && x < this.size && z < this.size; - } - else - { - return x >= 0 && z >= 0 && x <= this.size && z <= this.size; - } + return x >= 0 && z >= 0 && x <= this.size && z <= this.size; }; // Check bounds on tile class @@ -282,28 +266,6 @@ Map.prototype.getExactHeight = function(x, z) return ( 1 - zf ) * ( ( 1 - xf ) * h00 + xf * h10 ) + zf * ( ( 1 - xf ) * h01 + xf * h11 ) ; }; -// Converts from the tile centered height map to the corner based height map, used when TILE_CENTERED_HEIGHT_MAP = true -Map.prototype.cornerHeight = function(x, z) -{ - var count = 0; - var sumHeight = 0; - - var dirs = [[-1,-1], [-1,0], [0,-1], [0,0]]; - for each (var dir in dirs) - { - if (this.validH(x + dir[0], z + dir[1])) - { - count++; - sumHeight += this.height[x + dir[0]][z + dir[1]]; - } - } - - if (count == 0) - return 0; - - return sumHeight / count; -}; - Map.prototype.getMapData = function() { var data = {}; @@ -343,15 +305,7 @@ Map.prototype.getMapData = function() { for (var z = 0; z < mapSize; z++) { - var intHeight; - if (TILE_CENTERED_HEIGHT_MAP) - { - intHeight = Math.floor((this.cornerHeight(x, z) + SEA_LEVEL) * HEIGHT_UNITS_PER_METRE); - } - else - { - intHeight = Math.floor((this.height[x][z] + SEA_LEVEL) * HEIGHT_UNITS_PER_METRE); - } + var intHeight = Math.floor((this.height[x][z] + SEA_LEVEL) * HEIGHT_UNITS_PER_METRE); // Prevent under/overflow in terrain data if (intHeight > 0xFFFF) diff --git a/binaries/data/mods/public/maps/random/rmgen/mapgen.js b/binaries/data/mods/public/maps/random/rmgen/mapgen.js index 1c4ef6d5fb..ce58c8a578 100644 --- a/binaries/data/mods/public/maps/random/rmgen/mapgen.js +++ b/binaries/data/mods/public/maps/random/rmgen/mapgen.js @@ -1,5 +1,3 @@ -var TILE_CENTERED_HEIGHT_MAP = false; - var g_Map; var g_Environment = { diff --git a/binaries/data/mods/public/maps/random/rmgen/misc.js b/binaries/data/mods/public/maps/random/rmgen/misc.js new file mode 100644 index 0000000000..0922ce85a9 --- /dev/null +++ b/binaries/data/mods/public/maps/random/rmgen/misc.js @@ -0,0 +1 @@ +///////////////////////////////////////////////////////////////////////////////////////// // passageMaker // // Function for creating shallow water between two given points by changing the heiight of all tiles in // the path with height less than or equal to "maxheight" to "height" // // x1,z1: Starting point of path // x2,z2: Ending point of path // width: Width of the shallow // maxheight: Maximum height that it changes // height: Height of the shallow // smooth: smooth elevation in borders // tileclass: (Optianal) - Adds those tiles to the class given // terrain: (Optional) - Changes the texture of the elevated land // ///////////////////////////////////////////////////////////////////////////////////////// function passageMaker(x1, z1, x2, z2, width, maxheight, height, smooth, tileclass, terrain) { var mapSize = g_Map.size; for (var ix = 0; ix < mapSize; ix++) { for (var iz = 0; iz < mapSize; iz++) { var a = z1-z2; var b = x2-x1; var c = (z1*(x1-x2))-(x1*(z1-z2)); 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 my = iz-(b*k); var inline = 0; if (b == 0) { if ((iz <= Math.max(z1,z2))&&(Math.min(z1,z2))) { inline = 1; } } else { if ((my <= Math.max(z1,z2))&&(my >= Math.min(z1,z2))) { inline = 1; } } if ((dis <= width)&&(inline)) { if(g_Map.getHeight(ix, iz) <= maxheight) { if (dis >= width - smooth) { g_Map.setHeight(ix, iz, ((width - dis)*(height)+(g_Map.getHeight(ix, iz))*(dis + smooth - width))/(width - smooth)/2); } else { g_Map.setHeight(ix, iz, height); } if (tileclass !== null) { addToClass(ix, iz, tileclass); } if (terrain !== null) { placeTerrain(ix, iz, terrain); } } } } } } ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //rndRiver is a fuction that creates random values useful for making a jagged river. // //it works the same as sin or cos function. the only difference is that it's period is 1 instead of 2*pi //it needs the "seed" parameter to use it to make random curves that don't get broken. //seed must be created using randFloat(). or else it won't work // // f: Input: Same as angle in a sine function // seed: Random Seed: Best to implement is to use randFloat() // ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// function rndRiver(f, seed) { var rndRq = seed; var rndRw = rndRq; var rndRe = 0; var rndRr = f-floor(f); var rndRa = 0; for (var rndRx=0; rndRx<=floor(f); rndRx++) { rndRw = 10*(rndRw-floor(rndRw)); } if (rndRx%2==0) { var rndRs = -1; } else { var rndRs = 1; } rndRe = (floor(rndRw))%5; if (rndRe==0) { rndRa = (rndRs)*2.3*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.5); } else if (rndRe==1) { rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.3)*(rndRr-0.7); } else if (rndRe==2) { rndRa = (rndRs)*22*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.3)*(rndRr-0.3)*(rndRr-0.8); } else if (rndRe==3) { rndRa = (rndRs)*180*(rndRr)*(rndRr-1)*(rndRr-0.2)*(rndRr-0.2)*(rndRr-0.4)*(rndRr-0.6)*(rndRr-0.6)*(rndRr-0.8); } else if (rndRe==4) { rndRa = (rndRs)*2.6*(rndRr)*(rndRr-1)*(rndRr-0.5)*(rndRr-0.7); } return rndRa; } ///////////////////////////////////////////////////////////////////////////////////////// // createStartingPlayerEntities // // Creates the starting player entities // fx&fz: position of player base // playerid: id of player // civEntities: use getStartingEntities(id-1) fo this one // BUILDING_ANGlE: angle of main base building // /////////////////////////////////////////////////////////////////////////////////////////// function createStartingPlayerEntities(fx, fz, playerid, civEntities, BUILDING_ANGlE) { var uDist = 6; var uSpace = 2; for (var j = 1; j < civEntities.length; ++j) { placeObject(fx, fz, civEntities[0].Template, playerid, BUILDING_ANGlE); var uAngle = -BUILDING_ANGlE + PI * (j - 1) / 2; var count = (civEntities[j].Count !== undefined ? civEntities[j].Count : 1); for (var numberofentities = 0; numberofentities < count; numberofentities++) { var ux = fx + uDist * cos(uAngle) + numberofentities * uSpace * cos(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * cos(uAngle + PI/2)); var uz = fz + uDist * sin(uAngle) + numberofentities * uSpace * sin(uAngle + PI/2) - (0.75 * uSpace * floor(count / 2) * sin(uAngle + PI/2)); placeObject(ux, uz, civEntities[j].Template, playerid, (j % 2 - 1) * PI + uAngle); } } } \ No newline at end of file diff --git a/binaries/data/mods/public/maps/random/rmgen/pathplacer.js b/binaries/data/mods/public/maps/random/rmgen/pathplacer.js new file mode 100644 index 0000000000..092743c198 --- /dev/null +++ b/binaries/data/mods/public/maps/random/rmgen/pathplacer.js @@ -0,0 +1,195 @@ + +///////////////////////////////////////////////////////////////////////////////////////// +// PathPlacer +// +// Class for creating a winding path between two points +// +// x1,z1: Starting point of path +// x2,z2: Ending point of path +// width: Width of the path +// a: Waviness - how wavy the path will be (higher is wavier, 0.0 is straight line) +// b: Smoothness - how smooth the path will be (higher is smoother) +// c: Offset - max amplitude of waves along the path (0.0 is straight line) +// taper: Tapering - how much the width of the path changes from start to end +// if positive, the width will decrease by that factor, if negative the width +// will increase by that factor +// +///////////////////////////////////////////////////////////////////////////////////////// + +function PathPlacer(x1, z1, x2, z2, width, a, b, c, taper) +{ + this.x1 = x1; + this.z1 = z1; + this.x2 = x2; + this.z2 = z2; + this.width = width; + this.a = a; + this.b = b; + this.c = c; + this.taper = taper; +} + +PathPlacer.prototype.place = function(constraint) +{ + // Preliminary bounds check + if (!g_Map.validT(this.x1, this.z1) || !constraint.allows(this.x1, this.z1) || + !g_Map.validT(this.x2, this.z2) || !constraint.allows(this.x2, this.z2)) + { + return undefined; + } + + var dx = (this.x2 - this.x1); + var dz = (this.z2 - this.z1); + var dist = Math.sqrt(dx*dx + dz*dz); + dx /= dist; + dz /= dist; + + var numSteps = 1 + Math.floor(dist/4 * this.a); + var numISteps = 1 + Math.floor(dist/4 * this.b); + var totalSteps = numSteps*numISteps; + var offset = 1 + Math.floor(dist/4 * this.c); + + // Generate random offsets + var ctrlVals = new Float32Array(numSteps); //float32 + for (var j = 1; j < (numSteps-1); ++j) + { + ctrlVals[j] = randFloat(-offset, offset); + } + + // Interpolate for smoothed 1D noise + var noise = new Float32Array(totalSteps+1); //float32 + for (var j = 0; j < numSteps; ++j) + { + // Cubic interpolation + var v0 = ctrlVals[(j+numSteps-1)%numSteps]; + var v1 = ctrlVals[j]; + var v2 = ctrlVals[(j+1)%numSteps]; + var v3 = ctrlVals[(j+2)%numSteps]; + var P = (v3 - v2) - (v0 - v1); + var Q = (v0 - v1) - P; + var R = v2 - v0; + var S = v1; + + for (var k = 0; k < numISteps; ++k) + { + var t = k/numISteps; + noise[j*numISteps + k] = P*t*t*t + Q*t*t + R*t + S; + } + } + + var halfWidth = 0.5 * this.width; + + // Add smoothed noise to straight path + var segments1 = []; + var segments2 = []; + + for (var j = 0; j < totalSteps; ++j) + { + // Interpolated points along straight path + var t = j/totalSteps; + var tx = this.x1 * (1.0 - t) + this.x2 * t; + var tz = this.z1 * (1.0 - t) + this.z2 * t; + var t2 = (j+1)/totalSteps; + var tx2 = this.x1 * (1.0 - t2) + this.x2 * t2; + var tz2 = this.z1 * (1.0 - t2) + this.z2 * t2; + + // Find noise offset points + var nx = (tx - dz * noise[j]); + var nz = (tz + dx * noise[j]); + var nx2 = (tx2 - dz * noise[j+1]); + var nz2 = (tz2 + dx * noise[j+1]); + + // Find slope of offset points + var ndx = (nx2 - nx); + var ndz = (nz2 - nz); + var dist = Math.sqrt(ndx*ndx + ndz*ndz); + ndx /= dist; + ndz /= dist; + + var taperedWidth = (1.0 - t*this.taper) * halfWidth; + + // Find slope of offset path + var px = Math.round(nx - ndz * -taperedWidth); + var pz = Math.round(nz + ndx * -taperedWidth); + segments1.push(new PointXZ(px, pz)); + var px2 = Math.round(nx2 - ndz * taperedWidth); + var pz2 = Math.round(nz2 + ndx * taperedWidth); + segments2.push(new PointXZ(px2, pz2)); + + + } + + var retVec = []; + + // Draw path segments + var num = segments1.length - 1; + for (var j = 0; j < num; ++j) + { + // Fill quad formed by these 4 points + // Note the code assumes these points have been rounded to integer values + var pt11 = segments1[j]; + var pt12 = segments1[j+1]; + var pt21 = segments2[j]; + var pt22 = segments2[j+1]; + + var tris = [[pt12, pt11, pt21], [pt12, pt21, pt22]]; + + for (var t = 0; t < 2; ++t) + { + // Sort vertices by min z + var tri = tris[t].sort( + function(a, b) + { + return a.z - b.z; + } + ); + + // Fills in a line from (z, x1) to (z,x2) + var fillLine = function(z, x1, x2) + { + var left = Math.round(Math.min(x1, x2)); + var right = Math.round(Math.max(x1, x2)); + for (var x = left; x <= right; x++) + { + if (g_Map.validT(x, z) && constraint.allows(x, z)) + { + retVec.push(new PointXZ(x, z)); + } + } + } + + var A = tri[0]; + var B = tri[1]; + var C = tri[2]; + + var dx1 = (B.z != A.z) ? ((B.x - A.x) / (B.z - A.z)) : 0; + var dx2 = (C.z != A.z) ? ((C.x - A.x) / (C.z - A.z)) : 0; + var dx3 = (C.z != B.z) ? ((C.x - B.x) / (C.z - B.z)) : 0; + + if (A.z == B.z) + { + fillLine(A.z, A.x, B.x); + } + else + { + for (var z = A.z; z <= B.z; z++) + { + fillLine(z, A.x + dx1*(z - A.z), A.x + dx2*(z - A.z)); + } + } + if (B.z == C.z) + { + fillLine(B.z, B.x, C.x); + } + else + { + for (var z = B.z + 1; z < C.z; z++) + { + fillLine(z, B.x + dx3*(z - B.z), A.x + dx2*(z - A.z)); + } + } + } + } + + return retVec; +} diff --git a/binaries/data/mods/public/maps/random/rmgen/randombiome.js b/binaries/data/mods/public/maps/random/rmgen/randombiome.js new file mode 100644 index 0000000000..d9650ea05b --- /dev/null +++ b/binaries/data/mods/public/maps/random/rmgen/randombiome.js @@ -0,0 +1 @@ +///////////////////////////////////////////////////////////////////////////////////////////// // definitions ///////////////////////////////////////////////////////////////////////////////////////////// var biomeID = 1; var rbt1 = ["temp_grass_long_b"]; var rbt2 = "temp_forestfloor_pine"; var rbt3 = "temp_plants_bog"; var rbt4 = ["temp_cliff_a", "temp_cliff_b"]; var rbt5 = "temp_grass_d"; var rbt6 = "temp_grass_c"; var rbt7 = "temp_grass_clovers_2"; var rbt8 = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var rbt9 = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var rbt10 = "temp_road"; var rbt11 = "temp_road_overgrown"; var rbt12 = "temp_grass_plants"; var rbt13 = "temp_mud_plants"; var rbt14 = "sand_grass_25"; var rbt15 = "medit_sand_wet"; // gaia entities var rbe1 = "gaia/flora_tree_oak"; var rbe2 = "gaia/flora_tree_oak_large"; var rbe3 = "gaia/flora_tree_apple"; var rbe4 = "gaia/flora_tree_pine"; var rbe5 = "gaia/flora_tree_aleppo_pine"; var rbe6 = "gaia/flora_bush_berry"; var rbe7 = "gaia/fauna_chicken"; var rbe8 = "gaia/fauna_deer"; var rbe9 = "gaia/fauna_fish"; var rbe10 = "gaia/fauna_sheep"; var rbe11 = "gaia/geology_stonemine_medit_quarry"; var rbe12 = "gaia/geology_stone_mediterranean"; var rbe13 = "gaia/geology_metal_mediterranean_slabs"; // decorative props var rba1 = "actor|props/flora/grass_soft_large_tall.xml"; var rba2 = "actor|props/flora/grass_soft_large.xml"; var rba3 = "actor|props/flora/reeds_pond_lush_a.xml"; var rba4 = "actor|props/flora/pond_lillies_large.xml"; var rba5 = "actor|geology/stone_granite_large.xml"; var rba6 = "actor|geology/stone_granite_med.xml"; var rba7 = "actor|props/flora/bush_medit_me.xml"; var rba8 = "actor|props/flora/bush_medit_sm.xml"; ///////////////////////////////////////////////////////////////////////////////////////////// // randomizeBiome: randomizes the biomeID and returns the value ///////////////////////////////////////////////////////////////////////////////////////////// function randomizeBiome() { biomeID = randInt(1,7); if (biomeID == 1){ rbt1 = ["temp_grass_long_b"]; rbt2 = "temp_forestfloor_pine"; rbt3 = "temp_plants_bog"; rbt4 = ["temp_cliff_a", "temp_cliff_b"]; rbt5 = "temp_grass_d"; rbt6 = "temp_grass_c"; rbt7 = "temp_grass_clovers_2"; rbt8 = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; rbt9 = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; rbt10 = "temp_road"; rbt11 = "temp_road_overgrown"; rbt12 = "temp_grass_plants"; rbt13 = "temp_mud_plants"; rbt14 = "sand_grass_25"; rbt15 = "medit_sand_wet"; // gaia entities rbe1 = "gaia/flora_tree_oak"; rbe2 = "gaia/flora_tree_oak_large"; rbe3 = "gaia/flora_tree_apple"; rbe4 = "gaia/flora_tree_pine"; rbe5 = "gaia/flora_tree_aleppo_pine"; rbe6 = "gaia/flora_bush_berry"; rbe7 = "gaia/fauna_chicken"; rbe8 = "gaia/fauna_deer"; rbe9 = "gaia/fauna_fish"; rbe10 = "gaia/fauna_sheep"; rbe11 = "gaia/geology_stonemine_medit_quarry"; rbe12 = "gaia/geology_stone_mediterranean"; rbe13 = "gaia/geology_metal_mediterranean_slabs"; // decorative props rba1 = "actor|props/flora/grass_soft_large_tall.xml"; rba2 = "actor|props/flora/grass_soft_large.xml"; rba3 = "actor|props/flora/reeds_pond_lush_a.xml"; rba4 = "actor|props/flora/water_lillies.xml"; rba5 = "actor|geology/stone_granite_large.xml"; rba6 = "actor|geology/stone_granite_med.xml"; rba7 = "actor|props/flora/bush_medit_me.xml"; rba8 = "actor|props/flora/bush_medit_sm.xml"; } //snowy else if (biomeID == 2) { setSunColour(0.550, 0.601, 0.644); // a little darker rbt1 = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"]; rbt2 = "polar_tundra_snow"; rbt3 = "polar_tundra_snow"; rbt4 = ["polar_cliff_a", "polar_cliff_b"]; rbt5 = "snow grass 2"; rbt6 = "polar_snow_a"; rbt7 = "polar_ice_snow"; rbt8 = ["polar_snow_rocks", "polar_cliff_snow"]; rbt9 = ["polar_ice_b", "polar_ice_c"]; rbt10 = "new_alpine_citytile"; rbt11 = "polar_ice_cracked"; rbt12 = "snow grass 2"; rbt13 = "polar_ice"; rbt14 = "snow_glacial_01"; rbt15 = "polar_ice_c"; // gaia entities rbe1 = "gaia/flora_tree_pine_w"; rbe2 = "gaia/flora_tree_pine_w"; rbe3 = "gaia/flora_tree_pine_w"; rbe4 = "gaia/flora_tree_pine_w"; rbe5 = "gaia/flora_tree_pine"; rbe6 = "gaia/flora_bush_berry"; rbe7 = "gaia/fauna_chicken"; rbe8 = "gaia/fauna_muskox"; rbe9 = "gaia/fauna_fish_tuna"; rbe10 = "gaia/fauna_walrus"; rbe11 = "gaia/geology_stone_alpine_a"; rbe12 = "gaia/geology_stone_alpine_a"; rbe13 = "gaia/geology_metal_alpine"; // decorative props rba1 = "actor|props/flora/grass_soft_dry_small_tall.xml"; rba2 = "actor|props/flora/grass_soft_dry_large.xml"; rba3 = "actor|props/flora/reeds_pond_dry.xml"; rba4 = "actor|geology/stone_granite_large.xml"; rba5 = "actor|geology/stone_granite_large.xml"; rba6 = "actor|geology/stone_granite_med.xml"; rba7 = "actor|props/flora/bush_desert_dry_a.xml"; rba8 = "actor|props/flora/bush_desert_dry_a.xml"; } //desert else if (biomeID == 3) { setSunColour(0.733, 0.746, 0.574); rbt1 = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; rbt2 = "forestfloor_dirty"; rbt3 = "desert_forestfloor_palms"; rbt4 = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"]; rbt5 = ["desert_dirt_persia_1", "desert_dirt_persia_2"]; rbt6 = "dirta"; rbt7 = "medit_dirt_dry"; rbt8 = ["desert_dirt_rocks_1", "desert_dirt_rocks_2", "desert_dirt_rocks_3"]; rbt9 = ["desert_lakebed_dry", "desert_lakebed_dry_b"]; rbt10 = "desert_city_tile"; rbt11 = "desert_city_tile"; rbt12 = "desert_dirt_rough"; rbt13 = "desert_shore_stones"; rbt14 = "dirta"; rbt15 = "desert_sand_wet"; // gaia entities rbe1 = "gaia/flora_tree_cretan_date_palm_short"; rbe2 = "gaia/flora_tree_cretan_date_palm_tall"; rbe3 = "gaia/flora_tree_fig"; rbe4 = "gaia/flora_tree_dead"; rbe5 = "gaia/flora_tree_date_palm"; rbe6 = "gaia/flora_bush_grapes"; rbe7 = "gaia/fauna_chicken"; rbe8 = "gaia/fauna_camel"; rbe9 = "gaia/fauna_fish"; rbe10 = "gaia/fauna_gazelle"; rbe11 = "gaia/geology_stonemine_desert_quarry"; rbe12 = "gaia/geology_stone_desert_small"; rbe13 = "gaia/geology_metal_desert_slabs"; // decorative props rba1 = "actor|props/flora/grass_soft_dry_small_tall.xml"; rba2 = "actor|props/flora/grass_soft_dry_large.xml"; rba3 = "actor|props/flora/reeds_pond_lush_a.xml"; rba4 = "actor|props/flora/reeds_pond_lush_b.xml"; rba5 = "actor|geology/stone_desert_med.xml"; rba6 = "actor|geology/stone_desert_med.xml"; rba7 = "actor|props/flora/bush_desert_dry_a.xml"; rba8 = "actor|props/flora/bush_desert_dry_a.xml"; } //alpine else if (biomeID == 4) { rbt1 = ["alpine_dirt_grass_50"]; rbt2 = "alpine_forrestfloor"; rbt3 = "alpine_forrestfloor"; rbt4 = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"]; rbt5 = "alpine_grass_rocky"; rbt6 = ["alpine_grass_snow_50", "alpine_dirt_snow"]; rbt7 = ["alpine_snow_a", "alpine_snow_b"]; rbt8 = "alpine_cliff_snow"; rbt9 = ["alpine_dirt", "alpine_grass_d"]; rbt10 = "new_alpine_citytile"; rbt11 = "new_alpine_citytile"; rbt12 = "new_alpine_grass_a"; rbt13 = "alpine_shore_rocks"; rbt14 = "alpine_shore_rocks_grass_50"; rbt15 = "alpine_shore_rocks"; // gaia entities rbe1 = "gaia/flora_tree_pine"; rbe2 = "gaia/flora_tree_pine"; rbe3 = "gaia/flora_tree_pine"; rbe4 = "gaia/flora_tree_pine"; rbe5 = "gaia/flora_tree_pine"; rbe6 = "gaia/flora_bush_berry"; rbe7 = "gaia/fauna_chicken"; rbe8 = "gaia/fauna_goat"; rbe9 = "gaia/fauna_fish_tuna"; rbe10 = "gaia/fauna_deer"; rbe11 = "gaia/geology_stone_alpine_a"; rbe12 = "gaia/geology_stone_alpine_a"; rbe13 = "gaia/geology_metal_alpine"; // decorative props rba1 = "actor|props/flora/grass_soft_dry_small_tall.xml"; rba2 = "actor|props/flora/grass_soft_dry_large.xml"; rba3 = "actor|props/flora/reeds_pond_dry.xml"; rba4 = "actor|geology/stone_granite_large.xml"; rba5 = "actor|geology/stone_granite_large.xml"; rba6 = "actor|geology/stone_granite_med.xml"; rba7 = "actor|props/flora/bush_desert_dry_a.xml"; rba8 = "actor|props/flora/bush_desert_dry_a.xml"; } //medit else if (biomeID == 5){ rbt1 = ["medit_grass_field_a", "medit_grass_field_b"]; rbt2 = "medit_plants_dirt"; rbt3 = "medit_grass_shrubs"; rbt4 = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"]; rbt5 = "medit_grass_field_b"; rbt6 = "medit_grass_field_brown"; rbt7 = "medit_grass_field_dry"; rbt8 = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"]; rbt9 = ["medit_dirt", "medit_dirt_b"]; rbt10 = "medit_city_tile"; rbt11 = "medit_city_tile"; rbt12 = "medit_grass_wild"; rbt13 = "medit_sand"; rbt14 = "sand_grass_25"; rbt15 = "medit_sand_wet"; // gaia entities rbe1 = "gaia/flora_tree_cretan_date_palm_short"; rbe2 = "gaia/flora_tree_medit_fan_palm"; rbe3 = "gaia/flora_tree_apple"; rbe4 = "gaia/flora_tree_cypress"; rbe5 = "gaia/flora_tree_aleppo_pine"; rbe6 = "gaia/flora_bush_berry"; rbe7 = "gaia/fauna_chicken"; rbe8 = "gaia/fauna_deer"; rbe9 = "gaia/fauna_fish"; rbe10 = "gaia/fauna_sheep"; rbe11 = "gaia/geology_stonemine_medit_quarry"; rbe12 = "gaia/geology_stone_mediterranean"; rbe13 = "gaia/geology_metal_mediterranean_slabs"; // decorative props rba1 = "actor|props/flora/grass_soft_large_tall.xml"; rba2 = "actor|props/flora/grass_soft_large.xml"; rba3 = "actor|props/flora/reeds_pond_lush_b.xml"; rba4 = "actor|props/flora/water_lillies.xml"; rba5 = "actor|geology/stone_granite_large.xml"; rba6 = "actor|geology/stone_granite_med.xml"; rba7 = "actor|props/flora/bush_medit_me.xml"; rba8 = "actor|props/flora/bush_medit_sm.xml"; } //savanah else if (biomeID == 6) { rbt1 = ["savanna_grass_a", "savanna_grass_b"]; rbt2 = "savanna_forestfloor_a"; rbt3 = "savanna_forestfloor_b"; rbt4 = ["savanna_cliff_a", "savanna_cliff_b"]; rbt5 = "savanna_shrubs_a"; rbt6 = "savanna_dirt_rocks_b"; rbt7 = "dirt_brown_e"; rbt8 = ["savanna_grass_a", "savanna_grass_b"]; rbt9 = ["savanna_dirt_rocks_b", "dirt_brown_e"]; rbt10 = "savanna_tile_a"; rbt11 = "savanna_tile_a"; rbt12 = "savanna_grass_a"; rbt13 = "savanna_riparian"; rbt14 = "savanna_riparian_bank"; rbt15 = "savanna_riparian_wet"; // gaia entities rbe1 = "gaia/flora_tree_baobab"; rbe2 = "gaia/flora_tree_baobab"; rbe3 = "gaia/flora_tree_baobab"; rbe4 = "gaia/flora_tree_baobab"; rbe5 = "gaia/flora_tree_baobab"; rbe6 = "gaia/flora_bush_grapes"; rbe7 = "gaia/fauna_chicken"; var rts = randInt(1,4); if (rts==1){ rbe8 = "gaia/fauna_wildebeest"; } else if (rts==2) { rbe8 = "gaia/fauna_zebra"; } else if (rts==3) { rbe8 = "gaia/fauna_giraffe"; } else if (rts==4) { rbe8 = "gaia/fauna_elephant_african_bush"; } rbe9 = "gaia/fauna_fish"; rbe10 = "gaia/fauna_gazelle"; rbe11 = "gaia/geology_stonemine_desert_quarry"; rbe12 = "gaia/geology_stone_savanna_small"; rbe13 = "gaia/geology_metal_savanna_slabs"; // decorative props rba1 = "actor|props/flora/grass_savanna.xml"; rba2 = "actor|props/flora/grass_medit_field.xml"; rba3 = "actor|props/flora/reeds_pond_lush_a.xml"; rba4 = "actor|props/flora/reeds_pond_lush_b.xml"; rba5 = "actor|geology/stone_savanna_med.xml"; rba6 = "actor|geology/stone_savanna_med.xml"; rba7 = "actor|props/flora/bush_desert_dry_a.xml"; rba8 = "actor|props/flora/bush_dry_a.xml"; } else if (biomeID == 7){ rbt1 = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"]; rbt2 = "tropic_plants_c"; rbt3 = "tropic_plants_c"; rbt4 = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"]; rbt5 = "tropic_grass_c"; rbt6 = "tropic_grass_plants"; rbt7 = "tropic_plants"; rbt8 = ["tropic_cliff_grass"]; rbt9 = ["tropic_dirt_a", "tropic_dirt_a_plants"]; rbt10 = "tropic_citytile_a"; rbt11 = "tropic_citytile_plants"; rbt12 = "tropic_plants_b"; rbt13 = "temp_mud_plants"; rbt14 = "tropic_beach_dry"; rbt15 = "tropic_beach_wet"; // gaia entities rbe1 = "gaia/flora_tree_poplar"; rbe2 = "gaia/flora_tree_poplar"; rbe3 = "gaia/flora_tree_poplar"; rbe4 = "gaia/flora_tree_cretan_date_palm_short"; rbe5 = "gaia/flora_tree_cretan_date_palm_tall"; rbe6 = "gaia/flora_bush_berry"; rbe7 = "gaia/fauna_chicken"; rbe8 = "gaia/fauna_deer"; rbe9 = "gaia/fauna_fish"; rbe10 = "gaia/fauna_tiger"; rbe11 = "gaia/geology_stonemine_tropic_quarry"; rbe12 = "gaia/geology_stone_tropic_a"; rbe13 = "gaia/geology_metal_tropic_slabs"; // decorative props rba1 = "actor|props/flora/plant_tropic_a.xml"; rba2 = "actor|props/flora/plant_lg.xml"; rba3 = "actor|props/flora/reeds_pond_lush_b.xml"; rba4 = "actor|props/flora/water_lillies.xml"; rba5 = "actor|geology/stone_granite_large.xml"; rba6 = "actor|geology/stone_granite_med.xml"; rba7 = "actor|props/flora/plant_tropic_large.xml"; rba8 = "actor|props/flora/plant_tropic_large.xml"; } return biomeID; } ///////////////////////////////////////////////////////////////////////////////////////////// // These functions return the values needed for a randomized biome ///////////////////////////////////////////////////////////////////////////////////////////// function rBiomeT1() { return rbt1; } function rBiomeT2() { return rbt2; } function rBiomeT3() { return rbt3; } function rBiomeT4() { return rbt4; } function rBiomeT5() { return rbt5; } function rBiomeT6() { return rbt6; } function rBiomeT7() { return rbt7; } function rBiomeT8() { return rbt8; } function rBiomeT9() { return rbt9; } function rBiomeT10() { return rbt10; } function rBiomeT11() { return rbt11; } function rBiomeT12() { return rbt12; } function rBiomeT13() { return rbt13; } function rBiomeT14() { return rbt14; } function rBiomeT15() { return rbt15; } function rBiomeE1() { return rbe1; } function rBiomeE2() { return rbe2; } function rBiomeE3() { return rbe3; } function rBiomeE4() { return rbe4; } function rBiomeE5() { return rbe5; } function rBiomeE6() { return rbe6; } function rBiomeE7() { return rbe7; } function rBiomeE8() { return rbe8; } function rBiomeE9() { return rbe9; } function rBiomeE10() { return rbe10; } function rBiomeE11() { return rbe11; } function rBiomeE12() { return rbe12; } function rBiomeE13() { return rbe13; } function rBiomeA1() { return rba1; } function rBiomeA2() { return rba2; } function rBiomeA3() { return rba3; } function rBiomeA4() { return rba4; } function rBiomeA5() { return rba5; } function rBiomeA6() { return rba6; } function rBiomeA7() { return rba7; } function rBiomeA8() { return rba8; } \ No newline at end of file diff --git a/binaries/data/mods/public/maps/random/snowflake_searocks.js b/binaries/data/mods/public/maps/random/snowflake_searocks.js index 2596b2865b..385364acd8 100644 --- a/binaries/data/mods/public/maps/random/snowflake_searocks.js +++ b/binaries/data/mods/public/maps/random/snowflake_searocks.js @@ -1 +1 @@ -RMS.LoadLibrary("rmgen"); //random terrain textures var rt = randInt(1,7); //temperate if (rt == 1){ var tGrass = ["temp_grass_long_b"]; var tGrassPForest = "temp_forestfloor_pine"; var tGrassDForest = "temp_plants_bog"; var tCliff = ["temp_cliff_a", "temp_cliff_b"]; var tGrassA = "temp_grass_d"; var tGrassB = "temp_grass_c"; var tGrassC = "temp_grass_clovers_2"; var tHill = ["temp_grass_long_b", "temp_grass_d", "temp_grass_c"]; var tDirt = ["temp_dirt_gravel", "temp_dirt_gravel_b"]; var tRoad = "temp_road"; var tRoadWild = "temp_road_overgrown"; var tGrassPatch = "temp_grass_plants"; var tShoreBlend = "temp_mud_plants"; var tShore = "sand_grass_25"; var tWater = "medit_sand_wet"; // gaia entities var oOak = "gaia/flora_tree_oak"; var oOakLarge = "gaia/flora_tree_oak_large"; var oApple = "gaia/flora_tree_apple"; var oPine = "gaia/flora_tree_pine"; var oAleppoPine = "gaia/flora_tree_aleppo_pine"; var oBerryBush = "gaia/flora_bush_berry"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_deer"; var oFish = "gaia/fauna_fish"; var oSheep = "gaia/fauna_sheep"; var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneSmall = "gaia/geology_stone_mediterranean"; var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; // decorative props var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; var aLillies = "actor|props/flora/pond_lillies_large.xml"; var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockMedium = "actor|geology/stone_granite_med.xml"; var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; // terrain + entity (for painting) } //snowy else if (rt == 2) { setSunColour(0.550, 0.601, 0.644); // a little darker var tGrass = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"]; var tGrassPForest = "polar_tundra_snow"; var tGrassDForest = "polar_tundra_snow"; var tCliff = ["polar_cliff_a", "polar_cliff_b"]; var tGrassA = "snow grass 2"; var tGrassB = "polar_snow_a"; var tGrassC = "polar_ice_snow"; var tHill = ["polar_snow_b", "snow grass 75", "snow rocks", "snow forest"]; var tDirt = ["polar_ice_b", "polar_ice_c"]; var tRoad = "new_alpine_citytile"; var tRoadWild = "polar_ice_cracked"; var tGrassPatch = "snow grass 2"; var tShoreBlend = "polar_ice"; var tShore = "snow_glacial_01"; var tWater = "polar_ice_c"; // gaia entities var oOak = "gaia/flora_tree_pine_w"; var oOakLarge = "gaia/flora_tree_pine_w"; var oApple = "gaia/flora_tree_pine_w"; var oPine = "gaia/flora_tree_pine_w"; var oAleppoPine = "gaia/flora_tree_pine"; var oBerryBush = "gaia/flora_bush_berry"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_muskox"; var oFish = "gaia/fauna_fish_tuna"; var oSheep = "gaia/fauna_walrus"; var oStoneLarge = "gaia/geology_stone_alpine_a"; var oStoneSmall = "gaia/geology_stone_alpine_a"; var oMetalLarge = "gaia/geology_metal_alpine"; // decorative props var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockMedium = "actor|geology/stone_granite_med.xml"; var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; // terrain + entity (for painting) } //desert else if (rt == 3) { setSunColour(0.733, 0.746, 0.574); var tGrass = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; var tGrassPForest = "forestfloor_dirty"; var tGrassDForest = "desert_forestfloor_palms"; var tCliff = ["desert_cliff_1", "desert_cliff_2", "desert_cliff_3", "desert_cliff_4", "desert_cliff_5"]; var tGrassA = ["desert_dirt_persia_1", "desert_dirt_persia_2"]; var tGrassB = "dirta"; var tGrassC = "medit_dirt_dry"; var tHill = ["desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_dunes_50", "desert_sand_smooth"]; var tDirt = ["desert_lakebed_dry", "desert_lakebed_dry_b"]; var tRoad = "desert_city_tile"; var tRoadWild = "desert_city_tile"; var tGrassPatch = "desert_dirt_rough"; var tShoreBlend = "desert_shore_stones"; var tShore = "dirta"; var tWater = "desert_sand_wet"; // gaia entities var oOak = "gaia/flora_tree_cretan_date_palm_short"; var oOakLarge = "gaia/flora_tree_cretan_date_palm_tall"; var oApple = "gaia/flora_tree_fig"; var oPine = "gaia/flora_tree_dead"; var oAleppoPine = "gaia/flora_tree_date_palm"; var oBerryBush = "gaia/flora_bush_grapes"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_camel"; var oFish = "gaia/fauna_fish"; var oSheep = "gaia/fauna_gazelle"; var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; var oStoneSmall = "gaia/geology_stone_desert_small"; var oMetalLarge = "gaia/geology_metal_desert_slabs"; // decorative props var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; var aRockLarge = "actor|geology/stone_desert_med.xml"; var aRockMedium = "actor|geology/stone_desert_med.xml"; var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; // terrain + entity (for painting) } //alpine else if (rt == 4) { var tGrass = ["alpine_dirt_grass_50"]; var tGrassPForest = "alpine_forrestfloor"; var tGrassDForest = "alpine_forrestfloor"; var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"]; var tGrassA = "alpine_grass_rocky"; var tGrassB = ["alpine_grass_snow_50", "alpine_dirt_snow"]; var tGrassC = ["alpine_snow_a", "alpine_snow_b"]; var tHill = ["alpine_dirt_grass_50", "alpine_grass_rocky"]; var tDirt = ["alpine_dirt", "alpine_grass_d"]; var tRoad = "new_alpine_citytile"; var tRoadWild = "new_alpine_citytile"; var tGrassPatch = "new_alpine_grass_a"; var tShoreBlend = "alpine_shore_rocks"; var tShore = "alpine_shore_rocks_grass_50"; var tWater = "alpine_shore_rocks"; // gaia entities var oOak = "gaia/flora_tree_pine"; var oOakLarge = "gaia/flora_tree_pine"; var oApple = "gaia/flora_tree_pine"; var oPine = "gaia/flora_tree_pine"; var oAleppoPine = "gaia/flora_tree_pine"; var oBerryBush = "gaia/flora_bush_berry"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_goat"; var oFish = "gaia/fauna_fish_tuna"; var oSheep = "gaia/fauna_deer"; var oStoneLarge = "gaia/geology_stone_alpine_a"; var oStoneSmall = "gaia/geology_stone_alpine_a"; var oMetalLarge = "gaia/geology_metal_alpine"; // decorative props var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml"; var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml"; var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockMedium = "actor|geology/stone_granite_med.xml"; var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; var aBushSmall = "actor|props/flora/bush_desert_dry_a.xml"; // terrain + entity (for painting) } //medit else if (rt == 5){ var tGrass = ["medit_grass_field_a", "medit_grass_field_b"]; var tGrassPForest = "medit_plants_dirt"; var tGrassDForest = "medit_grass_shrubs"; var tCliff = ["medit_cliff_grass", "medit_cliff_greek", "medit_cliff_greek_2", "medit_cliff_aegean", "medit_cliff_italia", "medit_cliff_italia_grass"]; var tGrassA = "medit_grass_field_b"; var tGrassB = "medit_grass_field_brown"; var tGrassC = "medit_grass_field_dry"; var tHill = ["medit_grass_field_a", "medit_grass_field_b"]; var tDirt = ["medit_dirt", "medit_dirt_b"]; var tRoad = "medit_city_tile"; var tRoadWild = "medit_city_tile"; var tGrassPatch = "medit_grass_wild"; var tShoreBlend = "medit_sand"; var tShore = "sand_grass_25"; var tWater = "medit_sand_wet"; // gaia entities var oOak = "gaia/flora_tree_cretan_date_palm_short"; var oOakLarge = "gaia/flora_tree_medit_fan_palm"; var oApple = "gaia/flora_tree_apple"; var oPine = "gaia/flora_tree_cypress"; var oAleppoPine = "gaia/flora_tree_aleppo_pine"; var oBerryBush = "gaia/flora_bush_berry"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_deer"; var oFish = "gaia/fauna_fish"; var oSheep = "gaia/fauna_sheep"; var oStoneLarge = "gaia/geology_stonemine_medit_quarry"; var oStoneSmall = "gaia/geology_stone_mediterranean"; var oMetalLarge = "gaia/geology_metal_mediterranean_slabs"; // decorative props var aGrass = "actor|props/flora/grass_soft_large_tall.xml"; var aGrassShort = "actor|props/flora/grass_soft_large.xml"; var aReeds = "actor|props/flora/reeds_pond_lush_a.xml"; var aLillies = "actor|props/flora/pond_lillies_large.xml"; var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockMedium = "actor|geology/stone_granite_med.xml"; var aBushMedium = "actor|props/flora/bush_medit_me.xml"; var aBushSmall = "actor|props/flora/bush_medit_sm.xml"; // terrain + entity (for painting) } //savanah else if (rt == 6) { var tGrass = ["savanna_grass_a", "savanna_grass_b"]; var tGrassPForest = "savanna_forestfloor_a"; var tGrassDForest = "savanna_forestfloor_b"; var tCliff = ["savanna_cliff_a", "savanna_cliff_b"]; var tGrassA = "savanna_shrubs_a"; var tGrassB = "savanna_dirt_rocks_b"; var tGrassC = "dirt_brown_e"; var tHill = ["savanna_grass_a", "savanna_grass_b"]; var tDirt = ["savanna_dirt_rocks_b", "dirt_brown_e"]; var tRoad = "savanna_tile_a"; var tRoadWild = "savanna_tile_a"; var tGrassPatch = "savanna_grass_a"; var tShoreBlend = "savanna_riparian"; var tShore = "savanna_riparian_bank"; var tWater = "savanna_riparian_wet"; // gaia entities var oOak = "gaia/flora_tree_baobab"; var oOakLarge = "gaia/flora_tree_baobab"; var oApple = "gaia/flora_tree_baobab"; var oPine = "gaia/flora_tree_baobab"; var oAleppoPine = "gaia/flora_tree_baobab"; var oBerryBush = "gaia/flora_bush_grapes"; var oChicken = "gaia/fauna_chicken"; var rts = randInt(1,4); if (rts==1){ var oDeer = "gaia/fauna_wildebeest"; } else if (rts==2) { var oDeer = "gaia/fauna_zebra"; } else if (rts==3) { var oDeer = "gaia/fauna_giraffe"; } else if (rts==4) { var oDeer = "gaia/fauna_elephant_african_bush"; } var oFish = "gaia/fauna_fish"; var oSheep = "gaia/fauna_gazelle"; var oStoneLarge = "gaia/geology_stonemine_desert_quarry"; var oStoneSmall = "gaia/geology_stone_savanna_small"; var oMetalLarge = "gaia/geology_metal_savanna_slabs"; // decorative props var aGrass = "actor|props/flora/grass_savanna.xml"; var aGrassShort = "actor|props/flora/grass_medit_field.xml"; var aRockLarge = "actor|geology/stone_savanna_med.xml"; var aRockMedium = "actor|geology/stone_savanna_med.xml"; var aBushMedium = "actor|props/flora/bush_desert_dry_a.xml"; var aBushSmall = "actor|props/flora/bush_dry_a.xml"; // terrain + entity (for painting) } else if (rt == 7){ var tGrass = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"]; var tGrassPForest = "tropic_plants_c"; var tGrassDForest = "tropic_plants_c"; var tCliff = ["tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a", "tropic_cliff_a_plants"]; var tGrassA = "tropic_grass_c"; var tGrassB = "tropic_grass_plants"; var tGrassC = "tropic_plants"; var tHill = ["tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_c", "tropic_grass_plants", "tropic_plants", "tropic_plants_b"]; var tDirt = ["tropic_dirt_a", "tropic_dirt_a_plants"]; var tRoad = "tropic_citytile_a"; var tRoadWild = "tropic_citytile_plants"; var tGrassPatch = "tropic_plants_b"; var tShoreBlend = "temp_mud_plants"; var tShore = "tropic_beach_dry"; var tWater = "tropic_beach_wet"; // gaia entities var oOak = "gaia/flora_tree_poplar"; var oOakLarge = "gaia/flora_tree_poplar"; var oApple = "gaia/flora_tree_poplar"; var oPine = "gaia/flora_tree_cretan_date_palm_short"; var oAleppoPine = "gaia/flora_tree_cretan_date_palm_tall"; var oBerryBush = "gaia/flora_bush_berry"; var oChicken = "gaia/fauna_chicken"; var oDeer = "gaia/fauna_deer"; var oFish = "gaia/fauna_fish"; var oSheep = "gaia/fauna_tiger"; var oStoneLarge = "gaia/geology_stonemine_tropic_quarry"; var oStoneSmall = "gaia/geology_stone_tropic_a"; var oMetalLarge = "gaia/geology_metal_tropic_slabs"; // decorative props var aGrass = "actor|props/flora/plant_tropic_a.xml"; var aGrassShort = "actor|props/flora/plant_lg.xml"; var aReeds = "actor|props/flora/reeds_pond_lush_b.xml"; var aLillies = "actor|props/flora/water_lillies.xml"; var aRockLarge = "actor|geology/stone_granite_large.xml"; var aRockMedium = "actor|geology/stone_granite_med.xml"; var aBushMedium = "actor|props/flora/plant_tropic_large.xml"; var aBushSmall = "actor|props/flora/plant_tropic_large.xml"; // terrain + entity (for painting) } var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest]; var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest]; const BUILDING_ANGlE = 0.75*PI; // initialize map log("Initializing map..."); InitMap(); var numPlayers = getNumPlayers(); var mapSize = getMapSize(); var mapArea = mapSize*mapSize; log(mapSize); // create tile classes var clPlayer = createTileClass(); var clHill = createTileClass(); var clForest = createTileClass(); var clWater = createTileClass(); var clDirt = createTileClass(); var clRock = createTileClass(); var clMetal = createTileClass(); var clFood = createTileClass(); var clBaseResource = createTileClass(); var clSettlement = createTileClass(); var clLand = createTileClass(); //Paint the whole map for (var ix = 0; ix < mapSize; ix++) { for (var iz = 0; iz < mapSize; iz++) { var x = ix / (mapSize + 1.0); var z = iz / (mapSize + 1.0); placeTerrain(ix, iz, tWater); } } var radius = scaleByMapSize(15,30); var cliffRadius = 2; var elevation = 20; // randomize player order var playerIDs = []; for (var i = 0; i < numPlayers; i++) { playerIDs.push(i+1); } playerIDs = shuffleArray(playerIDs); // place players var playerX = new Array(numPlayers); var playerZ = new Array(numPlayers); var playerAngle = new Array(numPlayers); var startAngle = randFloat(0, TWO_PI); for (var i = 0; i < numPlayers; i++) { playerAngle[i] = startAngle + i*TWO_PI/numPlayers; playerX[i] = 0.5 + 0.35*cos(playerAngle[i]); playerZ[i] = 0.5 + 0.35*sin(playerAngle[i]); } // 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 = 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) 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 = 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)-0.2)) + { + if (rifp%2 == 0) + { + rifp = 0; + placeObject(ix, iz, aPlants, 0, randFloat(0,TWO_PI)); + } + ++rifp; + } } else if (xk > (cu+(0.95+WATER_WIDTH)/2)) { h = -3 + 200.0*(xk-(cu+((0.95+WATER_WIDTH)/2))); + if ((h < 0.1)&&(h>-0.2)) + { + if (rifp2%2 == 0) + { + rifp2 = 0; + placeObject(ix, iz, aPlants, 0, randFloat(0,TWO_PI)); + } + ++rifp2; + } } else { @@ -643,12 +609,12 @@ createObjectGroups( // Set environment setSkySet("sunny"); -setSunColour(0.873, 0.846, 0.674); -setWaterColour(0.312, 0.562, 0.652); -setWaterTint(0.412, 0.212, 0.212); -setWaterReflectionTint(0.447, 0.202, 0.222); -setWaterMurkiness(1.0); -setWaterReflectionTintStrength(0.677); +setSunColour(0.711, 0.746, 0.574); +setWaterColour(0.292, 0.347, 0.691); +setWaterTint(0.550, 0.543, 0.437); +setWaterReflectionTint(0.562, 0.511, 0.425); +setWaterMurkiness(0.83); +setWaterReflectionTintStrength(0.377); // Export map data ExportMap();