1 Engine.LoadLibrary("rmgen");
3 const tGrassA = "savanna_shrubs_a_wetseason";
4 const tGrassB = "savanna_shrubs_a";
5 const tCliff = "savanna_cliff_a";
6 const tHill = "savanna_grass_a_wetseason";
7 const tMud = "savanna_mud_a";
8 const tShoreBlend = "savanna_grass_b_wetseason";
9 const tShore = "savanna_riparian_wet";
10 const tWater = "savanna_mud_a";
11 const tCityTile = "savanna_tile_a";
13 const oBush = "gaia/flora_bush_temperate";
14 const oBaobab = "gaia/flora_tree_baobab";
15 const oToona = "gaia/flora_tree_toona";
16 const oBerryBush = "gaia/flora_bush_berry";
17 const oGazelle = "gaia/fauna_gazelle";
18 const oZebra = "gaia/fauna_zebra";
19 const oWildebeest = "gaia/fauna_wildebeest";
20 const oLion = "gaia/fauna_lion";
21 const oRhino = "gaia/fauna_rhino";
22 const oCrocodile = "gaia/fauna_crocodile";
23 const oElephant = "gaia/fauna_elephant_north_african";
24 const oElephantInfant = "gaia/fauna_elephant_african_infant";
25 const oLioness = "gaia/fauna_lioness";
26 const oRabbit = "gaia/fauna_rabbit";
27 const oStoneLarge = "gaia/geology_stonemine_temperate_quarry";
28 const oStoneSmall = "gaia/geology_stone_savanna_small";
29 const oMetalLarge = "gaia/geology_metal_savanna_slabs";
31 const aGrass = "actor|props/flora/grass_field_lush_tall.xml";
32 const aGrass2 = "actor|props/flora/grass_tropic_field_tall.xml";
33 const aGrassShort = "actor|props/flora/grass_soft_large.xml";
34 const aRockLarge = "actor|geology/stone_granite_med.xml";
35 const aRockMedium = "actor|geology/stone_granite_med.xml";
36 const aReeds = "actor|props/flora/reeds_pond_lush_a.xml";
37 const aReeds2 = "actor|props/flora/reeds_pond_lush_b.xml";
38 const aLillies = "actor|props/flora/water_lillies.xml";
39 const aBushMedium = "actor|props/flora/bush_tropic_b.xml";
40 const aBushSmall = "actor|props/flora/bush_tropic_a.xml";
41 const aShrub = "actor|props/flora/shrub_tropic_plant_flower.xml";
42 const aFlower = "actor|props/flora/flower_bright.xml";
43 const aPalm = "actor|props/flora/shrub_fanpalm.xml";
47 const numPlayers = getNumPlayers();
49 var clPlayer = createTileClass();
50 var clHill = createTileClass();
51 var clWater = createTileClass();
52 var clDirt = createTileClass();
53 var clRock = createTileClass();
54 var clMetal = createTileClass();
55 var clForest = createTileClass();
56 var clFood = createTileClass();
57 var clBaseResource = createTileClass();
60 "PlayerPlacement": playerPlacementCircle(0.35),
61 "PlayerTileClass": clPlayer,
62 "BaseResourceClass": clBaseResource,
64 "outerTerrain": tCityTile,
65 "innerTerrain": tCityTile
70 "template": oBerryBush
74 { "template": oMetalLarge },
75 { "template": oStoneLarge }
82 "template": aGrassShort
85 Engine.SetProgress(15);
87 log("Creating bumps...");
89 new ClumpPlacer(scaleByMapSize(20, 50), 0.6, 0.1, 1),
90 new SmoothElevationPainter(ELEVATION_MODIFY, 2, 2),
91 avoidClasses(clPlayer, 13),
92 scaleByMapSize(300, 800));
94 log("Creating hills...");
96 new ChainPlacer(1, Math.floor(scaleByMapSize(4, 6)), Math.floor(scaleByMapSize(16, 40)), 0.5),
98 new LayeredPainter([tCliff, tHill], [2]),
99 new SmoothElevationPainter(ELEVATION_SET, 15, 2),
102 avoidClasses(clPlayer, 20, clHill, 15, clWater, 0),
103 scaleByMapSize(1, 4) * numPlayers * 3);
105 log("Creating marshes...");
106 for (let i = 0; i < 2; ++i)
108 new ChainPlacer(1, Math.floor(scaleByMapSize(6, 12)), Math.floor(scaleByMapSize(15, 60)), 0.8),
110 new LayeredPainter([tShoreBlend, tShore, tWater], [1, 1]),
111 new SmoothElevationPainter(ELEVATION_SET, -2, 3),
114 avoidClasses(clPlayer, 25, clWater, Math.round(scaleByMapSize(7, 16) * randFloat(0.8, 1.35))),
115 scaleByMapSize(4, 20));
117 log("Creating reeds...");
118 createObjectGroupsDeprecated(
121 new SimpleObject(aReeds, 20, 40, 0, 4),
122 new SimpleObject(aReeds2, 20, 40, 0, 4),
123 new SimpleObject(aLillies, 10, 30, 0, 4)
127 stayClasses(clWater, 1),
128 scaleByMapSize(400, 1000),
130 Engine.SetProgress(40);
132 log("Creating bumps...");
134 new ClumpPlacer(scaleByMapSize(20, 50), 0.3, 0.06, 1),
135 new SmoothElevationPainter(ELEVATION_MODIFY, 1, 2),
136 stayClasses(clWater, 2),
137 scaleByMapSize(50, 100));
139 log("Creating mud patches...");
140 for (let size of [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)])
142 new ChainPlacer(2, Math.floor(scaleByMapSize(3, 6)), size, 1),
144 new LayeredPainter([tGrassA, tGrassB, tMud], [1, 1]),
147 avoidClasses(clWater, 1, clHill, 0, clDirt, 5, clPlayer, 8),
148 scaleByMapSize(15, 45));
149 Engine.SetProgress(50);
151 log("Creating stone mines...");
152 createObjectGroupsDeprecated(
155 new SimpleObject(oStoneSmall, 0, 2, 0, 4),
156 new SimpleObject(oStoneLarge, 1, 1, 0, 4)
161 [avoidClasses(clWater, 0, clPlayer, 20, clRock, 10, clHill, 1)],
162 scaleByMapSize(4, 16),
165 createObjectGroupsDeprecated(
166 new SimpleGroup([new SimpleObject(oStoneSmall, 2, 5, 1, 3)], true, clRock),
168 [avoidClasses(clWater, 0, clPlayer, 20, clRock, 10, clHill, 1)],
169 scaleByMapSize(4, 16),
172 log("Creating metal mines...");
173 createObjectGroupsDeprecated(
174 new SimpleGroup([new SimpleObject(oMetalLarge, 1, 1, 0, 4)], true, clMetal),
176 [avoidClasses(clWater, 0, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 1)],
177 scaleByMapSize(4, 16),
179 Engine.SetProgress(60);
181 log("Creating small decorative rocks...");
182 createObjectGroupsDeprecated(
183 new SimpleGroup([new SimpleObject(aRockMedium, 1, 3, 0, 1)], true),
185 avoidClasses(clPlayer, 1),
186 scaleByMapSize(16, 262),
188 Engine.SetProgress(65);
190 log("Creating large decorative rocks...");
191 createObjectGroupsDeprecated(
194 new SimpleObject(aRockLarge, 1, 2, 0, 1),
195 new SimpleObject(aRockMedium, 1, 3, 0, 2)
199 avoidClasses(clWater, 0, clForest, 0, clPlayer, 0, clHill, 0),
200 scaleByMapSize(8, 131),
202 Engine.SetProgress(70);
204 log("Creating lions...");
205 createObjectGroupsDeprecated(
208 new SimpleObject(oLion, 0, 1, 0, 4),
209 new SimpleObject(oLioness, 2, 3, 0, 4)
214 avoidClasses(clWater, 1, clPlayer, 20, clFood, 11, clHill, 1),
215 scaleByMapSize(4, 12),
218 log("Creating zebras...");
219 createObjectGroupsDeprecated(
221 [new SimpleObject(oZebra, 4, 6, 0, 4)],
225 avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13),
229 log("Creating wildebeest...");
230 createObjectGroupsDeprecated(
232 [new SimpleObject(oWildebeest, 2, 4, 0, 4)],
236 avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13),
240 log("Creating crocodiles...");
241 createObjectGroupsDeprecated(
243 [new SimpleObject(oCrocodile, 2, 3, 0, 4)],
247 [avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 13), stayClasses(clWater, 3)],
251 log("Creating gazelles...");
252 createObjectGroupsDeprecated(
254 [new SimpleObject(oGazelle, 4, 6, 0, 4)],
258 avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13),
261 Engine.SetProgress(75);
263 log("Creating rabbits...");
264 createObjectGroupsDeprecated(
266 [new SimpleObject(oRabbit, 6, 8, 0, 2)],
270 avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13),
274 log("Creating rhinos...");
275 createObjectGroupsDeprecated(
277 [new SimpleObject(oRhino, 1, 1, 0, 2)],
281 avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13),
285 log("Creating elephants...");
286 createObjectGroupsDeprecated(
288 [new SimpleObject(oElephant, 2, 3, 0, 4), new SimpleObject(oElephantInfant, 1, 1, 0, 4)],
292 avoidClasses(clWater, 0, clForest, 0, clPlayer, 20, clHill, 1, clFood, 13),
296 log("Creating berry bushes...");
297 createObjectGroupsDeprecated(
299 [new SimpleObject(oBerryBush, 5, 7, 0, 4)],
303 avoidClasses(clWater, 3, clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
304 randIntInclusive(1, 4) * numPlayers + 2,
306 Engine.SetProgress(80);
308 createStragglerTrees(
309 [oToona, oBaobab, oBush, oBush],
310 avoidClasses(clForest, 1, clWater, 1, clHill, 1, clPlayer, 13, clMetal, 1, clRock, 1),
312 scaleByMapSize(60, 500));
313 Engine.SetProgress(85);
315 log("Creating small grass tufts...");
316 createObjectGroupsDeprecated(
317 new SimpleGroup([new SimpleObject(aGrassShort, 1, 2, 0, 1, -Math.PI / 8, Math.PI / 8)]),
319 avoidClasses(clWater, 2, clPlayer, 13, clDirt, 0),
320 scaleByMapSize(13, 200));
321 Engine.SetProgress(90);
323 log("Creating large grass tufts...");
324 createObjectGroupsDeprecated(
326 new SimpleObject(aGrass, 2, 4, 0, 1.8, -Math.PI / 8, Math.PI / 8),
327 new SimpleObject(aGrassShort, 3, 6, 1.2, 2.5, -Math.PI / 8, Math.PI / 8)
330 avoidClasses(clWater, 3, clPlayer, 13, clDirt, 1, clForest, 0),
331 scaleByMapSize(13, 200));
332 Engine.SetProgress(95);
334 log("Creating bushes...");
335 createObjectGroupsDeprecated(
338 new SimpleObject(aBushMedium, 1, 2, 0, 2),
339 new SimpleObject(aBushSmall, 2, 4, 0, 2)
342 avoidClasses(clWater, 1, clPlayer, 13, clDirt, 1),
343 scaleByMapSize(13, 200),
346 log("Creating flowering shrubs...");
347 createObjectGroupsDeprecated(
348 new SimpleGroup([new SimpleObject(aShrub, 1, 1, 0, 2)]),
350 avoidClasses(clWater, 1, clPlayer, 13, clDirt, 1),
351 scaleByMapSize(13, 200),
354 log("Creating decorative palms...");
355 createObjectGroupsDeprecated(
356 new SimpleGroup([new SimpleObject(aPalm, 1, 3, 0, 2)]),
358 avoidClasses(clWater, 2, clPlayer, 12, clDirt, 1),
359 scaleByMapSize(13, 200),
362 log("Creating shrubs,flowers and other decorations...");
363 createObjectGroupsDeprecated(
366 new SimpleObject(aFlower, 0, 6, 0, 2),
367 new SimpleObject(aGrass2, 2, 5, 0, 2)
370 avoidClasses(clWater, 1, clHill, 1, clPlayer, 13, clDirt, 1),
371 scaleByMapSize(13, 200),
374 placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
377 setWaterColor(0.553, 0.635, 0.345);
378 setWaterTint(0.161, 0.514, 0.635);
379 setWaterMurkiness(0.8);
380 setWaterWaviness(1.0);
381 setWaterType("clap");
383 setFogThickness(0.25);
387 setPPSaturation(0.44);