1
0
forked from mirrors/0ad
Files
0ad/binaries/data/mods/public/maps/random/empire.js
T
elexis e5349abdcd Separate object-oriented random map generation core library "rmgen" from miscellaneous helper procedures which are moved to a new library "rmgen-common", refs #4804, #5042.
This way mods can use the placement and painting prototypes while
excluding any common 0ad code.

This was SVN commit r21289.
2018-02-20 19:39:04 +00:00

235 lines
4.9 KiB
JavaScript

Engine.LoadLibrary("rmgen");
Engine.LoadLibrary("rmgen-common");
Engine.LoadLibrary("rmgen2");
Engine.LoadLibrary("rmbiome");
setSelectedBiome();
var g_Map = new RandomMap(2, g_Terrains.mainTerrain);
initTileClasses();
createArea(
new MapBoundsPlacer(),
new TileClassPainter(g_TileClasses.land));
Engine.SetProgress(10);
const teamsArray = getTeamsArray();
const startAngle = randomAngle();
createBasesByPattern("stronghold", fractionToTiles(0.37), fractionToTiles(0.04), startAngle);
Engine.SetProgress(20);
// Change the starting angle and add the players again
var rotation = Math.PI;
if (teamsArray.length == 2)
rotation = Math.PI / 2;
if (teamsArray.length == 4)
rotation = 5/4 * Math.PI;
createBasesByPattern("stronghold", fractionToTiles(0.15), fractionToTiles(0.04), startAngle + rotation);
Engine.SetProgress(40);
addElements(shuffleArray([
{
"func": addHills,
"avoid": [
g_TileClasses.bluff, 5,
g_TileClasses.hill, 15,
g_TileClasses.mountain, 2,
g_TileClasses.plateau, 5,
g_TileClasses.player, 20,
g_TileClasses.valley, 2,
g_TileClasses.water, 2
],
"sizes": g_AllSizes,
"mixes": g_AllMixes,
"amounts": ["tons"]
},
{
"func": addMountains,
"avoid": [
g_TileClasses.bluff, 20,
g_TileClasses.mountain, 25,
g_TileClasses.plateau, 20,
g_TileClasses.player, 20,
g_TileClasses.valley, 10,
g_TileClasses.water, 15
],
"sizes": ["huge"],
"mixes": ["same", "similar"],
"amounts": ["tons"]
},
{
"func": addPlateaus,
"avoid": [
g_TileClasses.bluff, 20,
g_TileClasses.mountain, 25,
g_TileClasses.plateau, 20,
g_TileClasses.player, 40,
g_TileClasses.valley, 10,
g_TileClasses.water, 15
],
"sizes": ["huge"],
"mixes": ["same", "similar"],
"amounts": ["tons"]
}
]));
Engine.SetProgress(50);
addElements([
{
"func": addLayeredPatches,
"avoid": [
g_TileClasses.bluff, 2,
g_TileClasses.dirt, 5,
g_TileClasses.forest, 2,
g_TileClasses.mountain, 2,
g_TileClasses.plateau, 2,
g_TileClasses.player, 12,
g_TileClasses.water, 3
],
"sizes": ["normal"],
"mixes": ["normal"],
"amounts": ["normal"]
},
{
"func": addDecoration,
"avoid": [
g_TileClasses.bluff, 2,
g_TileClasses.forest, 2,
g_TileClasses.mountain, 2,
g_TileClasses.plateau, 2,
g_TileClasses.player, 12,
g_TileClasses.water, 3
],
"sizes": ["normal"],
"mixes": ["normal"],
"amounts": ["normal"]
}
]);
Engine.SetProgress(60);
addElements(shuffleArray([
{
"func": addMetal,
"avoid": [
g_TileClasses.berries, 5,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 3,
g_TileClasses.mountain, 2,
g_TileClasses.player, 30,
g_TileClasses.rock, 10,
g_TileClasses.metal, 20,
g_TileClasses.plateau, 2,
g_TileClasses.water, 3
],
"sizes": ["normal"],
"mixes": ["same"],
"amounts": g_AllAmounts
},
{
"func": addStone,
"avoid": [g_TileClasses.berries, 5,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 3,
g_TileClasses.mountain, 2,
g_TileClasses.player, 30,
g_TileClasses.rock, 20,
g_TileClasses.metal, 10,
g_TileClasses.plateau, 2,
g_TileClasses.water, 3
],
"sizes": ["normal"],
"mixes": ["same"],
"amounts": g_AllAmounts
},
{
"func": addForests,
"avoid": [
g_TileClasses.berries, 5,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 18,
g_TileClasses.metal, 3,
g_TileClasses.mountain, 5,
g_TileClasses.plateau, 2,
g_TileClasses.player, 20,
g_TileClasses.rock, 3,
g_TileClasses.water, 2
],
"sizes": g_AllSizes,
"mixes": g_AllMixes,
"amounts": ["few", "normal", "many", "tons"]
}
]));
Engine.SetProgress(80);
addElements(shuffleArray([
{
"func": addBerries,
"avoid": [
g_TileClasses.berries, 30,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 5,
g_TileClasses.metal, 10,
g_TileClasses.mountain, 2,
g_TileClasses.plateau, 2,
g_TileClasses.player, 20,
g_TileClasses.rock, 10,
g_TileClasses.water, 3
],
"sizes": g_AllSizes,
"mixes": g_AllMixes,
"amounts": g_AllAmounts
},
{
"func": addAnimals,
"avoid": [
g_TileClasses.animals, 20,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 2,
g_TileClasses.metal, 2,
g_TileClasses.mountain, 1,
g_TileClasses.plateau, 2,
g_TileClasses.player, 20,
g_TileClasses.rock, 2,
g_TileClasses.water, 3
],
"sizes": g_AllSizes,
"mixes": g_AllMixes,
"amounts": g_AllAmounts
},
{
"func": addStragglerTrees,
"avoid": [
g_TileClasses.berries, 5,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 7,
g_TileClasses.metal, 2,
g_TileClasses.mountain, 1,
g_TileClasses.plateau, 2,
g_TileClasses.player, 12,
g_TileClasses.rock, 2,
g_TileClasses.water, 5
],
"sizes": g_AllSizes,
"mixes": g_AllMixes,
"amounts": g_AllAmounts
}
]));
Engine.SetProgress(90);
placePlayersNomad(
g_TileClasses.player,
avoidClasses(
g_TileClasses.plateau, 4,
g_TileClasses.forest, 1,
g_TileClasses.metal, 4,
g_TileClasses.rock, 4,
g_TileClasses.mountain, 4,
g_TileClasses.animals, 2));
g_Map.ExportMap();