Remove rmgen euclidian distance helper function, refs rP20328 / D969.
[0ad.git] / binaries / data / mods / public / maps / random / red_sea.js
blobec2f5fec41a5e0768f073066968ef9fe31b47d36
1 // Coordinates: 21.824205, 40.289810
2 // Map Width: 2900km
4 RMS.LoadLibrary("rmgen");
5 RMS.LoadLibrary("rmgen2");
6 RMS.LoadLibrary("rmbiome");
8 InitMap();
10 setBiome("desert");
11 initTileClasses();
13 setSunColor(0.733, 0.746, 0.574);
15 setWindAngle(-0.43);
16 setWaterTint(0.161, 0.286, 0.353);
17 setWaterColor(0.129, 0.176, 0.259);
18 setWaterWaviness(8);
19 setWaterMurkiness(0.87);
20 setWaterType("lake");
22 setTerrainAmbientColor(0.58, 0.443, 0.353);
24 setSunRotation(PI * 1.1);
25 setSunElevation(PI / 7);
27 setFogFactor(0);
28 setFogThickness(0);
29 setFogColor(0.69, 0.616, 0.541);
31 setPPEffect("hdr");
32 setPPContrast(0.67);
33 setPPSaturation(0.42);
34 setPPBloom(0.23);
36 log("Initializing biome...");
37 g_Terrains.mainTerrain = "desert_dirt_rocks_2";
38 g_Terrains.forestFloor1 = "desert_grass_a_sand";
39 g_Terrains.forestFloor2 = "desert_grass_a_sand";
40 g_Terrains.tier1Terrain = "desert_dirt_rocks_2";
41 g_Terrains.tier2Terrain = "desert_dirt_rough";
42 g_Terrains.tier3Terrain = "desert_dirt_rough";
43 g_Terrains.tier4Terrain = "desert_sand_stones";
44 g_Terrains.roadWild = "road2";
45 g_Terrains.road = "road2";
46 g_Gaia.tree1 = "gaia/flora_tree_date_palm";
47 g_Gaia.tree2 = "gaia/flora_tree_senegal_date_palm";
48 g_Gaia.tree3 = "gaia/flora_tree_fig";
49 g_Gaia.tree4 = "gaia/flora_tree_cretan_date_palm_tall";
50 g_Gaia.tree5 = "gaia/flora_tree_cretan_date_palm_short";
51 g_Gaia.fruitBush = "gaia/flora_bush_grapes";
52 g_Decoratives.grass = "actor|props/flora/grass_field_dry_tall_b.xml";
53 g_Decoratives.grassShort = "actor|props/flora/grass_field_parched_short.xml";
54 g_Decoratives.rockLarge = "actor|geology/stone_desert_med.xml";
55 g_Decoratives.rockMedium = "actor|geology/stone_savanna_med.xml";
56 g_Decoratives.bushMedium = "actor|props/flora/bush_desert_dry_a.xml";
57 g_Decoratives.bushSmall = "actor|props/flora/bush_medit_sm_dry.xml";
58 g_Decoratives.dust = "actor|particle/dust_storm_reddish.xml";
60 log("Resetting terrain...");
61 resetTerrain(g_Terrains.mainTerrain, g_TileClasses.land, getMapBaseHeight());
62 RMS.SetProgress(10);
64 log("Copying heightmap...");
65 var scale = paintHeightmap("red_sea", (tile, x, y) => {
66         if (tile.indexOf("cliff") >= 0)
67                 addToClass(x, y, g_TileClasses.mountain);
68 });
69 RMS.SetProgress(30);
71 log("Rendering water...");
72 paintTileClassBasedOnHeight(-100, -1, 3, g_TileClasses.water);
73 RMS.SetProgress(40);
75 log("Placing players...");
76 // Coordinate system of the heightmap
77 var singleBases = [
78         [175, 30],
79         [45, 210],
80         [280, 180],
81         [180, 180],
82         [230, 115],
83         [130, 280],
84         [200, 253],
85         [90, 115],
86         [45, 45]
88 var strongholdBases = [
89         [50, 160],
90         [100, 50],
91         [170, 260],
92         [260, 160]
94 randomPlayerPlacementAt(getTeamsArray(), singleBases, strongholdBases, scale, 0.04);
95 RMS.SetProgress(50);
97 log("Adding mines and forests...");
98 addElements(shuffleArray([
99         {
100                 "func": addMetal,
101                 "avoid": [
102                         g_TileClasses.berries, 5,
103                         g_TileClasses.forest, 3,
104                         g_TileClasses.mountain, 2,
105                         g_TileClasses.player, 30,
106                         g_TileClasses.rock, 10,
107                         g_TileClasses.metal, 20,
108                         g_TileClasses.water, 3
109                 ],
110                 "sizes": ["normal"],
111                 "mixes": ["same"],
112                 "amounts": ["normal", "many"]
113         },
114         {
115                 "func": addStone,
116                 "avoid": [
117                         g_TileClasses.berries, 5,
118                         g_TileClasses.forest, 3,
119                         g_TileClasses.mountain, 2,
120                         g_TileClasses.player, 30,
121                         g_TileClasses.rock, 20,
122                         g_TileClasses.metal, 10,
123                         g_TileClasses.water, 3
124                 ],
125                 "sizes": ["normal"],
126                 "mixes": ["same"],
127                 "amounts": ["normal", "many"]
128         },
129         {
130                 "func": addForests,
131                 "avoid": [
132                         g_TileClasses.berries, 3,
133                         g_TileClasses.forest, 20,
134                         g_TileClasses.metal, 3,
135                         g_TileClasses.mountain, 3,
136                         g_TileClasses.player, 20,
137                         g_TileClasses.rock, 3,
138                         g_TileClasses.water, 2
139                 ],
140                 "sizes": ["big"],
141                 "mixes": ["similar"],
142                 "amounts": ["few"]
143         }
144 ]));
145 RMS.SetProgress(60);
147 log("Ensure initial forests...");
148 addElements([{
149         "func": addForests,
150         "avoid": [
151                 g_TileClasses.berries, 2,
152                 g_TileClasses.forest, 25,
153                 g_TileClasses.metal, 3,
154                 g_TileClasses.mountain, 5,
155                 g_TileClasses.player, 15,
156                 g_TileClasses.rock, 3,
157                 g_TileClasses.water, 2
158         ],
159         "sizes": ["small"],
160         "mixes": ["similar"],
161         "amounts": ["tons"]
162 }]);
163 RMS.SetProgress(65);
165 log("Adding berries and animals...");
166 addElements(shuffleArray([
167         {
168                 "func": addBerries,
169                 "avoid": [
170                         g_TileClasses.berries, 30,
171                         g_TileClasses.forest, 5,
172                         g_TileClasses.metal, 10,
173                         g_TileClasses.mountain, 2,
174                         g_TileClasses.player, 20,
175                         g_TileClasses.rock, 10,
176                         g_TileClasses.water, 3
177                 ],
178                 "sizes": ["normal"],
179                 "mixes": ["same"],
180                 "amounts": ["normal", "many"]
181         },
182         {
183                 "func": addAnimals,
184                 "avoid": [
185                         g_TileClasses.animals, 20,
186                         g_TileClasses.forest, 2,
187                         g_TileClasses.metal, 2,
188                         g_TileClasses.mountain, 1,
189                         g_TileClasses.player, 20,
190                         g_TileClasses.rock, 2,
191                         g_TileClasses.water, 3
192                 ],
193                 "sizes": ["normal"],
194                 "mixes": ["same"],
195                 "amounts": ["many"]
196         },
197         {
198                 "func": addFish,
199                 "avoid": [
200                         g_TileClasses.fish, 12,
201                         g_TileClasses.player, 8
202                 ],
203                 "stay": [g_TileClasses.water, 4],
204                 "sizes": ["normal"],
205                 "mixes": ["same"],
206                 "amounts": ["many"]
207         },
208         {
209                 "func": addStragglerTrees,
210                 "avoid": [
211                         g_TileClasses.berries, 5,
212                         g_TileClasses.forest, 15,
213                         g_TileClasses.metal, 2,
214                         g_TileClasses.mountain, 1,
215                         g_TileClasses.player, 20,
216                         g_TileClasses.rock, 2,
217                         g_TileClasses.water, 5
218                 ],
219                 "sizes": ["normal"],
220                 "mixes": ["same"],
221                 "amounts": ["many"]
222         }
223 ]));
224 RMS.SetProgress(70);
226 log("Adding decoration...");
227 addElements([
228         {
229                 "func": addLayeredPatches,
230                 "avoid": [
231                         g_TileClasses.dirt, 5,
232                         g_TileClasses.forest, 2,
233                         g_TileClasses.mountain, 2,
234                         g_TileClasses.player, 12,
235                         g_TileClasses.water, 3
236                 ],
237                 "sizes": ["normal"],
238                 "mixes": ["normal"],
239                 "amounts": ["many"]
240         },
241         {
242                 "func": addDecoration,
243                 "avoid": [
244                         g_TileClasses.forest, 2,
245                         g_TileClasses.mountain, 2,
246                         g_TileClasses.player, 12,
247                         g_TileClasses.water, 3
248                 ],
249                 "sizes": ["normal"],
250                 "mixes": ["similar"],
251                 "amounts": ["many"]
252         }
254 RMS.SetProgress(80);
256 log("Adding reeds...");
257 createObjectGroupsDeprecated(
258         new SimpleGroup(
259                 [
260                         new SimpleObject(g_Decoratives.reeds, 5, 12, 1, 4),
261                         new SimpleObject(g_Decoratives.rockMedium, 1, 2, 1, 5)
262                 ],
263                 true,
264                 g_TileClasses.dirt
265         ),
266         0,
267         [
268                 stayClasses(g_TileClasses.water, 1),
269                 borderClasses(g_TileClasses.water, scaleByMapSize(2,8), scaleByMapSize(2,5))
270         ],
271         scaleByMapSize(100, 1000),
272         500
274 RMS.SetProgress(85);
276 log("Adding dust...");
277 createObjectGroupsDeprecated(
278         new SimpleGroup(
279                 [new SimpleObject(g_Decoratives.dust, 1, 1, 1, 4)],
280                 false
281         ),
282         0,
283         [
284                 stayClasses(g_TileClasses.dirt, 1),
285                 avoidClasses(
286                         g_TileClasses.player, 10,
287                         g_TileClasses.water, 3
288                 )
289         ],
290         Math.square(scaleByMapSize(5, 20)),
291         500
293 RMS.SetProgress(90);
295 ExportMap();