mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-06-21 13:04:10 +00:00
Implement rmgen JS logger that measures the time for each procedure and prints logmessages to stdout, fixes #4950.
Allows to identify performance bottlenecks quickly and provides a better sense of progress when viewing stdout. This was SVN commit r21073.
This commit is contained in:
@@ -136,7 +136,7 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 3), clHill, scaleByMapSize(3, 15));
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tGrass,tGrassSand50],[tGrassSand50,tGrassSand25], [tGrassSand25,tGrass]],
|
||||
@@ -147,7 +147,7 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[tDirt3, tDirt2,[tDirt,tMainDirt], [tDirtCracks,tMainDirt]],
|
||||
@@ -158,14 +158,14 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating undersea bumps...");
|
||||
g_Map.log("Creating undersea bumps");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.5),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightSeaBump, 3),
|
||||
stayClasses(clWater, 6),
|
||||
scaleByMapSize(10, 50));
|
||||
|
||||
log("Creating islands...");
|
||||
g_Map.log("Creating islands");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(30, 80)), 0.5),
|
||||
[
|
||||
@@ -181,7 +181,7 @@ paintTerrainBasedOnHeight(-Infinity, heightSeaGround, Elevation_IncludeMin_Inclu
|
||||
paintTerrainBasedOnHeight(heightSeaGround, heightCorralsLower, Elevation_ExcludeMin_IncludeMax, tCoralsLower);
|
||||
paintTerrainBasedOnHeight(heightCorralsLower, heightCorralsUpper, Elevation_ExcludeMin_IncludeMax, tCoralsUpper);
|
||||
|
||||
log("Creating island stone mines...");
|
||||
g_Map.log("Creating island stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -190,7 +190,7 @@ createMines(
|
||||
stayClasses(clIsland, 4),
|
||||
clRock);
|
||||
|
||||
log("Creating island metal mines...");
|
||||
g_Map.log("Creating island metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -199,7 +199,7 @@ createMines(
|
||||
clMetal
|
||||
);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -208,7 +208,7 @@ createMines(
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 1, clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -96,7 +96,7 @@ Engine.SetProgress(20);
|
||||
createHills([tDirt2, tCliff, tGrassShrubs], avoidClasses(clPlayer, 35, clForest, 20, clHill, 20, clWater, 2), clHill, scaleByMapSize(5, 8));
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating water holes...");
|
||||
g_Map.log("Creating water holes");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), Math.floor(scaleByMapSize(60, 100)), 5),
|
||||
[
|
||||
@@ -120,7 +120,7 @@ createForests(
|
||||
clForest,
|
||||
forestTrees);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tDirt,tDirt3], [tDirt2,tDirt4]],
|
||||
@@ -129,7 +129,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating shrubs...");
|
||||
g_Map.log("Creating shrubs");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tGrassShrubs,
|
||||
@@ -137,7 +137,7 @@ createPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tSecondary,
|
||||
@@ -146,7 +146,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4)],
|
||||
@@ -155,7 +155,7 @@ createMines(
|
||||
avoidClasses(clWater, 4, clForest, 4, clPlayer, 20, clRock, 10, clHill, 4),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -177,7 +177,7 @@ createDecoration(
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0));
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating giraffes...");
|
||||
g_Map.log("Creating giraffes");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(oGiraffe, 2,4, 0,4), new SimpleObject(oGiraffe2, 0,2, 0,4)],
|
||||
true, clFood
|
||||
@@ -187,7 +187,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
log("Creating elephants...");
|
||||
g_Map.log("Creating elephants");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2,4, 0,4), new SimpleObject(oElephant2, 0,2, 0,4)],
|
||||
true, clFood
|
||||
@@ -197,7 +197,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
log("Creating lions...");
|
||||
g_Map.log("Creating lions");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oLion, 0,1, 0,4), new SimpleObject(oLioness, 2,3, 0,4)],
|
||||
true, clFood
|
||||
|
||||
@@ -127,12 +127,11 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating hills...");
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 8), clHill, scaleByMapSize(10, 40) * numPlayers, Math.floor(scaleByMapSize(40, 60)), Math.floor(scaleByMapSize(4, 5)), Math.floor(scaleByMapSize(7, 15)), Math.floor(scaleByMapSize(5, 15)));
|
||||
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating lakes...");
|
||||
g_Map.log("Creating lakes");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 8)), Math.floor(scaleByMapSize(40, 180)), 0.7),
|
||||
[
|
||||
@@ -158,7 +157,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tDirt,tHalfSnow], [tHalfSnow,tSnowLimited]],
|
||||
@@ -167,7 +166,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tSecondary,
|
||||
@@ -176,7 +175,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -185,7 +184,7 @@ createMines(
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -178,11 +178,11 @@ MountainRangeBuilder.prototype.PaintCurrentEdge = function()
|
||||
this.pathplacer.end = this.currentEdgeEnd;
|
||||
this.pathplacer.width = this.mountainWidth;
|
||||
|
||||
log("Creating mountainrange...");
|
||||
// Creating mountainrange
|
||||
if (!createArea(this.pathplacer, this.painters, this.constraint))
|
||||
return false;
|
||||
|
||||
log("Creating circular mountains at both ends of that mountainrange...");
|
||||
// Creating circular mountains at both ends of that mountainrange
|
||||
for (let point of [this.currentEdgeStart, this.currentEdgeEnd])
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(this.mountainWidth / 2), 0.95, 0.6, 10, point),
|
||||
@@ -197,8 +197,14 @@ MountainRangeBuilder.prototype.PaintCurrentEdge = function()
|
||||
*/
|
||||
MountainRangeBuilder.prototype.CreateMountainRanges = function()
|
||||
{
|
||||
g_Map.log("Creating mountainrange with " + this.possibleEdges.length + " possible edges");
|
||||
|
||||
let max = this.possibleEdges.length
|
||||
|
||||
while (this.possibleEdges.length)
|
||||
{
|
||||
Engine.SetProgress(20 + 15 * this.possibleEdges.length / max)
|
||||
|
||||
this.index = randIntExclusive(0, this.possibleEdges.length);
|
||||
this.UpdateCurrentEdge();
|
||||
this.SetConnectable(false);
|
||||
@@ -353,7 +359,7 @@ Engine.SetProgress(35);
|
||||
paintTerrainBasedOnHeight(heightLand + 0.1, snowlineHeight, 0, tCliff);
|
||||
paintTerrainBasedOnHeight(snowlineHeight, heightMountain, 3, tSnowLimited);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
@@ -361,7 +367,7 @@ createAreas(
|
||||
scaleByMapSize(100, 200));
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(40, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -374,7 +380,7 @@ createAreas(
|
||||
);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
var types = [
|
||||
[[tForestFloor, tPrimary, pForest], [tForestFloor, pForest]]
|
||||
@@ -394,7 +400,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -405,7 +411,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -415,21 +421,21 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone mines...");
|
||||
g_Map.log("Creating small stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
|
||||
@@ -437,7 +443,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -448,7 +454,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -460,7 +466,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -470,7 +476,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -480,7 +486,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating rabbit...");
|
||||
g_Map.log("Creating rabbit");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -497,7 +503,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
var planetm = 1;
|
||||
|
||||
group = new SimpleGroup(
|
||||
@@ -509,7 +515,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -519,7 +525,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -74,14 +74,14 @@ placePlayerBases({
|
||||
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(2, 5)), 0.5),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
avoidClasses(clPlayer, 13),
|
||||
scaleByMapSize(300, 800));
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(220, 1000, 0.65);
|
||||
var types = [[[tForestFloor, tGrass, pForest], [tForestFloor, pForest]]];
|
||||
var size = forestTrees / (scaleByMapSize(2,8) * numPlayers);
|
||||
@@ -97,7 +97,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(5, 48), scaleByMapSize(6, 84), scaleByMapSize(8, 128)],
|
||||
[[tGrass,tGrassA,tGrassC],[tGrass,tGrassA,tGrassC], [tGrass,tGrassA,tGrassC]],
|
||||
@@ -106,7 +106,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(50, 70),
|
||||
clDirt);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(5, 32), scaleByMapSize(6, 48), scaleByMapSize(7, 80)],
|
||||
[tGrassD ,tDirt],
|
||||
@@ -117,7 +117,7 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating big patches...");
|
||||
g_Map.log("Creating big patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(10, 60), scaleByMapSize(15, 90), scaleByMapSize(20, 120)],
|
||||
[tGrassB ,tGrassA],
|
||||
@@ -128,21 +128,21 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(1,4), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(1,4), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
|
||||
@@ -151,7 +151,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -162,7 +162,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -175,7 +175,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating rabbits...");
|
||||
g_Map.log("Creating rabbits");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -185,7 +185,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -197,7 +197,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSheep, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -215,7 +215,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -226,7 +226,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -65,7 +65,7 @@ var islandRadius = scaleByMapSize(22, 31);
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
log("Creating player islands...");
|
||||
g_Map.log("Creating player islands");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
@@ -78,7 +78,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
[Math.floor(islandRadius)]),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightLand, 4));
|
||||
|
||||
log("Creating random islands...");
|
||||
g_Map.log("Creating random islands");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
Math.floor(scaleByMapSize(4, 8)),
|
||||
@@ -154,7 +154,7 @@ createForests(
|
||||
forestTrees);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
|
||||
@@ -163,7 +163,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
@@ -172,7 +172,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -182,7 +182,7 @@ createMines(
|
||||
clRock
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -93,7 +93,6 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating hills...");
|
||||
createHills(
|
||||
[tPrimary, tCliff, tHill],
|
||||
avoidClasses(
|
||||
@@ -106,7 +105,7 @@ createHills(
|
||||
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating lakes...");
|
||||
g_Map.log("Creating lakes");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
1,
|
||||
@@ -123,7 +122,6 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating bumps...");
|
||||
createBumps(avoidClasses(clPlayer, 6, clWater, 2), scaleByMapSize(30, 300), 1, 8, 4, 0, 3);
|
||||
|
||||
paintTerrainBasedOnHeight(4, 15, 0, tCliff);
|
||||
@@ -141,7 +139,7 @@ createForests(
|
||||
forestTrees);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tDirt,tHalfSnow], [tHalfSnow,tSnowLimited]],
|
||||
@@ -155,7 +153,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating shrubs...");
|
||||
g_Map.log("Creating shrubs");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tSecondary,
|
||||
@@ -168,7 +166,7 @@ createPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tSecondary,
|
||||
@@ -182,7 +180,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)],
|
||||
@@ -196,7 +194,7 @@ createMines(
|
||||
clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1, 1, 0, 4)]
|
||||
|
||||
@@ -69,7 +69,7 @@ var clFood = g_Map.createTileClass();
|
||||
var clBaseResource = g_Map.createTileClass();
|
||||
var clHillDeco = g_Map.createTileClass();
|
||||
|
||||
log("Creating the central dip...");
|
||||
g_Map.log("Creating the central dip");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.42)), 0.94, 0.05, 0.1, mapCenter),
|
||||
[
|
||||
@@ -158,7 +158,7 @@ placePlayerBases({
|
||||
// No decoratives
|
||||
});
|
||||
|
||||
log("Marking player territory larger than the city patch...");
|
||||
g_Map.log("Marking player territory");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
createArea(
|
||||
new ClumpPlacer(250, 0.95, 0.3, 0.1, playerPosition[i]),
|
||||
@@ -166,7 +166,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
for (let size of [scaleByMapSize(50, 800), scaleByMapSize(50, 400), scaleByMapSize(10, 30), scaleByMapSize(10, 30)])
|
||||
{
|
||||
let mountains = createAreas(
|
||||
@@ -203,7 +203,7 @@ for (let size of [scaleByMapSize(50, 800), scaleByMapSize(50, 400), scaleByMapSi
|
||||
|
||||
if (size > 150 && ravine.length)
|
||||
{
|
||||
log("Placing huts in ravines...");
|
||||
g_Map.log("Placing huts in ravines");
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new RandomGroup(
|
||||
[
|
||||
@@ -293,7 +293,7 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(400, 6000, 0.8);
|
||||
var [forestTreesJoin, forestTrees] = getTreeCounts(forestTrees, forestTrees, 0.25);
|
||||
|
||||
@@ -326,7 +326,7 @@ createAreasInAreas(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -334,7 +334,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
avoidClasses(clForest, 0, clHill, 2, clPlayer, 5),
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating chopped forest patches...");
|
||||
g_Map.log("Creating chopped forest patches");
|
||||
for (let size of [scaleByMapSize(20, 120)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -344,7 +344,7 @@ for (let size of [scaleByMapSize(20, 120)])
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 1,2, 0,4), new SimpleObject(oStoneLarge, 0,1, 0,4)], true, clRock);
|
||||
createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[avoidClasses(clHill, 4, clForest, 2, clPlayer, 20, clRock, 10)],
|
||||
@@ -352,7 +352,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[explorableArea]
|
||||
);
|
||||
|
||||
log("Creating small stone mines...");
|
||||
g_Map.log("Creating small stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[avoidClasses(clHill, 4, clForest, 2, clPlayer, 20, clRock, 10)],
|
||||
@@ -360,7 +360,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[explorableArea]
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalSmall, 1,2, 0,4), new SimpleObject(oMetalLarge, 0,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[avoidClasses(clHill, 4, clForest, 2, clPlayer, 20, clMetal, 10, clRock, 5)],
|
||||
@@ -370,7 +370,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating wildlife...");
|
||||
g_Map.log("Creating wildlife");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -403,7 +403,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -413,7 +413,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(3, 12) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating decorative props...");
|
||||
g_Map.log("Creating decorative props");
|
||||
group = new SimpleGroup(
|
||||
[
|
||||
new SimpleObject(aWoodA, 1,2, 0,1),
|
||||
@@ -433,7 +433,7 @@ createObjectGroupsByAreasDeprecated(
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
g_Map.log("Creating straggler trees");
|
||||
var types = [oOak, oOakLarge, oPine, oAleppoPine];
|
||||
var num = Math.floor(stragglerTrees / types.length);
|
||||
for (let type of types)
|
||||
@@ -446,7 +446,7 @@ for (let type of types)
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating grass tufts...");
|
||||
g_Map.log("Creating grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassLarge, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
|
||||
@@ -95,7 +95,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[tGrassDirt,tDirt],
|
||||
@@ -104,7 +104,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
[tGrass2,tGrassPatch],
|
||||
@@ -115,7 +115,7 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -124,7 +124,7 @@ createMines(
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -176,7 +176,7 @@ createFood(
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
|
||||
clFood);
|
||||
|
||||
log("Creating food treasures...");
|
||||
g_Map.log("Creating food treasures");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(oFoodTreasure, 2,3, 0,2)],
|
||||
true, clTreasure
|
||||
@@ -186,7 +186,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating food treasures...");
|
||||
g_Map.log("Creating food treasures");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWoodTreasure, 2,3, 0,2)],
|
||||
true, clTreasure
|
||||
|
||||
@@ -98,7 +98,6 @@ Engine.SetProgress(5);
|
||||
// - Restart the loop if start positions are invalid or two players are to close to each other
|
||||
var goodStartPositionsFound = false;
|
||||
var minDistBetweenPlayers = 16 + mapSize / 16; // Don't set this higher than 25 for tiny maps! It will take forever with 8 players!
|
||||
var enoughTiles = false;
|
||||
var tries = 0;
|
||||
var lowerHeightLimit = textueByHeight[3].upperHeightLimit;
|
||||
var upperHeightLimit = textueByHeight[6].upperHeightLimit;
|
||||
@@ -106,7 +105,7 @@ var upperHeightLimit = textueByHeight[6].upperHeightLimit;
|
||||
while (!goodStartPositionsFound)
|
||||
{
|
||||
tries++;
|
||||
log("Starting giant while loop try " + tries);
|
||||
g_Map.log("Starting giant while loop try " + tries);
|
||||
|
||||
// Generate reliefmap
|
||||
var myReliefmap = clone(g_Map.height);
|
||||
@@ -192,16 +191,8 @@ while (!goodStartPositionsFound)
|
||||
|
||||
possibleStartPositions = clone(possibleStartPositionsTemp);
|
||||
|
||||
if(possibleStartPositions.length > numPlayers)
|
||||
enoughTiles = true;
|
||||
else
|
||||
{
|
||||
enoughTiles = false;
|
||||
log("possibleStartPositions.length < numPlayers, possibleStartPositions.length = " + possibleStartPositions.length + ", numPlayers = " + numPlayers);
|
||||
}
|
||||
|
||||
// Find a good start position derivation
|
||||
if (enoughTiles)
|
||||
if (possibleStartPositions.length > numPlayers)
|
||||
{
|
||||
// Get some random start location derivations. NOTE: Iterating over all possible derivations is just too much (valid points * numPlayers)
|
||||
var maxTries = 100000;
|
||||
@@ -242,16 +233,16 @@ while (!goodStartPositionsFound)
|
||||
if (maxMinDist > minDistBetweenPlayers)
|
||||
{
|
||||
goodStartPositionsFound = true;
|
||||
log("Exiting giant while loop after " + tries + " tries with a minimum player distance of " + maxMinDist);
|
||||
g_Map.log("Exiting giant while loop after " + tries + " tries with a minimum player distance of " + maxMinDist);
|
||||
}
|
||||
else
|
||||
log("maxMinDist <= " + minDistBetweenPlayers + ", maxMinDist = " + maxMinDist);
|
||||
g_Map.log("maxMinDist <= " + minDistBetweenPlayers + ", maxMinDist = " + maxMinDist);
|
||||
}
|
||||
}
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Painting terrain by height and add props...");
|
||||
g_Map.log("Painting terrain by height and add props");
|
||||
var propDensity = 1; // 1 means as determined in the loop, less for large maps as set below
|
||||
if (mapSize > 500)
|
||||
propDensity = 1/4;
|
||||
@@ -383,7 +374,7 @@ if (isNomad())
|
||||
placePlayersNomad(g_Map.createTileClass(), new HeightConstraint(lowerHeightLimit, upperHeightLimit));
|
||||
else
|
||||
{
|
||||
log("Placing players and starting resources...");
|
||||
g_Map.log("Placing players and starting resources");
|
||||
|
||||
let playerIDs = sortAllPlayers();
|
||||
let resourceDistance = 8;
|
||||
|
||||
@@ -91,14 +91,14 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(15);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.6, 0.1, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump1, 2),
|
||||
avoidClasses(clPlayer, 13),
|
||||
scaleByMapSize(300, 800));
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.5),
|
||||
[
|
||||
@@ -109,7 +109,7 @@ createAreas(
|
||||
avoidClasses(clPlayer, 20, clHill, 15, clWater, 0),
|
||||
scaleByMapSize(1, 4) * numPlayers * 3);
|
||||
|
||||
log("Creating marshes...");
|
||||
g_Map.log("Creating marshes");
|
||||
for (let i = 0; i < 2; ++i)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(6, 12)), Math.floor(scaleByMapSize(15, 60)), 0.8),
|
||||
@@ -121,7 +121,7 @@ for (let i = 0; i < 2; ++i)
|
||||
avoidClasses(clPlayer, 25, clWater, Math.round(scaleByMapSize(7, 16) * randFloat(0.8, 1.35))),
|
||||
scaleByMapSize(4, 20));
|
||||
|
||||
log("Creating reeds...");
|
||||
g_Map.log("Creating reeds");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -136,14 +136,14 @@ createObjectGroupsDeprecated(
|
||||
100);
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump2, 2),
|
||||
stayClasses(clWater, 2),
|
||||
scaleByMapSize(50, 100));
|
||||
|
||||
log("Creating mud patches...");
|
||||
g_Map.log("Creating mud patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(2, Math.floor(scaleByMapSize(3, 6)), size, 1),
|
||||
@@ -155,7 +155,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -176,7 +176,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(4, 16),
|
||||
100);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
0,
|
||||
@@ -185,7 +185,7 @@ createObjectGroupsDeprecated(
|
||||
100);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aRockMedium, 1, 3, 0, 1)], true),
|
||||
0,
|
||||
@@ -194,7 +194,7 @@ createObjectGroupsDeprecated(
|
||||
50);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -208,7 +208,7 @@ createObjectGroupsDeprecated(
|
||||
50);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating lions...");
|
||||
g_Map.log("Creating lions");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -222,7 +222,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(4, 12),
|
||||
50);
|
||||
|
||||
log("Creating zebras...");
|
||||
g_Map.log("Creating zebras");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oZebra, 4, 6, 0, 4)],
|
||||
@@ -233,7 +233,7 @@ createObjectGroupsDeprecated(
|
||||
3 * numPlayers,
|
||||
50);
|
||||
|
||||
log("Creating wildebeest...");
|
||||
g_Map.log("Creating wildebeest");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oWildebeest, 2, 4, 0, 4)],
|
||||
@@ -244,7 +244,7 @@ createObjectGroupsDeprecated(
|
||||
3 * numPlayers,
|
||||
50);
|
||||
|
||||
log("Creating crocodiles...");
|
||||
g_Map.log("Creating crocodiles");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oCrocodile, 2, 3, 0, 4)],
|
||||
@@ -255,7 +255,7 @@ createObjectGroupsDeprecated(
|
||||
5 * numPlayers,
|
||||
200);
|
||||
|
||||
log("Creating gazelles...");
|
||||
g_Map.log("Creating gazelles");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oGazelle, 4, 6, 0, 4)],
|
||||
@@ -267,7 +267,7 @@ createObjectGroupsDeprecated(
|
||||
50);
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating rabbits...");
|
||||
g_Map.log("Creating rabbits");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 6, 8, 0, 2)],
|
||||
@@ -278,7 +278,7 @@ createObjectGroupsDeprecated(
|
||||
6 * numPlayers,
|
||||
50);
|
||||
|
||||
log("Creating rhinos...");
|
||||
g_Map.log("Creating rhinos");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oRhino, 1, 1, 0, 2)],
|
||||
@@ -289,7 +289,7 @@ createObjectGroupsDeprecated(
|
||||
3 * numPlayers,
|
||||
50);
|
||||
|
||||
log("Creating elephants...");
|
||||
g_Map.log("Creating elephants");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2, 3, 0, 4), new SimpleObject(oElephantInfant, 1, 1, 0, 4)],
|
||||
@@ -300,7 +300,7 @@ createObjectGroupsDeprecated(
|
||||
3 * numPlayers,
|
||||
50);
|
||||
|
||||
log("Creating berry bushes...");
|
||||
g_Map.log("Creating berry bushes");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5, 7, 0, 4)],
|
||||
@@ -319,7 +319,7 @@ createStragglerTrees(
|
||||
scaleByMapSize(60, 500));
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aGrassShort, 1, 2, 0, 1, -Math.PI / 8, Math.PI / 8)]),
|
||||
0,
|
||||
@@ -327,7 +327,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(13, 200));
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([
|
||||
new SimpleObject(aGrass, 2, 4, 0, 1.8, -Math.PI / 8, Math.PI / 8),
|
||||
@@ -338,7 +338,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(13, 200));
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -350,7 +350,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(13, 200),
|
||||
50);
|
||||
|
||||
log("Creating flowering shrubs...");
|
||||
g_Map.log("Creating flowering shrubs");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aShrub, 1, 1, 0, 2)]),
|
||||
0,
|
||||
@@ -358,7 +358,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(13, 200),
|
||||
50);
|
||||
|
||||
log("Creating decorative palms...");
|
||||
g_Map.log("Creating decorative palms");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aPalm, 1, 3, 0, 2)]),
|
||||
0,
|
||||
@@ -366,7 +366,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(13, 200),
|
||||
50);
|
||||
|
||||
log("Creating shrubs,flowers and other decorations...");
|
||||
g_Map.log("Creating shrubs,flowers and other decorations");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
|
||||
@@ -228,12 +228,12 @@ let heightSeaGround = -MIN_HEIGHT + heightRange.min + averageWaterCoverage * (he
|
||||
let heightSeaGroundAdjusted = heightSeaGround + MIN_HEIGHT; // Water height in RMGEN
|
||||
setWaterHeight(heightSeaGround);
|
||||
|
||||
log("Generating terrain using diamon-square...");
|
||||
g_Map.log("Generating terrain using diamon-square");
|
||||
let medH = (heightRange.min + heightRange.max) / 2;
|
||||
let initialHeightmap = [[medH, medH], [medH, medH]];
|
||||
setBaseTerrainDiamondSquare(heightRange.min, heightRange.max, initialHeightmap, 0.8);
|
||||
|
||||
log("Apply erosion...");
|
||||
g_Map.log("Apply erosion");
|
||||
for (let i = 0; i < 5; ++i)
|
||||
splashErodeMap(0.1);
|
||||
|
||||
@@ -256,7 +256,7 @@ let heighLimits = [
|
||||
|
||||
let playerHeight = (heighLimits[4] + heighLimits[5]) / 2; // Average player height
|
||||
|
||||
log("Determining height-dependent biome...");
|
||||
g_Map.log("Determining height-dependent biome");
|
||||
// Texture and actor presets
|
||||
let myBiome = [];
|
||||
myBiome.push({ // 0 Deep water
|
||||
@@ -318,18 +318,18 @@ myBiome.push({ // 10 Hilltop
|
||||
let [playerIDs, playerPosition] = sortPlayersByLocation(getStartLocationsByHeightmap({ "min": heighLimits[4], "max": heighLimits[5] }, 1000, 30));
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Smooth player locations...");
|
||||
g_Map.log("Smooth player locations");
|
||||
for (let p = 0; p < playerIDs.length; ++p)
|
||||
rectangularSmoothToHeight(playerPosition[p], 35, 35, playerHeight, 0.7);
|
||||
|
||||
log("Creating paths...");
|
||||
g_Map.log("Creating paths");
|
||||
let tchm = getTileCenteredHeightmap();
|
||||
let clPath = g_Map.createTileClass();
|
||||
for (let i = 0; i < playerPosition.length; ++i)
|
||||
placeRandomPathToHeight(playerPosition[i], playerPosition[(i + 1) % playerPosition.length], playerHeight, clPath, tPath, 4, 4, 0.08, g_Map.height);
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Determining resource locations...");
|
||||
g_Map.log("Determining resource locations");
|
||||
let avoidPoints = playerPosition.map(pos => pos.clone());
|
||||
for (let i = 0; i < avoidPoints.length; ++i)
|
||||
avoidPoints[i].dist = 30;
|
||||
@@ -382,7 +382,7 @@ for (let h = 0; h < heighLimits.length; ++h)
|
||||
}
|
||||
}
|
||||
|
||||
log("Painting areas by height and slope...");
|
||||
g_Map.log("Painting areas by height and slope");
|
||||
for (let h = 0; h < heighLimits.length; ++h)
|
||||
for (let point of areas[h])
|
||||
{
|
||||
@@ -408,7 +408,7 @@ for (let h = 0; h < heighLimits.length; ++h)
|
||||
}
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Placing players...");
|
||||
g_Map.log("Placing players");
|
||||
if (isNomad())
|
||||
placePlayersNomad(g_Map.createTileClass(), new HeightConstraint(heighLimits[4], heighLimits[5]));
|
||||
else
|
||||
@@ -418,7 +418,7 @@ else
|
||||
placeStartLocationResources(playerPosition[p]);
|
||||
}
|
||||
|
||||
log("Placing resources, farmsteads, groves and camps...");
|
||||
g_Map.log("Placing resources, farmsteads, groves and camps");
|
||||
for (let i = 0; i < resourceSpots.length; ++i)
|
||||
{
|
||||
let pos = new Vector2D(resourceSpots[i].x, resourceSpots[i].y);
|
||||
|
||||
@@ -65,7 +65,7 @@ var playerHillRadius = defaultPlayerBaseRadius() / (isNomad() ? 1.5 : 1);
|
||||
|
||||
var [playerIDs, playerPosition, playerAngle] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
log("Creating player hills and ramps...");
|
||||
g_Map.log("Creating player hills and ramps");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
createArea(
|
||||
@@ -119,7 +119,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(10);
|
||||
|
||||
log("Creating lakes...");
|
||||
g_Map.log("Creating lakes");
|
||||
var numLakes = Math.round(scaleByMapSize(1,4) * numPlayers);
|
||||
var waterAreas = createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(100, 250), 0.8, 0.1, 10),
|
||||
@@ -133,7 +133,7 @@ var waterAreas = createAreas(
|
||||
);
|
||||
Engine.SetProgress(15);
|
||||
|
||||
log("Creating reeds...");
|
||||
g_Map.log("Creating reeds");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(aReeds, 5,10, 0,4), new SimpleObject(aLillies, 0,1, 0,4)], true
|
||||
);
|
||||
@@ -144,7 +144,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oFish, 1,1, 0,1)],
|
||||
@@ -161,7 +161,6 @@ Engine.SetProgress(25);
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 0));
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating hills...");
|
||||
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 2, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
Engine.SetProgress(35);
|
||||
|
||||
@@ -173,7 +172,7 @@ createForests(
|
||||
forestTrees);
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tGrass,tGrassA],[tGrassA,tGrassB], [tGrassB,tGrassC]],
|
||||
@@ -183,7 +182,7 @@ createLayeredPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
[tGrassPatchBlend, tGrassPatch],
|
||||
@@ -193,7 +192,7 @@ createLayeredPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -203,7 +202,7 @@ createMines(
|
||||
clRock);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -64,7 +64,7 @@ var playerCanyonRadius = scaleByMapSize(18, 32);
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
log("Reserving space for the players, their initial forests and some less space therein without trees...");
|
||||
g_Map.log("Reserving space for the players, their initial forests and some less space therein without trees");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
for (let j = 1; j <= 2; ++j)
|
||||
createArea(
|
||||
@@ -75,7 +75,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
new TileClassPainter(j == 1 || isNomad() ? clLand : clPlayer)
|
||||
]);
|
||||
|
||||
log("Creating center area...");
|
||||
g_Map.log("Creating center area");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.16)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -88,7 +88,7 @@ createArea(
|
||||
new ClumpPlacer(150, 0.6, 0.3, 10, mapCenter),
|
||||
new TileClassPainter(clHill));
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
for (let i = 0; i < scaleByMapSize(9, 16); ++i)
|
||||
createArea(
|
||||
new PathPlacer(
|
||||
@@ -157,9 +157,9 @@ for (let g = 0; g < scaleByMapSize(5, 30); ++g)
|
||||
}
|
||||
}
|
||||
|
||||
g_Map.log("Creating paths from players to neighbor and center");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
log("Creating path from player to center and to neighbor...");
|
||||
let neighbor = i + 1 < numPlayers ? i + 1 : 0;
|
||||
for (let position of [playerPosition[neighbor], mapCenter])
|
||||
createArea(
|
||||
@@ -179,7 +179,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
]);
|
||||
}
|
||||
|
||||
log("Painting center place...");
|
||||
g_Map.log("Painting center place");
|
||||
createArea(
|
||||
new ClumpPlacer(150, 0.6, 0.3, 10, mapCenter),
|
||||
new LayeredPainter([tRoad, tRoad], [1]));
|
||||
@@ -233,7 +233,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
|
||||
@@ -242,7 +242,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
@@ -250,7 +250,7 @@ createPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -259,7 +259,7 @@ createMines(
|
||||
[avoidClasses(clForest, 1, clPlayer, 3, clRock, 10, clHill, 1, clHill2, 1), stayClasses(clLand, 2)],
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -292,7 +292,7 @@ createDecoration(
|
||||
],
|
||||
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0));
|
||||
|
||||
log("Creating actor trees...");
|
||||
g_Map.log("Creating actor trees");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(aTree, 1,1, 0,1)],
|
||||
true
|
||||
@@ -335,7 +335,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating treasures...");
|
||||
g_Map.log("Creating treasures");
|
||||
for (let i = 0; i < randIntInclusive(3, 8); ++i)
|
||||
for (let template of [oFoodTreasure, oWoodTreasure])
|
||||
g_Map.placeEntityPassable(
|
||||
|
||||
@@ -59,7 +59,7 @@ var clFood = g_Map.createTileClass();
|
||||
var clBaseResource = g_Map.createTileClass();
|
||||
var clLand = g_Map.createTileClass();
|
||||
|
||||
log("Creating continent...");
|
||||
g_Map.log("Creating continent");
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
2,
|
||||
@@ -76,7 +76,7 @@ createArea(
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.25));
|
||||
|
||||
log("Ensuring initial player land...");
|
||||
g_Map.log("Ensuring initial player land");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
@@ -143,7 +143,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
|
||||
@@ -152,7 +152,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
@@ -161,7 +161,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -170,7 +170,7 @@ createMines(
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1), stayClasses(clLand, 6)],
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -61,7 +61,7 @@ var clBaseResource = g_Map.createTileClass();
|
||||
var clGrass = g_Map.createTileClass();
|
||||
var clHill = g_Map.createTileClass();
|
||||
|
||||
log("Creating the main river");
|
||||
g_Map.log("Creating the main river");
|
||||
var riverAngle = randomAngle();
|
||||
var riverWidth = scaleByMapSize(15, 70);
|
||||
var riverStart = new Vector2D(mapCenter.x, 0).rotateAround(riverAngle, mapCenter);
|
||||
@@ -71,13 +71,13 @@ createArea(
|
||||
new PathPlacer(riverStart, riverEnd, riverWidth, 0.2, 15 * scaleByMapSize(1, 3), 0.04, 0.01),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 4));
|
||||
|
||||
log("Creating small puddles at the map border to ensure players being separated...");
|
||||
g_Map.log("Creating small puddles at the map border to ensure players being separated");
|
||||
for (let point of [riverStart, riverEnd])
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(riverWidth / 2), 0.95, 0.6, 10, point),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 4));
|
||||
|
||||
log("Creating passage connecting the two riversides...");
|
||||
g_Map.log("Creating passage connecting the two riversides");
|
||||
var passageStart = riverStart.rotateAround(Math.PI / 2, mapCenter);
|
||||
var passageEnd = riverEnd.rotateAround(Math.PI / 2, mapCenter);
|
||||
createArea(
|
||||
@@ -143,7 +143,7 @@ if (randBool())
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 3), clHill, scaleByMapSize(3, 15));
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tGrass,tGrassSand50],[tGrassSand50,tGrassSand25], [tGrassSand25,tGrass]],
|
||||
@@ -154,7 +154,7 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[tDirt3, tDirt2,[tDirt,tMainDirt], [tDirtCracks,tMainDirt]],
|
||||
@@ -165,7 +165,7 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -174,7 +174,7 @@ createMines(
|
||||
avoidClasses(clForest, 4, clPlayer, 15, clRock, 10, clWater, 4, clHill, 4),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -81,13 +81,13 @@ var nbBeaches = scaleByMapSize(2, 5);
|
||||
var nbPassagesLevel1 = scaleByMapSize(4, 8);
|
||||
var nbPassagesLevel2 = scaleByMapSize(2, 4);
|
||||
|
||||
log("Creating Corsica and Sardinia...");
|
||||
g_Map.log("Creating Corsica and Sardinia");
|
||||
var swapAngle = randBool() ? Math.PI / 2 : 0;
|
||||
var islandLocations = [new Vector2D(0.05, 0.05), new Vector2D(0.95, 0.95)].map(v => v.mult(mapSize).rotateAround(-swapAngle, mapCenter));
|
||||
|
||||
for (let island = 0; island < 2; ++island)
|
||||
{
|
||||
log("Creating island area...");
|
||||
g_Map.log("Creating island area");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusIsland), 1, 0.5, 10, islandLocations[island]),
|
||||
[
|
||||
@@ -96,7 +96,7 @@ for (let island = 0; island < 2; ++island)
|
||||
new TileClassPainter(clIsland)
|
||||
]);
|
||||
|
||||
log("Creating subislands...");
|
||||
g_Map.log("Creating subislands");
|
||||
for (let i = 0; i < nbSubIsland + 1; ++i)
|
||||
{
|
||||
let angle = Math.PI * (island + i / (nbSubIsland * 2)) + swapAngle;
|
||||
@@ -110,7 +110,7 @@ for (let island = 0; island < 2; ++island)
|
||||
]);
|
||||
}
|
||||
|
||||
log("Creating creeks...");
|
||||
g_Map.log("Creating creeks");
|
||||
for (let i = 0; i < nbCreeks + 1; ++i)
|
||||
{
|
||||
let angle = Math.PI * (island + i * (1 / (nbCreeks * 2))) + swapAngle;
|
||||
@@ -124,7 +124,7 @@ for (let island = 0; island < 2; ++island)
|
||||
]);
|
||||
}
|
||||
|
||||
log("Creating beaches...");
|
||||
g_Map.log("Creating beaches");
|
||||
for (let i = 0; i < nbBeaches + 1; ++i)
|
||||
{
|
||||
let angle = Math.PI * (island + (i / (nbBeaches * 2.5)) + 1 / (nbBeaches * 6) + randFloat(-1, 1) / (nbBeaches * 7)) + swapAngle;
|
||||
@@ -145,17 +145,17 @@ for (let island = 0; island < 2; ++island)
|
||||
});
|
||||
}
|
||||
|
||||
log("Creating main relief...");
|
||||
g_Map.log("Creating main relief");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusIsland), 1, 0.2, 10, islandLocations[island]),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetMainRelief, fractionToTiles(0.45)));
|
||||
|
||||
log("Creating first level plateau...");
|
||||
g_Map.log("Creating first level plateau");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusLevel1), 0.95, 0.02, 10, islandLocations[island]),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetLevel1, 1));
|
||||
|
||||
log("Creating first level passages...");
|
||||
g_Map.log("Creating first level passages");
|
||||
for (let i = 0; i <= nbPassagesLevel1; ++i)
|
||||
{
|
||||
let angle = Math.PI * (i / 7 + 1 / 9 + island) + swapAngle;
|
||||
@@ -171,7 +171,7 @@ for (let island = 0; island < 2; ++island)
|
||||
|
||||
if (mapSize > 150)
|
||||
{
|
||||
log("Creating second level plateau...");
|
||||
g_Map.log("Creating second level plateau");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusLevel2), 0.98, 0.04, 10, islandLocations[island]),
|
||||
[
|
||||
@@ -179,7 +179,7 @@ for (let island = 0; island < 2; ++island)
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetLevel2, 1)
|
||||
]);
|
||||
|
||||
log("Creating second level passages...");
|
||||
g_Map.log("Creating second level passages");
|
||||
for (let i = 0; i < nbPassagesLevel2; ++i)
|
||||
{
|
||||
let angle = Math.PI * (i / (2 * nbPassagesLevel2) + 1 / (4 * nbPassagesLevel2) + island) + swapAngle;
|
||||
@@ -196,7 +196,7 @@ for (let island = 0; island < 2; ++island)
|
||||
}
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Determining player locations...");
|
||||
g_Map.log("Determining player locations");
|
||||
var playerIDs = sortAllPlayers();
|
||||
var playerPosition = [];
|
||||
var playerAngle = [];
|
||||
@@ -242,7 +242,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(70, 0.6, 0.1, 4),
|
||||
[new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBumps, 3)],
|
||||
@@ -253,7 +253,7 @@ createAreas(
|
||||
scaleByMapSize(20, 100),
|
||||
5);
|
||||
|
||||
log("Creating anti bumps...");
|
||||
g_Map.log("Creating anti bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(120, 0.3, 0.1, 4),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetAntiBumps, 6),
|
||||
@@ -261,10 +261,10 @@ createAreas(
|
||||
scaleByMapSize(20, 100),
|
||||
5);
|
||||
|
||||
log("Painting water...");
|
||||
g_Map.log("Painting water");
|
||||
paintTileClassBasedOnHeight(-Infinity, 0, Elevation_ExcludeMin_ExcludeMax, clWater);
|
||||
|
||||
log("Painting land...");
|
||||
g_Map.log("Painting land");
|
||||
for (let mapX = 0; mapX < mapSize; ++mapX)
|
||||
for (let mapZ = 0; mapZ < mapSize; ++mapZ)
|
||||
{
|
||||
@@ -336,7 +336,7 @@ function getCosricaSardiniaTerrain(position)
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating mines...");
|
||||
g_Map.log("Creating mines");
|
||||
for (let mine of [eMetalMine, eStoneMine])
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
@@ -360,7 +360,7 @@ for (let mine of [eMetalMine, eStoneMine])
|
||||
scaleByMapSize(6, 25),
|
||||
1000);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createAreas(
|
||||
new ClumpPlacer(20, 0.3, 0.06, 0.5),
|
||||
[
|
||||
@@ -374,7 +374,7 @@ createAreas(
|
||||
clCliffs, 1),
|
||||
scaleByMapSize(10, 40));
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -401,7 +401,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -419,7 +419,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262),
|
||||
50);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
var rocksGroup = new SimpleGroup(
|
||||
[
|
||||
new SimpleObject(aLargeRock, 1, 2, 0, 1),
|
||||
@@ -446,7 +446,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(100, 800),
|
||||
500);
|
||||
|
||||
log("Creating decorative plants...");
|
||||
g_Map.log("Creating decorative plants");
|
||||
var plantGroups = [
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -475,7 +475,7 @@ for (let group of plantGroups)
|
||||
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating animals...");
|
||||
g_Map.log("Creating animals");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(ePig, 2,4, 0,3)]),
|
||||
0,
|
||||
@@ -486,7 +486,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(20, 100),
|
||||
50);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(eFish, 1,2, 0,3)]),
|
||||
0,
|
||||
|
||||
@@ -13,6 +13,7 @@ const tGrassShrubs = "medit_shrubs";
|
||||
const tCliffShrubs = ["medit_cliff_aegean_shrubs", "medit_cliff_italia_grass","medit_cliff_italia"];
|
||||
const tCliff = ["medit_cliff_italia", "medit_cliff_italia", "medit_cliff_italia_grass"];
|
||||
const tForestFloor = "medit_forestfloor_a";
|
||||
const tWater = "medit_sea_depths";
|
||||
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
@@ -88,7 +89,7 @@ var playerPosition = [];
|
||||
|
||||
function createCycladicArchipelagoIsland(position, tileClass, radius, coralRadius)
|
||||
{
|
||||
log("Creating deep ocean rocks...");
|
||||
// Deep ocean rocks
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radius + coralRadius), 0.7, 0.1, 10, position),
|
||||
[
|
||||
@@ -97,7 +98,7 @@ function createCycladicArchipelagoIsland(position, tileClass, radius, coralRadiu
|
||||
],
|
||||
avoidClasses(clCoral, 0, clPlayer, 0));
|
||||
|
||||
log("Creating island...");
|
||||
// Island
|
||||
areas.push(
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radius), 0.7, 0.1, 10, position),
|
||||
@@ -109,7 +110,7 @@ function createCycladicArchipelagoIsland(position, tileClass, radius, coralRadiu
|
||||
avoidClasses(clPlayer, 0)));
|
||||
}
|
||||
|
||||
log("Creating player islands...");
|
||||
g_Map.log("Creating player islands");
|
||||
for (let i = 0; i < islandCount; ++i)
|
||||
{
|
||||
let isPlayerIsland = numPlayers >= 6 || i == startingPlaces[numPlayers - 1][nPlayer];
|
||||
@@ -121,7 +122,7 @@ for (let i = 0; i < islandCount; ++i)
|
||||
createCycladicArchipelagoIsland(islandPosition[i], isPlayerIsland ? clPlayer : clIsland, islandRadius, scaleByMapSize(1, 5));
|
||||
}
|
||||
|
||||
log("Creating central islands...");
|
||||
g_Map.log("Creating central islands");
|
||||
for (let position of centralIslandPosition)
|
||||
createCycladicArchipelagoIsland(position, clIsland, centralIslandRadius, 2);
|
||||
|
||||
@@ -157,7 +158,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreasInAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 60), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 3),
|
||||
@@ -167,7 +168,7 @@ createAreasInAreas(
|
||||
|
||||
Engine.SetProgress(34);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreasInAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -183,7 +184,7 @@ Engine.SetProgress(38);
|
||||
|
||||
paintTileClassBasedOnHeight(-Infinity, 0, Elevation_ExcludeMin_ExcludeMax, clWater);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var forestTypes = [
|
||||
[[tForestFloor, tGrass, pPalmForest], [tForestFloor, pPalmForest]],
|
||||
[[tForestFloor, tGrass, pPineForest], [tForestFloor, pPineForest]],
|
||||
@@ -204,7 +205,7 @@ for (let type of forestTypes)
|
||||
areas);
|
||||
Engine.SetProgress(42);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 6)],
|
||||
@@ -212,7 +213,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(46);
|
||||
|
||||
log("Creating small stone mines...");
|
||||
g_Map.log("Creating small stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clRock, 2)],
|
||||
@@ -220,7 +221,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 5, clMetal, 6, clRock, 6)],
|
||||
@@ -228,7 +229,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(54);
|
||||
|
||||
log("Creating shrub patches...");
|
||||
g_Map.log("Creating shrub patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreasInAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -242,7 +243,7 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
areas);
|
||||
Engine.SetProgress(58);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreasInAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -256,7 +257,7 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
areas);
|
||||
Engine.SetProgress(62);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
g_Map.log("Creating straggler trees");
|
||||
for (let tree of [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine])
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup([new SimpleObject(tree, 1,1, 0,1)], true, clForest),
|
||||
@@ -266,7 +267,7 @@ for (let tree of [oCarob, oBeech, oLombardyPoplar, oLombardyPoplar, oPine])
|
||||
);
|
||||
Engine.SetProgress(66);
|
||||
|
||||
log("Create straggler cypresses...");
|
||||
g_Map.log("Create straggler cypresses");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCypress2, 1,3, 0,3), new SimpleObject(oCypress1, 0,2, 0,2)],
|
||||
true
|
||||
@@ -277,7 +278,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Create straggler date palms...");
|
||||
g_Map.log("Create straggler date palms");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDateS, 1,3, 0,3), new SimpleObject(oDateT, 0,2, 0,2)],
|
||||
true
|
||||
@@ -288,7 +289,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(74);
|
||||
|
||||
log("Creating rocks...");
|
||||
g_Map.log("Creating rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockSmall, 0,3, 0,2), new SimpleObject(aRockMed, 0,2, 0,2),
|
||||
new SimpleObject(aRockLarge, 0,1, 0,2)]
|
||||
@@ -299,7 +300,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(78);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -310,7 +311,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(82);
|
||||
|
||||
log("Creating berry bushes...");
|
||||
g_Map.log("Creating berry bushes");
|
||||
group = new SimpleGroup([new SimpleObject(oBerryBush, 5,7, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 2, clForest, 1, clHill, 1, clCity, 10, clMetal, 6, clRock, 2, clFood, 8),
|
||||
@@ -318,7 +319,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(86);
|
||||
|
||||
log("Creating Fish...");
|
||||
g_Map.log("Creating Fish");
|
||||
group = new SimpleGroup([new SimpleObject(oFish, 1,1, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[stayClasses(clWater,1),avoidClasses(clFood, 8)],
|
||||
@@ -326,7 +327,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating Whales...");
|
||||
g_Map.log("Creating Whales");
|
||||
group = new SimpleGroup([new SimpleObject(oWhale, 1,1, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[stayClasses(clWater,1),avoidClasses(clFood, 8, clPlayer,4,clIsland,4)],
|
||||
@@ -334,7 +335,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(94);
|
||||
|
||||
log("Creating shipwrecks...");
|
||||
g_Map.log("Creating shipwrecks");
|
||||
group = new SimpleGroup([new SimpleObject(oShipwreck, 1,1, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[stayClasses(clWater,1),avoidClasses(clFood, 8)],
|
||||
@@ -342,7 +343,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(98);
|
||||
|
||||
log("Creating shipwreck debris...");
|
||||
g_Map.log("Creating shipwreck debris");
|
||||
group = new SimpleGroup([new SimpleObject(oShipDebris, 1,2, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[stayClasses(clWater,1),avoidClasses(clFood, 8)],
|
||||
|
||||
@@ -254,7 +254,7 @@ var fortressDanubiusSpikes = new Fortress(
|
||||
var gallicCC = mapSize >= smallMapSize;
|
||||
if (gallicCC)
|
||||
{
|
||||
log("Creating gallic villages...");
|
||||
g_Map.log("Creating gallic villages");
|
||||
let gaulCityRadius = 12;
|
||||
let gaulCityBorderDistance = mapSize < mediumMapSize ? 10 : 18;
|
||||
|
||||
@@ -397,16 +397,14 @@ Engine.SetProgress(30);
|
||||
|
||||
paintTileClassBasedOnHeight(-Infinity, 0.7, Elevation_ExcludeMin_ExcludeMax, clWater);
|
||||
|
||||
log("Creating shores...");
|
||||
g_Map.log("Creating shores");
|
||||
paintTerrainBasedOnHeight(-Infinity, heightShore, 0, tWater);
|
||||
paintTerrainBasedOnHeight(heightShore, heightLand, 0, tShore);
|
||||
Engine.SetProgress(35);
|
||||
|
||||
log("Creating bumps...");
|
||||
createBumps(avoidClasses(clPlayer, 6, clWater, 2, clPath, 1, clGauls, 1), scaleByMapSize(30, 300), 1, 8, 4, 0, 3);
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating hills...");
|
||||
if (randBool())
|
||||
createHills(
|
||||
[tCliff, tCliff, tCliff],
|
||||
@@ -431,7 +429,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tGrass, tGrass2],[tGrass2, tGrass3], [tGrass3, tGrass]],
|
||||
@@ -442,7 +440,7 @@ createLayeredPatches(
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating islands...");
|
||||
g_Map.log("Creating islands");
|
||||
createAreas(
|
||||
new ChainPlacer(Math.floor(scaleByMapSize(3, 4)), Math.floor(scaleByMapSize(4, 8)), Math.floor(scaleByMapSize(50, 80)), 0.5),
|
||||
[
|
||||
@@ -455,13 +453,12 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating island bumps...");
|
||||
createBumps(stayClasses(clIsland, 2), scaleByMapSize(50, 400), 1, 8, 4, 0, 3);
|
||||
|
||||
log("Paint seabed...");
|
||||
g_Map.log("Painting seabed");
|
||||
paintTerrainBasedOnHeight(-20, -3, 3, tSeaDepths);
|
||||
|
||||
log("Creating island metal mines...");
|
||||
g_Map.log("Creating island metal mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
0,
|
||||
@@ -469,7 +466,7 @@ createObjectGroupsDeprecated(
|
||||
500,
|
||||
1);
|
||||
|
||||
log("Creating island stone mines...");
|
||||
g_Map.log("Creating island stone mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock),
|
||||
0,
|
||||
@@ -478,7 +475,7 @@ createObjectGroupsDeprecated(
|
||||
1);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating island towers...");
|
||||
g_Map.log("Creating island towers");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oTower, 1, 1, 0, 4)], true, clTower),
|
||||
0,
|
||||
@@ -486,7 +483,7 @@ createObjectGroupsDeprecated(
|
||||
500,
|
||||
1);
|
||||
|
||||
log("Creating island outposts...");
|
||||
g_Map.log("Creating island outposts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oOutpost, 1, 1, 0, 4)], true, clOutpost),
|
||||
0,
|
||||
@@ -494,7 +491,7 @@ createObjectGroupsDeprecated(
|
||||
500,
|
||||
1);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
0,
|
||||
@@ -502,7 +499,7 @@ createObjectGroupsDeprecated(
|
||||
500,
|
||||
1);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock),
|
||||
0,
|
||||
@@ -510,7 +507,7 @@ createObjectGroupsDeprecated(
|
||||
500,
|
||||
1);
|
||||
|
||||
log("Creating stone ruins...");
|
||||
g_Map.log("Creating stone ruins");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oStoneRuins, 1, 1, 0, 4)], true, clRock),
|
||||
0,
|
||||
@@ -519,7 +516,7 @@ createObjectGroupsDeprecated(
|
||||
1);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating decoratives...");
|
||||
g_Map.log("Creating decoratives");
|
||||
for (let i = 0; i < 2; ++i)
|
||||
createDecoration(
|
||||
[
|
||||
@@ -553,7 +550,7 @@ for (let i = 0; i < 2; ++i)
|
||||
[stayClasses(clIsland, 4) , avoidClasses(clForest, 1, clRock, 4, clMetal, 4)]);
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oFish, 2, 3, 0, 2)]
|
||||
@@ -566,7 +563,7 @@ createFood(
|
||||
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating huntable animals...");
|
||||
g_Map.log("Creating huntable animals");
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oSheep, 5, 5, 0, 4)],
|
||||
@@ -585,7 +582,7 @@ createFood(
|
||||
avoidClasses(clIsland, 2, clFood, 10, clWater, 5, clPlayer, 16, clHill, 2, clGauls, 5, clPath, 1),
|
||||
clFood);
|
||||
|
||||
log("Creating violent animals...");
|
||||
g_Map.log("Creating violent animals");
|
||||
if (!isNomad())
|
||||
createFood(
|
||||
[
|
||||
@@ -603,7 +600,7 @@ if (!isNomad())
|
||||
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating fruits...");
|
||||
g_Map.log("Creating fruits");
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oApple, 3, 5, 4, 7)],
|
||||
@@ -632,7 +629,7 @@ createStragglerTrees(
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating animals on islands...");
|
||||
g_Map.log("Creating animals on islands");
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oSheep, 4, 6, 0, 4)],
|
||||
@@ -649,7 +646,7 @@ createFood(
|
||||
|
||||
Engine.SetProgress(98);
|
||||
|
||||
log("Creating treasures...");
|
||||
g_Map.log("Creating treasures");
|
||||
for (let i = 0; i < randomTreasureCount; ++i)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
@@ -661,7 +658,7 @@ for (let i = 0; i < randomTreasureCount; ++i)
|
||||
1,
|
||||
50);
|
||||
|
||||
log("Creating gallic decoratives...");
|
||||
g_Map.log("Creating gallic decoratives");
|
||||
createDecoration(
|
||||
[
|
||||
[new SimpleObject(aBucket, 1, 1, 0, 1)],
|
||||
@@ -681,7 +678,7 @@ createDecoration(
|
||||
],
|
||||
avoidClasses(clForest, 1, clPlayer, 10, clBaseResource, 5, clHill, 1, clFood, 1, clWater, 5, clRock, 4, clMetal, 4, clGauls, 5, clPath, 1));
|
||||
|
||||
log("Creating spawn points for ships...");
|
||||
g_Map.log("Creating spawn points for ships");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(triggerPointShipSpawn, 1, 1, 0, 0)], true, clShip),
|
||||
0,
|
||||
@@ -689,7 +686,7 @@ createObjectGroupsDeprecated(
|
||||
10000,
|
||||
1000);
|
||||
|
||||
log("Creating patrol points for ships...");
|
||||
g_Map.log("Creating patrol points for ships");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(triggerPointShipPatrol, 1, 1, 0, 0)], true, clShipPatrol),
|
||||
0,
|
||||
@@ -697,7 +694,7 @@ createObjectGroupsDeprecated(
|
||||
10000,
|
||||
1000);
|
||||
|
||||
log("Creating ungarrison points for ships...");
|
||||
g_Map.log("Creating ungarrison points for ships");
|
||||
for (let i = 0; i < 2; ++i)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
@@ -712,12 +709,11 @@ for (let i = 0; i < 2; ++i)
|
||||
20000,
|
||||
1);
|
||||
|
||||
log("Creating patrol points for land attackers...");
|
||||
clMiddle.add(mapCenter);
|
||||
|
||||
log("Creating triggerpoint to allow the triggerscript to determine the river direction...");
|
||||
g_Map.log("Creating riverdirection triggerpoint");
|
||||
g_Map.placeEntityAnywhere(triggerPointRiverDirection, 0, Vector2D.add(mapCenter, new Vector2D(0, 1).rotate(startAngle)), randomAngle());
|
||||
|
||||
g_Map.log("Creating patrol points for land attackers");
|
||||
clMiddle.add(mapCenter);
|
||||
for (let i = 0; i < 2; ++i)
|
||||
{
|
||||
createObjectGroupsDeprecated(
|
||||
@@ -764,7 +760,7 @@ for (let i = 0; i < 2; ++i)
|
||||
100);
|
||||
}
|
||||
|
||||
log("Creating water logs...");
|
||||
g_Map.log("Creating water logs");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aWaterLog, 1, 1, 0, 0)], true, clWaterLog),
|
||||
0,
|
||||
@@ -776,7 +772,7 @@ placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clMetal, 4, clRock, 4, clIs
|
||||
|
||||
if (randBool(2/3))
|
||||
{
|
||||
log("Setting day theme...");
|
||||
g_Map.log("Setting day theme");
|
||||
setSkySet("cumulus");
|
||||
|
||||
setSunColor(0.9, 0.8, 0.5);
|
||||
@@ -793,7 +789,7 @@ if (randBool(2/3))
|
||||
}
|
||||
else
|
||||
{
|
||||
log("Setting night theme...");
|
||||
g_Map.log("Setting night theme");
|
||||
setSkySet("dark");
|
||||
|
||||
setSunColor(0.4, 0.9, 1.2);
|
||||
|
||||
@@ -103,7 +103,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(10);
|
||||
|
||||
log("Painting paths...");
|
||||
g_Map.log("Painting paths");
|
||||
var pathBlending = numPlayers <= 4;
|
||||
for (let i = 0; i < numPlayers + (pathBlending ? 1 : 0); ++i)
|
||||
for (let j = pathBlending ? 0 : i + 1; j < numPlayers + 1; ++j)
|
||||
@@ -122,7 +122,7 @@ for (let i = 0; i < numPlayers + (pathBlending ? 1 : 0); ++i)
|
||||
}
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Placing expansion resources...");
|
||||
g_Map.log("Placing expansion resources");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
for (let rIndex = 0; rIndex < resourcePerPlayer.length; ++rIndex)
|
||||
{
|
||||
@@ -146,11 +146,11 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
}
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Placing temple...");
|
||||
g_Map.log("Placing temple");
|
||||
g_Map.placeEntityPassable(templateTemple, 0, mapCenter, randomAngle());
|
||||
clBaseResource.add(mapCenter);
|
||||
|
||||
log("Creating central mountain...");
|
||||
g_Map.log("Creating central mountain");
|
||||
createArea(
|
||||
new ClumpPlacer(Math.square(radiusEC), 1/2, 1/8, 1, mapCenter),
|
||||
[
|
||||
|
||||
@@ -142,7 +142,7 @@ createForests(
|
||||
forestTrees);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tGrass,tGrassA], tGrassB, [tGrassB,tGrassC]],
|
||||
@@ -151,7 +151,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
[tGrassPatchBlend, tGrassPatch],
|
||||
@@ -161,7 +161,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -170,7 +170,7 @@ createMines(
|
||||
avoidClasses(clWater, 2, clForest, 1, clPlayer, 20, clRock, 10, clHill, 2),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -78,7 +78,7 @@ var playerMountainSize = defaultPlayerBaseRadius();
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
log("Creating CC mountains...");
|
||||
g_Map.log("Creating CC mountains");
|
||||
if (!isNomad())
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
@@ -137,7 +137,7 @@ Engine.SetProgress(15);
|
||||
createVolcano(mapCenter, clHill, tHillVeryDark, undefined, false, ELEVATION_SET);
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating lakes...");
|
||||
g_Map.log("Creating lakes");
|
||||
createAreas(
|
||||
new ChainPlacer(5, 6, Math.floor(scaleByMapSize(10, 14)), 0.1),
|
||||
[
|
||||
@@ -153,7 +153,7 @@ createBumps(avoidClasses(clPlayer, 0, clHill, 0), scaleByMapSize(50, 300), 1, 10
|
||||
paintTileClassBasedOnHeight(10, 100, 0, clBumps);
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -165,7 +165,7 @@ createAreas(
|
||||
scaleByMapSize(2, 8) * numPlayers);
|
||||
Engine.SetProgress(35);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(1200, 3000, 0.7);
|
||||
var types = [
|
||||
[[tGrassB, tGrassA, pForestD], [tGrassB, pForestD]],
|
||||
@@ -188,7 +188,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating hill patches...");
|
||||
g_Map.log("Creating hill patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
for (let type of [[tHillMedium1, tHillDark], [tHillDark, tHillMedium2], [tHillMedium1, tHillMedium2]])
|
||||
createAreas(
|
||||
@@ -206,7 +206,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
scaleByMapSize(20, 80));
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
[tGrassPatchBlend, tGrassPatch],
|
||||
@@ -222,7 +222,7 @@ createLayeredPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -245,7 +245,7 @@ createObjectGroupsDeprecated(
|
||||
100);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock),
|
||||
0,
|
||||
@@ -262,7 +262,7 @@ createObjectGroupsDeprecated(
|
||||
100);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
0,
|
||||
@@ -282,7 +282,7 @@ Engine.SetProgress(65);
|
||||
|
||||
if (!isNomad())
|
||||
{
|
||||
log("Creating towers...");
|
||||
g_Map.log("Creating towers");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oTower, 1, 1, 0, 4)], true, clTower),
|
||||
0,
|
||||
@@ -420,7 +420,7 @@ createStragglerTrees(
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating straggler bushes...");
|
||||
g_Map.log("Creating straggler bushes");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oBush, 1, 3, 0, 3)],
|
||||
@@ -440,7 +440,7 @@ createObjectGroupsDeprecated(
|
||||
stragglerTrees);
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating rain drops...");
|
||||
g_Map.log("Creating rain drops");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(aRain, 2, 2, 1, 4)],
|
||||
|
||||
@@ -66,7 +66,7 @@ const numPlayers = getNumPlayers();
|
||||
const mapSize = g_Map.getSize();
|
||||
const mapCenter = g_Map.getCenter();
|
||||
|
||||
log("Creating player islands...")
|
||||
g_Map.log("Creating player islands...")
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.38));
|
||||
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
@@ -110,7 +110,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating central island...");
|
||||
g_Map.log("Creating central island");
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
6,
|
||||
@@ -167,7 +167,7 @@ for (let m = 0; m < randIntInclusive(8, 17); ++m)
|
||||
[avoidClasses(clBaseResource, 2, clPlayer, 40), stayClasses(clHill, 6)]);
|
||||
}
|
||||
|
||||
log("Creating center bounty...");
|
||||
g_Map.log("Creating center bounty");
|
||||
createObjectGroup(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oMetalLarge, 3, 6, 25, Math.floor(fractionToTiles(0.25)))],
|
||||
@@ -186,7 +186,7 @@ createObjectGroup(
|
||||
0,
|
||||
[avoidClasses(clBaseResource, 20, clPlayer, 40, clMountain, 4), stayClasses(clHill, 10)]);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oFish, 2, 3, 0, 2)], true, clFood),
|
||||
0,
|
||||
@@ -209,7 +209,7 @@ createStragglerTrees(
|
||||
stragglerTrees);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
var numb = currentBiome() == "generic/savanna" ? 3 : 1;
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
@@ -221,11 +221,11 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
avoidClasses(clForest, 0, clMountain, 0, clDirt, 5, clPlayer, 10),
|
||||
numb * scaleByMapSize(15, 45));
|
||||
|
||||
log("Painting shorelines...");
|
||||
g_Map.log("Painting shorelines");
|
||||
paintTerrainBasedOnHeight(1, heightLand, 0, tMainTerrain);
|
||||
paintTerrainBasedOnHeight(heightSeaGround, 1, 3, tTier1Terrain);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -233,7 +233,6 @@ for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5,
|
||||
avoidClasses(clForest, 0, clMountain, 0, clDirt, 5, clPlayer, 10),
|
||||
numb * scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating food...");
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oMainHuntableAnimal, 5, 7, 0, 4)],
|
||||
@@ -255,7 +254,6 @@ createFood(
|
||||
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating decoration...");
|
||||
var planetm = currentBiome() == "generic/tropic" ? 8 : 1;
|
||||
createDecoration(
|
||||
[
|
||||
@@ -274,7 +272,6 @@ createDecoration(
|
||||
],
|
||||
avoidClasses(clForest, 2, clPlayer, 20, clMountain, 5, clFood, 1, clBaseResource, 2));
|
||||
|
||||
log("Creating water forests...");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(0.1));
|
||||
createForests(
|
||||
[tMainTerrain, tForestFloor1, tForestFloor2, pForest1, pForest2],
|
||||
@@ -282,7 +279,7 @@ createForests(
|
||||
clForest,
|
||||
forestTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aGrassShort, 1, 2, 0, 1)]),
|
||||
0,
|
||||
|
||||
@@ -67,12 +67,13 @@ var treasures = [
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
g_Map.log("Creating playerbases);
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
if (isNomad())
|
||||
break;
|
||||
|
||||
log("Creating base for player " + playerIDs[i] + "...");
|
||||
// CC and units
|
||||
for (let dist of [6, 8])
|
||||
{
|
||||
let ents = getStartingEntities(playerIDs[i]);
|
||||
@@ -83,7 +84,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
placeStartingEntities(playerPosition[i], playerIDs[i], ents, dist);
|
||||
}
|
||||
|
||||
log("Creating treasure for player " + playerIDs[i] + "...");
|
||||
// Treasure
|
||||
let bbAngle = BUILDING_ORIENTATION;
|
||||
for (let treasure of treasures)
|
||||
{
|
||||
@@ -92,7 +93,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
bbAngle += Math.PI / 2;
|
||||
}
|
||||
|
||||
log("Painting ground texture for player " + playerIDs[i] + "...");
|
||||
// Ground texture
|
||||
var civ = getCivCode(playerIDs[i]);
|
||||
var tilesSize = civ == "cart" ? 24 : 22;
|
||||
const minBoundX = Math.max(0, playerPosition[i].x - tilesSize);
|
||||
@@ -115,7 +116,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
}
|
||||
}
|
||||
|
||||
log("Placing fortress for player " + playerIDs[i] + "...");
|
||||
// Fortress
|
||||
if (civ == "brit" || civ == "gaul" || civ == "iber")
|
||||
{
|
||||
var wall = ["gate", "tower", "long",
|
||||
@@ -135,7 +136,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
placeCustomFortress(playerPosition[i], new Fortress("Spahbod", wall), civ, playerIDs[i], -Math.PI/4);
|
||||
}
|
||||
|
||||
log("Creating lakes...");
|
||||
g_Map.log("Creating lakes");
|
||||
var numLakes = Math.round(scaleByMapSize(1,4) * numPlayers);
|
||||
var waterAreas = createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(100,250), 0.8, 0.1, 10),
|
||||
@@ -149,7 +150,7 @@ var waterAreas = createAreas(
|
||||
|
||||
Engine.SetProgress(15);
|
||||
|
||||
log("Creating reeds...");
|
||||
g_Map.log("Creating reeds");
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aReeds, 5,10, 0,4), new SimpleObject(aLillies, 0,1, 0,4)], true),
|
||||
0,
|
||||
@@ -159,7 +160,7 @@ createObjectGroupsByAreasDeprecated(
|
||||
|
||||
Engine.SetProgress(25);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oFish, 1,1, 0,1)],
|
||||
@@ -175,11 +176,10 @@ Engine.SetProgress(30);
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 5));
|
||||
Engine.SetProgress(35);
|
||||
|
||||
log("Creating hills...");
|
||||
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 5, clWater, 5, clHill, 15), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForestD], [tForestFloor, pForestD]],
|
||||
@@ -199,7 +199,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tGrass,tGrassA],[tGrassA,tGrassB], [tGrassB,tGrassC]],
|
||||
@@ -209,7 +209,7 @@ createLayeredPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tGrassPatch,
|
||||
@@ -218,7 +218,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -228,7 +228,7 @@ createMines(
|
||||
clRock);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -4,7 +4,7 @@ Engine.LoadLibrary("rmbiome");
|
||||
|
||||
setSelectedBiome();
|
||||
|
||||
log("Picking a random elevation with a bias towards lower elevations...");
|
||||
// Random elevation with a bias towards lower elevations
|
||||
var randElevation = randIntInclusive(0, 29);
|
||||
if (randElevation < 25)
|
||||
randElevation = randIntInclusive(1, 4);
|
||||
|
||||
@@ -73,7 +73,7 @@ var radiusCentralHill = fractionToTiles(0.12);
|
||||
|
||||
var [playerIDs, playerPosition, playerAngle, startAngle] = playerPlacementCircle(radiusPlayers);
|
||||
|
||||
log("Determining number of rivers between players...");
|
||||
g_Map.log("Determining number of rivers between players");
|
||||
var split = 1;
|
||||
if (mapSize == 128 && numPlayers <= 2)
|
||||
split = 2;
|
||||
@@ -114,14 +114,14 @@ else if (mapSize == 448)
|
||||
split = 2;
|
||||
}
|
||||
|
||||
log("Creating big circular lake...");
|
||||
g_Map.log("Creating big circular lake");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusCentralLake), 1, 1, 10, mapCenter),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightShallow, 4));
|
||||
|
||||
g_Map.log("Creating rivers between players");
|
||||
for (let m = 0; m < numPlayers * split; ++m)
|
||||
{
|
||||
log("Creating rivers between players...");
|
||||
let angle = startAngle + (m + 0.5) * 2 * Math.PI / (numPlayers * split);
|
||||
let position1 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.15), 0).rotate(-angle));
|
||||
let position2 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.6), 0).rotate(-angle));
|
||||
@@ -129,32 +129,35 @@ for (let m = 0; m < numPlayers * split; ++m)
|
||||
new PathPlacer(position1, position2, scaleByMapSize(14, 40), 0, scaleByMapSize(3, 9), 0.2, 0.05),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 4),
|
||||
avoidClasses(clPlayer, 5));
|
||||
}
|
||||
|
||||
log("Create path from the island to the center...");
|
||||
angle = startAngle + m * 2 * Math.PI / (numPlayers * split);
|
||||
position1 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.05), 0).rotate(-angle));
|
||||
position2 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.49), 0).rotate(-angle));
|
||||
g_Map.log("Create path from the island to the center");
|
||||
for (let m = 0; m < numPlayers * split; ++m)
|
||||
{
|
||||
let angle = startAngle + m * 2 * Math.PI / (numPlayers * split);
|
||||
let position1 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.05), 0).rotate(-angle));
|
||||
let position2 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.49), 0).rotate(-angle));
|
||||
createArea(
|
||||
new PathPlacer(position1, position2, scaleByMapSize(10, 40), 0, scaleByMapSize(3, 9), 0.2, 0.05),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightLand, 4));
|
||||
}
|
||||
|
||||
log("Creating ring of land connecting players...");
|
||||
g_Map.log("Creating ring of land connecting players");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusCentralRingLand), 1, 1, 10, mapCenter),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightRing, 4));
|
||||
|
||||
log("Creating ring of water separating the central hill from the ring...");
|
||||
g_Map.log("Creating inner ring of water");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusCentralWaterRing), 1, 1, 10, mapCenter),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightShallow, 3));
|
||||
|
||||
log("Creating central island...");
|
||||
g_Map.log("Creating central island");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusCentralIsland), 1, 1, 10, mapCenter),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightRing, 3));
|
||||
|
||||
log("Creating hill on the central island...");
|
||||
g_Map.log("Creating hill on the central island");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(radiusCentralHill), 1, 1, 10, mapCenter),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightHill, 8));
|
||||
@@ -209,7 +212,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
|
||||
@@ -218,7 +221,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
@@ -227,7 +230,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -236,7 +239,7 @@ createMines(
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -245,7 +248,7 @@ createMines(
|
||||
clMetal
|
||||
);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oFish, 1,1, 0,3)], true, clFood),
|
||||
0,
|
||||
|
||||
@@ -58,7 +58,7 @@ var clLand = g_Map.createTileClass();
|
||||
var clRiver = g_Map.createTileClass();
|
||||
var clShallow = g_Map.createTileClass();
|
||||
|
||||
log("Create the continent body");
|
||||
g_Map.log("Create the continent body");
|
||||
var startAngle = randomAngle();
|
||||
var continentCenter = new Vector2D(fractionToTiles(0.5), fractionToTiles(0.7));
|
||||
var continentCenterR = continentCenter.clone().rotateAround(startAngle, mapCenter).round()
|
||||
@@ -153,7 +153,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tGrass,tGrassA],[tGrassA,tGrassB], [tGrassB,tGrassC]],
|
||||
@@ -162,7 +162,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tGrassPatch,
|
||||
@@ -171,7 +171,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -180,7 +180,7 @@ createMines(
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clRiver, 1), stayClasses(clLand, 5)],
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -207,7 +207,7 @@ createDecoration(
|
||||
],
|
||||
[avoidClasses(clPlayer, 1, clDirt, 1, clRiver, 1), stayClasses(clLand, 6)]);
|
||||
|
||||
log("Create water decoration in the shallow parts");
|
||||
g_Map.log("Create water decoration in the shallow parts");
|
||||
createDecoration(
|
||||
[
|
||||
[new SimpleObject(aReeds, 1, 3, 0, 1)],
|
||||
|
||||
@@ -95,7 +95,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating the gulf...");
|
||||
g_Map.log("Creating the gulf");
|
||||
var gulfLakePositions = [
|
||||
{ "numCircles": 200, "x": fractionToTiles(0), "radius": fractionToTiles(0.175) },
|
||||
{ "numCircles": 120, "x": fractionToTiles(0.3), "radius": fractionToTiles(0.2) },
|
||||
@@ -142,7 +142,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tPrimary,tSecondary],[tSecondary,tHalfSnow], [tHalfSnow,tSnowLimited]],
|
||||
@@ -151,7 +151,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tHalfSnow,
|
||||
@@ -160,7 +160,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -169,7 +169,7 @@ createMines(
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -122,7 +122,7 @@ paintRiver({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
for (let i = 0; i < scaleByMapSize(10, 20); ++i)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oFish, 2, 3, 0, 2)], true, clFood),
|
||||
@@ -132,7 +132,7 @@ for (let i = 0; i < scaleByMapSize(10, 20); ++i)
|
||||
50);
|
||||
Engine.SetProgress(25);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(10, 60), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 3),
|
||||
@@ -141,7 +141,7 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -154,7 +154,7 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(35);
|
||||
|
||||
log("Creating mainland forests...");
|
||||
g_Map.log("Creating mainland forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]]
|
||||
@@ -172,7 +172,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating highland forests...");
|
||||
g_Map.log("Creating highland forests");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestP], [tGrassDForest, pForestP]]
|
||||
];
|
||||
@@ -189,7 +189,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -201,7 +201,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -211,21 +211,21 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clRock, 10, clHill, 2)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clRock, 10, clHill, 2)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2)],
|
||||
@@ -234,7 +234,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -246,7 +246,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -257,7 +257,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -267,7 +267,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGoat, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -277,7 +277,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -287,7 +287,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating boar...");
|
||||
g_Map.log("Creating boar");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBoar, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -303,7 +303,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -312,7 +312,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -322,7 +322,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -75,7 +75,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.5, 0.08, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
@@ -83,7 +83,7 @@ createAreas(
|
||||
scaleByMapSize(300, 800)
|
||||
);
|
||||
|
||||
log("Creating the half dried-up lake...");
|
||||
g_Map.log("Creating the half dried-up lake");
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
2,
|
||||
@@ -99,7 +99,7 @@ createArea(
|
||||
],
|
||||
avoidClasses(clPlayer, 2));
|
||||
|
||||
log("Creating more shore jaggedness...");
|
||||
g_Map.log("Creating more shore jaggedness");
|
||||
createAreas(
|
||||
new ChainPlacer(2, Math.floor(scaleByMapSize(4, 6)), 3, 1),
|
||||
[
|
||||
@@ -116,7 +116,7 @@ paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
||||
paintTileClassBasedOnHeight(-6, 0, 1, clWater);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
for (let i = 0; i < scaleByMapSize(12, 30); ++i)
|
||||
{
|
||||
let position = new Vector2D(randIntInclusive(1, mapSize - 1), randIntInclusive(1, mapSize - 1));
|
||||
@@ -127,7 +127,7 @@ for (let i = 0; i < scaleByMapSize(12, 30); ++i)
|
||||
}
|
||||
}
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
0,
|
||||
@@ -136,7 +136,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(aRock, 1, 3, 0, 3)],
|
||||
@@ -148,7 +148,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating boar...");
|
||||
g_Map.log("Creating boar");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oBoar, 1, 2, 0, 4)],
|
||||
@@ -159,7 +159,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(4, 12), 50
|
||||
);
|
||||
|
||||
log("Creating tigers...");
|
||||
g_Map.log("Creating tigers");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oTiger, 2, 2, 0, 4)],
|
||||
@@ -170,7 +170,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(4, 12), 50
|
||||
);
|
||||
|
||||
log("Creating crocodiles...");
|
||||
g_Map.log("Creating crocodiles");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oCrocodile, 2, 4, 0, 4)],
|
||||
@@ -180,7 +180,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(4, 12), 50
|
||||
);
|
||||
|
||||
log("Creating elephants...");
|
||||
g_Map.log("Creating elephants");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -194,7 +194,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(4, 12), 50
|
||||
);
|
||||
|
||||
log("Creating rabbits...");
|
||||
g_Map.log("Creating rabbits");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 5, 6, 0, 4)],
|
||||
@@ -215,7 +215,7 @@ createFood(
|
||||
[avoidClasses(clFood, 20), stayClasses(clWater, 2)],
|
||||
clFood);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5, 7, 0, 4)],
|
||||
@@ -227,7 +227,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating trees...");
|
||||
g_Map.log("Creating trees");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(oTree, 1, 7, 0, 3)],
|
||||
@@ -238,7 +238,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(70, 500)
|
||||
);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[new SimpleObject(aBush, 2, 4, 0, 1.8, -Math.PI/8, Math.PI/8)]
|
||||
|
||||
@@ -73,6 +73,9 @@ var teamPosition = distributePointsOnCircle(numTeams, startAngle, fractionToTile
|
||||
var teamRadius = fractionToTiles(0.05);
|
||||
|
||||
var teamNo = 0;
|
||||
|
||||
g_Map.log("Creating player islands and bases");
|
||||
|
||||
for (let i = 0; i < teams.length; ++i)
|
||||
{
|
||||
if (!teams[i] || isNomad())
|
||||
@@ -83,7 +86,6 @@ for (let i = 0; i < teams.length; ++i)
|
||||
let [playerPosition, playerAngle] = distributePointsOnCircle(teams[i].length, startAngle + 2 * Math.PI / teams[i].length, teamRadius, teamPosition[i]);
|
||||
playerPosition.forEach(position => position.round());
|
||||
|
||||
log("Creating island and starting entities for team " + i);
|
||||
for (let p = 0; p < teams[i].length; ++p)
|
||||
{
|
||||
addCivicCenterAreaToClass(playerPosition[p], clPlayer);
|
||||
@@ -105,7 +107,7 @@ for (let i = 0; i < teams.length; ++i)
|
||||
{ "template": oStoneLarge, "angle": mineAngle + Math.PI / 4 }
|
||||
];
|
||||
|
||||
log("Create starting resources for team " + i);
|
||||
// Mines
|
||||
for (let p = 0; p < teams[i].length; ++p)
|
||||
for (let mine of mines)
|
||||
{
|
||||
@@ -116,7 +118,7 @@ for (let i = 0; i < teams.length; ++i)
|
||||
[avoidClasses(clBaseResource, 4, clPlayer, 4), stayClasses(clLand, 5)]);
|
||||
}
|
||||
|
||||
log("Place initial trees for team " + i);
|
||||
// Trees
|
||||
for (let p = 0; p < teams[i].length; ++p)
|
||||
{
|
||||
let tries = 10;
|
||||
@@ -149,7 +151,7 @@ for (let i = 0; i < teams.length; ++i)
|
||||
"baseResourceConstraint": new AndConstraint([avoidClasses(clPlayer, 4), stayClasses(clLand, 5)])
|
||||
});
|
||||
|
||||
log("Creating huntable animals for team " + i + "...");
|
||||
// Huntable animals
|
||||
for (let p = 0; p < teams[i].length; ++p)
|
||||
{
|
||||
createObjectGroup(
|
||||
@@ -168,7 +170,7 @@ for (let i = 0; i < teams.length; ++i)
|
||||
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating big islands...");
|
||||
g_Map.log("Creating big islands");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
Math.floor(scaleByMapSize(4, 8) * (isNomad() ? 2 : 1)),
|
||||
@@ -186,7 +188,7 @@ createAreas(
|
||||
scaleByMapSize(4, 14) * (isNomad() ? 2 : 1),
|
||||
1);
|
||||
|
||||
log("Creating small islands...");
|
||||
g_Map.log("Creating small islands");
|
||||
createAreas(
|
||||
new ChainPlacer(Math.floor(scaleByMapSize(4, 7)), Math.floor(scaleByMapSize(7, 10)), Math.floor(scaleByMapSize(16, 40)), 0.07, undefined, scaleByMapSize(22, 40)),
|
||||
[
|
||||
@@ -200,7 +202,7 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Smoothing heightmap...");
|
||||
g_Map.log("Smoothing heightmap");
|
||||
for (let i = 0; i < 5; ++i)
|
||||
globalSmoothHeightmap();
|
||||
|
||||
@@ -235,7 +237,7 @@ createForests(
|
||||
clForest,
|
||||
forestTrees);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.5),
|
||||
[
|
||||
@@ -278,7 +280,7 @@ createFood(
|
||||
|
||||
if (currentBiome() == "generic/desert")
|
||||
{
|
||||
log("Creating obelisks");
|
||||
g_Map.log("Creating obelisks");
|
||||
let group = new SimpleGroup(
|
||||
[new SimpleObject(oObelisk, 1, 1, 0, 1)],
|
||||
true
|
||||
@@ -290,7 +292,7 @@ if (currentBiome() == "generic/desert")
|
||||
);
|
||||
}
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
let numb = currentBiome() == "generic/savanna" ? 3 : 1;
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
@@ -302,7 +304,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0), stayClasses(clLand, 4)],
|
||||
numb*scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -310,7 +312,7 @@ for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5,
|
||||
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0), stayClasses(clLand, 4)],
|
||||
numb * scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
let group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1, 3, 0, 1)],
|
||||
true
|
||||
@@ -321,7 +323,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1, 2, 0, 1), new SimpleObject(aRockMedium, 1, 3, 0, 2)],
|
||||
true
|
||||
@@ -332,7 +334,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2, 3, 0, 2)],
|
||||
true, clFood
|
||||
@@ -342,7 +344,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
25 * numPlayers, 60
|
||||
);
|
||||
|
||||
log("Creating Whales...");
|
||||
g_Map.log("Creating Whales");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWhale, 1, 1, 0, 3)],
|
||||
true, clFood
|
||||
@@ -352,7 +354,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(5, 20), 100
|
||||
);
|
||||
|
||||
log("Creating shipwrecks...");
|
||||
g_Map.log("Creating shipwrecks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oShipwreck, 1, 1, 0, 1)],
|
||||
true, clFood
|
||||
@@ -362,7 +364,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(12, 16), 100
|
||||
);
|
||||
|
||||
log("Creating shipwreck debris...");
|
||||
g_Map.log("Creating shipwreck debris");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oShipDebris, 1, 1, 0, 1)],
|
||||
true, clFood
|
||||
@@ -372,7 +374,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(10, 20), 100
|
||||
);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
let planetm = currentBiome() == "generic/tropic" ? 8 : 1;
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1, 2, 0, 1, -Math.PI / 8, Math.PI / 8)]
|
||||
@@ -384,7 +386,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2, 4, 0, 1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3, 6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
|
||||
@@ -71,7 +71,7 @@ var [playerIDs, playerPosition, playerAngle] = playerPlacementCircle(fractionToT
|
||||
|
||||
if (!isNomad())
|
||||
{
|
||||
log("Creating player islands and docks...");
|
||||
g_Map.log("Creating player islands and docks");
|
||||
for (let i = 0; i < numPlayers; i++)
|
||||
{
|
||||
createArea(
|
||||
@@ -88,7 +88,7 @@ if (!isNomad())
|
||||
}
|
||||
}
|
||||
|
||||
log("Creating big islands...");
|
||||
g_Map.log("Creating big islands");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
Math.floor(scaleByMapSize(4, 8)),
|
||||
@@ -103,7 +103,7 @@ createAreas(
|
||||
avoidClasses(clLand, scaleByMapSize(8, 12)),
|
||||
scaleByMapSize(4, 14));
|
||||
|
||||
log("Creating small islands...");
|
||||
g_Map.log("Creating small islands");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
Math.floor(scaleByMapSize(4, 7)),
|
||||
@@ -159,14 +159,14 @@ placePlayerBases({
|
||||
}
|
||||
});
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
[avoidClasses(clPlayer, 0), stayClasses(clLand, 3)],
|
||||
scaleByMapSize(20, 100));
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.5),
|
||||
[
|
||||
@@ -177,7 +177,7 @@ createAreas(
|
||||
[avoidClasses(clPlayer, 2, clHill, 15), stayClasses(clLand, 0)],
|
||||
scaleByMapSize(4, 13));
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -200,7 +200,7 @@ if (currentBiome() != "generic/savanna")
|
||||
}
|
||||
|
||||
Engine.SetProgress(50);
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
var numberOfPatches = scaleByMapSize(15, 45) * (currentBiome() == "generic/savanna" ? 3 : 1);
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
@@ -212,7 +212,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 0), stayClasses(clLand, 6)],
|
||||
numberOfPatches);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -222,21 +222,21 @@ for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5,
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 0, clRock, 10, clHill, 1), stayClasses(clLand, 5)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 0, clRock, 10, clHill, 1), stayClasses(clLand, 5)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 0, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 5)],
|
||||
@@ -245,7 +245,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -256,7 +256,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -269,7 +269,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -281,7 +281,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -291,7 +291,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating fruit bush...");
|
||||
g_Map.log("Creating fruit bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFruitBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -301,7 +301,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -323,7 +323,7 @@ var planetm = 1;
|
||||
if (currentBiome() == "generic/tropic")
|
||||
planetm = 8;
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -334,7 +334,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -345,7 +345,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -105,7 +105,7 @@ paintRiver({
|
||||
"meanderShort": 20,
|
||||
"meanderLong": 0,
|
||||
"landFunc": (position, shoreDist1, shoreDist2) => {
|
||||
if (waterPosition + shoreDist1 > mountainPosition)
|
||||
if (waterPosition - shoreDist2 > mountainPosition)
|
||||
clMountains.add(position);
|
||||
},
|
||||
"waterFunc": (position, height, riverFraction) => {
|
||||
@@ -113,7 +113,7 @@ paintRiver({
|
||||
}
|
||||
});
|
||||
|
||||
log("Creating shores...");
|
||||
g_Map.log("Creating shores");
|
||||
for (let i = 0; i < scaleByMapSize(20, 120); ++i)
|
||||
{
|
||||
let position = new Vector2D(fractionToTiles(randFloat(0.28, 0.34)), fractionToTiles(randFloat(0.1, 0.9))).rotateAround(startAngle - Math.PI / 2, mapCenter).round();
|
||||
@@ -133,7 +133,7 @@ paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
|
||||
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.1),
|
||||
[
|
||||
@@ -144,7 +144,7 @@ createAreas(
|
||||
[avoidClasses(clPlayer, 20, clHill, 5, clWater, 2, clBaseResource, 2), stayClasses(clMountains, 0)],
|
||||
scaleByMapSize(5, 40) * numPlayers);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(1000, 6000, 0.7);
|
||||
var types = [
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestD], [tGrass, tGrass, tGrass, pForestD]],
|
||||
@@ -168,7 +168,7 @@ for (let type of types)
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -189,28 +189,28 @@ for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5,
|
||||
avoidClasses(clWater, 8, clForest, 0, clHill, 0, clPlayer, 12, clDirt, 16),
|
||||
scaleByMapSize(20, 80));
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -221,7 +221,7 @@ createObjectGroupsDeprecated(
|
||||
3*scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -232,7 +232,7 @@ createObjectGroupsDeprecated(
|
||||
3*scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush1, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -243,7 +243,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush2, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aBush1, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -254,7 +254,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush3, 1,2, 0,2), new SimpleObject(aBush2, 2,4, 0,2)]
|
||||
);
|
||||
@@ -271,7 +271,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -283,7 +283,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -293,7 +293,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSheep, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -303,7 +303,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
true, clFood
|
||||
|
||||
@@ -61,11 +61,11 @@ var clBaseResource = g_Map.createTileClass();
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
log("Preventing water in player territory...");
|
||||
g_Map.log("Preventing water in player territory");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
addCivicCenterAreaToClass(playerPosition[i], clPlayer);
|
||||
|
||||
log("Creating the lake...")
|
||||
g_Map.log("Creating the lake...")
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
2,
|
||||
@@ -81,7 +81,7 @@ createArea(
|
||||
],
|
||||
avoidClasses(clPlayer, 20));
|
||||
|
||||
log("Creating more shore jaggedness...");
|
||||
g_Map.log("Creating more shore jaggedness");
|
||||
createAreas(
|
||||
new ChainPlacer(2, Math.floor(scaleByMapSize(4, 6)), 3, 1),
|
||||
[
|
||||
@@ -142,7 +142,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
|
||||
@@ -151,7 +151,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
@@ -160,7 +160,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -169,7 +169,7 @@ createMines(
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -73,7 +73,7 @@ var clBaseResource = g_Map.createTileClass();
|
||||
var WATER_WIDTH = 0.1;
|
||||
var horizontal = randBool();
|
||||
|
||||
log("Creating players...");
|
||||
g_Map.log("Creating players");
|
||||
var startAngle = randBool() ? 0 : Math.PI / 2;
|
||||
var playerPosition = playerPlacementLine(startAngle + Math.PI / 2, mapCenter, fractionToTiles(randFloat(0.42, 0.46)));
|
||||
|
||||
@@ -120,7 +120,7 @@ for (let x of [mapBounds.left, mapBounds.right])
|
||||
});
|
||||
Engine.SetProgress(10);
|
||||
|
||||
log("Painting elevation...");
|
||||
g_Map.log("Painting elevation");
|
||||
var noise0 = new Noise2D(scaleByMapSize(4, 16));
|
||||
var noise1 = new Noise2D(scaleByMapSize(8, 32));
|
||||
var noise2 = new Noise2D(scaleByMapSize(15, 60));
|
||||
@@ -184,7 +184,7 @@ for (var ix = 0; ix <= mapSize; ix++)
|
||||
}
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Painting terrain...");
|
||||
g_Map.log("Painting terrain");
|
||||
var noise6 = new Noise2D(scaleByMapSize(10, 40));
|
||||
var noise7 = new Noise2D(scaleByMapSize(20, 80));
|
||||
var noise8 = new Noise2D(scaleByMapSize(13, 52));
|
||||
@@ -355,7 +355,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(aBushSmall, 0,2, 0,2), new SimpleObject(aBushSmallDry, 0,2, 0,2),
|
||||
new SimpleObject(aBushMed, 0,1, 0,2), new SimpleObject(aBushMedDry, 0,1, 0,2)]
|
||||
@@ -366,7 +366,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating rocks...");
|
||||
g_Map.log("Creating rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockSmall, 0,3, 0,2), new SimpleObject(aRockMed, 0,2, 0,2),
|
||||
new SimpleObject(aRockLarge, 0,1, 0,2)]
|
||||
@@ -377,20 +377,20 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating large stone mines...");
|
||||
g_Map.log("Creating large stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 1, clForest, 4, clPlayer, 40, clRock, 60, clMetal, 10, clCliff, 3),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone mines...");
|
||||
g_Map.log("Creating small stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clForest, 4, clWater, 1, clPlayer, 40, clRock, 30, clMetal, 10, clCliff, 3),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,2)], true, clMetal);
|
||||
createObjectGroups(group, 0,
|
||||
avoidClasses(clForest, 4, clWater, 1, clPlayer, 40, clMetal, 50, clCliff, 3),
|
||||
@@ -406,7 +406,7 @@ createStragglerTrees(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating straggler cypresses...");
|
||||
g_Map.log("Creating straggler cypresses");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCypress2, 1,3, 0,3), new SimpleObject(oCypress1, 0,2, 0,2)],
|
||||
true
|
||||
@@ -417,7 +417,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup([new SimpleObject(oSheep, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 5, clForest, 2, clCliff, 1, clPlayer, 20, clMetal, 6, clRock, 6, clFood, 8),
|
||||
@@ -425,7 +425,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroups(
|
||||
new SimpleGroup([new SimpleObject(oFish, 1, 1, 0, 1)], true, clFood),
|
||||
0,
|
||||
@@ -438,7 +438,7 @@ createObjectGroups(
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -449,7 +449,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating berry bushes...");
|
||||
g_Map.log("Creating berry bushes");
|
||||
group = new SimpleGroup([new SimpleObject(oBerryBush, 5,7, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 5, clForest, 2, clCliff, 1, clPlayer, 20, clMetal, 6, clRock, 6, clFood, 8),
|
||||
|
||||
@@ -480,7 +480,7 @@ function createSunkenTerrain()
|
||||
nExp = 0.4;
|
||||
}
|
||||
|
||||
log("Creating central valley...");
|
||||
g_Map.log("Creating central valley");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.29)), 1, 1, 1, mapCenter),
|
||||
[
|
||||
@@ -489,7 +489,7 @@ function createSunkenTerrain()
|
||||
new TileClassPainter(g_TileClasses.valley)
|
||||
]);
|
||||
|
||||
log("Creating central hill...");
|
||||
g_Map.log("Creating central hill");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.21)), 1, 1, 1, mapCenter),
|
||||
[
|
||||
@@ -507,7 +507,7 @@ function createSunkenTerrain()
|
||||
{
|
||||
let playerPosition = getCoords(0.4, i, 0);
|
||||
|
||||
log("Creating path from player to expansion...");
|
||||
// Path from player to expansion
|
||||
let expansionPosition = getCoords(expDist, i, expAngle);
|
||||
createArea(
|
||||
new PathPlacer(playerPosition, expansionPosition, 12, 0.7, 0.5, 0.1, -1),
|
||||
@@ -517,7 +517,7 @@ function createSunkenTerrain()
|
||||
new TileClassPainter(g_TileClasses.step)
|
||||
]);
|
||||
|
||||
log("Creating path from player to the neighbor...");
|
||||
// Path from player to neighbor
|
||||
for (let neighborOffset of [-0.5, 0.5])
|
||||
{
|
||||
let neighborPosition = getCoords(nRoad, i, neighborOffset);
|
||||
@@ -531,7 +531,7 @@ function createSunkenTerrain()
|
||||
]);
|
||||
}
|
||||
|
||||
log("Creating the den of the player...");
|
||||
// Den
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.1)) / (isNomad() ? 2 : 1), 0.9, 0.3, 1, playerPosition),
|
||||
[
|
||||
@@ -540,7 +540,7 @@ function createSunkenTerrain()
|
||||
new TileClassPainter(g_TileClasses.valley)
|
||||
]);
|
||||
|
||||
log("Creating the expansion of the player...");
|
||||
// Expansion
|
||||
createArea(
|
||||
new ClumpPlacer(expSize, 0.9, 0.3, 1, expansionPosition),
|
||||
[
|
||||
@@ -551,7 +551,7 @@ function createSunkenTerrain()
|
||||
[avoidClasses(g_TileClasses.settlement, 2)]);
|
||||
}
|
||||
|
||||
log("Creating the expansions between players after the paths were created...");
|
||||
g_Map.log("Creating the expansions between players");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
let position = getCoords(nExp, i, 0.5);
|
||||
|
||||
@@ -101,14 +101,14 @@ var riverPositions = [
|
||||
new Vector2D(mapBounds.right - 1, mapCenter.y)
|
||||
].map(v => v.rotateAround(startAngle, mapCenter));
|
||||
|
||||
log("Creating the main river...");
|
||||
g_Map.log("Creating the main river");
|
||||
createArea(
|
||||
new PathPlacer(riverPositions[0], riverPositions[1], scaleByMapSize(10, 20), 0.5, 3 * scaleByMapSize(1, 4), 0.1, 0.01),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 4),
|
||||
avoidClasses(clPlayer, 4));
|
||||
Engine.SetProgress(25);
|
||||
|
||||
log("Creating small puddles at the map border to ensure players being separated...");
|
||||
// Creating small puddles at the map border to ensure players being separated
|
||||
for (let riverPosition of riverPositions)
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(scaleByMapSize(5, 10)), 0.95, 0.6, 10, riverPosition),
|
||||
@@ -116,7 +116,7 @@ for (let riverPosition of riverPositions)
|
||||
avoidClasses(clPlayer, 8));
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating the shallows of the main river...");
|
||||
g_Map.log("Creating the shallows of the main river");
|
||||
for (let i = 0; i <= randIntInclusive(3, scaleByMapSize(4, 6)); ++i)
|
||||
{
|
||||
let location = fractionToTiles(randFloat(0.15, 0.85));
|
||||
@@ -153,7 +153,7 @@ paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
@@ -170,7 +170,7 @@ createForests(
|
||||
forestTrees);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -182,7 +182,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
scaleByMapSize(15, 45)
|
||||
);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -192,21 +192,21 @@ for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5,
|
||||
);
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 15, clRock, 10, clHill, 1)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 15, clRock, 10, clHill, 1)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 15, clMetal, 10, clRock, 5, clHill, 1)],
|
||||
@@ -215,7 +215,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(86);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -226,7 +226,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -237,7 +237,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -247,7 +247,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating rabbits...");
|
||||
g_Map.log("Creating rabbits");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -257,7 +257,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -273,7 +273,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -282,7 +282,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -291,7 +291,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
@@ -300,7 +300,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200), 50
|
||||
);
|
||||
|
||||
log("Creating shallow flora...");
|
||||
g_Map.log("Creating shallow flora");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aLillies, 1,2, 0,2), new SimpleObject(aReeds, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -97,7 +97,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
|
||||
@@ -106,7 +106,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
@@ -115,7 +115,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -124,7 +124,7 @@ createMines(
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -71,7 +71,7 @@ var [playerPosition, playerAngle] = playerPlacementCustomAngle(
|
||||
mapCenter,
|
||||
i => startAngle - Math.PI * (i + 1) / (numPlayers + 1));
|
||||
|
||||
log("Creating player islands and docks...");
|
||||
g_Map.log("Creating player islands and docks");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
createArea(
|
||||
@@ -126,7 +126,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(15);
|
||||
|
||||
log("Create the continent body...");
|
||||
g_Map.log("Create the continent body");
|
||||
var continentPosition = Vector2D.add(mapCenter, new Vector2D(0, fractionToTiles(0.38)).rotate(-startAngle)).round()
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.4)), 0.8, 0.08, 10, continentPosition),
|
||||
@@ -138,7 +138,7 @@ createArea(
|
||||
avoidClasses(clIsland, 8));
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating shore jaggedness...");
|
||||
g_Map.log("Creating shore jaggedness");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(15, 80), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -157,7 +157,7 @@ paintTerrainBasedOnHeight(1, 3, 0, tShore);
|
||||
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
||||
Engine.SetProgress(25);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
@@ -166,7 +166,7 @@ createAreas(
|
||||
);
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -179,7 +179,7 @@ createAreas(
|
||||
);
|
||||
Engine.SetProgress(34);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -201,7 +201,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(38);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -223,7 +223,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
|
||||
Engine.SetProgress(42);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -232,7 +232,7 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(46);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)],
|
||||
@@ -240,7 +240,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1), stayClasses(clLand, 7)],
|
||||
@@ -248,7 +248,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(54);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1), stayClasses(clLand, 7)],
|
||||
@@ -256,7 +256,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(58);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -268,7 +268,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(62);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -280,7 +280,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(66);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -291,7 +291,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -302,7 +302,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(74);
|
||||
|
||||
log("Creating fruit bush...");
|
||||
g_Map.log("Creating fruit bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFruitBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -313,7 +313,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(78);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oFish, 2,3, 0,2)], true, clFood),
|
||||
0,
|
||||
@@ -332,7 +332,7 @@ Engine.SetProgress(86);
|
||||
|
||||
var planetm = currentBiome() == "generic/tropic" ? 8 : 1;
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -342,7 +342,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -352,7 +352,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(94);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -99,7 +99,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(10);
|
||||
|
||||
log("Creating dune patches...");
|
||||
g_Map.log("Creating dune patches");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(40, 150), 0.2, 0.1, 0),
|
||||
[
|
||||
@@ -110,7 +110,7 @@ createAreas(
|
||||
scaleByMapSize(5, 20));
|
||||
Engine.SetProgress(15);
|
||||
|
||||
log("Creating sand patches...");
|
||||
g_Map.log("Creating sand patches");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(25, 100), 0.2, 0.1, 0),
|
||||
[
|
||||
@@ -121,7 +121,7 @@ createAreas(
|
||||
scaleByMapSize(15, 50));
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(25, 100), 0.2, 0.1, 0),
|
||||
[
|
||||
@@ -132,7 +132,7 @@ createAreas(
|
||||
scaleByMapSize(15, 50));
|
||||
Engine.SetProgress(25);
|
||||
|
||||
log("Creating oasis...");
|
||||
g_Map.log("Creating oasis");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(oasisRadius), 0.6, 0.15, 0, mapCenter),
|
||||
[
|
||||
@@ -143,7 +143,7 @@ createArea(
|
||||
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating oasis wildlife...");
|
||||
g_Map.log("Creating oasis wildlife");
|
||||
var num = Math.round(Math.PI * oasisRadius / 8);
|
||||
var constraint = new AndConstraint([borderClasses(clOasis, 0, 3), avoidClasses(clOasis, 0)]);
|
||||
for (var i = 0; i < num; ++i)
|
||||
@@ -170,7 +170,7 @@ for (var i = 0; i < num; ++i)
|
||||
0);
|
||||
}
|
||||
|
||||
log("Creating oasis fish...");
|
||||
g_Map.log("Creating oasis fish");
|
||||
constraint = new AndConstraint([borderClasses(clOasis, 15, 0), avoidClasses(clFood, 5)]);
|
||||
num = Math.round(Math.PI * oasisRadius / 16);
|
||||
for (var i = 0; i < num; ++i)
|
||||
@@ -188,7 +188,7 @@ for (var i = 0; i < num; ++i)
|
||||
}
|
||||
Engine.SetProgress(35);
|
||||
|
||||
log("Creating level 1 hills...");
|
||||
g_Map.log("Creating level 1 hills");
|
||||
var hillAreas = createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(50,300), 0.25, 0.1, 0.5),
|
||||
[
|
||||
@@ -201,7 +201,7 @@ var hillAreas = createAreas(
|
||||
);
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating small level 1 hills...");
|
||||
g_Map.log("Creating small level 1 hills");
|
||||
hillAreas = hillAreas.concat(
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(25,150), 0.25, 0.1, 0.5),
|
||||
@@ -216,7 +216,7 @@ hillAreas = hillAreas.concat(
|
||||
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating decorative rocks...");
|
||||
g_Map.log("Creating decorative rocks");
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup(
|
||||
[new RandomObject([aDecorativeRock, aBush2, aBush3], 3, 8, 0, 2)],
|
||||
@@ -228,7 +228,7 @@ createObjectGroupsByAreasDeprecated(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating level 2 hills...");
|
||||
g_Map.log("Creating level 2 hills");
|
||||
createAreasInAreas(
|
||||
new ClumpPlacer(scaleByMapSize(25, 150), 0.25, 0.1, 0),
|
||||
[
|
||||
@@ -242,7 +242,7 @@ createAreasInAreas(
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating level 3 hills...");
|
||||
g_Map.log("Creating level 3 hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(12, 75), 0.25, 0.1, 0),
|
||||
[
|
||||
@@ -255,7 +255,7 @@ createAreas(
|
||||
);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 0),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
@@ -265,7 +265,7 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.5);
|
||||
var num = scaleByMapSize(10,30);
|
||||
createAreas(
|
||||
@@ -280,7 +280,7 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4), new RandomObject(aBushes, 2, 4, 0, 2)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clOasis, 1, clForest, 1, clPlayer, 10, clRock, 10, clHill1, 1)],
|
||||
@@ -293,7 +293,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clOasis, 1, clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill1, 1)],
|
||||
@@ -302,21 +302,21 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating gazelles...");
|
||||
g_Map.log("Creating gazelles");
|
||||
group = new SimpleGroup([new SimpleObject(oGazelle, 5,7, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clOasis, 1, clForest, 0, clPlayer, 5, clHill1, 1, clFood, 10),
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating goats...");
|
||||
g_Map.log("Creating goats");
|
||||
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clOasis, 1, clForest, 0, clPlayer, 5, clHill1, 1, clFood, 10),
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating camels...");
|
||||
g_Map.log("Creating camels");
|
||||
group = new SimpleGroup([new SimpleObject(oCamel, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clOasis, 1, clForest, 0, clPlayer, 5, clHill1, 1, clFood, 10),
|
||||
@@ -331,14 +331,14 @@ createStragglerTrees(
|
||||
stragglerTrees);
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup([new RandomObject(aBushes, 2,3, 0,2)]);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clOasis, 1, clHill1, 1, clPlayer, 0, clForest, 0),
|
||||
scaleByMapSize(16, 262)
|
||||
);
|
||||
|
||||
log("Creating more decorative rocks...");
|
||||
g_Map.log("Creating more decorative rocks");
|
||||
group = new SimpleGroup([new SimpleObject(aDecorativeRock, 1,2, 0,2)]);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clOasis, 1, clHill1, 1, clPlayer, 0, clForest, 0),
|
||||
|
||||
@@ -93,7 +93,7 @@ paintRiver({
|
||||
|
||||
paintTileClassBasedOnHeight(-Infinity, 0.5, Elevation_ExcludeMin_ExcludeMax, clWater);
|
||||
|
||||
log("Creating shores...");
|
||||
g_Map.log("Creating shores");
|
||||
for (let i = 0; i < scaleByMapSize(20, 120); ++i)
|
||||
{
|
||||
let position = new Vector2D(fractionToTiles(randFloat(0.1, 0.9)), fractionToTiles(randFloat(0.67, 0.74))).rotateAround(startAngle, mapCenter).round();
|
||||
@@ -106,7 +106,7 @@ for (let i = 0; i < scaleByMapSize(20, 120); ++i)
|
||||
]);
|
||||
}
|
||||
|
||||
log("Creating islands...");
|
||||
g_Map.log("Creating islands");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.1),
|
||||
[
|
||||
@@ -120,7 +120,7 @@ createAreas(
|
||||
|
||||
paintTerrainBasedOnHeight(-6, 1, 1, tWater);
|
||||
|
||||
log("Creating lakes...");
|
||||
g_Map.log("Creating lakes");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(5, 7)), Math.floor(scaleByMapSize(20, 50)), 0.1),
|
||||
[
|
||||
@@ -136,7 +136,7 @@ paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
|
||||
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.1),
|
||||
[
|
||||
@@ -148,7 +148,7 @@ createAreas(
|
||||
scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(100, 625, 0.7);
|
||||
var types = [
|
||||
[[tSnowA, tSnowA, tSnowA, tSnowA, pForestD], [tSnowA, tSnowA, tSnowA, pForestD]],
|
||||
@@ -168,7 +168,7 @@ for (let type of types)
|
||||
avoidClasses(clPlayer, 20, clForest, 20, clHill, 0, clWater, 8),
|
||||
num);
|
||||
|
||||
log("Creating iceberg...");
|
||||
g_Map.log("Creating iceberg");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aIceberg, 0, 2, 0, 4)], true, clRock),
|
||||
0,
|
||||
@@ -177,7 +177,7 @@ createObjectGroupsDeprecated(
|
||||
100);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -208,21 +208,21 @@ for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5,
|
||||
clDirt, 16),
|
||||
scaleByMapSize(20, 80));
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(8,32), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(8,32), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
|
||||
@@ -236,7 +236,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWalrus, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -248,7 +248,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oArcticWolf, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -258,7 +258,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
true, clFood
|
||||
|
||||
@@ -64,14 +64,12 @@ var forestDistance = scaleByMapSize(6, 20);
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
log("Creating small oasis near the players...")
|
||||
g_Map.log("Creating small oasis near the players...")
|
||||
var forestDist = 1.2 * defaultPlayerBaseRadius();
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
// Create starting batches of wood
|
||||
let forestPosition;
|
||||
let forestAngle;
|
||||
|
||||
do {
|
||||
forestAngle = Math.PI / 3 * randFloat(1, 2);
|
||||
forestPosition = Vector2D.add(playerPosition[i], new Vector2D(forestDist, 0).rotate(-forestAngle));
|
||||
@@ -84,26 +82,25 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
],
|
||||
avoidClasses(clBaseResource, 0)));
|
||||
|
||||
log("Creating the water patch explaining the forest for player " + playerIDs[i] + "...");
|
||||
let waterPosition;
|
||||
let flowerPosition;
|
||||
let reedsPosition;
|
||||
do {
|
||||
let waterAngle = forestAngle + randFloat(1, 5) / 3 * Math.PI;
|
||||
waterPosition = Vector2D.add(forestPosition, new Vector2D(6, 0).rotate(-waterAngle)).round();
|
||||
|
||||
let flowerPosition = Vector2D.add(forestPosition, new Vector2D(3, 0).rotate(-waterAngle)).round();
|
||||
createObjectGroup(new SimpleGroup([new SimpleObject(aFlower1, 1, 5, 0, 3)], true, undefined, flowerPosition), 0);
|
||||
|
||||
let reedsPosition = Vector2D.add(forestPosition, new Vector2D(5, 0).rotate(-waterAngle)).round();
|
||||
createObjectGroup(new SimpleGroup([new SimpleObject(aReedsA, 1, 3, 0, 0)], true, undefined, reedsPosition), 0);
|
||||
|
||||
flowerPosition = Vector2D.add(forestPosition, new Vector2D(3, 0).rotate(-waterAngle)).round();
|
||||
reedsPosition = Vector2D.add(forestPosition, new Vector2D(5, 0).rotate(-waterAngle)).round();
|
||||
} while (
|
||||
!createArea(
|
||||
new ClumpPlacer(60, 0.9, 0.4, 5, waterPosition),
|
||||
new ClumpPlacer(diskArea(4.5), 0.9, 0.4, 5, waterPosition),
|
||||
[
|
||||
new LayeredPainter([tShore, tWater], [1]),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 3)
|
||||
],
|
||||
avoidClasses(clBaseResource, 0)));
|
||||
|
||||
createObjectGroup(new SimpleGroup([new SimpleObject(aFlower1, 1, 5, 0, 3)], true, undefined, flowerPosition), 0);
|
||||
createObjectGroup(new SimpleGroup([new SimpleObject(aReedsA, 1, 3, 0, 0)], true, undefined, reedsPosition), 0);
|
||||
}
|
||||
Engine.SetProgress(20);
|
||||
|
||||
@@ -137,7 +134,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating central oasis...");
|
||||
g_Map.log("Creating central oasis");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(forestDistance + shoreDistance + waterRadius), 0.8, 0.2, 10, mapCenter),
|
||||
[
|
||||
@@ -148,21 +145,21 @@ createArea(
|
||||
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 3),
|
||||
avoidClasses(clPlayer, 10, clBaseResource, 6, clOasis, 4),
|
||||
scaleByMapSize(30, 70));
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createAreas(
|
||||
new ClumpPlacer(80, 0.3, 0.06, 1),
|
||||
new TerrainPainter(tDirt),
|
||||
avoidClasses(clPlayer, 10, clBaseResource, 6, clOasis, 4, clForest, 4),
|
||||
scaleByMapSize(15, 50));
|
||||
|
||||
log("Creating dunes...");
|
||||
g_Map.log("Creating dunes");
|
||||
createAreas(
|
||||
new ClumpPlacer(120, 0.3, 0.06, 1),
|
||||
[
|
||||
@@ -176,7 +173,7 @@ Engine.SetProgress(50);
|
||||
|
||||
if (mapSize > 150 && randBool())
|
||||
{
|
||||
log("Creating path though the oasis...");
|
||||
g_Map.log("Creating path though the oasis");
|
||||
let pathWidth = scaleByMapSize(7, 18);
|
||||
let points = distributePointsOnCircle(2, randomAngle(), waterRadius + shoreDistance + forestDistance + pathWidth, mapCenter)[0];
|
||||
createArea(
|
||||
@@ -187,11 +184,11 @@ if (mapSize > 150 && randBool())
|
||||
new TileClassPainter(clPassage)
|
||||
]);
|
||||
}
|
||||
log("Creating some straggler trees around the passage...");
|
||||
g_Map.log("Creating some straggler trees around the passage");
|
||||
var group = new SimpleGroup([new SimpleObject(ePalmTall, 1,1, 0,0),new SimpleObject(ePalmShort, 1, 2, 1, 2), new SimpleObject(aBushA, 0,2, 1,3)], true, clForest);
|
||||
createObjectGroupsDeprecated(group, 0, stayClasses(clPassage, 3), scaleByMapSize(60, 250), 100);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(eStoneMine, 1,1, 0,0),new SimpleObject(ePalmShort, 1,2, 3,3),new SimpleObject(ePalmTall, 0,1, 3,3)
|
||||
,new SimpleObject(aBushB, 1,1, 2,2), new SimpleObject(aBushA, 0,2, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -199,7 +196,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(6,25), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(eMetalMine, 1,1, 0,0),new SimpleObject(ePalmShort, 1,2, 2,3),new SimpleObject(ePalmTall, 0,1, 2,2)
|
||||
,new SimpleObject(aBushB, 1,1, 2,2), new SimpleObject(aBushA, 0,2, 1,3)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -208,13 +205,13 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup( [new SimpleObject(aRock, 2,4, 0,2)], true, undefined );
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clOasis, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 30, scaleByMapSize(10, 50));
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating camels...");
|
||||
g_Map.log("Creating camels");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(eCamel, 1,2, 0,4)],
|
||||
true, clFood
|
||||
@@ -225,7 +222,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating gazelles...");
|
||||
g_Map.log("Creating gazelles");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(eGazelle, 2,4, 0,2)],
|
||||
true, clFood
|
||||
@@ -236,7 +233,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating oasis animals...");
|
||||
g_Map.log("Creating oasis animals");
|
||||
for (let i = 0; i < scaleByMapSize(5, 30); ++i)
|
||||
{
|
||||
let animalPos = Vector2D.add(mapCenter, new Vector2D(forestDistance + shoreDistance + waterRadius, 0).rotate(randomAngle()));
|
||||
@@ -256,7 +253,7 @@ for (let i = 0; i < scaleByMapSize(5, 30); ++i)
|
||||
}
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(aBushB, 1,2, 0,2), new SimpleObject(aBushA, 2,4, 0,2)]
|
||||
);
|
||||
@@ -270,7 +267,7 @@ var objectsWaterFlora = [
|
||||
new SimpleObject(aReedsB, 5, 12, 0, 2)
|
||||
];
|
||||
|
||||
log("Creating sand blows and beautifications");
|
||||
g_Map.log("Creating sand blows and beautifications");
|
||||
for (var sandx = 0; sandx < mapSize; sandx += 4)
|
||||
for (var sandz = 0; sandz < mapSize; sandz += 4)
|
||||
{
|
||||
|
||||
@@ -96,7 +96,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(10);
|
||||
|
||||
log("Creating rock patches...");
|
||||
g_Map.log("Creating rock patches");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 6)), Math.floor(scaleByMapSize(20, 45)), 0),
|
||||
[
|
||||
@@ -107,7 +107,7 @@ createAreas(
|
||||
scaleByMapSize(5, 20));
|
||||
Engine.SetProgress(15);
|
||||
|
||||
log("Creating secondary rock patches...");
|
||||
g_Map.log("Creating secondary rock patches");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), Math.floor(scaleByMapSize(15, 40)), 0),
|
||||
[
|
||||
@@ -118,7 +118,7 @@ createAreas(
|
||||
scaleByMapSize(15, 50));
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
1,
|
||||
@@ -133,7 +133,7 @@ createAreas(
|
||||
scaleByMapSize(15, 50));
|
||||
Engine.SetProgress(25);
|
||||
|
||||
log("Creating centeral plateau...");
|
||||
g_Map.log("Creating centeral plateau");
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
2,
|
||||
@@ -151,7 +151,7 @@ createArea(
|
||||
avoidClasses(clPlayer, 18));
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
for (let i = 0; i < scaleByMapSize(20, 80); ++i)
|
||||
createMountain(
|
||||
Math.floor(scaleByMapSize(40, 60)),
|
||||
@@ -166,7 +166,7 @@ for (let i = 0; i < scaleByMapSize(20, 80); ++i)
|
||||
14);
|
||||
Engine.SetProgress(35);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tDirtMain, tForestFloor, pForestO], [tForestFloor, pForestO]],
|
||||
@@ -193,42 +193,42 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4), new RandomObject(aBushes, 2, 4, 0, 2)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1, clCP, 1)],
|
||||
scaleByMapSize(2,8), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1, clCP, 1)],
|
||||
scaleByMapSize(2,8), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1, clCP, 1)],
|
||||
scaleByMapSize(2,8), 100
|
||||
);
|
||||
|
||||
log("Creating centeral stone mines...");
|
||||
g_Map.log("Creating centeral stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
stayClasses(clCP, 6),
|
||||
5*scaleByMapSize(5,30), 50
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
stayClasses(clCP, 6),
|
||||
5*scaleByMapSize(5,30), 50
|
||||
);
|
||||
|
||||
log("Creating centeral metal mines...");
|
||||
g_Map.log("Creating centeral metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
stayClasses(clCP, 6),
|
||||
@@ -237,7 +237,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
true
|
||||
@@ -250,7 +250,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush2, 1,2, 0,1), new SimpleObject(aBush1, 1,3, 0,2)],
|
||||
true
|
||||
@@ -263,7 +263,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating goat...");
|
||||
g_Map.log("Creating goat");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGoat, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -273,7 +273,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSheep, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -283,7 +283,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating grape bush...");
|
||||
g_Map.log("Creating grape bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGrapesBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -293,7 +293,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
log("Creating camels...");
|
||||
g_Map.log("Creating camels");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCamel, 2,3, 0,2)],
|
||||
true, clFood
|
||||
|
||||
@@ -118,14 +118,14 @@ paintTileClassBasedOnHeight(-Infinity, heightLand, Elevation_ExcludeMin_ExcludeM
|
||||
paintTerrainBasedOnHeight(-Infinity, heightShore, Elevation_ExcludeMin_ExcludeMax, tWater);
|
||||
paintTerrainBasedOnHeight(heightShore, heightLand, Elevation_ExcludeMin_ExcludeMax, tShore);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
avoidClasses(clWater, 2, clPlayer, 20),
|
||||
scaleByMapSize(100, 200));
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.5),
|
||||
[
|
||||
@@ -136,7 +136,7 @@ createAreas(
|
||||
avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 0),
|
||||
scaleByMapSize(1, 4) * numPlayers * 3);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.5);
|
||||
var num = scaleByMapSize(10,42);
|
||||
createAreas(
|
||||
@@ -150,7 +150,7 @@ createAreas(
|
||||
50);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -164,7 +164,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -178,7 +178,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating cyprus...");
|
||||
g_Map.log("Creating cyprus");
|
||||
createAreas(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.08)), 0.2, 0.1, 0.01),
|
||||
[
|
||||
@@ -191,7 +191,7 @@ createAreas(
|
||||
1,
|
||||
100);
|
||||
|
||||
log("Creating cyprus mines...");
|
||||
g_Map.log("Creating cyprus mines");
|
||||
var mines = [
|
||||
new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock),
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
@@ -207,21 +207,21 @@ for (let mine of mines)
|
||||
],
|
||||
scaleByMapSize(4, 16));
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 3, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 3, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clWater, 3, clHill, 1),
|
||||
@@ -230,7 +230,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
true
|
||||
@@ -241,7 +241,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating shrubs...");
|
||||
g_Map.log("Creating shrubs");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush2, 1,2, 0,1), new SimpleObject(aBush1, 1,3, 0,2), new SimpleObject(aBush4, 1,2, 0,1), new SimpleObject(aBush3, 1,3, 0,2)],
|
||||
true
|
||||
@@ -253,35 +253,35 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
group = new SimpleGroup([new SimpleObject(oFish, 1,3, 2,6)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clIsland, 2, clFood, 10), stayClasses(clWater, 5)],
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating sheeps...");
|
||||
g_Map.log("Creating sheeps");
|
||||
group = new SimpleGroup([new SimpleObject(oSheep, 5,7, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 7, clWater, 3, clFood, 10, clHill, 1),
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating goats...");
|
||||
g_Map.log("Creating goats");
|
||||
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 7, clWater, 3, clFood, 10, clHill, 1),
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating deers...");
|
||||
g_Map.log("Creating deers");
|
||||
group = new SimpleGroup([new SimpleObject(oDeer, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 7, clWater, 3, clFood, 10, clHill, 1),
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating grape bushes...");
|
||||
g_Map.log("Creating grape bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGrapeBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
|
||||
@@ -54,7 +54,7 @@ var treasures = [{
|
||||
"count": isNomad() ? 16 : 14
|
||||
}];
|
||||
|
||||
log("Creating player markets...");
|
||||
g_Map.log("Creating player markets");
|
||||
if (!isNomad())
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
@@ -88,7 +88,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating central lake...");
|
||||
g_Map.log("Creating central lake");
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
2,
|
||||
@@ -107,7 +107,7 @@ createArea(
|
||||
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating small lakes...");
|
||||
g_Map.log("Creating small lakes");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(2, 4)), Math.floor(scaleByMapSize(20, 140)), 0.7),
|
||||
[
|
||||
@@ -123,7 +123,6 @@ Engine.SetProgress(50);
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating hills...");
|
||||
createHills(
|
||||
[tPrimary, tPrimary, tSecondary],
|
||||
avoidClasses(clPlayer, 20, clHill, 35),
|
||||
@@ -131,7 +130,7 @@ createHills(
|
||||
scaleByMapSize(20, 240));
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tDirt,tHalfSnow], [tHalfSnow,tSnowLimited]],
|
||||
@@ -140,7 +139,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating glacier patches...");
|
||||
g_Map.log("Creating glacier patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tSecondary,
|
||||
@@ -149,7 +148,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -158,7 +157,7 @@ log("Creating stone mines...");
|
||||
avoidClasses(clWater, 3, clPlayer, 20, clRock, 18, clHill, 2),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -136,7 +136,7 @@ var terrainPerHeight = [
|
||||
}
|
||||
];
|
||||
|
||||
log("Creating initial sinusoidal noise...");
|
||||
g_Map.log("Creating initial sinusoidal noise");
|
||||
var baseHeights = [];
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
@@ -186,7 +186,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating the pyreneans...");
|
||||
g_Map.log("Creating the pyreneans");
|
||||
var mountainVec = new Vector2D(mountainLength, 0).rotate(-startAngle);
|
||||
var mountainStart = Vector2D.sub(mapCenter, Vector2D.div(mountainVec, 2));
|
||||
var mountainDirection = mountainVec.clone().normalize();
|
||||
@@ -239,7 +239,7 @@ function createPyreneans()
|
||||
}
|
||||
}
|
||||
|
||||
log("Smoothing pyreneans...");
|
||||
g_Map.log("Smoothing pyreneans");
|
||||
for (let ix = 1; ix < mapSize - 1; ++ix)
|
||||
for (let iz = 1; iz < mapSize - 1; ++iz)
|
||||
{
|
||||
@@ -253,7 +253,7 @@ for (let ix = 1; ix < mapSize - 1; ++ix)
|
||||
}
|
||||
Engine.SetProgress(48);
|
||||
|
||||
log("Creating passages...");
|
||||
g_Map.log("Creating passages");
|
||||
var passageLocation = 0.35;
|
||||
var passageVec = mountainDirection.perpendicular().mult(passageLength);
|
||||
|
||||
@@ -275,7 +275,7 @@ for (let passLoc of [passageLocation, 1 - passageLocation])
|
||||
}
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Smoothing the mountains...");
|
||||
g_Map.log("Smoothing the mountains");
|
||||
for (let ix = 1; ix < mapSize - 1; ++ix)
|
||||
for (let iz = 1; iz < mapSize - 1; ++iz)
|
||||
{
|
||||
@@ -288,7 +288,7 @@ for (let ix = 1; ix < mapSize - 1; ++ix)
|
||||
}
|
||||
}
|
||||
|
||||
log("Creating oceans...");
|
||||
g_Map.log("Creating oceans");
|
||||
for (let ocean of distributePointsOnCircle(2, oceanAngle, fractionToTiles(0.48), mapCenter)[0])
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.18)), 0.9, 0.05, 10, ocean),
|
||||
@@ -297,7 +297,7 @@ for (let ocean of distributePointsOnCircle(2, oceanAngle, fractionToTiles(0.48),
|
||||
new TileClassPainter(clWater)
|
||||
]);
|
||||
|
||||
log("Smoothing around the water...");
|
||||
g_Map.log("Smoothing around the water");
|
||||
var smoothDist = 5;
|
||||
for (let ix = 1; ix < mapSize - 1; ++ix)
|
||||
for (let iz = 1; iz < mapSize - 1; ++iz)
|
||||
@@ -321,7 +321,7 @@ for (let ix = 1; ix < mapSize - 1; ++ix)
|
||||
}
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(60, 120), 0.3, 0.06, 5),
|
||||
[
|
||||
@@ -331,7 +331,7 @@ createAreas(
|
||||
],
|
||||
avoidClasses(clWater, 5, clPlayer, 20, clBaseResource, 6, clPyrenneans, 2), scaleByMapSize(5, 35));
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var types = [[tForestTransition, pForestLandVeryLight, pForestLandLight, pForestLand]];
|
||||
var size = scaleByMapSize(40, 115) * Math.PI;
|
||||
var num = Math.floor(scaleByMapSize(8,40) / types.length);
|
||||
@@ -346,13 +346,13 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating lone trees...");
|
||||
g_Map.log("Creating lone trees");
|
||||
var num = scaleByMapSize(80,400);
|
||||
|
||||
var group = new SimpleGroup([new SimpleObject(oPine, 1,2, 1,3),new SimpleObject(oBeech, 1,2, 1,3)], true, clForest);
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 1, clPlayer, 8,clPyrenneans, 1), num, 20 );
|
||||
|
||||
log("Painting the map...");
|
||||
g_Map.log("Painting the map");
|
||||
for (let x = 0; x < mapSize; ++x)
|
||||
for (let z = 0; z < mapSize; ++z)
|
||||
{
|
||||
@@ -385,7 +385,7 @@ function getShoreTerrain(position, height, heightDiff)
|
||||
return undefined;
|
||||
}
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 20), scaleByMapSize(5, 40), scaleByMapSize(8, 60)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -396,7 +396,7 @@ for (let size of [scaleByMapSize(3, 20), scaleByMapSize(5, 40), scaleByMapSize(8
|
||||
avoidClasses(clWater, 3, clForest, 0, clPyrenneans,5, clHill, 0, clDirt, 5, clPlayer, 6),
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -407,60 +407,60 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
Engine.SetProgress(70);
|
||||
|
||||
// making more in dirt areas so as to appear different
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
var group = new SimpleGroup( [new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)] );
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 2, clHill, 2, clPlayer, 5, clDirt, 0, clPyrenneans,2), scaleByMapSize(13, 200) );
|
||||
createObjectGroupsDeprecated(group, 0, stayClasses(clDirt,1), scaleByMapSize(13, 200),10);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup( [new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)] );
|
||||
createObjectGroupsDeprecated(group, 0, 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);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup( [new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)] );
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 2, clPlayer, 1, clPyrenneans, 1), scaleByMapSize(13, 200), 50 );
|
||||
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 8, clPyrenneans, 1), scaleByMapSize(4,16), 100 );
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 8, clPyrenneans, 1), scaleByMapSize(4,16), 100 );
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 8, clRock, 5, clPyrenneans, 1), scaleByMapSize(4,16), 100 );
|
||||
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup( [new SimpleObject(aRockMedium, 1,3, 0,1)], true );
|
||||
createObjectGroupsDeprecated( group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 0), scaleByMapSize(16, 262), 50 );
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup( [new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)], true );
|
||||
createObjectGroupsDeprecated( group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 0), scaleByMapSize(8, 131), 50 );
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup( [new SimpleObject(oDeer, 5,7, 0,4)], true, clFood );
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clPyrenneans, 1, clFood, 15), 3 * numPlayers, 50 );
|
||||
|
||||
log("Creating rabbit...");
|
||||
g_Map.log("Creating rabbit");
|
||||
group = new SimpleGroup( [new SimpleObject(oRabbit, 2,3, 0,2)], true, clFood );
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clPyrenneans, 1, clFood,15), 3 * numPlayers, 50 );
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup( [new SimpleObject(oBerryBush, 5,7, 0,4)],true, clFood );
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clPyrenneans, 1, clFood, 10), randIntInclusive(1, 4) * numPlayers + 2, 50);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
group = new SimpleGroup( [new SimpleObject(oFish, 2,3, 0,2)], true, clFood );
|
||||
createObjectGroupsDeprecated(group, 0, [avoidClasses(clFood, 15), stayClasses(clWater, 6)], 20 * numPlayers, 60 );
|
||||
|
||||
|
||||
@@ -80,14 +80,14 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(15);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBumpLand, 2),
|
||||
avoidClasses(clPlayer, 13),
|
||||
scaleByMapSize(300, 800));
|
||||
|
||||
log("Creating marshes...");
|
||||
g_Map.log("Creating marshes");
|
||||
for (let i = 0; i < 7; ++i)
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(6, 12)), Math.floor(scaleByMapSize(15, 60)), 0.8),
|
||||
@@ -99,7 +99,7 @@ for (let i = 0; i < 7; ++i)
|
||||
avoidClasses(clPlayer, 20, clWater, Math.round(scaleByMapSize(7,16)*randFloat(0.8,1.35))),
|
||||
scaleByMapSize(4,20));
|
||||
|
||||
log("Creating reeds...");
|
||||
g_Map.log("Creating reeds");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aReeds, 5, 10, 0, 4), new SimpleObject(aLillies, 5, 10, 0, 4)], true),
|
||||
0,
|
||||
@@ -107,14 +107,14 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(400,2000), 100);
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBumpWater, 2),
|
||||
stayClasses(clWater, 2),
|
||||
scaleByMapSize(50, 100));
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(500, 2500, 0.7);
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForestD], [tForestFloor, pForestD]],
|
||||
@@ -133,7 +133,7 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating mud patches...");
|
||||
g_Map.log("Creating mud patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 1),
|
||||
@@ -144,21 +144,21 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
avoidClasses(clWater, 1, clForest, 0, clDirt, 5, clPlayer, 8),
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clRock, 10)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clRock, 10)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5)],
|
||||
@@ -167,7 +167,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -180,7 +180,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -193,7 +193,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -203,7 +203,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating horse...");
|
||||
g_Map.log("Creating horse");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oHorse, 1,3, 0,4)],
|
||||
true, clFood
|
||||
@@ -215,7 +215,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating rabbit...");
|
||||
g_Map.log("Creating rabbit");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 5,7, 0,2)],
|
||||
true, clFood
|
||||
@@ -225,7 +225,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating wolf...");
|
||||
g_Map.log("Creating wolf");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWolf, 1,3, 0,4)],
|
||||
true, clFood
|
||||
@@ -235,7 +235,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -255,7 +255,7 @@ createStragglerTrees(
|
||||
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aGrassShort, 1, 2, 0, 1)]),
|
||||
0,
|
||||
@@ -264,7 +264,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -277,7 +277,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
|
||||
@@ -77,7 +77,7 @@ stripWidthsRight = stripWidthsRight.map(strip => [1 - strip[1], 1 - strip[0]]);
|
||||
|
||||
var stripWidths = stripWidthsLeft.concat(stripWidthsRight);
|
||||
|
||||
log("Creating strips...");
|
||||
g_Map.log("Creating strips");
|
||||
for (let i = 0; i < stripWidths.length; ++i)
|
||||
{
|
||||
clStrip[i] = g_Map.createTileClass();
|
||||
@@ -110,7 +110,7 @@ var playerPosition = playerPlacementLine(startAngle, mapCenter, fractionToTiles(
|
||||
// Either left vs right or top vs bottom
|
||||
var playerIDs = randBool() ? sortAllPlayers() : primeSortAllPlayers();
|
||||
|
||||
log("Ensuring player territory...");
|
||||
g_Map.log("Ensuring player territory");
|
||||
var playerRadius = scaleByMapSize(12, 20);
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
createArea(
|
||||
@@ -160,7 +160,7 @@ Engine.SetProgress(40);
|
||||
|
||||
if (!isNomad())
|
||||
{
|
||||
log("Creating gaia...");
|
||||
g_Map.log("Creating gaia");
|
||||
for (let i = 0; i < 2; ++i)
|
||||
for (let j = 0; j < scaleByMapSize(1, 8); ++j)
|
||||
createObjectGroupsDeprecated(
|
||||
@@ -186,7 +186,7 @@ if (!isNomad())
|
||||
50);
|
||||
}
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.1),
|
||||
[
|
||||
@@ -203,11 +203,10 @@ createAreas(
|
||||
],
|
||||
scaleByMapSize(1, 5));
|
||||
|
||||
log("Creating bumps...");
|
||||
createBumps(avoidClasses(clPlayer, 8, clWater, 2), scaleByMapSize(20, 150), 2, 8, 4, 1, 4);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(1000, 4000, 0.7);
|
||||
var types = [
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestD], [tGrass, tGrass, tGrass, pForestD]],
|
||||
@@ -251,7 +250,7 @@ createStragglerTrees(
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -268,7 +267,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
clDirt, 16),
|
||||
scaleByMapSize(20, 80));
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -285,7 +284,7 @@ for (let size of [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5,
|
||||
clDirt, 16),
|
||||
scaleByMapSize(20, 80));
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(
|
||||
[
|
||||
@@ -305,7 +304,7 @@ createObjectGroupsDeprecated(
|
||||
9 * scaleByMapSize(1, 4),
|
||||
100);
|
||||
|
||||
log("Creating small stone mines...");
|
||||
g_Map.log("Creating small stone mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock),
|
||||
0,
|
||||
@@ -319,7 +318,7 @@ createObjectGroupsDeprecated(
|
||||
9 * scaleByMapSize(1, 4),
|
||||
100);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
0,
|
||||
@@ -334,7 +333,7 @@ createObjectGroupsDeprecated(
|
||||
9 * scaleByMapSize(1, 4),
|
||||
100);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aRockMedium, 1, 3, 0, 1)], true),
|
||||
0,
|
||||
@@ -348,7 +347,7 @@ createObjectGroupsDeprecated(
|
||||
3 * scaleByMapSize(16, 262),
|
||||
50);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([
|
||||
new SimpleObject(aRockLarge, 1, 2, 0, 1),
|
||||
@@ -366,7 +365,7 @@ createObjectGroupsDeprecated(
|
||||
3 * scaleByMapSize(8, 131),
|
||||
50);
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aBush1, 1, 2, 0, 1, -Math.PI / 8, Math.PI / 8)]),
|
||||
0,
|
||||
@@ -380,7 +379,7 @@ createObjectGroupsDeprecated(
|
||||
8 * scaleByMapSize(13, 200));
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([
|
||||
new SimpleObject(aBush2, 2, 4, 0, 1.8, -Math.PI / 8, Math.PI / 8),
|
||||
@@ -398,7 +397,7 @@ log("Creating large grass tufts...");
|
||||
8 * scaleByMapSize(13, 200));
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([
|
||||
new SimpleObject(aBush3, 1, 2, 0, 2),
|
||||
@@ -412,7 +411,7 @@ log("Creating bushes...");
|
||||
clDirt, 1),
|
||||
8 * scaleByMapSize(13, 200), 50);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oDeer, 5, 7, 0, 4)], true, clFood),
|
||||
0,
|
||||
@@ -426,7 +425,7 @@ log("Creating deer...");
|
||||
3 * numPlayers,
|
||||
50);
|
||||
|
||||
log("Creating boar...");
|
||||
g_Map.log("Creating boar");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oBoar, 2, 4, 0, 4)], true, clFood),
|
||||
0,
|
||||
@@ -440,7 +439,7 @@ log("Creating boar...");
|
||||
3 * numPlayers,
|
||||
50);
|
||||
|
||||
log("Creating tigers...");
|
||||
g_Map.log("Creating tigers");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oTiger, 1, 1, 0, 4)], true, clFood),
|
||||
0,
|
||||
@@ -455,7 +454,7 @@ createObjectGroupsDeprecated(
|
||||
50);
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oBush, 5, 7, 0, 4)], true, clFood),
|
||||
0,
|
||||
@@ -469,7 +468,7 @@ createObjectGroupsDeprecated(
|
||||
randIntInclusive(1, 4) * numPlayers + 2,
|
||||
50);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oFish, 2, 3, 0, 2)], true, clFood),
|
||||
0,
|
||||
|
||||
@@ -97,7 +97,7 @@ placePlayerBases({
|
||||
}
|
||||
});
|
||||
|
||||
log("Creating central lake...");
|
||||
g_Map.log("Creating central lake");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.075)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -106,7 +106,7 @@ createArea(
|
||||
new TileClassPainter(clWater)
|
||||
]);
|
||||
|
||||
log("Creating rivers between opponents...");
|
||||
g_Map.log("Creating rivers between opponents");
|
||||
let numRivers = isNomad() ? randIntInclusive(4, 8) : numPlayers;
|
||||
let rivers = distributePointsOnCircle(numRivers, startAngle + Math.PI / numRivers, fractionToTiles(0.5), mapCenter)[0];
|
||||
for (let i = 0; i < numRivers; ++i)
|
||||
@@ -168,7 +168,7 @@ createForests(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain,tTier1Terrain],[tTier1Terrain,tTier2Terrain], [tTier2Terrain,tTier3Terrain]],
|
||||
@@ -177,7 +177,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
@@ -186,7 +186,7 @@ createPatches(
|
||||
clDirt);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -195,7 +195,7 @@ createMines(
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
clRock);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
|
||||
@@ -19,7 +19,8 @@ function setSelectedBiome()
|
||||
|
||||
function setBiome(biomeID)
|
||||
{
|
||||
log("Setting biome "+ biomeID);
|
||||
RandomMapLogger.prototype.printDirectly("Setting biome " + biomeID + ".\n");
|
||||
|
||||
loadBiomeFile("defaultbiome");
|
||||
|
||||
setSkySet(pickRandom(["cirrus", "cumulus", "sunny"]));
|
||||
|
||||
@@ -35,7 +35,7 @@ function createForests(terrainSet, constraint, tileClass, treeCount)
|
||||
}
|
||||
];
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
let numberOfForests = Math.floor(treeCount / (scaleByMapSize(3, 6) * getNumPlayers() * forestVariants.length));
|
||||
for (let forestVariant of forestVariants)
|
||||
createAreas(
|
||||
@@ -53,7 +53,7 @@ function createForests(terrainSet, constraint, tileClass, treeCount)
|
||||
*/
|
||||
function createStragglerTrees(templateNames, constraint, tileClass, treeCount)
|
||||
{
|
||||
log("Creating straggler trees...");
|
||||
g_Map.log("Creating straggler trees");
|
||||
for (let templateName of templateNames)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(templateName, 1, 1, 0, 3)], true, tileClass),
|
||||
@@ -82,7 +82,6 @@ function createMines(objects, constraint, tileClass, count)
|
||||
*/
|
||||
function createStoneMineFormation(position, templateName, terrain, radius = 2.5, count = 8, startAngle = undefined, maxOffset = 1)
|
||||
{
|
||||
log("Creating small stone mine circle...");
|
||||
createArea(
|
||||
new ChainPlacer(radius / 2, radius, 2, 1, position, undefined, [5]),
|
||||
new TerrainPainter(terrain));
|
||||
@@ -102,7 +101,7 @@ function createStoneMineFormation(position, templateName, terrain, radius = 2.5,
|
||||
*/
|
||||
function createFood(objects, counts, constraint, tileClass)
|
||||
{
|
||||
log("Creating food...");
|
||||
g_Map.log("Creating food");
|
||||
for (let i = 0; i < objects.length; ++i)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(objects[i], true, tileClass),
|
||||
@@ -117,7 +116,7 @@ function createFood(objects, counts, constraint, tileClass)
|
||||
*/
|
||||
function createDecoration(objects, counts, constraint)
|
||||
{
|
||||
log("Creating decoration...");
|
||||
g_Map.log("Creating decoration");
|
||||
for (let i = 0; i < objects.length; ++i)
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup(objects[i], true),
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
*/
|
||||
function createBumps(constraint, count, minSize, maxSize, spread, failFraction = 0, elevation = 2)
|
||||
{
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
minSize || 1,
|
||||
@@ -24,7 +24,7 @@ function createBumps(constraint, count, minSize, maxSize, spread, failFraction =
|
||||
*/
|
||||
function createHills(terrainset, constraint, tileClass, count, minSize, maxSize, spread, failFraction = 0.5, elevation = 18, elevationSmoothing = 2)
|
||||
{
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(
|
||||
minSize || 1,
|
||||
@@ -45,7 +45,7 @@ function createHills(terrainset, constraint, tileClass, count, minSize, maxSize,
|
||||
*/
|
||||
function createMountains(terrain, constraint, tileClass, count, maxHeight, minRadius, maxRadius, numCircles)
|
||||
{
|
||||
log("Creating mountains...");
|
||||
g_Map.log("Creating mountains");
|
||||
let mapSize = g_Map.getSize();
|
||||
|
||||
for (let i = 0; i < (count || scaleByMapSize(1, 4) * getNumPlayers()); ++i)
|
||||
@@ -216,7 +216,7 @@ function createMountain(maxHeight, minRadius, maxRadius, numCircles, constraints
|
||||
*/
|
||||
function createVolcano(position, tileClass, terrainTexture, lavaTextures, smoke, elevationType)
|
||||
{
|
||||
log("Creating volcano...");
|
||||
g_Map.log("Creating volcano");
|
||||
|
||||
let clLava = g_Map.createTileClass();
|
||||
let layers = [
|
||||
@@ -332,7 +332,7 @@ function createLayeredPatches(sizes, terrains, terrainWidths, constraint, count,
|
||||
*/
|
||||
function paintRiver(args)
|
||||
{
|
||||
log("Creating river...");
|
||||
g_Map.log("Creating river");
|
||||
|
||||
// Model the river meandering as the sum of two sine curves.
|
||||
let meanderShort = fractionToTiles(args.meanderShort / scaleByMapSize(35, 160));
|
||||
@@ -449,7 +449,7 @@ function rndRiver(f, seed)
|
||||
*/
|
||||
function createTributaryRivers(riverAngle, riverCount, riverWidth, heightRiverbed, heightRange, maxAngle, tributaryRiverTileClass, shallowTileClass, constraint)
|
||||
{
|
||||
log("Creating tributary rivers...");
|
||||
g_Map.log("Creating tributary rivers");
|
||||
let waviness = 0.4;
|
||||
let smoothness = scaleByMapSize(3, 12);
|
||||
let offset = 0.1;
|
||||
@@ -500,6 +500,8 @@ function createTributaryRivers(riverAngle, riverCount, riverWidth, heightRiverbe
|
||||
|
||||
// Create shallows
|
||||
if (shallowTileClass)
|
||||
{
|
||||
g_Map.log("Creating shallows in the tributary rivers...");
|
||||
for (let z of [0.25, 0.75])
|
||||
createPassage({
|
||||
"start": new Vector2D(mapBounds.left, fractionToTiles(z)).rotateAround(riverAngle, mapCenter),
|
||||
@@ -512,6 +514,7 @@ function createTributaryRivers(riverAngle, riverCount, riverWidth, heightRiverbe
|
||||
"maxHeight": heightShallow,
|
||||
"tileClass": shallowTileClass
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
function RandomMapLogger()
|
||||
{
|
||||
this.lastTime = undefined;
|
||||
this.startTime = Date.now();
|
||||
this.prefix = ""; // seems noisy
|
||||
|
||||
this.printDirectly(
|
||||
this.prefix +
|
||||
"Generating " + g_MapSettings.Name +
|
||||
" of size " + g_MapSettings.Size +
|
||||
" and " + getNumPlayers() + " players.\n");
|
||||
}
|
||||
|
||||
RandomMapLogger.prototype.printDirectly = function(string)
|
||||
{
|
||||
log(string);
|
||||
print(string);
|
||||
};
|
||||
|
||||
RandomMapLogger.prototype.print = function(string)
|
||||
{
|
||||
this.printDuration();
|
||||
this.printDirectly(this.prefix + string + "...");
|
||||
this.lastTime = Date.now();
|
||||
};
|
||||
|
||||
RandomMapLogger.prototype.printDuration = function()
|
||||
{
|
||||
if (!this.lastTime)
|
||||
return;
|
||||
|
||||
this.printDurationDirectly("", this.lastTime);
|
||||
this.lastTime = Date.now();
|
||||
};
|
||||
|
||||
RandomMapLogger.prototype.close = function()
|
||||
{
|
||||
this.printDuration();
|
||||
this.printDurationDirectly(this.prefix + "Total map generation time:", this.startTime);
|
||||
};
|
||||
|
||||
RandomMapLogger.prototype.printDurationDirectly = function(text, startTime)
|
||||
{
|
||||
this.printDirectly(text + " " + ((Date.now() - startTime) / 1000).toFixed(3) + "s.\n");
|
||||
};
|
||||
@@ -133,6 +133,8 @@ function placeStartingWalls(position, playerID, wallType, orientation = BUILDING
|
||||
*/
|
||||
function placePlayerBases(playerBaseArgs)
|
||||
{
|
||||
g_Map.log("Creating playerbases");
|
||||
|
||||
let [playerIDs, playerPosition] = playerBaseArgs.PlayerPlacement;
|
||||
|
||||
for (let i = 0; i < getNumPlayers(); ++i)
|
||||
@@ -151,8 +153,6 @@ function placePlayerBase(playerBaseArgs)
|
||||
if (isNomad())
|
||||
return;
|
||||
|
||||
log("Creating base for player " + playerBaseArgs.playerID + "...");
|
||||
|
||||
placeCivDefaultStartingEntities(playerBaseArgs.playerPosition, playerBaseArgs.playerID, playerBaseArgs.Walls !== undefined ? playerBaseArgs.Walls : true);
|
||||
|
||||
if (playerBaseArgs.PlayerTileClass)
|
||||
@@ -436,6 +436,8 @@ function placePlayersNomad(playerClass, constraints)
|
||||
if (!isNomad())
|
||||
return undefined;
|
||||
|
||||
g_Map.log("Placing nomad starting units");
|
||||
|
||||
let distance = scaleByMapSize(60, 240);
|
||||
let constraint = new AndConstraint(constraints);
|
||||
|
||||
@@ -445,11 +447,10 @@ function placePlayersNomad(playerClass, constraints)
|
||||
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
log("Determine starting units for player " + playerIDs[i] + "...");
|
||||
let objects = getStartingEntities(playerIDs[i]).filter(ents => ents.Template.startsWith("units/")).map(
|
||||
ents => new SimpleObject(ents.Template, ents.Count || 1, ents.Count || 1, 1, 3));
|
||||
|
||||
log("Ensure resources for a civic center...");
|
||||
// Add treasure if too few resources for a civic center
|
||||
let ccCost = Engine.GetTemplate("structures/" + getCivCode(playerIDs[i]) + "_civil_centre").Cost.Resources;
|
||||
for (let resourceType in ccCost)
|
||||
{
|
||||
@@ -462,7 +463,7 @@ function placePlayersNomad(playerClass, constraints)
|
||||
objects.push(new SimpleObject(treasureTemplate, count, count, 3, 5));
|
||||
}
|
||||
|
||||
log("Placing player units...");
|
||||
// Try place these entities at a random location
|
||||
let group = new SimpleGroup(objects, true, playerClass);
|
||||
let success = false;
|
||||
for (let distanceFactor of [1, 1/2, 1/4, 0])
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
function RandomMap(baseHeight, baseTerrain)
|
||||
{
|
||||
log("Initializing map...");
|
||||
this.logger = new RandomMapLogger();
|
||||
|
||||
// Size must be 0 to 1024, divisible by patches
|
||||
this.size = g_MapSettings.Size;
|
||||
@@ -61,6 +61,11 @@ function RandomMap(baseHeight, baseTerrain)
|
||||
this.entityCount = 150;
|
||||
}
|
||||
|
||||
RandomMap.prototype.log = function(text)
|
||||
{
|
||||
this.logger.print(text);
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the ID of a texture name.
|
||||
* Creates a new ID if there isn't one assigned yet.
|
||||
@@ -378,7 +383,7 @@ RandomMap.prototype.exportEntityList = function()
|
||||
if (this.terrainEntities[x][z])
|
||||
this.entities.push(this.terrainEntities[x][z]);
|
||||
|
||||
log("Number of entities: " + this.entities.length);
|
||||
this.logger.printDirectly("Total entities: " + this.entities.length + ".\n")
|
||||
return this.entities;
|
||||
};
|
||||
|
||||
@@ -427,11 +432,11 @@ RandomMap.prototype.exportTerrainTextures = function()
|
||||
|
||||
RandomMap.prototype.ExportMap = function()
|
||||
{
|
||||
log("Saving map...");
|
||||
|
||||
if (g_Environment.Water.WaterBody.Height === undefined)
|
||||
g_Environment.Water.WaterBody.Height = SEA_LEVEL - 0.1;
|
||||
|
||||
this.logger.close();
|
||||
|
||||
Engine.ExportMap({
|
||||
"entities": this.exportEntityList(),
|
||||
"height": this.exportHeightData(),
|
||||
|
||||
@@ -860,7 +860,8 @@ function placeGenericFortress(center, radius = 20, playerId = 0, style, irregula
|
||||
}
|
||||
++tries;
|
||||
}
|
||||
log("placeGenericFortress: Reduced overlap to " + minOverlap + " after " + tries + " tries");
|
||||
|
||||
log("placeGenericFortress: Reduced overlap to " + minOverlap + " after " + tries + " tries...");
|
||||
|
||||
// Place wall
|
||||
for (let pointIndex = 0; pointIndex < bestPointDerivation.length; ++pointIndex)
|
||||
|
||||
@@ -18,6 +18,8 @@ var g_Props = {
|
||||
*/
|
||||
function addBluffs(constraint, size, deviation, fill, baseHeight)
|
||||
{
|
||||
g_Map.log("Creating bluffs");
|
||||
|
||||
var constrastTerrain = g_Terrains.tier2Terrain;
|
||||
|
||||
if (currentBiome() == "generic/tropic")
|
||||
@@ -298,6 +300,8 @@ function addBluffs(constraint, size, deviation, fill, baseHeight)
|
||||
*/
|
||||
function addDecoration(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating decoration");
|
||||
|
||||
var offset = getRandomDeviation(size, deviation);
|
||||
var decorations = [
|
||||
[
|
||||
@@ -412,6 +416,8 @@ function addElevation(constraint, el)
|
||||
*/
|
||||
function addHills(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating hills");
|
||||
|
||||
addElevation(constraint, {
|
||||
"class": g_TileClasses.hill,
|
||||
"painter": [g_Terrains.mainTerrain, g_Terrains.mainTerrain],
|
||||
@@ -433,6 +439,8 @@ function addHills(constraint, size, deviation, fill)
|
||||
*/
|
||||
function addLakes(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating lakes");
|
||||
|
||||
var lakeTile = g_Terrains.water;
|
||||
|
||||
if (currentBiome() == "generic/temperate" || currentBiome() == "generic/tropic")
|
||||
@@ -487,6 +495,8 @@ function addLakes(constraint, size, deviation, fill)
|
||||
*/
|
||||
function addLayeredPatches(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating layered patches");
|
||||
|
||||
var minRadius = 1;
|
||||
var maxRadius = Math.floor(scaleByMapSize(3, 5));
|
||||
var count = fill * scaleByMapSize(15, 45);
|
||||
@@ -526,6 +536,8 @@ function addLayeredPatches(constraint, size, deviation, fill)
|
||||
*/
|
||||
function addMountains(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating mountains");
|
||||
|
||||
addElevation(constraint, {
|
||||
"class": g_TileClasses.mountain,
|
||||
"painter": [g_Terrains.cliff, g_Terrains.hill],
|
||||
@@ -547,6 +559,8 @@ function addMountains(constraint, size, deviation, fill)
|
||||
*/
|
||||
function addPlateaus(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating plateaus");
|
||||
|
||||
var plateauTile = g_Terrains.dirt;
|
||||
|
||||
if (currentBiome() == "generic/snowy")
|
||||
@@ -625,6 +639,8 @@ function addPlateaus(constraint, size, deviation, fill)
|
||||
*/
|
||||
function addProps(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating rare actors");
|
||||
|
||||
var offset = getRandomDeviation(size, deviation);
|
||||
|
||||
var props = [
|
||||
@@ -667,6 +683,8 @@ function addValleys(constraint, size, deviation, fill, baseHeight)
|
||||
if (baseHeight < 6)
|
||||
return;
|
||||
|
||||
g_Map.log("Creating valleys");
|
||||
|
||||
let minElevation = Math.max(-baseHeight, 1 - baseHeight / (size * (deviation + 1)));
|
||||
|
||||
var valleySlope = g_Terrains.tier1Terrain;
|
||||
@@ -714,6 +732,8 @@ function addValleys(constraint, size, deviation, fill, baseHeight)
|
||||
*/
|
||||
function addAnimals(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating animals");
|
||||
|
||||
var groupOffset = getRandomDeviation(size, deviation);
|
||||
|
||||
var animals = [
|
||||
@@ -732,6 +752,8 @@ function addAnimals(constraint, size, deviation, fill)
|
||||
|
||||
function addBerries(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating berries");
|
||||
|
||||
let groupOffset = getRandomDeviation(size, deviation);
|
||||
|
||||
createObjectGroupsDeprecated(
|
||||
@@ -744,6 +766,8 @@ function addBerries(constraint, size, deviation, fill)
|
||||
|
||||
function addFish(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating fish");
|
||||
|
||||
var groupOffset = getRandomDeviation(size, deviation);
|
||||
|
||||
var fishes = [
|
||||
@@ -765,6 +789,8 @@ function addForests(constraint, size, deviation, fill)
|
||||
if (currentBiome() == "generic/savanna")
|
||||
return;
|
||||
|
||||
g_Map.log("Creating forests");
|
||||
|
||||
let treeTypes = [
|
||||
[
|
||||
g_Terrains.forestFloor2 + TERRAIN_SEPARATOR + g_Gaia.tree1,
|
||||
@@ -811,6 +837,8 @@ function addForests(constraint, size, deviation, fill)
|
||||
|
||||
function addMetal(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating metal mines");
|
||||
|
||||
var offset = getRandomDeviation(size, deviation);
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(g_Gaia.metalLarge, offset, offset, 0, 4 * offset)], true, g_TileClasses.metal),
|
||||
@@ -822,6 +850,8 @@ function addMetal(constraint, size, deviation, fill)
|
||||
|
||||
function addSmallMetal(constraint, size, mixes, amounts)
|
||||
{
|
||||
g_Map.log("Creating small metal mines");
|
||||
|
||||
let deviation = getRandomDeviation(size, mixes);
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(g_Gaia.metalSmall, 2 * deviation, 5 * deviation, deviation, 3 * deviation)], true, g_TileClasses.metal),
|
||||
@@ -836,6 +866,8 @@ function addSmallMetal(constraint, size, mixes, amounts)
|
||||
*/
|
||||
function addStone(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating stone mines");
|
||||
|
||||
var offset = getRandomDeviation(size, deviation);
|
||||
|
||||
var mines = [
|
||||
@@ -862,6 +894,8 @@ function addStone(constraint, size, deviation, fill)
|
||||
*/
|
||||
function addStragglerTrees(constraint, size, deviation, fill)
|
||||
{
|
||||
g_Map.log("Creating straggler trees");
|
||||
|
||||
// Ensure minimum distribution on african biome
|
||||
if (currentBiome() == "generic/savanna")
|
||||
{
|
||||
@@ -995,6 +1029,8 @@ function unreachableBluff(bb, corners, baseLine, endLine)
|
||||
*/
|
||||
function removeBluff(points)
|
||||
{
|
||||
g_Map.log("Replacing bluff with plateau");
|
||||
|
||||
for (let point of points)
|
||||
g_TileClasses.mountain.add(point);
|
||||
}
|
||||
|
||||
@@ -121,6 +121,8 @@ function pickSize(sizes)
|
||||
*/
|
||||
function addBases(type, distance, groupedDistance, startAngle)
|
||||
{
|
||||
g_Map.log("Creating bases");
|
||||
|
||||
let playerIDs = sortAllPlayers();
|
||||
let teamsArray = getTeamsArray();
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating oases...");
|
||||
g_Map.log("Creating oases");
|
||||
var oasisRadius = fractionToTiles(scaleByMapSize(0.19, 0.22));
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
@@ -99,7 +99,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
}
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -114,7 +114,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -129,28 +129,28 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 26, clRock, 10, clWater, 1),
|
||||
2*scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 26, clRock, 10, clWater, 1),
|
||||
2*scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 26, clMetal, 10, clRock, 5, clWater, 1),
|
||||
2*scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
true
|
||||
@@ -161,7 +161,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating shrubs...");
|
||||
g_Map.log("Creating shrubs");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush2, 1,2, 0,1), new SimpleObject(aBush1, 1,3, 0,2), new SimpleObject(aBush4, 1,2, 0,1), new SimpleObject(aBush3, 1,3, 0,2)],
|
||||
true
|
||||
@@ -172,7 +172,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(10, 100), 50
|
||||
);
|
||||
|
||||
log("Creating small decorative rocks on mines...");
|
||||
g_Map.log("Creating small decorative rocks on mines");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
true
|
||||
@@ -193,21 +193,21 @@ createObjectGroupsDeprecated(
|
||||
5*scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating gazelles...");
|
||||
g_Map.log("Creating gazelles");
|
||||
group = new SimpleGroup([new SimpleObject(oGazelle, 5,7, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
borderClasses(clWater, 8, 5),
|
||||
6*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating goats...");
|
||||
g_Map.log("Creating goats");
|
||||
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
borderClasses(clWater, 8, 5),
|
||||
5*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating treasures...");
|
||||
g_Map.log("Creating treasures");
|
||||
group = new SimpleGroup([new SimpleObject(oFoodTreasure, 1,1, 0,2)], true, clTreasure);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
borderClasses(clWater, 8, 5),
|
||||
@@ -220,7 +220,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating camels...");
|
||||
g_Map.log("Creating camels");
|
||||
group = new SimpleGroup([new SimpleObject(oCamel, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
borderClasses(clWater, 14, 5),
|
||||
|
||||
@@ -78,7 +78,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating big patches...");
|
||||
g_Map.log("Creating big patches");
|
||||
var patches = [tGrass2, tGrass3];
|
||||
for (var i = 0; i < patches.length; i++)
|
||||
createAreas(
|
||||
@@ -87,7 +87,7 @@ for (var i = 0; i < patches.length; i++)
|
||||
avoidClasses(clPlayer, 10),
|
||||
scaleByMapSize(5, 20));
|
||||
|
||||
log("Creating small patches...");
|
||||
g_Map.log("Creating small patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
for (let patch of [tDirt1, tDirt2, tDirt3])
|
||||
createAreas(
|
||||
@@ -96,7 +96,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
avoidClasses(clPlayer, 12),
|
||||
scaleByMapSize(4, 15));
|
||||
|
||||
log("Creating water holes...");
|
||||
g_Map.log("Creating water holes");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), Math.floor(scaleByMapSize(20, 60)), 1),
|
||||
[
|
||||
@@ -108,7 +108,7 @@ createAreas(
|
||||
scaleByMapSize(1, 3));
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
for (var i = 0; i < scaleByMapSize(12,30); ++i)
|
||||
{
|
||||
let position = new Vector2D(randIntExclusive(0, mapSize), randIntExclusive(0, mapSize));
|
||||
@@ -119,7 +119,7 @@ for (var i = 0; i < scaleByMapSize(12,30); ++i)
|
||||
}
|
||||
}
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clPlayer, 20, clMetal, 10, clRock, 8, clWater, 4),
|
||||
@@ -128,7 +128,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRock, 1,3, 0,3)],
|
||||
true
|
||||
@@ -141,7 +141,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating gazelle...");
|
||||
g_Map.log("Creating gazelle");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGazelle, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -151,7 +151,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
log("Creating zebra...");
|
||||
g_Map.log("Creating zebra");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oZebra, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -161,7 +161,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
log("Creating giraffe...");
|
||||
g_Map.log("Creating giraffe");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGiraffe, 2,4, 0,4), new SimpleObject(oGiraffeInfant, 0,2, 0,4)],
|
||||
true, clFood
|
||||
@@ -171,7 +171,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
log("Creating elephants...");
|
||||
g_Map.log("Creating elephants");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2,4, 0,4), new SimpleObject(oElephantInfant, 0,2, 0,4)],
|
||||
true, clFood
|
||||
@@ -181,7 +181,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
log("Creating lions...");
|
||||
g_Map.log("Creating lions");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oLion, 0,1, 0,4), new SimpleObject(oLioness, 2,3, 0,4)],
|
||||
true, clFood
|
||||
@@ -191,7 +191,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -209,7 +209,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
scaleByMapSize(70, 500));
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
|
||||
@@ -89,7 +89,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating rivers...");
|
||||
g_Map.log("Creating rivers");
|
||||
var riverStart = distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers, fractionToTiles(0.15), mapCenter)[0];
|
||||
var riverEnd = distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers, fractionToTiles(0.49), mapCenter)[0];
|
||||
|
||||
@@ -97,7 +97,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
let neighborID = (i + 1) % numPlayers;
|
||||
|
||||
log("Creating lake near the center...");
|
||||
// Lake near the center
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(scaleByMapSize(5, 30)), 0.95, 0.6, 10, riverStart[i]),
|
||||
[
|
||||
@@ -106,7 +106,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
],
|
||||
avoidClasses(clPlayer, 5));
|
||||
|
||||
log("Creating the river between the players...");
|
||||
// River between the players
|
||||
createArea(
|
||||
new PathPlacer(riverStart[i], riverEnd[i], scaleByMapSize(10, 50), 0.2, 3 * scaleByMapSize(1, 4), 0.2, 0.05),
|
||||
[
|
||||
@@ -116,7 +116,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
],
|
||||
avoidClasses(clPlayer, 5));
|
||||
|
||||
log("Creating lake near the map border...");
|
||||
// Lake near the map border
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(scaleByMapSize(5, 22)), 0.95, 0.6, 10, riverEnd[i]),
|
||||
[
|
||||
@@ -125,7 +125,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
],
|
||||
avoidClasses(clPlayer, 5));
|
||||
|
||||
log("Creating shallows between neighbors...");
|
||||
// Shallows between neighbors
|
||||
createPassage({
|
||||
"start": playerPosition[i],
|
||||
"end": playerPosition[neighborID],
|
||||
@@ -138,7 +138,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
"tileClass": clShallows
|
||||
});
|
||||
|
||||
log("Creating animals in shallows...");
|
||||
// Animals in shallows
|
||||
let shallowPosition = Vector2D.average([playerPosition[i], playerPosition[neighborID]]).round();
|
||||
let objects = [
|
||||
new SimpleObject(oWildebeest, 5, 6, 0, 4),
|
||||
@@ -151,14 +151,14 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
|
||||
paintTerrainBasedOnHeight(-6, 2, 1, tWater);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
avoidClasses(clWater, 2, clPlayer, 20),
|
||||
scaleByMapSize(100, 200));
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -169,7 +169,7 @@ createAreas(
|
||||
avoidClasses(clPlayer, 20, clHill, 15, clWater, 3),
|
||||
scaleByMapSize(1, 4) * numPlayers);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(160, 900, 0.02);
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForest], [tForestFloor, pForest]]
|
||||
@@ -189,7 +189,7 @@ for (let type of types)
|
||||
);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -202,7 +202,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clPlayer, 20),
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -211,21 +211,21 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
|
||||
@@ -234,7 +234,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -245,7 +245,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -258,7 +258,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating wildebeest...");
|
||||
g_Map.log("Creating wildebeest");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWildebeest, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -270,7 +270,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating gazelle...");
|
||||
g_Map.log("Creating gazelle");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGazelle, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -280,7 +280,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating elephant...");
|
||||
g_Map.log("Creating elephant");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -290,7 +290,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating giraffe...");
|
||||
g_Map.log("Creating giraffe");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGiraffe, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -300,7 +300,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating zebra...");
|
||||
g_Map.log("Creating zebra");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oZebra, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -310,7 +310,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -320,7 +320,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
25 * numPlayers, 60
|
||||
);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -339,7 +339,7 @@ createStragglerTrees(
|
||||
stragglerTrees);
|
||||
|
||||
var planetm = 4;
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -350,7 +350,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -361,7 +361,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -182,7 +182,7 @@ placePlayerBases({
|
||||
}
|
||||
});
|
||||
|
||||
log("Creating mines...");
|
||||
g_Map.log("Creating mines");
|
||||
for (let [minHeight, maxHeight] of [[heighLimits[3], (heighLimits[4] + heighLimits[3]) / 2], [(heighLimits[5] + heighLimits[6]) / 2, heighLimits[7]]])
|
||||
for (let [template, tileClass] of [[oStoneLarge, clRock], [oMetalLarge, clMetal]])
|
||||
createObjectGroups(
|
||||
@@ -198,7 +198,7 @@ for (let [minHeight, maxHeight] of [[heighLimits[3], (heighLimits[4] + heighLimi
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Painting textures...");
|
||||
g_Map.log("Painting textures");
|
||||
var betweenShallowAndShore = (heighLimits[3] + heighLimits[2]) / 2;
|
||||
createArea(
|
||||
new HeightPlacer(Elevation_IncludeMin_IncludeMax, heighLimits[2], betweenShallowAndShore),
|
||||
@@ -213,7 +213,7 @@ createArea(
|
||||
paintTileClassBasedOnHeight(heightRange.min, heighLimits[2], 1, clWater);
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Painting paths...");
|
||||
g_Map.log("Painting paths");
|
||||
var pathBlending = numPlayers <= 4;
|
||||
for (let i = 0; i < numPlayers + (pathBlending ? 1 : 0); ++i)
|
||||
for (let j = pathBlending ? 0 : i + 1; j < numPlayers + 1; ++j)
|
||||
@@ -232,7 +232,7 @@ for (let i = 0; i < numPlayers + (pathBlending ? 1 : 0); ++i)
|
||||
}
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating decoration...");
|
||||
g_Map.log("Creating decoration");
|
||||
createDecoration(
|
||||
[
|
||||
[new SimpleObject(aRockMedium, 1, 3, 0, 1)],
|
||||
@@ -252,7 +252,7 @@ createDecoration(
|
||||
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Growing fish...");
|
||||
g_Map.log("Growing fish");
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oFish, 2, 3, 0, 2)]
|
||||
@@ -265,7 +265,7 @@ createFood(
|
||||
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Planting reeds...");
|
||||
g_Map.log("Planting reeds");
|
||||
var types = [aReeds];
|
||||
for (let type of types)
|
||||
createObjectGroupsDeprecated(
|
||||
@@ -277,7 +277,7 @@ for (let type of types)
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Planting trees...");
|
||||
g_Map.log("Planting trees");
|
||||
for (var x = 0; x < mapSize; x++)
|
||||
for (var z = 0;z < mapSize;z++)
|
||||
{
|
||||
|
||||
@@ -104,7 +104,7 @@ function createSnowflakeSearockWithCenter(sizeID)
|
||||
numIslands = islandID_center + 1;
|
||||
initIsConnected();
|
||||
|
||||
log("Creating central island...");
|
||||
g_Map.log("Creating central island");
|
||||
islandPos[islandID_center] = mapCenter;
|
||||
createIsland(islandID_center, centralIslandRadius, clLand);
|
||||
|
||||
@@ -119,18 +119,18 @@ function createSnowflakeSearockWithCenter(sizeID)
|
||||
let islandID_betweenPlayerAndCenterNeighbor = playerID_neighbor + 2 * numPlayers;
|
||||
let islandID_tertiary = playerID + 3 * numPlayers;
|
||||
|
||||
log("Creating island between the player and their neighbor...");
|
||||
g_Map.log("Creating island between the player and their neighbor");
|
||||
isConnected[islandID_betweenPlayers][islandID_player] = 1;
|
||||
isConnected[islandID_betweenPlayers][islandID_playerNeighbor] = 1;
|
||||
createIslandAtRadialLocation(playerID, islandID_betweenPlayers, 1, islandBetweenPlayersDist, islandBetweenPlayersRadius);
|
||||
|
||||
log("Creating an island between the player and the center...");
|
||||
g_Map.log("Creating an island between the player and the center");
|
||||
isConnected[islandID_betweenPlayerAndCenter][islandID_player] = 1;
|
||||
isConnected[islandID_betweenPlayerAndCenter][islandID_center] = 1;
|
||||
isConnected[islandID_betweenPlayerAndCenter][islandID_betweenPlayerAndCenterNeighbor] = 1;
|
||||
createIslandAtRadialLocation(playerID, islandID_betweenPlayerAndCenter, 0, islandBetweenPlayerAndCenterDist, islandBetweenPlayerAndCenterRadius);
|
||||
|
||||
log("Creating tertiary island, at the map border...");
|
||||
g_Map.log("Creating tertiary island, at the map border");
|
||||
isConnected[islandID_tertiary][islandID_betweenPlayers] = 1;
|
||||
createIslandAtRadialLocation(playerID, islandID_tertiary, 1, tertiaryIslandDist, tertiaryIslandRadius);
|
||||
}
|
||||
@@ -168,7 +168,7 @@ function createSnowflakeSearockTiny()
|
||||
|
||||
let islandID_center = numPlayers;
|
||||
|
||||
log("Creating central island...");
|
||||
g_Map.log("Creating central island");
|
||||
islandPos[islandID_center] = mapCenter;
|
||||
createIsland(numPlayers, 1, clLand);
|
||||
|
||||
@@ -210,7 +210,7 @@ else if (mapSize <= 320)
|
||||
else
|
||||
createSnowflakeSearockWithCenter(numPlayers < 6 ? "large1" : "large2");
|
||||
|
||||
log("Creating player islands...");
|
||||
g_Map.log("Creating player islands");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
islandPos[i] = playerPosition[i];
|
||||
@@ -252,7 +252,7 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(30);
|
||||
|
||||
log("Creating connectors...");
|
||||
g_Map.log("Creating connectors");
|
||||
for (let i = 0; i < numIslands; ++i)
|
||||
for (let j = 0; j < numIslands; ++j)
|
||||
if (isConnected[i][j])
|
||||
@@ -268,7 +268,7 @@ for (let i = 0; i < numIslands; ++i)
|
||||
"edgeTerrain": tCliff
|
||||
});
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -288,21 +288,21 @@ for (let type of types)
|
||||
num);
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10), stayClasses(clLand, 5)],
|
||||
5*scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10), stayClasses(clLand, 5)],
|
||||
5*scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5), stayClasses(clLand, 5)],
|
||||
@@ -310,7 +310,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
Engine.SetProgress(65);
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -321,7 +321,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
[avoidClasses(clForest, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 5)],
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -329,7 +329,7 @@ for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5
|
||||
[avoidClasses(clForest, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 5)],
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -340,7 +340,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
@@ -353,7 +353,7 @@ createObjectGroupsDeprecated(
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -365,7 +365,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -375,7 +375,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating fruits...");
|
||||
g_Map.log("Creating fruits");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFruitBush, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -396,7 +396,7 @@ var planetm = 1;
|
||||
if (currentBiome() == "generic/tropic")
|
||||
planetm = 8;
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -407,7 +407,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
@@ -417,7 +417,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
|
||||
@@ -56,7 +56,7 @@ var clBaseResource = g_Map.createTileClass();
|
||||
var clLand = g_Map.createTileClass();
|
||||
var clWomen = g_Map.createTileClass();
|
||||
|
||||
log("Creating central area...");
|
||||
g_Map.log("Creating central area");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.15)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -71,7 +71,7 @@ var halfway = distributePointsOnCircle(numPlayers, startAngle, fractionToTiles(0
|
||||
var attacker = distributePointsOnCircle(numPlayers, startAngle, fractionToTiles(0.45), mapCenter)[0].map(v => v.round());
|
||||
var passage = distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers, fractionToTiles(0.5), mapCenter)[0];
|
||||
|
||||
log("Creating player bases and attacker points...");
|
||||
g_Map.log("Creating player bases, passages, treasure seeker woman and attacker points");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
placeStartingEntities(playerPosition[i], playerIDs[i], getStartingEntities(playerIDs[i]).filter(ent =>
|
||||
@@ -83,7 +83,7 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
"BaseResourceClass": clBaseResource
|
||||
});
|
||||
|
||||
log("Creating passage separating players...");
|
||||
// Passage between player and neighbor
|
||||
createArea(
|
||||
new PathPlacer(mapCenter, passage[i], scaleByMapSize(14, 24), 0.4, scaleByMapSize(3, 9), 0.2, 0.05),
|
||||
[
|
||||
@@ -91,16 +91,16 @@ for (let i = 0; i < numPlayers; ++i)
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightLand, 4)
|
||||
]);
|
||||
|
||||
log("Placing treasure seeker woman...");
|
||||
// Treasure seeker woman
|
||||
let femaleLocation = findLocationInDirectionBasedOnHeight(playerPosition[i], mapCenter, -3 , 3.5, 3).round();
|
||||
clWomen.add(femaleLocation);
|
||||
g_Map.placeEntityPassable(oTreasureSeeker, playerIDs[i], femaleLocation, playerAngle[i] + Math.PI);
|
||||
|
||||
log("Placing attacker spawn point....");
|
||||
// Attacker spawn point
|
||||
g_Map.placeEntityAnywhere(aWaypointFlag, 0, attacker[i], Math.PI / 2);
|
||||
g_Map.placeEntityPassable(triggerPointAttacker, playerIDs[i], attacker[i], Math.PI / 2);
|
||||
|
||||
log("Preventing mountains in the area between player and attackers...");
|
||||
// Preventing mountains in the area between player and attackers at player
|
||||
addCivicCenterAreaToClass(playerPosition[i], clPlayer);
|
||||
clPlayer.add(attacker[i]);
|
||||
clPlayer.add(halfway[i]);
|
||||
@@ -156,7 +156,7 @@ createHills(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tMainTerrain, tTier1Terrain], [tTier1Terrain, tTier2Terrain], [tTier2Terrain, tTier3Terrain]],
|
||||
@@ -165,7 +165,7 @@ createLayeredPatches(
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tTier4Terrain,
|
||||
|
||||
@@ -51,15 +51,14 @@ var clGrass = g_Map.createTileClass();
|
||||
|
||||
var [playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.35));
|
||||
|
||||
g_Map.log("Creating big grass patches around the playerbases");
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
log("Marking player territory larger than the city patch...");
|
||||
if (!isNomad())
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(defaultPlayerBaseRadius()), 0.9, 0.5, 10, playerPosition[i]),
|
||||
new TileClassPainter(clPlayer));
|
||||
|
||||
log("Creating big grass patches surrounding the city patches...");
|
||||
createArea(
|
||||
new ChainPlacer(
|
||||
2,
|
||||
@@ -106,14 +105,14 @@ placePlayerBases({
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
avoidClasses(clPlayer, 13),
|
||||
scaleByMapSize(300, 800));
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.5),
|
||||
[
|
||||
@@ -126,7 +125,7 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(25);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(400, 2000, 0.7);
|
||||
var types = [
|
||||
[[tMainDirt, tForestFloor2, pForestP], [tForestFloor2, pForestP]],
|
||||
@@ -150,7 +149,7 @@ for (let type of types)
|
||||
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -159,7 +158,7 @@ for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8,
|
||||
scaleByMapSize(50, 90));
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating big patches...");
|
||||
g_Map.log("Creating big patches");
|
||||
for (let size of [scaleByMapSize(6, 30), scaleByMapSize(10, 50), scaleByMapSize(16, 70)])
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(3, 5)), size, 0.5),
|
||||
@@ -168,28 +167,28 @@ for (let size of [scaleByMapSize(6, 30), scaleByMapSize(10, 50), scaleByMapSize(
|
||||
scaleByMapSize(30, 90));
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0,4), new RandomObject(aBushes, 2, 4, 0, 2)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1, clGrass, 1)],
|
||||
scaleByMapSize(2,8), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3), new RandomObject(aBushes, 2,4, 0,2)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1, clGrass, 1)],
|
||||
scaleByMapSize(2,8), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4), new RandomObject(aBushes, 2,4, 0,2)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1, clGrass, 1)],
|
||||
scaleByMapSize(2,8), 100
|
||||
);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRock, 1,3, 0,1)],
|
||||
true
|
||||
@@ -200,7 +199,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushB, 1,2, 0,1), new SimpleObject(aBushA, 1,3, 0,2)],
|
||||
true
|
||||
@@ -212,7 +211,7 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Creating gazelle...");
|
||||
g_Map.log("Creating gazelle");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGazelle, 5,7, 0,4)],
|
||||
true, clFood
|
||||
@@ -222,7 +221,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating lions...");
|
||||
g_Map.log("Creating lions");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oLion, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -232,7 +231,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
log("Creating camels...");
|
||||
g_Map.log("Creating camels");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCamel, 2,3, 0,2)],
|
||||
true, clFood
|
||||
|
||||
@@ -174,14 +174,14 @@ paintRiver({
|
||||
});
|
||||
Engine.SetProgress(40);
|
||||
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
avoidClasses(clWater, 2, clPlayer, 6),
|
||||
scaleByMapSize(100, 200));
|
||||
|
||||
log("Creating ponds...");
|
||||
g_Map.log("Creating ponds");
|
||||
var numLakes = Math.round(scaleByMapSize(1, 4) * numPlayers / 2);
|
||||
var waterAreas = createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(2, 5) * 50, 0.8, 0.1, 10),
|
||||
@@ -193,7 +193,7 @@ var waterAreas = createAreas(
|
||||
avoidClasses(clPlayer, 25, clWater, 20, clPond, 10),
|
||||
numLakes);
|
||||
|
||||
log("Creating reeds...");
|
||||
g_Map.log("Creating reeds");
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aReeds, 1, 3, 0, 1)], true),
|
||||
0,
|
||||
@@ -202,7 +202,7 @@ createObjectGroupsByAreasDeprecated(
|
||||
100,
|
||||
waterAreas);
|
||||
|
||||
log("Creating lillies...");
|
||||
g_Map.log("Creating lillies");
|
||||
createObjectGroupsByAreasDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aLillies, 1, 3, 0, 1)], true),
|
||||
0,
|
||||
@@ -211,7 +211,7 @@ createObjectGroupsByAreasDeprecated(
|
||||
100,
|
||||
waterAreas);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(700, 3500, 0.5);
|
||||
var num = scaleByMapSize(10,30);
|
||||
createAreas(
|
||||
@@ -226,7 +226,7 @@ createAreas(
|
||||
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -240,7 +240,7 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
scaleByMapSize(15, 45));
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -255,42 +255,42 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
|
||||
Engine.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 1, clPond, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 1, clPond, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clWater, 1, clPond, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 1, clPond, 1), stayClasses(clDesert, 3)],
|
||||
scaleByMapSize(6,20), 100
|
||||
);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clWater, 1, clPond, 1), stayClasses(clDesert, 3)],
|
||||
scaleByMapSize(6,20), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clWater, 1, clPond, 1), stayClasses(clDesert, 3)],
|
||||
@@ -299,7 +299,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
true
|
||||
@@ -310,7 +310,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating shrubs...");
|
||||
g_Map.log("Creating shrubs");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush2, 1,2, 0,1), new SimpleObject(aBush1, 1,3, 0,2), new SimpleObject(aBush4, 1,2, 0,1), new SimpleObject(aBush3, 1,3, 0,2)],
|
||||
true
|
||||
@@ -322,21 +322,21 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating gazelles...");
|
||||
g_Map.log("Creating gazelles");
|
||||
group = new SimpleGroup([new SimpleObject(oGazelle, 5,7, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clWater, 1, clFood, 10, clDesert, 5, clPond, 1),
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating goats...");
|
||||
g_Map.log("Creating goats");
|
||||
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clWater, 1, clFood, 10, clDesert, 5, clPond, 1),
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating treasures...");
|
||||
g_Map.log("Creating treasures");
|
||||
group = new SimpleGroup([new SimpleObject(oFoodTreasure, 1,1, 0,2)], true, clTreasure);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clWater, 1, clFood, 2, clDesert, 5, clTreasure, 6, clPond, 1),
|
||||
@@ -349,7 +349,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
log("Creating camels...");
|
||||
g_Map.log("Creating camels");
|
||||
group = new SimpleGroup([new SimpleObject(oCamel, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clWater, 1, clFood, 10, clDesert, 5, clTreasure, 2, clPond, 1),
|
||||
@@ -376,7 +376,7 @@ createStragglerTrees(
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
||||
log("Creating obelisks");
|
||||
g_Map.log("Creating obelisks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(eObelisk, 1,1, 0,1)],
|
||||
true
|
||||
@@ -387,7 +387,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(5, 30), 50
|
||||
);
|
||||
|
||||
log("Creating pyramids");
|
||||
g_Map.log("Creating pyramids");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(ePyramid, 1,1, 0,1)],
|
||||
true
|
||||
|
||||
@@ -141,7 +141,7 @@ function unknownArchipelago()
|
||||
markPlayerArea("large");
|
||||
}
|
||||
|
||||
log("Creating islands...");
|
||||
g_Map.log("Creating islands");
|
||||
let islandSize = diskArea(scaleByMapSize(17, 29));
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
createArea(
|
||||
@@ -151,7 +151,7 @@ function unknownArchipelago()
|
||||
let type = isNomad() ? randIntInclusive(1, 2) : randIntInclusive(1, 3);
|
||||
if (type == 1)
|
||||
{
|
||||
log("Creating archipelago...");
|
||||
g_Map.log("Creating archipelago");
|
||||
createAreas(
|
||||
new ClumpPlacer(islandSize * randFloat(0.8, 1.2), 0.8, 0.1, 10),
|
||||
[
|
||||
@@ -161,7 +161,7 @@ function unknownArchipelago()
|
||||
null,
|
||||
scaleByMapSize(2, 5) * randIntInclusive(8, 14));
|
||||
|
||||
log("Creating shore jaggedness with small puddles...");
|
||||
g_Map.log("Creating shore jaggedness with small puddles");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(15, 80), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -174,7 +174,7 @@ function unknownArchipelago()
|
||||
}
|
||||
else if (type == 2)
|
||||
{
|
||||
log("Creating islands...");
|
||||
g_Map.log("Creating islands");
|
||||
createAreas(
|
||||
new ClumpPlacer(islandSize * randFloat(0.6, 1.4), 0.8, 0.1, randFloat(0.0, 0.2)),
|
||||
[
|
||||
@@ -184,7 +184,7 @@ function unknownArchipelago()
|
||||
avoidClasses(clLand, 3, clPlayerTerritory, 3),
|
||||
scaleByMapSize(6, 10) * randIntInclusive(8, 14));
|
||||
|
||||
log("Creating small islands...");
|
||||
g_Map.log("Creating small islands");
|
||||
createAreas(
|
||||
new ClumpPlacer(islandSize * randFloat(0.3, 0.7), 0.8, 0.1, 0.07),
|
||||
[
|
||||
@@ -197,7 +197,7 @@ function unknownArchipelago()
|
||||
}
|
||||
else if (type == 3)
|
||||
{
|
||||
log("Creating tight islands...");
|
||||
g_Map.log("Creating tight islands");
|
||||
createAreas(
|
||||
new ClumpPlacer(islandSize * randFloat(0.8, 1.2), 0.8, 0.1, 10),
|
||||
[
|
||||
@@ -218,7 +218,7 @@ function unknownContinent()
|
||||
|
||||
if (!isNomad())
|
||||
{
|
||||
log("Ensuring player area...");
|
||||
g_Map.log("Ensuring player area");
|
||||
[playerIDs, playerPosition] = playerPlacementCircle(fractionToTiles(0.25));
|
||||
markPlayerArea("small");
|
||||
|
||||
@@ -238,7 +238,7 @@ function unknownContinent()
|
||||
]);
|
||||
}
|
||||
|
||||
log("Creating continent...");
|
||||
g_Map.log("Creating continent");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.38)), 0.9, 0.09, 10, mapCenter),
|
||||
[
|
||||
@@ -248,7 +248,7 @@ function unknownContinent()
|
||||
|
||||
if (randBool(1/3))
|
||||
{
|
||||
log("Creating peninsula (i.e. half the map not being surrounded by water)...");
|
||||
g_Map.log("Creating peninsula (i.e. half the map not being surrounded by water)");
|
||||
let angle = randomAngle();
|
||||
let peninsulaPosition1 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.25), 0).rotate(-angle));
|
||||
createArea(
|
||||
@@ -258,7 +258,7 @@ function unknownContinent()
|
||||
new TileClassPainter(clLand)
|
||||
]);
|
||||
|
||||
log("Remembering to not paint shorelines into the peninsula...");
|
||||
g_Map.log("Remembering to not paint shorelines into the peninsula");
|
||||
let peninsulaPosition2 = Vector2D.add(mapCenter, new Vector2D(fractionToTiles(0.35), 0).rotate(-angle));
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.33)), 0.9, 0.01, 10, peninsulaPosition2),
|
||||
@@ -308,7 +308,7 @@ function unknownCentralSea()
|
||||
|
||||
if (!g_AllowNaval || randBool())
|
||||
{
|
||||
log("Creating isthmus (i.e. connecting the two riversides with a big land passage)...");
|
||||
g_Map.log("Creating isthmus (i.e. connecting the two riversides with a big land passage)");
|
||||
let [isthmusStart, isthmusEnd] = centralRiverCoordinates(startAngle + Math.PI / 2);
|
||||
createArea(
|
||||
new PathPlacer(
|
||||
@@ -350,14 +350,14 @@ function unknownCentralRiver()
|
||||
markPlayerArea("large");
|
||||
}
|
||||
|
||||
log("Creating the main river...");
|
||||
g_Map.log("Creating the main river");
|
||||
let [coord1, coord2] = centralRiverCoordinates(startAngle);
|
||||
createArea(
|
||||
new PathPlacer(coord1, coord2, scaleByMapSize(14, 24), 0.5, scaleByMapSize(3, 12), 0.1, 0.01),
|
||||
new SmoothElevationPainter(ELEVATION_SET, waterHeight, 4),
|
||||
avoidClasses(clPlayerTerritory, 4));
|
||||
|
||||
log("Creating small water spots at the map border to ensure separation of players...");
|
||||
g_Map.log("Creating small water spots at the map border to ensure separation of players");
|
||||
for (let coord of [coord1, coord2])
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(scaleByMapSize(5, 10)), 0.95, 0.6, 10, coord),
|
||||
@@ -366,7 +366,7 @@ function unknownCentralRiver()
|
||||
|
||||
if (!g_AllowNaval || randBool())
|
||||
{
|
||||
log("Creating the shallows of the main river...");
|
||||
g_Map.log("Creating the shallows of the main river");
|
||||
for (let i = 0; i <= randIntInclusive(1, scaleByMapSize(4, 8)); ++i)
|
||||
{
|
||||
let location = fractionToTiles(randFloat(0.15, 0.85));
|
||||
@@ -418,7 +418,7 @@ function unknownRiversAndLake()
|
||||
let lake = randBool(3/4);
|
||||
if (lake)
|
||||
{
|
||||
log("Creating lake...");
|
||||
g_Map.log("Creating lake");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.17)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -432,7 +432,7 @@ function unknownRiversAndLake()
|
||||
// Don't do this on nomad because the imbalances on the different islands are too drastic
|
||||
if (!isNomad() && (!lake || randBool(1/3)))
|
||||
{
|
||||
log("Creating small rivers separating players...");
|
||||
g_Map.log("Creating small rivers separating players");
|
||||
for (let river of distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers, fractionToTiles(0.5), mapCenter)[0])
|
||||
{
|
||||
createArea(
|
||||
@@ -452,7 +452,7 @@ function unknownRiversAndLake()
|
||||
avoidClasses(clPlayer, 5));
|
||||
}
|
||||
|
||||
log("Creating lake...");
|
||||
g_Map.log("Creating lake");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.04)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -463,7 +463,7 @@ function unknownRiversAndLake()
|
||||
|
||||
if (!isNomad && lake && randBool())
|
||||
{
|
||||
log("Creating small central island...");
|
||||
g_Map.log("Creating small central island");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.05)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -526,7 +526,7 @@ function unknownGulf()
|
||||
let startAngle = randomAngle();
|
||||
if (!isNomad())
|
||||
{
|
||||
log("Determining player locations...");
|
||||
g_Map.log("Determining player locations");
|
||||
|
||||
playerPosition = playerPlacementCustomAngle(
|
||||
fractionToTiles(0.35),
|
||||
@@ -572,7 +572,7 @@ function unknownLakes()
|
||||
markPlayerArea("large");
|
||||
}
|
||||
|
||||
log("Creating lakes...");
|
||||
g_Map.log("Creating lakes");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(160, 700), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -605,9 +605,9 @@ function unknownPasses()
|
||||
else
|
||||
startAngle = randomAngle();
|
||||
|
||||
g_Map.log("Creating a mountain range between neighboring players");
|
||||
for (let mountain of distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers, fractionToTiles(0.5), mapCenter)[0])
|
||||
{
|
||||
log("Creating a mountain range between neighboring players...");
|
||||
createArea(
|
||||
new PathPlacer(mapCenter, mountain, scaleByMapSize(14, 24), 0.4, 3 * scaleByMapSize(1, 3), 0.2, 0.05),
|
||||
[
|
||||
@@ -617,17 +617,17 @@ function unknownPasses()
|
||||
],
|
||||
avoidClasses(clPlayer, 5));
|
||||
|
||||
log("Creating small mountain at the map border between the players to ensure separation of players...");
|
||||
// Small mountain at the map border between the players to ensure separation of players
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(scaleByMapSize(4, 22)), 0.95, 0.6, 10, mountain),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightMountain, 0),
|
||||
avoidClasses(clPlayer, 5));
|
||||
}
|
||||
|
||||
g_Map.log("Creating passages between neighboring players");
|
||||
let passes = distributePointsOnCircle(numPlayers * 2, startAngle, fractionToTiles(0.35), mapCenter)[0];
|
||||
for (let i = 0; i < numPlayers; ++i)
|
||||
{
|
||||
log("Create passages between neighboring players...");
|
||||
createArea(
|
||||
new PathPlacer(
|
||||
passes[2 * i],
|
||||
@@ -642,7 +642,7 @@ function unknownPasses()
|
||||
|
||||
if (randBool(2/5))
|
||||
{
|
||||
log("Create central lake...");
|
||||
g_Map.log("Create central lake");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.1)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -652,7 +652,7 @@ function unknownPasses()
|
||||
}
|
||||
else
|
||||
{
|
||||
log("Fill area between the paths...");
|
||||
g_Map.log("Fill area between the paths");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.05)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -669,7 +669,7 @@ function unknownLowlands()
|
||||
{
|
||||
let heightMountain = 30;
|
||||
|
||||
log("Creating mountain that is going to separate players...");
|
||||
g_Map.log("Creating mountain that is going to separate players");
|
||||
createArea(
|
||||
new MapBoundsPlacer(),
|
||||
new ElevationPainter(heightMountain));
|
||||
@@ -684,7 +684,7 @@ function unknownLowlands()
|
||||
else
|
||||
startAngle = randomAngle();
|
||||
|
||||
log("Creating valleys enclosed by the mountain...");
|
||||
g_Map.log("Creating valleys enclosed by the mountain");
|
||||
let valleys = numPlayers;
|
||||
if (mapSize >= 128 && numPlayers <= 2 ||
|
||||
mapSize >= 192 && numPlayers <= 3 ||
|
||||
@@ -693,9 +693,9 @@ function unknownLowlands()
|
||||
mapSize >= 448 && numPlayers <= 6)
|
||||
valleys *= 2;
|
||||
|
||||
g_Map.log("Creating player valley");
|
||||
for (let valley of distributePointsOnCircle(valleys, startAngle, fractionToTiles(0.35), mapCenter)[0])
|
||||
{
|
||||
log("Creating player valley...");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(scaleByMapSize(18, 32)), 0.65, 0.1, 10, valley),
|
||||
[
|
||||
@@ -703,7 +703,7 @@ function unknownLowlands()
|
||||
new TileClassPainter(clLand)
|
||||
]);
|
||||
|
||||
log("Creating passes from player areas to the center...");
|
||||
// Passage from player to center
|
||||
createArea(
|
||||
new PathPlacer(mapCenter, valley, scaleByMapSize(14, 24), 0.4, 3 * scaleByMapSize(1, 3), 0.2, 0.05),
|
||||
[
|
||||
@@ -712,7 +712,7 @@ function unknownLowlands()
|
||||
]);
|
||||
}
|
||||
|
||||
log("Creating the big central area...");
|
||||
g_Map.log("Creating the big central area");
|
||||
createArea(
|
||||
new ClumpPlacer(diskArea(fractionToTiles(0.18)), 0.7, 0.1, 10, mapCenter),
|
||||
[
|
||||
@@ -747,7 +747,7 @@ function centralRiverCoordinates(angle)
|
||||
|
||||
function createShoreJaggedness(waterHeight, borderClass, shoreDist, inwards = true)
|
||||
{
|
||||
log("Creating shore jaggedness...");
|
||||
g_Map.log("Creating shore jaggedness");
|
||||
for (let i = 0; i < 2; ++i)
|
||||
if (i || inwards)
|
||||
createAreas(
|
||||
@@ -770,7 +770,7 @@ function createExtensionsOrIslands()
|
||||
|
||||
if (rnd == 1)
|
||||
{
|
||||
log("Creating islands...");
|
||||
g_Map.log("Creating islands");
|
||||
createAreas(
|
||||
new ClumpPlacer(Math.square(randIntInclusive(scaleByMapSize(8, 15), scaleByMapSize(15, 23))), 0.8, 0.1, randFloat(0, 0.2)),
|
||||
[
|
||||
@@ -782,7 +782,7 @@ function createExtensionsOrIslands()
|
||||
}
|
||||
else if (rnd == 2)
|
||||
{
|
||||
log("Creating extentions...");
|
||||
g_Map.log("Creating extentions");
|
||||
createAreas(
|
||||
new ChainPlacer(Math.floor(scaleByMapSize(4, 7)), Math.floor(scaleByMapSize(7, 10)), Math.floor(scaleByMapSize(16, 40)), 0.07),
|
||||
[
|
||||
@@ -830,14 +830,14 @@ function paintUnknownMapBasedOnHeight()
|
||||
*/
|
||||
function createUnknownObjects()
|
||||
{
|
||||
log("Creating bumps...");
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
|
||||
new SmoothElevationPainter(ELEVATION_MODIFY, heightOffsetBump, 2),
|
||||
[avoidClasses(clWater, 2, clPlayer, 10), stayClasses(clLand, 3)],
|
||||
randIntInclusive(0, scaleByMapSize(1, 2) * 200));
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -850,7 +850,7 @@ function createUnknownObjects()
|
||||
);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
let [numForest, numStragglers] = getTreeCounts(...rBiomeTreeCount(1));
|
||||
let types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -870,7 +870,7 @@ function createUnknownObjects()
|
||||
num);
|
||||
Engine.SetProgress(50);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
let patchCount = (currentBiome() == "generic/savanna" ? 3 : 1) * scaleByMapSize(15, 45);
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
@@ -882,7 +882,7 @@ function createUnknownObjects()
|
||||
[avoidClasses(clForest, 0, clHill, 2, clDirt, 5, clPlayer, 7), stayClasses(clLand, 4)],
|
||||
patchCount);
|
||||
|
||||
log("Creating grass patches...");
|
||||
g_Map.log("Creating grass patches");
|
||||
for (let size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -892,7 +892,7 @@ function createUnknownObjects()
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock),
|
||||
0,
|
||||
@@ -900,7 +900,7 @@ function createUnknownObjects()
|
||||
randIntInclusive(scaleByMapSize(2, 9), scaleByMapSize(9, 40)),
|
||||
100);
|
||||
|
||||
log("Creating small stone quarries...");
|
||||
g_Map.log("Creating small stone quarries");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock),
|
||||
0,
|
||||
@@ -908,7 +908,7 @@ function createUnknownObjects()
|
||||
randIntInclusive(scaleByMapSize(2, 9),scaleByMapSize(9, 40)),
|
||||
100);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
|
||||
0,
|
||||
@@ -917,7 +917,7 @@ function createUnknownObjects()
|
||||
100);
|
||||
Engine.SetProgress(65);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aRockMedium, 1, 3, 0, 1)], true),
|
||||
0,
|
||||
@@ -925,7 +925,7 @@ function createUnknownObjects()
|
||||
scaleByMapSize(16, 262),
|
||||
50);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aRockLarge, 1, 2, 0, 1), new SimpleObject(aRockMedium, 1, 3, 0, 2)], true),
|
||||
0,
|
||||
@@ -934,7 +934,7 @@ function createUnknownObjects()
|
||||
50);
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating deer...");
|
||||
g_Map.log("Creating deer");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oMainHuntableAnimal, 5, 7, 0, 4)], true, clFood),
|
||||
0,
|
||||
@@ -942,7 +942,7 @@ function createUnknownObjects()
|
||||
randIntInclusive(numPlayers + 3, 5 * numPlayers + 4),
|
||||
50);
|
||||
|
||||
log("Creating berry bush...");
|
||||
g_Map.log("Creating berry bush");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oFruitBush, 5, 7, 0, 4)], true, clFood),
|
||||
0,
|
||||
@@ -951,7 +951,7 @@ function createUnknownObjects()
|
||||
50);
|
||||
Engine.SetProgress(75);
|
||||
|
||||
log("Creating sheep...");
|
||||
g_Map.log("Creating sheep");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oSecondaryHuntableAnimal, 2, 3, 0, 2)], true, clFood),
|
||||
0,
|
||||
@@ -959,7 +959,7 @@ function createUnknownObjects()
|
||||
randIntInclusive(numPlayers + 3, 5 * numPlayers + 4),
|
||||
50);
|
||||
|
||||
log("Creating fish...");
|
||||
g_Map.log("Creating fish");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(oFish, 2, 3, 0, 2)], true, clFood),
|
||||
0,
|
||||
@@ -968,7 +968,7 @@ function createUnknownObjects()
|
||||
60);
|
||||
Engine.SetProgress(85);
|
||||
|
||||
log("Creating straggler trees...");
|
||||
g_Map.log("Creating straggler trees");
|
||||
types = [g_Gaia.tree1, g_Gaia.tree2, g_Gaia.tree3, g_Gaia.tree4];
|
||||
|
||||
num = Math.floor(numStragglers / types.length);
|
||||
@@ -981,7 +981,7 @@ function createUnknownObjects()
|
||||
|
||||
let planetm = currentBiome() == "generic/tropic" ? 8 : 1;
|
||||
|
||||
log("Creating small grass tufts...");
|
||||
g_Map.log("Creating small grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aGrassShort, 1, 2, 0, 1, -Math.PI / 8, Math.PI / 8)]),
|
||||
0,
|
||||
@@ -989,7 +989,7 @@ function createUnknownObjects()
|
||||
planetm * scaleByMapSize(13, 200));
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating large grass tufts...");
|
||||
g_Map.log("Creating large grass tufts");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aGrass, 2, 4, 0, 1.8, -Math.PI / 8, Math.PI / 8), new SimpleObject(aGrassShort, 3, 6, 1.2, 2.5, -Math.PI / 8, Math.PI / 8)]),
|
||||
0,
|
||||
@@ -997,7 +997,7 @@ function createUnknownObjects()
|
||||
planetm * scaleByMapSize(13, 200));
|
||||
Engine.SetProgress(95);
|
||||
|
||||
log("Creating shallow flora...");
|
||||
g_Map.log("Creating shallow flora");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aLillies, 1, 2, 0, 2), new SimpleObject(aReeds, 2, 4, 0, 2)]),
|
||||
0,
|
||||
@@ -1005,7 +1005,7 @@ function createUnknownObjects()
|
||||
60 * scaleByMapSize(13, 200),
|
||||
80);
|
||||
|
||||
log("Creating bushes...");
|
||||
g_Map.log("Creating bushes");
|
||||
createObjectGroupsDeprecated(
|
||||
new SimpleGroup([new SimpleObject(aBushMedium, 1, 2, 0, 2), new SimpleObject(aBushSmall, 2, 4, 0, 2)]),
|
||||
0,
|
||||
|
||||
@@ -63,7 +63,7 @@ Engine.SetProgress(15);
|
||||
createVolcano(mapCenter, clHill, tCliff, [tLava1, tLava2, tLava3], true, ELEVATION_SET);
|
||||
Engine.SetProgress(45);
|
||||
|
||||
log("Creating hills...");
|
||||
g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
|
||||
[
|
||||
@@ -75,7 +75,7 @@ createAreas(
|
||||
scaleByMapSize(2, 8) * numPlayers
|
||||
);
|
||||
|
||||
log("Creating forests...");
|
||||
g_Map.log("Creating forests");
|
||||
var [forestTrees, stragglerTrees] = getTreeCounts(200, 1250, 0.7);
|
||||
var types = [
|
||||
[[tGrassB, tGrassA, pForestD], [tGrassB, pForestD]],
|
||||
@@ -95,7 +95,7 @@ for (let type of types)
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
log("Creating dirt patches...");
|
||||
g_Map.log("Creating dirt patches");
|
||||
for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
@@ -127,21 +127,21 @@ for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8
|
||||
scaleByMapSize(20, 80)
|
||||
);
|
||||
|
||||
log("Creating stone mines...");
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating small stone mines...");
|
||||
g_Map.log("Creating small stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1),
|
||||
@@ -150,7 +150,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
Engine.SetProgress(90);
|
||||
|
||||
log("Creating small decorative rocks...");
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
true
|
||||
@@ -161,7 +161,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
true
|
||||
|
||||
@@ -493,7 +493,7 @@ let playerHeightRange = { "min" : heighLimits[3], "max" : heighLimits[4] };
|
||||
let resourceSpotHeightRange = { "min" : (heighLimits[2] + heighLimits[3]) / 2, "max" : (heighLimits[4] + heighLimits[5]) / 2 };
|
||||
let playerHeight = (playerHeightRange.min + playerHeightRange.max) / 2; // Average player height
|
||||
|
||||
log("Chosing starting locations...");
|
||||
g_Map.log("Chosing starting locations");
|
||||
let [playerIDs, playerPosition] = sortPlayersByLocation(getStartLocationsByHeightmap(playerHeightRange, 1000, 30));
|
||||
|
||||
Engine.SetProgress(30);
|
||||
@@ -513,9 +513,7 @@ for (let p = 0; p < playerIDs.length; ++p)
|
||||
*/
|
||||
let tchm = getTileCenteredHeightmap();
|
||||
|
||||
/**
|
||||
* Divide tiles in areas by height and avoid paths
|
||||
*/
|
||||
g_Map.log("Get points per height");
|
||||
let areas = heighLimits.map(heightLimit => []);
|
||||
for (let x = 0; x < tchm.length; ++x)
|
||||
for (let y = 0; y < tchm[0].length; ++y)
|
||||
@@ -528,14 +526,12 @@ for (let x = 0; x < tchm.length; ++x)
|
||||
areas[h].push(new Vector2D(x, y));
|
||||
break;
|
||||
}
|
||||
else
|
||||
minHeight = heighLimits[h];
|
||||
|
||||
minHeight = heighLimits[h];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get max slope of each area
|
||||
*/
|
||||
g_Map.log("Get slope limits per heightrange");
|
||||
let slopeMap = getSlopeMap();
|
||||
let minSlope = [];
|
||||
let maxSlope = [];
|
||||
@@ -555,9 +551,7 @@ for (let h = 0; h < heighLimits.length; ++h)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Paint areas by height and slope
|
||||
*/
|
||||
g_Map.log("Paint areas by height and slope");
|
||||
for (let h = 0; h < heighLimits.length; ++h)
|
||||
for (let point of areas[h])
|
||||
{
|
||||
@@ -583,7 +577,7 @@ for (let h = 0; h < heighLimits.length; ++h)
|
||||
}
|
||||
Engine.SetProgress(80);
|
||||
|
||||
log("Placing resources...");
|
||||
g_Map.log("Placing resources");
|
||||
let avoidPoints = playerPosition.map(pos => pos.clone());
|
||||
for (let i = 0; i < avoidPoints.length; ++i)
|
||||
avoidPoints[i].dist = 30;
|
||||
@@ -591,7 +585,7 @@ let resourceSpots = getPointsByHeight(resourceSpotHeightRange, avoidPoints).map(
|
||||
|
||||
Engine.SetProgress(55);
|
||||
|
||||
log("Placing players...");
|
||||
g_Map.log("Placing players");
|
||||
if (isNomad())
|
||||
placePlayersNomad(
|
||||
g_Map.createTileClass(),
|
||||
@@ -607,7 +601,7 @@ else
|
||||
}
|
||||
|
||||
let mercenaryCamps = isNomad() ? 0 : Math.ceil(g_Map.size / 256);
|
||||
log("Maximum number of mercenary camps: " + mercenaryCamps);
|
||||
g_Map.log("Placing at most " + mercenaryCamps + " mercenary camps");
|
||||
for (let i = 0; i < resourceSpots.length; ++i)
|
||||
{
|
||||
let choice = i % 5;
|
||||
|
||||
Reference in New Issue
Block a user