Trivial random map script cleanup.

Remove duplicate comments and add more progress updates.
Few whitespace fixes and ternaries.

This was SVN commit r18873.
This commit is contained in:
elexis 2016-10-27 12:27:47 +00:00
parent f92279bbef
commit c1774bc4f2
14 changed files with 117 additions and 541 deletions

View File

@ -74,7 +74,6 @@ else
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
log("Initializing map...");
InitMap();
const numPlayers = getNumPlayers();
@ -94,21 +93,18 @@ var clSettlement = createTileClass();
//cover the ground with the primary terrain chosen in the beginning
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, tPrimary);
}
}
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
// place players
@ -151,7 +147,6 @@ for (var i = 0; i < numPlayers; i++)
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
createArea(placer, painter, null);
// create starting units
placeCivDefaultEntities(fx, fz, id);
placeDefaultChicken(fx, fz, clBaseResource);
@ -170,9 +165,8 @@ for (var i = 0; i < numPlayers; i++)
// create metal mine
var mAngle = bbAngle;
while(abs(mAngle - bbAngle) < PI/3)
{
mAngle = randFloat(0, TWO_PI);
}
var mDist = 12;
var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle));
@ -219,7 +213,6 @@ for (var i = 0; i < numPlayers; i++)
createObjectGroup(group, 0);
}
}
RMS.SetProgress(20);
//place the mountains
@ -251,26 +244,19 @@ points.push([round(fractionToTiles(0.5)), round(fractionToTiles(0.5))]);
var numPoints = numPlayers * 4 + 1;
for (var i = 0; i < numPoints; ++i)
{
edgesConncetedToPoints.push(0);
}
//we are making a planar graph where every edge is a straight line.
var possibleEdges = [];
//add all of the possible combinations
for (var i = 0; i < numPoints; ++i)
{
for (var j = numPlayers; j < numPoints; ++j)
{
if (j > i)
possibleEdges.push([i,j]);
}
}
//we need a matrix so that we can prevent the mountain ranges from bocking a player
var matrix = [];
for (var i = 0; i < numPoints; ++i)
{
matrix.push([]);
@ -284,7 +270,7 @@ for (var i = 0; i < numPoints; ++i)
}
//find and place the edges
while (possibleEdges.length > 0)
while (possibleEdges.length)
{
var index = randInt(0, possibleEdges.length - 1);
@ -322,7 +308,6 @@ while (possibleEdges.length > 0)
}
for (var i = 0; i < numPoints; ++i)
{
if (matrix[selected][i])
{
if (i == backtree[tree.lastIndexOf(selected)])
@ -343,7 +328,6 @@ while (possibleEdges.length > 0)
break;
}
}
}
}
if (!accept)
@ -452,7 +436,6 @@ while (possibleEdges.length > 0)
paintTerrainBasedOnHeight(3.1, 29, 0, tCliff);
paintTerrainBasedOnHeight(29, 30, 3, tSnowLimited);
// create bumps
log("Creating bumps...");
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
@ -462,8 +445,8 @@ createAreas(
avoidClasses(clPlayer, 10),
scaleByMapSize(100, 200)
);
RMS.SetProgress(40);
// create hills
log("Creating hills...");
placer = new ClumpPlacer(scaleByMapSize(40, 150), 0.2, 0.1, 1);
var terrainPainter = new LayeredPainter(
@ -477,6 +460,7 @@ createAreas(
avoidClasses(clPlayer, 20, clHill, 14),
scaleByMapSize(10, 80) * numPlayers
);
RMS.SetProgress(50);
// calculate desired number of trees for map (based on size)
var MIN_TREES = 500;
@ -487,7 +471,6 @@ 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 = [
[[tForestFloor, tPrimary, pForest], [tForestFloor, pForest]]
@ -510,10 +493,8 @@ for (var i = 0; i < types.length; ++i)
num
);
}
RMS.SetProgress(60);
// create dirt patches
log("Creating dirt patches...");
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
for (var i = 0; i < sizes.length; i++)
@ -531,7 +512,6 @@ for (var i = 0; i < sizes.length; i++)
);
}
// create grass patches
log("Creating grass patches...");
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
for (var i = 0; i < sizes.length; i++)
@ -547,16 +527,14 @@ for (var i = 0; i < sizes.length; i++)
}
RMS.SetProgress(65);
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, 20, clRock, 10, clHill, 1),
scaleByMapSize(4,16), 100
);
// create small stone quarries
log("Creating small stone mines...");
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
createObjectGroups(group, 0,
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
@ -564,16 +542,13 @@ createObjectGroups(group, 0,
);
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, 20, clMetal, 10, clRock, 5, clHill, 1),
scaleByMapSize(4,16), 100
);
RMS.SetProgress(70);
// create small decorative rocks
log("Creating small decorative rocks...");
group = new SimpleGroup(
[new SimpleObject(aRockMedium, 1,3, 0,1)],
@ -585,8 +560,6 @@ createObjectGroups(
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)],
@ -597,10 +570,8 @@ createObjectGroups(
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(8, 131), 50
);
RMS.SetProgress(75);
// create deer
log("Creating deer...");
group = new SimpleGroup(
[new SimpleObject(oDeer, 5,7, 0,4)],
@ -611,7 +582,6 @@ createObjectGroups(group, 0,
3 * numPlayers, 50
);
// create berry bush
log("Creating berry bush...");
group = new SimpleGroup(
[new SimpleObject(oBerryBush, 5,7, 0,4)],
@ -622,7 +592,6 @@ createObjectGroups(group, 0,
randInt(1, 4) * numPlayers + 2, 50
);
// create rabbit
log("Creating rabbit...");
group = new SimpleGroup(
[new SimpleObject(oRabbit, 2,3, 0,2)],
@ -632,11 +601,8 @@ createObjectGroups(group, 0,
avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
3 * numPlayers, 50
);
RMS.SetProgress(85);
// create straggler trees
log("Creating straggler trees...");
var types = [oPine, oPine]; // some variation
var num = floor(numStragglers / types.length);
@ -652,8 +618,6 @@ for (var i = 0; i < types.length; ++i)
);
}
//create small grass tufts
log("Creating small grass tufts...");
var planetm = 1;
@ -664,10 +628,8 @@ createObjectGroups(group, 0,
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0),
planetm * scaleByMapSize(13, 200)
);
RMS.SetProgress(90);
// 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)]
@ -676,10 +638,8 @@ createObjectGroups(group, 0,
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0),
planetm * 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)]
@ -705,6 +665,4 @@ setWaterMurkiness(0.72);
setWaterWaviness(2.0);
setWaterType("lake");
// Export map data
ExportMap();
ExportMap();

View File

