1
0
forked from 0ad/0ad

Adopt the generator based interface by generated maps

- Adding the function signature
- Changing `g_Map.ExportMap()` to `return g_Map`
- Changing `Engine.SetProgress(NN)` to `yield NN`
- Changing `const g_Map = ...` to `globalThis.g_Map = ...`
- On some maps using the argument `mapSettings`

Comments By: @asterix, @sera, @Stan
Differential Revision: https://code.wildfiregames.com/D5258
This was SVN commit r28119.
This commit is contained in:
phosit 2024-06-21 15:19:13 +00:00
parent a178b3fcb3
commit e01ea16ae5
81 changed files with 954 additions and 873 deletions

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -113,7 +114,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aBush1
}
});
Engine.SetProgress(30);
yield 30;
paintRiver({
"parallel": false,
@ -132,7 +133,7 @@ Engine.LoadLibrary("rmgen-common");
paintTerrainBasedOnHeight(-Infinity, heightShore, Elevation_ExcludeMin_ExcludeMax, tShoreLower);
paintTerrainBasedOnHeight(heightShore, heightLand, Elevation_ExcludeMin_ExcludeMax, tShoreUpper);
Engine.SetProgress(40);
yield 40;
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
@ -143,7 +144,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
if (randBool())
createHills([tGrass, tCliff, tHill],
@ -165,7 +166,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -176,7 +177,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating undersea bumps");
createAreas(
@ -245,7 +246,7 @@ Engine.LoadLibrary("rmgen-common");
clMetal
);
Engine.SetProgress(65);
yield 65;
createDecoration(
[
@ -265,7 +266,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 2, clForest, 0, clPlayer, 0, clHill, 1));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -301,7 +302,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
clFood);
Engine.SetProgress(90);
yield 90;
const types = [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress];
createStragglerTrees(
@ -342,5 +343,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.51);
setPPBloom(0.12);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
if (g_MapSettings.Biome)
if (mapSettings.Biome)
setSelectedBiome();
else
setBiome("generic/savanna");
@ -108,7 +109,7 @@ Engine.LoadLibrary("rmbiome");
}
// No decoratives
});
Engine.SetProgress(20);
yield 20;
// The specificity of this map is a bunch of watering holes & hills making
// it somewhat cluttered.
@ -118,7 +119,7 @@ Engine.LoadLibrary("rmbiome");
g_Map.log("Creating hills");
createHills([tDirt2, tCliff, tGrassShrubs], avoidClasses(clPlayer, 30, clHill, 15), clHill,
nbHills);
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating water holes");
createAreas(
@ -134,7 +135,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 22, clWater, 8, clHill, 2),
nbWateringHoles);
Engine.SetProgress(45);
yield 45;
paintTerrainBasedOnHeight(heightCliff, Infinity, 0, tCliff);
}
@ -148,7 +149,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 20, clForest, 15, clHill, 0, clWater, 2),
clForest,
scaleByMapSize(200, 1000));
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -158,7 +159,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating shrubs");
createPatches(
@ -167,7 +168,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating grass patches");
createPatches(
@ -176,7 +177,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -194,7 +195,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 4, clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10)
);
Engine.SetProgress(70);
yield 70;
createDecoration(
[
@ -206,7 +207,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapAreaAbsolute(8)
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0));
Engine.SetProgress(75);
yield 75;
// Roaming animals
{
@ -307,7 +308,7 @@ Engine.LoadLibrary("rmbiome");
],
[avoidClasses(clFood, 20), stayClasses(clWater, 6)],
clFood);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating straggler baobabs");
@ -333,5 +334,5 @@ Engine.LoadLibrary("rmbiome");
setSkySet("sunny");
setWaterType("clap");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,9 +2,10 @@ Engine.LoadLibrary("rmbiome");
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap(mapSettings)
{
setBiome(g_MapSettings.Biome ?? "alpine/winter");
const isLateSpringBiome = g_MapSettings.Biome !== "alpine/winter";
setBiome(mapSettings.Biome ?? "alpine/winter");
const isLateSpringBiome = mapSettings.Biome !== "alpine/winter";
setFogThickness(isLateSpringBiome ? 0.26 : 0.19);
setFogFactor(isLateSpringBiome ? 0.4 : 0.35);
@ -64,7 +65,7 @@ Engine.LoadLibrary("rmgen-common");
"template": g_Decoratives.grassShort
}
});
Engine.SetProgress(20);
yield 20;
createMountains(g_Terrains.cliff,
avoidClasses(clPlayer, 20, clHill, 8),
@ -75,7 +76,7 @@ Engine.LoadLibrary("rmgen-common");
Math.floor(scaleByMapSize(7, 15)),
Math.floor(scaleByMapSize(5, 15)));
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating lakes");
createAreas(
@ -101,7 +102,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
forestTrees);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -119,7 +120,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating stone mines");
createMines(
@ -143,7 +144,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
clMetal);
Engine.SetProgress(70);
yield 70;
createDecoration(
[
@ -175,7 +176,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0));
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -209,7 +210,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clFood, 20), stayClasses(clWater, 6)],
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[g_Gaia.tree1],
@ -237,5 +238,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterWaviness(3.0);
setWaterType("clap");
g_Map.ExportMap();
return g_Map;
}

View File

@ -204,7 +204,7 @@ MountainRangeBuilder.prototype.PaintCurrentEdge = function()
/**
* This is the only function meant to be publicly accessible.
*/
MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
MountainRangeBuilder.prototype.CreateMountainRanges = function*(map)
{
map.log("Creating mountainrange with " + this.possibleEdges.length + " possible edges");
@ -212,7 +212,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
while (this.possibleEdges.length)
{
Engine.SetProgress(35 - 15 * this.possibleEdges.length / max);
yield 35 - 15 * this.possibleEdges.length / max;
this.index = randIntExclusive(0, this.possibleEdges.length);
this.UpdateCurrentEdge();
@ -234,8 +234,9 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
}
};
function* GenerateMap(mapSettings)
{
setBiome(g_MapSettings.Biome ?? "alpine/winter");
setBiome(mapSettings.Biome ?? "alpine/winter");
const heightLand = 3;
const heightOffsetBump = 2;
@ -287,9 +288,9 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
"template": g_Decoratives.grassShort
}
});
Engine.SetProgress(20);
yield 20;
new MountainRangeBuilder({
yield* new MountainRangeBuilder({
"numPlayers": numPlayers,
"pathplacer": new PathPlacer(
undefined,
@ -323,7 +324,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
]
}).CreateMountainRanges(g_Map);
Engine.SetProgress(35);
yield 35;
paintTerrainBasedOnHeight(heightLand + 0.1, snowlineHeight, 0, g_Terrains.cliff);
paintTerrainBasedOnHeight(snowlineHeight, heightMountain, 3, g_Terrains.snowLimited);
@ -334,7 +335,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
avoidClasses(clPlayer, 10),
scaleByMapSize(100, 200));
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating hills");
createAreas(
@ -347,7 +348,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
avoidClasses(clPlayer, 20, clHill, 14),
scaleByMapSize(10, 80) * numPlayers
);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
@ -367,7 +368,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
],
avoidClasses(clPlayer, 12, clForest, 10, clHill, 0),
num);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating dirt patches");
for (const patchSize of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -393,7 +394,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45));
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -421,7 +422,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -447,7 +448,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating deer");
group = new SimpleGroup(
@ -478,7 +479,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
3 * numPlayers, 50
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[g_Gaia.tree1],
@ -496,7 +497,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0),
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
group = new SimpleGroup([
@ -506,7 +507,7 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0),
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
group = new SimpleGroup([
@ -523,5 +524,5 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
setSunRotation(randomAngle());
setSunElevation(Math.PI * randFloat(1/5, 1/3));
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
setSelectedBiome();
@ -17,9 +18,9 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(10);
yield 10;
const pattern = g_MapSettings.TeamPlacement ||
const pattern = mapSettings.TeamPlacement ||
pickRandom(["line", "radial", "randomGroup", "stronghold"]);
const [playerIDs, playerPosition] =
createBases(
@ -34,7 +35,7 @@ Engine.LoadLibrary("rmbiome");
if (!isNomad())
markPlayerAvoidanceArea(playerPosition, defaultPlayerBaseRadius());
Engine.SetProgress(20);
yield 20;
addElements([
{
@ -57,7 +58,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]);
Engine.SetProgress(30);
yield 30;
if (!isNomad())
createBluffsPassages(playerPosition);
@ -93,7 +94,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]);
Engine.SetProgress(50);
yield 50;
addElements(shuffleArray([
{
@ -165,7 +166,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]));
Engine.SetProgress(70);
yield 70;
addElements(shuffleArray([
{
@ -218,7 +219,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]));
Engine.SetProgress(90);
yield 90;
if (isNomad())
{
@ -242,5 +243,5 @@ Engine.LoadLibrary("rmbiome");
]);
}
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tPrimary = ["steppe_grass_a", "steppe_grass_c", "steppe_grass_d"];
const tGrass = ["steppe_grass_a", "steppe_grass_b", "steppe_grass_c", "steppe_grass_d"];
@ -79,7 +80,7 @@ Engine.LoadLibrary("rmgen-common");
}
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating bumps");
createAreas(
@ -102,7 +103,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 13, clForest, 20, clHill, 1),
num);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating grass patches");
createLayeredPatches(
@ -122,7 +123,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(50, 90),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating big patches");
createLayeredPatches(
@ -133,7 +134,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(30, 90),
clDirt);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -162,7 +163,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(2, 8), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -186,7 +187,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating rabbits");
group = new SimpleGroup(
@ -208,7 +209,7 @@ Engine.LoadLibrary("rmgen-common");
randIntInclusive(1, 4) * numPlayers + 2, 50
);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating sheep");
group = new SimpleGroup(
@ -220,7 +221,7 @@ Engine.LoadLibrary("rmgen-common");
3 * numPlayers, 50
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oBush, oPoplar],
@ -240,7 +241,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -261,5 +262,5 @@ Engine.LoadLibrary("rmgen-common");
setPPContrast(0.62);
setPPBloom(0.2);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -183,7 +184,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees
);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -203,7 +204,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(15, 45),
clDirt
);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
createMines(
@ -227,7 +228,7 @@ Engine.LoadLibrary("rmbiome");
],
clMetal
);
Engine.SetProgress(65);
yield 65;
const planetm = currentBiome() == "generic/india" ? 8 : 1;
createDecoration(
@ -246,7 +247,7 @@ Engine.LoadLibrary("rmbiome");
planetm * scaleByMapAreaAbsolute(13)
],
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 5)]);
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -260,7 +261,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 20), stayClasses(clLand, 3)],
clFood);
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -272,7 +273,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 10), stayClasses(clLand, 3)],
clFood);
Engine.SetProgress(80);
yield 80;
createFood(
[
@ -284,7 +285,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clLand, 3, clPlayer, 2, clFood, 20),
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -304,5 +305,5 @@ Engine.LoadLibrary("rmbiome");
setWaterWaviness(4.0);
setWaterType("ocean");
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
setFogThickness(0.46);
setFogFactor(0.5);
@ -97,7 +98,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(20);
yield 20;
createHills(
[tPrimary, tCliff, tHill],
@ -109,7 +110,7 @@ Engine.LoadLibrary("rmgen-common");
clHill,
scaleByMapSize(1, 240));
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating lakes");
createAreas(
@ -126,7 +127,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 15),
scaleByMapSize(1, 20));
Engine.SetProgress(45);
yield 45;
createBumps(avoidClasses(clPlayer, 6, clWater, 2), scaleByMapSize(30, 300), 1, 8, 4, 0, 3);
@ -143,7 +144,7 @@ Engine.LoadLibrary("rmgen-common");
clWater, 2),
clForest,
forestTrees);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -184,7 +185,7 @@ Engine.LoadLibrary("rmgen-common");
clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating stone mines");
createMines(
@ -216,7 +217,7 @@ Engine.LoadLibrary("rmgen-common");
clRock, 5,
clHill, 1),
clMetal);
Engine.SetProgress(70);
yield 70;
createDecoration(
[
@ -237,7 +238,7 @@ Engine.LoadLibrary("rmgen-common");
clForest, 0,
clPlayer, 0,
clHill, 0));
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -301,7 +302,7 @@ Engine.LoadLibrary("rmgen-common");
],
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oBush, oBush2],
@ -335,5 +336,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterWaviness(1);
setWaterType("clap");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setBiome("generic/temperate");
@ -82,7 +83,7 @@ Engine.LoadLibrary("rmbiome");
new LayeredPainter([tCliff, tGrass], [3]),
new SmoothElevationPainter(ELEVATION_SET, heightLand, 3)
]);
Engine.SetProgress(5);
yield 5;
g_Map.log("Finding hills");
const noise0 = new Noise2D(20);
@ -130,7 +131,7 @@ Engine.LoadLibrary("rmbiome");
return 1;
}
Engine.SetProgress(10);
yield 10;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -170,7 +171,7 @@ Engine.LoadLibrary("rmbiome");
new ClumpPlacer(250, 0.95, 0.3, 0.1, playerPosition[i]),
new TileClassPainter(clPlayer));
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating hills");
for (const size of
@ -262,7 +263,7 @@ Engine.LoadLibrary("rmbiome");
}
}
Engine.SetProgress(50);
yield 50;
for (let ix = 0; ix < mapSize; ix++)
for (let iz = 0; iz < mapSize; iz++)
@ -289,7 +290,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(clExplorable).paint(explorableArea);
Engine.SetProgress(55);
yield 55;
// Add some general noise - after placing height dependant trees
for (let ix = 0; ix < mapSize; ix++)
@ -306,7 +307,7 @@ Engine.LoadLibrary("rmbiome");
}
}
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating forests");
const [protoPorestTrees, stragglerTrees] = getTreeCounts(1300, 8000, 0.8);
@ -342,7 +343,7 @@ Engine.LoadLibrary("rmbiome");
[explorableArea]
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -360,7 +361,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 1, clHill, 2, clPlayer, 5),
scaleByMapSize(4, 12));
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -385,7 +386,7 @@ Engine.LoadLibrary("rmbiome");
]
);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating wildlife");
let group = new SimpleGroup(
@ -418,7 +419,7 @@ Engine.LoadLibrary("rmbiome");
[explorableArea]
);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating berry bush");
group = new SimpleGroup(
@ -448,7 +449,7 @@ Engine.LoadLibrary("rmbiome");
[explorableArea]
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating straggler trees");
const types = [oOak, oOakLarge, oPine, oAleppoPine];
@ -467,7 +468,7 @@ Engine.LoadLibrary("rmbiome");
stragglerNum, 20,
[explorableArea]);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating grass tufts");
group = new SimpleGroup(
@ -481,5 +482,5 @@ Engine.LoadLibrary("rmbiome");
placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tPrimary = ["medit_rocks_grass", "medit_rocks_grass", "medit_rocks_grass",
"medit_rocks_grass", "medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
@ -86,13 +87,13 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(10);
yield 10;
createBumps(avoidClasses(clPlayer, 9));
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 8), clHill, scaleByMapSize(20, 120));
Engine.SetProgress(25);
yield 25;
const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
createForests(
@ -101,7 +102,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
forestTrees);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -121,7 +122,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating stone mines");
createMines(
@ -144,7 +145,7 @@ Engine.LoadLibrary("rmgen-common");
clMetal
);
Engine.SetProgress(60);
yield 60;
createDecoration(
[
@ -163,7 +164,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0));
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -207,7 +208,7 @@ Engine.LoadLibrary("rmgen-common");
3 * numPlayers, 50
);
Engine.SetProgress(80);
yield 80;
createStragglerTrees(
[oCarob, oAleppoPine],
@ -231,5 +232,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.56);
setPPBloom(0.1);
g_Map.ExportMap();
return g_Map;
}

View File

