Nomad mode on all random map scripts (except Survival of the Fittest), fixes #3591.
[0ad.git] / binaries / data / mods / public / maps / random / frontier.js
blob3942ad876719e4f483da7e9c43f1d426d9e0423a
1 Engine.LoadLibrary("rmgen");
2 Engine.LoadLibrary("rmgen2");
3 Engine.LoadLibrary("rmbiome");
5 InitMap();
7 setSelectedBiome();
8 initTileClasses();
9 Engine.SetProgress(10);
11 // Pick a random elevation with a bias towards lower elevations
12 var randElevation = randIntInclusive(0, 29);
13 if (randElevation < 25)
14         randElevation = randIntInclusive(1, 4);
16 resetTerrain(g_Terrains.mainTerrain, g_TileClasses.land, randElevation);
17 Engine.SetProgress(20);
19 const startPositions = randomStartingPositionPattern(getTeamsArray());
20 addBases(startPositions.setup, startPositions.distance, startPositions.separation, randFloat(0, 2 * Math.PI));
21 Engine.SetProgress(40);
23 var features = [
24         {
25                 "func": addBluffs,
26                 "baseHeight": randElevation,
27                 "avoid": [
28                         g_TileClasses.bluff, 20,
29                         g_TileClasses.hill, 10,
30                         g_TileClasses.mountain, 20,
31                         g_TileClasses.plateau, 15,
32                         g_TileClasses.player, 30,
33                         g_TileClasses.valley, 5,
34                         g_TileClasses.water, 7
35                 ],
36                 "sizes": g_AllSizes,
37                 "mixes": g_AllMixes,
38                 "amounts": g_AllAmounts
39         },
40         {
41                 "func": addHills,
42                 "avoid": [
43                         g_TileClasses.bluff, 5,
44                         g_TileClasses.hill, 15,
45                         g_TileClasses.mountain, 2,
46                         g_TileClasses.plateau, 15,
47                         g_TileClasses.player, 20,
48                         g_TileClasses.valley, 2,
49                         g_TileClasses.water, 2
50                 ],
51                 "sizes": g_AllSizes,
52                 "mixes": g_AllMixes,
53                 "amounts": g_AllAmounts
54         },
55         {
56                 "func": addMountains,
57                 "avoid": [
58                         g_TileClasses.bluff, 20,
59                         g_TileClasses.mountain, 25,
60                         g_TileClasses.plateau, 15,
61                         g_TileClasses.player, 20,
62                         g_TileClasses.valley, 10,
63                         g_TileClasses.water, 15
64                 ],
65                 "sizes": g_AllSizes,
66                 "mixes": g_AllMixes,
67                 "amounts": g_AllAmounts
68         },
69         {
70                 "func": addPlateaus,
71                 "avoid": [
72                         g_TileClasses.bluff, 20,
73                         g_TileClasses.mountain, 25,
74                         g_TileClasses.plateau, 25,
75                         g_TileClasses.plateau, 25,
76                         g_TileClasses.player, 40,
77                         g_TileClasses.valley, 10,
78                         g_TileClasses.water, 15
79                 ],
80                 "sizes": g_AllSizes,
81                 "mixes": g_AllMixes,
82                 "amounts": g_AllAmounts
83         }
86 if (randElevation < 4)
87         features.push({
88                 "func": addLakes,
89                 "avoid": [
90                         g_TileClasses.bluff, 7,
91                         g_TileClasses.hill, 2,
92                         g_TileClasses.mountain, 15,
93                         g_TileClasses.plateau, 10,
94                         g_TileClasses.player, 20,
95                         g_TileClasses.valley, 10,
96                         g_TileClasses.water, 25
97                 ],
98                 "sizes": ["small"],
99                 "mixes": g_AllMixes,
100                 "amounts": g_AllAmounts
101         });
103 if (randElevation > 20)
104         features.push({
105                 "func": addValleys,
106                 "baseHeight": randElevation,
107                 "avoid": [
108                         g_TileClasses.bluff, 5,
109                         g_TileClasses.hill, 5,
110                         g_TileClasses.mountain, 25,
111                         g_TileClasses.plateau, 20,
112                         g_TileClasses.player, 40,
113                         g_TileClasses.valley, 15,
114                         g_TileClasses.water, 10
115                 ],
116                 "sizes": g_AllSizes,
117                 "mixes": g_AllMixes,
118                 "amounts": g_AllAmounts
119         });
121 addElements(shuffleArray(features));
122 Engine.SetProgress(50);
124 addElements([
125         {
126                 "func": addLayeredPatches,
127                 "avoid": [
128                         g_TileClasses.bluff, 2,
129                         g_TileClasses.dirt, 5,
130                         g_TileClasses.forest, 2,
131                         g_TileClasses.mountain, 2,
132                         g_TileClasses.plateau, 2,
133                         g_TileClasses.player, 12,
134                         g_TileClasses.water, 3
135                 ],
136                 "sizes": ["normal"],
137                 "mixes": ["normal"],
138                 "amounts": ["normal"]
139         },
140         {
141                 "func": addDecoration,
142                 "avoid": [
143                         g_TileClasses.bluff, 2,
144                         g_TileClasses.forest, 2,
145                         g_TileClasses.mountain, 2,
146                         g_TileClasses.plateau, 2,
147                         g_TileClasses.player, 12,
148                         g_TileClasses.water, 3
149                 ],
150                 "sizes": ["normal"],
151                 "mixes": ["normal"],
152                 "amounts": ["normal"]
153         }
155 Engine.SetProgress(60);
157 addElements(shuffleArray([
158         {
159                 "func": addMetal,
160                 "avoid": [
161                         g_TileClasses.berries, 5,
162                         g_TileClasses.bluff, 5,
163                         g_TileClasses.forest, 3,
164                         g_TileClasses.mountain, 2,
165                         g_TileClasses.plateau, 2,
166                         g_TileClasses.player, 30,
167                         g_TileClasses.rock, 10,
168                         g_TileClasses.metal, 20,
169                         g_TileClasses.water, 3
170                 ],
171                 "sizes": ["normal"],
172                 "mixes": ["same"],
173                 "amounts": g_AllAmounts
174         },
175         {
176                 "func": addStone,
177                 "avoid": [
178                         g_TileClasses.berries, 5,
179                         g_TileClasses.bluff, 5,
180                         g_TileClasses.forest, 3,
181                         g_TileClasses.mountain, 2,
182                         g_TileClasses.plateau, 2,
183                         g_TileClasses.player, 30,
184                         g_TileClasses.rock, 20,
185                         g_TileClasses.metal, 10,
186                         g_TileClasses.water, 3
187                 ],
188                 "sizes": ["normal"],
189                 "mixes": ["same"],
190                 "amounts": g_AllAmounts
191         },
192         {
193                 "func": addForests,
194                 "avoid": [
195                         g_TileClasses.berries, 5,
196                         g_TileClasses.bluff, 5,
197                         g_TileClasses.forest, 18,
198                         g_TileClasses.metal, 3,
199                         g_TileClasses.mountain, 5,
200                         g_TileClasses.plateau, 5,
201                         g_TileClasses.player, 20,
202                         g_TileClasses.rock, 3,
203                         g_TileClasses.water, 2
204                 ],
205                 "sizes": g_AllSizes,
206                 "mixes": g_AllMixes,
207                 "amounts": ["few", "normal", "many", "tons"]
208         }
209 ]));
210 Engine.SetProgress(70);
212 addElements(shuffleArray([
213         {
214                 "func": addBerries,
215                 "avoid": [
216                         g_TileClasses.berries, 30,
217                         g_TileClasses.bluff, 5,
218                         g_TileClasses.forest, 5,
219                         g_TileClasses.metal, 10,
220                         g_TileClasses.mountain, 2,
221                         g_TileClasses.plateau, 2,
222                         g_TileClasses.player, 20,
223                         g_TileClasses.rock, 10,
224                         g_TileClasses.water, 3
225                 ],
226                 "sizes": g_AllSizes,
227                 "mixes": g_AllMixes,
228                 "amounts": g_AllAmounts
229         },
230         {
231                 "func": addAnimals,
232                 "avoid": [
233                         g_TileClasses.animals, 20,
234                         g_TileClasses.bluff, 5,
235                         g_TileClasses.forest, 2,
236                         g_TileClasses.metal, 2,
237                         g_TileClasses.mountain, 1,
238                         g_TileClasses.plateau, 2,
239                         g_TileClasses.player, 20,
240                         g_TileClasses.rock, 2,
241                         g_TileClasses.water, 3
242                 ],
243                 "sizes": g_AllSizes,
244                 "mixes": g_AllMixes,
245                 "amounts": g_AllAmounts
246         },
247         {
248                 "func": addStragglerTrees,
249                 "avoid": [
250                         g_TileClasses.berries, 5,
251                         g_TileClasses.bluff, 5,
252                         g_TileClasses.forest, 7,
253                         g_TileClasses.metal, 2,
254                         g_TileClasses.mountain, 1,
255                         g_TileClasses.plateau, 2,
256                         g_TileClasses.player, 12,
257                         g_TileClasses.rock, 2,
258                         g_TileClasses.water, 5
259                 ],
260                 "sizes": g_AllSizes,
261                 "mixes": g_AllMixes,
262                 "amounts": g_AllAmounts
263         }
264 ]));
265 Engine.SetProgress(90);
267 placePlayersNomad(
268         g_TileClasses.player,
269         avoidClasses(
270                 g_TileClasses.bluff, 4,
271                 g_TileClasses.water, 4,
272                 g_TileClasses.forest, 1,
273                 g_TileClasses.metal, 4,
274                 g_TileClasses.rock, 4,
275                 g_TileClasses.mountain, 4,
276                 g_TileClasses.plateau, 4,
277                 g_TileClasses.animals, 2));
279 ExportMap();