@ -2,7 +2,6 @@ RMS.LoadLibrary("rmgen");
TILE_CENTERED_HEIGHT_MAP = true;
//random terrain textures
var random_terrain = randomizeBiome();
const tMainTerrain = rBiomeT1();
@ -50,15 +49,12 @@ const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TE
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
log("Initializing map...");
InitMap();
const numPlayers = getNumPlayers();
const mapSize = getMapSize();
const mapArea = mapSize*mapSize;
// create tile classes
var clPlayer = createTileClass();
var clHill = createTileClass();
var clForest = createTileClass();
@ -70,12 +66,10 @@ var clBaseResource = createTileClass();
var clSettlement = createTileClass();
var clLand = createTileClass();
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
// place players
@ -121,7 +115,6 @@ for (var i = 0; i < numPlayers; i++)
);
createArea(placer, [terrainPainter, elevationPainter, paintClass(clPlayer)], null);
// create starting units
placeCivDefaultEntities(fx, fz, id, { 'iberWall': 'towers' });
placeDefaultChicken(fx, fz, clBaseResource);
@ -151,9 +144,8 @@ for (var i = 0; i < numPlayers; i++)
// create metal mine
var mAngle = bbAngle;
while(abs(mAngle - bbAngle) < PI/3)
{
mAngle = randFloat(0, TWO_PI);
}
var mDist = 12;
var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle));
@ -201,7 +193,6 @@ for (var i = 0; i < numPlayers; i++)
}
}
// create islands
log("Creating islands...");
placer = new ChainPlacer(floor(scaleByMapSize(4, 8)), floor(scaleByMapSize(8, 14)), floor(scaleByMapSize(25, 60)), 0.07, undefined, undefined, scaleByMapSize(30,70));
terrainPainter = new LayeredPainter(
@ -216,7 +207,6 @@ createAreas(
scaleByMapSize(1, 5)*randInt(5,10)
);
//painting the terrain
paintTerrainBasedOnHeight(2.4, 3.4, 3, tMainTerrain);
paintTerrainBasedOnHeight(1, 3, 0, tShore);
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
@ -235,16 +225,13 @@ for (var i = 0; i < numPlayers; i++)
createArea(placer, painter, null);
}
// create bumps
createBumps([avoidClasses(clPlayer, 10), stayClasses(clLand, 5)]);
// create hills
if (randInt(1,2) == 1)
createHills([tMainTerrain, tCliff, tHill], [avoidClasses(clPlayer, 2, clHill, 15), stayClasses(clLand, 0)], clHill, scaleByMapSize(1, 4) * numPlayers);
else
createMountains(tCliff, [avoidClasses(clPlayer, 2, clHill, 15), stayClasses(clLand, 0)], clHill, scaleByMapSize(1, 4) * numPlayers);
// create forests
createForests(
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
[avoidClasses(clPlayer, 20, clForest, 17, clHill, 0), stayClasses(clLand, 4)],
@ -252,10 +239,8 @@ createForests(
1.0,
random_terrain
);
RMS.SetProgress(50);
// create dirt patches
log("Creating dirt patches...");
createLayeredPatches(
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
@ -264,18 +249,15 @@ createLayeredPatches(
[avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 12), stayClasses(clLand, 7)]
);
// create grass patches
log("Creating grass patches...");
createPatches(
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
tTier4Terrain,
[avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 12), stayClasses(clLand, 7)]
);
RMS.SetProgress(55);
log("Creating stone mines...");
// create stone quarries
createMines(
[
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
@ -285,7 +267,6 @@ createMines(
);
log("Creating metal mines...");
// create large metal quarries
createMines(
[
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
@ -293,15 +274,10 @@ createMines(
[avoidClasses(clForest, 1, clPlayer, 7, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 6)],
clMetal
);
RMS.SetProgress(65);
// create decoration
var planetm = 1;
if (random_terrain == g_BiomeTropic)
planetm = 8;
log("Creating decoration...");
var planetm = random_terrain == g_BiomeTropic ? 8 : 1;
createDecoration
(
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
@ -319,10 +295,9 @@ createDecoration
],
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 5)]
);
RMS.SetProgress(70);
// create animals
log("Creating animals...");
createFood
(
[
@ -335,8 +310,9 @@ createFood
],
[avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 20), stayClasses(clLand, 3)]
);
RMS.SetProgress(75);
// create fruits
log("Creating fruits...");
createFood
(
[
@ -347,8 +323,9 @@ createFood
],
[avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 10), stayClasses(clLand, 3)]
);
RMS.SetProgress(80);
// create fish
log("Creating fish...");
createFood
(
[
@ -362,12 +339,10 @@ createFood
RMS.SetProgress(85);
// create straggler trees
log("Creating straggler trees...");
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
createStragglerTrees(types, [avoidClasses(clForest, 7, clHill, 1, clPlayer, 3, clMetal, 1, clRock, 1), stayClasses(clLand, 7)]);
setWaterWaviness(4.0);
setWaterType("ocean");
// Export map data
ExportMap();

View File

@ -47,15 +47,12 @@ const pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERR
const pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
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();
@ -70,13 +67,10 @@ var clSettlement = createTileClass();
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
// place players
var playerX = new Array(numPlayers);
var playerZ = new Array(numPlayers);
var playerAngle = new Array(numPlayers);
@ -158,9 +152,8 @@ for (var i = 0; i < numPlayers; i++)
// create metal mine
var mAngle = bbAngle;
while(abs(mAngle - bbAngle) < PI/3)
{
mAngle = randFloat(0, TWO_PI);
}
var mDist = 12;
var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle));
@ -207,10 +200,8 @@ for (var i = 0; i < numPlayers; i++)
createObjectGroup(group, 0);
}
}
RMS.SetProgress(10);
// create lakes
log("Creating lakes...");
var numLakes = round(scaleByMapSize(1,4) * numPlayers);
placer = new ClumpPlacer(scaleByMapSize(100,250), 0.8, 0.1, 10);
@ -225,10 +216,8 @@ var waterAreas = createAreas(
avoidClasses(clPlayer, 2, clWater, 20),
numLakes
);
RMS.SetProgress(15);
// create reeds
log("Creating reeds...");
group = new SimpleGroup(
[new SimpleObject(aReeds, 5,10, 0,4), new SimpleObject(aLillies, 0,1, 0,4)], true
@ -238,10 +227,8 @@ createObjectGroupsByAreas(group, 0,
numLakes, 100,
waterAreas
);
RMS.SetProgress(20);
// create fish
log("Creating fish...");
createObjectGroupsByAreas(
new SimpleGroup(
@ -256,27 +243,20 @@ createObjectGroupsByAreas(
);
RMS.SetProgress(25);
// create bumps
createBumps(avoidClasses(clWater, 2, clPlayer, 0));
RMS.SetProgress(30);
// create hills
log("Creating hills...");
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 2, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers);
RMS.SetProgress(35);
// create forests
createForests(
[tGrass, tGrassDForest, tGrassPForest, pForestP, pForestD],
avoidClasses(clPlayer, 1, clWater, 3, clForest, 17, clHill, 1),
clForest
);
RMS.SetProgress(40);
// create dirt patches
log("Creating dirt patches...");
createLayeredPatches(
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
@ -284,10 +264,8 @@ createLayeredPatches(
[1,1],
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0)
);
RMS.SetProgress(45);
// create grass patches
log("Creating grass patches...");
createLayeredPatches(
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
@ -295,11 +273,9 @@ createLayeredPatches(
[1],
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0)
);
RMS.SetProgress(50);
log("Creating stone mines...");
// create stone quarries
createMines(
[
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
@ -307,9 +283,9 @@ createMines(
],
avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10, clHill, 1)
);
RMS.SetProgress(55);
log("Creating metal mines...");
// create large metal quarries
createMines(
[
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
@ -317,10 +293,8 @@ createMines(
avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clMetal, 10, clRock, 5, clHill, 1),
clMetal
);
RMS.SetProgress(60);
//create decoration
createDecoration
(
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
@ -338,10 +312,8 @@ createDecoration
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0)
);
RMS.SetProgress(70);
// create animals
createFood
(
[
@ -354,8 +326,8 @@ createFood
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 1, clHill, 1, clFood, 20)
);
RMS.SetProgress(80);
// create fruits
createFood
(
[
@ -366,14 +338,13 @@ createFood
],
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
);
RMS.SetProgress(85);
RMS.SetProgress(90);
// create straggler trees
log("Creating metal mines...");
var types = [oOak, oOakLarge, oPine, oApple]; // some variation
createStragglerTrees(types, avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 1, clRock, 1));
RMS.SetProgress(90);
// Set environment
setSkySet("cirrus");
setWaterColor(0.447, 0.412, 0.322); // muddy brown
setWaterTint(0.447, 0.412, 0.322); // muddy brown
@ -389,5 +360,4 @@ setPPSaturation(0.62);
setPPContrast(0.62);
setPPBloom(0.3);
// Export map data
ExportMap();

View File

@ -9,12 +9,10 @@ const tBeachWet = "medit_sand_wet";
const tBeachDry = "medit_sand";
const tBeachGrass = "medit_rocks_grass";
const tBeach = ["medit_rocks_grass","medit_sand", "medit_rocks_grass_shrubs"];
//const tBeachBlend = ["medit_rocks_grass","medit_grass_field_dry", "medit_grass_field_brown","medit_rocks_shrubs", "medit_rocks_grass_shrubs"];
const tBeachBlend = ["medit_rocks_grass", "medit_rocks_grass_shrubs"];
const tBeachCliff = "medit_dirt";
const tCity = "medit_city_tile";
const tGrassDry = ["medit_grass_field_dry", "medit_grass_field_b"];
//const tGrass = ["medit_grass_field_dry", "medit_grass_field_brown", "medit_grass_field_b"];
const tGrass = ["medit_rocks_grass", "medit_rocks_grass","medit_dirt","medit_rocks_grass_shrubs"];
const tGrassLush = ["grass_temperate_dry_tufts", "medit_grass_flowers"];
const tGrassShrubs = "medit_shrubs";
@ -70,14 +68,11 @@ const pPoplarForest = [tForestFloor+TERRAIN_SEPARATOR+oLombardyPoplar, tGrass];
const pMainForest = [tForestFloor+TERRAIN_SEPARATOR+oCarob, tForestFloor+TERRAIN_SEPARATOR+oBeech, tGrass, tGrass];
log("Initializing map...");
InitMap();
const numPlayers = getNumPlayers();
const mapSize = getMapSize();
// create tile classes
var clCoral = createTileClass();
var clPlayer = createTileClass();
var clIsland = createTileClass();
@ -94,23 +89,13 @@ var clBaseResource = createTileClass();
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
//array holding starting islands based on number of players
var startingPlaces=[[0],[0,3],[0,2,4],[0,1,3,4],[0,1,2,3,4],[0,1,2,3,4,5]];
//figure out how many spoke islands
var numIslands =6;
if(numPlayers<6){
numIslands=6;
}else{
numIslands=numPlayers;
}
//figure out coordinates of spoke islands
var numIslands = Math.min(6, numPlayers);
var islandX = new Array(numIslands);
var islandZ = new Array(numIslands);
var islandAngle = new Array(numIslands);
@ -125,8 +110,8 @@ for (var i=0; i < numIslands; i++)
islandZ[i] = 0.5 + 0.39*sin(islandAngle[i]);
}
for(var i=0;i<numIslands;i++){
for (var i = 0; i < numIslands; ++i)
{
var radius = scaleByMapSize(15,40);
var coral=scaleByMapSize(1,5);
var wet = 3;
@ -206,9 +191,8 @@ for (var i=0; i < numIslands; i++)
// create metal mine
var mAngle = bbAngle;
while(abs(mAngle - bbAngle) < PI/3)
{
mAngle = randFloat(0, TWO_PI);
}
var mDist = 12;
var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle));
@ -240,11 +224,9 @@ for (var i=0; i < numIslands; i++)
);
createObjectGroup(group, 0, avoidClasses(clBaseResource,2));
}
RMS.SetProgress(15);
//Populate the islands with the players
log("Populating islands ...");
//nPlayer is the player we are on i is the island we are on
var nPlayer=0;
for(var i=0;i<numIslands;i++)
@ -277,10 +259,9 @@ RMS.SetProgress(15);
// get the x and z in tiles
var nCenter = floor(scaleByMapSize(1,4));
var startAngle = randFloat() * 2 * PI;
for (var i=0; i < nCenter; i++)
for (var i = 0; i < nCenter; ++i)
{
var fx=.5;
var fz=.5;
@ -331,7 +312,6 @@ for (var i=0; i < nCenter; i++)
}
RMS.SetProgress(30);
// create bumps
log("Creating bumps...");
placer = new ClumpPlacer(scaleByMapSize(20, 60), 0.3, 0.06, 1);
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 3);
@ -342,8 +322,8 @@ createAreasInAreas(
scaleByMapSize(25, 75),15,
areas
);
RMS.SetProgress(34);
// create hills
log("Creating hills...");
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
terrainPainter = new LayeredPainter(
@ -358,20 +338,14 @@ createAreasInAreas(
scaleByMapSize(5, 30), 15,
areas
);
RMS.SetProgress(38);
RMS.SetProgress(40);
//find all water
// Find all water
for (var ix = 0; ix < mapSize; ix++)
{
for (var iz = 0; iz < mapSize; iz++)
{
if(getHeight(ix,iz)<0){
addToClass(ix,iz,clWater);
}
}
}
if (getHeight(ix,iz) < 0)
addToClass(ix,iz,clWater);
// create forests
log("Creating forests...");
var types = [
[[tForestFloor, tGrass, pPalmForest], [tForestFloor, pPalmForest]],
@ -395,38 +369,32 @@ for (var i = 0; i < types.length; ++i)
num, 20, areas
);
}
RMS.SetProgress(60);
RMS.SetProgress(42);
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);
createObjectGroupsByAreas(group, 0,
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 1)],
scaleByMapSize(4,16), 200, areas
);
RMS.SetProgress(46);
// create small stone quarries
log("Creating small stone mines...");
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
createObjectGroupsByAreas(group, 0,
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 2)],
scaleByMapSize(4,16), 200, areas
);
RMS.SetProgress(70);
RMS.SetProgress(50);
log("Creating metal mines...");
// create large metal quarries
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
createObjectGroupsByAreas(group, 0,
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clMetal, 2, clRock, 1)],
scaleByMapSize(4,16), 200, areas
);
RMS.SetProgress(54);
RMS.SetProgress(80);
//create shrub patches
log("Creating shrub patches...");
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
for (var i = 0; i < sizes.length; i++)
@ -440,8 +408,8 @@ for (var i = 0; i < sizes.length; i++)
scaleByMapSize(4, 16), 20, areas
);
}
RMS.SetProgress(58);
//create grass patches
log("Creating grass patches...");
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
for (var i = 0; i < sizes.length; i++)
@ -455,8 +423,7 @@ for (var i = 0; i < sizes.length; i++)
scaleByMapSize(4, 16), 20, areas
);
}
RMS.SetProgress(90);
RMS.SetProgress(62);
log("Creating straggler trees...");
// create straggler trees
@ -469,9 +436,9 @@ for (var t in trees)
scaleByMapSize(2, 38), 50, areas
);
}
RMS.SetProgress(66);
// create straggler cypresses
log("Create straggler cypresses...");
group = new SimpleGroup(
[new SimpleObject(oCypress2, 1,3, 0,3), new SimpleObject(oCypress1, 0,2, 0,2)],
true
@ -480,9 +447,9 @@ createObjectGroupsByAreas(group, 0,
avoidClasses(clWater, 2, clForest, 2, clCity, 3, clBaseResource, 1, clRock, 1, clMetal, 1, clPlayer, 1, clHill, 1),
scaleByMapSize(5, 75), 50, areas
);
RMS.SetProgress(70);
// create straggler date palms
log("Create straggler date palms...");
group = new SimpleGroup(
[new SimpleObject(oDateS, 1,3, 0,3), new SimpleObject(oDateT, 0,2, 0,2)],
true
@ -491,9 +458,9 @@ createObjectGroupsByAreas(group, 0,
avoidClasses(clWater, 2, clForest, 1, clCity, 0, clBaseResource, 1, clRock, 1, clMetal, 1, clPlayer, 1, clHill, 1),
scaleByMapSize(5, 75), 50, areas
);
RMS.SetProgress(74);
log("Creating rocks...");
// create rocks
group = new SimpleGroup(
[new SimpleObject(aRockSmall, 0,3, 0,2), new SimpleObject(aRockMed, 0,2, 0,2),
new SimpleObject(aRockLarge, 0,1, 0,2)]
@ -502,8 +469,8 @@ createObjectGroups(group, 0,
avoidClasses(clWater, 0, clCity, 0),
scaleByMapSize(30, 180), 50
);
RMS.SetProgress(78);
// create deer
log("Creating deer...");
group = new SimpleGroup(
[new SimpleObject(oDeer, 5,7, 0,4)],
@ -513,50 +480,48 @@ createObjectGroups(group, 0,
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clCity, 10, clMetal, 2, clRock, 2, clFood, 8),
3 * numPlayers, 50
);
RMS.SetProgress(95);
RMS.SetProgress(82);
log("Creating berry bushes...");
// create berry bushes
group = new SimpleGroup([new SimpleObject(oBerryBush, 5,7, 0,3)], true, clFood);
createObjectGroups(group, 0,
avoidClasses(clWater, 2, clForest, 1, clHill, 1, clCity, 10, clMetal, 2, clRock, 2, clFood, 8),
1.5 * numPlayers, 100
);
RMS.SetProgress(86);
log("Creating Fish...");
// create Fish
group = new SimpleGroup([new SimpleObject(oFish, 1,1, 0,3)], true, clFood);
createObjectGroups(group, 0,
[stayClasses(clWater,1),avoidClasses(clFood, 8)],
scaleByMapSize(40,200), 100
);
RMS.SetProgress(90);
log("Creating Whales...");
// create Whales
group = new SimpleGroup([new SimpleObject(oWhale, 1,1, 0,3)], true, clFood);
createObjectGroups(group, 0,
[stayClasses(clWater,1),avoidClasses(clFood, 8, clPlayer,4,clIsland,4)],
scaleByMapSize(10,40), 100
);
RMS.SetProgress(94);
log("Creating shipwrecks...");
// create shipwreck
group = new SimpleGroup([new SimpleObject(oShipwreck, 1,1, 0,3)], true, clFood);
createObjectGroups(group, 0,
[stayClasses(clWater,1),avoidClasses(clFood, 8)],
scaleByMapSize(6,16), 100
);
RMS.SetProgress(98);
log("Creating shipwreck debris...");
// create shipwreck debris
group = new SimpleGroup([new SimpleObject(oShipDebris, 1,2, 0,4)], true, clFood);
createObjectGroups(group, 0,
[stayClasses(clWater,1),avoidClasses(clFood, 8)],
scaleByMapSize(10,20), 100
);
RMS.SetProgress(99);
// Adjust environment
setSkySet("sunny");
setWaterColor(0.2,0.294,0.49);
setWaterTint(0.208, 0.659, 0.925);
@ -564,5 +529,4 @@ setWaterMurkiness(0.72);
setWaterWaviness(3.0);
setWaterType("ocean");
// Export map data
ExportMap();

View File

@ -49,7 +49,6 @@ const pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oOak, tGrassPForest];
const WATER_WIDTH = 0.25;
log("Initializing map...");
InitMap();
const numPlayers = getNumPlayers();
@ -57,7 +56,6 @@ const mapSize = getMapSize();
const mapArea = mapSize*mapSize;
// create tile classes
var clPlayer = createTileClass();
var clHill = createTileClass();
var clForest = createTileClass();
@ -73,9 +71,7 @@ var clShallow = createTileClass();
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
// place players
@ -206,7 +202,6 @@ for (var i = 0; i < numPlayers; i++)
createObjectGroup(group, 0);
}
}
RMS.SetProgress(10);
log("Creating sea");
@ -215,7 +210,6 @@ var theta2 = randFloat(0, 1);
var seed = randFloat(2,3);
var seed2 = randFloat(2,3);
for (var ix = 0; ix < mapSize; ix++)
{
for (var iz = 0; iz < mapSize; iz++)
{
var x = ix / (mapSize + 1.0);
@ -229,45 +223,30 @@ for (var ix = 0; ix < mapSize; ix++)
var cu = km*rndRiver(theta+x*0.5*(mapSize/64),seed);
var cu2 = km*rndRiver(theta2+x*0.5*(mapSize/64),seed2);
if ((z > cu + 0.5 - WATER_WIDTH/2) && (z < cu2 + 0.5 + WATER_WIDTH/2))
if (z > cu + 0.5 - WATER_WIDTH/2 &&
z < cu2 + 0.5 + WATER_WIDTH/2)
{
var h;
if (z < (cu + 0.5 + fadeDist - WATER_WIDTH/2))
{
h = 3 - 7 * (1 - ((cu + 0.5 + fadeDist - WATER_WIDTH/2) - z)/fadeDist);
}
else if (z > (cu2 + 0.5 - fadeDist + WATER_WIDTH/2))
{
h = 3 - 7 * (1 - (z - (cu2 + 0.5 - fadeDist + WATER_WIDTH/2))/fadeDist);
}
else
{
h = -4.0;
}
if (h < -1.5)
{
placeTerrain(ix, iz, tWater);
}
else
{
placeTerrain(ix, iz, tShore);
}
setHeight(ix, iz, h);
}
else
{
setHeight(ix, iz, 3.1);
}
}
}
RMS.SetProgress(20);
log("Creating rivers");
for (var i = 0; i <= randInt(8, (scaleByMapSize(12,20))); i++)
{
var cLocation = randFloat(0.05,0.95);
@ -313,21 +292,14 @@ passageMaker(round(fractionToTiles(0.2)), round(fractionToTiles(0.75)), round(fr
paintTerrainBasedOnHeight(-5, 1, 1, tWater);
paintTerrainBasedOnHeight(1, 3, 1, tShore);
paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
RMS.SetProgress(25);
// create bumps
createBumps(avoidClasses(clWater, 5, clPlayer, 20));
RMS.SetProgress(30);
// create hills
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15, clWater, 5), clHill, scaleByMapSize(1, 4) * numPlayers);
RMS.SetProgress(50);
// create forests
createForests(
[tGrass, tGrassDForest, tGrassDForest, pForestD, pForestD],
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 6),
@ -335,10 +307,8 @@ createForests(
1.0,
0
);
RMS.SetProgress(70);
// create dirt patches
log("Creating dirt patches...");
createLayeredPatches(
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
@ -347,7 +317,6 @@ createLayeredPatches(
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6)
);
// create grass patches
log("Creating grass patches...");
createPatches(
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
@ -355,11 +324,9 @@ createPatches(
[1],
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6)
);
RMS.SetProgress(80);
log("Creating stone mines...");
// create stone quarries
createMines(
[
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
@ -369,7 +336,6 @@ createMines(
);
log("Creating metal mines...");
// create large metal quarries
createMines(
[
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
@ -377,10 +343,8 @@ createMines(
avoidClasses(clWater, 2, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2),
clMetal
);
RMS.SetProgress(85);
// create decoration
createDecoration
(
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
@ -450,13 +414,10 @@ createFood
[avoidClasses(clFood, 6), stayClasses(clWater, 4)]
);
// create straggler trees
log("Creating straggler trees...");
var types = [oBeech, oPoplar, oApple]; // some variation
createStragglerTrees(types, avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 8, clMetal, 1, clRock, 1));
// Set environment
setSkySet("cirrus");
setWaterColor(0.114, 0.192, 0.463);
@ -473,6 +434,4 @@ setPPSaturation(0.62);
setPPContrast(0.62);
setPPBloom(0.37);
// Export map data
ExportMap();

View File

@ -47,15 +47,12 @@ const pForestO = [tForestFloor + TERRAIN_SEPARATOR + oOak, tForestFloor];
const pForestP = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
log("Initializing map...");
InitMap();
const numPlayers = getNumPlayers();
const mapSize = getMapSize();
const mapArea = mapSize*mapSize;
// create tile classes
var clPlayer = createTileClass();
var clHill = createTileClass();
var clForest = createTileClass();
@ -67,17 +64,14 @@ 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 = sortPlayers(playerIDs);
// place players
var playerX = new Array(numPlayers);
var playerZ = new Array(numPlayers);
var playerAngle = new Array(numPlayers);
@ -189,7 +183,6 @@ for (var i=0; i < numPlayers; i++)
placeCustomFortress(playerX[i], playerZ[i], new Fortress("Spahbod", wall), civ, i+1);
}
// create lakes
log("Creating lakes...");
var numLakes = round(scaleByMapSize(1,4) * numPlayers);
var placer = new ClumpPlacer(scaleByMapSize(100,250), 0.8, 0.1, 10);
@ -204,10 +197,8 @@ var waterAreas = createAreas(
avoidClasses(clPlayer, 7, clWater, 20),
numLakes
);
RMS.SetProgress(15);
// create reeds
log("Creating reeds...");
group = new SimpleGroup(
[new SimpleObject(aReeds, 5,10, 0,4), new SimpleObject(aLillies, 0,1, 0,4)], true
@ -217,10 +208,8 @@ createObjectGroupsByAreas(group, 0,
numLakes, 100,
waterAreas
);
RMS.SetProgress(25);
RMS.SetProgress(20);
// create fish
log("Creating fish...");
createObjectGroupsByAreas(
new SimpleGroup(
@ -233,19 +222,14 @@ createObjectGroupsByAreas(
50,
waterAreas
);
RMS.SetProgress(25);
// create bumps
createBumps(avoidClasses(clWater, 2, clPlayer, 5));
RMS.SetProgress(30);
// create hills
createBumps(avoidClasses(clWater, 2, clPlayer, 5));
RMS.SetProgress(35);
log("Creating hills...");
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 5, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers);
RMS.SetProgress(35);
RMS.SetProgress(40);
// calculate desired number of trees for map (based on size)
const MIN_TREES = 500;
@ -256,7 +240,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
var numForest = totalTrees * P_FOREST;
g_numStragglerTrees = totalTrees * (1.0 - P_FOREST);
// create forests
log("Creating forests...");
var types = [
[[tForestFloor, tGrass, pForestD], [tForestFloor, pForestD]],
@ -279,10 +262,8 @@ for (var i = 0; i < types.length; ++i)
num
);
}
RMS.SetProgress(50);
// create dirt patches
log("Creating dirt patches...");
createLayeredPatches(
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
@ -290,21 +271,17 @@ createLayeredPatches(
[1,1],
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 1)
);
RMS.SetProgress(55);
// create grass patches
log("Creating grass patches...");
createPatches(
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
tGrassPatch,
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 1)
);
RMS.SetProgress(60);
log("Creating stone mines...");
// create stone quarries
createMines(
[
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
@ -312,9 +289,9 @@ createMines(
],
avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10, clHill, 1)
);
RMS.SetProgress(65);
log("Creating metal mines...");
// create large metal quarries
createMines(
[
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
@ -322,10 +299,8 @@ createMines(
avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clMetal, 10, clRock, 5, clHill, 1),
clMetal
);
RMS.SetProgress(70);
//create decoration
createDecoration
(
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
@ -343,7 +318,6 @@ createDecoration
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 1, clHill, 0)
);
RMS.SetProgress(80);
// create animals
@ -359,6 +333,7 @@ createFood
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 6, clHill, 1, clFood, 20)
);
RMS.SetProgress(85);
// create fruits
createFood
@ -374,10 +349,10 @@ createFood
RMS.SetProgress(90);
// create straggler trees
log("Creating straggler trees...");
var types = [oOak, oBeech, oPine]; // some variation
createStragglerTrees(types, avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 1, clRock, 1));
RMS.SetProgress(95);
setSkySet("sunny");
setWaterColor(0.157, 0.149, 0.443);
@ -394,5 +369,4 @@ setPPContrast(0.56);
setPPBloom(0.38);
setPPEffect("hdr");
// Export map data
ExportMap();

