Nomad mode on all random map scripts (except Survival of the Fittest), fixes #3591.
[0ad.git] / binaries / data / mods / public / maps / random / atlas_mountains.js
blobde8725264f006c9515ef43c1bbfd69a030b6d958
1 Engine.LoadLibrary("rmgen");
3 const tGrass = ["medit_rocks_grass_shrubs", "medit_rocks_shrubs"];
4 const tForestFloor = "medit_grass_field_dry";
5 const tCliff = "medit_cliff_italia";
6 const tGrassDirt = "medit_rocks_grass";
7 const tDirt = "medit_dirt";
8 const tRoad = "medit_city_tile";
9 const tRoadWild = "medit_city_tile";
10 const tGrass2 = "medit_rocks_grass_shrubs";
11 const tGrassPatch = "medit_grass_wild";
13 const oCarob = "gaia/flora_tree_carob";
14 const oAleppoPine = "gaia/flora_tree_aleppo_pine";
15 const oBerryBush = "gaia/flora_bush_berry";
16 const oDeer = "gaia/fauna_deer";
17 const oSheep = "gaia/fauna_sheep";
18 const oStoneLarge = "gaia/geology_stonemine_medit_quarry";
19 const oStoneSmall = "gaia/geology_stone_mediterranean";
20 const oMetalLarge = "gaia/geology_metal_mediterranean_slabs";
21 const oWoodTreasure = "gaia/special_treasure_wood";
22 const oFoodTreasure = "gaia/special_treasure_food_bin";
24 const aGrass = "actor|props/flora/grass_soft_large_tall.xml";
25 const aGrassShort = "actor|props/flora/grass_soft_large.xml";
26 const aRockLarge = "actor|geology/stone_granite_large.xml";
27 const aRockMedium = "actor|geology/stone_granite_med.xml";
28 const aBushMedium = "actor|props/flora/bush_medit_me.xml";
29 const aBushSmall = "actor|props/flora/bush_medit_sm.xml";
30 const aCarob = "actor|flora/trees/carob.xml";
31 const aAleppoPine = "actor|flora/trees/aleppo_pine.xml";
33 const pForest1 = [tForestFloor + TERRAIN_SEPARATOR + oCarob, tForestFloor];
34 const pForest2 = [tForestFloor + TERRAIN_SEPARATOR + oAleppoPine, tForestFloor];
36 InitMap();
38 const numPlayers = getNumPlayers();
40 var clPlayer = createTileClass();
41 var clHill = createTileClass();
42 var clForest = createTileClass();
43 var clDirt = createTileClass();
44 var clRock = createTileClass();
45 var clMetal = createTileClass();
46 var clFood = createTileClass();
47 var clBaseResource = createTileClass();
48 var clTreasure = createTileClass();
50 placePlayerBases({
51         "PlayerPlacement": playerPlacementCircle(0.35),
52         "PlayerTileClass": clPlayer,
53         "BaseResourceClass": clBaseResource,
54         "CityPatch": {
55                 "outerTerrain": tRoadWild,
56                 "innerTerrain": tRoad
57         },
58         "Chicken": {
59         },
60         "Berries": {
61                 "template": oBerryBush
62         },
63         "Mines": {
64                 "types": [
65                         { "template": oMetalLarge },
66                         { "template": oStoneLarge }
67                 ]
68         },
69         "Trees": {
70                 "template": oCarob,
71                 "count": scaleByMapSize(2, 8)
72         },
73         "Decoratives": {
74                 "template": aGrassShort
75         }
76 });
77 Engine.SetProgress(10);
79 createBumps(avoidClasses(clPlayer, 9));
81 createMountains(tCliff, avoidClasses(clPlayer, 20, clHill, 8), clHill, scaleByMapSize(20, 120));
83 Engine.SetProgress(25);
85 var [forestTrees, stragglerTrees] = getTreeCounts(500, 3000, 0.7);
86 createForests(
87  [tGrass, tForestFloor, tForestFloor, pForest1, pForest2],
88  avoidClasses(clPlayer, 20, clForest, 14, clHill, 1),
89  clForest,
90  forestTrees);
92 Engine.SetProgress(40);
94 log("Creating dirt patches...");
95 createLayeredPatches(
96  [scaleByMapSize(3, 6), scaleByMapSize(5, 10), scaleByMapSize(8, 21)],
97  [tGrassDirt,tDirt],
98  [2],
99  avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 10),
100  scaleByMapSize(15, 45),
101  clDirt);
103 log("Creating grass patches...");
104 createLayeredPatches(
105  [scaleByMapSize(2, 4), scaleByMapSize(3, 7), scaleByMapSize(5, 15)],
106  [tGrass2,tGrassPatch],
107  [1],
108  avoidClasses(clForest, 0, clHill, 0, clDirt, 3, clPlayer, 10),
109  scaleByMapSize(15, 45),
110  clDirt);
112 Engine.SetProgress(50);
114 log("Creating stone mines...");
115 createMines(
117   [new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)],
118   [new SimpleObject(oStoneSmall, 2,5, 1,3)]
119  ],
120  avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2),
121  clRock);
123 log("Creating metal mines...");
124 createMines(
126   [new SimpleObject(oMetalLarge, 1,1, 0,4)]
127  ],
128  avoidClasses(clForest, 1, clPlayer, 20, clMetal, 10, clRock, 5, clHill, 2),
129  clMetal
132 Engine.SetProgress(60);
134 createDecoration(
135         [
136                 [new SimpleObject(aRockMedium, 1, 3, 0, 1)],
137                 [new SimpleObject(aRockLarge, 1, 2, 0, 1), new SimpleObject(aRockMedium, 1, 3, 0, 2)],
138                 [new SimpleObject(aGrassShort, 1, 2, 0, 1)],
139                 [new SimpleObject(aGrass, 2, 4, 0, 1.8), new SimpleObject(aGrassShort, 3, 6, 1.2, 2.5)],
140                 [new SimpleObject(aBushMedium, 1, 2, 0, 2), new SimpleObject(aBushSmall, 2, 4, 0, 2)]
141         ],
142         [
143                 scaleByMapSize(16, 262),
144                 scaleByMapSize(8, 131),
145                 scaleByMapSize(13, 200),
146                 scaleByMapSize(13, 200),
147                 scaleByMapSize(13, 200)
148         ],
149         avoidClasses(clForest, 0, clPlayer, 0, clHill, 0));
151 Engine.SetProgress(75);
153 createFood(
154         [
155                 [new SimpleObject(oSheep, 5, 7, 0, 4)],
156                 [new SimpleObject(oDeer, 2, 3, 0, 2)]
157         ],
158         [
159                 3 * numPlayers,
160                 3 * numPlayers
161         ],
162         avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 20),
163         clFood);
165 createFood(
166         [
167                 [new SimpleObject(oBerryBush, 5, 7, 0, 4)]
168         ],
169         [
170                 randIntInclusive(3, 12) * numPlayers + 2
171         ],
172         avoidClasses(clForest, 0, clPlayer, 20, clHill, 1, clFood, 10),
173         clFood);
175 log("Creating food treasures...");
176 var group = new SimpleGroup(
177         [new SimpleObject(oFoodTreasure, 2,3, 0,2)],
178         true, clTreasure
180 createObjectGroupsDeprecated(group, 0,
181         avoidClasses(clForest, 0, clPlayer, 18, clHill, 1, clFood, 5),
182         3 * numPlayers, 50
185 log("Creating food treasures...");
186 group = new SimpleGroup(
187         [new SimpleObject(oWoodTreasure, 2,3, 0,2)],
188         true, clTreasure
190 createObjectGroupsDeprecated(group, 0,
191         avoidClasses(clForest, 0, clPlayer, 18, clHill, 1),
192         3 * numPlayers, 50
195 Engine.SetProgress(80);
197 createStragglerTrees(
198         [oCarob, oAleppoPine],
199         avoidClasses(clForest, 1, clHill, 1, clPlayer, 10, clMetal, 6, clRock, 6, clTreasure, 4),
200         clForest,
201         stragglerTrees);
203 createStragglerTrees(
204         [aCarob, aAleppoPine],
205         stayClasses(clHill, 2),
206         clForest,
207         stragglerTrees / 5);
209 placePlayersNomad(clPlayer, avoidClasses(clForest, 1, clMetal, 4, clRock, 4, clHill, 4, clFood, 2));
211 setFogFactor(0.2);
212 setFogThickness(0.14);
214 setPPEffect("hdr");
215 setPPContrast(0.45);
216 setPPSaturation(0.56);
217 setPPBloom(0.1);
219 ExportMap();