Biomes for alpine_lakes and alpine_valley
The "biomes" where duplicated between alpine_lakes and alpine_valley. The biomes can now be selected by the game setup page. This also remove many `var`'s. Comments by: @Stan, @elexis Differential Revision: https://code.wildfiregames.com/D5277 This was SVN commit r28099.
This commit is contained in:
parent
163063c2a4
commit
c6df8f9372
@ -1,90 +1,27 @@
|
||||
Engine.LoadLibrary("rmbiome");
|
||||
Engine.LoadLibrary("rmgen");
|
||||
Engine.LoadLibrary("rmgen-common");
|
||||
|
||||
if (randBool())
|
||||
{
|
||||
RandomMapLogger.prototype.printDirectly("Setting late spring biome.\n");
|
||||
setBiome(g_MapSettings.Biome ?? "alpine/winter");
|
||||
const isLateSpringBiome = g_MapSettings.Biome !== "alpine/winter";
|
||||
|
||||
setFogThickness(0.26);
|
||||
setFogFactor(0.4);
|
||||
setFogThickness(isLateSpringBiome ? 0.26 : 0.19);
|
||||
setFogFactor(isLateSpringBiome ? 0.4 : 0.35);
|
||||
|
||||
setPPEffect("hdr");
|
||||
setPPSaturation(0.48);
|
||||
setPPSaturation(isLateSpringBiome ? 0.48 : 0.37);
|
||||
if (isLateSpringBiome)
|
||||
{
|
||||
setPPContrast(0.53);
|
||||
setPPBloom(0.12);
|
||||
|
||||
var tPrimary = ["alpine_dirt_grass_50"];
|
||||
var tForestFloor = "alpine_forrestfloor";
|
||||
var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"];
|
||||
var tSecondary = "alpine_grass_rocky";
|
||||
var tHalfSnow = ["alpine_grass_snow_50", "alpine_dirt_snow"];
|
||||
var tSnowLimited = ["alpine_snow_rocky"];
|
||||
var tDirt = "alpine_dirt";
|
||||
var tRoad = "new_alpine_citytile";
|
||||
var tRoadWild = "new_alpine_citytile";
|
||||
var tShore = "alpine_shore_rocks_grass_50";
|
||||
var tWater = "alpine_shore_rocks";
|
||||
|
||||
var oPine = "gaia/tree/pine";
|
||||
var oBerryBush = "gaia/fruit/berry_01";
|
||||
var oDeer = "gaia/fauna_deer";
|
||||
var oFish = "gaia/fish/generic";
|
||||
var oRabbit = "gaia/fauna_rabbit";
|
||||
var oStoneLarge = "gaia/rock/alpine_large";
|
||||
var oStoneSmall = "gaia/rock/alpine_small";
|
||||
var oMetalLarge = "gaia/ore/alpine_large";
|
||||
|
||||
var aGrass = "actor|props/flora/grass_soft_small_tall.xml";
|
||||
var aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
var aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
var aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
var aBushMedium = "actor|props/flora/bush_medit_me.xml";
|
||||
var aBushSmall = "actor|props/flora/bush_medit_sm.xml";
|
||||
}
|
||||
else
|
||||
{
|
||||
RandomMapLogger.prototype.printDirectly("Setting winter spring biome.\n");
|
||||
|
||||
setFogFactor(0.35);
|
||||
setFogThickness(0.19);
|
||||
setPPSaturation(0.37);
|
||||
setPPEffect("hdr");
|
||||
|
||||
var tPrimary = ["alpine_snow_a", "alpine_snow_b"];
|
||||
var tForestFloor = "alpine_forrestfloor_snow";
|
||||
var tCliff = ["alpine_cliff_snow"];
|
||||
var tSecondary = "alpine_grass_snow_50";
|
||||
var tHalfSnow = ["alpine_grass_snow_50", "alpine_dirt_snow"];
|
||||
var tSnowLimited = ["alpine_snow_a", "alpine_snow_b"];
|
||||
var tDirt = "alpine_dirt";
|
||||
var tRoad = "new_alpine_citytile";
|
||||
var tRoadWild = "new_alpine_citytile";
|
||||
var tShore = "alpine_shore_rocks_icy";
|
||||
var tWater = "alpine_shore_rocks";
|
||||
|
||||
var oPine = "gaia/tree/pine_w";
|
||||
var oBerryBush = "gaia/fruit/berry_01";
|
||||
var oDeer = "gaia/fauna_deer";
|
||||
var oFish = "gaia/fish/generic";
|
||||
var oRabbit = "gaia/fauna_rabbit";
|
||||
var oStoneLarge = "gaia/rock/alpine_large";
|
||||
var oStoneSmall = "gaia/rock/alpine_small";
|
||||
var oMetalLarge = "gaia/ore/alpine_large";
|
||||
|
||||
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
|
||||
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
|
||||
var aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
var aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
var aBushMedium = "actor|props/flora/bush_medit_me_dry.xml";
|
||||
var aBushSmall = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
}
|
||||
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
|
||||
const pForest = [g_Terrains.forestFloor + TERRAIN_SEPARATOR + g_Gaia.tree1, g_Terrains.forestFloor];
|
||||
|
||||
const heightSeaGround = -5;
|
||||
const heightLand = 3;
|
||||
|
||||
const g_Map = new RandomMap(heightLand, tPrimary);
|
||||
const g_Map = new RandomMap(heightLand, g_Terrains.mainTerrain);
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = g_Map.getSize();
|
||||
@ -104,31 +41,38 @@ placePlayerBases({
|
||||
"PlayerTileClass": clPlayer,
|
||||
"BaseResourceClass": clBaseResource,
|
||||
"CityPatch": {
|
||||
"outerTerrain": tRoadWild,
|
||||
"innerTerrain": tRoad
|
||||
"outerTerrain": g_Terrains.roadWild,
|
||||
"innerTerrain": g_Terrains.road
|
||||
},
|
||||
"StartingAnimal": {
|
||||
},
|
||||
"Berries": {
|
||||
"template": oBerryBush
|
||||
"template": g_Gaia.fruitBush
|
||||
},
|
||||
"Mines": {
|
||||
"types": [
|
||||
{ "template": oMetalLarge },
|
||||
{ "template": oStoneLarge }
|
||||
{ "template": g_Gaia.metalLarge },
|
||||
{ "template": g_Gaia.stoneLarge }
|
||||
]
|
||||
},
|
||||
"Trees": {
|
||||
"template": oPine,
|
||||
"template": g_Gaia.tree1,
|
||||
"count": scaleByMapSize(3, 12)
|
||||
},
|
||||
"Decoratives": {
|
||||
"template": aGrassShort
|
||||
"template": g_Decoratives.grassShort
|
||||
}
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
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)));
|
||||
createMountains(g_Terrains.cliff,
|
||||
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);
|
||||
|
||||
@ -136,7 +80,7 @@ g_Map.log("Creating lakes");
|
||||
createAreas(
|
||||
new ChainPlacer(1, Math.floor(scaleByMapSize(4, 8)), Math.floor(scaleByMapSize(40, 180)), 0.7),
|
||||
[
|
||||
new LayeredPainter([tShore, tWater], [1]),
|
||||
new LayeredPainter([g_Terrains.shore, g_Terrains.water], [1]),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightSeaGround, 5),
|
||||
new TileClassPainter(clWater)
|
||||
],
|
||||
@ -144,14 +88,14 @@ createAreas(
|
||||
scaleByMapSize(5, 16),
|
||||
1);
|
||||
|
||||
paintTerrainBasedOnHeight(3, Math.floor(scaleByMapSize(20, 40)), 0, tCliff);
|
||||
paintTerrainBasedOnHeight(Math.floor(scaleByMapSize(20, 40)), 100, 3, tSnowLimited);
|
||||
paintTerrainBasedOnHeight(3, Math.floor(scaleByMapSize(20, 40)), 0, g_Terrains.cliff);
|
||||
paintTerrainBasedOnHeight(Math.floor(scaleByMapSize(20, 40)), 100, 3, g_Terrains.snowLimited);
|
||||
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
createForests(
|
||||
[tPrimary, tForestFloor, tForestFloor, pForest, pForest],
|
||||
[g_Terrains.mainTerrain, g_Terrains.forestFloor, g_Terrains.forestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 2),
|
||||
clForest,
|
||||
forestTrees);
|
||||
@ -161,7 +105,7 @@ Engine.SetProgress(60);
|
||||
g_Map.log("Creating dirt patches");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
[[tDirt,tHalfSnow], [tHalfSnow,tSnowLimited]],
|
||||
[[g_Terrains.dirt, g_Terrains.halfSnow], [g_Terrains.halfSnow, g_Terrains.snowLimited]],
|
||||
[2],
|
||||
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
|
||||
scaleByMapSize(15, 45),
|
||||
@ -170,7 +114,7 @@ createLayeredPatches(
|
||||
g_Map.log("Creating grass patches");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
tSecondary,
|
||||
g_Terrains.tier2Terrain,
|
||||
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
|
||||
scaleByMapSize(15, 45),
|
||||
clDirt);
|
||||
@ -179,8 +123,13 @@ Engine.SetProgress(65);
|
||||
g_Map.log("Creating stone mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0, 2, 0, 4, 0, 2 * Math.PI, 1), new SimpleObject(oStoneLarge, 1, 1, 0, 4, 0, 2 * Math.PI, 4)],
|
||||
[new SimpleObject(oStoneSmall, 2,5, 1,3)]
|
||||
[
|
||||
new SimpleObject(g_Gaia.stoneSmall, 0, 2, 0, 4, 0, 2 * Math.PI, 1),
|
||||
new SimpleObject(g_Gaia.stoneSmall, 1, 1, 0, 4, 0, 2 * Math.PI, 4)
|
||||
],
|
||||
[
|
||||
new SimpleObject(g_Gaia.stoneSmall, 2, 5, 1, 3)
|
||||
]
|
||||
],
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
clRock);
|
||||
@ -188,21 +137,33 @@ createMines(
|
||||
g_Map.log("Creating metal mines");
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
[new SimpleObject(g_Gaia.metalLarge, 1, 1, 0, 4)]
|
||||
],
|
||||
avoidClasses(clWater, 3, clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
|
||||
clMetal
|
||||
);
|
||||
clMetal);
|
||||
|
||||
Engine.SetProgress(70);
|
||||
|
||||
createDecoration(
|
||||
[
|
||||
[new SimpleObject(aRockMedium, 1, 3, 0, 1)],
|
||||
[new SimpleObject(aRockLarge, 1, 2, 0, 1), new SimpleObject(aRockMedium, 1, 3, 0, 2)],
|
||||
[new SimpleObject(aGrassShort, 1, 2, 0, 1)],
|
||||
[new SimpleObject(aGrass, 2, 4, 0, 1.8), new SimpleObject(aGrassShort, 3, 6, 1.2, 2.5)],
|
||||
[new SimpleObject(aBushMedium, 1, 2, 0, 2), new SimpleObject(aBushSmall, 2, 4, 0, 2)]
|
||||
[
|
||||
new SimpleObject(g_Decoratives.rockMedium, 1, 3, 0, 1)
|
||||
],
|
||||
[
|
||||
new SimpleObject(g_Decoratives.rockLarge, 1, 2, 0, 1),
|
||||
new SimpleObject(g_Decoratives.rockMedium, 1, 3, 0, 2)
|
||||
],
|
||||
[
|
||||
new SimpleObject(g_Decoratives.grassShort, 1, 2, 0, 1)
|
||||
],
|
||||
[
|
||||
new SimpleObject(g_Decoratives.grass, 2, 4, 0, 1.8),
|
||||
new SimpleObject(g_Decoratives.grassShort, 3, 6, 1.2, 2.5)
|
||||
],
|
||||
[
|
||||
new SimpleObject(g_Decoratives.bushMedium, 1, 2, 0, 2),
|
||||
new SimpleObject(g_Decoratives.bushSmall, 2, 4, 0, 2)
|
||||
]
|
||||
],
|
||||
[
|
||||
scaleByMapAreaAbsolute(16),
|
||||
@ -217,8 +178,8 @@ Engine.SetProgress(75);
|
||||
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oDeer, 5, 7, 0, 4)],
|
||||
[new SimpleObject(oRabbit, 2, 3, 0, 2)]
|
||||
[new SimpleObject(g_Gaia.mainHuntableAnimal, 5, 7, 0, 4)],
|
||||
[new SimpleObject(g_Gaia.secondaryHuntableAnimal, 2, 3, 0, 2)]
|
||||
],
|
||||
[
|
||||
3 * numPlayers,
|
||||
@ -229,7 +190,7 @@ createFood(
|
||||
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oBerryBush, 5, 7, 0, 4)]
|
||||
[new SimpleObject(g_Gaia.fruitBush, 5, 7, 0, 4)]
|
||||
],
|
||||
[
|
||||
randIntInclusive(1, 4) * numPlayers + 2
|
||||
@ -239,7 +200,7 @@ createFood(
|
||||
|
||||
createFood(
|
||||
[
|
||||
[new SimpleObject(oFish, 2, 3, 0, 2)]
|
||||
[new SimpleObject(g_Gaia.fish, 2, 3, 0, 2)]
|
||||
],
|
||||
[
|
||||
15 * numPlayers
|
||||
@ -250,7 +211,7 @@ createFood(
|
||||
Engine.SetProgress(85);
|
||||
|
||||
createStragglerTrees(
|
||||
[oPine],
|
||||
[g_Gaia.tree1],
|
||||
avoidClasses(clWater, 5, clForest, 3, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
|
@ -4,6 +4,7 @@
|
||||
"Script" : "alpine_lakes.js",
|
||||
"Description" : "High Alpine mountains surrounding deep valleys strung with mountain streams and finger-like lakes.",
|
||||
"CircularMap" : true,
|
||||
"Preview" : "alpine_lakes.png"
|
||||
"Preview" : "alpine_lakes.png",
|
||||
"SupportedBiomes": "alpine/"
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
Engine.LoadLibrary("rmbiome");
|
||||
Engine.LoadLibrary("rmgen");
|
||||
Engine.LoadLibrary("rmgen-common");
|
||||
|
||||
@ -17,6 +18,8 @@ TILE_CENTERED_HEIGHT_MAP = true;
|
||||
*/
|
||||
function MountainRangeBuilder(args)
|
||||
{
|
||||
this.numPlayers = args.numPlayers;
|
||||
|
||||
/**
|
||||
* These parameters paint the mountainranges after their location was determined.
|
||||
*/
|
||||
@ -76,7 +79,7 @@ function MountainRangeBuilder(args)
|
||||
MountainRangeBuilder.prototype.InitPossibleEdges = function()
|
||||
{
|
||||
for (let i = 0; i < this.vertices.length; ++i)
|
||||
for (let j = numPlayers; j < this.vertices.length; ++j)
|
||||
for (let j = this.numPlayers; j < this.vertices.length; ++j)
|
||||
if (j > i)
|
||||
this.possibleEdges.push([i, j]);
|
||||
};
|
||||
@ -87,7 +90,12 @@ MountainRangeBuilder.prototype.InitConnectable = function()
|
||||
{
|
||||
this.verticesConnectable[i] = [];
|
||||
for (let j = 0; j < this.vertices.length; ++j)
|
||||
this.verticesConnectable[i][j] = i >= numPlayers || j >= numPlayers || i == j || i != j - 1 && i != j + 1;
|
||||
this.verticesConnectable[i][j] =
|
||||
i >= this.numPlayers ||
|
||||
j >= this.numPlayers ||
|
||||
i == j ||
|
||||
i != j - 1 &&
|
||||
i != j + 1;
|
||||
}
|
||||
};
|
||||
|
||||
@ -196,9 +204,9 @@ MountainRangeBuilder.prototype.PaintCurrentEdge = function()
|
||||
/**
|
||||
* This is the only function meant to be publicly accessible.
|
||||
*/
|
||||
MountainRangeBuilder.prototype.CreateMountainRanges = function()
|
||||
MountainRangeBuilder.prototype.CreateMountainRanges = function(map)
|
||||
{
|
||||
g_Map.log("Creating mountainrange with " + this.possibleEdges.length + " possible edges");
|
||||
map.log("Creating mountainrange with " + this.possibleEdges.length + " possible edges");
|
||||
|
||||
const max = this.possibleEdges.length;
|
||||
|
||||
@ -226,71 +234,16 @@ MountainRangeBuilder.prototype.CreateMountainRanges = function()
|
||||
}
|
||||
};
|
||||
|
||||
if (randBool())
|
||||
{
|
||||
RandomMapLogger.prototype.printDirectly("Setting late spring biome.\n");
|
||||
var tPrimary = ["alpine_dirt_grass_50"];
|
||||
var tForestFloor = "alpine_forrestfloor";
|
||||
var tCliff = ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"];
|
||||
var tSecondary = "alpine_grass_rocky";
|
||||
var tHalfSnow = ["alpine_grass_snow_50", "alpine_dirt_snow"];
|
||||
var tSnowLimited = ["alpine_snow_rocky"];
|
||||
var tDirt = "alpine_dirt";
|
||||
var tRoad = "new_alpine_citytile";
|
||||
var tRoadWild = "new_alpine_citytile";
|
||||
|
||||
var oPine = "gaia/tree/pine";
|
||||
var oBerryBush = "gaia/fruit/berry_01";
|
||||
var oDeer = "gaia/fauna_deer";
|
||||
var oRabbit = "gaia/fauna_rabbit";
|
||||
var oStoneLarge = "gaia/rock/alpine_large";
|
||||
var oStoneSmall = "gaia/rock/alpine_small";
|
||||
var oMetalLarge = "gaia/ore/alpine_large";
|
||||
|
||||
var aGrass = "actor|props/flora/grass_soft_small_tall.xml";
|
||||
var aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
var aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
var aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
var aBushMedium = "actor|props/flora/bush_medit_me.xml";
|
||||
var aBushSmall = "actor|props/flora/bush_medit_sm.xml";
|
||||
}
|
||||
else
|
||||
{
|
||||
RandomMapLogger.prototype.printDirectly("Setting winter biome.\n");
|
||||
var tPrimary = ["alpine_snow_a", "alpine_snow_b"];
|
||||
var tForestFloor = "alpine_forrestfloor_snow";
|
||||
var tCliff = ["alpine_cliff_snow"];
|
||||
var tSecondary = "alpine_grass_snow_50";
|
||||
var tHalfSnow = ["alpine_grass_snow_50", "alpine_dirt_snow"];
|
||||
var tSnowLimited = ["alpine_snow_a", "alpine_snow_b"];
|
||||
var tDirt = "alpine_dirt";
|
||||
var tRoad = "new_alpine_citytile";
|
||||
var tRoadWild = "new_alpine_citytile";
|
||||
|
||||
var oPine = "gaia/tree/pine_w";
|
||||
var oBerryBush = "gaia/fruit/berry_01";
|
||||
var oDeer = "gaia/fauna_deer";
|
||||
var oRabbit = "gaia/fauna_rabbit";
|
||||
var oStoneLarge = "gaia/rock/alpine_large";
|
||||
var oStoneSmall = "gaia/rock/alpine_small";
|
||||
var oMetalLarge = "gaia/ore/alpine_large";
|
||||
|
||||
var aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
|
||||
var aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
|
||||
var aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
var aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
var aBushMedium = "actor|props/flora/bush_medit_me_dry.xml";
|
||||
var aBushSmall = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
}
|
||||
setBiome(g_MapSettings.Biome ?? "alpine/winter");
|
||||
|
||||
var heightLand = 3;
|
||||
var heightOffsetBump = 2;
|
||||
var snowlineHeight = 29;
|
||||
var heightMountain = 30;
|
||||
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
|
||||
const pForest = [g_Terrains.forestFloor + TERRAIN_SEPARATOR + g_Gaia.tree1, g_Terrains.forestFloor];
|
||||
|
||||
const g_Map = new RandomMap(heightLand, tPrimary);
|
||||
const g_Map = new RandomMap(heightLand, g_Terrains.mainTerrain);
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapCenter = g_Map.getCenter();
|
||||
@ -311,33 +264,34 @@ placePlayerBases({
|
||||
"PlayerTileClass": clPlayer,
|
||||
"BaseResourceClass": clBaseResource,
|
||||
"CityPatch": {
|
||||
"outerTerrain": tRoadWild,
|
||||
"innerTerrain": tRoad
|
||||
"outerTerrain": g_Terrains.roadWild,
|
||||
"innerTerrain": g_Terrains.road
|
||||
},
|
||||
"StartingAnimal": {
|
||||
},
|
||||
"Berries": {
|
||||
"template": oBerryBush
|
||||
"template": g_Gaia.fruitBush
|
||||
},
|
||||
"Mines": {
|
||||
"types": [
|
||||
{ "template": oMetalLarge },
|
||||
{ "template": oStoneLarge }
|
||||
{ "template": g_Gaia.metalLarge },
|
||||
{ "template": g_Gaia.stoneLarge }
|
||||
]
|
||||
},
|
||||
"Trees": {
|
||||
"template": oPine
|
||||
"template": g_Gaia.tree1
|
||||
},
|
||||
"Decoratives": {
|
||||
"template": aGrassShort
|
||||
"template": g_Decoratives.grassShort
|
||||
}
|
||||
});
|
||||
Engine.SetProgress(20);
|
||||
|
||||
new MountainRangeBuilder({
|
||||
"numPlayers": numPlayers,
|
||||
"pathplacer": new PathPlacer(undefined, undefined, undefined, 0.4, scaleByMapSize(3, 12), 0.1, 0.1, 0.1),
|
||||
"painters":[
|
||||
new LayeredPainter([tCliff, tPrimary], [3]),
|
||||
new LayeredPainter([g_Terrains.cliff, g_Terrains.mainTerrain], [3]),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightMountain, 2),
|
||||
new TileClassPainter(clHill)
|
||||
],
|
||||
@ -353,12 +307,12 @@ new MountainRangeBuilder({
|
||||
...distributePointsOnCircle(numPlayers, startAngle + Math.PI / numPlayers, fractionToTiles(0.18), mapCenter)[0],
|
||||
mapCenter
|
||||
]
|
||||
}).CreateMountainRanges();
|
||||
}).CreateMountainRanges(g_Map);
|
||||
|
||||
Engine.SetProgress(35);
|
||||
|
||||
paintTerrainBasedOnHeight(heightLand + 0.1, snowlineHeight, 0, tCliff);
|
||||
paintTerrainBasedOnHeight(snowlineHeight, heightMountain, 3, tSnowLimited);
|
||||
paintTerrainBasedOnHeight(heightLand + 0.1, snowlineHeight, 0, g_Terrains.cliff);
|
||||
paintTerrainBasedOnHeight(snowlineHeight, heightMountain, 3, g_Terrains.snowLimited);
|
||||
|
||||
g_Map.log("Creating bumps");
|
||||
createAreas(
|
||||
@ -372,7 +326,7 @@ g_Map.log("Creating hills");
|
||||
createAreas(
|
||||
new ClumpPlacer(scaleByMapSize(40, 150), 0.2, 0.1, Infinity),
|
||||
[
|
||||
new LayeredPainter([tCliff, tSnowLimited], [2]),
|
||||
new LayeredPainter([g_Terrains.cliff, g_Terrains.snowLimited], [2]),
|
||||
new SmoothElevationPainter(ELEVATION_SET, heightMountain, 2),
|
||||
new TileClassPainter(clHill)
|
||||
],
|
||||
@ -384,7 +338,7 @@ Engine.SetProgress(50);
|
||||
g_Map.log("Creating forests");
|
||||
const [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
|
||||
const types = [
|
||||
[[tForestFloor, tPrimary, pForest], [tForestFloor, pForest]]
|
||||
[[g_Terrains.forestFloor, g_Terrains.mainTerrain, pForest], [g_Terrains.forestFloor, pForest]]
|
||||
];
|
||||
|
||||
var size = forestTrees / (scaleByMapSize(2,8) * numPlayers);
|
||||
@ -406,7 +360,12 @@ for (const size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
[
|
||||
new LayeredPainter([[tDirt, tHalfSnow], [tHalfSnow, tSnowLimited]], [2]),
|
||||
new LayeredPainter(
|
||||
[
|
||||
[g_Terrains.dirt, g_Terrains.halfSnow],
|
||||
[g_Terrains.halfSnow, g_Terrains.snowLimited]
|
||||
],
|
||||
[2]),
|
||||
new TileClassPainter(clDirt)
|
||||
],
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
|
||||
@ -416,28 +375,34 @@ g_Map.log("Creating grass patches");
|
||||
for (const size of [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)])
|
||||
createAreas(
|
||||
new ClumpPlacer(size, 0.3, 0.06, 0.5),
|
||||
new TerrainPainter(tSecondary),
|
||||
new TerrainPainter(g_Terrains.tier2Terrain),
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12),
|
||||
scaleByMapSize(15, 45));
|
||||
|
||||
Engine.SetProgress(65);
|
||||
|
||||
g_Map.log("Creating stone mines");
|
||||
var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4, 0, 2 * Math.PI, 1), new SimpleObject(oStoneLarge, 1, 1, 0, 4, 0, 2 * Math.PI, 4)], true, clRock);
|
||||
var group = new SimpleGroup(
|
||||
[
|
||||
new SimpleObject(g_Gaia.stoneSmall, 0, 2, 0, 4, 0, 2 * Math.PI, 1),
|
||||
new SimpleObject(g_Gaia.stoneLarge, 1, 1, 0, 4, 0, 2 * Math.PI, 4)
|
||||
],
|
||||
true,
|
||||
clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
g_Map.log("Creating small stone mines");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
group = new SimpleGroup([new SimpleObject(g_Gaia.stoneSmall, 2, 5, 1, 3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clRock, 10, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
g_Map.log("Creating metal mines");
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
group = new SimpleGroup([new SimpleObject(g_Gaia.metalLarge, 1, 1, 0, 4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1),
|
||||
scaleByMapSize(4,16), 100
|
||||
@ -446,7 +411,7 @@ Engine.SetProgress(70);
|
||||
|
||||
g_Map.log("Creating small decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
[new SimpleObject(g_Decoratives.rockMedium, 1, 3, 0, 1)],
|
||||
true
|
||||
);
|
||||
createObjectGroupsDeprecated(
|
||||
@ -457,7 +422,10 @@ createObjectGroupsDeprecated(
|
||||
|
||||
g_Map.log("Creating large decorative rocks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
[
|
||||
new SimpleObject(g_Decoratives.rockLarge, 1, 2, 0, 1),
|
||||
new SimpleObject(g_Decoratives.rockMedium, 1, 3, 0, 2)
|
||||
],
|
||||
true
|
||||
);
|
||||
createObjectGroupsDeprecated(
|
||||
@ -469,7 +437,7 @@ Engine.SetProgress(75);
|
||||
|
||||
g_Map.log("Creating deer");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
[new SimpleObject(g_Gaia.mainHuntableAnimal, 5, 7, 0, 4)],
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@ -479,7 +447,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
g_Map.log("Creating berry bush");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
[new SimpleObject(g_Gaia.fruitBush, 5, 7, 0, 4)],
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@ -489,7 +457,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
g_Map.log("Creating rabbit");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 2,3, 0,2)],
|
||||
[new SimpleObject(g_Gaia.secondaryHuntableAnimal, 2, 3, 0, 2)],
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@ -499,7 +467,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
Engine.SetProgress(85);
|
||||
|
||||
createStragglerTrees(
|
||||
[oPine],
|
||||
[g_Gaia.tree1],
|
||||
avoidClasses(clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6),
|
||||
clForest,
|
||||
stragglerTrees);
|
||||
@ -508,7 +476,7 @@ g_Map.log("Creating small grass tufts");
|
||||
var planetm = 1;
|
||||
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -Math.PI / 8, Math.PI / 8)]
|
||||
[new SimpleObject(g_Decoratives.grassShort, 1, 2, 0, 1, -Math.PI / 8, Math.PI / 8)]
|
||||
);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 0),
|
||||
@ -517,9 +485,9 @@ createObjectGroupsDeprecated(group, 0,
|
||||
Engine.SetProgress(90);
|
||||
|
||||
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)]
|
||||
);
|
||||
group = new SimpleGroup([
|
||||
new SimpleObject(g_Decoratives.grass, 2, 4, 0, 1.8, -Math.PI / 8, Math.PI / 8),
|
||||
new SimpleObject(g_Decoratives.grassShort, 3, 6, 1.2, 2.5, -Math.PI / 8, Math.PI / 8)]);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0),
|
||||
planetm * scaleByMapSize(13, 200)
|
||||
@ -527,9 +495,9 @@ createObjectGroupsDeprecated(group, 0,
|
||||
Engine.SetProgress(95);
|
||||
|
||||
g_Map.log("Creating bushes");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
);
|
||||
group = new SimpleGroup([
|
||||
new SimpleObject(g_Decoratives.bushMedium, 1, 2, 0, 2),
|
||||
new SimpleObject(g_Decoratives.bushSmall, 2, 4, 0, 2)]);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clHill, 1, clPlayer, 1, clDirt, 1),
|
||||
planetm * scaleByMapSize(13, 200), 50
|
||||
|
@ -4,6 +4,7 @@
|
||||
"Script" : "alpine_valley.js",
|
||||
"Description" : "High Alpine mountains bordering deep valleys.",
|
||||
"Preview" : "alpine_valley.png",
|
||||
"CircularMap" : true
|
||||
"CircularMap" : true,
|
||||
"SupportedBiomes": "alpine/"
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,37 @@
|
||||
{
|
||||
"Description": {
|
||||
"Title": "Late Spring",
|
||||
"Description": "A blend of lingering snow and emerging grass, marking a quiet transition from winter to summer."
|
||||
},
|
||||
"Terrains": {
|
||||
"mainTerrain": ["alpine_dirt_grass_50"],
|
||||
"forestFloor": "alpine_forrestfloor_snow",
|
||||
"cliff": ["alpine_cliff_a", "alpine_cliff_b", "alpine_cliff_c"],
|
||||
"tier2Terrain": "alpine_grass_rocky",
|
||||
"halfSnow": ["alpine_grass_snow_50", "alpine_dirt_snow"],
|
||||
"snowLimited": ["alpine_snow_rocky"],
|
||||
"dirt": "alpine_dirt",
|
||||
"road": "new_alpine_citytile",
|
||||
"roadWild": "new_alpine_citytile",
|
||||
"water": "alpine_shore_rocks",
|
||||
"shore": "alpine_shore_rocks_grass_50"
|
||||
},
|
||||
"Gaia": {
|
||||
"tree1": "gaia/tree/pine",
|
||||
"fruitBush": "gaia/fruit/berry_01",
|
||||
"mainHuntableAnimal": "gaia/fauna_deer",
|
||||
"secondaryHuntableAnimal": "gaia/fauna_rabbit",
|
||||
"fish": "gaia/fish/generic",
|
||||
"stoneLarge": "gaia/rock/alpine_large",
|
||||
"stoneSmall": "gaia/rock/alpine_small",
|
||||
"metalLarge": "gaia/ore/alpine_large"
|
||||
},
|
||||
"Decoratives": {
|
||||
"grass": "actor|props/flora/grass_soft_small_tall.xml",
|
||||
"grassShort": "actor|props/flora/grass_soft_large.xml",
|
||||
"rockLarge": "actor|geology/stone_granite_med.xml",
|
||||
"rockMedium": "actor|geology/stone_granite_med.xml",
|
||||
"bushMedium": "actor|props/flora/bush_medit_me.xml",
|
||||
"bushSmall": "actor|props/flora/bush_medit_sm.xml"
|
||||
}
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
{
|
||||
"Description": {
|
||||
"Title": "Winter",
|
||||
"Description": "Snow-capped trees loom through the mist. The ground is blanketed in a layer of snow."
|
||||
},
|
||||
"Terrains": {
|
||||
"mainTerrain": ["alpine_snow_a", "alpine_snow_b"],
|
||||
"forestFloor": "alpine_forrestfloor_snow",
|
||||
"cliff": ["alpine_cliff_snow"],
|
||||
"tier2Terrain": "alpine_grass_snow_50",
|
||||
"halfSnow": ["alpine_grass_snow_50", "alpine_dirt_snow"],
|
||||
"snowLimited": ["alpine_snow_a", "alpine_snow_b"],
|
||||
"dirt": "alpine_dirt",
|
||||
"road": "new_alpine_citytile",
|
||||
"roadWild": "new_alpine_citytile",
|
||||
"water": "alpine_shore_rocks",
|
||||
"shore": "alpine_shore_rocks_icy"
|
||||
},
|
||||
"Gaia": {
|
||||
"tree1": "gaia/tree/pine_w",
|
||||
"fruitBush": "gaia/fruit/berry_01",
|
||||
"mainHuntableAnimal": "gaia/fauna_deer",
|
||||
"secondaryHuntableAnimal": "gaia/fauna_rabbit",
|
||||
"fish": "gaia/fish/generic",
|
||||
"stoneLarge": "gaia/rock/alpine_large",
|
||||
"stoneSmall": "gaia/rock/alpine_small",
|
||||
"metalLarge": "gaia/ore/alpine_large"
|
||||
},
|
||||
"Decoratives": {
|
||||
"grass": "actor|props/flora/grass_soft_dry_small_tall.xml",
|
||||
"grassShort": "actor|props/flora/grass_soft_dry_large.xml",
|
||||
"rockLarge": "actor|geology/stone_granite_med.xml",
|
||||
"rockMedium": "actor|geology/stone_granite_med.xml",
|
||||
"bushMedium": "actor|props/flora/bush_medit_me_dry.xml",
|
||||
"bushSmall": "actor|props/flora/bush_medit_sm_dry.xml"
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user