Nomad mode on all random map scripts (except Survival of the Fittest), fixes #3591.
[0ad.git] / binaries / data / mods / public / maps / random / volcanic_lands.js
blob8c00aa02b0838096713a70819c5509ca13d6c520
1 Engine.LoadLibrary("rmgen");
3 var tGrass = ["cliff volcanic light", "ocean_rock_a", "ocean_rock_b"];
4 var tGrassA = "cliff volcanic light";
5 var tGrassB = "ocean_rock_a";
6 var tGrassC = "ocean_rock_b";
7 var tCliff = ["cliff volcanic coarse", "cave_walls"];
8 var tRoad = "road1";
9 var tRoadWild = "road1";
10 var tLava1 = "LavaTest05";
11 var tLava2 = "LavaTest04";
12 var tLava3 = "LavaTest03";
14 var oTree = "gaia/flora_tree_dead";
15 var oStoneLarge = "gaia/geology_stonemine_alpine_quarry";
16 var oStoneSmall = "gaia/geology_stone_alpine_a";
17 var oMetalLarge = "gaia/geology_metal_alpine_slabs";
19 var aRockLarge = "actor|geology/stone_granite_med.xml";
20 var aRockMedium = "actor|geology/stone_granite_med.xml";
22 var pForestD = [tGrassC + TERRAIN_SEPARATOR + oTree, tGrassC];
23 var pForestP = [tGrassB + TERRAIN_SEPARATOR + oTree, tGrassB];
25 InitMap();
27 var numPlayers = getNumPlayers();
29 var clPlayer = createTileClass();
30 var clHill = createTileClass();
31 var clForest = createTileClass();
32 var clDirt = createTileClass();
33 var clRock = createTileClass();
34 var clMetal = createTileClass();
35 var clBaseResource = createTileClass();
37 placePlayerBases({
38         "PlayerPlacement": playerPlacementCircle(0.35),
39         "PlayerTileClass": clPlayer,
40         "BaseResourceClass": clBaseResource,
41         "CityPatch": {
42                 "outerTerrain": tRoadWild,
43                 "innerTerrain": tRoad
44         },
45         // No berries, no chicken, no decoratives
46         "Mines": {
47                 "types": [
48                         { "template": oMetalLarge },
49                         { "template": oStoneLarge }
50                 ]
51         },
52         "Trees": {
53                 "template": oTree,
54                 "count": scaleByMapSize(12, 30)
55         }
56 });
57 Engine.SetProgress(15);
59 createVolcano(0.5, 0.5, clHill, tCliff, [tLava1, tLava2, tLava3], true, ELEVATION_SET);
60 Engine.SetProgress(45);
62 log("Creating hills...");
63 createAreas(
64         new ClumpPlacer(scaleByMapSize(20, 150), 0.2, 0.1, 1),
65         [
66                 new LayeredPainter([tCliff, tGrass], [2]),
67                 new SmoothElevationPainter(ELEVATION_SET, 18, 2),
68                 paintClass(clHill)
69         ],
70         avoidClasses(clPlayer, 12, clHill, 15, clBaseResource, 2),
71         scaleByMapSize(2, 8) * numPlayers
74 log("Creating forests...");
75 var [forestTrees, stragglerTrees] = getTreeCounts(200, 1250, 0.7);
76 var types = [
77         [[tGrassB, tGrassA, pForestD], [tGrassB, pForestD]],
78         [[tGrassB, tGrassA, pForestP], [tGrassB, pForestP]]
80 var size = forestTrees / (scaleByMapSize(2,8) * numPlayers);
81 var num = Math.floor(size / types.length);
82 for (let type of types)
83         createAreas(
84                 new ClumpPlacer(forestTrees / num, 0.1, 0.1, 1),
85                 [
86                         new LayeredPainter(type, [2]),
87                         paintClass(clForest)
88                 ],
89                 avoidClasses(clPlayer, 12, clForest, 10, clHill, 0, clBaseResource, 6),
90                 num);
92 Engine.SetProgress(70);
94 log("Creating dirt patches...");
95 for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
96         createAreas(
97                 new ClumpPlacer(size, 0.3, 0.06, 0.5),
98                 [
99                         new LayeredPainter([tGrassA, tGrassA], [1]),
100                         paintClass(clDirt)
101                 ],
102                 avoidClasses(clForest, 0, clHill, 0, clPlayer, 12),
103                 scaleByMapSize(20, 80));
105 for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
106         createAreas(
107                 new ClumpPlacer(size, 0.3, 0.06, 0.5),
108                 [
109                         new LayeredPainter([tGrassB, tGrassB], [1]),
110                         paintClass(clDirt)
111                 ],
112                 avoidClasses(clForest, 0, clHill, 0, clPlayer, 12),
113                 scaleByMapSize(20, 80));
115 for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
116         createAreas(
117                 new ClumpPlacer(size, 0.3, 0.06, 0.5),
118                 [
119                         new LayeredPainter([tGrassC, tGrassC], [1]),
120                         paintClass(clDirt)
121                 ],
122                 avoidClasses(clForest, 0, clHill, 0, clPlayer, 12),
123                 scaleByMapSize(20, 80)
124         );
126 log("Creating stone mines...");
127 var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0, 2, 0, 4), new SimpleObject(oStoneLarge, 1, 1, 0, 4)], true, clRock);
128 createObjectGroupsDeprecated(group, 0,
129         avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1),
130         scaleByMapSize(4,16), 100
133 log("Creating small stone mines...");
134 group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
135 createObjectGroupsDeprecated(group, 0,
136         avoidClasses(clForest, 1, clPlayer, 10, clRock, 10, clHill, 1),
137         scaleByMapSize(4,16), 100
140 log("Creating metal mines...");
141 group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
142 createObjectGroupsDeprecated(group, 0,
143         avoidClasses(clForest, 1, clPlayer, 10, clMetal, 10, clRock, 5, clHill, 1),
144         scaleByMapSize(4,16), 100
147 Engine.SetProgress(90);
149 log("Creating small decorative rocks...");
150 group = new SimpleGroup(
151         [new SimpleObject(aRockMedium, 1,3, 0,1)],
152         true
154 createObjectGroupsDeprecated(
155         group, 0,
156         avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
157         scaleByMapSize(16, 262), 50
160 log("Creating large decorative rocks...");
161 group = new SimpleGroup(
162         [new SimpleObject(aRockLarge, 1,2, 0,1), new SimpleObject(aRockMedium, 1,3, 0,2)],
163         true
165 createObjectGroupsDeprecated(
166         group, 0,
167         avoidClasses(clForest, 0, clPlayer, 0, clHill, 0),
168         scaleByMapSize(8, 131), 50
171 Engine.SetProgress(95);
173 createStragglerTrees(
174         [oTree],
175         avoidClasses(clForest, 1, clHill, 1, clPlayer, 12, clMetal, 6, clRock, 6, clBaseResource, 6),
176         clForest,
177         stragglerTrees);
179 placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4));
181 ExportMap();