mirror of
https://gitea.wildfiregames.com/0ad/0ad.git
synced 2026-06-21 13:04:10 +00:00
Remove 1400 useless random map script comments.
This was SVN commit r20144.
This commit is contained in:
@@ -21,7 +21,6 @@ const tCorals1 = "medit_sea_coral_plants";
|
||||
const tCorals2 = "medit_sea_coral_deep";
|
||||
const tSeaDepths = "medit_sea_depths";
|
||||
|
||||
// gaia entities
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
const oDeer = "gaia/fauna_deer";
|
||||
const oFish = "gaia/fauna_fish";
|
||||
@@ -37,7 +36,6 @@ const oFanPalm = "gaia/flora_tree_medit_fan_palm";
|
||||
const oPoplar = "gaia/flora_tree_poplar_lombardy";
|
||||
const oCypress = "gaia/flora_tree_cypress";
|
||||
|
||||
// decorative props
|
||||
const aBush1 = "actor|props/flora/bush_medit_sm.xml";
|
||||
const aBush2 = "actor|props/flora/bush_medit_me.xml";
|
||||
const aBush3 = "actor|props/flora/bush_medit_la.xml";
|
||||
@@ -48,16 +46,12 @@ const aDecorativeRock = "actor|geology/stone_granite_med.xml";
|
||||
// terrain + entity (for painting)
|
||||
const pForest = [tForestFloor, tForestFloor + TERRAIN_SEPARATOR + oCarob, tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
var clWater = createTileClass();
|
||||
@@ -80,8 +74,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -113,7 +105,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -131,7 +122,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tCityPlaza, tCity], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -214,35 +204,25 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
var h;
|
||||
if (x < (cu + 0.5 + fadeDist - WATER_WIDTH/2))
|
||||
{
|
||||
h = 2 - 5.0 * (1 - ((cu + 0.5 + fadeDist - WATER_WIDTH/2) - x)/fadeDist);
|
||||
}
|
||||
else if (x > (cu2 + 0.5 - fadeDist + WATER_WIDTH/2))
|
||||
{
|
||||
h = 2 - 5.0 * (1 - (x - (cu2 + 0.5 - fadeDist + WATER_WIDTH/2))/fadeDist);
|
||||
}
|
||||
else
|
||||
{
|
||||
h = -3.0;
|
||||
}
|
||||
|
||||
setHeight(ix, iz, h);
|
||||
if (h < 0.7){
|
||||
if (h < 0.7)
|
||||
addToClass(ix, iz, clWater);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//paint the shores
|
||||
paintTerrainBasedOnHeight(-20, 1, 0, tWater);
|
||||
paintTerrainBasedOnHeight(1, 2, 0, tShore);
|
||||
|
||||
RMS.SetProgress(40);
|
||||
// create bumps
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
// create forests
|
||||
createForests(
|
||||
[tForestFloor, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clWater, 2, clBaseResource, 3),
|
||||
@@ -251,13 +231,11 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create hills
|
||||
if (randBool())
|
||||
createHills([tGrass, tCliff, tHill], avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 3), clHill, scaleByMapSize(3, 15));
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 3), clHill, scaleByMapSize(3, 15));
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -268,7 +246,6 @@ createLayeredPatches(
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -279,7 +256,6 @@ createLayeredPatches(
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
//create the undersea bumps
|
||||
log("Creating undersea bumps...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.5);
|
||||
painter = new SmoothElevationPainter(ELEVATION_SET, -2.5, 3);
|
||||
@@ -290,7 +266,6 @@ createAreas(
|
||||
scaleByMapSize(10, 50)
|
||||
);
|
||||
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(30, 80)), 0.5);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -305,13 +280,11 @@ createAreas(
|
||||
scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
//paint the seabed
|
||||
paintTerrainBasedOnHeight(-20, -3, 3, tSeaDepths);
|
||||
paintTerrainBasedOnHeight(-3, -2, 2, tCorals2);
|
||||
paintTerrainBasedOnHeight(-2, -1.5, 2, tCorals1);
|
||||
|
||||
log("Creating island stone mines...");
|
||||
// create island stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -321,7 +294,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating island metal mines...");
|
||||
// create island metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -331,7 +303,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -341,7 +312,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -352,7 +322,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
createDecoration
|
||||
(
|
||||
[[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
@@ -367,7 +336,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -379,7 +347,6 @@ createFood
|
||||
[avoidClasses(clIsland, 2, clFood, 10), stayClasses(clWater, 5)]
|
||||
);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -395,7 +362,6 @@ createFood
|
||||
avoidClasses(clForest, 0, clPlayer, 8, clWater, 1, clFood, 10, clHill, 1)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -409,7 +375,6 @@ createFood
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create straggler trees
|
||||
var types = [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress]; // some variation
|
||||
createStragglerTrees(types, avoidClasses(clForest, 1, clWater, 2, clPlayer, 12, clMetal, 6, clHill, 1));
|
||||
|
||||
@@ -417,7 +382,6 @@ log("Creating straggler island trees...");
|
||||
g_numStragglerTrees *= 10;
|
||||
createStragglerTrees(types, stayClasses(clIsland, 4));
|
||||
|
||||
// Set environment
|
||||
setSkySet("cumulus");
|
||||
setSunColor(0.866667, 0.776471, 0.486275);
|
||||
setWaterColor(0, 0.501961, 1);
|
||||
@@ -434,5 +398,4 @@ setPPContrast(0.62);
|
||||
setPPSaturation(0.51);
|
||||
setPPBloom(0.12);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -14,7 +14,6 @@ var tCitytiles = "savanna_tile_a";
|
||||
var tShore = "savanna_riparian_bank";
|
||||
var tWater = "savanna_riparian_wet";
|
||||
|
||||
// gaia entities
|
||||
var oBaobab = "gaia/flora_tree_baobab";
|
||||
var oPalm = "gaia/flora_tree_senegal_date_palm";
|
||||
var oBerryBush = "gaia/flora_bush_berry";
|
||||
@@ -34,13 +33,11 @@ var oFish = "gaia/fauna_fish";
|
||||
var oStoneSmall = "gaia/geology_stone_savanna_small";
|
||||
var oMetalLarge = "gaia/geology_metal_savanna_slabs";
|
||||
|
||||
// decorative props
|
||||
var aBush = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
var aRock = "actor|geology/stone_savanna_med.xml";
|
||||
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPalm, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
|
||||
@@ -83,15 +83,12 @@ else
|
||||
//other constants
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -140,7 +137,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -162,7 +158,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -181,9 +176,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create metal mine
|
||||
var mAngle = bbAngle;
|
||||
while(abs(mAngle - bbAngle) < PI/3)
|
||||
{
|
||||
mAngle = randFloat(0, TWO_PI);
|
||||
}
|
||||
|
||||
var mDist = 12;
|
||||
var mX = round(fx + mDist * cos(mAngle));
|
||||
var mZ = round(fz + mDist * sin(mAngle));
|
||||
@@ -220,7 +214,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 8), clHill, scaleByMapSize(10, 40) * numPlayers, floor(scaleByMapSize(40, 60)), floor(scaleByMapSize(4, 5)), floor(scaleByMapSize(7, 15)), floor(scaleByMapSize(5, 15)));
|
||||
|
||||
@@ -235,10 +228,8 @@ for (var x = 0; x < mapSize; ++x)
|
||||
if (playerConstraint.allows(x, z) && waterConstraint.allows(x, z))
|
||||
lakeAreas.push([x, z]);
|
||||
|
||||
var chosenPoint;
|
||||
var lakeAreaLen;
|
||||
|
||||
// create lakes
|
||||
log("Creating lakes...");
|
||||
|
||||
var numLakes = scaleByMapSize(5, 16);
|
||||
@@ -248,7 +239,7 @@ for (var i = 0; i < numLakes; ++i)
|
||||
if (!lakeAreaLen)
|
||||
break;
|
||||
|
||||
chosenPoint = pickRandom(lakeAreas);
|
||||
let chosenPoint = pickRandom(lakeAreas);
|
||||
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 8)), floor(scaleByMapSize(40, 180)), 0.7, chosenPoint[0], chosenPoint[1]);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -279,10 +270,8 @@ for (var i = 0; i < numLakes; ++i)
|
||||
paintTerrainBasedOnHeight(3, floor(scaleByMapSize(20, 40)), 0, tCliff);
|
||||
paintTerrainBasedOnHeight(floor(scaleByMapSize(20, 40)), 100, 3, tSnowLimited);
|
||||
|
||||
// create bumps
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
// create forests
|
||||
createForests(
|
||||
[tPrimary, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clHill, 0, clWater, 2),
|
||||
@@ -292,7 +281,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -301,7 +289,6 @@ createLayeredPatches(
|
||||
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12)
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -312,7 +299,6 @@ createPatches(
|
||||
RMS.SetProgress(65);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -322,7 +308,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -333,7 +318,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create decoration
|
||||
createDecoration
|
||||
(
|
||||
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -354,7 +338,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -368,7 +351,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -380,7 +362,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
|
||||
);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -394,7 +375,6 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
var types = [oPine];
|
||||
createStragglerTrees(types, avoidClasses(clWater, 5, clForest, 3, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
|
||||
@@ -407,5 +387,4 @@ setWaterMurkiness(0.82);
|
||||
setWaterWaviness(3.0);
|
||||
setWaterType("clap");
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -67,17 +67,14 @@ else
|
||||
var aBushSmall = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
}
|
||||
|
||||
//other constants
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -122,7 +119,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
|
||||
@@ -13,17 +13,15 @@ const tShoreBlend = "desert_shore_stones";
|
||||
const tShore = "dirta";
|
||||
const tWater = "desert_sand_wet";
|
||||
|
||||
// gaia entities
|
||||
const oPoplar = "gaia/flora_tree_poplar_lombardy";
|
||||
const oBush = "gaia/flora_bush_temperate";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
const oRabbid = "gaia/fauna_rabbit";
|
||||
const oRabbit = "gaia/fauna_rabbit";
|
||||
const oSheep = "gaia/fauna_sheep";
|
||||
const oStoneLarge = "gaia/geology_stonemine_medit_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_mediterranean";
|
||||
const oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_small_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
@@ -33,15 +31,12 @@ const aBushSmall = "actor|props/flora/bush_medit_sm.xml";
|
||||
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPoplar, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -60,8 +55,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -79,7 +72,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -101,7 +93,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -159,7 +150,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(2, 5)), 0.5);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -180,7 +170,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [[[tForestFloor, tGrass, pForest], [tForestFloor, pForest]]]; // some variation
|
||||
|
||||
@@ -202,10 +191,8 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(5, 48), scaleByMapSize(6, 84), scaleByMapSize(8, 128)],
|
||||
@@ -216,7 +203,6 @@ createLayeredPatches(
|
||||
clDirt
|
||||
);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(5, 32), scaleByMapSize(6, 48), scaleByMapSize(7, 80)],
|
||||
@@ -229,7 +215,6 @@ createLayeredPatches(
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
// create big patches
|
||||
log("Creating big patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(10, 60), scaleByMapSize(15, 90), scaleByMapSize(20, 120)],
|
||||
@@ -243,14 +228,13 @@ createLayeredPatches(
|
||||
RMS.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -258,7 +242,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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),
|
||||
@@ -267,7 +250,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -279,8 +261,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -294,10 +274,9 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create rabbid
|
||||
log("Creating rabbid...");
|
||||
log("Creating rabbits...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbid, 5,7, 0,4)],
|
||||
[new SimpleObject(oRabbit, 5,7, 0,4)],
|
||||
true, clFood
|
||||
);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -305,7 +284,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -318,7 +296,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSheep, 2,3, 0,2)],
|
||||
@@ -331,8 +308,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oBush, oPoplar]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -348,7 +323,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -360,7 +334,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
|
||||
@@ -21,7 +21,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -36,7 +35,6 @@ const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -49,7 +47,6 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -91,7 +88,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(22,31);
|
||||
var shoreRadius = 4;
|
||||
var elevation = 3;
|
||||
|
||||
@@ -39,7 +39,6 @@ var aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oBush, tForestFloor + TERRAIN_SEPARATOR + oBush2, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -53,8 +51,6 @@ var pForest = [
|
||||
tForestFloor
|
||||
];
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clPath = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
@@ -91,7 +87,6 @@ RMS.SetProgress(5);
|
||||
// Find all hills
|
||||
var noise0 = new Noise2D(20);
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
var h = getHeight(ix,iz);
|
||||
@@ -105,18 +100,13 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
setHeight(ix, iz, h + n);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -146,17 +136,12 @@ function playerNearness(x, z)
|
||||
var d = fractionToTiles(distanceToPlayers(x,z));
|
||||
|
||||
if (d < 13)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else if (d < 19)
|
||||
{
|
||||
|
||||
if (d < 19)
|
||||
return (d-13)/(19-13);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
RMS.SetProgress(10);
|
||||
@@ -172,7 +157,6 @@ for (var i=0; i < numPlayers; i++)
|
||||
var ix = round(fx);
|
||||
var iz = round(fz);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
var citySize = 250;
|
||||
@@ -262,7 +246,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
scaleByMapSize(1, 4)
|
||||
);
|
||||
|
||||
|
||||
if(sizes[i] > 100 && mountains.length > 0)
|
||||
{
|
||||
var placer = new ClumpPlacer(sizes[i] * 0.3, 0.94, 0.05, 0.1);
|
||||
@@ -286,7 +269,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
var placer = new ClumpPlacer(sizes[i], 0.1, 0.2, 0.1);
|
||||
|
||||
var elevationPainter = new SmoothElevationPainter(
|
||||
@@ -431,7 +413,6 @@ var numForest = totalTrees * P_FOREST * (1.0 - P_FOREST_JOIN);
|
||||
var numForestJoin = totalTrees * P_FOREST * P_FOREST_JOIN;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var num = numForest / (scaleByMapSize(6,16) * numPlayers);
|
||||
placer = new ClumpPlacer(numForest / num, 0.1, 0.1, 1);
|
||||
@@ -457,10 +438,8 @@ createAreasInAreas(
|
||||
[explorableArea]
|
||||
);
|
||||
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -478,7 +457,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create chopped forest patches
|
||||
log("Creating chopped forest patches...");
|
||||
var sizes = [scaleByMapSize(20, 120)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -492,12 +470,9 @@ for (var i = 0; i < sizes.length; i++)
|
||||
scaleByMapSize(4, 12)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
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)],
|
||||
@@ -505,7 +480,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[explorableArea]
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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)],
|
||||
@@ -514,7 +489,6 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create metal quarries
|
||||
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)],
|
||||
@@ -524,7 +498,6 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create wildlife
|
||||
log("Creating wildlife...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
@@ -558,7 +531,6 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -589,7 +561,6 @@ createObjectGroupsByAreasDeprecated(
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oOakLarge, oPine, oAleppoPine]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -609,7 +580,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create grass tufts
|
||||
log("Creating grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassLarge, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -620,9 +590,7 @@ createObjectGroupsByAreasDeprecated(group, 0,
|
||||
[explorableArea]
|
||||
);
|
||||
|
||||
|
||||
setTerrainAmbientColor(0.44,0.51,0.56);
|
||||
setUnitsAmbientColor(0.44,0.51,0.56);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tGrass = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
|
||||
const tForestFloor = "medit_grass_field_dry";
|
||||
const tCliff = "medit_cliff_italia";
|
||||
@@ -15,7 +14,6 @@ const tShoreBlend = "medit_sand";
|
||||
const tShore = "medit_sand";
|
||||
const tWater = "medit_sand";
|
||||
|
||||
// gaia entities
|
||||
const oCarob = "gaia/flora_tree_carob";
|
||||
const oAleppoPine = "gaia/flora_tree_aleppo_pine";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
@@ -28,8 +26,6 @@ const oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
const oFood = "gaia/special_treasure_food_bin";
|
||||
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_large_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aRockLarge = "actor|geology/stone_granite_large.xml";
|
||||
@@ -39,22 +35,16 @@ const aBushSmall = "actor|props/flora/bush_medit_sm.xml";
|
||||
const aCarob = "actor|flora/trees/carob.xml";
|
||||
const aAleppoPine = "actor|flora/trees/aleppo_pine.xml";
|
||||
|
||||
|
||||
|
||||
// terrain + entity (for painting)
|
||||
const pForest1 = [tForestFloor + TERRAIN_SEPARATOR + oCarob, tForestFloor];
|
||||
const pForest2 = [tForestFloor + TERRAIN_SEPARATOR + oAleppoPine, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -74,8 +64,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -93,7 +81,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -115,7 +102,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -172,7 +158,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(10);
|
||||
|
||||
// create bumps
|
||||
createBumps(avoidClasses(clPlayer, 9));
|
||||
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 8), clHill, scaleByMapSize(20, 120));
|
||||
@@ -187,7 +172,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(40);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -196,7 +180,6 @@ createLayeredPatches(
|
||||
avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 10)
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -208,7 +191,6 @@ createLayeredPatches(
|
||||
RMS.SetProgress(50);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -218,7 +200,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -229,7 +210,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create decoration
|
||||
createDecoration
|
||||
(
|
||||
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -250,7 +230,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -263,7 +242,6 @@ createFood
|
||||
]
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -275,7 +253,6 @@ createFood
|
||||
avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
|
||||
);
|
||||
|
||||
// create food treasures
|
||||
log("Creating food treasures...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFood, 2,3, 0,2)],
|
||||
@@ -286,7 +263,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create wood treasures
|
||||
log("Creating food treasures...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWood, 2,3, 0,2)],
|
||||
@@ -299,11 +275,9 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create straggler trees
|
||||
var types = [oCarob, oAleppoPine]; // some variation
|
||||
createStragglerTrees(types, avoidClasses(clForest, 1, clHill, 1, clPlayer, 10, clMetal, 6, clRock, 6, clTreasure, 4));
|
||||
|
||||
// create hill trees
|
||||
log("Creating hill trees...");
|
||||
var types = [aCarob, aAleppoPine]; // some variation
|
||||
var num = floor(0.2 * g_numStragglerTrees / types.length);
|
||||
@@ -327,5 +301,4 @@ setPPContrast(0.45);
|
||||
setPPSaturation(0.56);
|
||||
setPPBloom(0.1);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -78,7 +78,6 @@ var scale = paintHeightmap(getHeightMap(), getTileMap(), getTilePallet(), (tile,
|
||||
});
|
||||
RMS.SetProgress(20);
|
||||
|
||||
|
||||
log("Paint tile classes...");
|
||||
paintTileClassBasedOnHeight(-100, -1, 3, g_TileClasses.water);
|
||||
RMS.SetProgress(40);
|
||||
|
||||
@@ -6,14 +6,11 @@ timeArray.push(Date.now());
|
||||
RMS.LoadLibrary("rmgen");
|
||||
RMS.LoadLibrary("heightmap");
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
|
||||
|
||||
// Function to apply a heightmap
|
||||
function setReliefmap(reliefmap)
|
||||
{
|
||||
@@ -23,7 +20,6 @@ function setReliefmap(reliefmap)
|
||||
setHeight(x, y, reliefmap[x][y]);
|
||||
}
|
||||
|
||||
|
||||
// Set target min and max height depending on map size to make average stepness the same on all map sizes
|
||||
var heightRange = {"min": MIN_HEIGHT * mapSize / 8192, "max": MAX_HEIGHT * mapSize / 8192};
|
||||
|
||||
@@ -36,7 +32,6 @@ var waterHeight = -MIN_HEIGHT + heightRange.min + averageWaterCoverage * (height
|
||||
var waterHeightAdjusted = waterHeight + MIN_HEIGHT;
|
||||
setWaterHeight(waterHeight);
|
||||
|
||||
|
||||
//////////
|
||||
// Prepare terrain texture by height placement
|
||||
//////////
|
||||
@@ -101,7 +96,6 @@ var minTerrainDistToBorder = 3;
|
||||
timeArray.push(Date.now());
|
||||
RMS.SetProgress(5);
|
||||
|
||||
|
||||
// START THE GIANT WHILE LOOP:
|
||||
// - Generate Heightmap
|
||||
// - Search valid start position tiles
|
||||
@@ -223,7 +217,7 @@ while (!goodStartPositionsFound)
|
||||
// Find a good start position derivation
|
||||
if (enoughTiles)
|
||||
{
|
||||
// Get some random start location derivations. NOTE: Itterating over all possible derivations is just to much (valid points ** numPlayers)
|
||||
// Get some random start location derivations. NOTE: Iterating over all possible derivations is just too much (valid points * numPlayers)
|
||||
var maxTries = 100000; // floor(800000 / (Math.pow(numPlayers, 2) / 2));
|
||||
var possibleDerivations = [];
|
||||
for (var i = 0; i < maxTries; i++)
|
||||
@@ -277,7 +271,6 @@ while (!goodStartPositionsFound)
|
||||
timeArray.push(Date.now());
|
||||
RMS.SetProgress(60);
|
||||
|
||||
|
||||
////////
|
||||
// Paint terrain by height and add props
|
||||
////////
|
||||
@@ -406,7 +399,6 @@ for(var x = minTerrainDistToBorder; x < mapSize - minTerrainDistToBorder; x++)
|
||||
timeArray.push(Date.now());
|
||||
RMS.SetProgress(90);
|
||||
|
||||
|
||||
////////
|
||||
// Place players and start resources
|
||||
////////
|
||||
@@ -437,8 +429,6 @@ for (var p = 0; p < numPlayers; p++)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
// Time check 7
|
||||
|
||||
@@ -4,5 +4,4 @@ RMS.LoadLibrary("rmgen");
|
||||
|
||||
InitMap();
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -42,7 +42,6 @@ const aShrub = "actor|props/flora/shrub_tropic_plant_flower.xml";
|
||||
const aFlower = "actor|props/flora/flower_bright.xml";
|
||||
const aPalm = "actor|props/flora/shrub_fanpalm.xml";
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
|
||||
@@ -50,6 +50,7 @@ let decorations = [
|
||||
"actor|props/flora/bush.xml", "actor|props/flora/bush_dry_a.xml", "actor|props/flora/bush_highlands.xml",
|
||||
"actor|props/flora/bush_tempe_a.xml", "actor|props/flora/bush_tempe_b.xml", "actor|props/flora/ferns.xml"
|
||||
];
|
||||
|
||||
function placeMine(point, centerEntity)
|
||||
{
|
||||
placeObject(point.x, point.y, centerEntity, 0, randFloat(0, TWO_PI));
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"];
|
||||
const tGrassPForest = "temp_plants_bog";
|
||||
const tGrassDForest = "temp_plants_bog";
|
||||
@@ -18,7 +17,6 @@ const tShoreBlend = "temp_grass_plants";
|
||||
const tShore = "temp_plants_bog";
|
||||
const tWater = "temp_mud_a";
|
||||
|
||||
// gaia entities
|
||||
const oOak = "gaia/flora_tree_oak";
|
||||
const oOakLarge = "gaia/flora_tree_oak_large";
|
||||
const oApple = "gaia/flora_tree_apple";
|
||||
@@ -32,7 +30,6 @@ const oStoneLarge = "gaia/geology_stonemine_temperate_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_temperate";
|
||||
const oMetalLarge = "gaia/geology_metal_temperate_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_large_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
|
||||
@@ -46,7 +43,6 @@ const aBushSmall = "actor|props/flora/bush_medit_sm.xml";
|
||||
const pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest];
|
||||
const pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
@@ -88,7 +84,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -133,7 +128,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': false });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
|
||||
@@ -19,7 +19,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -35,7 +34,6 @@ const oMetalLarge = g_Gaia.metalLarge;
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
const oFood = "gaia/special_treasure_food_bin";
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -49,16 +47,12 @@ const aTree = g_Decoratives.tree;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clHill2 = createTileClass();
|
||||
@@ -108,8 +102,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -127,7 +119,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(18,32);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -150,7 +141,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -314,7 +304,6 @@ for (var g = 0; g < scaleByMapSize(5,30); g++)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
if (i+1 == numPlayers)
|
||||
@@ -368,10 +357,8 @@ RMS.SetProgress(20);
|
||||
paintTerrainBasedOnHeight(3.1, 29, 0, tCliff);
|
||||
paintTileClassBasedOnHeight(3.1, 32, 0, clHill2);
|
||||
|
||||
// create bumps
|
||||
createBumps([avoidClasses(clPlayer, 2), stayClasses(clLand, 2)]);
|
||||
|
||||
// create hills
|
||||
createHills([tCliff, tCliff, tHill], [avoidClasses(clPlayer, 2, clHill, 8, clHill2, 8), stayClasses(clLand, 5)], clHill, scaleByMapSize(10, 40));
|
||||
|
||||
// create hills outside the canyon
|
||||
@@ -387,7 +374,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -396,7 +382,6 @@ createLayeredPatches(
|
||||
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 4, clHill2, 0), stayClasses(clLand, 3)]
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -405,7 +390,6 @@ createPatches(
|
||||
);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -415,7 +399,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -426,7 +409,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
var planetm = 1;
|
||||
|
||||
if (currentBiome() == "tropic")
|
||||
@@ -450,7 +432,6 @@ createDecoration
|
||||
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0)
|
||||
);
|
||||
|
||||
// create actor trees
|
||||
log("Creating actor trees...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aTree, 1,1, 0,1)],
|
||||
@@ -464,7 +445,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -478,7 +458,6 @@ createFood
|
||||
[avoidClasses(clForest, 0, clPlayer, 4, clHill, 1, clFood, 20, clHill2, 1), stayClasses(clLand, 3)]
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -492,14 +471,11 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
createStragglerTrees(types, [avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6, clHill2, 1), stayClasses(clLand, 3)]);
|
||||
|
||||
|
||||
// create treasures
|
||||
log("Creating treasures...");
|
||||
var fx = fractionToTiles(0.5);
|
||||
var fz = fractionToTiles(0.5);
|
||||
for (let i = 0; i < randIntInclusive(3, 8); ++i)
|
||||
@@ -508,5 +484,4 @@ for (let i = 0; i < randIntInclusive(3, 8); ++i)
|
||||
for (let i = 0; i < randIntInclusive(3, 8); ++i)
|
||||
placeObject(fx + randFloat(-7, 7), fz + randFloat(-7, 7), oFood, 0, randFloat(0, 2 * PI));
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -19,7 +19,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -33,7 +32,6 @@ const oStoneLarge = g_Gaia.stoneLarge;
|
||||
const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -46,16 +44,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -66,8 +60,6 @@ var clFood = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
var clSettlement = createTileClass();
|
||||
var clLand = createTileClass();
|
||||
//Create the continent body
|
||||
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
@@ -104,8 +96,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -123,7 +113,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -147,7 +136,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
);
|
||||
createArea(placer, [elevationPainter, paintClass(clLand)], null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -223,7 +211,6 @@ for (var i = 0; i < numPlayers; ++i)
|
||||
createArea(placer, painter, null);
|
||||
}
|
||||
|
||||
// create bumps
|
||||
createBumps([avoidClasses(clPlayer, 10), stayClasses(clLand, 5)]);
|
||||
|
||||
if (randBool())
|
||||
@@ -240,7 +227,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -249,7 +235,6 @@ createLayeredPatches(
|
||||
[avoidClasses(clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12), stayClasses(clLand, 5)]
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -260,7 +245,6 @@ createPatches(
|
||||
RMS.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -270,7 +254,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -307,7 +290,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -321,7 +303,6 @@ createFood
|
||||
[avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20), stayClasses(clLand, 5)]
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -333,7 +314,6 @@ createFood
|
||||
[avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 10), stayClasses(clLand, 5)]
|
||||
);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -347,12 +327,10 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
createStragglerTrees(types, [avoidClasses(clForest, 7, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6), stayClasses(clLand, 7)]);
|
||||
setWaterWaviness(1.0);
|
||||
setWaterType("ocean");
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -18,7 +18,6 @@ const tDirtCracks = "medit_dirt_c";
|
||||
const tShore = "medit_sand";
|
||||
const tWater = "medit_sand_wet";
|
||||
|
||||
// gaia entities
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
const oDeer = "gaia/fauna_deer";
|
||||
const oFish = "gaia/fauna_fish";
|
||||
@@ -34,7 +33,6 @@ const oFanPalm = "gaia/flora_tree_medit_fan_palm";
|
||||
const oPoplar = "gaia/flora_tree_poplar_lombardy";
|
||||
const oCypress = "gaia/flora_tree_cypress";
|
||||
|
||||
// decorative props
|
||||
const aBush1 = "actor|props/flora/bush_medit_sm.xml";
|
||||
const aBush2 = "actor|props/flora/bush_medit_me.xml";
|
||||
const aBush3 = "actor|props/flora/bush_medit_la.xml";
|
||||
@@ -45,16 +43,12 @@ const aDecorativeRock = "actor|geology/stone_granite_med.xml";
|
||||
// terrain + entity (for painting)
|
||||
const pForest = [tForestFloor, tForestFloor + TERRAIN_SEPARATOR + oCarob, tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
var clWater = createTileClass();
|
||||
@@ -67,7 +61,6 @@ var clSettlement = createTileClass();
|
||||
var clGrass = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
|
||||
// create the main river
|
||||
log("Creating the main river");
|
||||
var placer = new PathPlacer(fractionToTiles(0.5 + cos(3 * PI / 4)), fractionToTiles(0.5 + sin(3 * PI / 4)), fractionToTiles(0.5 + cos(- PI / 4)), fractionToTiles(0.5 + sin(- PI / 4)), scaleByMapSize(15,70), 0.2, 3*(scaleByMapSize(5,15)), 0.04, 0.01);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -127,8 +120,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -160,7 +151,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -178,7 +168,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tCityPlaza, tCity], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': 'towers' });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -236,10 +225,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(40);
|
||||
|
||||
// create bumps
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
// create forests
|
||||
createForests(
|
||||
[tForestFloor, tForestFloor, tForestFloor, pForest, pForest],
|
||||
avoidClasses(clPlayer, 20, clForest, 17, clWater, 2, clBaseResource, 3),
|
||||
@@ -248,13 +235,11 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create hills
|
||||
if (randBool())
|
||||
createHills([tGrass, tCliff, tHill], avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 3), clHill, scaleByMapSize(3, 15));
|
||||
else
|
||||
createMountains(tCliff, avoidClasses(clPlayer, 20, clForest, 1, clHill, 15, clWater, 3), clHill, scaleByMapSize(3, 15));
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -265,7 +250,6 @@ createLayeredPatches(
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -277,7 +261,6 @@ createLayeredPatches(
|
||||
RMS.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -287,7 +270,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -298,7 +280,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
createDecoration
|
||||
(
|
||||
[[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
@@ -313,7 +294,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -325,7 +305,6 @@ createFood
|
||||
[avoidClasses(clFood, 10), stayClasses(clWater, 5)]
|
||||
);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -341,7 +320,6 @@ createFood
|
||||
avoidClasses(clForest, 0, clPlayer, 8, clWater, 1, clFood, 10, clHill, 1)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -355,12 +333,10 @@ createFood
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress]; // some variation
|
||||
createStragglerTrees(types, avoidClasses(clForest, 1, clWater, 2, clPlayer, 8, clMetal, 6, clHill, 1));
|
||||
|
||||
// Set environment
|
||||
setSkySet("sunny");
|
||||
setSunColor(0.917, 0.828, 0.734);
|
||||
setWaterColor(0, 0.501961, 1);
|
||||
@@ -377,5 +353,4 @@ setPPContrast(0.62);
|
||||
setPPSaturation(0.51);
|
||||
setPPBloom(0.12);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -27,7 +27,6 @@ var tVeryDeepWater = ["medit_sea_depths","medit_sea_coral_deep"];
|
||||
var tDeepWater = ["medit_sea_coral_deep","tropic_ocean_coral"];
|
||||
var tCreekWater = "medit_sea_coral_plants";
|
||||
|
||||
// gaia entities
|
||||
var ePine = "gaia/flora_tree_aleppo_pine";
|
||||
var ePalmTall = "gaia/flora_tree_cretan_date_palm_tall";
|
||||
var eFanPalm = "gaia/flora_tree_medit_fan_palm";
|
||||
@@ -39,7 +38,6 @@ var ePig = "gaia/fauna_pig";
|
||||
var eStoneMine = "gaia/geology_stonemine_medit_quarry";
|
||||
var eMetalMine = "gaia/geology_metal_mediterranean_slabs";
|
||||
|
||||
// decorative props
|
||||
var aFlower1 = "actor|props/flora/decals_flowers_daisies.xml";
|
||||
var aWaterFlower = "actor|props/flora/water_lillies.xml";
|
||||
var aReedsA = "actor|props/flora/reeds_pond_lush_a.xml";
|
||||
@@ -60,15 +58,12 @@ var tForestNicae = [tForestFloor + TERRAIN_SEPARATOR + ePine,tForestFloor + TERR
|
||||
var tForestNicaeLight = [tForestFloor + TERRAIN_SEPARATOR + ePine,tForestFloor + TERRAIN_SEPARATOR + ePine,tForestFloor + TERRAIN_SEPARATOR + eFanPalm, tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor];
|
||||
var tForestNicaeScarce = [tForestFloor + TERRAIN_SEPARATOR + ePine,tForestFloor + TERRAIN_SEPARATOR + ePine,tForestFloor + TERRAIN_SEPARATOR + eFanPalm, tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor,tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clCorsica = createTileClass();
|
||||
var clSardinia = createTileClass();
|
||||
var clCreek = createTileClass();
|
||||
@@ -105,9 +100,8 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
|
||||
// let's decide if we swap
|
||||
var swap = randBool();
|
||||
// let's create Corsica
|
||||
|
||||
log("Creating Corsica");
|
||||
var CorsicaX = fractionToTiles(0.99);
|
||||
var CorsicaZ = fractionToTiles(0.9);
|
||||
@@ -230,8 +224,8 @@ for (var island = 0; island <= 1; island++)
|
||||
}
|
||||
}
|
||||
RMS.SetProgress(20);
|
||||
|
||||
log("Creating Main Relief");
|
||||
// Let's make it generally cliffy
|
||||
placer = new ClumpPlacer(fractionToSize(0.3)*1.8, 1.0, 0.2, 4,round((CorsicaX * 5 + fractionToTiles(0.5)) / 6.0),round(fractionToTiles(0.8)));
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_MODIFY, 30,fractionToTiles(0.45));
|
||||
createArea( placer, [elevationPainter], null);
|
||||
@@ -313,14 +307,12 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = 23;
|
||||
|
||||
// get the x and z in tiles
|
||||
fx = playerX[i];
|
||||
fz = playerZ[i];
|
||||
|
||||
|
||||
// let's create a nice platform
|
||||
var placer = new ClumpPlacer(PI*radius*radius, 0.95, 0.3, 10, fx,fz);
|
||||
var PlayerArea = createArea(placer, [paintClass(clPlayer)], null);
|
||||
@@ -332,7 +324,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, getHeight(fx,fz),10);
|
||||
createArea(placer, [painter,paintClass(clSettlement),elevationPainter], null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': false });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -458,7 +449,6 @@ placer = new ClumpPlacer(120, 0.3, 0.1, 4);
|
||||
elevationPainter = new SmoothElevationPainter(ELEVATION_MODIFY, -5,6);
|
||||
createAreas( placer, [elevationPainter], [avoidClasses(clPlayer,2,clPassage, 2,clCorsica,2,clSardinia,2)],scaleByMapSize(20,100), 5 );
|
||||
|
||||
|
||||
log("Repainting");
|
||||
var terrTop = createTerrain(tMountainTop);
|
||||
var terrMount = createTerrain(tMountain);
|
||||
@@ -533,13 +523,11 @@ for (var sandx = 0; sandx < mapSize; sandx++) {
|
||||
RMS.SetProgress(65);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(eStoneMine, 1,1, 0,0),new SimpleObject(aBushB, 1,1, 2,2), new SimpleObject(aBushA, 0,2, 1,3)], true, clBaseResource);
|
||||
createObjectGroupsDeprecated(group, 0,[stayClasses(clCorsica, 1),avoidClasses(clWater, 3, clPlayer,2 , clBaseResource, 2,clCliffs,1)], scaleByMapSize(6,25), 1000 );
|
||||
createObjectGroupsDeprecated(group, 0,[stayClasses(clSardinia, 1),avoidClasses(clWater, 3, clPlayer,2 , clBaseResource, 2,clCliffs,1)], scaleByMapSize(6,25), 1000 );
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(eMetalMine, 1,1, 0,0),new SimpleObject(aBushB, 1,1, 2,2), new SimpleObject(aBushA, 0,2, 1,3)], true, clBaseResource);
|
||||
createObjectGroupsDeprecated(group, 0,[avoidClasses(clWater, 3, clPlayer,2 , clBaseResource, 2,clCliffs,1),stayClasses(clCorsica, 1)], scaleByMapSize(6,25), 1000 );
|
||||
createObjectGroupsDeprecated(group, 0,[avoidClasses(clWater, 3, clPlayer,2 , clBaseResource, 2,clCliffs,1),stayClasses(clSardinia, 1)], scaleByMapSize(6,25), 1000 );
|
||||
@@ -556,16 +544,12 @@ createObjectGroupsDeprecated(TreeGroup, 0, [avoidClasses(clWater, 1, clForest, 0
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup( [new SimpleObject(aRock, 1,3, 0,1),new SimpleObject(aStandingStone, 0,2, 0,3)], true );
|
||||
createObjectGroupsDeprecated( group, 0, avoidClasses(clWater, 0, clForest, 0, clPlayer, 0,clBaseResource, 0, clPassage, 2),
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup( [new SimpleObject(aLargeRock, 1,2, 0,1), new SimpleObject(aRock, 1,3, 0,2)], true
|
||||
);
|
||||
@@ -574,7 +558,6 @@ createObjectGroupsDeprecated( group, 0, avoidClasses(clWater, 0, clForest, 0, cl
|
||||
);
|
||||
createObjectGroupsDeprecated( group, 0, borderClasses(clWater, 5,10), scaleByMapSize(100,800), 500);
|
||||
|
||||
// create decorative grass
|
||||
log("Creating beautification...");
|
||||
group = new SimpleGroup( [new SimpleObject(aPlantA, 3,7, 0,3),new SimpleObject(aPlantB, 3,6, 0,3),new SimpleObject(aPlantC, 1,4, 0,4)], true );
|
||||
createObjectGroupsDeprecated( group, 0, avoidClasses(clWater, 0,clBaseResource, 0, clShore,3), scaleByMapSize(100, 600), 50 );
|
||||
@@ -590,8 +573,6 @@ createObjectGroupsDeprecated( group, 0, avoidClasses(clWater, 3,clBaseResource,
|
||||
group = new SimpleGroup( [new SimpleObject(eFish, 1,2, 0,3)] );
|
||||
createObjectGroupsDeprecated( group, 0, [avoidClasses(clCreek,3,clShore,3),stayClasses(clWater, 3)], scaleByMapSize(50, 150), 100 );
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
setSkySet(pickRandom(["cumulus", "sunny"]));
|
||||
@@ -609,12 +590,8 @@ setWaterTint(0.208, 0.659, 0.925);
|
||||
setWaterMurkiness(0.72);
|
||||
setWaterWaviness(2.0);
|
||||
setWaterType("ocean");
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
|
||||
|
||||
|
||||
// this function will go from point [x1,z1] to point [x2,z2], while following a curve of width (starting-center-starting)
|
||||
// it can smooth on the side depending on "smooth", which is the distance of the smooth. Tileclass and Terrain set a tileclass/terrain
|
||||
// it effectively can create a smooth path from point [x1,z1] to point [x2,z2], ie Canyon, whatever.
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tOceanDepths = "medit_sea_depths";
|
||||
const tOceanRockDeep = "medit_sea_coral_deep";
|
||||
const tOceanRockShallow = "medit_rocks_wet";
|
||||
@@ -25,7 +24,6 @@ const tGrassCliff = "medit_cliff_italia_grass";
|
||||
const tCliff = ["medit_cliff_italia", "medit_cliff_italia", "medit_cliff_italia_grass"];
|
||||
const tForestFloor = "medit_forestfloor_a";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
const oCarob = "gaia/flora_tree_carob";
|
||||
@@ -47,7 +45,6 @@ const oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
|
||||
const oShipwreck = "other/special_treasure_shipwreck";
|
||||
const oShipDebris = "other/special_treasure_shipwreck_debris";
|
||||
|
||||
// decorative props
|
||||
const aBushLargeDry = "actor|props/flora/bush_medit_la_dry.xml";
|
||||
const aBushLarge = "actor|props/flora/bush_medit_la.xml";
|
||||
const aBushMedDry = "actor|props/flora/bush_medit_me_dry.xml";
|
||||
@@ -60,14 +57,12 @@ const aRockLarge = "actor|geology/stone_granite_large.xml";
|
||||
const aRockMed = "actor|geology/stone_granite_med.xml";
|
||||
const aRockSmall = "actor|geology/stone_granite_small.xml";
|
||||
|
||||
|
||||
// terrain + entity (for painting)
|
||||
const pPalmForest = [tForestFloor+TERRAIN_SEPARATOR+oPalm, tGrass];
|
||||
const pPineForest = [tForestFloor+TERRAIN_SEPARATOR+oPine, tGrass];
|
||||
const pPoplarForest = [tForestFloor+TERRAIN_SEPARATOR+oLombardyPoplar, tGrass];
|
||||
const pMainForest = [tForestFloor+TERRAIN_SEPARATOR+oCarob, tForestFloor+TERRAIN_SEPARATOR+oBeech, tGrass, tGrass];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -134,7 +129,6 @@ for (var i = 0; i < numIslands; ++i)
|
||||
createArea(placer, [terrainPainter, paintClass(clCoral)],avoidClasses(clCoral,0));
|
||||
}
|
||||
|
||||
|
||||
//create spoke islands
|
||||
//put down base resources and animals but do not populate
|
||||
for (var i=0; i < numIslands; i++)
|
||||
|
||||
@@ -119,7 +119,6 @@ const normalMapSize = 320;
|
||||
// Minimum distance from the map border to ship ungarrison points
|
||||
const ShorelineDistance = 15;
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// initialize map
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
// Setup tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clPath = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
|
||||
// Setup Templates
|
||||
var templateStone = "gaia/geology_stone_temperate";
|
||||
var templateStoneMine = "gaia/geology_stonemine_temperate_quarry";
|
||||
var templateMetal = "gaia/geology_metal_temperate";
|
||||
@@ -19,7 +15,6 @@ var templateMetalMine = "gaia/geology_metal_temperate_slabs";
|
||||
var startingResourcees = ["gaia/flora_tree_oak_large", "gaia/flora_bush_temperate", templateStoneMine,
|
||||
"gaia/flora_bush_grapes", "gaia/flora_tree_apple", "gaia/flora_bush_berry", templateMetalMine, "gaia/flora_bush_badlands"];
|
||||
|
||||
// Setup terrain
|
||||
var terrainWood = ['temp_grass_mossy|gaia/flora_tree_oak', 'temp_forestfloor_pine|gaia/flora_tree_pine', 'temp_mud_plants|gaia/flora_tree_dead',
|
||||
'temp_plants_bog|gaia/flora_tree_oak_large', "temp_dirt_gravel_plants|gaia/flora_tree_aleppo_pine", 'temp_forestfloor_autumn|gaia/flora_tree_carob']; //'temp_forestfloor_autumn|gaia/flora_tree_fig'
|
||||
var terrainWoodBorder = ['temp_grass_plants|gaia/flora_tree_euro_beech', 'temp_grass_mossy|gaia/flora_tree_poplar', 'temp_grass_mossy|gaia/flora_tree_poplar_lombardy',
|
||||
@@ -41,15 +36,12 @@ var terrainHillBorder = ["temp_highlands", "temp_highlands", "temp_highlands", "
|
||||
"temp_highlands", "temp_highlands", "temp_highlands", "temp_cliff_b", "temp_dirt_gravel_plants",
|
||||
"temp_highlands|gaia/fauna_goat"];
|
||||
|
||||
|
||||
// Setup map
|
||||
var mapSize = getMapSize();
|
||||
var mapRadius = mapSize/2;
|
||||
var playableMapRadius = mapRadius - 5;
|
||||
var mapCenterX = mapRadius;
|
||||
var mapCenterZ = mapRadius;
|
||||
|
||||
// Setup players and bases
|
||||
var numPlayers = getNumPlayers();
|
||||
var baseRadius = 20;
|
||||
var minPlayerRadius = min(mapRadius-1.5*baseRadius, 5*mapRadius/8);
|
||||
@@ -90,12 +82,14 @@ for (var i=0; i < numPlayers; i++)
|
||||
var z = round(mapCenterZ + randFloat(minPlayerRadius, maxPlayerRadius)*sin(playerAngle[i]));
|
||||
playerStartLocX[i] = x;
|
||||
playerStartLocZ[i] = z;
|
||||
// Place starting entities
|
||||
|
||||
placeCivDefaultEntities(x, z, i+1);
|
||||
|
||||
// Place base texture
|
||||
var placer = new ClumpPlacer(2*baseRadius*baseRadius, 2/3, 1/8, 10, x, z);
|
||||
var painter = [new LayeredPainter([terrainBaseBorder, terrainBase, terrainBaseCenter], [baseRadius/4, baseRadius/4]), paintClass(clPlayer)];
|
||||
createArea(placer, painter);
|
||||
|
||||
// Place starting resources
|
||||
var distToSL = 10;
|
||||
var resStartAngle = playerAngle[i] + PI;
|
||||
@@ -139,7 +133,8 @@ for (var i = 0; i < maxI; i++)
|
||||
{
|
||||
var x = mapCenterX;
|
||||
var z = mapCenterZ;
|
||||
};
|
||||
}
|
||||
|
||||
if (j < numPlayers)
|
||||
{
|
||||
var targetX = playerStartLocX[j];
|
||||
@@ -149,7 +144,8 @@ for (var i = 0; i < maxI; i++)
|
||||
{
|
||||
var targetX = mapCenterX;
|
||||
var targetZ = mapCenterZ;
|
||||
};
|
||||
}
|
||||
|
||||
// Prepare path placement
|
||||
var angle = getAngle(x, z, targetX, targetZ);
|
||||
x += round(pathSucsessRadius*cos(angle));
|
||||
@@ -216,16 +212,17 @@ for (var x = 0; x < mapSize; x++)
|
||||
{
|
||||
for (var z = 0;z < mapSize;z++)
|
||||
{
|
||||
// Some variables
|
||||
var radius = Math.pow(Math.pow(mapCenterX - x - 0.5, 2) + Math.pow(mapCenterZ - z - 0.5, 2), 1/2); // The 0.5 is a correction for the entities placed on the center of tiles
|
||||
var minDistToSL = mapSize;
|
||||
for (var i=0; i < numPlayers; i++)
|
||||
minDistToSL = min(minDistToSL, getDistance(playerStartLocX[i], playerStartLocZ[i], x, z));
|
||||
|
||||
// Woods tile based
|
||||
var tDensFactSL = max(min((minDistToSL - baseRadius) / baseRadius, 1), 0);
|
||||
var tDensFactRad = abs((resourceRadius - radius) / resourceRadius);
|
||||
var tDensFactEC = max(min((radius - radiusEC) / radiusEC, 1), 0);
|
||||
var tDensActual = maxTreeDensity * tDensFactSL * tDensFactRad * tDensFactEC;
|
||||
|
||||
if (randBool(tDensActual) && radius < playableMapRadius)
|
||||
{
|
||||
if (tDensActual < randFloat(0, bushChance * maxTreeDensity))
|
||||
@@ -241,15 +238,13 @@ for (var x = 0; x < mapSize; x++)
|
||||
createArea(placer, painter, avoidClasses(clPath, 2, clHill, 1));
|
||||
}
|
||||
}
|
||||
|
||||
// General hight map
|
||||
var hVarMiddleHill = mapSize/64 * (1+cos(3*PI/2 * radius/mapRadius));
|
||||
var hVarHills = 5*(1+sin(x/10)*sin(z/10));
|
||||
setHeight(x, z, getHeight(x, z) + hVarMiddleHill + hVarHills + 1);
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tGrass = ["temp_grass", "temp_grass", "temp_grass_d"];
|
||||
const tGrassPForest = "temp_plants_bog";
|
||||
const tGrassDForest = "temp_plants_bog";
|
||||
@@ -18,7 +17,6 @@ const tShoreBlend = "temp_grass_plants";
|
||||
const tShore = "temp_dirt_gravel";
|
||||
const tWater = "temp_dirt_gravel_b";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
const oPoplar = "gaia/flora_tree_poplar";
|
||||
const oApple = "gaia/flora_tree_apple";
|
||||
@@ -32,7 +30,6 @@ const oStoneLarge = "gaia/geology_stonemine_temperate_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_temperate";
|
||||
const oMetalLarge = "gaia/geology_metal_temperate_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_large_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aRockLarge = "actor|geology/stone_granite_large.xml";
|
||||
@@ -48,14 +45,12 @@ const pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oOak, tGrassPForest];
|
||||
|
||||
const WATER_WIDTH = 0.25;
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -100,7 +95,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -123,7 +117,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, [painter, paintClass(clPlayer)], null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -142,9 +135,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create metal mine
|
||||
var mAngle = bbAngle;
|
||||
while(abs(mAngle - bbAngle) < PI/3)
|
||||
{
|
||||
mAngle = randFloat(0, TWO_PI);
|
||||
}
|
||||
|
||||
var mDist = 12;
|
||||
var mX = round(fx + mDist * cos(mAngle));
|
||||
var mZ = round(fz + mDist * sin(mAngle));
|
||||
@@ -181,10 +173,13 @@ for (var i = 0; i < numPlayers; i++)
|
||||
RMS.SetProgress(10);
|
||||
|
||||
log("Creating sea");
|
||||
|
||||
var theta = randFloat(0, 1);
|
||||
var theta2 = randFloat(0, 1);
|
||||
|
||||
var seed = randFloat(2,3);
|
||||
var seed2 = randFloat(2,3);
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
@@ -347,7 +342,6 @@ createDecoration
|
||||
stayClasses(clShallow, 0)
|
||||
);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -363,7 +357,6 @@ createFood
|
||||
avoidClasses(clWater, 1, clForest, 0, clPlayer, 20, clHill, 0, clFood, 15)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -375,7 +368,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
|
||||
);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -389,7 +381,6 @@ log("Creating straggler trees...");
|
||||
var types = [oBeech, oPoplar, oApple]; // some variation
|
||||
createStragglerTrees(types, avoidClasses(clWater, 1, clForest, 1, clHill, 1, clPlayer, 8, clMetal, 6, clRock, 6));
|
||||
|
||||
// Set environment
|
||||
setSkySet("cirrus");
|
||||
setWaterColor(0.114, 0.192, 0.463);
|
||||
setWaterTint(0.255, 0.361, 0.651);
|
||||
|
||||
@@ -53,7 +53,6 @@ const pForestP = [
|
||||
tForestFloor1
|
||||
];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
var P_FOREST = 0.7;
|
||||
@@ -65,7 +64,6 @@ var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize * mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clFood = createTileClass();
|
||||
|
||||
@@ -90,7 +90,6 @@ Trigger.prototype.DebugLog = function(txt)
|
||||
print("DEBUG [" + time + "] " + txt + "\n");
|
||||
};
|
||||
|
||||
|
||||
Trigger.prototype.GarrisonWoodenTowers = function()
|
||||
{
|
||||
for (let gaiaEnt of Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager).GetEntitiesByPlayer(0))
|
||||
|
||||
@@ -48,7 +48,6 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const radius = scaleByMapSize(15, 25);
|
||||
@@ -59,7 +58,6 @@ const mapSize = getMapSize();
|
||||
const mapArea = mapSize * mapSize;
|
||||
const centerOfMap = mapSize / 2;
|
||||
|
||||
// Create tile classes
|
||||
let clPlayer = createTileClass();
|
||||
let clHill = createTileClass();
|
||||
let clMountain = createTileClass();
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tGrass = ["temp_grass_aut", "temp_grass_aut", "temp_grass_d_aut"];
|
||||
const tForestFloor = "temp_grass_aut";
|
||||
const tGrassA = "temp_grass_plants_aut";
|
||||
@@ -16,7 +15,6 @@ const tShoreBlend = "temp_grass_plants_aut";
|
||||
const tShore = "temp_plants_bog_aut";
|
||||
const tWater = "temp_mud_a";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech_aut";
|
||||
const oOak = "gaia/flora_tree_oak_aut";
|
||||
const oPine = "gaia/flora_tree_pine";
|
||||
@@ -32,7 +30,6 @@ const oFood = "gaia/special_treasure_food_bin";
|
||||
const oMetal = "gaia/special_treasure_metal";
|
||||
const oStone = "gaia/special_treasure_stone";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_dry_small_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_dry_large.xml";
|
||||
const aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
@@ -46,7 +43,6 @@ const pForestD = [tForestFloor + TERRAIN_SEPARATOR + oBeech, tForestFloor];
|
||||
const pForestO = [tForestFloor + TERRAIN_SEPARATOR + oOak, tForestFloor];
|
||||
const pForestP = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -319,7 +315,6 @@ createDecoration
|
||||
);
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -334,7 +329,6 @@ createFood
|
||||
);
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
|
||||
@@ -21,7 +21,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -35,7 +34,6 @@ const oStoneLarge = g_Gaia.stoneLarge;
|
||||
const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -48,8 +46,6 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -58,8 +54,6 @@ const mapArea = mapSize*mapSize;
|
||||
|
||||
log(mapSize);
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -120,7 +114,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -272,7 +265,6 @@ for (var m = 0; m < numPlayers*split; m++)
|
||||
createArea(placer, [terrainPainter, elevationPainter], null);
|
||||
}
|
||||
|
||||
|
||||
var fx = fractionToTiles(0.5);
|
||||
var fz = fractionToTiles(0.5);
|
||||
ix = round(fx);
|
||||
@@ -413,7 +405,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
var planetm = 1;
|
||||
|
||||
if (currentBiome() == "tropic")
|
||||
@@ -439,7 +430,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -453,7 +443,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -465,10 +454,7 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
|
||||
);
|
||||
|
||||
// create straggler trees
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
createStragglerTrees(types, avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -16,7 +16,6 @@ const tShoreBlend = "medit_sand";
|
||||
const tShore = "sand_grass_25";
|
||||
const tWater = "medit_sand_wet";
|
||||
|
||||
// gaia entities
|
||||
const oPoplar = "gaia/flora_tree_poplar";
|
||||
const oApple = "gaia/flora_tree_apple";
|
||||
const oCarob = "gaia/flora_tree_carob";
|
||||
@@ -28,7 +27,6 @@ const oStoneLarge = "gaia/geology_stonemine_medit_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_mediterranean";
|
||||
const oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_large_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
|
||||
@@ -43,16 +41,12 @@ const aBushSmall = "actor|props/flora/bush_medit_sm.xml";
|
||||
const pForestP = [tForestFloorP + TERRAIN_SEPARATOR + oPoplar, tForestFloorP];
|
||||
const pForestC = [tForestFloorC + TERRAIN_SEPARATOR + oCarob, tForestFloorC];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -100,13 +94,10 @@ createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null)
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -124,7 +115,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -146,7 +136,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': false });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -205,12 +194,13 @@ for (var i = 0; i < numPlayers; i++)
|
||||
RMS.SetProgress(20);
|
||||
|
||||
const WATER_WIDTH = 0.07;
|
||||
|
||||
log("Creating river");
|
||||
|
||||
var theta = randFloat(0, 1);
|
||||
var seed = randFloat(2,3);
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
var x = ix / (mapSize + 1.0);
|
||||
@@ -270,7 +260,6 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
paintTerrainBasedOnHeight(1, 3, 0, tShore);
|
||||
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
||||
|
||||
// create bumps
|
||||
createBumps([avoidClasses(clPlayer, 20, clRiver, 1), stayClasses(clLand, 3)]);
|
||||
|
||||
createForests(
|
||||
@@ -281,7 +270,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -290,7 +278,6 @@ createLayeredPatches(
|
||||
[avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 8, clRiver, 1), stayClasses(clLand, 7)]
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -301,7 +288,6 @@ createPatches(
|
||||
RMS.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -311,7 +297,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -319,10 +304,8 @@ createMines(
|
||||
[avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1, clRiver, 1), stayClasses(clLand, 5)],
|
||||
clMetal
|
||||
);
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
createDecoration
|
||||
(
|
||||
[[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -356,7 +339,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -370,7 +352,6 @@ createFood
|
||||
[avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20, clRiver, 1), stayClasses(clLand, 3)]
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -382,7 +363,6 @@ createFood
|
||||
[avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 10, clRiver, 1), stayClasses(clLand, 3)]
|
||||
);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -396,8 +376,6 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPoplar, oCarob, oApple]; // some variation
|
||||
createStragglerTrees(types, [avoidClasses(clForest, 1, clHill, 1, clPlayer, 9, clMetal, 6, clRock, 6, clRiver, 1), stayClasses(clLand, 7)]);
|
||||
@@ -417,5 +395,4 @@ setPPContrast(0.62);
|
||||
setPPSaturation(0.51);
|
||||
setPPBloom(0.12);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -119,16 +119,12 @@ else
|
||||
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -158,8 +154,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -180,7 +174,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -202,7 +195,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -346,10 +338,8 @@ else
|
||||
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
||||
}
|
||||
|
||||
// create bumps
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 10));
|
||||
|
||||
// create hills
|
||||
if (randBool())
|
||||
createHills([tPrimary, tCliff, tPrimary], avoidClasses(clPlayer, 20, clHill, 15, clWater, 0), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
else
|
||||
@@ -363,7 +353,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -372,7 +361,6 @@ createLayeredPatches(
|
||||
avoidClasses(clWater, 6, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12)
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -383,7 +371,6 @@ createPatches(
|
||||
RMS.SetProgress(65);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -393,7 +380,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -404,7 +390,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create decoration
|
||||
var multiplier = 0;
|
||||
if (random_terrain !== 3) multiplier = 1;
|
||||
|
||||
@@ -426,10 +411,8 @@ createDecoration
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0)
|
||||
);
|
||||
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -443,7 +426,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -457,8 +439,7 @@ createFood
|
||||
|
||||
if (random_terrain !== 3)
|
||||
{
|
||||
// create fish
|
||||
createFood
|
||||
createFood
|
||||
(
|
||||
[
|
||||
[new SimpleObject(oFish, 2,3, 0,2)]
|
||||
@@ -472,7 +453,6 @@ if (random_terrain !== 3)
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPine];
|
||||
createStragglerTrees(types, avoidClasses(clWater, 3, clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
@@ -487,6 +467,4 @@ setWaterWaviness(5.0);
|
||||
setWaterType("lake");
|
||||
setWaterMurkiness(0.88);
|
||||
|
||||
// Export map data
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
|
||||
// terrain textures
|
||||
const tGrass = ["temp_grass_clovers"];
|
||||
const tGrassPForest = "temp_plants_bog";
|
||||
const tGrassDForest = "alpine_dirt_grass_50";
|
||||
@@ -18,7 +16,6 @@ const tShoreBlend = "temp_mud_plants";
|
||||
const tShore = "medit_sand_wet";
|
||||
const tWater = "medit_sand_wet";
|
||||
|
||||
// gaia entities
|
||||
const oPoplar = "gaia/flora_tree_poplar";
|
||||
const oPalm = "gaia/flora_tree_cretan_date_palm_short";
|
||||
const oApple = "gaia/flora_tree_apple";
|
||||
@@ -32,7 +29,6 @@ const oStoneLarge = "gaia/geology_stonemine_temperate_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_temperate";
|
||||
const oMetalLarge = "gaia/geology_metal_temperate_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_large_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aRockLarge = "actor|geology/stone_granite_large.xml";
|
||||
@@ -46,16 +42,12 @@ const pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oOak, tGrassPForest];
|
||||
|
||||
const WATER_WIDTH = 0.25;
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -73,13 +65,10 @@ var clFlatlands = createTileClass();
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerPos = new Array(numPlayers);
|
||||
@@ -96,7 +85,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -106,7 +94,7 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var fz = fractionToTiles(playerZ[i]);
|
||||
var ix = round(fx);
|
||||
var iz = round(fz);
|
||||
// Setting tile class
|
||||
|
||||
addToClass(ix, iz, clPlayer);
|
||||
addToClass(ix+5, iz, clPlayer);
|
||||
addToClass(ix, iz+5, clPlayer);
|
||||
@@ -119,7 +107,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -138,9 +125,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create metal mine
|
||||
var mAngle = bbAngle;
|
||||
while(abs(mAngle - bbAngle) < PI/3)
|
||||
{
|
||||
mAngle = randFloat(0, TWO_PI);
|
||||
}
|
||||
|
||||
var mDist = 12;
|
||||
var mX = round(fx + mDist * cos(mAngle));
|
||||
var mZ = round(fz + mDist * sin(mAngle));
|
||||
@@ -174,15 +160,12 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
placeDefaultDecoratives(fx, fz, aGrassShort, clBaseResource, radius);
|
||||
}
|
||||
|
||||
RMS.SetProgress(10);
|
||||
|
||||
// create sea and hills
|
||||
log("Creating sea and northern hills...");
|
||||
var theta = randFloat(0, 1);
|
||||
var seed = randFloat(2,3);
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
var x = ix / (mapSize + 1.0);
|
||||
@@ -195,42 +178,28 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
var fadeDist = 0.05;
|
||||
|
||||
if (z < 0.25)
|
||||
{
|
||||
addToClass(ix, iz, clHighlands);
|
||||
}
|
||||
|
||||
if (z > cu + 0.75)
|
||||
{
|
||||
var h;
|
||||
if ((z < (cu + 0.75 + fadeDist))&&(z > (cu + 0.75)))
|
||||
{
|
||||
h = 1 - 4.0 * (1 - ((cu + 0.75 + fadeDist) - z)/fadeDist);
|
||||
}
|
||||
else
|
||||
{
|
||||
h = -3.0;
|
||||
}
|
||||
|
||||
if (h < -1.5)
|
||||
{
|
||||
placeTerrain(ix, iz, tWater);
|
||||
}
|
||||
else
|
||||
{
|
||||
placeTerrain(ix, iz, tShore);
|
||||
}
|
||||
|
||||
setHeight(ix, iz, h);
|
||||
if (h < 0){
|
||||
if (h < 0)
|
||||
addToClass(ix, iz, clWater);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
|
||||
num = scaleByMapSize(10, 20);
|
||||
@@ -247,7 +216,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(25);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 4, 3);
|
||||
@@ -260,7 +228,6 @@ createAreas(
|
||||
|
||||
RMS.SetProgress(30);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -286,7 +253,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create mainland forests
|
||||
log("Creating mainland forests...");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]]
|
||||
@@ -308,7 +274,7 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
RMS.SetProgress(45);
|
||||
// create highland forests
|
||||
|
||||
log("Creating highland forests...");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestP], [tGrassDForest, pForestP]]
|
||||
@@ -329,11 +295,8 @@ for (var i = 0; i < types.length; ++i)
|
||||
num
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -350,10 +313,8 @@ for (var i = 0; i < sizes.length; i++)
|
||||
scaleByMapSize(15, 45)
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -371,14 +332,13 @@ for (var i = 0; i < sizes.length; i++)
|
||||
RMS.SetProgress(80);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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, clSea, 2, clHill, 2)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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, clSea, 2, clHill, 2)],
|
||||
@@ -386,7 +346,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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, clSea, 0, clHill, 2)],
|
||||
@@ -395,7 +354,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -406,10 +364,8 @@ createObjectGroupsDeprecated(
|
||||
avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0, clSea, 0),
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -421,8 +377,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
@@ -433,8 +387,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGoat, 2,3, 0,2)],
|
||||
@@ -445,7 +397,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -456,7 +407,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
// create boar
|
||||
log("Creating boar...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBoar, 2,3, 0,2)],
|
||||
@@ -467,8 +417,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
2 * numPlayers, 50
|
||||
);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPoplar, oPalm, oApple]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -484,8 +432,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -495,8 +441,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -505,10 +449,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0, clSea, 1),
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -518,7 +460,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200), 50
|
||||
);
|
||||
|
||||
// Set environment
|
||||
setSkySet("cirrus");
|
||||
setWaterColor(0.114, 0.192, 0.463);
|
||||
setWaterTint(0.255, 0.361, 0.651);
|
||||
@@ -526,5 +467,4 @@ setWaterWaviness(2.0);
|
||||
setWaterType("ocean");
|
||||
setWaterMurkiness(0.83);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -22,7 +22,6 @@ const oMetalLarge = "gaia/geology_metal_savanna_slabs";
|
||||
const aBush = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
const aRock = "actor|geology/stone_savanna_med.xml";
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
|
||||
@@ -33,7 +33,6 @@ const tTier4Terrain = g_Terrains.tier4Terrain;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -51,7 +50,6 @@ const oShipwreck = "other/special_treasure_shipwreck";
|
||||
const oShipDebris = "other/special_treasure_shipwreck_debris";
|
||||
const oObelisk = "other/obelisk";
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aRockLarge = g_Decoratives.rockLarge;
|
||||
@@ -60,13 +58,11 @@ const aRockMedium = g_Decoratives.rockMedium;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
|
||||
// create tile classes
|
||||
let clPlayer = createTileClass();
|
||||
let clHill = createTileClass();
|
||||
let clForest = createTileClass();
|
||||
@@ -164,7 +160,6 @@ for (let i = 0; i < teams.length; ++i)
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, teams[i][p], { "iberWall": false });
|
||||
}
|
||||
|
||||
|
||||
@@ -21,7 +21,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -36,7 +35,6 @@ const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -49,15 +47,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -95,7 +90,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(20,29);
|
||||
var shoreRadius = 6;
|
||||
var elevation = 3;
|
||||
@@ -119,7 +113,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clPlayer)], null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': 'towers' });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -293,7 +286,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
createArea(placer, painter, null);
|
||||
}
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -304,7 +296,6 @@ createAreas(
|
||||
scaleByMapSize(20, 100)
|
||||
);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.5);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -319,7 +310,6 @@ createAreas(
|
||||
scaleByMapSize(4, 13)
|
||||
);
|
||||
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
if (currentBiome() == "savanna")
|
||||
{
|
||||
@@ -343,7 +333,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -371,7 +360,6 @@ if (currentBiome() != "savanna")
|
||||
}
|
||||
|
||||
RMS.SetProgress(50);
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
var numb = 1;
|
||||
@@ -392,7 +380,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -408,16 +395,14 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
RMS.SetProgress(55);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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)],
|
||||
@@ -425,7 +410,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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)],
|
||||
@@ -434,7 +418,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -446,8 +429,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -461,7 +442,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
|
||||
@@ -474,7 +454,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
|
||||
@@ -485,7 +464,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create fruit bush
|
||||
log("Creating fruit bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFruitBush, 5,7, 0,4)],
|
||||
@@ -496,7 +474,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
@@ -509,8 +486,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -530,7 +505,6 @@ var planetm = 1;
|
||||
if (currentBiome() == "tropic")
|
||||
planetm = 8;
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -542,7 +516,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -554,7 +527,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -569,5 +541,4 @@ setSunRotation(randFloat(0, TWO_PI));
|
||||
setSunElevation(randFloat(PI/ 5, PI / 3));
|
||||
setWaterWaviness(2);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -13,7 +13,6 @@ const tShoreBlend = "tropic_beach_dry_plants";
|
||||
const tShore = "tropic_beach_dry";
|
||||
const tWater = "tropic_beach_wet";
|
||||
|
||||
// gaia entities
|
||||
const oTree = "gaia/flora_tree_toona";
|
||||
const oPalm = "gaia/flora_tree_palm_tropic";
|
||||
const oStoneLarge = "gaia/geology_stonemine_tropic_quarry";
|
||||
@@ -24,7 +23,6 @@ const oDeer = "gaia/fauna_deer";
|
||||
const oSheep = "gaia/fauna_tiger";
|
||||
const oBush = "gaia/flora_bush_berry";
|
||||
|
||||
// decorative props
|
||||
const aRockLarge = "actor|geology/stone_granite_large.xml";
|
||||
const aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
const aBush1 = "actor|props/flora/plant_tropic_a.xml";
|
||||
@@ -34,16 +32,12 @@ const aBush3 = "actor|props/flora/plant_tropic_large.xml";
|
||||
const pForestD = [tForestFloor + TERRAIN_SEPARATOR + oTree, tForestFloor];
|
||||
const pForestP = [tForestFloor + TERRAIN_SEPARATOR + oPalm, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clHill2 = createTileClass();
|
||||
@@ -67,8 +61,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerPos = new Array(numPlayers);
|
||||
@@ -85,7 +77,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -107,7 +98,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -194,7 +184,6 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
|
||||
// create shore
|
||||
log("Creating shores...");
|
||||
for (var i = 0; i < scaleByMapSize(20,120); i++)
|
||||
{
|
||||
@@ -225,7 +214,6 @@ paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
|
||||
|
||||
RMS.SetProgress(45);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.1);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -240,7 +228,6 @@ createAreas(
|
||||
scaleByMapSize(5, 40) * numPlayers
|
||||
);
|
||||
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
|
||||
var MIN_TREES = 1000;
|
||||
@@ -251,14 +238,12 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestD], [tGrass, tGrass, tGrass, pForestD]],
|
||||
[[tGrass, tGrass, tGrass, tGrass, pForestP], [tGrass, tGrass, tGrass, pForestP]]
|
||||
]; // some variation
|
||||
|
||||
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
|
||||
var num = floor(size / types.length);
|
||||
@@ -279,7 +264,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -313,14 +297,13 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -328,14 +311,12 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -347,8 +328,6 @@ createObjectGroupsDeprecated(
|
||||
3*scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -360,7 +339,6 @@ createObjectGroupsDeprecated(
|
||||
3*scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush1, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -372,7 +350,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush2, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aBush1, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -384,7 +361,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush3, 1,2, 0,2), new SimpleObject(aBush2, 2,4, 0,2)]
|
||||
@@ -396,7 +372,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree, oPalm]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -412,7 +387,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
@@ -425,7 +399,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBush, 5,7, 0,4)],
|
||||
@@ -436,7 +409,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSheep, 2,3, 0,2)],
|
||||
@@ -447,7 +419,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
|
||||
@@ -19,7 +19,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -33,7 +32,6 @@ const oStoneLarge = g_Gaia.stoneLarge;
|
||||
const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -46,16 +44,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -80,13 +74,10 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -104,7 +95,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -120,7 +110,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
addToClass(ix-5, iz, clPlayer);
|
||||
addToClass(ix, iz-5, clPlayer);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -139,9 +128,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create metal mine
|
||||
var mAngle = bbAngle;
|
||||
while(abs(mAngle - bbAngle) < PI/3)
|
||||
{
|
||||
mAngle = randFloat(0, TWO_PI);
|
||||
}
|
||||
|
||||
var mDist = 12;
|
||||
var mX = round(fx + mDist * cos(mAngle));
|
||||
var mZ = round(fz + mDist * sin(mAngle));
|
||||
@@ -198,8 +186,6 @@ var elevationPainter = new SmoothElevationPainter(
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], avoidClasses(clPlayer, 20));
|
||||
|
||||
|
||||
// create more shore jaggedness
|
||||
log("Creating more shore jaggedness...");
|
||||
|
||||
placer = new ChainPlacer(2, floor(scaleByMapSize(4, 6)), 3, 1);
|
||||
@@ -215,7 +201,6 @@ createAreas(
|
||||
scaleByMapSize(12, 130) * 2, 150
|
||||
);
|
||||
|
||||
|
||||
paintTerrainBasedOnHeight(2.4, 3.4, 3, tMainTerrain);
|
||||
paintTerrainBasedOnHeight(1, 2.4, 0, tShore);
|
||||
paintTerrainBasedOnHeight(-8, 1, 2, tWater);
|
||||
@@ -235,10 +220,8 @@ for (var i = 0; i < numPlayers; ++i)
|
||||
createArea(placer, painter, null);
|
||||
}
|
||||
|
||||
// create bumps
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
// create hills
|
||||
if (randBool())
|
||||
createHills([tMainTerrain, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15, clWater, 2), clHill, scaleByMapSize(1, 4) * numPlayers);
|
||||
else
|
||||
@@ -253,7 +236,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -262,7 +244,6 @@ createLayeredPatches(
|
||||
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12)
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -273,7 +254,6 @@ createPatches(
|
||||
RMS.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -283,7 +263,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -294,7 +273,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
var planetm = 1;
|
||||
|
||||
if (currentBiome() == "tropic")
|
||||
@@ -320,7 +298,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -334,7 +311,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -346,7 +322,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
|
||||
);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -360,11 +335,9 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
createStragglerTrees(types, avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
setWaterWaviness(4.0);
|
||||
setWaterType("lake");
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -2,7 +2,6 @@ RMS.LoadLibrary("rmgen");
|
||||
|
||||
const WATER_WIDTH = 0.1;
|
||||
|
||||
// terrain textures
|
||||
const tOceanDepths = "medit_sea_depths";
|
||||
const tOceanRockDeep = "medit_sea_coral_deep";
|
||||
const tOceanRockShallow = "medit_rocks_wet";
|
||||
@@ -24,7 +23,6 @@ const tGrassCliff = "medit_cliff_italia_grass";
|
||||
const tCliff = ["medit_cliff_italia", "medit_cliff_italia", "medit_cliff_italia_grass"];
|
||||
const tForestFloor = "medit_grass_wild";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
const oCarob = "gaia/flora_tree_carob";
|
||||
@@ -42,7 +40,6 @@ const oStoneLarge = "gaia/geology_stonemine_medit_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_mediterranean";
|
||||
const oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
|
||||
|
||||
// decorative props
|
||||
const aBushLargeDry = "actor|props/flora/bush_medit_la_dry.xml";
|
||||
const aBushLarge = "actor|props/flora/bush_medit_la.xml";
|
||||
const aBushMedDry = "actor|props/flora/bush_medit_me_dry.xml";
|
||||
@@ -62,7 +59,6 @@ const pPineForest = [tForestFloor+TERRAIN_SEPARATOR+oPine, tGrass];
|
||||
const pPoplarForest = [tForestFloor+TERRAIN_SEPARATOR+oLombardyPoplar, tGrass];
|
||||
const pMainForest = [tForestFloor+TERRAIN_SEPARATOR+oCarob, tForestFloor+TERRAIN_SEPARATOR+oBeech, tGrass, tGrass];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -142,7 +138,6 @@ var noise4 = new Noise2D(scaleByMapSize(6, 24));
|
||||
var noise5 = new Noise2D(scaleByMapSize(11, 44));
|
||||
|
||||
for (var ix = 0; ix <= mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz <= mapSize; iz++)
|
||||
{
|
||||
var x = ix / (mapSize + 1.0);
|
||||
@@ -156,13 +151,9 @@ for (var ix = 0; ix <= mapSize; ix++)
|
||||
|
||||
// add the rough shape of the water
|
||||
if (x < WATER_WIDTH)
|
||||
{
|
||||
h = max(-16.0, -28.0*(WATER_WIDTH-x)/WATER_WIDTH);
|
||||
}
|
||||
else if (x > 1.0-WATER_WIDTH)
|
||||
{
|
||||
h = max(-16.0, -28.0*(x-(1.0-WATER_WIDTH))/WATER_WIDTH);
|
||||
}
|
||||
else
|
||||
{
|
||||
distToWater = (0.5 - WATER_WIDTH - abs(x-0.5));
|
||||
@@ -205,11 +196,8 @@ for (var ix = 0; ix <= mapSize; ix++)
|
||||
if (cliffNoise > 0)
|
||||
h += 19 * min(cliffNoise, 0.045) / 0.045;
|
||||
}
|
||||
|
||||
// set the height
|
||||
setHeight(ix, iz, h);
|
||||
}
|
||||
}
|
||||
RMS.SetProgress(15);
|
||||
|
||||
log("Painting terrain...");
|
||||
@@ -220,7 +208,6 @@ var noise9 = new Noise2D(scaleByMapSize(26, 104));
|
||||
var noise10 = new Noise2D(scaleByMapSize(50, 200));
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
var x = ix / (mapSize + 1.0);
|
||||
@@ -327,9 +314,7 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
var grassNoise = (noise8.get(x,z) + 0.6*noise9.get(x,z)) / 1.6;
|
||||
if (grassNoise < 0.3)
|
||||
{
|
||||
t = (diffH > 1.2) ? tDirtCliff : tDirt;
|
||||
}
|
||||
else if (grassNoise < 0.34)
|
||||
{
|
||||
t = (diffH > 1.2) ? tGrassCliff : tGrassDry;
|
||||
@@ -541,7 +526,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
1.5 * numPlayers, 100
|
||||
);
|
||||
|
||||
// Adjust environment
|
||||
setSkySet("sunny");
|
||||
setWaterColor(0.024,0.262,0.224);
|
||||
setWaterTint(0.133, 0.325,0.255);
|
||||
|
||||
@@ -17,7 +17,6 @@ const tShoreBlend = "temp_grass_plants";
|
||||
const tShore = "temp_plants_bog";
|
||||
const tWater = "temp_mud_a";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
const oOak = "gaia/flora_tree_oak";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
@@ -28,7 +27,6 @@ const oStoneLarge = "gaia/geology_stonemine_temperate_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_temperate";
|
||||
const oMetalLarge = "gaia/geology_metal_temperate_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_small_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
@@ -42,16 +40,12 @@ const pForestB = [tGrassDForest + TERRAIN_SEPARATOR + oBeech, tGrassDForest];
|
||||
const pForestO = [tGrassPForest + TERRAIN_SEPARATOR + oOak, tGrassPForest];
|
||||
const pForestR = [tGrassDForest + TERRAIN_SEPARATOR + oBeech, tGrassDForest, tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest, tGrassDForest, tGrassDForest];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -72,8 +66,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -128,7 +120,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [3]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': 'towers' });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -182,7 +173,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
createObjectGroup(group, 0, avoidClasses(clBaseResource,2));
|
||||
}
|
||||
|
||||
// create the main river
|
||||
log("Creating the main river");
|
||||
var tang = randFloat(0, TWO_PI);
|
||||
var placer = new PathPlacer(1, fractionToTiles(0.5), fractionToTiles(0.99), fractionToTiles(0.5), scaleByMapSize(10,20), 0.5, 3*(scaleByMapSize(1,4)), 0.1, 0.01);
|
||||
@@ -207,7 +197,6 @@ var painter = new LayeredPainter([tWater, tWater], [1]);
|
||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -4, 2);
|
||||
createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 8));
|
||||
|
||||
// create the shallows of the main river
|
||||
log("Creating the shallows of the main river");
|
||||
|
||||
for (let i = 0; i <= randIntInclusive(3, scaleByMapSize(4, 6)); ++i)
|
||||
@@ -216,7 +205,6 @@ for (let i = 0; i <= randIntInclusive(3, scaleByMapSize(4, 6)); ++i)
|
||||
passageMaker(floor(fractionToTiles(cLocation)), floor(fractionToTiles(0.35)), floor(fractionToTiles(cLocation)), floor(fractionToTiles(0.65)), scaleByMapSize(4,8), -2, -2, 2, clShallow, undefined, -4);
|
||||
}
|
||||
|
||||
// create tributaries
|
||||
log("Creating tributaries");
|
||||
for (let i = 0; i <= randIntInclusive(8, scaleByMapSize(12, 20)); ++i)
|
||||
{
|
||||
@@ -257,10 +245,8 @@ paintTerrainBasedOnHeight(-5, 1, 1, tWater);
|
||||
paintTerrainBasedOnHeight(1, 2, 1, pForestR);
|
||||
paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
|
||||
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -282,7 +268,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestB], [tGrassDForest, pForestB]],
|
||||
@@ -307,7 +292,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -325,7 +309,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -346,14 +329,13 @@ for (var i = 0; i < sizes.length; i++)
|
||||
RMS.SetProgress(80);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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)],
|
||||
@@ -361,7 +343,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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)],
|
||||
@@ -370,7 +351,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(86);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -382,8 +362,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -395,8 +373,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
@@ -407,9 +383,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
|
||||
// create rabbid
|
||||
log("Creating rabbid...");
|
||||
log("Creating rabbits...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 2,3, 0,2)],
|
||||
true, clFood
|
||||
@@ -419,7 +393,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -430,7 +403,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oBeech]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -446,7 +418,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -456,8 +427,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -467,8 +436,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -478,7 +445,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200), 50
|
||||
);
|
||||
|
||||
// create shallow flora
|
||||
log("Creating shallow flora...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aLillies, 1,2, 0,2), new SimpleObject(aReeds, 2,4, 0,2)]
|
||||
@@ -488,7 +454,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
60 * scaleByMapSize(13, 200), 80
|
||||
);
|
||||
|
||||
// Set environment
|
||||
setSkySet("cirrus");
|
||||
setWaterColor(0.1,0.212,0.422);
|
||||
setWaterTint(0.3,0.1,0.949);
|
||||
@@ -496,5 +461,4 @@ setWaterWaviness(3.0);
|
||||
setWaterType("lake");
|
||||
setWaterMurkiness(0.80);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -19,7 +19,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -33,7 +32,6 @@ const oStoneLarge = g_Gaia.stoneLarge;
|
||||
const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -46,16 +44,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -84,8 +78,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -103,7 +95,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -119,7 +110,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
addToClass(ix-5, iz, clPlayer);
|
||||
addToClass(ix, iz-5, clPlayer);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
// create the city patch
|
||||
@@ -180,13 +170,10 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
placeDefaultDecoratives(fx, fz, aGrassShort, clBaseResource, radius);
|
||||
}
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
// create bumps
|
||||
createBumps();
|
||||
|
||||
// create hills
|
||||
if (randBool())
|
||||
createHills([tCliff, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15), clHill, scaleByMapSize(3, 15));
|
||||
else
|
||||
@@ -201,7 +188,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -209,7 +195,6 @@ createLayeredPatches(
|
||||
[1,1]
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -218,9 +203,7 @@ createPatches(
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -229,7 +212,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -240,7 +222,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
var planetm = 1;
|
||||
|
||||
if (currentBiome() == "tropic")
|
||||
@@ -265,7 +246,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -280,7 +260,6 @@ createFood
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -294,10 +273,7 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
createStragglerTrees(types);
|
||||
|
||||
// Export map data
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -19,7 +19,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -34,7 +33,6 @@ const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -47,15 +45,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -92,7 +87,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var shoreRadius = 4;
|
||||
var elevation = 3;
|
||||
@@ -122,7 +116,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': false });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -357,7 +350,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
RMS.SetProgress(54);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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)],
|
||||
@@ -365,7 +357,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
RMS.SetProgress(58);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -378,7 +369,6 @@ createObjectGroupsDeprecated(
|
||||
);
|
||||
RMS.SetProgress(62);
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// terrain textures
|
||||
const tCity = "desert_city_tile";
|
||||
const tCityPlaza = "desert_city_tile_plaza";
|
||||
const tSand = "desert_dirt_rough";
|
||||
@@ -16,7 +15,6 @@ const tDirtCracks = "desert_dirt_cracks";
|
||||
const tShore = "desert_shore_stones";
|
||||
const tWaterDeep = "desert_shore_stones_wet";
|
||||
|
||||
// gaia entities
|
||||
const oBerryBush = "gaia/flora_bush_grapes";
|
||||
const oCamel = "gaia/fauna_camel";
|
||||
const oFish = "gaia/fauna_fish";
|
||||
@@ -30,7 +28,6 @@ const oMetalLarge = "gaia/geology_metal_desert_slabs";
|
||||
const oDatePalm = "gaia/flora_tree_date_palm";
|
||||
const oSDatePalm = "gaia/flora_tree_senegal_date_palm";
|
||||
|
||||
// decorative props
|
||||
const aBush1 = "actor|props/flora/bush_desert_a.xml";
|
||||
const aBush2 = "actor|props/flora/bush_desert_dry_a.xml";
|
||||
const aBush3 = "actor|props/flora/bush_dry_a.xml";
|
||||
@@ -42,7 +39,6 @@ const aDecorativeRock = "actor|geology/stone_desert_med.xml";
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor];
|
||||
const pForestOasis = [tGrass + TERRAIN_SEPARATOR + oDatePalm, tGrass + TERRAIN_SEPARATOR + oSDatePalm, tGrass];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -107,7 +103,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tCity, tCityPlaza], [3]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -331,7 +326,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var num = scaleByMapSize(10,30);
|
||||
placer = new ClumpPlacer(numForest / num, 0.15, 0.1, 0.5);
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clPath = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
@@ -25,8 +21,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -50,11 +44,7 @@ for (var i=0; i < numPlayers; i++)
|
||||
var ix = round(fx);
|
||||
var iz = round(fz);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -13,7 +13,6 @@ const tShoreBlend = "alpine_shore_rocks_icy";
|
||||
const tShore = "alpine_shore_rocks";
|
||||
const tWater = "alpine_shore_rocks";
|
||||
|
||||
// gaia entities
|
||||
const oPine = "gaia/flora_tree_pine_w";
|
||||
const oStoneLarge = "gaia/geology_stonemine_alpine_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_alpine_a";
|
||||
@@ -22,7 +21,6 @@ const oFish = "gaia/fauna_fish";
|
||||
const oWalrus = "gaia/fauna_walrus";
|
||||
const oWolf = "gaia/fauna_wolf_snow";
|
||||
|
||||
// decorative props
|
||||
const aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
const aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
const aIceberg = "actor|props/special/eyecandy/iceberg.xml";
|
||||
@@ -30,16 +28,12 @@ const aIceberg = "actor|props/special/eyecandy/iceberg.xml";
|
||||
const pForestD = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor, tForestFloor];
|
||||
const pForestS = [tForestFloor + TERRAIN_SEPARATOR + oPine, tForestFloor, tForestFloor, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clHill2 = createTileClass();
|
||||
@@ -54,7 +48,6 @@ var clFood = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
var clSettlement = createTileClass();
|
||||
|
||||
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
@@ -63,8 +56,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerPos = new Array(numPlayers);
|
||||
@@ -81,7 +72,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -103,7 +93,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
// create metal mine
|
||||
@@ -176,7 +165,6 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
|
||||
// create shore
|
||||
log("Creating shores...");
|
||||
for (var i = 0; i < scaleByMapSize(20,120); i++)
|
||||
{
|
||||
@@ -200,7 +188,6 @@ for (var i = 0; i < scaleByMapSize(20,120); i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.1);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -217,7 +204,6 @@ createAreas(
|
||||
|
||||
paintTerrainBasedOnHeight(-6, 1, 1, tWater);
|
||||
|
||||
// create lakes
|
||||
log("Creating lakes...");
|
||||
var numLakes = round(scaleByMapSize(1,4) * numPlayers);
|
||||
var placer = new ChainPlacer(1, floor(scaleByMapSize(5, 7)), floor(scaleByMapSize(20, 50)), 0.1);
|
||||
@@ -238,7 +224,6 @@ paintTileClassBasedOnHeight(-6, 0.5, 1, clWater);
|
||||
|
||||
RMS.SetProgress(45);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.1);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -253,7 +238,6 @@ createAreas(
|
||||
scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
|
||||
var MIN_TREES = 100;
|
||||
@@ -264,14 +248,12 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tSnowA, tSnowA, tSnowA, tSnowA, pForestD], [tSnowA, tSnowA, tSnowA, pForestD]],
|
||||
[[tSnowA, tSnowA, tSnowA, tSnowA, pForestS], [tSnowA, tSnowA, tSnowA, pForestS]]
|
||||
]; // some variation
|
||||
|
||||
|
||||
var size = numForest / (scaleByMapSize(3,6) * numPlayers);
|
||||
|
||||
var num = floor(size / types.length);
|
||||
@@ -291,7 +273,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
}
|
||||
|
||||
log("Creating iceberg...");
|
||||
// create iceberg
|
||||
group = new SimpleGroup([new SimpleObject(aIceberg, 0,2, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clRock, 6), stayClasses(clWater, 4)],
|
||||
@@ -300,7 +281,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -334,14 +314,13 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -349,17 +328,13 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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(8,32), 100
|
||||
);
|
||||
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPine]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -375,7 +350,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWalrus, 5,7, 0,4)],
|
||||
@@ -388,7 +362,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWolf, 2,3, 0,2)],
|
||||
@@ -399,7 +372,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
//random terrain textures
|
||||
const tSand = ["desert_sand_dunes_100", "desert_dirt_cracks","desert_sand_smooth", "desert_dirt_rough", "desert_dirt_rough_2", "desert_sand_smooth"];
|
||||
const tDune = ["desert_sand_dunes_50"];
|
||||
const tBigDune = ["desert_sand_dunes_50"];
|
||||
@@ -13,7 +12,6 @@ const tShoreBlend = "desert_sand_wet";
|
||||
const tShore = "dirta";
|
||||
const tWater = "desert_sand_wet";
|
||||
|
||||
// gaia entities
|
||||
const ePalmShort = "gaia/flora_tree_cretan_date_palm_short";
|
||||
const ePalmTall = "gaia/flora_tree_cretan_date_palm_tall";
|
||||
const eBush = "gaia/flora_bush_grapes";
|
||||
@@ -25,7 +23,6 @@ const eStoneMine = "gaia/geology_stonemine_desert_quarry";
|
||||
const eStoneMineSmall = "gaia/geology_stone_desert_small";
|
||||
const eMetalMine = "gaia/geology_metal_desert_slabs";
|
||||
|
||||
// decorative props
|
||||
const aFlower1 = "actor|props/flora/decals_flowers_daisies.xml";
|
||||
const aWaterFlower = "actor|props/flora/water_lillies.xml";
|
||||
const aReedsA = "actor|props/flora/reeds_pond_lush_a.xml";
|
||||
@@ -39,16 +36,12 @@ const pForestMain = [tForestFloor + TERRAIN_SEPARATOR + ePalmShort, tForestFloor
|
||||
const pOasisForestLight = [tForestFloor + TERRAIN_SEPARATOR + ePalmShort, tForestFloor + TERRAIN_SEPARATOR + ePalmTall, tForestFloor,tForestFloor,tForestFloor
|
||||
,tForestFloor,tForestFloor,tForestFloor,tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -74,13 +67,10 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -100,7 +90,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var elevation = 20;
|
||||
|
||||
@@ -121,7 +110,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -204,10 +192,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
// TODO: add a few random trees here and there
|
||||
}
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 4, 3);
|
||||
@@ -229,7 +215,6 @@ createAreas( placer, [terrainPainter, painter],
|
||||
scaleByMapSize(15, 50)
|
||||
);
|
||||
|
||||
|
||||
log("Creating actual oasis...");
|
||||
var size = mapSize * 0.2;
|
||||
size *= size;
|
||||
@@ -261,7 +246,6 @@ group = new SimpleGroup([new SimpleObject(ePalmTall, 1,1, 0,0),new SimpleObject(
|
||||
createObjectGroupsDeprecated(group, 0, stayClasses(clPassage,1), scaleByMapSize(60,250), 100 );
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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,
|
||||
@@ -270,7 +254,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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,
|
||||
@@ -284,7 +267,7 @@ group = new SimpleGroup( [new SimpleObject(aRock, 2,4, 0,2)], true, undefined );
|
||||
createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), 30, scaleByMapSize(10,50) );
|
||||
|
||||
RMS.SetProgress(70);
|
||||
// create deer
|
||||
|
||||
log("Creating Camels...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(eCamel, 1,2, 0,4)],
|
||||
@@ -294,10 +277,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
|
||||
1 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating Gazelles...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(eGazelle, 2,4, 0,2)],
|
||||
@@ -307,9 +288,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 10, clHill, 1, clFood, 20),
|
||||
1 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
// create lions
|
||||
|
||||
log("Creating Oasis Animals...");
|
||||
for (var p = 0; p < scaleByMapSize(5,30); p++)
|
||||
{
|
||||
@@ -325,7 +305,6 @@ for (var p = 0; p < scaleByMapSize(5,30); p++)
|
||||
}
|
||||
/*
|
||||
var planetm = 8;
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(rba1, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -339,7 +318,6 @@ RMS.SetProgress(90);
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushB, 1,2, 0,2), new SimpleObject(aBushA, 2,4, 0,2)]
|
||||
@@ -350,7 +328,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
log ("Creating Sand blows and beautifications");
|
||||
for (var sandx = 0; sandx < mapSize; sandx += 4)
|
||||
{
|
||||
for (var sandz = 0; sandz < mapSize; sandz += 4)
|
||||
{
|
||||
if (getHeight(sandx,sandz) > 3.4)
|
||||
@@ -372,6 +349,7 @@ for (var sandx = 0; sandx < mapSize; sandx += 4)
|
||||
group = new SimpleGroup( [new SimpleObject(aReedsA, 5,12, 0,2),new SimpleObject(aReedsB, 5,12, 0,2)], true, undefined, sandx,sandz );
|
||||
createObjectGroup(group, 0);
|
||||
}
|
||||
|
||||
if (getTileClass(clPassage).countInRadius(sandx,sandz,2,true) > 0) {
|
||||
if (randBool(0.4))
|
||||
{
|
||||
@@ -386,7 +364,6 @@ for (var sandx = 0; sandx < mapSize; sandx += 4)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
setSkySet("sunny");
|
||||
setSunColor(0.914,0.827,0.639);
|
||||
@@ -400,6 +377,4 @@ setWaterMurkiness(0.5);
|
||||
setTerrainAmbientColor(0.45, 0.5, 0.6);
|
||||
setUnitsAmbientColor(0.501961, 0.501961, 0.501961);
|
||||
|
||||
// Export map data
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -31,7 +31,6 @@ else //spring
|
||||
setTerrainAmbientColor(0.329412, 0.419608, 0.501961);
|
||||
}
|
||||
|
||||
// gaia entities
|
||||
const oGrapesBush = "gaia/flora_bush_grapes";
|
||||
const oCamel = "gaia/fauna_camel";
|
||||
const oFish = "gaia/fauna_fish";
|
||||
@@ -44,7 +43,6 @@ const oMetalLarge = "gaia/geology_metal_desert_slabs";
|
||||
const oTamarix = "gaia/flora_tree_tamarix";
|
||||
const oOak = "gaia/flora_tree_oak";
|
||||
|
||||
// decorative props
|
||||
const aBush1 = "actor|props/flora/bush_desert_a.xml";
|
||||
const aBush2 = "actor|props/flora/bush_desert_dry_a.xml";
|
||||
const aBush3 = "actor|props/flora/bush_dry_a.xml";
|
||||
@@ -55,16 +53,12 @@ const aDecorativeRock = "actor|geology/stone_desert_med.xml";
|
||||
// terrain + entity (for painting)
|
||||
const pForestO = [tForestFloor + TERRAIN_SEPARATOR + oOak, tForestFloor + TERRAIN_SEPARATOR + oOak, tForestFloor, tDirtMain, tDirtMain];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -87,13 +81,10 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -133,7 +124,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tCity, tCity], [3]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -189,7 +179,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(10);
|
||||
|
||||
// create patches
|
||||
log("Creating rock patches...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 6)), floor(scaleByMapSize(20, 45)), 0);
|
||||
painter = new TerrainPainter(tRocky);
|
||||
@@ -219,7 +208,6 @@ createAreas(placer, [painter, paintClass(clPatch)],
|
||||
|
||||
RMS.SetProgress(25);
|
||||
|
||||
// create centeral plateau
|
||||
log("Creating centeral plateau...");
|
||||
var halfSize = mapSize / 2;
|
||||
var oRadius = scaleByMapSize(18, 68);
|
||||
@@ -228,10 +216,8 @@ painter = new LayeredPainter([tLakebed2, tLakebed1], [6]);
|
||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_MODIFY, -10, 8);
|
||||
createArea(placer, [painter, elevationPainter, paintClass(clCP)], avoidClasses(clPlayer, 18));
|
||||
|
||||
|
||||
RMS.SetProgress(30);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
var numHills = scaleByMapSize(20, 80);
|
||||
for (var i = 0; i < numHills; ++i)
|
||||
@@ -262,7 +248,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tDirtMain, tForestFloor, pForestO], [tForestFloor, pForestO]],
|
||||
@@ -284,19 +269,16 @@ for (var i = 0; i < types.length; ++i)
|
||||
num
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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)],
|
||||
@@ -304,23 +286,20 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -328,7 +307,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating centeral metal mines...");
|
||||
// create large metal quarries
|
||||
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),
|
||||
@@ -337,7 +315,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
@@ -351,7 +328,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
//create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush2, 1,2, 0,1), new SimpleObject(aBush1, 1,3, 0,2)],
|
||||
@@ -365,7 +341,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create goats
|
||||
log("Creating goat...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGoat, 5,7, 0,4)],
|
||||
@@ -376,7 +351,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSheep, 2,3, 0,2)],
|
||||
@@ -387,7 +361,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create grape bush
|
||||
log("Creating grape bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGrapesBush, 5,7, 0,4)],
|
||||
@@ -398,7 +371,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
// create camels
|
||||
log("Creating camels...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCamel, 2,3, 0,2)],
|
||||
@@ -409,10 +381,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
|
||||
@@ -16,7 +16,6 @@ const tDirtB = "medit_dirt_c";
|
||||
const tShore = "medit_sand";
|
||||
const tWater = "medit_sand_wet";
|
||||
|
||||
// gaia entities
|
||||
const oGrapeBush = "gaia/flora_bush_grapes";
|
||||
const oDeer = "gaia/fauna_deer";
|
||||
const oFish = "gaia/fauna_fish";
|
||||
@@ -32,7 +31,6 @@ const oFanPalm = "gaia/flora_tree_medit_fan_palm";
|
||||
const oPoplar = "gaia/flora_tree_poplar_lombardy";
|
||||
const oCypress = "gaia/flora_tree_cypress";
|
||||
|
||||
// decorative props
|
||||
const aBush1 = "actor|props/flora/bush_medit_sm.xml";
|
||||
const aBush2 = "actor|props/flora/bush_medit_me.xml";
|
||||
const aBush3 = "actor|props/flora/bush_medit_la.xml";
|
||||
@@ -43,16 +41,12 @@ const aDecorativeRock = "actor|geology/stone_granite_med.xml";
|
||||
// terrain + entity (for painting)
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor + TERRAIN_SEPARATOR + oCarob, tForestFloor, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
var clWater = createTileClass();
|
||||
@@ -74,8 +68,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerPos = new Array(numPlayers);
|
||||
@@ -92,7 +84,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -114,7 +105,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tCityPlaza, tCity], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -172,12 +162,11 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(30);
|
||||
|
||||
|
||||
log("Creating sea");
|
||||
|
||||
var theta = randFloat(0, 1);
|
||||
var seed = randFloat(2,3);
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
var x = ix / (mapSize + 1.0);
|
||||
@@ -193,33 +182,23 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
var h;
|
||||
if (x < (cu + 0.5 + fadeDist))
|
||||
{
|
||||
h = 1 + 4.0 * (1 - ((cu + 0.5 + fadeDist) - x)/fadeDist);
|
||||
}
|
||||
else
|
||||
{
|
||||
h = -3.0;
|
||||
}
|
||||
|
||||
if (h < -1.5)
|
||||
{
|
||||
placeTerrain(ix, iz, tWater);
|
||||
}
|
||||
else
|
||||
{
|
||||
placeTerrain(ix, iz, tShore);
|
||||
}
|
||||
|
||||
setHeight(ix, iz, h);
|
||||
if (h < 0){
|
||||
if (h < 0)
|
||||
addToClass(ix, iz, clWater);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(40);
|
||||
// create bumps
|
||||
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -230,7 +209,6 @@ createAreas(
|
||||
scaleByMapSize(100, 200)
|
||||
);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.5);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -254,7 +232,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var num = scaleByMapSize(10,42);
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), numForest / (num * floor(scaleByMapSize(2,5))), 0.5);
|
||||
@@ -263,15 +240,8 @@ createAreas(placer, [painter, paintClass(clForest)],
|
||||
avoidClasses(clPlayer, 20, clForest, 10, clWater, 1, clHill, 1, clBaseResource, 3),
|
||||
num, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -288,10 +258,8 @@ for (var i = 0; i < sizes.length; i++)
|
||||
scaleByMapSize(15, 45)
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -308,12 +276,8 @@ for (var i = 0; i < sizes.length; i++)
|
||||
scaleByMapSize(15, 45)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create cyprus
|
||||
log("Creating cyprus...");
|
||||
placer = new ClumpPlacer(4.5 * scaleByMapSize(60, 540), 0.2, 0.1, 0.01);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -329,14 +293,13 @@ createAreas(
|
||||
);
|
||||
|
||||
log("Creating cyprus stone mines...");
|
||||
// create cyprus large stone quarries
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
stayClasses(clIsland, 9),
|
||||
14 * scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create cyprus small stone quarries
|
||||
log("Creating cyprus small stone mines...");
|
||||
group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
stayClasses(clIsland, 9),
|
||||
@@ -344,7 +307,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating cyprus metal mines...");
|
||||
// create cyprus large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
stayClasses(clIsland, 9),
|
||||
@@ -352,14 +314,13 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -367,7 +328,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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),
|
||||
@@ -376,7 +336,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
@@ -388,8 +347,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create shrubs
|
||||
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)],
|
||||
@@ -400,10 +357,8 @@ createObjectGroupsDeprecated(
|
||||
avoidClasses(clWater, 3, clPlayer, 0, clHill, 1),
|
||||
scaleByMapSize(40, 360), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup([new SimpleObject(oFish, 1,3, 2,6)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -411,7 +366,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create sheeps
|
||||
log("Creating sheeps...");
|
||||
group = new SimpleGroup([new SimpleObject(oSheep, 5,7, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -419,7 +373,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create goats
|
||||
log("Creating goats...");
|
||||
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -427,7 +380,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create deers
|
||||
log("Creating deers...");
|
||||
group = new SimpleGroup([new SimpleObject(oDeer, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -435,7 +387,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create grape bushes
|
||||
log("Creating grape bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGrapeBush, 5,7, 0,4)],
|
||||
@@ -445,10 +396,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 15, clHill, 1, clFood, 7),
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm, oCarob, oFanPalm, oPoplar, oCypress]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -473,7 +422,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
// Set environment
|
||||
setSkySet("sunny");
|
||||
setSunColor(0.917, 0.828, 0.734);
|
||||
setWaterColor(0.263,0.314,0.631);
|
||||
@@ -497,5 +445,4 @@ setPPContrast(0.53);
|
||||
setPPSaturation(0.47);
|
||||
setPPBloom(0.52);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -11,7 +11,6 @@ var tRoadWild = "polar_ice_cracked";
|
||||
var tShore = "polar_ice_snow";
|
||||
var tWater = "polar_ice_c";
|
||||
|
||||
// gaia entities
|
||||
var oArcticFox = "gaia/fauna_fox_arctic";
|
||||
var oWolf = "trigger/fauna_wolf_snow_attack";
|
||||
var oMuskox = "gaia/fauna_muskox";
|
||||
@@ -24,12 +23,10 @@ var oStoneSmall = "gaia/geology_stone_alpine_a";
|
||||
var oMetalLarge = "gaia/geology_metal_desert_badlands_slabs";
|
||||
var oWood = "gaia/special_treasure_wood";
|
||||
|
||||
// decorative props
|
||||
var aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
var aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
var aIceberg = "actor|props/special/eyecandy/iceberg.xml";
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
|
||||
@@ -166,7 +166,6 @@ SemiRandomElevationPainter.prototype.paint = function(area)
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
TILE_CENTERED_HEIGHT_MAP = true;
|
||||
|
||||
const tGrassSpecific = ["new_alpine_grass_d","new_alpine_grass_d", "new_alpine_grass_e"];
|
||||
@@ -204,7 +203,6 @@ const tRoad = "new_alpine_citytile";
|
||||
const tRoadWild = "new_alpine_citytile";
|
||||
const tShore = "alpine_shore_rocks_icy";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
const oPine = "gaia/flora_tree_aleppo_pine";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
@@ -216,9 +214,6 @@ const oStoneLarge = "gaia/geology_stonemine_alpine_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_alpine_a";
|
||||
const oMetalLarge = "gaia/geology_metal_alpine_slabs";
|
||||
|
||||
|
||||
|
||||
// decorative props
|
||||
const aRain = "actor|particle/rain_shower.xml";
|
||||
const aGrass = "actor|props/flora/grass_soft_small_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
@@ -242,16 +237,12 @@ const pForestLandVeryLight = [ tGrassLandForest2 + TERRAIN_SEPARATOR + oPine,tGr
|
||||
tGrassLandForest,tForestTransition,tGrassLandForest2,tForestTransition,
|
||||
tGrassLandForest2,tGrassLandForest2,tGrassLandForest2,tGrassLandForest2];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clDirt = createTileClass();
|
||||
var clLush = createTileClass();
|
||||
var clRock = createTileClass();
|
||||
@@ -295,7 +286,6 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
@@ -326,7 +316,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -348,7 +337,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -568,8 +556,6 @@ painter = new SemiRandomElevationPainter(7, 4,1);
|
||||
var terrainPainter = new TerrainPainter(tGrassSpecific);
|
||||
createAreas( placer, [painter,terrainPainter, paintClass(clHill)], avoidClasses(clWater, 5, clPlayer, 20, clBaseResource, 6, clPyrenneans, 2), scaleByMapSize(5, 35) );
|
||||
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [ [tForestTransition,pForestLandVeryLight, pForestLandLight, pForestLand]];
|
||||
var size = scaleByMapSize(40,115)*PI;
|
||||
@@ -588,7 +574,6 @@ 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 );
|
||||
|
||||
// Painting
|
||||
log("Painting the map");
|
||||
|
||||
var terrainGrass = createTerrain(tGrass);
|
||||
@@ -668,7 +653,6 @@ for (var x = 0; x < mapSize; x++) {
|
||||
}
|
||||
}
|
||||
}
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 20), scaleByMapSize(5, 40), scaleByMapSize(8, 60)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -678,7 +662,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
createAreas( placer, [painter, paintClass(clDirt)], avoidClasses(clWater, 3, clForest, 0, clPyrenneans,5, clHill, 0, clDirt, 5, clPlayer, 6), scaleByMapSize(15, 45) );
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -688,7 +671,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
createAreas( placer, [painter,paintClass(clLush)], avoidClasses(clWater, 3, clForest, 0, clPyrenneans,5, clHill, 0, clDirt, 5, clPlayer, 6), scaleByMapSize(15, 45) );
|
||||
}
|
||||
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// making more in dirt areas so as to appear different
|
||||
@@ -703,7 +685,6 @@ createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 3, clHill, 2, clPla
|
||||
createObjectGroupsDeprecated(group, 0, stayClasses(clDirt,1), scaleByMapSize(13, 200),10);
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create bushes
|
||||
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 );
|
||||
@@ -711,11 +692,10 @@ createObjectGroupsDeprecated(group, 0, avoidClasses(clWater, 2, clPlayer, 1, clP
|
||||
RMS.SetProgress(80);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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 );
|
||||
|
||||
// create small stone quarries
|
||||
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 );
|
||||
|
||||
@@ -794,7 +774,6 @@ function PassMaker(x1, z1, x2, z2, startWidth, centerWidth, startElevation, cent
|
||||
|
||||
var width = (abs(step - stepNB/2.0) *startWidth + (stepNB/2 - abs(step - stepNB/2.0)) * centerWidth ) / (stepNB/2);
|
||||
|
||||
|
||||
var oldDirection = [x2-x1, z2-z1];
|
||||
// let's get the perpendicular direction
|
||||
var direction = [ -oldDirection[1],oldDirection[0] ];
|
||||
@@ -866,4 +845,3 @@ function getHeightDifference(x1, z1)
|
||||
return diff;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,6 @@ const tShoreBlend = "temp_grass_plants";
|
||||
const tShore = "temp_plants_bog";
|
||||
const tWater = "temp_mud_a";
|
||||
|
||||
// gaia entities
|
||||
const oBeech = "gaia/flora_tree_euro_beech";
|
||||
const oOak = "gaia/flora_tree_oak";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
@@ -24,7 +23,6 @@ const oStoneLarge = "gaia/geology_stonemine_temperate_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_temperate";
|
||||
const oMetalLarge = "gaia/geology_metal_temperate_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_soft_small_tall.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_soft_large.xml";
|
||||
const aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
@@ -37,16 +35,12 @@ const aBushSmall = "actor|props/flora/bush_medit_sm.xml";
|
||||
const pForestD = [tForestFloor + TERRAIN_SEPARATOR + oBeech, tForestFloor];
|
||||
const pForestP = [tForestFloor + TERRAIN_SEPARATOR + oOak, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -58,7 +52,6 @@ var clFood = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
var clSettlement = createTileClass();
|
||||
|
||||
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
@@ -67,8 +60,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -86,7 +77,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -108,7 +98,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -166,7 +155,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(15);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -177,7 +165,6 @@ createAreas(
|
||||
scaleByMapSize(300, 800)
|
||||
);
|
||||
|
||||
// create marshes
|
||||
log("Creating marshes...");
|
||||
for (var i = 0; i < 7; i++)
|
||||
{
|
||||
@@ -195,8 +182,6 @@ for (var i = 0; i < 7; i++)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// create reeds
|
||||
log("Creating reeds...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aReeds, 5,10, 0,4), new SimpleObject(aLillies, 5,10, 0,4)], true
|
||||
@@ -209,7 +194,6 @@ waterAreas = [];
|
||||
|
||||
RMS.SetProgress(40);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 1, 2);
|
||||
@@ -220,7 +204,6 @@ createAreas(
|
||||
scaleByMapSize(50, 100)
|
||||
);
|
||||
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
const MIN_TREES = 500;
|
||||
const MAX_TREES = 2500;
|
||||
@@ -230,7 +213,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForestD], [tForestFloor, pForestD]],
|
||||
@@ -255,7 +237,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create mud patches
|
||||
log("Creating mud patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -273,16 +254,14 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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, 1)],
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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, 1)],
|
||||
@@ -290,7 +269,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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, 1)],
|
||||
@@ -299,7 +277,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -313,7 +290,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -327,7 +303,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
@@ -338,7 +313,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create horse
|
||||
log("Creating horse...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oHorse, 1,3, 0,4)],
|
||||
@@ -351,7 +325,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create rabbit
|
||||
log("Creating rabbit...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oRabbit, 5,7, 0,2)],
|
||||
@@ -362,7 +335,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create wolf
|
||||
log("Creating wolf...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWolf, 1,3, 0,4)],
|
||||
@@ -373,7 +345,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -386,7 +357,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oBeech]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -404,7 +374,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -416,7 +385,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -428,7 +396,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -438,7 +405,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(13, 200), 50
|
||||
);
|
||||
|
||||
// Set environment
|
||||
setSkySet("cirrus");
|
||||
setWaterColor(0.753,0.635,0.345); // muddy brown
|
||||
setWaterTint(0.161,0.514,0.635); // clear blue for blueness
|
||||
|
||||
@@ -39,7 +39,6 @@ const pForestD = [tForestFloor + TERRAIN_SEPARATOR + oTree, tForestFloor];
|
||||
const pForestP1 = [tForestFloor + TERRAIN_SEPARATOR + oPalm1, tForestFloor];
|
||||
const pForestP2 = [tForestFloor + TERRAIN_SEPARATOR + oPalm2, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
|
||||
@@ -23,7 +23,6 @@ if (currentBiome() == "tropic")
|
||||
tShore = "tropic_dirt_b_plants";
|
||||
tWater = "tropic_dirt_b";
|
||||
}
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -37,7 +36,6 @@ const oStoneLarge = g_Gaia.stoneLarge;
|
||||
const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -50,16 +48,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -103,13 +97,10 @@ createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -127,7 +118,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -149,7 +139,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -168,9 +157,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create metal mine
|
||||
var mAngle = bbAngle;
|
||||
while(abs(mAngle - bbAngle) < PI/3)
|
||||
{
|
||||
mAngle = randFloat(0, TWO_PI);
|
||||
}
|
||||
|
||||
var mDist = 12;
|
||||
var mX = round(fx + mDist * cos(mAngle));
|
||||
var mZ = round(fz + mDist * sin(mAngle));
|
||||
@@ -213,16 +201,12 @@ var PZ = new Array(numPlayers+1);
|
||||
//isRiver actually tells us if two points must be joined by river
|
||||
var isRiver = new Array(numPlayers+1);
|
||||
for (var q=0; q <numPlayers+1; q++)
|
||||
{
|
||||
isRiver[q]=new Array(numPlayers+1);
|
||||
}
|
||||
|
||||
//At first nothing is joined
|
||||
for (var m = 0; m < numPlayers+1; m++){
|
||||
for (var n = 0; n < numPlayers+1; n++){
|
||||
for (let m = 0; m < numPlayers + 1; ++m)
|
||||
for (let n = 0; n < numPlayers + 1; ++n)
|
||||
isRiver[m][n] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//creating the first point in the center. all others are
|
||||
//connected to this one so all of our rivers join together
|
||||
@@ -233,6 +217,7 @@ var ix = round(fx);
|
||||
var iz = round(fz);
|
||||
PX[numPlayers]= fx;
|
||||
PZ[numPlayers]= fz;
|
||||
|
||||
var riverAngle = new Array(numPlayers);
|
||||
for (var c = 0 ; c < numPlayers ; c++)
|
||||
{
|
||||
@@ -244,13 +229,9 @@ for (var c = 0 ; c < numPlayers ; c++)
|
||||
//log (playerIDs[c], ",,," ,playerIDs[0]);
|
||||
//isRiver[c][numPlayers]=1;
|
||||
if ((c == numPlayers-1)&&(!areAllies(playerIDs[c]-1, playerIDs[0]-1)))
|
||||
{
|
||||
isRiver[c][numPlayers]=1;
|
||||
}
|
||||
else if ((c < numPlayers-1)&&(!areAllies(playerIDs[c]-1, playerIDs[c+1]-1)))
|
||||
{
|
||||
isRiver[c][numPlayers]=1;
|
||||
}
|
||||
}
|
||||
|
||||
//theta is the start value for rndRiver function. seed implies
|
||||
@@ -260,21 +241,19 @@ var theta = new Array(numPlayers);
|
||||
var seed = new Array(numPlayers);
|
||||
var shallowpoint = new Array(numPlayers);
|
||||
var shallowlength = new Array(numPlayers);
|
||||
for (var q=0; q <numPlayers+1; q++)
|
||||
for (let q = 0; q < numPlayers + 1; ++q)
|
||||
{
|
||||
theta[q]=randFloat(0, 1);
|
||||
seed[q]=randFloat(2,3);
|
||||
shallowpoint[q]=randFloat(0.2,0.7);
|
||||
shallowlength[q]=randFloat(0.12,0.21);
|
||||
}
|
||||
//create rivers
|
||||
|
||||
log ("Creating rivers...");
|
||||
//checking all the tiles
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
for (var m = 0; m < numPlayers+1; m++)
|
||||
{
|
||||
for (var n = 0; n < numPlayers+1; n++)
|
||||
{
|
||||
//checking if there is a river between those points
|
||||
@@ -359,16 +338,11 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(40);
|
||||
|
||||
// create bumps
|
||||
createBumps(avoidClasses(clWater, 2, clPlayer, 20));
|
||||
|
||||
// create hills
|
||||
if (randBool())
|
||||
createHills([tMainTerrain, tCliff, tHill], avoidClasses(clPlayer, 20, clHill, 15, clWater, 2), clHill, scaleByMapSize(3, 15));
|
||||
else
|
||||
@@ -383,7 +357,6 @@ createForests(
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
createLayeredPatches(
|
||||
[scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
|
||||
@@ -392,7 +365,6 @@ createLayeredPatches(
|
||||
avoidClasses(clWater, 3, clForest, 0, clHill, 0, clDirt, 5, clPlayer, 12)
|
||||
);
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
createPatches(
|
||||
[scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
|
||||
@@ -403,7 +375,6 @@ createPatches(
|
||||
RMS.SetProgress(55);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
|
||||
@@ -413,7 +384,6 @@ createMines(
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
createMines(
|
||||
[
|
||||
[new SimpleObject(oMetalLarge, 1,1, 0,4)]
|
||||
@@ -424,7 +394,6 @@ createMines(
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create decoration
|
||||
var planetm = 1;
|
||||
|
||||
if (currentBiome() == "tropic")
|
||||
@@ -463,7 +432,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create animals
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -477,7 +445,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20)
|
||||
);
|
||||
|
||||
// create fruits
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -489,7 +456,6 @@ createFood
|
||||
avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10)
|
||||
);
|
||||
|
||||
// create fish
|
||||
createFood
|
||||
(
|
||||
[
|
||||
@@ -503,12 +469,10 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
createStragglerTrees(types, avoidClasses(clWater, 5, clForest, 7, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6));
|
||||
|
||||
setWaterWaviness(3.0);
|
||||
setWaterType("lake");
|
||||
// Export map data
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -413,7 +413,6 @@ function setHeight(x, z, height)
|
||||
g_Map.setHeight(x, z, height);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Utility functions for classes
|
||||
*/
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
// passageMaker
|
||||
//
|
||||
// Function for creating shallow water between two given points by changing the heiight of all tiles in
|
||||
// Function for creating shallow water between two given points by changing the height of all tiles in
|
||||
// the path with height less than or equal to "maxheight" to "height"
|
||||
//
|
||||
// x1,z1: Starting point of path
|
||||
@@ -128,7 +128,6 @@ function rndRiver(f, seed)
|
||||
return rndRa;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////////
|
||||
// createStartingPlayerEntities
|
||||
//
|
||||
@@ -354,7 +353,6 @@ function paintTileClassBasedOnHeight(minheight, maxheight, mode, tileclass)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function unPaintTileClassBasedOnHeight(minheight, maxheight, mode, tileclass)
|
||||
{
|
||||
var mSize = g_Map.size;
|
||||
@@ -705,7 +703,6 @@ function createMountain(maxHeight, minRadius, maxRadius, numCircles, constraint,
|
||||
else
|
||||
circles.push([cx, cz, radius]);
|
||||
|
||||
|
||||
for (var ix = sx; ix <= lx; ++ix)
|
||||
{
|
||||
for (var iz = sz; iz <= lz; ++ iz)
|
||||
|
||||
@@ -124,7 +124,6 @@ PathPlacer.prototype.place = function(constraint)
|
||||
var pz2 = Math.round(nz2 + ndx * taperedWidth);
|
||||
segments2.push(new PointXZ(px2, pz2));
|
||||
|
||||
|
||||
}
|
||||
|
||||
var retVec = [];
|
||||
|
||||
@@ -257,7 +257,6 @@ ChainPlacer.prototype.place = function(constraint)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return failed > count * this.failFraction ? undefined : retVec;
|
||||
};
|
||||
|
||||
|
||||
@@ -60,7 +60,6 @@ RangeOp.prototype.get = function(start, end)
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// TileClass
|
||||
//
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
// ?Think of something to enable splitting walls into two walls so more complex walls can be build and roads can have branches/crossroads?
|
||||
// ?Readjust placement angle for wall elements with bending when used in linear/circular walls by their bending?
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
// WallElement class definition
|
||||
//
|
||||
@@ -442,7 +441,6 @@ function getWallLength(wall, style)
|
||||
return length;
|
||||
}
|
||||
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// Define the different wall placer functions
|
||||
/////////////////////////////////////////////
|
||||
|
||||
@@ -179,7 +179,6 @@ function createBase(player, walls = true)
|
||||
addToClass(ix - 5, iz, g_TileClasses.player);
|
||||
addToClass(ix, iz - 5, g_TileClasses.player);
|
||||
|
||||
// Create starting units
|
||||
if (walls && g_MapInfo.mapSize > 192)
|
||||
placeCivDefaultEntities(fx, fz, player.id);
|
||||
else
|
||||
|
||||
@@ -17,7 +17,6 @@ const tLush = "desert_grass_a";
|
||||
const tSLush = "desert_grass_a_sand";
|
||||
const tSDry = "desert_plants_b";
|
||||
|
||||
// gaia entities
|
||||
const oGrapeBush = "gaia/flora_bush_grapes";
|
||||
const oCamel = "gaia/fauna_camel";
|
||||
const oFish = "gaia/fauna_fish";
|
||||
@@ -33,7 +32,6 @@ const oSDatePalm = "gaia/flora_tree_cretan_date_palm_short";
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
const oFood = "gaia/special_treasure_food_bin";
|
||||
|
||||
// decorative props
|
||||
const aBush1 = "actor|props/flora/bush_desert_a.xml";
|
||||
const aBush2 = "actor|props/flora/bush_desert_dry_a.xml";
|
||||
const aBush3 = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
@@ -46,16 +44,12 @@ const aLillies = "actor|props/flora/water_lillies.xml";
|
||||
// terrain + entity (for painting)
|
||||
const pForest = [tLush + TERRAIN_SEPARATOR + oDatePalm, tLush + TERRAIN_SEPARATOR + oSDatePalm, tLush];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
var clWater = createTileClass();
|
||||
@@ -96,7 +90,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -114,7 +107,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tCityPlaza, tCity], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -174,7 +166,6 @@ RMS.SetProgress(30);
|
||||
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
// create the oases
|
||||
log("Creating oases...");
|
||||
var oRadius = scaleByMapSize(16, 60);
|
||||
placer = new ClumpPlacer(PI*oRadius*oRadius*0.185, 0.6, 0.15, 0, mapSize*(0.5 + 0.18*cos(playerAngle[i]) + scaleByMapSize(1, 4)*cos(playerAngle[i])/100), mapSize*(0.5 + 0.18*sin(playerAngle[i]) + scaleByMapSize(1, 4)*sin(playerAngle[i])/100));
|
||||
@@ -183,7 +174,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
createArea(placer, [painter, elevationPainter, paintClass(clWater)], null);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -203,7 +193,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -224,14 +213,13 @@ for (var i = 0; i < sizes.length; i++)
|
||||
RMS.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -239,14 +227,12 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
@@ -258,7 +244,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
// create shrubs
|
||||
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)],
|
||||
@@ -270,8 +255,7 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(10, 100), 50
|
||||
);
|
||||
|
||||
// create small decorative rocks on mines
|
||||
log("Creating small decorative rocks...");
|
||||
log("Creating small decorative rocks on mines...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
true
|
||||
@@ -292,7 +276,6 @@ createObjectGroupsDeprecated(
|
||||
5*scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
// create gazelles
|
||||
log("Creating gazelles...");
|
||||
group = new SimpleGroup([new SimpleObject(oGazelle, 5,7, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -300,7 +283,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
6*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create goats
|
||||
log("Creating goats...");
|
||||
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -308,7 +290,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
5*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create treasures
|
||||
log("Creating treasures...");
|
||||
group = new SimpleGroup([new SimpleObject(oFood, 1,1, 0,2)], true, clTreasure);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -322,7 +303,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create camels
|
||||
log("Creating camels...");
|
||||
group = new SimpleGroup([new SimpleObject(oCamel, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -330,7 +310,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
5*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// Set environment
|
||||
setSkySet("sunny");
|
||||
setSunColor(0.746, 0.718, 0.539);
|
||||
setWaterColor(0, 0.227, 0.843);
|
||||
@@ -339,5 +318,4 @@ setWaterWaviness(1.0);
|
||||
setWaterType("clap");
|
||||
setWaterMurkiness(0.5);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -11,7 +11,6 @@ const tCityTiles = "savanna_tile_a";
|
||||
const tShore = "savanna_riparian_bank";
|
||||
const tWater = "savanna_riparian_wet";
|
||||
|
||||
// gaia entities
|
||||
const oBaobab = "gaia/flora_tree_baobab";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
const oGazelle = "gaia/fauna_gazelle";
|
||||
@@ -25,19 +24,15 @@ const oZebra = "gaia/fauna_zebra";
|
||||
const oStoneSmall = "gaia/geology_stone_savanna_small";
|
||||
const oMetalLarge = "gaia/geology_metal_savanna_slabs";
|
||||
|
||||
// decorative props
|
||||
const aBush = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
const aRock = "actor|geology/stone_savanna_med.xml";
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -57,8 +52,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -77,7 +70,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -93,7 +85,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
addToClass(ix-5, iz, clPlayer);
|
||||
addToClass(ix, iz-5, clPlayer);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -153,7 +144,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
// create big patches
|
||||
log("Creating big patches...");
|
||||
var patches = [tGrass2, tGrass3];
|
||||
for (var i = 0; i < patches.length; i++)
|
||||
@@ -168,7 +158,6 @@ for (var i = 0; i < patches.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create small patches
|
||||
log("Creating small patches...");
|
||||
var patches = [tDirt1, tDirt2, tDirt3];
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
@@ -187,7 +176,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
}
|
||||
|
||||
// create water holes
|
||||
log("Creating water holes...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(3, 5)), floor(scaleByMapSize(20, 60)), 1);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -202,7 +190,6 @@ createAreas(
|
||||
scaleByMapSize(1, 3)
|
||||
);
|
||||
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
var playerConstraint = new AvoidTileClassConstraint(clPlayer, 30);
|
||||
@@ -210,7 +197,6 @@ var minesConstraint = new AvoidTileClassConstraint(clRock, 25);
|
||||
var waterConstraint = new AvoidTileClassConstraint(clWater, 10);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create stone mines
|
||||
for (var i = 0; i < scaleByMapSize(12,30); ++i)
|
||||
{
|
||||
var mX = randIntExclusive(0, mapSize);
|
||||
@@ -223,7 +209,6 @@ for (var i = 0; i < scaleByMapSize(12,30); ++i)
|
||||
}
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clPlayer, 20, clMetal, 10, clRock, 8, clWater, 4),
|
||||
@@ -232,7 +217,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRock, 1,3, 0,3)],
|
||||
@@ -246,7 +230,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create gazelle
|
||||
log("Creating gazelle...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGazelle, 5,7, 0,4)],
|
||||
@@ -257,7 +240,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
// create zebra
|
||||
log("Creating zebra...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oZebra, 5,7, 0,4)],
|
||||
@@ -268,7 +250,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
// create giraffe
|
||||
log("Creating giraffe...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGiraffe, 2,4, 0,4), new SimpleObject(oGiraffeInfant, 0,2, 0,4)],
|
||||
@@ -279,7 +260,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
// create elephants
|
||||
log("Creating elephants...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2,4, 0,4), new SimpleObject(oElephantInfant, 0,2, 0,4)],
|
||||
@@ -290,7 +270,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
// create lions
|
||||
log("Creating lions...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oLion, 0,1, 0,4), new SimpleObject(oLioness, 2,3, 0,4)],
|
||||
@@ -301,7 +280,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,12), 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -314,8 +292,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var num = scaleByMapSize(70, 500);
|
||||
group = new SimpleGroup(
|
||||
@@ -327,8 +303,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
num
|
||||
);
|
||||
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBush, 2,4, 0,1.8, -PI/8,PI/8)]
|
||||
|
||||
@@ -14,7 +14,6 @@ const tShoreBlend = "savanna_riparian";
|
||||
const tShore = "savanna_riparian_bank";
|
||||
const tWater = "savanna_riparian_wet";
|
||||
|
||||
// gaia entities
|
||||
const oBaobab = "gaia/flora_tree_baobab";
|
||||
const oFig = "gaia/flora_tree_fig";
|
||||
const oBerryBush = "gaia/flora_bush_berry";
|
||||
@@ -28,7 +27,6 @@ const oStoneLarge = "gaia/geology_stonemine_desert_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_savanna_small";
|
||||
const oMetalLarge = "gaia/geology_metal_savanna_slabs";
|
||||
|
||||
// decorative props
|
||||
const aGrass = "actor|props/flora/grass_savanna.xml";
|
||||
const aGrassShort = "actor|props/flora/grass_medit_field.xml";
|
||||
const aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
|
||||
@@ -40,16 +38,12 @@ const aBushSmall = "actor|props/flora/bush_dry_a.xml";
|
||||
|
||||
const pForest = [tForestFloor + TERRAIN_SEPARATOR + oBaobab, tForestFloor + TERRAIN_SEPARATOR + oBaobab, tForestFloor];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -70,8 +64,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -89,7 +81,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -111,7 +102,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -169,7 +159,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(20);
|
||||
|
||||
//create rivers
|
||||
log ("Creating rivers...");
|
||||
for (var m = 0; m < numPlayers; m++)
|
||||
{
|
||||
@@ -195,7 +184,6 @@ for (var m = 0; m < numPlayers; m++)
|
||||
createArea(placer, [painter, elevationPainter, paintClass(clWater)], avoidClasses(clPlayer, 5));
|
||||
}
|
||||
|
||||
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
if (i+1 == numPlayers)
|
||||
@@ -207,7 +195,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
round(fractionToTiles(playerZ[0])),
|
||||
6, -2, -2, 4, clShallows, undefined, -4);
|
||||
|
||||
// create animals in shallows
|
||||
log("Creating animals in shallows...");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2,3, 0,4)],
|
||||
@@ -231,7 +218,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
fractionToTiles(playerZ[i+1]),
|
||||
6, -2, -2, 4, clShallows, undefined, -4);
|
||||
|
||||
// create animals in shallows
|
||||
log("Creating animals in shallows...");
|
||||
var group = new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2,3, 0,4)],
|
||||
@@ -250,8 +236,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
paintTerrainBasedOnHeight(-6, 2, 1, tWater);
|
||||
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -262,7 +246,6 @@ createAreas(
|
||||
scaleByMapSize(100, 200)
|
||||
);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -277,7 +260,6 @@ createAreas(
|
||||
scaleByMapSize(1, 4) * numPlayers
|
||||
);
|
||||
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 160;
|
||||
var MAX_TREES = 900;
|
||||
@@ -287,13 +269,11 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tForestFloor, tGrass, pForest], [tForestFloor, pForest]]
|
||||
]; // some variation
|
||||
|
||||
|
||||
var size = numForest / (0.5 * scaleByMapSize(2,8) * numPlayers);
|
||||
var num = floor(size / types.length);
|
||||
for (var i = 0; i < types.length; ++i)
|
||||
@@ -313,7 +293,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -331,7 +310,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -347,16 +325,14 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
RMS.SetProgress(55);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -364,7 +340,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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),
|
||||
@@ -373,7 +348,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -385,8 +359,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -400,7 +372,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create wildebeest
|
||||
log("Creating wildebeest...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oWildebeest, 5,7, 0,4)],
|
||||
@@ -413,7 +384,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create gazelle
|
||||
log("Creating gazelle...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGazelle, 2,3, 0,2)],
|
||||
@@ -424,7 +394,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create elephant
|
||||
log("Creating elephant...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oElephant, 2,3, 0,2)],
|
||||
@@ -435,7 +404,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create giraffe
|
||||
log("Creating giraffe...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGiraffe, 2,3, 0,2)],
|
||||
@@ -446,7 +414,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create zebra
|
||||
log("Creating zebra...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oZebra, 2,3, 0,2)],
|
||||
@@ -457,7 +424,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
@@ -468,7 +434,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
25 * numPlayers, 60
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -481,7 +446,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oBaobab, oBaobab, oBaobab, oFig]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -498,7 +462,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
}
|
||||
|
||||
var planetm = 4;
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -510,7 +473,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -522,7 +484,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -532,7 +493,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
planetm * scaleByMapSize(13, 200), 50
|
||||
);
|
||||
|
||||
|
||||
setSkySet("sunny");
|
||||
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
@@ -543,6 +503,4 @@ setWaterMurkiness(0.87);
|
||||
setWaterWaviness(0.5);
|
||||
setWaterType("clap");
|
||||
|
||||
// Export map data
|
||||
|
||||
ExportMap();
|
||||
|
||||
@@ -5,33 +5,22 @@ log('Initializing map...');
|
||||
|
||||
InitMap();
|
||||
|
||||
|
||||
////////////////
|
||||
//
|
||||
// Initializing
|
||||
//
|
||||
////////////////
|
||||
|
||||
//sky
|
||||
setSkySet("fog");
|
||||
setFogFactor(0.35);
|
||||
setFogThickness(0.19);
|
||||
|
||||
// water
|
||||
setWaterColor(0.501961, 0.501961, 0.501961);
|
||||
setWaterTint(0.25098, 0.501961, 0.501961);
|
||||
setWaterWaviness(0.5);
|
||||
setWaterType("clap");
|
||||
setWaterMurkiness(0.75);
|
||||
|
||||
// post processing
|
||||
setPPSaturation(0.37);
|
||||
setPPContrast(0.4);
|
||||
setPPBrightness(0.4);
|
||||
setPPEffect("hdr");
|
||||
setPPBloom(0.4);
|
||||
|
||||
// Setup tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clPath = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
@@ -42,7 +31,6 @@ var clFood = createTileClass();
|
||||
var clBaseResource = createTileClass();
|
||||
var clOpen = createTileClass();
|
||||
|
||||
// Setup Templates
|
||||
var templateStone = 'gaia/geology_stone_alpine_a';
|
||||
var templateStoneMine = 'gaia/geology_stonemine_alpine_quarry';
|
||||
var templateMetal = 'actor|geology/stone_granite_med.xml';
|
||||
@@ -58,8 +46,6 @@ var aBushSmall = 'actor|props/flora/bush_medit_sm.xml';
|
||||
var aReeds = 'actor|props/flora/reeds_pond_lush_b.xml';
|
||||
var oFish = "gaia/fauna_fish";
|
||||
|
||||
|
||||
// Setup terrain
|
||||
var terrainWood = ['alpine_forrestfloor|gaia/flora_tree_oak', 'alpine_forrestfloor|gaia/flora_tree_pine'];
|
||||
|
||||
var terrainWoodBorder = ['new_alpine_grass_mossy|gaia/flora_tree_oak', 'alpine_forrestfloor|gaia/flora_tree_pine',
|
||||
@@ -109,14 +95,12 @@ var terrainHillBorder = ['temp_highlands', 'temp_highlands', 'temp_highlands', '
|
||||
var tWater = ['dirt_brown_d'];
|
||||
var tWaterBorder = ['dirt_brown_d'];
|
||||
|
||||
// Setup map
|
||||
var mapSize = getMapSize();
|
||||
var mapRadius = mapSize/2;
|
||||
var playableMapRadius = mapRadius - 5;
|
||||
var mapCenterX = mapRadius;
|
||||
var mapCenterZ = mapRadius;
|
||||
|
||||
// Setup players and bases
|
||||
var numPlayers = getNumPlayers();
|
||||
var baseRadius = 15;
|
||||
var minPlayerRadius = min(mapRadius-1.5*baseRadius, 5*mapRadius/8);
|
||||
@@ -129,14 +113,11 @@ var playerAngleStart = randFloat(0, 2*PI);
|
||||
var playerAngleAddAvrg = 2*PI / numPlayers;
|
||||
var playerAngleMaxOff = playerAngleAddAvrg/4;
|
||||
|
||||
// Setup paths
|
||||
var pathSucsessRadius = baseRadius/2;
|
||||
var pathAngleOff = PI/2;
|
||||
var pathWidth = 10; // This is not really the path's thickness in tiles but the number of tiles in the clumbs of the path
|
||||
|
||||
// Setup additional resources
|
||||
var resourceRadius = 2*mapRadius/3; // 3*mapRadius/8;
|
||||
//var resourcePerPlayer = [templateStone, templateMetalMine];
|
||||
var resourceRadius = 2/3 * mapRadius;
|
||||
|
||||
// Setup woods
|
||||
// For large maps there are memory errors with too many trees. A density of 256*192/mapArea works with 0 players.
|
||||
@@ -144,7 +125,6 @@ var resourceRadius = 2*mapRadius/3; // 3*mapRadius/8;
|
||||
var maxTreeDensity = min(256 * (192 + 8 * numPlayers) / (mapSize * mapSize), 1); // Has to be tweeked but works ok
|
||||
var bushChance = 1/3; // 1 means 50% chance in deepest wood, 0.5 means 25% chance in deepest wood
|
||||
|
||||
|
||||
////////////////
|
||||
//
|
||||
// Some general functions
|
||||
@@ -170,7 +150,6 @@ HeightPlacer.prototype.place = function (constraint) {
|
||||
return ret;
|
||||
};
|
||||
|
||||
|
||||
////////////////
|
||||
// Set height limits and water level by map size
|
||||
////////////////
|
||||
@@ -236,8 +215,6 @@ for (var i=0; i < numPlayers; i++)
|
||||
playerStartLocX[i] = x;
|
||||
playerStartLocZ[i] = z;
|
||||
|
||||
// Place starting entities
|
||||
|
||||
rectangularSmoothToHeight({"x": x,"y": z} , 20, 20, playerHeight, 0.8);
|
||||
|
||||
placeCivDefaultEntities(x, z, i+1, { 'iberWall': false });
|
||||
@@ -281,7 +258,6 @@ paintTileClassBasedOnHeight(heightRange.min, heighLimits[2], 1, clWater);
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// Place paths
|
||||
log("Placing paths...");
|
||||
|
||||
var doublePaths = true;
|
||||
@@ -365,7 +341,6 @@ for (var i = 0; i < maxI; i++)
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
//create general decoration
|
||||
log("Creating decoration...");
|
||||
createDecoration
|
||||
(
|
||||
@@ -387,7 +362,6 @@ createDecoration
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
//create fish
|
||||
log("Growing fish...");
|
||||
createFood
|
||||
(
|
||||
@@ -402,7 +376,6 @@ createFood
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create reeds
|
||||
log("Planting reeds...");
|
||||
var types = [aReeds]; // some variation
|
||||
for (var i = 0; i < types.length; ++i)
|
||||
@@ -416,7 +389,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// place trees
|
||||
log("Planting trees...");
|
||||
for (var x = 0; x < mapSize; x++)
|
||||
{
|
||||
|
||||
@@ -19,7 +19,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -33,7 +32,6 @@ const oStoneLarge = g_Gaia.stoneLarge;
|
||||
const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -46,8 +44,6 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
@@ -56,8 +52,6 @@ const mapArea = mapSize*mapSize;
|
||||
|
||||
log(mapSize);
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -93,8 +87,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -602,8 +594,6 @@ if ((mapSize == 128)||(mapSize == 192)){
|
||||
cliffRadius // blend radius
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -780,10 +770,7 @@ if (mapSize == 256){
|
||||
var sX = 0;
|
||||
var sZ = 0;
|
||||
|
||||
|
||||
|
||||
//centeral island id numPlayers
|
||||
|
||||
for (var e = 0; e <numPlayers; e++)
|
||||
{
|
||||
if (e+1<numPlayers)
|
||||
@@ -1147,10 +1134,7 @@ if (mapSize == 320){
|
||||
var sX = 0;
|
||||
var sZ = 0;
|
||||
|
||||
|
||||
|
||||
//centeral island id numPlayers
|
||||
|
||||
for (var e = 0; e <numPlayers; e++)
|
||||
{
|
||||
if (e+1<numPlayers)
|
||||
@@ -1398,10 +1382,7 @@ if (mapSize > 383){
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clLand)], null);
|
||||
|
||||
|
||||
|
||||
//centeral island id numPlayers
|
||||
|
||||
for (var e = 0; e <numPlayers; e++)
|
||||
{
|
||||
isConnected[e+2*numPlayers][e] = 1;
|
||||
@@ -1508,16 +1489,11 @@ for (var m = 0; m < numIslands; m++){
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
|
||||
|
||||
// get the x and z in tiles
|
||||
var fx = fractionToTiles(playerX[i]);
|
||||
var fz = fractionToTiles(playerZ[i]);
|
||||
@@ -1541,14 +1517,12 @@ for (var i = 0; i < numPlayers; i++)
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clPlayer)], null);
|
||||
|
||||
|
||||
// create the city patch
|
||||
var cityRadius = radius/3;
|
||||
placer = new ClumpPlacer(PI*cityRadius*cityRadius, 0.6, 0.3, 10, ix, iz);
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': 'towers' });
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -1567,9 +1541,8 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create metal mine
|
||||
var mAngle = bbAngle;
|
||||
while(abs(mAngle - bbAngle) < PI/3)
|
||||
{
|
||||
mAngle = randFloat(0, TWO_PI);
|
||||
}
|
||||
|
||||
var mDist = radius - 4;
|
||||
var mX = round(fx + mDist * cos(mAngle));
|
||||
var mZ = round(fz + mDist * sin(mAngle));
|
||||
@@ -1608,13 +1581,9 @@ RMS.SetProgress(30);
|
||||
|
||||
//Create connectors
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
for (var m = 0; m < numIslands; m++)
|
||||
{
|
||||
for (var n = 0; n < numIslands; n++)
|
||||
{
|
||||
if(isConnected[m][n] == 1)
|
||||
{
|
||||
var a = IslandZ[m]-IslandZ[n];
|
||||
@@ -1625,16 +1594,13 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
var y = iz-(b*k);
|
||||
if((dis < 5)&&(y <= Math.max(IslandZ[m],IslandZ[n]))&&(y >= Math.min(IslandZ[m],IslandZ[n])))
|
||||
{
|
||||
if (dis < 3){
|
||||
if (dis < 3)
|
||||
{
|
||||
var h = 20;
|
||||
if (dis < 2)
|
||||
{
|
||||
var t = tHill;
|
||||
}
|
||||
else
|
||||
{
|
||||
var t = tCliff;
|
||||
}
|
||||
addToClass(ix, iz, clLand);
|
||||
}
|
||||
else
|
||||
@@ -1643,6 +1609,7 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
var t = tCliff;
|
||||
addToClass(ix, iz, clLand);
|
||||
}
|
||||
|
||||
if (getHeight(ix, iz)<h)
|
||||
{
|
||||
placeTerrain(ix, iz, t);
|
||||
@@ -1650,10 +1617,6 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
if (currentBiome() == "savanna")
|
||||
@@ -1678,7 +1641,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -1705,19 +1667,16 @@ for (var i = 0; i < types.length; ++i)
|
||||
num
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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, 5)],
|
||||
5*scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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, 5)],
|
||||
@@ -1725,7 +1684,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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, 5)],
|
||||
@@ -1733,7 +1691,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
RMS.SetProgress(65);
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -1751,7 +1708,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -1766,7 +1722,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -1778,8 +1733,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -1793,7 +1746,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
|
||||
@@ -1806,7 +1758,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
|
||||
@@ -1817,7 +1768,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create fruits
|
||||
log("Creating fruits...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFruitBush, 5,7, 0,4)],
|
||||
@@ -1827,11 +1777,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clForest, 0, clPlayer, 10, clHill, 1, clFood, 20), stayClasses(clLand, 4)],
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -1851,7 +1798,6 @@ var planetm = 1;
|
||||
if (currentBiome() == "tropic")
|
||||
planetm = 8;
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -1863,7 +1809,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -1872,10 +1817,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 4)],
|
||||
planetm * scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -1889,5 +1832,4 @@ setSkySet(pickRandom(["cirrus", "cumulus", "sunny"]));
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
setSunElevation(randFloat(PI/ 5, PI / 3));
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -13,14 +13,12 @@ const tTier2Terrain = g_Terrains.tier2Terrain;
|
||||
const tTier3Terrain = g_Terrains.tier3Terrain;
|
||||
const tTier4Terrain = g_Terrains.tier4Terrain;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
const oTree4 = g_Gaia.tree4;
|
||||
const oTree5 = g_Gaia.tree5;
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aRockLarge = g_Decoratives.rockLarge;
|
||||
@@ -43,7 +41,6 @@ const triggerPointTreasures = [
|
||||
"special/trigger_point_D"
|
||||
];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
|
||||
@@ -13,7 +13,6 @@ const tDirt = ["desert_dirt_rough", "desert_dirt_rough_2"];
|
||||
const tRoad = "desert_shore_stones";;
|
||||
const tRoadWild = "desert_grass_a_stones";;
|
||||
|
||||
// gaia entities
|
||||
const oTamarix = "gaia/flora_tree_tamarix";
|
||||
const oPalm = "gaia/flora_tree_date_palm";
|
||||
const oPine = "gaia/flora_tree_aleppo_pine";
|
||||
@@ -26,7 +25,6 @@ const oStoneLarge = "gaia/geology_stonemine_desert_quarry";
|
||||
const oStoneSmall = "gaia/geology_stone_desert_small";
|
||||
const oMetalLarge = "gaia/geology_metal_desert_slabs";
|
||||
|
||||
// decorative props
|
||||
const aFlower1 = "actor|props/flora/decals_flowers_daisies.xml";
|
||||
const aWaterFlower = "actor|props/flora/water_lillies.xml";
|
||||
const aReedsA = "actor|props/flora/reeds_pond_lush_a.xml";
|
||||
@@ -40,16 +38,12 @@ const aSand = "actor|particle/blowing_sand.xml";
|
||||
const pForestP = [tForestFloor2 + TERRAIN_SEPARATOR + oPalm, tForestFloor2];
|
||||
const pForestT = [tForestFloor1 + TERRAIN_SEPARATOR + oTamarix,tForestFloor2];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -68,8 +62,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -115,7 +107,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [3]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -171,7 +162,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
|
||||
RMS.SetProgress(10);
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -182,7 +172,6 @@ createAreas(
|
||||
scaleByMapSize(300, 800)
|
||||
);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.5);
|
||||
var terrainPainter = new LayeredPainter(
|
||||
@@ -208,7 +197,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tMainDirt, tForestFloor2, pForestP], [tForestFloor2, pForestP]],
|
||||
@@ -233,7 +221,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
|
||||
RMS.SetProgress(40);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -252,7 +239,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
RMS.SetProgress(60);
|
||||
|
||||
// create big patches
|
||||
log("Creating big patches...");
|
||||
var sizes = [scaleByMapSize(6, 30), scaleByMapSize(10, 50), scaleByMapSize(16, 70)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -272,14 +258,13 @@ for (var i = 0; i < sizes.length; i++)
|
||||
RMS.SetProgress(70);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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)],
|
||||
@@ -287,14 +272,12 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRock, 1,3, 0,1)],
|
||||
@@ -306,8 +289,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
//create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushB, 1,2, 0,1), new SimpleObject(aBushA, 1,3, 0,2)],
|
||||
@@ -318,10 +299,8 @@ createObjectGroupsDeprecated(
|
||||
avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
|
||||
scaleByMapSize(50, 500), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(80);
|
||||
|
||||
// create gazelle
|
||||
log("Creating gazelle...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oGazelle, 5,7, 0,4)],
|
||||
@@ -332,7 +311,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create lions
|
||||
log("Creating lions...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oLion, 2,3, 0,2)],
|
||||
@@ -343,7 +321,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
// create camels
|
||||
log("Creating camels...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oCamel, 2,3, 0,2)],
|
||||
@@ -353,12 +330,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clForest, 0, clPlayer, 1, clHill, 1, clFood, 20, clGrass, 2),
|
||||
3 * numPlayers, 50
|
||||
);
|
||||
|
||||
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPalm, oTamarix, oPine]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -374,7 +347,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
// create inner straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oPalm, oTamarix, oPine]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -390,7 +362,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
// Set environment
|
||||
setSkySet("sunny");
|
||||
setSunElevation(PI / 8);
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
@@ -408,5 +379,4 @@ setPPContrast(0.65);
|
||||
setPPSaturation(0.42);
|
||||
setPPBloom(0.6);
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -16,7 +16,7 @@ var tShore = "desert_sand_wet";
|
||||
var tLush = "desert_grass_a";
|
||||
var tSLush = "desert_grass_a_sand";
|
||||
var tSDry = "desert_plants_b";
|
||||
// gaia entities
|
||||
|
||||
var oBerryBush = "gaia/flora_bush_berry";
|
||||
var oCamel = "gaia/fauna_camel";
|
||||
var oFish = "gaia/fauna_fish";
|
||||
@@ -34,7 +34,6 @@ var ePyramid = "other/pyramid_minor";
|
||||
var oWood = "gaia/special_treasure_wood";
|
||||
var oFood = "gaia/special_treasure_food_bin";
|
||||
|
||||
// decorative props
|
||||
var aBush1 = "actor|props/flora/bush_desert_a.xml";
|
||||
var aBush2 = "actor|props/flora/bush_desert_dry_a.xml";
|
||||
var aBush3 = "actor|props/flora/bush_medit_sm_dry.xml";
|
||||
@@ -48,24 +47,16 @@ var aLillies = "actor|props/flora/water_lillies.xml";
|
||||
var pForest = [tForestFloor + TERRAIN_SEPARATOR + oDatePalm, tForestFloor + TERRAIN_SEPARATOR + oSDatePalm, tForestFloor];
|
||||
var pForestOasis = [tGrass + TERRAIN_SEPARATOR + oDatePalm, tGrass + TERRAIN_SEPARATOR + oSDatePalm, tGrass];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var mapSize = getMapSize();
|
||||
if (mapSize < 256)
|
||||
{
|
||||
var aPlants = "actor|props/flora/grass_tropical.xml";
|
||||
}
|
||||
else
|
||||
{
|
||||
var aPlants = "actor|props/flora/grass_tropic_field_tall.xml";
|
||||
}
|
||||
var aPlants = mapSize < 256 ?
|
||||
"actor|props/flora/grass_tropical.xml" :
|
||||
"actor|props/flora/grass_tropic_field_tall.xml";
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
var clWater = createTileClass();
|
||||
@@ -84,13 +75,10 @@ var clTreasure = createTileClass();
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
playerIDs.push(i+1);
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -99,19 +87,14 @@ var iop = 0;
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
{
|
||||
iop = i - 1;
|
||||
if (!(numPlayers%2)){
|
||||
if (numPlayers % 2 == 0)
|
||||
playerPos[i] = ((iop + abs(iop%2))/2 + 1) / ((numPlayers / 2) + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (iop%2)
|
||||
{
|
||||
playerPos[i] = ((iop + abs(iop%2))/2 + 1) / (((numPlayers + 1) / 2) + 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
playerPos[i] = ((iop)/2 + 1) / ((((numPlayers - 1)) / 2) + 1);
|
||||
}
|
||||
}
|
||||
playerZ[i] = playerPos[i];
|
||||
playerX[i] = 0.30 + 0.4*(i%2);
|
||||
@@ -122,7 +105,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(15,25);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -140,7 +122,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tCityPlaza, tCity], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
@@ -159,9 +140,7 @@ for (var i = 0; i < numPlayers; i++)
|
||||
// create metal mine
|
||||
var mAngle = bbAngle;
|
||||
while(abs(mAngle - bbAngle) < PI/3)
|
||||
{
|
||||
mAngle = randFloat(0, TWO_PI);
|
||||
}
|
||||
var mDist = radius - 4;
|
||||
var mX = round(fx + mDist * cos(mAngle));
|
||||
var mZ = round(fz + mDist * sin(mAngle));
|
||||
@@ -199,6 +178,7 @@ for (var i = 0; i < numPlayers; i++)
|
||||
RMS.SetProgress(30);
|
||||
|
||||
const WATER_WIDTH = 0.1;
|
||||
|
||||
log("Creating river");
|
||||
var theta = randFloat(0, 1);
|
||||
var seed = randFloat(2,3);
|
||||
@@ -206,8 +186,8 @@ var theta2 = randFloat(0, 1);
|
||||
var seed2 = randFloat(2,3);
|
||||
var rifp = 0;
|
||||
var rifp2 = 0;
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
{
|
||||
var x = ix / (mapSize + 1.0);
|
||||
@@ -218,9 +198,8 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
|
||||
h = 32 * (z - 0.5);
|
||||
if ((x < 0.25)||(x > 0.75))
|
||||
{
|
||||
addToClass(ix, iz, clDesert);
|
||||
}
|
||||
|
||||
// add the rough shape of the water
|
||||
var km = 12/scaleByMapSize(35, 160);
|
||||
var cu = km*rndRiver(theta+z*0.5*(mapSize/64),seed)+(50/scaleByMapSize(35, 100))*rndRiver(theta2+z*0.5*(mapSize/128),seed2);
|
||||
@@ -256,14 +235,13 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
h = -3.0;
|
||||
}
|
||||
h = -3.0;
|
||||
|
||||
setHeight(ix, iz, h);
|
||||
addToClass(ix, iz, clWater);
|
||||
placeTerrain(ix, iz, tShore);
|
||||
}
|
||||
}
|
||||
|
||||
if (((xk > cu+((1.0-WATER_WIDTH)/2)-0.04)&&(xk < cu+((1.0-WATER_WIDTH)/2)))||((xk > cu+((1.0+WATER_WIDTH)/2))&&(xk < cu+((1.0+WATER_WIDTH)/2) + 0.04)))
|
||||
{
|
||||
placeTerrain(ix, iz, tLush);
|
||||
@@ -280,10 +258,8 @@ for (var ix = 0; ix < mapSize; ix++)
|
||||
addToClass(ix, iz, clShore);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RMS.SetProgress(40);
|
||||
// create bumps
|
||||
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -294,7 +270,6 @@ createAreas(
|
||||
scaleByMapSize(100, 200)
|
||||
);
|
||||
|
||||
// create ponds
|
||||
log("Creating ponds...");
|
||||
var numLakes = round(scaleByMapSize(1,4) * numPlayers / 2);
|
||||
placer = new ClumpPlacer(scaleByMapSize(100,250), 0.8, 0.1, 10);
|
||||
@@ -343,7 +318,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var num = scaleByMapSize(10,30);
|
||||
placer = new ClumpPlacer(numForest / num, 0.15, 0.1, 0.5);
|
||||
@@ -355,8 +329,6 @@ createAreas(placer, [painter, paintClass(clForest)],
|
||||
|
||||
RMS.SetProgress(50);
|
||||
|
||||
// create grass patches
|
||||
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -373,10 +345,8 @@ for (var i = 0; i < sizes.length; i++)
|
||||
scaleByMapSize(15, 45)
|
||||
);
|
||||
}
|
||||
|
||||
RMS.SetProgress(55);
|
||||
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -394,19 +364,16 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
RMS.SetProgress(60);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -414,7 +381,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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),
|
||||
@@ -422,14 +388,13 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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)],
|
||||
@@ -437,7 +402,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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)],
|
||||
@@ -446,7 +410,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aDecorativeRock, 1,3, 0,1)],
|
||||
@@ -458,8 +421,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create shrubs
|
||||
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)],
|
||||
@@ -470,10 +431,8 @@ createObjectGroupsDeprecated(
|
||||
avoidClasses(clWater, 1, clPlayer, 0, clPond, 1),
|
||||
scaleByMapSize(20, 180), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create gazelles
|
||||
log("Creating gazelles...");
|
||||
group = new SimpleGroup([new SimpleObject(oGazelle, 5,7, 0,4)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -481,7 +440,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create goats
|
||||
log("Creating goats...");
|
||||
group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -489,7 +447,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create treasures
|
||||
log("Creating treasures...");
|
||||
group = new SimpleGroup([new SimpleObject(oFood, 1,1, 0,2)], true, clTreasure);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -503,7 +460,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
3*scaleByMapSize(5,20), 50
|
||||
);
|
||||
|
||||
// create camels
|
||||
log("Creating camels...");
|
||||
group = new SimpleGroup([new SimpleObject(oCamel, 2,4, 0,2)], true, clFood);
|
||||
createObjectGroupsDeprecated(group, 0,
|
||||
@@ -513,7 +469,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm]; // some variation
|
||||
var num = floor(0.5 * numStragglers / types.length);
|
||||
@@ -537,7 +492,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
// create pond trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oDatePalm, oSDatePalm]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -550,7 +504,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
);
|
||||
}
|
||||
|
||||
//create eyecandy
|
||||
log("Creating obelisks");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(eObelisk, 1,1, 0,1)],
|
||||
@@ -573,7 +526,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(2, 6), 50
|
||||
);
|
||||
|
||||
// Set environment
|
||||
setSkySet("sunny");
|
||||
setSunColor(0.711, 0.746, 0.574);
|
||||
setWaterColor(0.541,0.506,0.416);
|
||||
@@ -582,5 +534,4 @@ setWaterMurkiness(1);
|
||||
setWaterWaviness(3.0);
|
||||
setWaterType("lake");
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -21,7 +21,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -36,7 +35,6 @@ const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -49,16 +47,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -99,8 +93,6 @@ if (md == 1) //archipelago and island
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -142,7 +134,6 @@ if (md == 1) //archipelago and island
|
||||
}
|
||||
if (mdd1 == 1) //archipelago
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(floor(hillSize*randFloat(0.8,1.2)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -157,7 +148,6 @@ if (md == 1) //archipelago and island
|
||||
scaleByMapSize(2, 5)*randIntInclusive(8,14)
|
||||
);
|
||||
|
||||
// create shore jaggedness
|
||||
log("Creating shore jaggedness...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(15, 80), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -174,7 +164,6 @@ if (md == 1) //archipelago and island
|
||||
}
|
||||
else if (mdd1 == 2) //islands
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(floor(hillSize*randFloat(0.6,1.4)), 0.80, 0.1, randFloat(0.0, 0.2));
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -189,7 +178,6 @@ if (md == 1) //archipelago and island
|
||||
scaleByMapSize(6, 10)*randIntInclusive(8,14)
|
||||
);
|
||||
|
||||
// create small islands
|
||||
log("Creating small islands...");
|
||||
placer = new ClumpPlacer(floor(hillSize*randFloat(0.3,0.7)), 0.80, 0.1, 0.07);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -206,7 +194,6 @@ if (md == 1) //archipelago and island
|
||||
}
|
||||
else if (mdd1 == 3) // tight islands
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(floor(hillSize*randFloat(0.8,1.2)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -235,8 +222,6 @@ else if (md == 2) //continent
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -308,7 +293,6 @@ else if (md == 2) //continent
|
||||
createArea(placer, [paintClass(clPeninsulaSteam)], null);
|
||||
}
|
||||
|
||||
// create shore jaggedness
|
||||
log("Creating shore jaggedness...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -323,7 +307,6 @@ else if (md == 2) //continent
|
||||
scaleByMapSize(7, 130) * 2, 150
|
||||
);
|
||||
|
||||
// create outward shore jaggedness
|
||||
log("Creating shore jaggedness...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -349,8 +332,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -405,7 +386,6 @@ playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var WATER_WIDTH = randFloat(0.22,0.3)+scaleByMapSize(1,4)/20;
|
||||
log("Creating sea");
|
||||
var theta = randFloat(0, 1);
|
||||
@@ -534,7 +514,6 @@ playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
var mdd2 = randIntInclusive(1,7);
|
||||
if (mdd2 == 1)
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23))*randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23)), 0.80, 0.1, randFloat(0.0, 0.2));
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -551,7 +530,6 @@ playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
}
|
||||
else if (mdd2 == 2)
|
||||
{
|
||||
// create extentions
|
||||
log("Creating extentions...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45))*randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -589,8 +567,6 @@ else if (md == 4) //central river
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -646,7 +622,6 @@ else if (md == 4) //central river
|
||||
}
|
||||
}
|
||||
|
||||
// create the main river
|
||||
log("Creating the main river");
|
||||
|
||||
if (mdd1 == 2)
|
||||
@@ -686,7 +661,6 @@ else if (md == 4) //central river
|
||||
var mdd2 = randIntInclusive(1,2);
|
||||
if (mdd2 == 1)
|
||||
{
|
||||
// create the shallows of the main river
|
||||
log("Creating the shallows of the main river");
|
||||
|
||||
for (var i = 0; i <= randIntInclusive(1, scaleByMapSize(4,8)); i++)
|
||||
@@ -713,7 +687,6 @@ else if (md == 4) //central river
|
||||
createArea(placer, paintClass(clPlayer), null);
|
||||
}
|
||||
|
||||
// create tributaries
|
||||
log("Creating tributaries");
|
||||
|
||||
for (var i = 0; i <= randIntInclusive(8, (scaleByMapSize(12,20))); i++)
|
||||
@@ -740,7 +713,6 @@ else if (md == 4) //central river
|
||||
else
|
||||
var placer = new PathPlacer(floor(point[0]), floor(point[1]), floor(fractionToTiles(0.5 + 0.49*sin(tang))), floor(fractionToTiles(0.5 + 0.49*cos(tang))), scaleByMapSize(10,20), 0.4, 3*(scaleByMapSize(1,4)), 0.1, 0.05);
|
||||
|
||||
|
||||
var terrainPainter = new LayeredPainter(
|
||||
[tShore, tWater, tWater], // terrains
|
||||
[1, 3] // widths
|
||||
@@ -778,8 +750,6 @@ else if (md == 5) //rivers and lake
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -802,8 +772,6 @@ else if (md == 5) //rivers and lake
|
||||
addToClass(ix, iz-5, clPlayer);
|
||||
}
|
||||
|
||||
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
@@ -835,7 +803,6 @@ else if (md == 5) //rivers and lake
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
|
||||
|
||||
// create shore jaggedness
|
||||
log("Creating shore jaggedness...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -866,7 +833,6 @@ else if (md == 5) //rivers and lake
|
||||
|
||||
if (randBool()) // rivers
|
||||
{
|
||||
//create rivers
|
||||
log ("Creating rivers...");
|
||||
for (var m = 0; m < numPlayers; m++)
|
||||
{
|
||||
@@ -946,8 +912,6 @@ else if (md == 6) //edge seas
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerPos = new Array(numPlayers);
|
||||
@@ -1114,7 +1078,6 @@ else if (md == 6) //edge seas
|
||||
}
|
||||
}
|
||||
|
||||
// create shore jaggedness
|
||||
log("Creating shore jaggedness...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1145,7 +1108,6 @@ else if (md == 6) //edge seas
|
||||
var mdd3 = randIntInclusive(1,3);
|
||||
if (mdd3 == 1)
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23))*randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23)), 0.80, 0.1, randFloat(0.0, 0.2));
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1162,7 +1124,6 @@ else if (md == 6) //edge seas
|
||||
}
|
||||
else if (mdd3 == 2)
|
||||
{
|
||||
// create extentions
|
||||
log("Creating extentions...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45))*randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1202,8 +1163,6 @@ else if (md == 7) //gulf
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1298,8 +1257,6 @@ else if (md == 8) //lakes
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1334,7 +1291,6 @@ else if (md == 8) //lakes
|
||||
createArea(placer, paintClass(clPlayer), null);
|
||||
}
|
||||
|
||||
// create lakes
|
||||
log("Creating lakes...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(160, 700), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1373,8 +1329,6 @@ else if (md == 9) //passes
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1397,7 +1351,6 @@ else if (md == 9) //passes
|
||||
}
|
||||
}
|
||||
|
||||
//create ranges
|
||||
log ("Creating ranges...");
|
||||
for (var m = 0; m < numPlayers; m++)
|
||||
{
|
||||
@@ -1476,8 +1429,6 @@ else if (md == 10) //lowlands
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1500,7 +1451,6 @@ else if (md == 10) //lowlands
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var radius = scaleByMapSize(18,32);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -1600,8 +1550,6 @@ else //mainland
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1641,7 +1589,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(17,29);
|
||||
var shoreRadius = 4;
|
||||
var elevation = 3;
|
||||
@@ -1653,7 +1600,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var ix = round(fx);
|
||||
var iz = round(fz);
|
||||
|
||||
// create starting units
|
||||
if (iberianTowers)
|
||||
placeCivDefaultEntities(fx, fz, id, { 'iberWall': 'towers' });
|
||||
else
|
||||
@@ -1738,7 +1684,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
createArea(placer, [painter, paintClass(clPlayer)], null);
|
||||
}
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -1749,7 +1694,6 @@ createAreas(
|
||||
randIntInclusive(0,scaleByMapSize(200, 400))
|
||||
);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1784,11 +1728,11 @@ else
|
||||
var MAX_TREES = floor(3000*multiplier);
|
||||
var P_FOREST = randFloat(0.5,0.8);
|
||||
}
|
||||
|
||||
var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -1817,7 +1761,7 @@ for (var i = 0; i < types.length; ++i)
|
||||
}
|
||||
|
||||
RMS.SetProgress(50);
|
||||
// create dirt patches
|
||||
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
var numb = 1;
|
||||
@@ -1838,7 +1782,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -1854,16 +1797,14 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
RMS.SetProgress(55);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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), stayClasses(clLand, 4)],
|
||||
randIntInclusive(scaleByMapSize(2,9),scaleByMapSize(9,40)), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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), stayClasses(clLand, 4)],
|
||||
@@ -1871,7 +1812,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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), stayClasses(clLand, 4)],
|
||||
@@ -1880,7 +1820,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -1892,8 +1831,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -1904,10 +1841,8 @@ createObjectGroupsDeprecated(
|
||||
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 4)],
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
|
||||
@@ -1918,7 +1853,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(numPlayers+3, 5*numPlayers+4), 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFruitBush, 5,7, 0,4)],
|
||||
@@ -1931,7 +1865,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
|
||||
@@ -1942,7 +1875,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(numPlayers+3, 5*numPlayers+4), 50
|
||||
);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
@@ -1955,8 +1887,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -1976,7 +1906,6 @@ var planetm = 1;
|
||||
if (currentBiome() == "tropic")
|
||||
planetm = 8;
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -1988,7 +1917,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -1997,10 +1925,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 4)],
|
||||
planetm * scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create shallow flora
|
||||
log("Creating shallow flora...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aLillies, 1,2, 0,2), new SimpleObject(aReeds, 2,4, 0,2)]
|
||||
@@ -2010,7 +1936,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
60 * scaleByMapSize(13, 200), 80
|
||||
);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -2024,5 +1949,4 @@ setSkySet(pickRandom(["cirrus", "cumulus", "sunny", "sunny 1", "mountainous", "s
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
setSunElevation(randFloat(PI/ 5, PI / 3));
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -21,7 +21,6 @@ const tShoreBlend = g_Terrains.shoreBlend;
|
||||
const tShore = g_Terrains.shore;
|
||||
const tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
const oTree1 = g_Gaia.tree1;
|
||||
const oTree2 = g_Gaia.tree2;
|
||||
const oTree3 = g_Gaia.tree3;
|
||||
@@ -36,7 +35,6 @@ const oStoneSmall = g_Gaia.stoneSmall;
|
||||
const oMetalLarge = g_Gaia.metalLarge;
|
||||
const oWood = "gaia/special_treasure_wood";
|
||||
|
||||
// decorative props
|
||||
const aGrass = g_Decoratives.grass;
|
||||
const aGrassShort = g_Decoratives.grassShort;
|
||||
const aReeds = g_Decoratives.reeds;
|
||||
@@ -49,16 +47,12 @@ const aBushSmall = g_Decoratives.bushSmall;
|
||||
const pForest1 = [tForestFloor2 + TERRAIN_SEPARATOR + oTree1, tForestFloor2 + TERRAIN_SEPARATOR + oTree2, tForestFloor2];
|
||||
const pForest2 = [tForestFloor1 + TERRAIN_SEPARATOR + oTree4, tForestFloor1 + TERRAIN_SEPARATOR + oTree5, tForestFloor1];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
const numPlayers = getNumPlayers();
|
||||
const mapSize = getMapSize();
|
||||
const mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -87,7 +81,6 @@ var needsAdditionalWood = false;
|
||||
//*****************************************************************************************************************************
|
||||
if (md == 2) //continent
|
||||
{
|
||||
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
@@ -97,7 +90,6 @@ if (md == 2) //continent
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -189,7 +181,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -244,7 +235,6 @@ playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var WATER_WIDTH = randFloat(0.22,0.3)+scaleByMapSize(1,4)/20;
|
||||
log("Creating sea");
|
||||
var theta = randFloat(0, 1);
|
||||
@@ -348,7 +338,6 @@ playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// linked
|
||||
if (mdd1 == 1) //vertical
|
||||
{
|
||||
@@ -372,7 +361,6 @@ playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
var mdd2 = randIntInclusive(1,7);
|
||||
if (mdd2 == 1)
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ChainPlacer(floor(scaleByMapSize(4, 7)), floor(scaleByMapSize(7, 10)), floor(scaleByMapSize(16, 40)), 0.07);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -389,7 +377,6 @@ playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
}
|
||||
else if (mdd2 == 2)
|
||||
{
|
||||
// create extentions
|
||||
log("Creating extentions...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45))*randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -428,7 +415,6 @@ else if (md == 4) //central river
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -484,7 +470,6 @@ else if (md == 4) //central river
|
||||
}
|
||||
}
|
||||
|
||||
// create the main river
|
||||
log("Creating the main river");
|
||||
|
||||
if (mdd1 == 2)
|
||||
@@ -521,7 +506,6 @@ else if (md == 4) //central river
|
||||
var elevationPainter = new SmoothElevationPainter(ELEVATION_SET, -4, 2);
|
||||
createArea(placer, [painter, elevationPainter], avoidClasses(clPlayer, 8));
|
||||
|
||||
// create the shallows of the main river
|
||||
log("Creating the shallows of the main river");
|
||||
|
||||
for (var i = 0; i <= randIntInclusive(1, scaleByMapSize(4,8)); i++)
|
||||
@@ -547,7 +531,6 @@ else if (md == 4) //central river
|
||||
createArea(placer, paintClass(clPlayer), null);
|
||||
}
|
||||
|
||||
// create tributaries
|
||||
log("Creating tributaries");
|
||||
|
||||
for (var i = 0; i <= randIntInclusive(8, (scaleByMapSize(12,20))); i++)
|
||||
@@ -574,7 +557,6 @@ else if (md == 4) //central river
|
||||
else
|
||||
var placer = new PathPlacer(floor(point[0]), floor(point[1]), floor(fractionToTiles(0.5 + 0.49*sin(tang))), floor(fractionToTiles(0.5 + 0.49*cos(tang))), scaleByMapSize(10,20), 0.4, 3*(scaleByMapSize(1,4)), 0.1, 0.05);
|
||||
|
||||
|
||||
var terrainPainter = new LayeredPainter(
|
||||
[tShore, tWater, tWater], // terrains
|
||||
[1, 3] // widths
|
||||
@@ -612,8 +594,6 @@ else if (md == 5) //rivers and lake
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -636,8 +616,6 @@ else if (md == 5) //rivers and lake
|
||||
addToClass(ix, iz-5, clPlayer);
|
||||
}
|
||||
|
||||
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
@@ -669,9 +647,7 @@ else if (md == 5) //rivers and lake
|
||||
);
|
||||
createArea(placer, [terrainPainter, elevationPainter, paintClass(clWater)], null);
|
||||
|
||||
// create shore jaggedness
|
||||
log("Creating shore jaggedness...");
|
||||
|
||||
placer = new ChainPlacer(2, floor(scaleByMapSize(4, 6)), 3, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
[tCliff, tHill], // terrains
|
||||
@@ -726,7 +702,6 @@ else if (md == 6) //edge seas
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerPos = new Array(numPlayers);
|
||||
@@ -863,7 +838,6 @@ else if (md == 6) //edge seas
|
||||
}
|
||||
}
|
||||
|
||||
// create shore jaggedness
|
||||
log("Creating shore jaggedness...");
|
||||
placer = new ChainPlacer(2, floor(scaleByMapSize(4, 6)), 3, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -894,7 +868,6 @@ else if (md == 6) //edge seas
|
||||
var mdd3 = randIntInclusive(1,5);
|
||||
if (mdd3 == 1)
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ChainPlacer(floor(scaleByMapSize(4, 7)), floor(scaleByMapSize(7, 10)), floor(scaleByMapSize(16, 40)), 0.07);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -911,7 +884,6 @@ else if (md == 6) //edge seas
|
||||
}
|
||||
else if (mdd3 == 2)
|
||||
{
|
||||
// create extentions
|
||||
log("Creating extentions...");
|
||||
placer = new ChainPlacer(floor(scaleByMapSize(4, 7)), floor(scaleByMapSize(7, 10)), floor(scaleByMapSize(16, 40)), 0.07);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -930,7 +902,6 @@ else if (md == 6) //edge seas
|
||||
//********************************************************************************************************
|
||||
else if (md == 7) //gulf
|
||||
{
|
||||
|
||||
for (var ix = 0; ix < mapSize; ix++)
|
||||
{
|
||||
for (var iz = 0; iz < mapSize; iz++)
|
||||
@@ -952,7 +923,6 @@ else if (md == 7) //gulf
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1038,7 +1008,6 @@ else if (md == 7) //gulf
|
||||
//********************************************************************************************************
|
||||
else if (md == 8) //lakes
|
||||
{
|
||||
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
@@ -1048,7 +1017,6 @@ else if (md == 8) //lakes
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1095,9 +1063,7 @@ else if (md == 8) //lakes
|
||||
var chosenPoint;
|
||||
var lakeAreaLen;
|
||||
|
||||
// create lakes
|
||||
log("Creating lakes...");
|
||||
|
||||
var numLakes = scaleByMapSize(5, 16);
|
||||
for (var i = 0; i < numLakes; ++i)
|
||||
{
|
||||
@@ -1145,8 +1111,6 @@ else if (md == 9) //passes
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1169,7 +1133,6 @@ else if (md == 9) //passes
|
||||
}
|
||||
}
|
||||
|
||||
//create ranges
|
||||
log ("Creating ranges...");
|
||||
for (var m = 0; m < numPlayers; m++)
|
||||
{
|
||||
@@ -1248,8 +1211,6 @@ else if (md == 10) //lowlands
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1272,7 +1233,6 @@ else if (md == 10) //lowlands
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var radius = scaleByMapSize(18,32);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -1372,8 +1332,6 @@ else //mainland
|
||||
}
|
||||
playerIDs = sortPlayers(playerIDs);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var playerAngle = new Array(numPlayers);
|
||||
@@ -1413,7 +1371,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var id = playerIDs[i];
|
||||
log("Creating base for player " + id + "...");
|
||||
|
||||
// some constants
|
||||
var radius = scaleByMapSize(17,29);
|
||||
var shoreRadius = 4;
|
||||
var elevation = 3;
|
||||
@@ -1425,9 +1382,7 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var ix = round(fx);
|
||||
var iz = round(fz);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
placeDefaultChicken(fx, fz, clBaseResource);
|
||||
|
||||
// create berry bushes
|
||||
@@ -1507,7 +1462,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
createArea(placer, [painter, paintClass(clPlayer)], null);
|
||||
}
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -1518,7 +1472,6 @@ createAreas(
|
||||
randIntInclusive(0,scaleByMapSize(200, 400))
|
||||
);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ChainPlacer(1, floor(scaleByMapSize(4, 6)), floor(scaleByMapSize(16, 40)), 0.5);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1557,7 +1510,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tForestFloor2, tMainTerrain, pForest1], [tForestFloor2, pForest1]],
|
||||
@@ -1585,7 +1537,6 @@ if (currentBiome() != "savanna")
|
||||
}
|
||||
|
||||
RMS.SetProgress(50);
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)];
|
||||
var numb = 1;
|
||||
@@ -1606,7 +1557,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -1622,16 +1572,14 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
RMS.SetProgress(55);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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), stayClasses(clLand, 4)],
|
||||
randIntInclusive(scaleByMapSize(2,9),scaleByMapSize(9,40)), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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), stayClasses(clLand, 4)],
|
||||
@@ -1639,7 +1587,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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), stayClasses(clLand, 4)],
|
||||
@@ -1648,7 +1595,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -1660,8 +1606,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -1672,10 +1616,8 @@ createObjectGroupsDeprecated(
|
||||
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0), stayClasses(clLand, 4)],
|
||||
scaleByMapSize(8, 131), 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oMainHuntableAnimal, 5,7, 0,4)],
|
||||
@@ -1686,7 +1628,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(numPlayers+3, 5*numPlayers+4), 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFruitBush, 5,7, 0,4)],
|
||||
@@ -1696,10 +1637,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 20), stayClasses(clLand, 4)],
|
||||
randIntInclusive(1, 4) * numPlayers + 2, 50
|
||||
);
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSecondaryHuntableAnimal, 2,3, 0,2)],
|
||||
@@ -1710,7 +1649,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(numPlayers+3, 5*numPlayers+4), 50
|
||||
);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
@@ -1720,11 +1658,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clLand, 5, clForest, 0, clPlayer, 0, clHill, 0, clFood, 20),
|
||||
randIntInclusive(15, 40) * numPlayers, 60
|
||||
);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oTree1, oTree2, oTree4, oTree3]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -1744,7 +1679,6 @@ var planetm = 1;
|
||||
if (currentBiome() == "tropic")
|
||||
planetm = 8;
|
||||
|
||||
//create small grass tufts
|
||||
log("Creating small grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrassShort, 1,2, 0,1, -PI/8,PI/8)]
|
||||
@@ -1753,10 +1687,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 2, clHill, 2, clPlayer, 2, clDirt, 0), stayClasses(clLand, 4)],
|
||||
planetm * scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -1765,10 +1697,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
[avoidClasses(clWater, 3, clHill, 2, clPlayer, 2, clDirt, 1, clForest, 0), stayClasses(clLand, 4)],
|
||||
planetm * scaleByMapSize(13, 200)
|
||||
);
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create shallow flora
|
||||
log("Creating shallow flora...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aLillies, 1,2, 0,2), new SimpleObject(aReeds, 2,4, 0,2)]
|
||||
@@ -1778,7 +1708,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
60 * scaleByMapSize(13, 200), 80
|
||||
);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -1792,5 +1721,4 @@ setSkySet(pickRandom(["cirrus", "cumulus", "sunny", "sunny 1", "mountainous", "s
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
setSunElevation(randFloat(PI/ 5, PI / 3));
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -21,7 +21,6 @@ var tShoreBlend = g_Terrains.shoreBlend;
|
||||
var tShore = g_Terrains.shore;
|
||||
var tWater = g_Terrains.water;
|
||||
|
||||
// gaia entities
|
||||
var oOak = g_Gaia.tree1;
|
||||
var oOakLarge = g_Gaia.tree2;
|
||||
var oApple = g_Gaia.tree3;
|
||||
@@ -36,7 +35,6 @@ var oStoneSmall = g_Gaia.stoneSmall;
|
||||
var oMetalLarge = g_Gaia.metalLarge;
|
||||
var oWood = "gaia/special_treasure_wood";
|
||||
|
||||
// decorative props
|
||||
var aGrass = g_Decoratives.grass;
|
||||
var aGrassShort = g_Decoratives.grassShort;
|
||||
var aReeds = g_Decoratives.reeds;
|
||||
@@ -49,16 +47,12 @@ var aBushSmall = g_Decoratives.bushSmall;
|
||||
var pForestD = [tGrassDForest + TERRAIN_SEPARATOR + oOak, tGrassDForest + TERRAIN_SEPARATOR + oOakLarge, tGrassDForest];
|
||||
var pForestP = [tGrassPForest + TERRAIN_SEPARATOR + oPine, tGrassPForest + TERRAIN_SEPARATOR + oAleppoPine, tGrassPForest];
|
||||
|
||||
log("Initializing map...");
|
||||
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -105,7 +99,6 @@ if (md == 1) //archipelago and island
|
||||
|
||||
if (mdd1 == 1) //archipelago
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(floor(hillSize*randFloat(0.8,1.2)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -122,7 +115,6 @@ if (md == 1) //archipelago and island
|
||||
}
|
||||
else if (mdd1 == 2) //islands
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(floor(hillSize*randFloat(0.6,1.4)), 0.80, 0.1, randFloat(0.0, 0.2));
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -139,7 +131,6 @@ if (md == 1) //archipelago and island
|
||||
}
|
||||
else if (mdd1 == 3) // tight islands
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(floor(hillSize*randFloat(0.8,1.2)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -210,7 +201,6 @@ else if (md == 2) //continent
|
||||
var mdd1 = randIntInclusive(1,3);
|
||||
if (mdd1 == 1)
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23))*randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23)), 0.80, 0.1, randFloat(0.0, 0.2));
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -227,7 +217,6 @@ else if (md == 2) //continent
|
||||
}
|
||||
else if (mdd1 == 2)
|
||||
{
|
||||
// create extentions
|
||||
log("Creating extentions...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45))*randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -381,7 +370,6 @@ else if (md == 3) //central sea
|
||||
var mdd2 = randIntInclusive(1,3);
|
||||
if (mdd2 == 1)
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23))*randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23)), 0.80, 0.1, randFloat(0.0, 0.2));
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -398,7 +386,6 @@ else if (md == 3) //central sea
|
||||
}
|
||||
else if (mdd2 == 2)
|
||||
{
|
||||
// create extentions
|
||||
log("Creating extentions...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45))*randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -436,7 +423,6 @@ else if (md == 4) //central river
|
||||
}
|
||||
playerIDs = primeSortPlayers(sortPlayers(playerIDs));
|
||||
|
||||
// create the main river
|
||||
log("Creating the main river");
|
||||
|
||||
if (mdd1 == 2)
|
||||
@@ -476,7 +462,6 @@ else if (md == 4) //central river
|
||||
var mdd2 = randIntInclusive(1,2);
|
||||
if (mdd2 == 1)
|
||||
{
|
||||
// create the shallows of the main river
|
||||
log("Creating the shallows of the main river");
|
||||
|
||||
for (var i = 0; i <= randIntInclusive(1, scaleByMapSize(4,8)); i++)
|
||||
@@ -491,8 +476,6 @@ else if (md == 4) //central river
|
||||
|
||||
if (randBool())
|
||||
{
|
||||
|
||||
// create tributaries
|
||||
log("Creating tributaries");
|
||||
|
||||
for (var i = 0; i <= randIntInclusive(8, (scaleByMapSize(12,20))); i++)
|
||||
@@ -519,7 +502,6 @@ else if (md == 4) //central river
|
||||
else
|
||||
var placer = new PathPlacer(floor(point[0]), floor(point[1]), floor(fractionToTiles(0.5 + 0.49*sin(tang))), floor(fractionToTiles(0.5 + 0.49*cos(tang))), scaleByMapSize(10,20), 0.4, 3*(scaleByMapSize(1,4)), 0.1, 0.05);
|
||||
|
||||
|
||||
var terrainPainter = new LayeredPainter(
|
||||
[tShore, tWater, tWater], // terrains
|
||||
[1, 3] // widths
|
||||
@@ -593,7 +575,6 @@ else if (md == 5) //rivers and lake
|
||||
|
||||
if (mdd1 > 1) //rivers
|
||||
{
|
||||
//create rivers
|
||||
log ("Creating rivers...");
|
||||
for (var m = 0; m < numPlayers; m++)
|
||||
{
|
||||
@@ -843,7 +824,6 @@ else if (md == 6) //edge seas
|
||||
var mdd3 = randIntInclusive(1,3);
|
||||
if (mdd3 == 1)
|
||||
{
|
||||
// create islands
|
||||
log("Creating islands...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23))*randIntInclusive(scaleByMapSize(8,15),scaleByMapSize(15,23)), 0.80, 0.1, randFloat(0.0, 0.2));
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -860,7 +840,6 @@ else if (md == 6) //edge seas
|
||||
}
|
||||
else if (mdd3 == 2)
|
||||
{
|
||||
// create extentions
|
||||
log("Creating extentions...");
|
||||
placer = new ClumpPlacer(randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45))*randIntInclusive(scaleByMapSize(13,24),scaleByMapSize(24,45)), 0.80, 0.1, 10);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -980,8 +959,6 @@ else if (md == 8) //lakes
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// create lakes
|
||||
log("Creating lakes...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(160, 700), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1011,7 +988,6 @@ else if (md == 8) //lakes
|
||||
//********************************************************************************************************
|
||||
else if (md == 9) //passes
|
||||
{
|
||||
|
||||
// randomize player order
|
||||
var playerIDs = [];
|
||||
for (var i = 0; i < numPlayers; i++)
|
||||
@@ -1119,7 +1095,6 @@ else if (md == 10) //lowlands
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var radius = scaleByMapSize(18,32);
|
||||
var cliffRadius = 2;
|
||||
var elevation = 20;
|
||||
@@ -1241,8 +1216,6 @@ paintTileClassBasedOnHeight(-6, 0, 1, clWater);
|
||||
paintTileClassBasedOnHeight(0, 3.12, 1, clLand);
|
||||
paintTileClassBasedOnHeight(3.12, 40, 1, clHill);
|
||||
|
||||
// place players
|
||||
|
||||
var playerX = new Array(numPlayers);
|
||||
var playerZ = new Array(numPlayers);
|
||||
var distmin = scaleByMapSize(60,240);
|
||||
@@ -1374,7 +1347,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
createArea(placer, paintClass(clPlayer), null);
|
||||
}
|
||||
|
||||
// create bumps
|
||||
log("Creating bumps...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1);
|
||||
var painter = new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2);
|
||||
@@ -1385,7 +1357,6 @@ createAreas(
|
||||
randIntInclusive(0,scaleByMapSize(200, 400))
|
||||
);
|
||||
|
||||
// create hills
|
||||
log("Creating hills...");
|
||||
placer = new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1);
|
||||
terrainPainter = new LayeredPainter(
|
||||
@@ -1424,7 +1395,6 @@ var totalTrees = scaleByMapSize(MIN_TREES, MAX_TREES);
|
||||
var numForest = totalTrees * P_FOREST;
|
||||
var numStragglers = totalTrees * (1.0 - P_FOREST);
|
||||
|
||||
// create forests
|
||||
log("Creating forests...");
|
||||
var types = [
|
||||
[[tGrassDForest, tGrass, pForestD], [tGrassDForest, pForestD]],
|
||||
@@ -1456,7 +1426,6 @@ for (var i = 0; i < types.length; ++i)
|
||||
}
|
||||
|
||||
RMS.SetProgress(50);
|
||||
// create dirt patches
|
||||
log("Creating dirt patches...");
|
||||
var sizes = [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)];
|
||||
var numb = 1;
|
||||
@@ -1477,7 +1446,6 @@ for (var i = 0; i < sizes.length; i++)
|
||||
);
|
||||
}
|
||||
|
||||
// create grass patches
|
||||
log("Creating grass patches...");
|
||||
var sizes = [scaleByMapSize(2, 32), scaleByMapSize(3, 48), scaleByMapSize(5, 80)];
|
||||
for (var i = 0; i < sizes.length; i++)
|
||||
@@ -1493,16 +1461,14 @@ for (var i = 0; i < sizes.length; i++)
|
||||
}
|
||||
RMS.SetProgress(55);
|
||||
|
||||
|
||||
log("Creating stone mines...");
|
||||
// create large stone quarries
|
||||
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, 3)],
|
||||
randIntInclusive(scaleByMapSize(2,9),scaleByMapSize(9,40)), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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, 3)],
|
||||
@@ -1510,16 +1476,13 @@ createObjectGroupsDeprecated(group, 0,
|
||||
);
|
||||
|
||||
log("Creating metal mines...");
|
||||
// create large metal quarries
|
||||
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, 3)],
|
||||
randIntInclusive(scaleByMapSize(2,9),scaleByMapSize(9,40)), 100
|
||||
);
|
||||
|
||||
RMS.SetProgress(65);
|
||||
|
||||
// create small decorative rocks
|
||||
log("Creating small decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockMedium, 1,3, 0,1)],
|
||||
@@ -1531,8 +1494,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
// create large decorative rocks
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
@@ -1546,7 +1507,6 @@ createObjectGroupsDeprecated(
|
||||
|
||||
RMS.SetProgress(70);
|
||||
|
||||
// create deer
|
||||
log("Creating deer...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oDeer, 5,7, 0,4)],
|
||||
@@ -1557,7 +1517,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(numPlayers+3, 5*numPlayers+4), 50
|
||||
);
|
||||
|
||||
// create berry bush
|
||||
log("Creating berry bush...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oBerryBush, 5,7, 0,4)],
|
||||
@@ -1570,7 +1529,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(75);
|
||||
|
||||
// create sheep
|
||||
log("Creating sheep...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oSheep, 2,3, 0,2)],
|
||||
@@ -1581,7 +1539,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
randIntInclusive(numPlayers+3, 5*numPlayers+4), 50
|
||||
);
|
||||
|
||||
// create fish
|
||||
log("Creating fish...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(oFish, 2,3, 0,2)],
|
||||
@@ -1591,11 +1548,8 @@ createObjectGroupsDeprecated(group, 0,
|
||||
avoidClasses(clLand, 4, clForest, 0, clPlayer, 0, clHill, 0, clFood, 20),
|
||||
randIntInclusive(15, 40) * numPlayers, 60
|
||||
);
|
||||
|
||||
RMS.SetProgress(85);
|
||||
|
||||
|
||||
// create straggler trees
|
||||
log("Creating straggler trees...");
|
||||
var types = [oOak, oOakLarge, oPine, oApple]; // some variation
|
||||
var num = floor(numStragglers / types.length);
|
||||
@@ -1624,7 +1578,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(90);
|
||||
|
||||
// create large grass tufts
|
||||
log("Creating large grass tufts...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aGrass, 2,4, 0,1.8, -PI/8,PI/8), new SimpleObject(aGrassShort, 3,6, 1.2,2.5, -PI/8,PI/8)]
|
||||
@@ -1636,7 +1589,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
|
||||
RMS.SetProgress(95);
|
||||
|
||||
// create shallow flora
|
||||
log("Creating shallow flora...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aLillies, 1,2, 0,2), new SimpleObject(aReeds, 2,4, 0,2)]
|
||||
@@ -1646,7 +1598,6 @@ createObjectGroupsDeprecated(group, 0,
|
||||
60 * scaleByMapSize(13, 200), 80
|
||||
);
|
||||
|
||||
// create bushes
|
||||
log("Creating bushes...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aBushMedium, 1,2, 0,2), new SimpleObject(aBushSmall, 2,4, 0,2)]
|
||||
@@ -1660,5 +1611,4 @@ setSkySet(pickRandom(["cirrus", "cumulus", "sunny", "sunny 1", "mountainous", "s
|
||||
setSunRotation(randFloat(0, TWO_PI));
|
||||
setSunElevation(randFloat(PI/ 5, PI / 3));
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
@@ -11,27 +11,23 @@ var tLava1 = "LavaTest05";
|
||||
var tLava2 = "LavaTest04";
|
||||
var tLava3 = "LavaTest03";
|
||||
|
||||
// gaia entities
|
||||
var oTree = "gaia/flora_tree_dead";
|
||||
var oStoneLarge = "gaia/geology_stonemine_alpine_quarry";
|
||||
var oStoneSmall = "gaia/geology_stone_alpine_a";
|
||||
var oMetalLarge = "gaia/geology_metal_alpine_slabs";
|
||||
|
||||
// decorative props
|
||||
var aRockLarge = "actor|geology/stone_granite_med.xml";
|
||||
var aRockMedium = "actor|geology/stone_granite_med.xml";
|
||||
|
||||
var pForestD = [tGrassC + TERRAIN_SEPARATOR + oTree, tGrassC];
|
||||
var pForestP = [tGrassB + TERRAIN_SEPARATOR + oTree, tGrassB];
|
||||
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
var numPlayers = getNumPlayers();
|
||||
var mapSize = getMapSize();
|
||||
var mapArea = mapSize*mapSize;
|
||||
|
||||
// create tile classes
|
||||
var clPlayer = createTileClass();
|
||||
var clHill = createTileClass();
|
||||
var clForest = createTileClass();
|
||||
@@ -83,7 +79,6 @@ for (var i = 0; i < numPlayers; i++)
|
||||
var painter = new LayeredPainter([tRoadWild, tRoad], [1]);
|
||||
createArea(placer, painter, null);
|
||||
|
||||
// create starting units
|
||||
placeCivDefaultEntities(fx, fz, id);
|
||||
|
||||
// create metal mine
|
||||
@@ -147,7 +142,6 @@ createAreas(
|
||||
scaleByMapSize(2, 8) * numPlayers
|
||||
);
|
||||
|
||||
|
||||
// calculate desired number of trees for map (based on size)
|
||||
var MIN_TREES = 200;
|
||||
var MAX_TREES = 1250;
|
||||
@@ -237,7 +231,7 @@ createObjectGroupsDeprecated(group, 0,
|
||||
scaleByMapSize(4,16), 100
|
||||
);
|
||||
|
||||
// create small stone quarries
|
||||
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),
|
||||
@@ -264,7 +258,6 @@ createObjectGroupsDeprecated(
|
||||
scaleByMapSize(16, 262), 50
|
||||
);
|
||||
|
||||
|
||||
log("Creating large decorative rocks...");
|
||||
group = new SimpleGroup(
|
||||
[new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
|
||||
|
||||
@@ -1,17 +1,13 @@
|
||||
RMS.LoadLibrary("rmgen");
|
||||
|
||||
// initialize map
|
||||
log("Initializing map...");
|
||||
InitMap();
|
||||
|
||||
|
||||
// General map setup
|
||||
var mapSize = getMapSize();
|
||||
var mapCenterX = mapSize/2;
|
||||
var mapCenterY = mapSize/2;
|
||||
const BUILDING_ANlE = -PI/4;
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
// Demonstration code for wall placement
|
||||
////////////////////////////////////////
|
||||
@@ -54,7 +50,6 @@ const BUILDING_ANlE = -PI/4;
|
||||
// Some other arguments are taken but all of them are optional and in most cases not needed
|
||||
// One example is maxAngle for placeCircularWall that defines how far the wall will circumvent the center. Default is 2*PI which makes a full circle
|
||||
|
||||
|
||||
// General wall placement setup
|
||||
const distToMapBorder = 5;
|
||||
const distToOtherWalls = 10;
|
||||
@@ -65,7 +60,6 @@ var actualY = distToMapBorder;
|
||||
// Other styles may be present as well but besides the civ styles only 'palisades' includes all wall element types (yet)
|
||||
const wallStyleList = ["athen", "brit", "cart", "gaul", "iber", "mace", "maur", "pers", "ptol", "rome", "sele", "spart", "rome_siege", "palisades"];
|
||||
|
||||
|
||||
////////////////////////////////////////
|
||||
// Custom wall placement (element based)
|
||||
////////////////////////////////////////
|
||||
@@ -152,7 +146,6 @@ actualY += 2 * radius + distToOtherWalls; // Increase actualY for next wall plac
|
||||
var maxWallLength = (mapSize - actualY - distToMapBorder - distToOtherWalls); // Just for this maps design. How long the longest wall will be
|
||||
var numWallsPerStyle = floor(buildableMapSize / distToOtherWalls / wallStyleList.length); // Just for this maps design. How many walls of the same style will be placed
|
||||
for (var styleIndex = 0; styleIndex < wallStyleList.length; styleIndex++)
|
||||
{
|
||||
for (var wallIndex = 0; wallIndex < numWallsPerStyle; wallIndex++)
|
||||
{
|
||||
var startX = actualX + (styleIndex * numWallsPerStyle + wallIndex) * distToOtherWalls; // X coordinate the wall will start from
|
||||
@@ -166,10 +159,8 @@ for (var styleIndex = 0; styleIndex < wallStyleList.length; styleIndex++)
|
||||
// placeObject(startX, startY, 'other/obelisk', 0, 0*PI); // Place visual marker to see where exsactly the wall begins
|
||||
// placeObject(endX, endY, 'other/obelisk', 0, 0*PI); // Place visual marker to see where exsactly the wall ends
|
||||
}
|
||||
}
|
||||
|
||||
actualX = distToMapBorder; // Reset actualX
|
||||
actualY += maxWallLength + distToOtherWalls; // Increase actualY for next wall placement method
|
||||
|
||||
|
||||
// Export map data
|
||||
ExportMap();
|
||||
|
||||
Reference in New Issue
Block a user