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