@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
setBiome("generic/sahara");
setLandBiome();
@ -71,7 +72,7 @@ Engine.LoadLibrary("rmbiome");
g_Decoratives.bushMedium = "actor|props/flora/bush_desert_dry_a.xml";
g_Decoratives.bushSmall = "actor|props/flora/bush_medit_la_dry";
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightSeaGround = heightScale(-6);
const heightWaterLevel = heightScale(0);
@ -83,7 +84,7 @@ Engine.LoadLibrary("rmbiome");
const numPlayers = getNumPlayers();
g_Map.LoadHeightmapImage("bahrain.png", 0, 15);
Engine.SetProgress(15);
yield 15;
initTileClasses(["island", "shoreline"]);
@ -92,27 +93,27 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(20);
yield 20;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1));
Engine.SetProgress(25);
yield 25;
g_Map.log("Marking water");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.water),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(30);
yield 30;
g_Map.log("Marking land");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land),
avoidClasses(g_TileClasses.water, 0));
Engine.SetProgress(35);
yield 35;
g_Map.log("Marking island");
const areaIsland = createArea(
@ -121,7 +122,7 @@ Engine.LoadLibrary("rmbiome");
new Vector2D(fractionToTiles(0.6), mapCenter.y), Infinity),
new TileClassPainter(g_TileClasses.island),
avoidClasses(g_TileClasses.water, 0));
Engine.SetProgress(37);
yield 37;
g_Map.log("Painting shoreline");
createArea(
@ -131,7 +132,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(g_TileClasses.shoreline)
],
new HeightConstraint(-Infinity, heightShoreline));
Engine.SetProgress(40);
yield 40;
g_Map.log("Painting cliffs");
createArea(
@ -144,7 +145,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(g_TileClasses.water, 2),
new SlopeConstraint(2, Infinity)
]);
Engine.SetProgress(45);
yield 45;
if (!isNomad())
{
@ -322,7 +323,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]));
Engine.SetProgress(65);
yield 65;
g_Map.log("Painting island");
setIslandBiome();
@ -405,7 +406,7 @@ Engine.LoadLibrary("rmbiome");
}
]));
Engine.SetProgress(80);
yield 80;
g_Map.log("Adding more decoratives");
createObjectGroups(
@ -424,7 +425,7 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.forest, 2),
2 * scaleByMapSize(1, 4),
20);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating treasures");
for (const treasure of [g_Gaia.woodTreasure, g_Gaia.foodTreasure])
@ -437,7 +438,7 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.forest, 2),
randIntInclusive(1, numPlayers),
20);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating shipwrecks");
createObjectGroups(
@ -446,7 +447,7 @@ Engine.LoadLibrary("rmbiome");
stayClasses(g_TileClasses.water, 2),
randIntInclusive(0, 1),
20);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(
g_Map.createTileClass(),
@ -487,5 +488,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("heightmap");
function* GenerateMap()
{
const tPrimary = ["temp_grass", "temp_grass_b", "temp_grass_c", "temp_grass_d",
"temp_grass_long_b", "temp_grass_clovers_2", "temp_grass_mossy", "temp_grass_plants"];
@ -194,7 +195,7 @@ Engine.LoadLibrary("heightmap");
}
];
Engine.SetProgress(5);
yield 5;
const lowerHeightLimit = terrainTypes[3].upperHeightLimit;
const upperHeightLimit = terrainTypes[6].upperHeightLimit;
@ -232,7 +233,7 @@ Engine.LoadLibrary("heightmap");
}
})();
Engine.SetProgress(60);
yield 60;
g_Map.log("Painting terrain by height and add props");
// 1 means as determined in the loop, less for large maps as set below
@ -252,7 +253,7 @@ Engine.LoadLibrary("heightmap");
g_Map.placeEntityAnywhere(template[1], 0, position, randomAngle());
}
Engine.SetProgress(90);
yield 90;
if (isNomad())
placePlayersNomad(g_Map.createTileClass(),
@ -290,5 +291,5 @@ Engine.LoadLibrary("heightmap");
});
}
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrassA = "savanna_shrubs_a_wetseason";
const tGrassB = "savanna_shrubs_a";
@ -91,7 +92,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(15);
yield 15;
g_Map.log("Creating bumps");
createAreas(
@ -141,7 +142,7 @@ Engine.LoadLibrary("rmgen-common");
stayClasses(clWater, 1),
scaleByMapSize(400, 1000),
100);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating bumps");
createAreas(
@ -160,7 +161,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 1, clHill, 0, clDirt, 5, clPlayer, 8),
scaleByMapSize(15, 45));
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating stone mines");
createObjectGroupsDeprecated(
@ -190,7 +191,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clWater, 0, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1)],
scaleByMapSize(4, 16),
100);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating small decorative rocks");
createObjectGroupsDeprecated(
@ -199,7 +200,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 1),
scaleByMapSize(16, 262),
50);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating large decorative rocks");
createObjectGroupsDeprecated(
@ -213,7 +214,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(8, 131),
50);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating lions");
createObjectGroupsDeprecated(
@ -272,7 +273,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13),
3 * numPlayers,
50);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating rabbits");
createObjectGroupsDeprecated(
@ -317,14 +318,14 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
randIntInclusive(1, 4) * numPlayers + 2,
50);
Engine.SetProgress(80);
yield 80;
createStragglerTrees(
[oToona, oBaobab, oBush, oBush],
avoidClasses(clForest, 1, clWater, 1, clHill, 1, clPlayer, 13, clMetal, 4, clRock, 4),
clForest,
scaleByMapSize(60, 500));
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating small grass tufts");
createObjectGroupsDeprecated(
@ -332,7 +333,7 @@ Engine.LoadLibrary("rmgen-common");
0,
avoidClasses(clWater, 2, clPlayer, 13, clDirt, 0),
scaleByMapSize(13, 200));
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
createObjectGroupsDeprecated(
@ -343,7 +344,7 @@ Engine.LoadLibrary("rmgen-common");
0,
avoidClasses(clWater, 3, clPlayer, 13, clDirt, 1, clForest, 0),
scaleByMapSize(13, 200));
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
createObjectGroupsDeprecated(
@ -408,5 +409,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.44);
setPPBloom(0.3);
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
Engine.LoadLibrary("heightmap");
function* GenerateMap()
{
const tGrove = "temp_grass_plants";
const tPath = "road_rome_a";
@ -267,7 +268,7 @@ Engine.LoadLibrary("heightmap");
rescaleHeightmap(heightRange.min, heightRange.max);
Engine.SetProgress(25);
yield 25;
const heighLimits = [
// 0 Deep water
@ -531,7 +532,7 @@ Engine.LoadLibrary("heightmap");
const [playerIDs, playerPosition] = groupPlayersCycle(
getStartLocationsByHeightmap({ "min": heighLimits[4], "max": heighLimits[5] }, 1000, 30));
Engine.SetProgress(30);
yield 30;
g_Map.log("Smoothing player locations");
for (const position of playerPosition)
@ -557,7 +558,7 @@ Engine.LoadLibrary("heightmap");
new SmoothingPainter(5, 1, 1),
new NearTileClassConstraint(clPath, 5));
Engine.SetProgress(45);
yield 45;
g_Map.log("Determining resource locations");
const avoidPoints = playerPosition.map(pos => pos.clone());
@ -569,7 +570,7 @@ Engine.LoadLibrary("heightmap");
},
avoidPoints,
clPath);
Engine.SetProgress(55);
yield 55;
/**
* Divide tiles in areas by height and avoid paths
@ -610,7 +611,7 @@ Engine.LoadLibrary("heightmap");
g_Map.placeEntityPassable(pickRandom(selectedBiome.entity), 0,
randomPositionOnTile(point), randomAngle());
}
Engine.SetProgress(80);
yield 80;
g_Map.log("Placing players");
if (isNomad())
@ -640,5 +641,5 @@ Engine.LoadLibrary("heightmap");
placeCamp(pos);
}
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -133,7 +134,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(10);
yield 10;
g_Map.log("Creating lakes");
const numLakes = Math.round(scaleByMapSize(1, 4) * numPlayers);
@ -147,7 +148,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 2, clWater, 20),
numLakes
);
Engine.SetProgress(15);
yield 15;
g_Map.log("Creating reeds");
const group = new SimpleGroup(
@ -158,7 +159,7 @@ Engine.LoadLibrary("rmbiome");
numLakes, 100,
waterAreas
);
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating fish");
createObjectGroupsByAreas(
@ -172,14 +173,14 @@ Engine.LoadLibrary("rmbiome");
50,
waterAreas
);
Engine.SetProgress(25);
yield 25;
createBumps(avoidClasses(clWater, 2, clPlayer, 0));
Engine.SetProgress(30);
yield 30;
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 2, clWater, 5, clHill, 15), clHill,
scaleByMapSize(1, 4) * numPlayers);
Engine.SetProgress(35);
yield 35;
const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
createDefaultForests(
@ -187,7 +188,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 1, clWater, 3, clForest, 17, clHill, 1),
clForest,
forestTrees);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -197,7 +198,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating grass patches");
createLayeredPatches(
@ -207,7 +208,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -225,7 +226,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 0, clForest, 0, clPlayer, scaleByMapSize(15, 25), clHill, 1, clMetal, 10)
);
Engine.SetProgress(60);
yield 60;
createDecoration(
[
@ -243,7 +244,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapAreaAbsolute(13)
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -256,7 +257,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 1, clHill, 1, clFood, 20),
clFood);
Engine.SetProgress(80);
yield 80;
createFood(
[
@ -267,14 +268,14 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oOak, oOakLarge, oPine, oApple],
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6),
clForest,
stragglerTrees);
Engine.SetProgress(90);
yield 90;
placePlayersNomad(clPlayer,
avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
@ -290,5 +291,5 @@ Engine.LoadLibrary("rmbiome");
setFogThickness(0.25);
setFogFactor(0.4);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -226,7 +227,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(20);
yield 20;
paintTerrainBasedOnHeight(3.1, 29, 0, tCliff);
paintTileClassBasedOnHeight(3.1, 32, 0, clHill2);
@ -247,7 +248,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -299,7 +300,7 @@ Engine.LoadLibrary("rmbiome");
clMetal
);
Engine.SetProgress(65);
yield 65;
let planetm = 1;
@ -334,7 +335,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(200, 800), 50
);
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -364,7 +365,7 @@ Engine.LoadLibrary("rmbiome");
],
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -391,5 +392,5 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clHill2, 4, clFood, 2)
]);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -103,7 +104,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(clLand)
]);
Engine.SetProgress(20);
yield 20;
paintTerrainBasedOnHeight(3, 4, 3, tMainTerrain);
paintTerrainBasedOnHeight(1, 3, 0, tShore);
@ -136,7 +137,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(30);
yield 30;
createBumps([avoidClasses(clPlayer, 10), stayClasses(clLand, 5)]);
@ -158,7 +159,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -176,7 +177,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 5)],
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -200,7 +201,7 @@ Engine.LoadLibrary("rmbiome");
]
);
Engine.SetProgress(65);
yield 65;
// create decoration
let planetm = 1;
@ -225,7 +226,7 @@ Engine.LoadLibrary("rmbiome");
],
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 5)]);
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -259,7 +260,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clLand, 2, clFood, 20),
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -280,5 +281,5 @@ Engine.LoadLibrary("rmbiome");
setWaterWaviness(1.0);
setWaterType("ocean");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -180,7 +181,7 @@ Engine.LoadLibrary("rmbiome");
"template": aBush1
}
});
Engine.SetProgress(40);
yield 40;
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
@ -191,7 +192,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
if (randBool())
createHills([tGrass, tCliff, tHill],
@ -213,7 +214,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -224,7 +225,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating stone mines in the middle");
createObjectGroups(
@ -253,7 +254,7 @@ Engine.LoadLibrary("rmbiome");
0.9 // less available area -> slightly less metal
);
Engine.SetProgress(65);
yield 65;
createDecoration(
[
@ -280,7 +281,7 @@ Engine.LoadLibrary("rmbiome");
clRock, 6,
clMetal, 6));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -333,7 +334,7 @@ Engine.LoadLibrary("rmbiome");
clMetal, 6),
clFood);
Engine.SetProgress(90);
yield 90;
createStragglerTrees(
[oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress],
@ -377,5 +378,5 @@ Engine.LoadLibrary("rmbiome");
setWaterType("ocean");
setWaterMurkiness(0.49);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = ["medit_grass_field", "medit_grass_field_b", "temp_grass_c"];
const tLushGrass = ["medit_grass_field", "medit_grass_field_a"];
@ -219,7 +220,7 @@ Engine.LoadLibrary("rmgen-common");
}
}
}
Engine.SetProgress(30);
yield 30;
g_Map.log("Determining player locations");
const playerIDs = sortAllPlayers();
@ -267,7 +268,7 @@ Engine.LoadLibrary("rmgen-common");
}
// Sufficient starting trees around, no decoratives
});
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating bumps");
createAreas(
@ -361,7 +362,7 @@ Engine.LoadLibrary("rmgen-common");
return undefined;
}
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating mines");
for (const mine of [eMetalMine, eStoneMine])
@ -426,7 +427,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(350, 2500),
100);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating small decorative rocks");
createObjectGroupsDeprecated(
@ -500,7 +501,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(100, 600),
50);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating animals");
createObjectGroupsDeprecated(
@ -524,7 +525,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(50, 150),
100);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clBaseResource, 4, clCliffs, 4));
@ -541,5 +542,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterWaviness(2.0);
setWaterType("ocean");
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tOceanRockDeep = "medit_sea_coral_deep";
const tOceanCoral = "medit_sea_coral_plants";
@ -168,7 +169,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating bumps");
createAreasInAreas(
@ -178,7 +179,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(25, 75), 15,
areas);
Engine.SetProgress(34);
yield 34;
g_Map.log("Creating hills");
createAreasInAreas(
@ -192,7 +193,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(5, 30), 15,
areas);
Engine.SetProgress(38);
yield 38;
paintTileClassBasedOnHeight(-Infinity, 0, Elevation_ExcludeMin_ExcludeMax, clWater);
@ -215,7 +216,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(10, 64),
20,
areas);
Engine.SetProgress(42);
yield 42;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -227,7 +228,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 6)],
scaleByMapSize(4, 16), 200, areas
);
Engine.SetProgress(46);
yield 46;
g_Map.log("Creating small stone mines");
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock);
@ -235,7 +236,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 6)],
scaleByMapSize(4, 16), 200, areas
);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating metal mines");
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal);
@ -243,7 +244,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clMetal, 6, clRock, 6)],
scaleByMapSize(4, 16), 200, areas
);
Engine.SetProgress(54);
yield 54;
g_Map.log("Creating shrub patches");
for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
@ -257,7 +258,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 16),
20,
areas);
Engine.SetProgress(58);
yield 58;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
@ -271,7 +272,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 16),
20,
areas);
Engine.SetProgress(62);
yield 62;
g_Map.log("Creating straggler trees");
for (const tree of [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine])
@ -289,7 +290,7 @@ Engine.LoadLibrary("rmgen-common");
clHill, 1),
scaleByMapSize(2, 38), 50, areas
);
Engine.SetProgress(66);
yield 66;
g_Map.log("Create straggler cypresses");
group = new SimpleGroup(
@ -308,7 +309,7 @@ Engine.LoadLibrary("rmgen-common");
clHill, 1),
scaleByMapSize(5, 75), 50, areas
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Create straggler date palms");
group = new SimpleGroup(
@ -327,7 +328,7 @@ Engine.LoadLibrary("rmgen-common");
clHill, 1),
scaleByMapSize(5, 75), 50, areas
);
Engine.SetProgress(74);
yield 74;
g_Map.log("Creating rocks");
group = new SimpleGroup(
@ -341,7 +342,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 0, clCity, 0),
scaleByMapSize(30, 180), 50
);
Engine.SetProgress(78);
yield 78;
g_Map.log("Creating deer");
group = new SimpleGroup(
@ -352,7 +353,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 5, clForest, 1, clHill, 1, clCity, 10, clMetal, 6, clRock, 4, clFood, 8),
3 * numPlayers, 50
);
Engine.SetProgress(82);
yield 82;
g_Map.log("Creating berry bushes");
group = new SimpleGroup([new SimpleObject(oBerryBush, 5, 7, 0, 3)], true, clFood);
@ -360,7 +361,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2, clForest, 1, clHill, 1, clCity, 10, clMetal, 6, clRock, 4, clFood, 8),
1.5 * numPlayers, 100
);
Engine.SetProgress(86);
yield 86;
g_Map.log("Creating Fish");
group = new SimpleGroup([new SimpleObject(oFish, 1, 1, 0, 3)], true, clFood);
@ -368,7 +369,7 @@ Engine.LoadLibrary("rmgen-common");
[stayClasses(clWater, 1), avoidClasses(clFood, 8)],
scaleByMapSize(40, 200), 100
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating Whales");
group = new SimpleGroup([new SimpleObject(oWhale, 1, 1, 0, 3)], true, clFood);
@ -376,7 +377,7 @@ Engine.LoadLibrary("rmgen-common");
[stayClasses(clWater, 1), avoidClasses(clFood, 8, clPlayer, 4, clIsland, 4)],
scaleByMapSize(10, 40), 100
);
Engine.SetProgress(94);
yield 94;
g_Map.log("Creating shipwrecks");
group = new SimpleGroup([new SimpleObject(oShipwreck, 1, 1, 0, 3)], true, clFood);
@ -384,7 +385,7 @@ Engine.LoadLibrary("rmgen-common");
[stayClasses(clWater, 1), avoidClasses(clFood, 8)],
scaleByMapSize(6, 16), 100
);
Engine.SetProgress(98);
yield 98;
g_Map.log("Creating shipwreck debris");
group = new SimpleGroup([new SimpleObject(oShipDebris, 1, 2, 0, 4)], true, clFood);
@ -392,7 +393,7 @@ Engine.LoadLibrary("rmgen-common");
[stayClasses(clWater, 1), avoidClasses(clFood, 8)],
scaleByMapSize(10, 20), 100
);
Engine.SetProgress(99);
yield 99;
placePlayersNomad(clPlayer,
avoidClasses(
@ -411,5 +412,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterWaviness(3.0);
setWaterType("ocean");
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,8 +1,9 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap(mapSettings)
{
const day = g_MapSettings.Daytime !== undefined ? g_MapSettings.Daytime == "day" : randBool(2/3);
const day = mapSettings.Daytime !== undefined ? mapSettings.Daytime == "day" : randBool(2/3);
// Spawn ships away from the shoreline, but patrol close to the shoreline
const triggerPointShipSpawn = "trigger/trigger_point_A";
@ -779,7 +780,7 @@ Engine.LoadLibrary("rmgen-common");
clPath, 1),
clFood);
Engine.SetProgress(90);
yield 90;
createStragglerTrees(
treeTypes,
@ -802,7 +803,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
stragglerTrees * 7);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating animals on islands");
createFood(
@ -822,7 +823,7 @@ Engine.LoadLibrary("rmgen-common");
],
clFood);
Engine.SetProgress(98);
yield 98;
g_Map.log("Creating treasures");
createObjectGroupsByAreas(
@ -1041,5 +1042,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterMurkiness(0.97);
setWaterHeight(21);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const templateStone = "gaia/rock/temperate_small";
const templateStoneMine = "gaia/rock/temperate_large";
@ -119,7 +120,7 @@ Engine.LoadLibrary("rmgen-common");
Vector2D.add(mapCenter, new Vector2D(randFloat(minPlayerRadius, maxPlayerRadius), 0)
.rotate(-playerAngle[i]).round());
}
Engine.SetProgress(10);
yield 10;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -158,7 +159,7 @@ Engine.LoadLibrary("rmgen-common");
"count": 2
}
});
Engine.SetProgress(30);
yield 30;
g_Map.log("Painting paths");
const pathBlending = numPlayers <= 4;
@ -178,7 +179,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clBaseResource, 4));
}
Engine.SetProgress(50);
yield 50;
g_Map.log("Placing expansion resources");
for (let i = 0; i < numPlayers; ++i)
@ -204,7 +205,7 @@ Engine.LoadLibrary("rmgen-common");
new TileClassPainter(clHill)
]);
}
Engine.SetProgress(60);
yield 60;
g_Map.log("Placing temple");
g_Map.placeEntityPassable(templateTemple, 0, mapCenter, randomAngle());
@ -255,9 +256,9 @@ Engine.LoadLibrary("rmgen-common");
const hVarHills = 5 * (1 + Math.sin(x / 10) * Math.sin(z / 10));
g_Map.setHeight(position, g_Map.getHeight(position) + hVarMiddleHill + hVarHills + 1);
}
Engine.SetProgress(95);
yield 95;
placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clBaseResource, 4, clHill, 4));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -123,7 +124,7 @@ Engine.LoadLibrary("rmgen-common");
new SmoothElevationPainter(ELEVATION_SET, heightLand, 4),
new TileClassPainter(clIsland)
].concat(isNomad() ? [] : [new TileClassPainter(clPlayerIsland)]));
Engine.SetProgress(10);
yield 10;
g_Map.log("Creating islands");
createAreas(
@ -135,7 +136,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clIsland, 6),
scaleByMapSize(25, 80));
Engine.SetProgress(20);
yield 20;
// Notice that the Constraints become much shorter when avoiding water
// rather than staying on islands
@ -144,7 +145,7 @@ Engine.LoadLibrary("rmgen-common");
new MapBoundsPlacer(),
new TileClassPainter(clWater),
new HeightConstraint(-Infinity, heightShoreLower));
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating undersea bumps");
createAreas(
@ -152,7 +153,7 @@ Engine.LoadLibrary("rmgen-common");
new SmoothElevationPainter(ELEVATION_SET, heightSeaBump, 3),
avoidClasses(clIsland, 2),
scaleByMapSize(10, 50));
Engine.SetProgress(35);
yield 35;
g_Map.log("Creating volcano");
const areasVolcano = createAreas(
@ -170,7 +171,7 @@ Engine.LoadLibrary("rmgen-common");
200);
createBumps(avoidClasses(clWater, 0, clPlayer, 10, clVolcano, 0));
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating large bumps");
createAreas(
@ -178,7 +179,7 @@ Engine.LoadLibrary("rmgen-common");
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 3),
avoidClasses(clWater, 2, clVolcano, 0, clPlayer, 10),
scaleByMapSize(20, 200));
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating hills");
createAreas(
@ -190,7 +191,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 1, clPlayer, 12, clVolcano, 0, clHill, 15),
scaleByMapSize(4, 13));
Engine.SetProgress(50);
yield 50;
g_Map.log("Painting corals");
paintTerrainBasedOnHeight(-Infinity, heightCoralsLower, Elevation_IncludeMin_ExcludeMax, tWater);
@ -212,7 +213,7 @@ Engine.LoadLibrary("rmgen-common");
new HeightPlacer(Elevation_IncludeMin_ExcludeMax, heightShoreUpper, heightLand),
new TerrainPainter(tShoreUpper),
avoidClasses(clVolcano, 0));
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -222,7 +223,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 4, clVolcano, 2, clForest, 1, clDirt, 2, clGrass, 2, clHill, 1),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(65);
yield 65;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -250,7 +251,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aBush1
}
});
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating stone mines");
createMines(
@ -271,7 +272,7 @@ Engine.LoadLibrary("rmgen-common");
clRock, 4),
clRock,
scaleByMapSize(4, 16));
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating metal mines");
createMines(
@ -289,7 +290,7 @@ Engine.LoadLibrary("rmgen-common");
clRock, 4),
clMetal,
scaleByMapSize(4, 16));
Engine.SetProgress(80);
yield 80;
placePlayersNomad(clPlayer,
avoidClasses(clWater, 12, clVolcano, 4, clMetal, 4, clRock, 4, clHill, 4));
@ -308,7 +309,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
forestTrees,
200);
Engine.SetProgress(85);
yield 85;
createFood(
[
@ -335,7 +336,7 @@ Engine.LoadLibrary("rmgen-common");
clRock, 4),
clFood);
Engine.SetProgress(87);
yield 87;
createFood(
[
@ -480,7 +481,7 @@ Engine.LoadLibrary("rmgen-common");
20,
areasVolcano);
}
Engine.SetProgress(90);
yield 90;
setSkySet("cumulus");
setSunColor(0.87, 0.78, 0.49);
@ -498,5 +499,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.51);
setPPBloom(0.12);
g_Map.ExportMap();
return g_Map;
}

View File

@ -18,6 +18,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -151,7 +152,7 @@ Engine.LoadLibrary("rmgen-common");
const heightSeaGround = -6;
const heightWaterLevel = 0;
const heightShore = 0.5;
const heightOffsetPath = -g_MapSettings.Size / 80;
const heightOffsetPath = -mapSettings.Size / 80;
const minHeight = -1;
const maxHeight = 2;
@ -185,7 +186,7 @@ Engine.LoadLibrary("rmgen-common");
clTemple, 11, clCliff, 0, clStatue, 2, clSoldier, 3, clTower, 2, clTreasure, 1);
g_Map.LoadHeightmapImage("elephantine.png", minHeight, maxHeight);
Engine.SetProgress(3);
yield 3;
g_Map.log("Lowering sea ground");
createArea(
@ -195,13 +196,13 @@ Engine.LoadLibrary("rmgen-common");
new TileClassPainter(clWater)
],
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(6);
yield 6;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1));
Engine.SetProgress(10);
yield 10;
g_Map.log("Marking islands");
const areaIsland = createArea(
@ -217,21 +218,21 @@ Engine.LoadLibrary("rmgen-common");
Infinity),
new TileClassPainter(clIsland),
avoidClasses(clPlayer, 0, clWater, 0));
Engine.SetProgress(13);
yield 13;
g_Map.log("Painting islands");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(tGrass),
stayClasses(clIsland, 0));
Engine.SetProgress(16);
yield 16;
g_Map.log("Painting water and shoreline");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(tWater),
new HeightConstraint(-Infinity, heightShore));
Engine.SetProgress(19);
yield 19;
placePlayerBases({
"PlayerPlacement": playerPlacementRiver(riverAngle, fractionToTiles(0.62)),
@ -262,7 +263,7 @@ Engine.LoadLibrary("rmgen-common");
"template": pickRandom(aBushesDesert)
}
});
Engine.SetProgress(22);
yield 22;
g_Map.log("Creating temple");
const groupTemple = createObjectGroupsByAreas(
@ -273,7 +274,7 @@ Engine.LoadLibrary("rmgen-common");
1,
200,
[areaIsland]);
Engine.SetProgress(34);
yield 34;
g_Map.log("Creating pyramid");
const groupPyramid = createObjectGroupsByAreas(
@ -288,7 +289,7 @@ Engine.LoadLibrary("rmgen-common");
1,
200,
[areaIsland]);
Engine.SetProgress(37);
yield 37;
g_Map.log("Painting city patches");
const cityCenters = [
@ -303,7 +304,7 @@ Engine.LoadLibrary("rmgen-common");
new DiskPlacer(cityCenter.radius, cityCenter.pos),
new LayeredPainter([tRoadWildIsland, tRoadIsland], [2]),
stayClasses(clIsland, 2)));
Engine.SetProgress(40);
yield 40;
g_Map.log("Painting city path");
if (cityCenters.length == 2)
@ -314,11 +315,11 @@ Engine.LoadLibrary("rmgen-common");
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetPath, 4),
new TileClassPainter(clPath)
]);
Engine.SetProgress(42);
yield 42;
createBumps(avoidClasses(clPlayer, 10, clWater, 2, clTemple, 10, clPath, 1), scaleByMapSize(10, 500),
1, 8, 4, 0.2, 3);
Engine.SetProgress(43);
yield 43;
g_Map.log("Marking cliffs");
createArea(
@ -328,7 +329,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2),
new SlopeConstraint(2, Infinity)
]);
Engine.SetProgress(44);
yield 44;
g_Map.log("Creating stone mines");
createMines(
@ -342,7 +343,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clRock, 10, clPath, 1),
clRock,
scaleByMapSize(6, 24));
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating metal mines");
createMines(
@ -356,7 +357,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clMetal, 10, clRock, 5, clPath, 1),
clMetal,
scaleByMapSize(6, 24));
Engine.SetProgress(46);
yield 46;
g_Map.log("Creating kushite towers");
createObjectGroups(
@ -370,7 +371,7 @@ Engine.LoadLibrary("rmgen-common");
],
scaleByMapSize(4, 12),
200);
Engine.SetProgress(49);
yield 49;
const [forestTrees, stragglerTrees] = getTreeCounts(400, 3000, 0.7);
createForests(
@ -378,7 +379,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidCollisions, avoidClasses(clIsland, 0, clPlayer, 20, clForest, 18, clWater, 2)],
clForest,
forestTrees / 2);
Engine.SetProgress(52);
yield 52;
createForests(
[
@ -391,7 +392,7 @@ Engine.LoadLibrary("rmgen-common");
[stayClasses(clIsland, 0), avoidClasses(clForest, 15, clWater, 2), avoidCollisions],
clForest,
forestTrees / 2);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating dirt patches");
createPatches(
@ -400,7 +401,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 0, clIsland, 0, clForest, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(5, 30),
clDirt);
Engine.SetProgress(58);
yield 58;
g_Map.log("Creating statues");
createObjectGroupsByAreas(
@ -414,7 +415,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(2, 10),
400,
[areaIsland]);
Engine.SetProgress(61);
yield 61;
g_Map.log("Creating treasure");
createObjectGroupsByAreas(
@ -424,7 +425,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 10),
100,
areaCityPatch);
Engine.SetProgress(62);
yield 62;
g_Map.log("Creating hero");
createObjectGroups(
@ -437,7 +438,7 @@ Engine.LoadLibrary("rmgen-common");
],
1,
500);
Engine.SetProgress(64);
yield 64;
g_Map.log("Creating soldiers");
createObjectGroups(
@ -453,7 +454,7 @@ Engine.LoadLibrary("rmgen-common");
],
scaleByMapSize(12, 60),
200);
Engine.SetProgress(67);
yield 67;
g_Map.log("Creating berries");
createObjectGroups(
@ -462,7 +463,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(4, 12),
250);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating rhinos");
createObjectGroups(
@ -471,7 +472,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(2, 10),
50);
Engine.SetProgress(73);
yield 73;
g_Map.log("Creating warthog");
createObjectGroups(
@ -480,7 +481,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(2, 10),
50);
Engine.SetProgress(77);
yield 77;
g_Map.log("Creating gazelles");
createObjectGroups(
@ -489,7 +490,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clIsland, 1), avoidCollisions],
scaleByMapSize(2, 10),
50);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating giraffes");
createObjectGroups(
@ -502,7 +503,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(2, 10),
50);
Engine.SetProgress(83);
yield 83;
if (!isNomad())
{
@ -517,7 +518,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(2, 10),
50);
Engine.SetProgress(87);
yield 87;
}
g_Map.log("Creating elephants");
@ -531,7 +532,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(2, 10),
50);
Engine.SetProgress(88);
yield 88;
g_Map.log("Creating crocodiles");
createObjectGroups(
@ -543,12 +544,12 @@ Engine.LoadLibrary("rmgen-common");
],
scaleByMapSize(2, 10),
50);
Engine.SetProgress(89);
yield 89;
g_Map.log("Creating hawk");
for (let i = 0; i < scaleByMapSize(0, 2); ++i)
g_Map.placeEntityAnywhere(oHawk, 0, mapCenter, randomAngle());
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating fish");
createObjectGroups(
@ -557,41 +558,41 @@ Engine.LoadLibrary("rmgen-common");
[stayClasses(clWater, 8), avoidClasses(clFood, 16)],
scaleByMapSize(15, 80),
50);
Engine.SetProgress(91);
yield 91;
createStragglerTrees(
[oAcacia],
avoidCollisions,
clForest,
stragglerTrees);
Engine.SetProgress(93);
yield 93;
placePlayersNomad(clPlayer, [avoidCollisions, avoidClasses(clIsland, 0)]);
Engine.SetProgress(95);
yield 95;
createDecoration(
aBushesDesert.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]),
aBushesDesert.map(bush => scaleByMapSize(20, 150) * randIntInclusive(1, 3)),
[avoidClasses(clIsland, 0), avoidCollisions]);
Engine.SetProgress(96);
yield 96;
createDecoration(
aBushesIslands.map(bush => [new SimpleObject(bush, 0, 4, 2, 4)]),
aBushesIslands.map(bush => scaleByMapSize(20, 150) * randIntInclusive(1, 3)),
[stayClasses(clIsland, 0), avoidCollisions]);
Engine.SetProgress(97);
yield 97;
createDecoration(
[[new SimpleObject(aRock, 0, 4, 2, 4)]],
[[scaleByMapSize(80, 500)]],
[avoidClasses(clIsland, 0), avoidCollisions]);
Engine.SetProgress(98);
yield 98;
createDecoration(
aBushesShoreline.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]),
aBushesShoreline.map(bush => scaleByMapSize(200, 1000)),
[new HeightConstraint(heightWaterLevel, heightShore), avoidCollisions]);
Engine.SetProgress(99);
yield 99;
g_Environment = {
"SkySet": "cloudless",
@ -648,5 +649,5 @@ Engine.LoadLibrary("rmgen-common");
}
};
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -14,7 +15,7 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(10);
yield 10;
const teamsArray = getTeamsArray();
const startAngle = randomAngle();
@ -26,7 +27,7 @@ Engine.LoadLibrary("rmbiome");
startAngle,
undefined),
false);
Engine.SetProgress(20);
yield 20;
// Change the starting angle and add the players again
let rotation = Math.PI;
@ -45,7 +46,7 @@ Engine.LoadLibrary("rmbiome");
startAngle + rotation,
undefined),
false);
Engine.SetProgress(40);
yield 40;
addElements(shuffleArray([
{
@ -92,7 +93,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]));
Engine.SetProgress(50);
yield 50;
addElements([
{
@ -125,7 +126,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]);
Engine.SetProgress(60);
yield 60;
addElements(shuffleArray([
{
@ -179,7 +180,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["few", "normal", "many", "tons"]
}
]));
Engine.SetProgress(80);
yield 80;
addElements(shuffleArray([
{
@ -234,7 +235,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": g_AllAmounts
}
]));
Engine.SetProgress(90);
yield 90;
placePlayersNomad(
g_TileClasses.player,
@ -246,5 +247,5 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.mountain, 4,
g_TileClasses.animals, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tPrimary = "temp_grass_long";
const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"];
@ -91,7 +92,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(10);
yield 10;
paintRiver({
"parallel": false,
@ -112,7 +113,7 @@ Engine.LoadLibrary("rmgen-common");
}
});
Engine.SetProgress(20);
yield 20;
createTributaryRivers(
startAngle,
@ -128,14 +129,14 @@ Engine.LoadLibrary("rmgen-common");
paintTerrainBasedOnHeight(-5, 1, 1, tWater);
paintTerrainBasedOnHeight(1, heightLand, 1, tShore);
paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
Engine.SetProgress(25);
yield 25;
createBumps(avoidClasses(clWater, 5, clPlayer, 20));
Engine.SetProgress(30);
yield 30;
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15, clWater, 5), clHill,
scaleByMapSize(1, 4) * numPlayers);
Engine.SetProgress(50);
yield 50;
const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
createForests(
@ -143,7 +144,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 6),
clForest,
forestTrees);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -162,7 +163,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating stone mines");
createMines(
@ -184,7 +185,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2),
clMetal
);
Engine.SetProgress(85);
yield 85;
createDecoration(
[
@ -270,5 +271,5 @@ Engine.LoadLibrary("rmgen-common");
placePlayersNomad(clPlayer,
avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tHillDark = "cliff volcanic light";
const tHillMedium1 = "ocean_rock_a";
@ -109,7 +110,7 @@ Engine.LoadLibrary("rmgen-common");
]);
}
Engine.SetProgress(8);
yield 8;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -136,10 +137,10 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(15);
yield 15;
createVolcano(mapCenter, clHill, tHillVeryDark, undefined, false, ELEVATION_SET);
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating lakes");
createAreas(
@ -151,12 +152,12 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 0, clHill, 2, clWater, 12),
Math.round(scaleByMapSize(6, 12)));
Engine.SetProgress(25);
yield 25;
createBumps(avoidClasses(clPlayer, 0, clHill, 0), scaleByMapSize(50, 300), 1, 10, 3, 0,
scaleByMapSize(4, 10));
paintTileClassBasedOnHeight(10, 100, 0, clBumps);
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating hills");
createAreas(
@ -168,7 +169,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 0, clHill, 15, clWater, 2, clBaseResource, 2),
scaleByMapSize(2, 8) * numPlayers);
Engine.SetProgress(35);
yield 35;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(1200, 3000, 0.7);
@ -191,7 +192,7 @@ Engine.LoadLibrary("rmgen-common");
clHill, 0,
clWater, 2),
num);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating hill patches");
for (const patchSize of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -216,7 +217,7 @@ Engine.LoadLibrary("rmgen-common");
clPlayer, 0),
scaleByMapSize(20, 80));
}
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating grass patches");
createLayeredPatches(
@ -232,7 +233,7 @@ Engine.LoadLibrary("rmgen-common");
clPlayer, 0),
scaleByMapSize(3, 8),
clDirt);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating stone mines");
createObjectGroupsDeprecated(
@ -255,7 +256,7 @@ Engine.LoadLibrary("rmgen-common");
],
100,
100);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating small stone quarries");
createObjectGroupsDeprecated(
@ -272,7 +273,7 @@ Engine.LoadLibrary("rmgen-common");
],
100,
100);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating metal mines");
createObjectGroupsDeprecated(
@ -290,7 +291,7 @@ Engine.LoadLibrary("rmgen-common");
],
100,
100);
Engine.SetProgress(65);
yield 65;
if (!isNomad())
{
@ -311,7 +312,7 @@ Engine.LoadLibrary("rmgen-common");
500,
1);
}
Engine.SetProgress(67);
yield 67;
createDecoration(
[
@ -340,7 +341,7 @@ Engine.LoadLibrary("rmgen-common");
clPlayer, 0,
clHill, 0)
]);
Engine.SetProgress(70);
yield 70;
createDecoration(
[
@ -362,7 +363,7 @@ Engine.LoadLibrary("rmgen-common");
clPlayer, 0,
clHill, 0
));
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -382,7 +383,7 @@ Engine.LoadLibrary("rmgen-common");
clFood, 20)
],
clFood);
Engine.SetProgress(78);
yield 78;
createFood(
[
@ -402,7 +403,7 @@ Engine.LoadLibrary("rmgen-common");
stayClasses(clForest, 2)
],
clFood);
Engine.SetProgress(81);
yield 81;
createFood(
[
@ -416,7 +417,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 1, clForest, 0, clPlayer, 0, clHill, 1, clFood, 10)
],
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree, oTree2, oTree3, oTree4, oBush],
@ -433,7 +434,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
stragglerTrees);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating straggler bushes");
createObjectGroupsDeprecated(
@ -453,7 +454,7 @@ Engine.LoadLibrary("rmgen-common");
clRock, 4)
],
stragglerTrees);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating rain drops");
createObjectGroupsDeprecated(
@ -464,7 +465,7 @@ Engine.LoadLibrary("rmgen-common");
0,
avoidClasses(clRain, 5),
scaleByMapSize(80, 250));
Engine.SetProgress(98);
yield 98;
placePlayersNomad(clPlayer,
avoidClasses(clWater, 4, clHill, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
@ -478,5 +479,5 @@ Engine.LoadLibrary("rmgen-common");
setPPEffect("hdr");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
if (g_MapSettings.Biome)
if (mapSettings.Biome)
setSelectedBiome();
else
setBiome("fields_of_meroe/dry");
@ -136,7 +137,7 @@ Engine.LoadLibrary("rmbiome");
}
}
});
Engine.SetProgress(10);
yield 10;
g_Map.log("Creating cataracts");
for (const x of [fractionToTiles(randFloat(0.15, 0.25)), fractionToTiles(randFloat(0.75, 0.85))])
@ -208,7 +209,7 @@ Engine.LoadLibrary("rmbiome");
"count": 3
}
});
Engine.SetProgress(15);
yield 15;
g_Map.log("Getting random coordinates for Kushite settlements");
const kushiteTownPositions = [];
@ -247,7 +248,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 20, clForest, 5, clKushiteVillages, 30, clRiver, 10),
scaleByMapSize(1, 7),
200);
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating bumps");
createAreas(
@ -266,7 +267,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 3, clRiver, 20, clDunes, 10, clKushiteVillages, 10),
scaleByMapSize(1, 3) * numPlayers * 3);
Engine.SetProgress(25);
yield 25;
const [forestTrees, stragglerTrees] = getTreeCounts(400, 2000, 0.7);
createForests(
@ -274,7 +275,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 20, clForest, 20, clDunes, 2, clRiver, 20, clKushiteVillages, 10),
clForest,
forestTrees);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -291,7 +292,7 @@ Engine.LoadLibrary("rmbiome");
new TerrainPainter(tFarmland),
avoidClasses(clDunes, 3, clForest, 3, clPlayer, 5, clKushiteVillages, 5, clRiver, 10),
scaleByMapSize(1, 10));
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating stone mines");
createObjectGroups(
@ -362,7 +363,7 @@ Engine.LoadLibrary("rmbiome");
clForest, 4),
scaleByMapSize(2, 8),
50);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating gazelle");
createObjectGroups(
@ -424,7 +425,7 @@ Engine.LoadLibrary("rmbiome");
[stayClasses(clRiver, 4), avoidClasses(clFood, 16, clCataract, 10)],
scaleByMapSize(15, 80),
50);
Engine.SetProgress(80);
yield 80;
createStragglerTrees(
[oBaobab, oAcacia],
@ -460,7 +461,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
stragglerTrees * 10);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating reeds on the shore");
createObjectGroups(
@ -506,7 +507,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 0, clPlayer, 0, clDunes, 0, clRiver, 15, clMetal, 4, clRock, 4),
scaleByMapSize(50, 500),
50);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating rain drops");
if (aRain)
@ -515,7 +516,7 @@ Engine.LoadLibrary("rmbiome");
0,
avoidClasses(clRain, 5),
scaleByMapSize(60, 200));
Engine.SetProgress(98);
yield 98;
placePlayersNomad(clPlayer,
avoidClasses(
@ -542,5 +543,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.6);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -120,7 +121,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating central island");
createArea(
@ -231,7 +232,7 @@ Engine.LoadLibrary("rmbiome");
],
clForest,
stragglerTreesMainIsland);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating dirt patches");
const numb = currentBiome() == "generic/savanna" ? 3 : 1;
@ -275,7 +276,7 @@ Engine.LoadLibrary("rmbiome");
],
clFood);
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -288,7 +289,7 @@ Engine.LoadLibrary("rmbiome");
],
clFood);
Engine.SetProgress(85);
yield 85;
const planetm = currentBiome() == "generic/india" ? 8 : 1;
createDecoration(
@ -331,5 +332,5 @@ Engine.LoadLibrary("rmbiome");
setSkySet(pickRandom(["cloudless", "cumulus", "overcast"]));
setWaterMurkiness(0.4);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = ["temperate_grass_04", "temperate_grass_03", "temperate_grass_04"];
const tForestFloor = "temperate_forestfloor_01";
@ -140,7 +141,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 7, clWater, 20),
numLakes);
Engine.SetProgress(15);
yield 15;
g_Map.log("Creating reeds");
createObjectGroupsByAreasDeprecated(
@ -151,7 +152,7 @@ Engine.LoadLibrary("rmgen-common");
numLakes, 100,
waterAreas);
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating fish");
createObjectGroupsByAreasDeprecated(
@ -164,14 +165,14 @@ Engine.LoadLibrary("rmgen-common");
numLakes / 4,
50,
waterAreas);
Engine.SetProgress(30);
yield 30;
createBumps(avoidClasses(clWater, 2, clPlayer, 5));
Engine.SetProgress(35);
yield 35;
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 5, clWater, 5, clHill, 15), clHill,
scaleByMapSize(1, 4) * numPlayers);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
@ -191,7 +192,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 5, clWater, 3, clForest, 15, clHill, 1),
num);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -201,7 +202,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 1),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating grass patches");
createPatches(
@ -210,7 +211,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 1),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating stone mines");
createMines(
@ -223,7 +224,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clRock, 10, clHill, 1),
clRock);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -232,7 +233,7 @@ Engine.LoadLibrary("rmgen-common");
clMetal,
avoidClasses(clWater, 0, clForest, 1, clPlayer, 5, clMetal, 10, clRock, 5, clHill, 1)
);
Engine.SetProgress(70);
yield 70;
createDecoration(
[
@ -250,7 +251,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapAreaAbsolute(13)
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 1, clHill, 0));
Engine.SetProgress(80);
yield 80;
createFood(
[
@ -263,7 +264,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 6, clHill, 1, clFood, 20),
clFood);
Engine.SetProgress(85);
yield 85;
createFood(
[
@ -275,14 +276,14 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2, clForest, 0, clPlayer, 6, clHill, 1, clFood, 10),
clFood);
Engine.SetProgress(90);
yield 90;
createStragglerTrees(
[oOak, oBeech, oPine],
avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 1, clMetal, 6, clRock, 6),
clForest,
stragglerTrees);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(clPlayer,
avoidClasses(clWater, 2, clHill, 2, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
@ -302,5 +303,5 @@ Engine.LoadLibrary("rmgen-common");
setPPBloom(0.38);
setPPEffect("hdr");
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
setSelectedBiome();
@ -18,12 +19,12 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(20);
yield 20;
if (!isNomad())
{
// Note: `|| pickRandom(...)` is needed for atlas.
const pattern = g_MapSettings.TeamPlacement ||
const pattern = mapSettings.TeamPlacement ||
pickRandom(["line", "radial", "randomGroup", "stronghold"]);
createBases(
...playerPlacementByPattern(
@ -34,7 +35,7 @@ Engine.LoadLibrary("rmbiome");
undefined),
g_PlayerbaseTypes[pattern].walls);
}
Engine.SetProgress(40);
yield 40;
const features = [
{
@ -135,7 +136,7 @@ Engine.LoadLibrary("rmbiome");
});
addElements(shuffleArray(features));
Engine.SetProgress(50);
yield 50;
addElements([
{
@ -168,7 +169,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]);
Engine.SetProgress(60);
yield 60;
addElements(shuffleArray([
{
@ -223,7 +224,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["few", "normal", "many", "tons"]
}
]));
Engine.SetProgress(70);
yield 70;
addElements(shuffleArray([
{
@ -278,7 +279,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": g_AllAmounts
}
]));
Engine.SetProgress(90);
yield 90;
placePlayersNomad(
g_TileClasses.player,
@ -292,5 +293,5 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.plateau, 4,
g_TileClasses.animals, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -229,7 +230,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -247,7 +248,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
createMines(
@ -278,7 +279,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(400, 2000),
100);
Engine.SetProgress(65);
yield 65;
let planetm = 1;
@ -302,7 +303,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -335,5 +336,5 @@ Engine.LoadLibrary("rmbiome");
placePlayersNomad(clPlayer,
avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = ["medit_grass_field_a", "medit_grass_field_b"];
const tForestFloorC = "medit_plants_dirt";
@ -117,7 +118,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(20);
yield 20;
paintRiver({
"parallel": true,
@ -158,7 +159,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -176,7 +177,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clForest, 0, clDirt, 3, clPlayer, 8, clRiver, 1), stayClasses(clLand, 7)],
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
createMines(
@ -201,7 +202,7 @@ Engine.LoadLibrary("rmgen-common");
],
clMetal
);
Engine.SetProgress(65);
yield 65;
createDecoration(
[
@ -232,7 +233,7 @@ Engine.LoadLibrary("rmgen-common");
],
stayClasses(clShallow, 0));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -266,7 +267,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clLand, 2, clRiver, 1),
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oPoplar, oCarob, oApple],
@ -298,5 +299,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.51);
setPPBloom(0.12);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,10 +2,11 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
if (g_MapSettings.Biome)
if (mapSettings.Biome)
setSelectedBiome();
else
// TODO: Replace ugly default for atlas by a dropdown
@ -113,7 +114,7 @@ Engine.LoadLibrary("rmbiome");
"template": aRockMedium
}
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating the gulf");
const gulfLakePositions = [
@ -196,7 +197,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -214,7 +215,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clLake, 6, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -233,7 +234,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clLake, 2, clForest, 0, clPlayer, scaleByMapSize(15, 25), clHill, 1, clMetal, 10),
0.9
);
Engine.SetProgress(70);
yield 70;
createDecoration(
[
@ -251,7 +252,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(bushCount.min, bushCount.max)
],
avoidClasses(clLake, 0, clForest, 0, clPlayer, 5, clHill, 0, clBaseResource, 5));
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -284,7 +285,7 @@ Engine.LoadLibrary("rmbiome");
clFood);
}
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree3],
@ -296,5 +297,5 @@ Engine.LoadLibrary("rmbiome");
placePlayersNomad(clPlayer,
avoidClasses(clLake, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -20,7 +21,7 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(10);
yield 10;
const mapSize = g_Map.getSize();
const mapCenter = g_Map.getCenter();
@ -35,19 +36,19 @@ Engine.LoadLibrary("rmbiome");
startAngle,
undefined),
true);
Engine.SetProgress(20);
yield 20;
addCenterLake();
Engine.SetProgress(30);
yield 30;
if (mapSize >= 192)
{
addHarbors();
Engine.SetProgress(40);
yield 40;
}
addSpines();
Engine.SetProgress(50);
yield 50;
addElements([
{
@ -130,7 +131,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": g_AllAmounts
}
]));
Engine.SetProgress(60);
yield 60;
addElements(shuffleArray([
{
@ -189,7 +190,7 @@ Engine.LoadLibrary("rmbiome");
}
]));
Engine.SetProgress(70);
yield 70;
addElements(shuffleArray([
{
@ -248,7 +249,7 @@ Engine.LoadLibrary("rmbiome");
}
]));
Engine.SetProgress(80);
yield 80;
addElements([
{
@ -284,7 +285,7 @@ Engine.LoadLibrary("rmbiome");
}
]);
Engine.SetProgress(90);
yield 90;
placePlayersNomad(
g_TileClasses.player,
@ -299,7 +300,7 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.mountain, 4,
g_TileClasses.animals, 2));
g_Map.ExportMap();
return g_Map;
function addCenterLake()
{

View File

@ -18,6 +18,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -45,7 +46,7 @@ Engine.LoadLibrary("rmgen-common");
const heightmapHellas = convertHeightmap1Dto2D(Engine.LoadHeightmapImage("maps/random/hellas.png"));
const biomes = Engine.ReadJSONFile("maps/random/hellas_biomes.json");
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightSeaGround = heightScale(-6);
const heightReedsMin = heightScale(-2);
@ -145,7 +146,7 @@ Engine.LoadLibrary("rmgen-common");
createArea(
new DiskPlacer(fractionToTiles(0.5) - MAP_BORDER_WIDTH, mapCenter),
new SmoothingPainter(1, 0.5, 1));
Engine.SetProgress(25);
yield 25;
clCliffs = g_Map.createTileClass();
@ -188,7 +189,7 @@ Engine.LoadLibrary("rmgen-common");
g_Map.log("Too few player locations, starting over");
}
Engine.SetProgress(35);
yield 35;
if (!isNomad())
{
@ -199,7 +200,7 @@ Engine.LoadLibrary("rmgen-common");
new ClumpPlacer(diskArea(playerRadius), 0.95, 0.6, Infinity, position),
new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position),
playerRadius / 2));
Engine.SetProgress(38);
yield 38;
}
g_Map.log("Painting lowlands");
@ -207,14 +208,14 @@ Engine.LoadLibrary("rmgen-common");
new MapBoundsPlacer(),
new TerrainPainter(biomes.lowlands.terrains.main),
constraintLowlands);
Engine.SetProgress(40);
yield 40;
g_Map.log("Painting highlands");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(biomes.highlands.terrains.main),
constraintHighlands);
Engine.SetProgress(45);
yield 45;
g_Map.log("Painting mountains");
createArea(
@ -224,14 +225,14 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2),
constraintMountains
]);
Engine.SetProgress(48);
yield 48;
g_Map.log("Painting water and shoreline");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(biomes.water.terrains.main),
new HeightConstraint(-Infinity, heightShoreline));
Engine.SetProgress(50);
yield 50;
g_Map.log("Painting cliffs");
createArea(
@ -241,7 +242,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2),
new SlopeConstraint(2, Infinity)
]);
Engine.SetProgress(55);
yield 55;
for (let i = 0; i < numPlayers; ++i)
{
@ -287,7 +288,7 @@ Engine.LoadLibrary("rmgen-common");
// No decoratives
});
}
Engine.SetProgress(60);
yield 60;
g_Map.log("Placing docks");
placeDocks(
@ -301,7 +302,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clDock, 50), new StaticConstraint(avoidClasses(clPlayer, 30, clCliffs, 8))],
0,
50);
Engine.SetProgress(65);
yield 65;
const [forestTrees, stragglerTrees] = getTreeCounts(600, 4000, 0.7);
const biomeTreeRatioHighlands = 0.4;
@ -321,7 +322,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
forestTrees * (biome == "highlands" ? biomeTreeRatioHighlands :
1 - biomeTreeRatioHighlands));
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating stone mines");
const minesStone = [
@ -335,7 +336,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clForest, 1, clPlayer, 20, clRock, 18, clCliffs, 2, clWater, 2, clDock, 6)],
scaleByMapSize(2, 12),
50);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating metal mines");
const minesMetal = [
@ -356,7 +357,7 @@ Engine.LoadLibrary("rmgen-common");
clDock, 6)],
scaleByMapSize(2, 12),
50);
Engine.SetProgress(80);
yield 80;
for (const biome of ["lowlands", "highlands"])
createStragglerTrees(
@ -376,7 +377,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
stragglerTrees * (biome == "highlands" ? biomeTreeRatioHighlands * 4 :
1 - biomeTreeRatioHighlands));
Engine.SetProgress(85);
yield 85;
createFood(
[
@ -402,7 +403,7 @@ Engine.LoadLibrary("rmgen-common");
constraintHighlands
],
clFood);
Engine.SetProgress(90);
yield 90;
createFood(
[
@ -428,7 +429,7 @@ Engine.LoadLibrary("rmgen-common");
constraintLowlands
],
clFood);
Engine.SetProgress(93);
yield 93;
createFood(
[
@ -461,7 +462,7 @@ Engine.LoadLibrary("rmgen-common");
[stayClasses(clWater, 8), avoidClasses(clFood, 8, clDock, 6)],
scaleByMapSize(15, 50),
100);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating grass patches");
for (const biome of ["lowlands", "highlands"])
@ -475,7 +476,7 @@ Engine.LoadLibrary("rmgen-common");
],
scaleByMapSize(15, 45) / biomes[biome].terrains.patches.length,
clDirt);
Engine.SetProgress(96);
yield 96;
for (const biome of ["lowlands", "highlands"])
{
@ -515,7 +516,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 4, clPlayer, 15, clForest, 1, clRock, 4, clMetal, 4),
]);
}
Engine.SetProgress(98);
yield 98;
g_Map.log("Creating temple");
createObjectGroups(
@ -611,7 +612,7 @@ Engine.LoadLibrary("rmgen-common");
placePlayersNomad(clPlayer,
avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clFood, 2, clCliffs, 2, clWater, 15));
Engine.SetProgress(99);
yield 99;
setSkySet("sunny");
setSunColor(0.988166, 0.929297, 0.693819);
@ -628,5 +629,5 @@ Engine.LoadLibrary("rmgen-common");
setPPContrast(0.62);
setPPBloom(0.12);
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -19,7 +20,7 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(10);
yield 10;
const teamsArray = getTeamsArray();
const startAngle = randomAngle();
@ -31,10 +32,10 @@ Engine.LoadLibrary("rmbiome");
startAngle,
undefined),
false);
Engine.SetProgress(20);
yield 20;
placeBarriers();
Engine.SetProgress(40);
yield 40;
addElements(shuffleArray([
{
@ -87,7 +88,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["few"]
}
]));
Engine.SetProgress(50);
yield 50;
addElements([
{
@ -122,7 +123,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]);
Engine.SetProgress(60);
yield 60;
addElements(shuffleArray([
{
@ -180,7 +181,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["few", "normal", "many", "tons"]
}
]));
Engine.SetProgress(80);
yield 80;
addElements(shuffleArray([
{
@ -238,7 +239,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": g_AllAmounts
}
]));
Engine.SetProgress(90);
yield 90;
placePlayersNomad(
g_TileClasses.player,
@ -253,7 +254,7 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.mountain, 4,
g_TileClasses.animals, 2));
g_Map.ExportMap();
return g_Map;
function placeBarriers()
{

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -102,7 +103,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(10);
yield 10;
paintRiver({
"parallel": true,
@ -123,7 +124,7 @@ Engine.LoadLibrary("rmbiome");
createTerrain(height < heightShore1 ? tWater : tShore).place(position);
}
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Marking highlands area");
createArea(
@ -145,7 +146,7 @@ Engine.LoadLibrary("rmbiome");
[stayClasses(clWater, 2), avoidClasses(clFood, 3)],
numPlayers,
50);
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating bumps");
createAreas(
@ -154,7 +155,7 @@ Engine.LoadLibrary("rmbiome");
stayClasses(clHighlands, 1),
scaleByMapSize(300, 600));
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating hills");
createAreas(
@ -167,7 +168,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clPlayer, 20, clWater, 5, clHill, 15, clHighlands, 5),
scaleByMapSize(1, 4) * numPlayers);
Engine.SetProgress(35);
yield 35;
g_Map.log("Creating mainland forests");
const [forestTrees, stragglerTrees] = getTreeCounts(1000, 3500, 0.85);
@ -193,7 +194,7 @@ Engine.LoadLibrary("rmbiome");
clBaseResource, 3,
clHighlands, 2),
numberOfForests);
Engine.SetProgress(45);
yield 45;
}
g_Map.log("Creating highland forests");
@ -223,7 +224,7 @@ Engine.LoadLibrary("rmbiome");
30);
}
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -236,7 +237,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 4),
scaleByMapSize(15, 45));
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
@ -252,7 +253,7 @@ Engine.LoadLibrary("rmbiome");
clBaseResource, 6),
scaleByMapSize(15, 45));
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -279,7 +280,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(5, 20), 100
);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -291,7 +292,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(16, 262), 50
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large decorative rocks");
group = new SimpleGroup(
@ -370,7 +371,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0),
scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -387,5 +388,5 @@ Engine.LoadLibrary("rmbiome");
setWaterWaviness(2.0);
setWaterType("ocean");
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass1 = "savanna_grass_a";
const tDirt1 = "savanna_dirt_a";
@ -75,7 +76,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating bumps");
createAreas(
@ -116,7 +117,7 @@ Engine.LoadLibrary("rmgen-common");
paintTerrainBasedOnHeight(1, 2.4, 0, tShore);
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
paintTileClassBasedOnHeight(-6, 0, 1, clWater);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
for (let i = 0; i < scaleByMapSize(12, 30); ++i)
@ -137,7 +138,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 20, clMetal, 10, clRock, 8, clWater, 4),
scaleByMapSize(2, 12), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
createObjectGroupsDeprecated(
@ -149,7 +150,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 7, clWater, 1),
scaleByMapSize(200, 1200), 1
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating boar");
createObjectGroupsDeprecated(
@ -228,7 +229,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clPlayer, 20, clFood, 12, clRock, 4, clMetal, 4),
randIntInclusive(1, 4) * numPlayers + 2, 50
);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating trees");
createObjectGroupsDeprecated(
@ -270,5 +271,5 @@ Engine.LoadLibrary("rmgen-common");
setPPContrast(0.57031);
setPPBloom(0.34);
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
const g_InitialMineDistance = 14;
const g_InitialTrees = 50;
@ -207,7 +208,7 @@ Engine.LoadLibrary("rmbiome");
}
}
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating big islands");
createAreas(
@ -245,7 +246,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(6, 55),
1);
Engine.SetProgress(70);
yield 70;
g_Map.log("Smoothing heightmap");
createArea(
@ -256,7 +257,7 @@ Engine.LoadLibrary("rmbiome");
unPaintTileClassBasedOnHeight(-10, 10, 3, clLand);
paintTileClassBasedOnHeight(0, 5, 3, clLand);
Engine.SetProgress(85);
yield 85;
createBumps(avoidClasses(clPlayer, 20));
@ -451,7 +452,7 @@ Engine.LoadLibrary("rmbiome");
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating large grass tufts");
group = new SimpleGroup(
@ -478,7 +479,7 @@ Engine.LoadLibrary("rmbiome");
setSunElevation(randFloat(1/5, 1/3) * Math.PI);
setWaterWaviness(2);
Engine.SetProgress(100);
yield 100;
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -212,7 +213,7 @@ Engine.LoadLibrary("rmbiome");
num);
}
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
const numberOfPatches = scaleByMapSize(15, 45) * (currentBiome() == "generic/savanna" ? 3 : 1);
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -238,7 +239,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0), stayClasses(clLand, 6)],
numberOfPatches);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -268,7 +269,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -292,7 +293,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating deer");
group = new SimpleGroup(
@ -304,7 +305,7 @@ Engine.LoadLibrary("rmbiome");
3 * numPlayers, 50
);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating sheep");
group = new SimpleGroup(
@ -336,7 +337,7 @@ Engine.LoadLibrary("rmbiome");
25 * numPlayers, 60
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -360,7 +361,7 @@ Engine.LoadLibrary("rmbiome");
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
group = new SimpleGroup(
@ -374,7 +375,7 @@ Engine.LoadLibrary("rmbiome");
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -396,5 +397,5 @@ Engine.LoadLibrary("rmbiome");
setSunElevation(randFloat(1/5, 1/3) * Math.PI);
setWaterWaviness(2);
g_Map.ExportMap();
return g_Map;
}

View File

@ -7,6 +7,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("heightmap");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -72,7 +73,7 @@ Engine.LoadLibrary("heightmap");
const oPyramidSmall = "structures/kush/pyramid_small";
const oWonderPtol = "structures/ptol/wonder";
const oFortress = "structures/kush/fortress";
const oTower = g_MapSettings.Size >= 256 && getDifficulty() >= 3 ? "structures/kush/defense_tower" :
const oTower = mapSettings.Size >= 256 && getDifficulty() >= 3 ? "structures/kush/defense_tower" :
"structures/kush/sentry_tower";
const oHouse = "structures/kush/house";
const oMarket = "structures/kush/market";
@ -144,7 +145,7 @@ Engine.LoadLibrary("heightmap");
...oPalms.map(tree => tForestFloorFertile + TERRAIN_SEPARATOR + tree),
tForestFloorFertile];
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const minHeightSource = 3;
const maxHeightSource = 800;
@ -343,7 +344,7 @@ Engine.LoadLibrary("heightmap");
"overlap": 0.05
};
Engine.SetProgress(10);
yield 10;
g_Map.log("Loading hill heightmap");
createArea(
@ -420,7 +421,7 @@ Engine.LoadLibrary("heightmap");
"meanderShort": 40,
"meanderLong": 0
});
Engine.SetProgress(30);
yield 30;
g_Map.log("Computing player locations");
const playerIDs = sortAllPlayers();
@ -562,7 +563,7 @@ Engine.LoadLibrary("heightmap");
previousPassageY = y;
areasPassages.push(area);
}
Engine.SetProgress(40);
yield 40;
g_Map.log("Marking hill");
createArea(
@ -597,7 +598,7 @@ Engine.LoadLibrary("heightmap");
new SlopeConstraint(-Infinity, 2)
]);
Engine.SetProgress(50);
yield 50;
for (let i = 0; i < numPlayers; ++i)
{
@ -679,7 +680,7 @@ Engine.LoadLibrary("heightmap");
50,
[areaPyramids]);
Engine.SetProgress(60);
yield 60;
// The city is a circle segment of this maximum size
g_Map.log("Computing city grid");
@ -740,7 +741,7 @@ Engine.LoadLibrary("heightmap");
8, 0, 0, Infinity),
new TileClassPainter(clPath)));
}
Engine.SetProgress(70);
yield 70;
g_Map.log("Placing kushite temples");
const entitiesTemples = [];
@ -1007,7 +1008,7 @@ Engine.LoadLibrary("heightmap");
new NearTileClassConstraint(clPath, pathWidth + 1)
]);
}
Engine.SetProgress(70);
yield 70;
g_Map.log("Finding road starting points");
const roadStartLocations = shuffleArray(
@ -1098,7 +1099,7 @@ Engine.LoadLibrary("heightmap");
20,
[areaRoadPalms]);
}
Engine.SetProgress(75);
yield 75;
g_Map.log("Marking city bush area");
const areaCityBushes =
@ -1194,7 +1195,7 @@ Engine.LoadLibrary("heightmap");
4,
0,
3);
Engine.SetProgress(80);
yield 80;
g_Map.log("Setting up common constraints and areas");
const nearWater = new NearTileClassConstraint(clWater, 3);
@ -1389,7 +1390,7 @@ Engine.LoadLibrary("heightmap");
50,
[areaFertileLand]);
Engine.SetProgress(85);
yield 85;
g_Map.log("Marking irrigation canal tree area");
const areaIrrigationCanalTrees = createArea(
@ -1535,7 +1536,7 @@ Engine.LoadLibrary("heightmap");
scaleByMapSize(20, 120),
50);
Engine.SetProgress(95);
yield 95;
avoidCollisions = new StaticConstraint(avoidCollisions);
@ -1611,5 +1612,5 @@ Engine.LoadLibrary("heightmap");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = [
"tropic_grass_c",
@ -101,7 +102,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(15);
yield 15;
paintRiver({
"parallel": true,
@ -153,7 +154,7 @@ Engine.LoadLibrary("rmgen-common");
paintTerrainBasedOnHeight(0, 1, 1, tShore);
paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating hills");
createAreasInAreas(
@ -190,7 +191,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 20, clForest, 10, clHill, 0, clWater, 8),
num);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -269,7 +270,7 @@ Engine.LoadLibrary("rmgen-common");
8 * scaleByMapSize(13, 200)
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
group = new SimpleGroup(
@ -283,7 +284,7 @@ Engine.LoadLibrary("rmgen-common");
8 * scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -294,7 +295,7 @@ Engine.LoadLibrary("rmgen-common");
8 * scaleByMapSize(13, 200), 50
);
Engine.SetProgress(96);
yield 96;
createStragglerTrees(
[oTree, oPalm],
@ -312,7 +313,7 @@ Engine.LoadLibrary("rmgen-common");
3 * numPlayers, 50
);
Engine.SetProgress(97);
yield 97;
g_Map.log("Creating berry bush");
group = new SimpleGroup(
@ -365,5 +366,5 @@ Engine.LoadLibrary("rmgen-common");
setPPBloom(0.6);
setSkySet("cirrus");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -135,7 +136,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(20);
yield 20;
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
@ -157,7 +158,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -175,7 +176,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -193,7 +194,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10)
);
Engine.SetProgress(65);
yield 65;
let planetm = 1;
@ -217,7 +218,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -251,7 +252,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clFood, 20), stayClasses(clWater, 6)],
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -265,5 +266,5 @@ Engine.LoadLibrary("rmbiome");
setWaterWaviness(4.0);
setWaterType("lake");
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tOceanDepths = "medit_sea_depths";
const tOceanRockDeep = "medit_sea_coral_deep";
@ -125,7 +126,7 @@ Engine.LoadLibrary("rmgen-common");
clWater.add(position);
}
});
Engine.SetProgress(10);
yield 10;
g_Map.log("Painting elevation");
const noise0 = new Noise2D(scaleByMapSize(4, 16));
@ -194,7 +195,7 @@ Engine.LoadLibrary("rmgen-common");
}
g_Map.setHeight(position, h);
}
Engine.SetProgress(20);
yield 20;
g_Map.log("Painting terrain");
const noise6 = new Noise2D(scaleByMapSize(10, 40));
@ -333,7 +334,7 @@ Engine.LoadLibrary("rmgen-common");
createTerrain(t).place(position);
}
Engine.SetProgress(30);
yield 30;
placePlayerBases({
"PlayerPlacement": [primeSortAllPlayers(), playerPosition],
@ -369,7 +370,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating bushes");
let group = new SimpleGroup(
@ -384,7 +385,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 4, clCliff, 2),
scaleByMapSize(9, 146), 50
);
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating rocks");
group = new SimpleGroup(
@ -398,7 +399,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2, clCliff, 1),
scaleByMapSize(9, 146), 50
);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating large stone mines");
group = new SimpleGroup(
@ -423,7 +424,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clForest, 4, clWater, 1, clPlayer, 40, clMetal, 50, clCliff, 3),
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(60);
yield 60;
createStragglerTrees(
[oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine],
@ -431,7 +432,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
scaleByMapSize(10, 190));
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating straggler cypresses");
group = new SimpleGroup(
@ -442,7 +443,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 5, clCliff, 4, clForest, 2, clPlayer, 15, clMetal, 6, clRock, 6),
scaleByMapSize(5, 75), 50
);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating sheep");
group = new SimpleGroup([new SimpleObject(oSheep, 2, 4, 0, 2)], true, clFood);
@ -457,7 +458,7 @@ Engine.LoadLibrary("rmgen-common");
clFood, 8),
3 * numPlayers, 50
);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating fish");
createObjectGroups(
@ -470,7 +471,7 @@ Engine.LoadLibrary("rmgen-common");
],
scaleByMapSize(8, 32));
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating deer");
group = new SimpleGroup(
@ -488,7 +489,7 @@ Engine.LoadLibrary("rmgen-common");
clFood, 8),
3 * numPlayers, 50
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating berry bushes");
group = new SimpleGroup([new SimpleObject(oBerryBush, 5, 7, 0, 3)], true, clFood);
@ -514,5 +515,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterType("ocean");
setWaterMurkiness(0.8);
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -24,7 +25,7 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(10);
yield 10;
createBases(
...playerPlacementByPattern(
@ -34,10 +35,10 @@ Engine.LoadLibrary("rmbiome");
startAngle,
undefined),
true);
Engine.SetProgress(20);
yield 20;
createSunkenTerrain();
Engine.SetProgress(30);
yield 30;
addElements([
{
@ -133,7 +134,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["scarce"]
}
]);
Engine.SetProgress(40);
yield 40;
addElements(shuffleArray([
{
@ -233,7 +234,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]));
Engine.SetProgress(60);
yield 60;
addElements(shuffleArray([
{
@ -348,7 +349,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]));
Engine.SetProgress(75);
yield 75;
addElements([
{
@ -366,7 +367,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]);
Engine.SetProgress(80);
yield 80;
addElements([
{
@ -384,7 +385,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["scarce"]
}
]);
Engine.SetProgress(85);
yield 85;
addElements([
{
@ -401,7 +402,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]);
Engine.SetProgress(90);
yield 90;
addElements([
{
@ -418,7 +419,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["scarce"]
}
]);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(
g_TileClasses.player,
@ -431,7 +432,7 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.animals, 2)
]);
g_Map.ExportMap();
return g_Map;
function createSunkenTerrain()
{

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tPrimary = "temp_grass_long";
const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"];
@ -103,7 +104,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(20);
yield 20;
const riverPositions = [
new Vector2D(mapBounds.left + 1, mapCenter.y),
@ -116,7 +117,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(0.5, 2), 0.1, 0.01),
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 4),
avoidClasses(clPlayer, 4));
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating small puddles at the map border to ensure players being separated");
for (const riverPosition of riverPositions)
@ -124,7 +125,7 @@ Engine.LoadLibrary("rmgen-common");
new ClumpPlacer(diskArea(scaleByMapSize(5, 10)), 0.95, 0.6, Infinity, riverPosition),
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2),
avoidClasses(clPlayer, 8));
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating the shallows of the main river");
for (let i = 0; i <= randIntInclusive(3, scaleByMapSize(4, 6)); ++i)
@ -142,7 +143,7 @@ Engine.LoadLibrary("rmgen-common");
"tileClass": clShallow
});
}
Engine.SetProgress(35);
yield 35;
createTributaryRivers(
startAngle,
@ -155,13 +156,13 @@ Engine.LoadLibrary("rmgen-common");
clShallow,
avoidClasses(clPlayer, 3, clBaseResource, 4));
Engine.SetProgress(40);
yield 40;
paintTerrainBasedOnHeight(-5, 1, 1, tWater);
paintTerrainBasedOnHeight(1, 2, 1, pForestR);
paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating bumps");
createAreas(
@ -170,7 +171,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2, clPlayer, 15),
scaleByMapSize(100, 200)
);
Engine.SetProgress(55);
yield 55;
const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
createForests(
@ -178,7 +179,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 15, clWater, 3, clForest, 16, clHill, 1),
clForest,
forestTrees);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -200,7 +201,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 1, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 6),
scaleByMapSize(15, 45)
);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -227,7 +228,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(86);
yield 86;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -336,5 +337,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterType("lake");
setWaterMurkiness(0.80);
g_Map.ExportMap();
return g_Map;
}

View File

@ -32,6 +32,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -79,7 +80,7 @@ Engine.LoadLibrary("rmgen-common");
"props/flora/grass_soft_dry_small_tall"
].map(actorTemplate);
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightSeaGround = heightScale(-3);
const heightWaterLevel = heightScale(0);
@ -111,7 +112,7 @@ Engine.LoadLibrary("rmgen-common");
const heightmapWaterThreshold =
convertHeightmap1Dto2D(Engine.LoadHeightmapImage(
"maps/random/lower_nubia_water_threshold.png"));
Engine.SetProgress(3);
yield 3;
g_Map.log("Composing heightmap");
const heightmapCombined = [];
@ -126,13 +127,13 @@ Engine.LoadLibrary("rmgen-common");
heightmapCombined[x][y] = heightmapLandThreshold[x][y] ||
heightmapWaterThreshold[x][y] ? heightmapLand[x][y] : minHeight;
}
Engine.SetProgress(6);
yield 6;
g_Map.log("Applying heightmap");
createArea(
new MapBoundsPlacer(),
new HeightmapPainter(heightmapCombined, minHeight, maxHeight));
Engine.SetProgress(9);
yield 9;
g_Map.log("Lowering sea ground");
createArea(
@ -142,7 +143,7 @@ Engine.LoadLibrary("rmgen-common");
new TileClassPainter(clWater)
],
new HeightConstraint(-Infinity, heightSeaGround));
Engine.SetProgress(15);
yield 15;
g_Map.log("Creating Nile passages");
const riverAngle = Math.PI * 3 / 4;
@ -169,41 +170,41 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPassage, scaleByMapSize(15, 25))
]);
}
Engine.SetProgress(18);
yield 18;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, scaleByMapSize(0.5, 1), 1));
Engine.SetProgress(22);
yield 22;
g_Map.log("Marking water");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(clWater),
new HeightConstraint(-Infinity, heightSeaGround));
Engine.SetProgress(28);
yield 28;
g_Map.log("Marking cliffs");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(clCliff),
new SlopeConstraint(2, Infinity));
Engine.SetProgress(32);
yield 32;
g_Map.log("Painting water and shoreline");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(tWater),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(35);
yield 35;
g_Map.log("Painting plateau");
createArea(
new MapBoundsPlacer(),
new TerrainPainter(tPlateau),
new HeightConstraint(heightPlateau2, Infinity));
Engine.SetProgress(38);
yield 38;
let playerIDs = [];
let playerPosition = [];
@ -220,7 +221,7 @@ Engine.LoadLibrary("rmgen-common");
position),
new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 6));
}
Engine.SetProgress(43);
yield 43;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -268,7 +269,7 @@ Engine.LoadLibrary("rmgen-common");
"template": pickRandom(aBushes)
}
});
Engine.SetProgress(50);
yield 50;
g_Map.log("Painting lower cliffs");
createArea(
@ -278,7 +279,7 @@ Engine.LoadLibrary("rmgen-common");
new SlopeConstraint(2, Infinity),
new NearTileClassConstraint(clWater, 2)
]);
Engine.SetProgress(55);
yield 55;
g_Map.log("Painting upper cliffs");
createArea(
@ -288,7 +289,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2),
new SlopeConstraint(2, Infinity)
]);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating stone mines");
createMines(
@ -302,7 +303,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clRock, 10),
clRock,
scaleByMapSize(10, 30));
Engine.SetProgress(63);
yield 63;
g_Map.log("Creating metal mines");
createMines(
@ -316,7 +317,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 4, clCliff, 4, clPlayer, 20, clMetal, 10, clRock, 5),
clMetal,
scaleByMapSize(10, 30));
Engine.SetProgress(67);
yield 67;
g_Map.log("Creating pyramid");
createObjectGroups(
@ -328,7 +329,7 @@ Engine.LoadLibrary("rmgen-common");
],
1,
500);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating trees near the Nile");
createObjectGroups(
@ -349,7 +350,7 @@ Engine.LoadLibrary("rmgen-common");
],
scaleByMapSize(100, 1000),
200);
Engine.SetProgress(73);
yield 73;
const avoidCollisions = avoidClasses(
clPlayer, 12,
@ -374,7 +375,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidCollisions, avoidClasses(clWater, 10, clForest, 4)],
scaleByMapSize(10, 180),
10);
Engine.SetProgress(77);
yield 77;
g_Map.log("Creating gazelles");
createObjectGroups(
@ -383,7 +384,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(2, 10),
50);
Engine.SetProgress(80);
yield 80;
if (!isNomad())
{
@ -399,7 +400,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(2, 10),
50);
}
Engine.SetProgress(83);
yield 83;
g_Map.log("Creating elephants");
createObjectGroups(
@ -412,7 +413,7 @@ Engine.LoadLibrary("rmgen-common");
avoidCollisions,
scaleByMapSize(2, 10),
50);
Engine.SetProgress(86);
yield 86;
placePlayersNomad(clPlayer,
avoidClasses(
@ -423,12 +424,12 @@ Engine.LoadLibrary("rmgen-common");
clFood, 2,
clCliff, 2,
clPyramid, 6));
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating hawk");
for (let i = 0; i < scaleByMapSize(0, 2); ++i)
g_Map.placeEntityAnywhere(oHawk, 0, mapCenter, randomAngle());
Engine.SetProgress(91);
yield 91;
createDecoration(
aBushes.map(bush => [new SimpleObject(bush, 0, 3, 2, 4)]),
@ -438,13 +439,13 @@ Engine.LoadLibrary("rmgen-common");
new HeightConstraint(heightWaterLevel, Infinity),
avoidClasses(clForest, 0)
]);
Engine.SetProgress(92);
yield 92;
createDecoration(
[[new SimpleObject(aRock, 0, 4, 2, 4)]],
[[scaleByMapSize(100, 600)]],
avoidClasses(clWater, 0));
Engine.SetProgress(95);
yield 95;
setWindAngle(-0.43);
setWaterTint(0.161, 0.286, 0.353);
@ -468,5 +469,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -88,7 +89,7 @@ Engine.LoadLibrary("rmbiome");
}
// No decoratives
});
Engine.SetProgress(20);
yield 20;
createBumps(avoidClasses(clPlayer, 20));
@ -106,7 +107,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -124,7 +125,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -142,7 +143,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10)
);
Engine.SetProgress(65);
yield 65;
let planetm = 1;
@ -166,7 +167,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clForest, 0, clPlayer, 10, clHill, 0));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -180,7 +181,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 20),
clFood);
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -192,7 +193,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clMetal, 4, clRock, 4, clFood, 10),
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -202,5 +203,5 @@ Engine.LoadLibrary("rmbiome");
placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -20,6 +20,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
setBiome("generic/aegean");
@ -55,7 +56,7 @@ Engine.LoadLibrary("rmbiome");
g_Decoratives.bushSmall = "actor|props/flora/bush_medit_sm_dry.xml";
g_Decoratives.reeds = "actor|props/flora/reeds_pond_lush_a.xml";
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightSeaGround = heightScale(scaleByMapSize(-6, -4));
const heightWaterLevel = heightScale(0);
@ -67,7 +68,7 @@ Engine.LoadLibrary("rmbiome");
initTileClasses(["shoreline"]);
g_Map.LoadHeightmapImage("marmara.png", 0, 10);
Engine.SetProgress(15);
yield 15;
g_Map.log("Lowering sea ground");
createArea(
@ -75,27 +76,27 @@ Engine.LoadLibrary("rmbiome");
// Keep water impassable on all mapsizes
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, scaleByMapSize(1, 3)),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(20);
yield 20;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, scaleByMapSize(0.1, 0.2), 1));
Engine.SetProgress(25);
yield 25;
g_Map.log("Marking water");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.water),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(30);
yield 30;
g_Map.log("Marking land");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land),
avoidClasses(g_TileClasses.water, 0));
Engine.SetProgress(35);
yield 35;
g_Map.log("Painting shoreline");
createArea(
@ -105,7 +106,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(g_TileClasses.shoreline)
],
new HeightConstraint(-Infinity, heightShoreline));
Engine.SetProgress(40);
yield 40;
g_Map.log("Painting cliffs");
createArea(
@ -118,7 +119,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(g_TileClasses.water, 2),
new SlopeConstraint(2, Infinity)
]);
Engine.SetProgress(45);
yield 45;
if (!isNomad())
{
@ -139,7 +140,7 @@ Engine.LoadLibrary("rmbiome");
position),
new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 6));
}
Engine.SetProgress(50);
yield 50;
addElements([
{
@ -172,7 +173,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]);
Engine.SetProgress(60);
yield 60;
addElements(shuffleArray([
{
@ -244,7 +245,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]));
Engine.SetProgress(70);
yield 70;
addElements(shuffleArray([
{
@ -310,7 +311,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]));
Engine.SetProgress(80);
yield 80;
g_Map.log("Adding reeds");
createObjectGroups(
@ -329,7 +330,7 @@ Engine.LoadLibrary("rmbiome");
],
scaleByMapSize(50, 400),
2);
Engine.SetProgress(85);
yield 85;
placePlayersNomad(
g_Map.createTileClass(),
@ -370,5 +371,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -28,7 +29,7 @@ Engine.LoadLibrary("rmbiome");
const tSnowedRocks = ["alpine_cliff_b", "alpine_cliff_snow"];
setBiome("generic/aegean");
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightSeaGround = heightScale(-6);
const heightWaterLevel = heightScale(0);
@ -41,7 +42,7 @@ Engine.LoadLibrary("rmbiome");
const mapBounds = g_Map.getBounds();
g_Map.LoadHeightmapImage("mediterranean.png", 0, 40);
Engine.SetProgress(15);
yield 15;
initTileClasses([
"autumn",
@ -105,27 +106,27 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(20);
yield 20;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, scaleByMapSize(0.3, 0.8), 1));
Engine.SetProgress(25);
yield 25;
g_Map.log("Marking water");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.water),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(30);
yield 30;
g_Map.log("Marking land");
createArea(
new DiskPlacer(fractionToTiles(0.5), mapCenter),
new TileClassPainter(g_TileClasses.land),
avoidClasses(g_TileClasses.water, 0));
Engine.SetProgress(35);
yield 35;
g_Map.log("Marking climate zones");
for (const zone of climateZones)
@ -144,7 +145,7 @@ Engine.LoadLibrary("rmbiome");
zone.constraint
]);
}
Engine.SetProgress(40);
yield 40;
g_Map.log("Fuzzing biome borders");
for (const zone of climateZones)
@ -171,7 +172,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(20, 60),
g_TileClasses.dirt);
}
Engine.SetProgress(45);
yield 45;
if (!isNomad())
{
@ -198,7 +199,7 @@ Engine.LoadLibrary("rmbiome");
createBase(playerIDs[i], playerPosition[i], mapSize >= 384);
}
}
Engine.SetProgress(50);
yield 50;
for (const zone of climateZones)
{
@ -388,7 +389,7 @@ Engine.LoadLibrary("rmbiome");
}
]);
}
Engine.SetProgress(60);
yield 60;
g_Map.log("Painting water");
createArea(
@ -408,7 +409,7 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.player, 6)
]);
Engine.SetProgress(70);
yield 70;
g_Map.log("Placing fish");
g_Gaia.fish = "gaia/fish/generic";
@ -424,7 +425,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]);
Engine.SetProgress(85);
yield 85;
g_Map.log("Placing whale");
g_Gaia.fish = "gaia/fauna_whale_fin";
@ -442,7 +443,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["scarce"]
}
]);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(
g_Map.createTileClass(),
@ -480,5 +481,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -101,7 +102,7 @@ Engine.LoadLibrary("rmbiome");
findLocationInDirectionBasedOnHeight(playerPosition[i], mapCenter, -3, 2.6, 3);
g_Map.placeEntityPassable(oDock, playerIDs[i], dockLocation, playerAngle[i] + Math.PI);
}
Engine.SetProgress(10);
yield 10;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -136,7 +137,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(15);
yield 15;
g_Map.log("Create the continent body");
const continentPosition =
@ -149,7 +150,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(clLand)
],
avoidClasses(clIsland, 8));
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating shore jaggedness");
createAreas(
@ -168,7 +169,7 @@ Engine.LoadLibrary("rmbiome");
paintTerrainBasedOnHeight(1, 3, 0, tShore);
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating bumps");
createAreas(
@ -177,7 +178,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clIsland, 10), stayClasses(clLand, 3)],
scaleByMapSize(100, 200)
);
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating hills");
createAreas(
@ -190,7 +191,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clIsland, 10, clHill, 15), stayClasses(clLand, 7)],
scaleByMapSize(1, 4) * numPlayers
);
Engine.SetProgress(34);
yield 34;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
@ -212,7 +213,7 @@ Engine.LoadLibrary("rmbiome");
],
[avoidClasses(clPlayer, 6, clForest, 10, clHill, 0), stayClasses(clLand, 7)],
num);
Engine.SetProgress(38);
yield 38;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -238,7 +239,7 @@ Engine.LoadLibrary("rmbiome");
],
scaleByMapSize(15, 45));
Engine.SetProgress(42);
yield 42;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
@ -247,7 +248,7 @@ Engine.LoadLibrary("rmbiome");
new TerrainPainter(tTier4Terrain),
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clIsland, 0), stayClasses(clLand, 7)],
scaleByMapSize(15, 45));
Engine.SetProgress(46);
yield 46;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -259,7 +260,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)],
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating small stone quarries");
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock);
@ -267,7 +268,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)],
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(54);
yield 54;
g_Map.log("Creating metal mines");
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal);
@ -278,7 +279,7 @@ Engine.LoadLibrary("rmbiome");
],
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(58);
yield 58;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -290,7 +291,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 6)],
scaleByMapSize(16, 262), 50
);
Engine.SetProgress(62);
yield 62;
g_Map.log("Creating large decorative rocks");
group = new SimpleGroup(
@ -302,7 +303,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 6)],
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(66);
yield 66;
g_Map.log("Creating deer");
group = new SimpleGroup(
@ -313,7 +314,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 7)],
3 * numPlayers, 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating sheep");
group = new SimpleGroup(
@ -324,7 +325,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 7)],
3 * numPlayers, 50
);
Engine.SetProgress(74);
yield 74;
g_Map.log("Creating fruit bush");
group = new SimpleGroup(
@ -335,7 +336,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 8, clHill, 1, clFood, 20), stayClasses(clLand, 7)],
randIntInclusive(1, 4) * numPlayers + 2, 50
);
Engine.SetProgress(78);
yield 78;
g_Map.log("Creating fish");
createObjectGroupsDeprecated(
@ -344,7 +345,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clLand, 2, clPlayer, 2, clHill, 0, clFood, 20),
25 * numPlayers, 60
);
Engine.SetProgress(82);
yield 82;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -355,7 +356,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
stragglerTrees);
Engine.SetProgress(86);
yield 86;
const planetm = currentBiome() == "generic/india" ? 8 : 1;
@ -367,7 +368,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0), stayClasses(clLand, 6)],
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
group = new SimpleGroup(
@ -380,7 +381,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 6)],
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(94);
yield 94;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -390,7 +391,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clHill, 1, clPlayer, 1, clDirt, 1), stayClasses(clLand, 6)],
planetm * scaleByMapSize(13, 200), 50
);
Engine.SetProgress(98);
yield 98;
setSkySet(pickRandom(["cirrus", "cumulus", "sunny"]));
setSunRotation(randomAngle());
@ -403,5 +404,5 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2)
]);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
if (g_MapSettings.Biome)
if (mapSettings.Biome)
setSelectedBiome();
else
setBiome("generic/sahara");
@ -117,7 +118,7 @@ Engine.LoadLibrary("rmbiome");
}
// No decoratives
});
Engine.SetProgress(10);
yield 10;
g_Map.log("Creating dune patches");
createAreas(
@ -128,7 +129,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clPatch, 2, clPlayer, 0),
scaleByMapSize(5, 20));
Engine.SetProgress(15);
yield 15;
g_Map.log("Creating sand patches");
createAreas(
@ -139,7 +140,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clPatch, 2, clPlayer, 0),
scaleByMapSize(15, 50));
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating dirt patches");
createAreas(
@ -150,7 +151,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clPatch, 2, clPlayer, 0),
scaleByMapSize(15, 50));
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating oasis");
createArea(
@ -169,7 +170,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(clOasis)
]);
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating oasis wildlife");
let num = Math.round(Math.PI * oasisRadius / 8);
@ -217,7 +218,7 @@ Engine.LoadLibrary("rmbiome");
createObjectGroup(
new SimpleGroup([new SimpleObject(oFish, 1, 1, 0, 1)], true, clFood, fishPosition), 0);
}
Engine.SetProgress(35);
yield 35;
g_Map.log("Creating level 1 hills");
let hillAreas = createAreas(
@ -230,7 +231,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clOasis, 3, clPlayer, 0, clHill1, 10),
scaleByMapSize(10, 20), 100
);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating small level 1 hills");
hillAreas = hillAreas.concat(
@ -245,7 +246,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(15, 25),
100));
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating decorative rocks");
createObjectGroupsByAreasDeprecated(
@ -257,7 +258,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(40, 200), 50,
hillAreas);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating level 2 hills");
createAreasInAreas(
@ -271,7 +272,7 @@ Engine.LoadLibrary("rmbiome");
50,
hillAreas);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating level 3 hills");
createAreas(
@ -284,7 +285,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(15, 25),
50
);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating bumps");
createAreas(
@ -294,7 +295,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(100, 200)
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.5);
@ -309,7 +310,7 @@ Engine.LoadLibrary("rmbiome");
num,
50);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
oMetalSmall,
@ -325,7 +326,7 @@ Engine.LoadLibrary("rmbiome");
clRock,
avoidClasses(clOasis, 2, clForest, 0, clPlayer, scaleByMapSize(15, 25), clHill1, 1, clMetal, 10)
);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating gazelles");
let group = new SimpleGroup([new SimpleObject(oGazelle, 5, 7, 0, 4)], true, clFood);
@ -347,14 +348,14 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clOasis, 1, clForest, 0, clPlayer, 5, clHill1, 1, clFood, 10),
scaleByMapSize(5, 20), 50
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oDatePalm, oSDatePalm],
avoidClasses(clOasis, 1, clForest, 0, clHill1, 1, clPlayer, 4, clMetal, 6, clRock, 6),
clForest,
stragglerTrees);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating bushes");
group = new SimpleGroup([new RandomObject(aBushes, 2, 3, 0, 2)]);
@ -377,5 +378,5 @@ Engine.LoadLibrary("rmbiome");
setWaterType("clap");
setWaterHeight(20);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
globalThis.g_Map = new RandomMap(0, "grass1_spring");
@ -10,5 +11,5 @@ Engine.LoadLibrary("rmgen-common");
placePlayersNomad(g_Map.createTileClass());
g_Map.ExportMap();
return g_Map;
}

View File

@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setBiome("generic/savanna");
@ -43,7 +44,7 @@ Engine.LoadLibrary("rmbiome");
g_Decoratives.bushMedium = "actor|props/flora/bush_desert_dry_a.xml";
g_Decoratives.bushSmall = "actor|props/flora/bush_dry_a.xml";
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightHighlands = heightScale(45);
const heightEden = heightScale(60);
@ -90,26 +91,26 @@ Engine.LoadLibrary("rmbiome");
initTileClasses(["eden", "highlands"]);
g_Map.LoadHeightmapImage("ngorongoro.png", 0, heightMax);
Engine.SetProgress(15);
yield 15;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1));
Engine.SetProgress(25);
yield 25;
g_Map.log("Marking land");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(40);
yield 40;
g_Map.log("Marking eden");
createArea(
new DiskPlacer(fractionToTiles(0.14), mapCenter),
new TileClassPainter(g_TileClasses.eden),
new HeightConstraint(-Infinity, heightEden));
Engine.SetProgress(45);
yield 45;
g_Map.log("Marking highlands");
createArea(
@ -119,7 +120,7 @@ Engine.LoadLibrary("rmbiome");
new HeightConstraint(heightHighlands, Infinity),
avoidClasses(g_TileClasses.eden, 0)
]);
Engine.SetProgress(50);
yield 50;
g_Map.log("Painting cliffs");
createArea(
@ -129,7 +130,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(g_TileClasses.mountain),
],
new SlopeConstraint(2, Infinity));
Engine.SetProgress(55);
yield 55;
if (!isNomad())
{
@ -288,7 +289,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]));
Engine.SetProgress(60);
yield 60;
g_Map.log("Render highlands");
setBiomeHighlands();
@ -399,7 +400,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]));
Engine.SetProgress(70);
yield 70;
g_Map.log("Render eden");
setBiomeEden();
@ -541,7 +542,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["scarce"]
}
]));
Engine.SetProgress(80);
yield 80;
placePlayersNomad(
g_Map.createTileClass(),
@ -571,5 +572,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tSnowA = ["polar_snow_b"];
const tSnowB = "polar_ice_snow";
@ -78,7 +79,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(15);
yield 15;
paintRiver({
"parallel": true,
@ -138,7 +139,7 @@ Engine.LoadLibrary("rmgen-common");
paintTerrainBasedOnHeight(1, 2.8, 1, tShoreBlend);
paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating hills");
createAreas(
@ -180,7 +181,7 @@ Engine.LoadLibrary("rmgen-common");
[avoidClasses(clRock, 6), stayClasses(clWater, 4)],
scaleByMapSize(4, 16),
100);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -237,7 +238,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
scaleByMapSize(8, 32), 100
);
Engine.SetProgress(80);
yield 80;
createStragglerTrees(
[oPine],
@ -255,7 +256,7 @@ Engine.LoadLibrary("rmgen-common");
3 * numPlayers, 50
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating sheep");
group = new SimpleGroup(
@ -302,5 +303,5 @@ Engine.LoadLibrary("rmgen-common");
setPPEffect("hdr");
setSkySet("fog");
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tSand = [
"desert_sand_dunes_100",
@ -138,7 +139,7 @@ Engine.LoadLibrary("rmgen-common");
createObjectGroup(new SimpleGroup([new SimpleObject(aReedsA, 1, 3, 0, 0)], true, undefined,
reedsPosition), 0);
}
Engine.SetProgress(20);
yield 20;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -169,7 +170,7 @@ Engine.LoadLibrary("rmgen-common");
// Starting trees were set above
// No decoratives
});
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating central oasis");
createArea(
@ -182,7 +183,7 @@ Engine.LoadLibrary("rmgen-common");
new TileClassPainter(clOasis)
]);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating bumps");
createAreas(
@ -208,7 +209,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 10, clBaseResource, 6, clOasis, 4, clForest, 4),
scaleByMapSize(15, 50));
Engine.SetProgress(50);
yield 50;
if (mapSize > 150 && randBool())
{
@ -267,7 +268,7 @@ Engine.LoadLibrary("rmgen-common");
clHill, 1),
scaleByMapSize(6, 25), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup([new SimpleObject(aRock, 2, 4, 0, 2)], true, undefined);
@ -280,7 +281,7 @@ Engine.LoadLibrary("rmgen-common");
clFood, 20),
30, scaleByMapSize(10, 50));
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating camels");
group = new SimpleGroup(
@ -291,7 +292,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clOasis, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
1 * numPlayers, 50
);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating gazelles");
group = new SimpleGroup(
@ -302,7 +303,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clOasis, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
1 * numPlayers, 50
);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating oasis animals");
for (let i = 0; i < scaleByMapSize(5, 30); ++i)
@ -324,7 +325,7 @@ Engine.LoadLibrary("rmgen-common");
animalPos),
0);
}
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -396,5 +397,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterMurkiness(0.5);
setAmbientColor(0.501961, 0.501961, 0.501961);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,8 +2,9 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
if (g_MapSettings.Biome)
if (mapSettings.Biome)
setSelectedBiome();
else
// TODO: Replace ugly default for atlas by a dropdown
@ -90,7 +91,7 @@ Engine.LoadLibrary("rmbiome");
}
// No decoratives
});
Engine.SetProgress(10);
yield 10;
g_Map.log("Creating rock patches");
createAreas(
@ -101,7 +102,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clPatch, 2, clPlayer, 0),
scaleByMapSize(5, 20));
Engine.SetProgress(15);
yield 15;
g_Map.log("Creating secondary rock patches");
createAreas(
@ -112,7 +113,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clPatch, 2, clPlayer, 4),
scaleByMapSize(15, 50));
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating dirt patches");
createAreas(
@ -127,7 +128,7 @@ Engine.LoadLibrary("rmbiome");
],
avoidClasses(clPatch, 2, clPlayer, 4),
scaleByMapSize(15, 50));
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating centeral plateau");
createArea(
@ -145,7 +146,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(clCP)
],
avoidClasses(clPlayer, 18));
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating hills");
for (let i = 0; i < scaleByMapSize(20, 80); ++i)
@ -160,7 +161,7 @@ Engine.LoadLibrary("rmbiome");
tCliff,
clHill,
14);
Engine.SetProgress(35);
yield 35;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
@ -187,7 +188,7 @@ Engine.LoadLibrary("rmbiome");
clHill, 1,
clCP, 1),
num);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating stone mines");
createObjectGroupsDeprecated(
@ -265,7 +266,7 @@ Engine.LoadLibrary("rmbiome");
5 * scaleByMapSize(5, 30), 50
);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -278,7 +279,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(16, 262), 50
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -291,7 +292,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating goat");
group = new SimpleGroup(
@ -333,7 +334,7 @@ Engine.LoadLibrary("rmbiome");
3 * numPlayers, 50
);
Engine.SetProgress(90);
yield 90;
createStragglerTrees(
[oOak],
@ -350,5 +351,5 @@ Engine.LoadLibrary("rmbiome");
placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tCity = "medit_city_pavement";
const tCityPlaza = "medit_city_pavement";
@ -110,7 +111,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aBush1
}
});
Engine.SetProgress(30);
yield 30;
paintRiver({
"parallel": true,
@ -124,7 +125,7 @@ Engine.LoadLibrary("rmgen-common");
"meanderShort": 20,
"meanderLong": 0
});
Engine.SetProgress(40);
yield 40;
paintTileClassBasedOnHeight(-Infinity, heightLand, Elevation_ExcludeMin_ExcludeMax, clWater);
paintTerrainBasedOnHeight(-Infinity, heightShore, Elevation_ExcludeMin_ExcludeMax, tWater);
@ -161,7 +162,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 20, clForest, 10, clWater, 1, clHill, 1, clBaseResource, 3),
num,
50);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -175,7 +176,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clForest, 0, clGrass, 5, clPlayer, 10, clWater, 4, clDirt, 5, clHill, 1),
scaleByMapSize(15, 45));
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -189,7 +190,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clForest, 0, clDirt, 5, clPlayer, 10, clWater, 4, clGrass, 5, clHill, 1),
scaleByMapSize(15, 45));
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating cyprus");
createAreas(
@ -249,7 +250,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -277,7 +278,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clPlayer, 0, clHill, 1),
scaleByMapSize(40, 360), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating fish");
group = new SimpleGroup([new SimpleObject(oFish, 1, 3, 2, 6)], true, clFood);
@ -316,7 +317,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clForest, 0, clPlayer, 15, clHill, 1, clFood, 7),
randIntInclusive(1, 4) * numPlayers + 2, 50
);
Engine.SetProgress(90);
yield 90;
const stragglerTreeConfig = [
[1, avoidClasses(clForest, 0, clWater, 4, clPlayer, 8, clMetal, 6, clHill, 1)],
@ -355,5 +356,5 @@ Engine.LoadLibrary("rmgen-common");
placePlayersNomad(clPlayer,
avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap(mapSettings)
{
const tPrimary = ["alpine_snow_01"];
const tSecondary = "alpine_snow_02";
@ -84,7 +85,7 @@ Engine.LoadLibrary("rmgen-common");
"types": treasures
},
});
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating central lake");
createArea(
@ -103,7 +104,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 20));
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating small lakes");
createAreas(
@ -116,17 +117,17 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 20),
scaleByMapSize(10, 16),
1);
Engine.SetProgress(50);
yield 50;
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
Engine.SetProgress(60);
yield 60;
createHills(
[tSecondary, tSecondary, tSecondary],
avoidClasses(clPlayer, 20, clHill, 35),
clHill,
scaleByMapSize(20, 240));
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating glacier patches");
createPatches(
@ -135,7 +136,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating stone mines");
createMines(
@ -156,7 +157,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 3, clPlayer, 20, clMetal, 18, clRock, 5, clHill, 2),
clMetal);
Engine.SetProgress(75);
yield 75;
createDecoration(
[
@ -182,7 +183,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapAreaAbsolute(8)
],
[stayClasses(clWater, 4), avoidClasses(clHill, 2)]);
Engine.SetProgress(80);
yield 80;
createFood(
[
@ -221,7 +222,7 @@ Engine.LoadLibrary("rmgen-common");
],
[avoidClasses(clFood, 12, clHill, 5), stayClasses(clWater, 6)],
clFood);
Engine.SetProgress(85);
yield 85;
// Create trigger points where wolves spawn
createObjectGroupsDeprecated(
@ -230,9 +231,9 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2, clMetal, 4, clRock, 4, clPlayer, 15, clHill, 2, clArcticWolf, 20),
1000,
100);
Engine.SetProgress(95);
yield 95;
if (g_MapSettings.Daytime !== undefined ? g_MapSettings.Daytime == "dawn" : randBool(1/3))
if (mapSettings.Daytime !== undefined ? mapSettings.Daytime == "dawn" : randBool(1/3))
{
setSkySet("sunset 1");
setSunColor(0.8, 0.7, 0.6);
@ -276,5 +277,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.45);
setPPBloom(0.4);
g_Map.ExportMap();
return g_Map;
}

View File

@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
setBiome("generic/aegean");
@ -78,7 +79,7 @@ Engine.LoadLibrary("rmbiome");
"actor|props/special/eyecandy/vase_rome_a.xml"
];
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightSeaGround = heightScale(-30);
const heightDockMin = heightScale(-6);
@ -95,34 +96,34 @@ Engine.LoadLibrary("rmbiome");
initTileClasses(["decorative", "lava", "dock"]);
g_Map.LoadHeightmapImage("pompeii.png", 0, heightMountains);
Engine.SetProgress(15);
yield 15;
g_Map.log("Lowering sea ground");
createArea(
new MapBoundsPlacer(),
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(20);
yield 20;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, 0.8, 1));
Engine.SetProgress(25);
yield 25;
g_Map.log("Marking water");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.water),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(30);
yield 30;
g_Map.log("Marking land");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land),
avoidClasses(g_TileClasses.water, 0));
Engine.SetProgress(35);
yield 35;
g_Map.log("Painting cliffs");
createArea(
@ -135,7 +136,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(g_TileClasses.water, 2),
new SlopeConstraint(2, Infinity)
]);
Engine.SetProgress(45);
yield 45;
g_Map.log("Painting lava");
const areaVesuv = createArea(
@ -148,7 +149,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(g_TileClasses.lava)
],
new HeightConstraint(heightLavaVesuv, Infinity));
Engine.SetProgress(46);
yield 46;
g_Map.log("Adding smoke");
createObjectGroupsByAreas(
@ -163,7 +164,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(4, 12),
20,
[areaVesuv]);
Engine.SetProgress(48);
yield 48;
if (!isNomad())
{
@ -184,7 +185,7 @@ Engine.LoadLibrary("rmbiome");
position),
new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 6));
}
Engine.SetProgress(50);
yield 50;
g_Map.log("Placing docks");
const dockTypes = [
@ -208,7 +209,7 @@ Engine.LoadLibrary("rmbiome");
],
0,
50);
Engine.SetProgress(55);
yield 55;
addElements([
{
@ -239,7 +240,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]);
Engine.SetProgress(60);
yield 60;
addElements(shuffleArray([
{
@ -290,7 +291,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]));
Engine.SetProgress(65);
yield 65;
addElements(shuffleArray([
{
@ -337,7 +338,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]));
Engine.SetProgress(70);
yield 70;
g_Map.log("Adding gatherable stone statues");
createObjectGroups(
@ -357,7 +358,7 @@ Engine.LoadLibrary("rmbiome");
),
5 * scaleByMapSize(1, 4),
50);
Engine.SetProgress(75);
yield 75;
g_Map.log("Adding stone ruins");
createObjectGroups(
@ -380,7 +381,7 @@ Engine.LoadLibrary("rmbiome");
),
scaleByMapSize(1, 4),
20);
Engine.SetProgress(80);
yield 80;
g_Map.log("Adding shipwrecks");
createObjectGroups(
@ -395,7 +396,7 @@ Engine.LoadLibrary("rmbiome");
],
scaleByMapSize(1, 5),
20);
Engine.SetProgress(85);
yield 85;
g_Map.log("Adding more statues");
createObjectGroups(
@ -412,7 +413,7 @@ Engine.LoadLibrary("rmbiome");
),
scaleByMapSize(3, 15),
30);
Engine.SetProgress(90);
yield 90;
g_Map.log("Adding skeletons");
createObjectGroups(
@ -431,7 +432,7 @@ Engine.LoadLibrary("rmbiome");
),
scaleByMapSize(1, 5),
50);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(
g_Map.createTileClass(),
@ -468,5 +469,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -231,7 +232,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating the pyreneans");
const mountainVec = new Vector2D(mountainLength, 0).rotate(-startAngle);
@ -239,7 +240,7 @@ Engine.LoadLibrary("rmgen-common");
const mountainDirection = mountainVec.clone().normalize();
createPyreneans();
paintTileClassBasedOnHeight(heightPyreneans, Infinity, Elevation_ExcludeMin_ExcludeMax, clPyrenneans);
Engine.SetProgress(40);
yield 40;
/**
* Generates the mountain peak noise.
@ -310,7 +311,7 @@ Engine.LoadLibrary("rmgen-common");
"tileClass": clPass
});
}
Engine.SetProgress(50);
yield 50;
g_Map.log("Smoothing the pyreneans");
createArea(
@ -332,7 +333,7 @@ Engine.LoadLibrary("rmgen-common");
new MapBoundsPlacer(),
new SmoothingPainter(5, 0.9, 1),
new NearTileClassConstraint(clWater, 5));
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating hills");
createAreas(
@ -359,7 +360,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 20, clPyrenneans, 0, clForest, 7, clWater, 2),
num);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating lone trees");
num = scaleByMapSize(80, 400);
@ -435,7 +436,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clForest, 0, clPyrenneans, 5, clHill, 0, clDirt, 5, clPlayer, 6),
scaleByMapSize(15, 45));
Engine.SetProgress(70);
yield 70;
// making more in dirt areas so as to appear different
g_Map.log("Creating small grass tufts");
@ -455,7 +456,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clHill, 2, clPlayer, 5, clDirt, 1, clForest, 0, clPyrenneans, 2),
scaleByMapSize(13, 200));
createObjectGroupsDeprecated(group, 0, stayClasses(clDirt, 1), scaleByMapSize(13, 200), 10);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -466,7 +467,7 @@ Engine.LoadLibrary("rmgen-common");
createObjectGroupsDeprecated(group, 0,
avoidClasses(clWater, 2, clPlayer, 1, clPyrenneans, 1), scaleByMapSize(13, 200), 50);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -489,7 +490,7 @@ Engine.LoadLibrary("rmgen-common");
clMetal, 10)
);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup([new SimpleObject(aRockMedium, 1, 3, 0, 1)], true);
@ -505,7 +506,7 @@ Engine.LoadLibrary("rmgen-common");
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 0),
scaleByMapSize(8, 131), 50);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating deer");
group = new SimpleGroup([new SimpleObject(oDeer, 5, 7, 0, 4)], true, clFood);
@ -546,5 +547,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterMurkiness(0.83);
setWaterHeight(heightWaterLevel);
g_Map.ExportMap();
return g_Map;
}

View File

@ -21,6 +21,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
setBiome("generic/alpine");
@ -50,7 +51,7 @@ Engine.LoadLibrary("rmbiome");
g_Decoratives.reeds = "actor|props/flora/reeds_pond_lush_a.xml";
g_Decoratives.lillies = "actor|props/flora/water_lillies.xml";
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightReedsMin = heightScale(-2);
const heightShallow = heightScale(-1);
@ -67,13 +68,13 @@ Engine.LoadLibrary("rmbiome");
initTileClasses(["shoreline", "shallows"]);
g_Map.LoadHeightmapImage("ratumacos.png", -3, 20);
Engine.SetProgress(15);
yield 15;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, 0.1, 1));
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating shallows");
for (let i = 0; i < scaleByMapSize(5, 12); ++i)
@ -101,14 +102,14 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(g_TileClasses.water)
],
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(30);
yield 30;
g_Map.log("Marking land");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land),
avoidClasses(g_TileClasses.water, 0));
Engine.SetProgress(35);
yield 35;
g_Map.log("Painting shoreline");
createArea(
@ -118,7 +119,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(g_TileClasses.shoreline)
],
new HeightConstraint(heightWaterLevel, heightShoreline));
Engine.SetProgress(40);
yield 40;
placePlayerBases({
"PlayerPlacement": playerPlacementRiver(riverAngle, fractionToTiles(0.6)),
@ -315,7 +316,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["tons"]
}
]));
Engine.SetProgress(80);
yield 80;
createDecoration(
[
@ -328,7 +329,7 @@ Engine.LoadLibrary("rmbiome");
],
new HeightConstraint(heightReedsMin, heightShoreline)
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Placing fish");
addElements([
@ -343,7 +344,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["few"]
}
]);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(
g_Map.createTileClass(),
@ -379,5 +380,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -20,6 +20,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -54,7 +55,7 @@ Engine.LoadLibrary("rmbiome");
g_Decoratives.bushSmall = "actor|props/flora/bush_medit_sm_dry.xml";
g_Decoratives.dust = "actor|particle/dust_storm_reddish.xml";
const heightScale = num => num * g_MapSettings.Size / 320;
const heightScale = num => num * mapSettings.Size / 320;
const heightSeaGround = heightScale(-4);
const heightReedsMin = heightScale(-2);
@ -69,34 +70,34 @@ Engine.LoadLibrary("rmbiome");
initTileClasses(["shoreline"]);
g_Map.LoadHeightmapImage("red_sea.png", 0, 25);
Engine.SetProgress(15);
yield 15;
g_Map.log("Lowering sea ground");
createArea(
new MapBoundsPlacer(),
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 2),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(20);
yield 20;
g_Map.log("Smoothing heightmap");
createArea(
new MapBoundsPlacer(),
new SmoothingPainter(1, scaleByMapSize(0.1, 0.5), 1));
Engine.SetProgress(25);
yield 25;
g_Map.log("Marking water");
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.water),
new HeightConstraint(-Infinity, heightWaterLevel));
Engine.SetProgress(30);
yield 30;
g_Map.log("Marking land");
createArea(
new DiskPlacer(fractionToTiles(0.5), mapCenter),
new TileClassPainter(g_TileClasses.land),
avoidClasses(g_TileClasses.water, 0));
Engine.SetProgress(35);
yield 35;
g_Map.log("Painting shoreline");
createArea(
@ -106,7 +107,7 @@ Engine.LoadLibrary("rmbiome");
new TileClassPainter(g_TileClasses.shoreline)
],
new HeightConstraint(-Infinity, heightShoreline));
Engine.SetProgress(40);
yield 40;
g_Map.log("Painting cliffs");
createArea(
@ -119,7 +120,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(g_TileClasses.water, 2),
new SlopeConstraint(2, Infinity)
]);
Engine.SetProgress(45);
yield 45;
if (!isNomad())
{
@ -188,7 +189,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["few"]
}
]));
Engine.SetProgress(60);
yield 60;
// Ensure initial forests
addElements([{
@ -206,7 +207,7 @@ Engine.LoadLibrary("rmbiome");
"mixes": ["similar"],
"amounts": ["tons"]
}]);
Engine.SetProgress(65);
yield 65;
addElements(shuffleArray([
{
@ -266,7 +267,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]));
Engine.SetProgress(70);
yield 70;
addElements([
{
@ -296,7 +297,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["many"]
}
]);
Engine.SetProgress(80);
yield 80;
g_Map.log("Painting dirt patches");
const dirtPatches = [
@ -326,7 +327,7 @@ Engine.LoadLibrary("rmbiome");
dirtPatch.count,
g_TileClasses.dirt,
0.5);
Engine.SetProgress(85);
yield 85;
g_Map.log("Adding reeds");
createObjectGroups(
@ -341,7 +342,7 @@ Engine.LoadLibrary("rmbiome");
new HeightConstraint(heightReedsMin, heightReedsMax),
scaleByMapSize(10, 25),
5);
Engine.SetProgress(90);
yield 90;
g_Map.log("Adding dust");
createObjectGroups(
@ -353,7 +354,7 @@ Engine.LoadLibrary("rmbiome");
],
scaleByMapSize(10, 50),
20);
Engine.SetProgress(95);
yield 95;
placePlayersNomad(
g_Map.createTileClass(),
@ -390,5 +391,5 @@ Engine.LoadLibrary("rmbiome");
setPPSaturation(0.42);
setPPBloom(0.23);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"];
const tForestFloor = "temp_plants_bog";
@ -80,7 +81,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(15);
yield 15;
g_Map.log("Creating bumps");
createAreas(
@ -114,7 +115,7 @@ Engine.LoadLibrary("rmgen-common");
0,
stayClasses(clWater, 1),
scaleByMapSize(400, 2000), 100);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating bumps");
createAreas(
@ -141,7 +142,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 20, clWater, 0, clForest, 10),
num);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating mud patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -179,7 +180,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -192,7 +193,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(16, 262), 50
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating large decorative rocks");
group = new SimpleGroup(
@ -205,7 +206,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating deer");
group = new SimpleGroup(
@ -227,7 +228,7 @@ Engine.LoadLibrary("rmgen-common");
3 * numPlayers, 50
);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating rabbit");
group = new SimpleGroup(
@ -259,7 +260,7 @@ Engine.LoadLibrary("rmgen-common");
randIntInclusive(1, 4) * numPlayers + 2, 50
);
Engine.SetProgress(80);
yield 80;
createStragglerTrees(
[oOak, oBeech],
@ -267,7 +268,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
stragglerTrees);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating small grass tufts");
createObjectGroupsDeprecated(
@ -276,7 +277,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 2, clPlayer, 13, clDirt, 0),
scaleByMapSize(13, 200));
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
createObjectGroupsDeprecated(
@ -289,7 +290,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 3, clPlayer, 13, clDirt, 1, clForest, 0),
scaleByMapSize(13, 200));
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
createObjectGroupsDeprecated(
@ -321,5 +322,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.44);
setPPBloom(0.3);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = [
"tropic_grass_c",
@ -126,7 +127,7 @@ Engine.LoadLibrary("rmgen-common");
]);
}
}
Engine.SetProgress(20);
yield 20;
const playerPosition = playerPlacementLine(startAngle, mapCenter,
fractionToTiles(1 - stripWidthsLeft[2][0] - stripWidthsLeft[2][1]));
@ -174,7 +175,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(35);
yield 35;
const areaWater = createArea(
new HeightPlacer(Elevation_IncludeMin_ExcludeMax, -Infinity, heightWaterLevel),
@ -191,7 +192,7 @@ Engine.LoadLibrary("rmgen-common");
new HeightPlacer(Elevation_IncludeMin_ExcludeMax, heightShore, heightShoreBlend),
new TerrainPainter(tShoreBlend));
Engine.SetProgress(40);
yield 40;
if (!isNomad())
{
@ -239,7 +240,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(1, 5));
createBumps(avoidClasses(clPlayer, 8, clWater, 2), scaleByMapSize(20, 150), 2, 8, 4, 1, 4);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(1000, 4000, 0.7);
@ -283,7 +284,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
stragglerTrees);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -413,7 +414,7 @@ Engine.LoadLibrary("rmgen-common");
clBaseResource, 4,
clDirt, 0),
scaleByMapSize(100, 500));
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating large grass tufts");
createObjectGroups(
@ -431,7 +432,7 @@ Engine.LoadLibrary("rmgen-common");
clDirt, 1,
clForest, 0),
scaleByMapSize(100, 500));
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating bushes");
createObjectGroups(
@ -492,7 +493,7 @@ Engine.LoadLibrary("rmgen-common");
clFood, 20),
2 * numPlayers,
20);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating berry bush");
createObjectGroups(
@ -540,5 +541,5 @@ Engine.LoadLibrary("rmgen-common");
setPPBloom(0.6);
setSkySet("stratus");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -163,7 +164,7 @@ Engine.LoadLibrary("rmbiome");
}
});
}
Engine.SetProgress(40);
yield 40;
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
@ -181,7 +182,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -199,7 +200,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating metal mines");
createBalancedMetalMines(
@ -217,7 +218,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clWater, 3, clForest, 1, clPlayer, scaleByMapSize(20, 35), clHill, 1, clMetal, 10)
);
Engine.SetProgress(65);
yield 65;
let planetm = 1;
@ -252,7 +253,7 @@ Engine.LoadLibrary("rmbiome");
],
stayClasses(clShallow, 0));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -286,7 +287,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clFood, 20), stayClasses(clWater, 6)],
clFood);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -300,5 +301,5 @@ Engine.LoadLibrary("rmbiome");
setWaterWaviness(3.0);
setWaterType("lake");
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tPrimary = "desert_sand_dunes_100";
const tCity = "desert_city_tile";
@ -86,7 +87,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aBush1
}
});
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating oases");
const oasisRadius = fractionToTiles(scaleByMapSize(0.19, 0.22));
@ -103,7 +104,7 @@ Engine.LoadLibrary("rmgen-common");
new TileClassPainter(clWater)
]);
}
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -118,7 +119,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clForest, 0, clPlayer, 0, clWater, 1, clDirt, 5),
scaleByMapSize(15, 45));
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -133,7 +134,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clForest, 0, clDirt, 5, clPlayer, 0, clWater, 1),
scaleByMapSize(15, 45));
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -253,5 +254,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterType("clap");
setWaterMurkiness(0.5);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tPrimary = "savanna_grass_a";
const tGrass2 = "savanna_grass_b";
@ -78,7 +79,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating big patches");
const patches = [tGrass2, tGrass3];
@ -113,7 +114,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clPlayer, 24),
scaleByMapSize(1, 3));
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
for (let i = 0; i < scaleByMapSize(12, 30); ++i)
@ -133,7 +134,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(2, 8), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -146,7 +147,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(200, 1200), 1
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating gazelle");
group = new SimpleGroup(
@ -208,7 +209,7 @@ Engine.LoadLibrary("rmgen-common");
randIntInclusive(1, 4) * numPlayers + 2, 50
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oBaobab],
@ -244,5 +245,5 @@ Engine.LoadLibrary("rmgen-common");
setPPContrast(0.57031);
setPPBloom(0.34);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = "savanna_grass_a";
const tForestFloor = "savanna_forestfloor_a";
@ -94,7 +95,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aGrassShort
}
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating rivers");
const riverStart = distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers,
@ -198,7 +199,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 20, clForest, 10, clHill, 0, clWater, 2),
num
);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -224,7 +225,7 @@ Engine.LoadLibrary("rmgen-common");
new TerrainPainter(tGrassPatch),
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clPlayer, 20),
scaleByMapSize(15, 45));
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -251,7 +252,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -275,7 +276,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating wildebeest");
group = new SimpleGroup(
@ -287,7 +288,7 @@ Engine.LoadLibrary("rmgen-common");
3 * numPlayers, 50
);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating gazelle");
group = new SimpleGroup(
@ -349,7 +350,7 @@ Engine.LoadLibrary("rmgen-common");
randIntInclusive(1, 4) * numPlayers + 2, 50
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oBaobab, oBaobab, oBaobab, oFig],
@ -367,7 +368,7 @@ Engine.LoadLibrary("rmgen-common");
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
group = new SimpleGroup(
@ -381,7 +382,7 @@ Engine.LoadLibrary("rmgen-common");
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -407,5 +408,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterWaviness(0.5);
setWaterType("clap");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("heightmap");
function* GenerateMap()
{
setSkySet("fog");
setFogFactor(0.35);
@ -306,7 +307,7 @@ Engine.LoadLibrary("heightmap");
false);
}
Engine.SetProgress(50);
yield 50;
g_Map.log("Painting textures");
const betweenShallowAndShore = (heighLimits[3] + heighLimits[2]) / 2;
@ -321,7 +322,7 @@ Engine.LoadLibrary("heightmap");
new LayeredPainter([tWaterBorder, tWater], [2]));
paintTileClassBasedOnHeight(heightRange.min, heighLimits[2], 1, clWater);
Engine.SetProgress(60);
yield 60;
g_Map.log("Painting paths");
const pathBlending = numPlayers <= 4;
@ -340,7 +341,7 @@ Engine.LoadLibrary("heightmap");
],
avoidClasses(clPath, 0, clOpen, 0, clWater, 4, clBaseResource, 4));
}
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating decoration");
createDecoration(
@ -360,7 +361,7 @@ Engine.LoadLibrary("heightmap");
],
avoidClasses(clForest, 1, clPlayer, 0, clPath, 3, clWater, 3));
Engine.SetProgress(80);
yield 80;
g_Map.log("Growing fish");
createFood(
@ -373,7 +374,7 @@ Engine.LoadLibrary("heightmap");
[avoidClasses(clFood, 5), stayClasses(clWater, 4)],
clFood);
Engine.SetProgress(85);
yield 85;
g_Map.log("Planting reeds");
const types = [aReeds];
@ -385,7 +386,7 @@ Engine.LoadLibrary("heightmap");
scaleByMapSize(1, 2) * 1000,
1000);
Engine.SetProgress(90);
yield 90;
g_Map.log("Planting trees");
for (let x = 0; x < mapSize; x++)
@ -426,7 +427,7 @@ Engine.LoadLibrary("heightmap");
placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clFood, 2, clMetal, 4, clRock, 4));
Engine.SetProgress(100);
yield 100;
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tMainTerrain = "alpine_snow_a";
const tTier1Terrain = "snow rough";
@ -95,10 +96,10 @@ Engine.LoadLibrary("rmgen-common");
"meanderShort": 40,
"meanderLong": 20
});
Engine.SetProgress(10);
yield 10;
paintTileClassBasedOnHeight(-Infinity, heightShoreUpper, Elevation_ExcludeMin_ExcludeMax, clRiver);
Engine.SetProgress(15);
yield 15;
createTributaryRivers(
startAngle + Math.PI / 2,
@ -111,7 +112,7 @@ Engine.LoadLibrary("rmgen-common");
undefined,
avoidClasses(clPlayer, 4));
Engine.SetProgress(25);
yield 25;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -151,7 +152,7 @@ Engine.LoadLibrary("rmgen-common");
"maxDist": 12
}
});
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating pools");
createAreas(
@ -160,7 +161,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 20),
scaleByMapSize(6, 20));
Engine.SetProgress(40);
yield 40;
createBumps(avoidClasses(clPlayer, 2));
@ -190,7 +191,7 @@ Engine.LoadLibrary("rmgen-common");
tShore);
paintTerrainBasedOnHeight(heightSnowline, Infinity, Elevation_ExcludeMin_ExcludeMax, tMainTerrain);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -214,7 +215,7 @@ Engine.LoadLibrary("rmgen-common");
clForest,
stragglerTrees);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
// Allow mines on the bumps at the river
@ -237,7 +238,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clForest, 4, clWater, 1, clPlayer, 20, clMetal, 15, clRock, 5, clHill, 1),
clMetal);
Engine.SetProgress(65);
yield 65;
createDecoration(
[
@ -256,7 +257,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 2, clForest, 0, clPlayer, 20, clHill, 1));
Engine.SetProgress(70);
yield 70;
createFood(
[
@ -275,7 +276,7 @@ Engine.LoadLibrary("rmgen-common");
],
avoidClasses(clWater, 3, clPlayer, 20, clHill, 1, clFood, 10));
Engine.SetProgress(75);
yield 75;
createFood(
[
@ -342,5 +343,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.42);
setPPBloom(0.6);
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -254,7 +255,7 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TerrainPainter(tCliff),
new SlopeConstraint(2, Infinity));
Engine.SetProgress(30);
yield 30;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -289,7 +290,7 @@ Engine.LoadLibrary("rmbiome");
"template": aGrassShort
}
});
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
@ -310,7 +311,7 @@ Engine.LoadLibrary("rmbiome");
],
[avoidClasses(clPlayer, 6, clForest, 10), stayClasses(clLand, 4)],
num);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -337,7 +338,7 @@ Engine.LoadLibrary("rmbiome");
5*scaleByMapSize(4, 16), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
createAreas(
@ -385,7 +386,7 @@ Engine.LoadLibrary("rmbiome");
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating deer");
group = new SimpleGroup(
@ -397,7 +398,7 @@ Engine.LoadLibrary("rmbiome");
3 * numPlayers, 50
);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating sheep");
group = new SimpleGroup(
@ -418,7 +419,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clPlayer, 10, clFood, 20), stayClasses(clLand, 4)],
3 * numPlayers, 50
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -439,7 +440,7 @@ Engine.LoadLibrary("rmbiome");
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
group = new SimpleGroup(
@ -452,7 +453,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 4)],
planetm * scaleByMapSize(13, 200)
);
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating bushes");
group = new SimpleGroup(
@ -474,5 +475,5 @@ Engine.LoadLibrary("rmbiome");
setSunRotation(randomAngle());
setSunElevation(Math.PI * randFloat(1/5, 1/3));
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -16,7 +17,7 @@ Engine.LoadLibrary("rmbiome");
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(20);
yield 20;
const [playerIDs, playerPosition] =
createBases(
@ -29,7 +30,7 @@ Engine.LoadLibrary("rmbiome");
false);
markPlayerAvoidanceArea(playerPosition, defaultPlayerBaseRadius());
Engine.SetProgress(30);
yield 30;
addElements(shuffleArray([
{
@ -112,7 +113,7 @@ Engine.LoadLibrary("rmbiome");
if (!isNomad())
createBluffsPassages(playerPosition);
Engine.SetProgress(60);
yield 60;
addElements([
{
@ -146,7 +147,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["normal"]
}
]);
Engine.SetProgress(70);
yield 70;
addElements(shuffleArray([
{
@ -201,7 +202,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": ["few", "normal", "many", "tons"]
}
]));
Engine.SetProgress(80);
yield 80;
addElements(shuffleArray([
{
@ -259,7 +260,7 @@ Engine.LoadLibrary("rmbiome");
"amounts": g_AllAmounts
}
]));
Engine.SetProgress(90);
yield 90;
placePlayersNomad(
g_TileClasses.player,
@ -272,5 +273,5 @@ Engine.LoadLibrary("rmbiome");
g_TileClasses.mountain, 4,
g_TileClasses.animals, 2));
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap()
{
setSelectedBiome();
@ -74,7 +75,7 @@ Engine.LoadLibrary("rmbiome");
new SmoothElevationPainter(ELEVATION_SET, heightLand, 3),
new TileClassPainter(clLand)
]);
Engine.SetProgress(10);
yield 10;
const [playerIDs, playerPosition, playerAngle, startAngle] =
playerPlacementCircle(fractionToTiles(0.3));
@ -125,12 +126,12 @@ Engine.LoadLibrary("rmbiome");
clPlayer.add(attacker[i]);
clPlayer.add(halfway[i]);
}
Engine.SetProgress(20);
yield 20;
paintTerrainBasedOnHeight(heightLand + 0.12, heightHill - 1, Elevation_IncludeMin_ExcludeMax, tCliff);
paintTileClassBasedOnHeight(heightLand + 0.12, heightHill - 1, Elevation_IncludeMin_ExcludeMax,
clHill);
Engine.SetProgress(30);
yield 30;
const landConstraint = new StaticConstraint(stayClasses(clLand, 5));
@ -141,10 +142,10 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clPlayer, 5, clHill, 5), landConstraint],
scaleByMapSize(40, 140),
100);
Engine.SetProgress(35);
yield 35;
createBumps(landConstraint);
Engine.SetProgress(40);
yield 40;
const hillConstraint = new AndConstraint(
[
@ -161,7 +162,7 @@ Engine.LoadLibrary("rmbiome");
[hillConstraint, landConstraint],
clHill,
scaleByMapSize(10, 60) * numPlayers);
Engine.SetProgress(45);
yield 45;
createHills(
[tCliff, tCliff, tHill],
@ -173,7 +174,7 @@ Engine.LoadLibrary("rmbiome");
undefined,
undefined,
55);
Engine.SetProgress(50);
yield 50;
const [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
createForests(
@ -186,7 +187,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
forestTrees);
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating dirt patches");
createLayeredPatches(
@ -196,7 +197,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12, clWomen, 5), landConstraint],
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating grass patches");
createPatches(
@ -205,7 +206,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12, clWomen, 5), landConstraint],
scaleByMapSize(15, 45),
clDirt);
Engine.SetProgress(80);
yield 80;
let planetm = 1;
if (currentBiome() == "generic/india")
@ -227,7 +228,7 @@ Engine.LoadLibrary("rmbiome");
planetm * scaleByMapAreaAbsolute(13)
],
[avoidClasses(clForest, 0, clPlayer, 0, clHill, 0), landConstraint]);
Engine.SetProgress(90);
yield 90;
createStragglerTrees(
[oTree1, oTree2, oTree4, oTree3],
@ -235,7 +236,7 @@ Engine.LoadLibrary("rmbiome");
clForest,
stragglerTrees);
Engine.SetProgress(95);
yield 95;
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tMainDirt = ["desert_dirt_rocks_1", "desert_dirt_cracks"];
const tForestFloor1 = "forestfloor_dirty";
@ -76,7 +77,7 @@ Engine.LoadLibrary("rmgen-common");
new TileClassPainter(clGrass)
]);
}
Engine.SetProgress(10);
yield 10;
placePlayerBases({
"PlayerPlacement": [playerIDs, playerPosition],
@ -106,7 +107,7 @@ Engine.LoadLibrary("rmgen-common");
}
// No decoratives
});
Engine.SetProgress(20);
yield 20;
g_Map.log("Creating bumps");
createAreas(
@ -126,7 +127,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 3, clGrass, 1, clHill, 10),
scaleByMapSize(1, 3) * numPlayers * 3);
Engine.SetProgress(25);
yield 25;
g_Map.log("Creating forests");
const [forestTrees, stragglerTrees] = getTreeCounts(400, 2000, 0.7);
@ -150,7 +151,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 1, clGrass, 1, clForest, 10, clHill, 1),
num);
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
@ -159,7 +160,7 @@ Engine.LoadLibrary("rmgen-common");
new LayeredPainter([tSecondaryDirt, tDirt], [1]),
avoidClasses(clHill, 0, clForest, 0, clPlayer, 8, clGrass, 1),
scaleByMapSize(50, 90));
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating big patches");
for (const size of [scaleByMapSize(6, 30), scaleByMapSize(10, 50), scaleByMapSize(16, 70)])
@ -168,7 +169,7 @@ Engine.LoadLibrary("rmgen-common");
new LayeredPainter([tSecondaryDirt, tDirt], [1]),
avoidClasses(clHill, 0, clForest, 0, clPlayer, 8, clGrass, 1),
scaleByMapSize(30, 90));
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating stone mines");
createObjectGroupsDeprecated(
@ -224,7 +225,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
scaleByMapSize(50, 500), 50
);
Engine.SetProgress(80);
yield 80;
g_Map.log("Creating gazelle");
group = new SimpleGroup(
@ -255,7 +256,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 20, clGrass, 2),
3 * numPlayers, 50
);
Engine.SetProgress(85);
yield 85;
createStragglerTrees(
[oPalm, oTamarix, oPine],
@ -291,5 +292,5 @@ Engine.LoadLibrary("rmgen-common");
setPPSaturation(0.42);
setPPBloom(0.6);
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tPrimary = "desert_sand_dunes_100";
const tCity = "desert_city_tile";
@ -107,7 +108,7 @@ Engine.LoadLibrary("rmgen-common");
"template": aBush1
}
});
Engine.SetProgress(30);
yield 30;
const riverTextures = [
{
@ -178,7 +179,7 @@ Engine.LoadLibrary("rmgen-common");
}
}
});
Engine.SetProgress(40);
yield 40;
g_Map.log("Creating bumps");
createAreas(
@ -230,7 +231,7 @@ Engine.LoadLibrary("rmgen-common");
num,
50);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating grass patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -255,7 +256,7 @@ Engine.LoadLibrary("rmgen-common");
clShore, 1,
clPond, 1),
scaleByMapSize(15, 45));
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -277,7 +278,7 @@ Engine.LoadLibrary("rmgen-common");
clPond, 1),
scaleByMapSize(15, 45));
Engine.SetProgress(60);
yield 60;
g_Map.log("Creating stone mines");
let group = new SimpleGroup(
@ -338,7 +339,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(6, 20), 100
);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -366,7 +367,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clWater, 1, clPlayer, 0, clPond, 1),
scaleByMapSize(20, 180), 50
);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating gazelles");
group = new SimpleGroup([new SimpleObject(oGazelle, 5, 7, 0, 4)], true, clFood);
@ -423,7 +424,7 @@ Engine.LoadLibrary("rmgen-common");
3 * scaleByMapSize(5, 20), 50
);
Engine.SetProgress(90);
yield 90;
createStragglerTrees(
[oDatePalm, oSDatePalm],
@ -502,5 +503,5 @@ Engine.LoadLibrary("rmgen-common");
setWaterWaviness(3.0);
setWaterType("lake");
g_Map.ExportMap();
return g_Map;
}

View File

@ -2,6 +2,7 @@ Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
function* GenerateMap(mapSettings)
{
TILE_CENTERED_HEIGHT_MAP = true;
@ -830,7 +831,7 @@ Engine.LoadLibrary("rmbiome");
}
}
(g_MapSettings.Landscape ? unknownMapFunctions[g_MapSettings.Landscape] :
(mapSettings.Landscape ? unknownMapFunctions[mapSettings.Landscape] :
pickRandom(Object.values(unknownMapFunctions)))();
paintTerrainBasedOnHeight(heightCliff, 40, 1, tCliff);
@ -902,7 +903,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clPlayer, 15, clHill, randIntInclusive(6, 18)), stayClasses(clLand, 0)],
randIntInclusive(0, scaleByMapSize(4, 8))*randIntInclusive(1, scaleByMapSize(4, 9))
);
Engine.SetProgress(30);
yield 30;
g_Map.log("Creating forests");
const [numForest, numStragglers] = getTreeCounts(...rBiomeTreeCount(1));
@ -925,7 +926,7 @@ Engine.LoadLibrary("rmbiome");
stayClasses(clLand, 4)
],
num);
Engine.SetProgress(50);
yield 50;
g_Map.log("Creating dirt patches");
const patchCount = (currentBiome() == "generic/savanna" ? 3 : 1) * scaleByMapSize(15, 45);
@ -953,7 +954,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 0, clHill, 2, clDirt, 5, clPlayer, 7), stayClasses(clLand, 4)],
patchCount);
Engine.SetProgress(55);
yield 55;
g_Map.log("Creating stone mines");
createObjectGroupsDeprecated(
@ -984,7 +985,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 2), stayClasses(clLand, 3)],
randIntInclusive(scaleByMapSize(2, 9), scaleByMapSize(9, 40)),
100);
Engine.SetProgress(65);
yield 65;
g_Map.log("Creating small decorative rocks");
createObjectGroupsDeprecated(
@ -1003,7 +1004,7 @@ Engine.LoadLibrary("rmbiome");
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 2), stayClasses(clLand, 3)],
scaleByMapSize(8, 131),
50);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating deer");
createObjectGroupsDeprecated(
@ -1026,7 +1027,7 @@ Engine.LoadLibrary("rmbiome");
],
randIntInclusive(1, 4) * numPlayers + 2,
50);
Engine.SetProgress(75);
yield 75;
g_Map.log("Creating sheep");
createObjectGroupsDeprecated(
@ -1046,7 +1047,7 @@ Engine.LoadLibrary("rmbiome");
avoidClasses(clLand, 4, clForest, 0, clPlayer, 0, clHill, 2, clFood, 20),
randIntInclusive(15, 40) * numPlayers,
60);
Engine.SetProgress(85);
yield 85;
g_Map.log("Creating straggler trees");
types = [g_Gaia.tree1, g_Gaia.tree2, g_Gaia.tree3, g_Gaia.tree4];
@ -1077,7 +1078,7 @@ Engine.LoadLibrary("rmbiome");
0,
[avoidClasses(clWater, 2, clHill, 2, clPlayer, 2, clDirt, 0), stayClasses(clLand, 3)],
planetm * scaleByMapSize(13, 200));
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating large grass tufts");
createObjectGroupsDeprecated(
@ -1092,7 +1093,7 @@ Engine.LoadLibrary("rmbiome");
stayClasses(clLand, 3)
],
planetm * scaleByMapSize(13, 200));
Engine.SetProgress(95);
yield 95;
g_Map.log("Creating shallow flora");
createObjectGroupsDeprecated(
@ -1118,5 +1119,5 @@ Engine.LoadLibrary("rmbiome");
placePlayersNomad(clPlayer,
avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2, clWater, 10));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
const tGrass = ["cliff volcanic light", "ocean_rock_a", "ocean_rock_b"];
const tGrassA = "cliff volcanic light";
@ -60,10 +61,10 @@ Engine.LoadLibrary("rmgen-common");
"count": scaleByMapSize(12, 30)
}
});
Engine.SetProgress(15);
yield 15;
createVolcano(mapCenter, clHill, tCliff, [tLava1, tLava2, tLava3], true, ELEVATION_SET);
Engine.SetProgress(45);
yield 45;
g_Map.log("Creating hills");
createAreas(
@ -95,7 +96,7 @@ Engine.LoadLibrary("rmgen-common");
avoidClasses(clPlayer, 12, clForest, 10, clHill, 0, clBaseResource, 6),
num);
Engine.SetProgress(70);
yield 70;
g_Map.log("Creating dirt patches");
for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
@ -154,7 +155,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(4, 16), 100
);
Engine.SetProgress(90);
yield 90;
g_Map.log("Creating small decorative rocks");
group = new SimpleGroup(
@ -178,7 +179,7 @@ Engine.LoadLibrary("rmgen-common");
scaleByMapSize(8, 131), 50
);
Engine.SetProgress(95);
yield 95;
createStragglerTrees(
[oTree],
@ -188,5 +189,5 @@ Engine.LoadLibrary("rmgen-common");
placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4));
g_Map.ExportMap();
return g_Map;
}

View File

@ -1,6 +1,7 @@
Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
function* GenerateMap()
{
globalThis.g_Map = new RandomMap(0, "grass1");
@ -406,5 +407,5 @@ Engine.LoadLibrary("rmgen-common");
placeLinearWall(start, end, ['tower', 'medium'], wallStyleList[styleIndex], playerID);
}
g_Map.ExportMap();
return g_Map;
}

View File

@ -3,6 +3,7 @@ Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmbiome");
Engine.LoadLibrary("heightmap");
function* GenerateMap()
{
globalThis.g_Map = new RandomMap(0, "whiteness");
@ -508,7 +509,7 @@ Engine.LoadLibrary("heightmap");
g_Map.log("Rescaling map");
rescaleHeightmap(heightRange.min, heightRange.max);
Engine.SetProgress(25);
yield 25;
/**
* Prepare terrain texture placement
@ -549,7 +550,7 @@ Engine.LoadLibrary("heightmap");
new ClumpPlacer(diskArea(20), 0.8, 0.8, Infinity, position),
new SmoothElevationPainter(ELEVATION_SET, g_Map.getHeight(position), 20));
Engine.SetProgress(30);
yield 30;
/**
* Calculate tile centered height map after start position smoothing but
@ -621,7 +622,7 @@ Engine.LoadLibrary("heightmap");
if (entity)
g_Map.placeEntityPassable(entity, 0, randomPositionOnTile(point), randomAngle());
}
Engine.SetProgress(40);
yield 40;
g_Map.log("Placing resources");
const avoidPoints = playerPosition.map(pos => pos.clone());
@ -630,7 +631,7 @@ Engine.LoadLibrary("heightmap");
const resourceSpots = getPointsByHeight(resourceSpotHeightRange, avoidPoints).map(point =>
new Vector2D(point.x, point.y));
Engine.SetProgress(55);
yield 55;
g_Map.log("Placing players");
if (isNomad())
@ -687,5 +688,5 @@ Engine.LoadLibrary("heightmap");
radius / 3));
}
g_Map.ExportMap();
return g_Map;
}