View File

@ -73,12 +73,8 @@ var clSettlement = createTileClass();
var clLand = createTileClass();
for (var ix = 0; ix < mapSize; ix++)
{
for (var iz = 0; iz < mapSize; iz++)
{
placeTerrain(ix, iz, tMainTerrain);
}
}
var fx = fractionToTiles(0.5);
var fz = fractionToTiles(0.5);
@ -99,18 +95,14 @@ var elevationPainter = new SmoothElevationPainter(
);
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
// place players
var playerX = new Array(numPlayers);
var playerZ = new Array(numPlayers);
var playerAngle = new Array(numPlayers);
@ -150,7 +142,6 @@ for (var i = 0; i < numPlayers; i++)
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
createArea(placer, painter, null);
// create starting units
placeCivDefaultEntities(fx, fz, id, { 'iberWall': 'towers' });
placeDefaultChicken(fx, fz, clBaseResource);
@ -169,9 +160,8 @@ for (var i = 0; i < numPlayers; i++)
// create metal mine
var mAngle = bbAngle;
while(abs(mAngle - bbAngle) < PI/3)
{
mAngle = randFloat(0, TWO_PI);
}
var mDist = 12;
var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle));
@ -279,7 +269,6 @@ else if ((mapSize == 448)&&(numPlayers <= 6))
split = 2;
}
//create rivers
log ("Creating rivers...");
for (var m = 0; m < numPlayers*split; m++)
{
@ -396,13 +385,11 @@ for (var i = 0; i < numPlayers; i++)
createArea(placer, painter, null);
}
// create hills
if (randInt(1,2) == 1)
createHills([tMainTerrain, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15, clWater, 2), clHill, scaleByMapSize(1, 4) * numPlayers);
else
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 15, clWater, 2), clHill, scaleByMapSize(1, 4) * numPlayers);
// create forests
createForests(
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 2),
@ -413,7 +400,6 @@ createForests(
RMS.SetProgress(50);
// create dirt patches
log("Creating dirt patches...");
createLayeredPatches(
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
@ -422,7 +408,6 @@ createLayeredPatches(
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12)
);
// create grass patches
log("Creating grass patches...");
createPatches(
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
@ -433,7 +418,6 @@ createPatches(
RMS.SetProgress(55);
log("Creating stone mines...");
// create stone quarries
createMines(
[
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
@ -443,7 +427,6 @@ createMines(
);
log("Creating metal mines...");
// create large metal quarries
createMines(
[
[new SimpleObject(oMetalLarge, 1,1, 0,4)]

View File

@ -63,7 +63,6 @@ const pPoplarForest = [tForestFloor+TERRAIN_SEPARATOR+oLombardyPoplar, tGrass];
const pMainForest = [tForestFloor+TERRAIN_SEPARATOR+oCarob, tForestFloor+TERRAIN_SEPARATOR+oBeech, tGrass, tGrass];
log("Initializing map...");
InitMap();
const numPlayers = getNumPlayers();
@ -71,7 +70,6 @@ const mapSize = getMapSize();
const mapArea = mapSize*mapSize;
// Create classes
var clWater = createTileClass();
var clCliff = createTileClass();
var clForest = createTileClass();
@ -85,13 +83,9 @@ var clSettlement = createTileClass();
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
// Place players
log("Creating players...");
var playerX = new Array(numPlayers+1);
@ -195,9 +189,7 @@ for (var ix = 0; ix <= mapSize; ix++)
// add some higher-frequency noise on land
if ( oldH > 0 )
{
h += (0.4*noise2a.get(x,z) + 0.2*noise2b.get(x,z)) * min(oldH/10.0, 1.0);
}
// create cliff noise
if ( h > -10 )
@ -218,28 +210,20 @@ for (var ix = 0; ix <= mapSize; ix++)
cliffNoise -= 0.59;
cliffNoise *= pn;
if (cliffNoise > 0)
{
h += 19 * min(cliffNoise, 0.045) / 0.045;
}
}
// set the height
setHeight(ix, iz, h);
}
}
RMS.SetProgress(15);
// Paint base terrain
log("Painting terrain...");
var noise6 = new Noise2D(scaleByMapSize(10, 40));
var noise7 = new Noise2D(scaleByMapSize(20, 80));
var noise8 = new Noise2D(scaleByMapSize(13, 52));
var noise9 = new Noise2D(scaleByMapSize(26, 104));
var noise10 = new Noise2D(scaleByMapSize(50, 200));
for (var ix = 0; ix < mapSize; ix++)
@ -268,12 +252,8 @@ for (var ix = 0; ix < mapSize; ix++)
var maxNx = min(ix+2, mapSize);
var maxNz = min(iz+2, mapSize);
for (var nx = max(ix-1, 0); nx <= maxNx; nx++)
{
for (var nz = max(iz-1, 0); nz <= maxNz; nz++)
{
minAdjHeight = min(minAdjHeight, getHeight(nx, nz));
}
}
}
// choose a terrain based on elevation
@ -281,38 +261,22 @@ for (var ix = 0; ix < mapSize; ix++)
// water
if (maxH < -12)
{
t = tOceanDepths;
}
else if (maxH < -8.8)
{
t = tOceanRockDeep;
}
else if (maxH < -4.7)
{
t = tOceanCoral;
}
else if (maxH < -2.8)
{
t = tOceanRockShallow;
}
else if (maxH < 0.9 && minH < 0.35)
{
t = tBeachWet;
}
else if (maxH < 1.5 && minH < 0.9)
{
t = tBeachDry;
}
else if (maxH < 2.3 && minH < 1.3)
{
t = tBeachGrass;
}
if (minH < 0)
{
addToClass(ix, iz, clWater);
}
// cliffs
if (diffH > 2.9 && minH > -7)
@ -320,7 +284,7 @@ for (var ix = 0; ix < mapSize; ix++)
t = tCliff;
addToClass(ix, iz, clCliff);
}
else if ((diffH > 2.5 && minH > -5) || ((maxH - minAdjHeight) > 2.9 && minH > 0) )
else if (diffH > 2.5 && minH > -5 || maxH - minAdjHeight > 2.9 && minH > 0)
{
if (minH < -1)
t = tCliff;
@ -442,9 +406,8 @@ for (var i = 1; i <= numPlayers; i++)
// create metal mine
var mAngle = bbAngle;
while(abs(mAngle - bbAngle) < PI/3)
{
mAngle = randFloat(0, TWO_PI);
}
var mDist = 12;
var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle));
@ -478,11 +441,9 @@ for (var i = 1; i <= numPlayers; i++)
);
createObjectGroup(group, 0, avoidClasses(clBaseResource, 2, clCliff, 0));
}
RMS.SetProgress(40);
log("Creating bushes...");
// create bushes
group = new SimpleGroup(
[new SimpleObject(aBushSmall, 0,2, 0,2), new SimpleObject(aBushSmallDry, 0,2, 0,2),
new SimpleObject(aBushMed, 0,1, 0,2), new SimpleObject(aBushMedDry, 0,1, 0,2)]
@ -491,11 +452,9 @@ createObjectGroups(group, 0,
avoidClasses(clWater, 4, clCliff, 2),
scaleByMapSize(9, 146), 50
);
RMS.SetProgress(45);
log("Creating rocks...");
// create rocks
group = new SimpleGroup(
[new SimpleObject(aRockSmall, 0,3, 0,2), new SimpleObject(aRockMed, 0,2, 0,2),
new SimpleObject(aRockLarge, 0,1, 0,2)]
@ -504,7 +463,6 @@ createObjectGroups(group, 0,
avoidClasses(clWater, 2, clCliff, 1),
scaleByMapSize(9, 146), 50
);
RMS.SetProgress(50);
log("Creating large stone mines...");
@ -541,7 +499,6 @@ for (var t in trees)
scaleByMapSize(2, 38), 50
);
}
RMS.SetProgress(70);
log("Creating straggler cypresses...");
@ -553,21 +510,17 @@ createObjectGroups(group, 0,
avoidClasses(clWater, 5, clCliff, 4, clForest, 2, clPlayer, 15, clMetal, 4, clStone, 4),
scaleByMapSize(5, 75), 50
);
RMS.SetProgress(80);
log("Creating sheep...");
// create sheep
group = new SimpleGroup([new SimpleObject(oSheep, 2,4, 0,2)], true, clFood);
createObjectGroups(group, 0,
avoidClasses(clWater, 5, clForest, 2, clCliff, 1, clPlayer, 20, clMetal, 4, clStone, 4, clFood, 8),
3 * numPlayers, 50
);
RMS.SetProgress(85);
log("Creating fish...");
// create fish
var num = scaleByMapSize(4, 16);
var offsetX = mapSize * WATER_WIDTH/2;
for (var i = 0; i < num; ++i)
@ -577,7 +530,6 @@ for (var i = 0; i < num; ++i)
group = new SimpleGroup([new SimpleObject(oFish, 1,1, 0,1)], true, clFood, cX, cY);
createObjectGroup(group, 0);
}
for (var i = 0; i < num; ++i)
{
var cX = round(mapSize - offsetX + offsetX/2 * randFloat(-1, 1));
@ -585,10 +537,8 @@ for (var i = 0; i < num; ++i)
group = new SimpleGroup([new SimpleObject(oFish, 1,1, 0,1)], true, clFood, cX, cY);
createObjectGroup(group, 0);
}
RMS.SetProgress(90);
// create deer
log("Creating deer...");
group = new SimpleGroup(
[new SimpleObject(oDeer, 5,7, 0,4)],
@ -598,11 +548,9 @@ createObjectGroups(group, 0,
avoidClasses(clWater, 5, clForest, 2, clCliff, 1, clPlayer, 20, clMetal, 4, clStone, 4, clFood, 8),
3 * numPlayers, 50
);
RMS.SetProgress(95);
log("Creating berry bushes...");
// create berry bushes
group = new SimpleGroup([new SimpleObject(oBerryBush, 5,7, 0,3)], true, clFood);
createObjectGroups(group, 0,
avoidClasses(clWater, 5, clForest, 2, clCliff, 1, clPlayer, 20, clMetal, 4, clStone, 4, clFood, 8),
@ -617,5 +565,4 @@ setWaterWaviness(2.5);
setWaterType("ocean");
setWaterMurkiness(0.8);
// Export map data
ExportMap();

View File

@ -56,7 +56,6 @@ const mapSize = getMapSize();
const mapArea = mapSize*mapSize;
// create tile classes
var clPlayer = createTileClass();
var clHill = createTileClass();
var clForest = createTileClass();
@ -71,13 +70,11 @@ var clLand = createTileClass();
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
// place players
var playerX = new Array(numPlayers);
var playerZ = new Array(numPlayers);
var playerAngle = new Array(numPlayers);
@ -155,9 +152,8 @@ for (var i = 0; i < numPlayers; i++)
// 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));
@ -209,7 +205,7 @@ for (var i = 0; i < numPlayers; i++)
if (dockLocation !== undefined)
placeObject(dockLocation[0], dockLocation[1], "structures/" + getCivCode(id-1) + "_dock", id, playerAngle[i] + PI);
}
RMS.SetProgress(15);
//Create the continent body
var fx = fractionToTiles(0.12);
@ -228,8 +224,8 @@ var elevationPainter = new SmoothElevationPainter(
4 // blend radius
);
createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], avoidClasses(clPlayer, 8));
RMS.SetProgress(20);
// create shore jaggedness
log("Creating shore jaggedness...");
placer = new ClumpPlacer(scaleByMapSize(15, 80), 0.2, 0.1, 1);
terrainPainter = new LayeredPainter(
@ -244,13 +240,10 @@ createAreas(
scaleByMapSize(20, 150) * 2, 150
);
//painting the terrain
paintTerrainBasedOnHeight(1, 3, 0, tShore);
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
RMS.SetProgress(25);
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);
@ -260,8 +253,8 @@ createAreas(
[avoidClasses(clPlayer, 10), stayClasses(clLand, 3)],
scaleByMapSize(100, 200)
);
RMS.SetProgress(30);
// create hills
log("Creating hills...");
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
terrainPainter = new LayeredPainter(
@ -275,6 +268,7 @@ createAreas(
[avoidClasses(clPlayer, 10, clHill, 15), stayClasses(clLand, 7)],
scaleByMapSize(1, 4) * numPlayers
);
RMS.SetProgress(34);
// calculate desired number of trees for map (based on size)
if (random_terrain == g_BiomeSavanna)
@ -300,7 +294,6 @@ 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 = [
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
@ -330,9 +323,8 @@ for (var i = 0; i < types.length; ++i)
num
);
}
RMS.SetProgress(38);
RMS.SetProgress(50);
// create dirt patches
log("Creating dirt patches...");
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
for (var i = 0; i < sizes.length; i++)
@ -349,8 +341,8 @@ for (var i = 0; i < sizes.length; i++)
scaleByMapSize(15, 45)
);
}
RMS.SetProgress(42);
// create grass patches
log("Creating grass patches...");
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
for (var i = 0; i < sizes.length; i++)
@ -364,23 +356,23 @@ for (var i = 0; i < sizes.length; i++)
scaleByMapSize(15, 45)
);
}
RMS.SetProgress(55);
RMS.SetProgress(46);
log("Creating stone mines...");
// create large stone quarries
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
createObjectGroups(group, 0,
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)],
scaleByMapSize(4,16), 100
);
RMS.SetProgress(50);
// create small stone quarries
log("Creating small stone quarries...");
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
createObjectGroups(group, 0,
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)],
scaleByMapSize(4,16), 100
);
RMS.SetProgress(54);
log("Creating metal mines...");
// create large metal quarries
@ -389,8 +381,7 @@ createObjectGroups(group, 0,
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 7)],
scaleByMapSize(4,16), 100
);
RMS.SetProgress(65);
RMS.SetProgress(58);
// create small decorative rocks
log("Creating small decorative rocks...");
@ -403,7 +394,7 @@ createObjectGroups(
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 6)],
scaleByMapSize(16, 262), 50
);
RMS.SetProgress(62);
// create large decorative rocks
log("Creating large decorative rocks...");
@ -416,10 +407,8 @@ createObjectGroups(
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 6)],
scaleByMapSize(8, 131), 50
);
RMS.SetProgress(66);
RMS.SetProgress(70);
// create deer
log("Creating deer...");
group = new SimpleGroup(
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
@ -429,10 +418,8 @@ createObjectGroups(group, 0,
[avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 7)],
3 * numPlayers, 50
);
RMS.SetProgress(70);
RMS.SetProgress(75);
// create sheep
log("Creating sheep...");
group = new SimpleGroup(
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
@ -442,8 +429,8 @@ createObjectGroups(group, 0,
[avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 7)],
3 * numPlayers, 50
);
RMS.SetProgress(74);
// create fruit bush
log("Creating fruit bush...");
group = new SimpleGroup(
[new SimpleObject(oFruitBush, 5,7, 0,4)],
@ -453,8 +440,8 @@ createObjectGroups(group, 0,
[avoidClasses(clForest, 0, clPlayer, 8, clHill, 1, clFood, 20), stayClasses(clLand, 7)],
randInt(1, 4) * numPlayers + 2, 50
);
RMS.SetProgress(78);
// create fish
log("Creating fish...");
createObjectGroups(
new SimpleGroup([new SimpleObject(oFish, 2,3, 0,2)], true, clFood),
@ -462,11 +449,8 @@ createObjectGroups(
avoidClasses(clLand, 2, clPlayer, 2, clHill, 0, clFood, 20),
25 * numPlayers, 60
);
RMS.SetProgress(82);
RMS.SetProgress(85);
// create straggler trees
log("Creating straggler trees...");
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
var num = floor(numStragglers / types.length);
@ -481,6 +465,7 @@ for (var i = 0; i < types.length; ++i)
num
);
}
RMS.SetProgress(86);
var planetm = 1;
if (random_terrain==7)
@ -496,10 +481,8 @@ createObjectGroups(group, 0,
[avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0), stayClasses(clLand, 6)],
planetm * scaleByMapSize(13, 200)
);
RMS.SetProgress(90);
// 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)]
@ -508,10 +491,8 @@ createObjectGroups(group, 0,
[avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 6)],
planetm * scaleByMapSize(13, 200)
);
RMS.SetProgress(94);
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)]
@ -520,6 +501,7 @@ createObjectGroups(group, 0,
[avoidClasses(clHill, 1, clPlayer, 1, clDirt, 1), stayClasses(clLand, 6)],
planetm * scaleByMapSize(13, 200), 50
);
RMS.SetProgress(98);
random_terrain = randInt(1,3);
if (random_terrain == 1)
@ -533,5 +515,4 @@ setSunRotation(randFloat(0, TWO_PI));
setSunElevation(randFloat(PI/ 5, PI / 3));
setWaterWaviness(2);
// Export map data
ExportMap();

