Five new random map scripts by _kali: Bahrain, Harbor, Howe Sound, Ngorongo and Rouen.

Besides harbor, they are portraying actual geographic regions.
Some environmental improvements by niektb.

This was SVN commit r18714.
This commit is contained in:
elexis
2016-09-07 20:06:01 +00:00
parent f63cef5ad0
commit a68881dd0f
15 changed files with 2257 additions and 0 deletions
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"settings" : {
"Name" : "Bahrain",
"Script" : "bahrain.js",
"Description" : "The Kingdom of Bahrain is an island country situated between Saudia Arabia to the west and Qatar to the east. From the 6th to 3rd century BC, Bahrain was part of the Persian Empire.",
"BaseTerrain" : ["medit_sea_depths"],
"BaseHeight" : 1,
"Preview" : "bahrain.png",
"CircularMap" : false
}
}
@@ -0,0 +1,439 @@
RMS.LoadLibrary("rmgen");
RMS.LoadLibrary("rmgen2");
InitMap();
randomizeBiome();
initMapSettings();
initTileClasses();
setFogFactor(0.04);
resetTerrain(g_Terrains.mainTerrain, g_TileClasses.land, 2);
RMS.SetProgress(10);
var players = addBases("radial", 0.38);
RMS.SetProgress(20);
addCenterLake();
RMS.SetProgress(30);
if (g_MapInfo.mapSize >= 192)
{
addHarbors(players);
RMS.SetProgress(40);
}
addSpines();
RMS.SetProgress(50);
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.spine, 5,
g_TileClasses.valley, 2,
g_TileClasses.water, 2
],
"sizes": ["tiny", "small"],
"mixes": g_AllMixes,
"amounts": g_AllAmounts
},
{
"func": addMountains,
"avoid": [
g_TileClasses.bluff, 20,
g_TileClasses.mountain, 25,
g_TileClasses.plateau, 20,
g_TileClasses.player, 20,
g_TileClasses.spine, 20,
g_TileClasses.valley, 10,
g_TileClasses.water, 15
],
"sizes": ["small"],
"mixes": g_AllMixes,
"amounts": g_AllAmounts
},
{
"func": addPlateaus,
"avoid": [
g_TileClasses.bluff, 20,
g_TileClasses.mountain, 25,
g_TileClasses.plateau, 20,
g_TileClasses.player, 40,
g_TileClasses.spine, 20,
g_TileClasses.valley, 10,
g_TileClasses.water, 15
],
"sizes": ["small"],
"mixes": g_AllMixes,
"amounts": g_AllAmounts
},
{
"func": addBluffs,
"avoid": [
g_TileClasses.bluff, 20,
g_TileClasses.mountain, 25,
g_TileClasses.plateau, 20,
g_TileClasses.player, 40,
g_TileClasses.spine, 20,
g_TileClasses.valley, 10,
g_TileClasses.water, 15
],
"sizes": ["normal"],
"mixes": g_AllMixes,
"amounts": g_AllAmounts
}
]));
RMS.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.plateau, 2,
g_TileClasses.player, 30,
g_TileClasses.rock, 10,
g_TileClasses.spine, 5,
g_TileClasses.metal, 20,
g_TileClasses.water, 3
],
"sizes": ["normal"],
"mixes": ["same"],
"amounts": ["normal", "many"]
},
{
"func": addStone,
"avoid": [
g_TileClasses.berries, 5,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 3,
g_TileClasses.mountain, 2,
g_TileClasses.plateau, 2,
g_TileClasses.player, 30,
g_TileClasses.rock, 20,
g_TileClasses.spine, 5,
g_TileClasses.metal, 10,
g_TileClasses.water, 3
],
"sizes": ["normal"],
"mixes": ["same"],
"amounts": ["normal", "many"]
},
{
"func": addForests,
"avoid": [
g_TileClasses.berries, 5,
g_TileClasses.bluff, 5,
g_TileClasses.forest, 8,
g_TileClasses.metal, 3,
g_TileClasses.mountain, 5,
g_TileClasses.plateau, 5,
g_TileClasses.player, 20,
g_TileClasses.rock, 3,
g_TileClasses.spine, 5,
g_TileClasses.water, 2
],
"sizes": ["normal"],
"mixes": ["similar"],
"amounts": ["many"]
}
]));
RMS.SetProgress(70);
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.spine, 2,
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.spine, 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.spine, 2,
g_TileClasses.water, 5
],
"sizes": g_AllSizes,
"mixes": g_AllMixes,
"amounts": g_AllAmounts
}
]));
RMS.SetProgress(80);
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.spine, 5,
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.spine, 5,
g_TileClasses.water, 3
],
"sizes": ["normal"],
"mixes": ["normal"],
"amounts": ["normal"]
}
]);
RMS.SetProgress(90);
ExportMap();
function addCenterLake()
{
let lSize = sqrt(sqrt(sqrt(scaleByMapSize(1, 6))));
createArea(
new ChainPlacer(
2,
Math.floor(scaleByMapSize(2, 12)),
Math.floor(scaleByMapSize(35, 160)),
1,
g_MapInfo.centerOfMap,
g_MapInfo.centerOfMap,
0,
[floor(g_MapInfo.mapSize * 0.17 * lSize)]
),
[
new LayeredPainter(
[
g_Terrains.shore,
g_Terrains.water,
g_Terrains.water
],
[1, 100]
),
new SmoothElevationPainter(ELEVATION_SET, -18, 10),
paintClass(g_TileClasses.water)
],
avoidClasses(g_TileClasses.player, 20)
);
let fDist = 50;
if (g_MapInfo.mapSize <= 192)
fDist = 20;
// create a bunch of fish
createObjectGroup(
new SimpleGroup(
[new SimpleObject(g_Gaia.fish, 20, 30, 0, fDist)],
true,
g_TileClasses.baseResource,
g_MapInfo.centerOfMap,
g_MapInfo.centerOfMap
),
0,
[
avoidClasses(g_TileClasses.player, 5, g_TileClasses.hill, 3, g_TileClasses.mountain, 3),
stayClasses(g_TileClasses.water, 5)
]
);
}
function addHarbors(players)
{
for (let i = 0; i < players.length; ++i)
{
let ix = round(fractionToTiles(players[i].x));
let iz = round(fractionToTiles(players[i].z));
let playerDistX = g_MapInfo.centerOfMap - ix;
let playerDistZ = g_MapInfo.centerOfMap - iz;
let offsetX = round(playerDistX / 2.5);
let offsetZ = round(playerDistZ / 2.5);
createArea(
new ClumpPlacer(scaleByMapSize(1200, 1200), 0.5, 0.5, 1, ix + offsetX, iz + offsetZ),
[
new LayeredPainter([g_Terrains.shore, g_Terrains.water], [2]),
new SmoothElevationPainter(ELEVATION_MODIFY, -11, 3),
paintClass(g_TileClasses.water)
],
avoidClasses(
g_TileClasses.player, 15,
g_TileClasses.hill, 1
)
);
// create fish in harbor
createObjectGroup(
new SimpleGroup(
[new SimpleObject(g_Gaia.fish, 6, 6, 1, 20)],
true, g_TileClasses.baseResource, ix + offsetX, iz + offsetZ
),
0,
[
avoidClasses(
g_TileClasses.hill, 3,
g_TileClasses.mountain, 3
),
stayClasses(g_TileClasses.water, 5)
]
);
}
}
function addSpines()
{
let spineTile = g_Terrains.dirt;
let elevation = 35;
if (g_MapInfo.biome == 2)
spineTile = g_Terrains.tier1Terrain;
if (g_MapInfo.biome == 4 || g_MapInfo.biome == 6)
spineTile = g_Terrains.tier2Terrain;
if (g_MapInfo.biome == 8)
spineTile = g_Terrains.tier4Terrain;
let split = 1;
if (g_MapInfo.numPlayers <= 3 || (g_MapInfo.mapSize >= 320 && g_MapInfo.numPlayers <= 4))
split = 2;
for (let i = 0; i < g_MapInfo.numPlayers * split; ++i)
{
let tang = g_MapInfo.startAngle + (i + 0.5) * TWO_PI / (g_MapInfo.numPlayers * split);
let fx = fractionToTiles(0.5);
let fz = fractionToTiles(0.5);
let ix = round(fx);
let iz = round(fz);
let mStartCo = 0.12;
let mStopCo = 0.40;
let mSize = 0.5;
let mWaviness = 0.6;
let mOffset = 0.4;
let mTaper = -1.4;
// make small mountain dividers if we're on a small map
if (g_MapInfo.mapSize <= 192)
{
mSize = 0.02;
mTaper = -0.1;
elevation = 20;
}
createArea(
new PathPlacer(
fractionToTiles(0.5 + mStartCo * cos(tang)),
fractionToTiles(0.5 + mStartCo * sin(tang)),
fractionToTiles(0.5 + mStopCo * cos(tang)),
fractionToTiles(0.5 + mStopCo * sin(tang)),
scaleByMapSize(14, mSize),
mWaviness,
0.1,
mOffset,
mTaper
),
[
new LayeredPainter([g_Terrains.cliff, spineTile], [3]),
new SmoothElevationPainter(ELEVATION_MODIFY, elevation, 3),
paintClass(g_TileClasses.spine)
],
avoidClasses(g_TileClasses.player, 5)
);
}
addElements([
{
"func": addDecoration,
"avoid": [
g_TileClasses.bluff, 2,
g_TileClasses.forest, 2,
g_TileClasses.mountain, 2,
g_TileClasses.player, 12,
g_TileClasses.water, 3
],
"stay": [g_TileClasses.spine, 5],
"sizes": ["normal"],
"mixes": ["normal"],
"amounts": ["normal"]
}
]);
addElements([
{
"func": addProps,
"avoid": [
g_TileClasses.forest, 2,
g_TileClasses.player, 2,
g_TileClasses.prop, 20,
g_TileClasses.water, 3
],
"stay": [g_TileClasses.spine, 8],
"sizes": ["normal"],
"mixes": ["normal"],
"amounts": ["scarce"]
}
]);
}
@@ -0,0 +1,11 @@
{
"settings" : {
"Name" : "Harbor",
"Script" : "harbor.js",
"Description" : "Players start with some light fishing opportunities in the calm waters of a sheltered harbor. A large bounty of seafood lays beyond the protective cliffs in the deep ocean. Small passages at the base of the cliffs make for tight fighting and easy fortification. Will you fight your way through the narrow passageways or take to the sea?",
"BaseTerrain" : ["medit_sea_depths"],
"BaseHeight" : 2,
"Preview" : "harbor.png",
"CircularMap" : true
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"settings" : {
"Name" : "Howe Sound",
"Script" : "howe_sound.js",
"Description" : "Howe Sound is a roughly triangular network of fjords located directly northwest of Vancouver in British Columbia, Canada.",
"BaseTerrain" : ["medit_sea_depths"],
"BaseHeight" : 1,
"Preview" : "howe_sound.png",
"CircularMap" : false
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"settings" : {
"Name" : "Ngorongoro",
"Script" : "ngorongoro.js",
"Description" : "Ngorongoro Crater is the world's largest intact volcanic caldera and is one of the Seven Natural Wonders of Africa. Due to it's climate, biodiversity and history, Ngorongoro is believed by some to be Africa's Garden of Eden and the birthplace of mankind.",
"BaseTerrain" : ["medit_sea_depths"],
"BaseHeight" : 1,
"Preview" : "ngorongoro.png",
"CircularMap" : false
}
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,11 @@
{
"settings" : {
"Name" : "Rouen",
"Script" : "rouen.js",
"Description" : "Rouen is a city on the River Seine in the north of France and the capital of Normandy. Formerly one of the largest and most prosperous cities of medieval Europe, Rouen was the seat of the Exchequer of Normandy during the Middle Ages. It was one of the capitals of the Anglo-Norman dynasties, which ruled both England and large parts of modern France from the 11th to the 15th centuries.",
"BaseTerrain" : ["medit_sea_depths"],
"BaseHeight" : 1,
"Preview" : "rouen.png",
"CircularMap" : false
}
}