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();