View File

@ -43,15 +43,12 @@ const pForest = [tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TE
const pForestOasis = [tGrass + TERRAIN_SEPARATOR + oDatePalm, tGrass + TERRAIN_SEPARATOR + oSDatePalm, tGrass];
log("Initializing map...");
InitMap();
const numPlayers = getNumPlayers();
const mapSize = getMapSize();
const mapArea = mapSize*mapSize;
// create tile classes
var clPlayer = createTileClass();
var clHill1 = createTileClass();
var clHill2 = createTileClass();
@ -66,9 +63,8 @@ var clBaseResource = createTileClass();
// randomize player order
var playerIDs = [];
for (var i = 0; i < numPlayers; i++)
{
playerIDs.push(i+1);
}
playerIDs = sortPlayers(playerIDs);
// place players
@ -131,9 +127,8 @@ for (var i = 0; i < numPlayers; i++)
// create metal mine
var mAngle = bbAngle;
while(abs(mAngle - bbAngle) < PI/3)
{
mAngle = randFloat(0, TWO_PI);
}
var mDist = 11;
var mX = round(fx + mDist * cos(mAngle));
var mZ = round(fz + mDist * sin(mAngle));
@ -166,10 +161,8 @@ for (var i = 0; i < numPlayers; i++)
);
createObjectGroup(group, 0, avoidClasses(clBaseResource,2));
}
RMS.SetProgress(10);
// create patches
log("Creating dune patches...");
placer = new ClumpPlacer(scaleByMapSize(40, 150), 0.2, 0.1, 0);
painter = new TerrainPainter(tDunes);
@ -177,7 +170,6 @@ createAreas(placer, [painter, paintClass(clPatch)],
avoidClasses(clPatch, 2, clPlayer, 0),
scaleByMapSize(5, 20)
);
RMS.SetProgress(15);
log("Creating sand patches...");
@ -187,7 +179,6 @@ createAreas(placer, [painter, paintClass(clPatch)],
avoidClasses(clPatch, 2, clPlayer, 0),
scaleByMapSize(15, 50)
);
RMS.SetProgress(20);
log("Creating dirt patches...");
@ -197,20 +188,17 @@ createAreas(placer, [painter, paintClass(clPatch)],
avoidClasses(clPatch, 2, clPlayer, 0),
scaleByMapSize(15, 50)
);
RMS.SetProgress(25);
// create the oasis
log("Creating oasis...");
var oRadius = scaleByMapSize(14, 40);
placer = new ClumpPlacer(PI*oRadius*oRadius, 0.6, 0.15, 0, mapSize/2, mapSize/2);
painter = new LayeredPainter([[tSand, pForest], [tGrassSand25, pForestOasis], tGrassSand25, tShore, tWaterDeep], [2, 3, 1, 1]);
elevationPainter = new SmoothElevationPainter(ELEVATION_MODIFY, -11, 8);
createArea(placer, [painter, elevationPainter, paintClass(clForest)], null);
RMS.SetProgress(30);
// create oasis wildlife
log("Creating oasis wildlife...");
var num = round(PI * oRadius / 8);
var constraint = new AndConstraint([borderClasses(clForest, 0, 3), avoidClasses(clForest, 0)]);
var halfSize = mapSize/2;
@ -253,10 +241,8 @@ for (var i = 0; i < num; ++i)
);
createObjectGroup(group, 0);
}
RMS.SetProgress(35);
// create hills
log("Creating level 1 hills...");
placer = new ClumpPlacer(scaleByMapSize(50,300), 0.25, 0.1, 0.5);
var terrainPainter = new LayeredPainter(
@ -268,7 +254,6 @@ var hillAreas = createAreas(placer, [terrainPainter, elevationPainter, paintClas
avoidClasses(clForest, 3, clPlayer, 0, clHill1, 10),
scaleByMapSize(10,20), 100
);
RMS.SetProgress(40);
log("Creating small level 1 hills...");
@ -283,13 +268,9 @@ var tempAreas = createAreas(placer, [terrainPainter, elevationPainter, paintClas
scaleByMapSize(15,25), 100
);
for (var i = 0; i < tempAreas.length; ++i)
{
hillAreas.push(tempAreas[i]);
}
RMS.SetProgress(45);
// create decorative rocks for hills
log("Creating decorative rocks...");
group = new SimpleGroup(
[new RandomObject([aDecorativeRock, aBush2, aBush3], 3,8, 0,2)],
@ -315,7 +296,6 @@ createAreasInAreas(placer, [terrainPainter, elevationPainter],
scaleByMapSize(15,25), 50,
hillAreas
);
RMS.SetProgress(55);
log("Creating level 3 hills...");
@ -330,11 +310,8 @@ createAreas(placer, [terrainPainter, elevationPainter],
scaleByMapSize(15,25), 50,
hillAreas
);
hillAreas = [];
RMS.SetProgress(60);
// create bumps
log("Creating bumps...");
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 0);
elevationPainter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
@ -369,14 +346,12 @@ createAreas(placer, [painter, paintClass(clForest)],
RMS.SetProgress(70);
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), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
createObjectGroups(group, 0,
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill1, 1)],
scaleByMapSize(4,16), 100
);
// create small stone quarries
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
createObjectGroups(group, 0,
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill1, 1)],
@ -384,7 +359,6 @@ createObjectGroups(group, 0,
);
log("Creating metal mines...");
// create large metal quarries
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
createObjectGroups(group, 0,
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill1, 1)],
@ -393,7 +367,6 @@ createObjectGroups(group, 0,
RMS.SetProgress(80);
// create gazelles
log("Creating gazelles...");
group = new SimpleGroup([new SimpleObject(oGazelle, 5,7, 0,4)], true, clFood);
createObjectGroups(group, 0,
@ -401,7 +374,6 @@ createObjectGroups(group, 0,
scaleByMapSize(5,20), 50
);
// create goats
log("Creating goats...");
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
createObjectGroups(group, 0,
@ -409,17 +381,14 @@ createObjectGroups(group, 0,
scaleByMapSize(5,20), 50
);
// create camels
log("Creating camels...");
group = new SimpleGroup([new SimpleObject(oCamel, 2,4, 0,2)], true, clFood);
createObjectGroups(group, 0,
avoidClasses(clForest, 0, clPlayer, 5, clHill1, 1, clFood, 10),
scaleByMapSize(5,20), 50
);
RMS.SetProgress(85);
// create straggler trees
log("Creating straggler trees...");
var types = [oDatePalm, oSDatePalm]; // some variation
var num = floor(numStragglers / types.length);
@ -431,10 +400,8 @@ for (var i = 0; i < types.length; ++i)
num
);
}
RMS.SetProgress(90);
// create bushes
log("Creating bushes...");
group = new SimpleGroup([new RandomObject(aBushes, 2,3, 0,2)]);
createObjectGroups(group, 0,
@ -442,7 +409,6 @@ createObjectGroups(group, 0,
scaleByMapSize(16, 262)
);
// create rocks
log("Creating more decorative rocks...");
group = new SimpleGroup([new SimpleObject(aDecorativeRock, 1,2, 0,2)]);
createObjectGroups(group, 0,
@ -457,5 +423,4 @@ setWaterType("clap");
setWaterMurkiness(0.75);
setWaterHeight(20);
// Export map data
ExportMap();

View File

@ -276,37 +276,8 @@ createObjectGroups(group, 0,
avoidClasses(clWater, 10, clForest, 1, clPlayer, 30, clMetal, 10,clBaseResource, 2, clRock, 10, clHill, 1),
scaleByMapSize(6,25), 100
);
RMS.SetProgress(65);
/*
// create small decorative rocks
log("Creating small decorative rocks...");
group = new SimpleGroup(
[new SimpleObject(rba5, 1,3, 0,1)],
true
);
createObjectGroups(
group, 0,
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(16, 262), 50
);
// create large decorative rocks
log("Creating large decorative rocks...");
group = new SimpleGroup(
[new SimpleObject(rba5, 1,2, 0,1), new SimpleObject(rba5, 1,3, 0,2)],
true
);
createObjectGroups(
group, 0,
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(8, 131), 50
);
RMS.SetProgress(70);
*/
log("Creating small decorative rocks...");
group = new SimpleGroup( [new SimpleObject(aRock, 2,4, 0,2)], true, undefined );
createObjectGroups(group, 0, avoidClasses(clWater, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 30, scaleByMapSize(10,50) );

View File

@ -767,32 +767,18 @@ createObjectGroups(group, 0, [avoidClasses(clFood, 15), stayClasses(clWater, 6)]
setSunElevation(randFloat(PI/5, PI / 3));
setSunRotation(randFloat(0, TWO_PI));
//var rt = randInt(1,6);
//if (rt==1){
// setSkySet("stormy");
// setSunColor(0.36,0.38,0.45);
// setTerrainAmbientColor(0.52,0.575,0.6);
// setUnitsAmbientColor(0.52,0.575,0.6);
// setSunElevation(PI/7);
// setWaterTint(0.1, 0.1, 0.2); // muddy brown
//} else {
setSkySet("cumulus");
setSunColor(0.73,0.73,0.65);
setTerrainAmbientColor(0.45,0.45,0.50);
setUnitsAmbientColor(0.4,0.4,0.4);
setWaterColor(0.114, 0.192, 0.463);
setWaterTint(0.255, 0.361, 0.651);
setWaterWaviness(3.0);
setSkySet("cumulus");
setSunColor(0.73,0.73,0.65);
setTerrainAmbientColor(0.45,0.45,0.50);
setUnitsAmbientColor(0.4,0.4,0.4);
setWaterColor(0.114, 0.192, 0.463);
setWaterTint(0.255, 0.361, 0.651);
setWaterWaviness(3.0);
setWaterType("ocean");
setWaterMurkiness(0.83);
//}
// Export map data
setWaterMurkiness(0.83);
ExportMap();
function getNeighborsHeight(x1, z1)
{
var toCheck = [ [-1,-1], [-1,0], [-1,1], [0,1], [1,1], [1,0], [1,-1], [0,-1] ];

View File

@ -25,9 +25,7 @@ ClumpPlacer.prototype.place = function(constraint)
{
// Preliminary bounds check
if (!g_Map.inMapBounds(this.x, this.z) || !constraint.allows(this.x, this.z))
{
return undefined;
}
var retVec = [];
@ -45,9 +43,7 @@ ClumpPlacer.prototype.place = function(constraint)
var ctrlPts = 1 + Math.floor(1.0/Math.max(this.smoothness,1.0/intPerim));
if (ctrlPts > radius * 2 * PI)
{
ctrlPts = Math.floor(radius * 2 * PI) + 1;
}
var noise = new Float32Array(intPerim); //float32
var ctrlCoords = new Float32Array(ctrlPts+1); //float32
@ -92,8 +88,8 @@ ClumpPlacer.prototype.place = function(constraint)
var r = radius * (1 + (1-this.coherence)*noise[p]);
var s = sin(th);
var c = cos(th);
var xx=this.x;
var yy=this.z;
var xx = this.x;
var yy = this.z;
for (var k=0; k < ceil(r); k++)
{
@ -102,21 +98,21 @@ ClumpPlacer.prototype.place = function(constraint)
if (g_Map.inMapBounds(i, j) && constraint.allows(i, j))
{
if (!gotRet[i][j])
{ // Only include each point once
{
// Only include each point once
gotRet[i][j] = 1;
retVec.push(new PointXZ(i, j));
}
}
else
{
failed++;
}
xx += s;
yy += c;
}
}
return ((failed > this.size*this.failFraction) ? undefined : retVec);
return failed > this.size * this.failFraction ? undefined : retVec;
};
/////////////////////////////////////////////////////////////////////////////////////////
@ -150,9 +146,7 @@ ChainPlacer.prototype.place = function(constraint)
{
// Preliminary bounds check
if (!g_Map.inMapBounds(this.x, this.z) || !constraint.allows(this.x, this.z))
{
return undefined;
}
var retVec = [];
var size = getMapSize();
@ -175,24 +169,19 @@ ChainPlacer.prototype.place = function(constraint)
if (this.minRadius > this.maxRadius) this.minRadius = this.maxRadius;
var edges = [[this.x, this.z]];
for (var i = 0; i < this.numCircles; ++i)
{
var point = edges[randInt(edges.length)];
var cx = point[0], cz = point[1];
if (queueEmpty)
{
var radius = randInt(this.minRadius, this.maxRadius);
}
else
{
var radius = this.q.pop();
queueEmpty = (this.q.length ? false : true);
}
//log (edges);
var sx = cx - radius, lx = cx + radius;
var sz = cz - radius, lz = cz + radius;
@ -204,10 +193,7 @@ ChainPlacer.prototype.place = function(constraint)
var radius2 = radius * radius;
var dx, dz;
//log (uneval([sx, sz, lx, lz]));
for (var ix = sx; ix <= lx; ++ix)
{
for (var iz = sz; iz <= lz; ++ iz)
{
dx = ix - cx;
@ -224,31 +210,22 @@ ChainPlacer.prototype.place = function(constraint)
}
else if (state >= 0)
{
//log (uneval(edges));
//log (state)
var s = edges.splice(state, 1);
//log (uneval(s));
//log (uneval(edges));
gotRet[ix][iz] = -2;
var edgesLength = edges.length;
for (var k = state; k < edges.length; ++k)
{
--gotRet[edges[k][0]][edges[k][1]];
}
}
}
else
{
++failed;
}
++count;
}
}
}
for (var ix = sx; ix <= lx; ++ix)
{
for (var iz = sz; iz <= lz; ++ iz)
{
if (this.fcc)
@ -295,12 +272,10 @@ ChainPlacer.prototype.place = function(constraint)
}
}
}
}
}
return ((failed > count*this.failFraction) ? undefined : retVec);
return failed > count * this.failFraction ? undefined : retVec;
};
/////////////////////////////////////////////////////////////////////////////////////////
@ -321,9 +296,7 @@ function RectPlacer(x1, z1, x2, z2)
this.z2 = z2;
if (x1 > x2 || z1 > z2)
{
throw("RectPlacer: incorrect bounds on rect");
}
}
RectPlacer.prototype.place = function(constraint)
@ -331,29 +304,18 @@ RectPlacer.prototype.place = function(constraint)
// Preliminary bounds check
if (!g_Map.inMapBounds(this.x1, this.z1) || !constraint.allows(this.x1, this.z1) ||
!g_Map.inMapBounds(this.x2, this.z2) || !constraint.allows(this.x2, this.z2))
{
return undefined;
}
var ret = [];
var x2 = this.x2;
var z2 = this.z2;
for (var x=this.x1; x < x2; x++)
{
for (var z=this.z1; z < z2; z++)
{
if (g_Map.inMapBounds(x, z) && constraint.allows(x, z))
{
ret.push(new PointXZ(x, z));
}
else
{
return undefined;
}
}
}
return ret;
};
@ -414,9 +376,7 @@ SimpleObject.prototype.place = function(cx, cz, player, avoidSelf, constraint, m
var fail = false; // reset place failure flag
if (!g_Map.validT(x, z))
{
fail = true;
}
else
{
if (avoidSelf)
@ -427,21 +387,17 @@ SimpleObject.prototype.place = function(cx, cz, player, avoidSelf, constraint, m
var dx = x - resultObjs[i].position.x;
var dy = z - resultObjs[i].position.z;
if ((dx*dx + dy*dy) < 1)
{
if (dx*dx + dy*dy < 1)
fail = true;
}
}
}
if (!fail)
{
if (!constraint.allows(Math.floor(x), Math.floor(z)))
{
fail = true;
}
else
{ // if we got here, we're good
{
var angle = randFloat(this.minAngle, this.maxAngle);
resultObjs.push(new Entity(this.type, player, x, z, angle));
break;
@ -511,9 +467,7 @@ RandomObject.prototype.place = function(cx, cz, player, avoidSelf, constraint, m
var fail = false; // reset place failure flag
if (!g_Map.validT(x, z))
{
fail = true;
}
else
{
if (avoidSelf)
@ -524,21 +478,17 @@ RandomObject.prototype.place = function(cx, cz, player, avoidSelf, constraint, m
var dx = x - resultObjs[i].position.x;
var dy = z - resultObjs[i].position.z;
if ((dx*dx + dy*dy) < 1)
{
if (dx*dx + dy*dy < 1)
fail = true;
}
}
}
if (!fail)
{
if (!constraint.allows(Math.floor(x), Math.floor(z)))
{
fail = true;
}
else
{ // if we got here, we're good
{
var angle = randFloat(this.minAngle, this.maxAngle);
//Randomly select entity
@ -591,15 +541,12 @@ SimpleGroup.prototype.place = function(player, constraint)
for (var i = 0; i < length; i++)
{
var objs = this.elements[i].place(this.x, this.z, player, this.avoidSelf, constraint);
if (objs === undefined)
{ // Failure
return false;
}
else
{
for (var j = 0; j < objs.length; ++j)
resultObjs.push(objs[j]);
}
for (var j = 0; j < objs.length; ++j)
resultObjs.push(objs[j]);
}
// Add placed objects to map

View File

@ -63,8 +63,6 @@ function createMountains(terrain, constraint, tileclass, count, maxHeight, minRa
var numHills = count;
for (var i = 0; i < numHills; ++i)
{
createMountain(
maxHeight,
minRadius,
@ -77,7 +75,6 @@ function createMountains(terrain, constraint, tileclass, count, maxHeight, minRa
tileclass,
14
);
}
}
function createForests(terrainset, constraint, tileclass, numMultiplier, biomeID)
@ -113,7 +110,6 @@ function createForests(terrainset, constraint, tileclass, numMultiplier, biomeID
var numForest = totalTrees * P_FOREST;
g_numStragglerTrees = totalTrees * (1.0 - P_FOREST);
// create forests
log("Creating forests...");
var types = [
[[tFF2, tM, tF1], [tFF2, tF1]],