1 Engine.LoadLibrary("rmgen");
3 const tCity = "desert_city_tile";
4 const tCityPlaza = "desert_city_tile_plaza";
5 const tFineSand = "desert_sand_smooth";
6 const tDirt1 = "desert_dirt_rough_2";
7 const tSandDunes = "desert_sand_dunes_50";
8 const tDirt2 = "desert_dirt_rough";
9 const tDirtCracks = "desert_dirt_cracks";
10 const tShore = "desert_shore_stones";
11 const tWaterDeep = "desert_shore_stones_wet";
12 const tLush = "desert_grass_a";
13 const tSLush = "desert_grass_a_sand";
15 const oGrapeBush = "gaia/flora_bush_grapes";
16 const oCamel = "gaia/fauna_camel";
17 const oGazelle = "gaia/fauna_gazelle";
18 const oGoat = "gaia/fauna_goat";
19 const oStoneLarge = "gaia/geology_stonemine_desert_badlands_quarry";
20 const oStoneSmall = "gaia/geology_stone_desert_small";
21 const oMetalLarge = "gaia/geology_metal_desert_slabs";
22 const oDatePalm = "gaia/flora_tree_date_palm";
23 const oSDatePalm = "gaia/flora_tree_cretan_date_palm_short";
24 const oWoodTreasure = "gaia/special_treasure_wood";
25 const oFoodTreasure = "gaia/special_treasure_food_bin";
27 const aBush1 = "actor|props/flora/bush_desert_a.xml";
28 const aBush2 = "actor|props/flora/bush_desert_dry_a.xml";
29 const aBush3 = "actor|props/flora/bush_medit_sm_dry.xml";
30 const aBush4 = "actor|props/flora/plant_desert_a.xml";
31 const aDecorativeRock = "actor|geology/stone_desert_med.xml";
33 const pForest = [tLush + TERRAIN_SEPARATOR + oDatePalm, tLush + TERRAIN_SEPARATOR + oSDatePalm, tLush];
37 const numPlayers = getNumPlayers();
38 const mapSize = getMapSize();
40 var clPlayer = createTileClass();
41 var clForest = createTileClass();
42 var clWater = 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 var [playerIDs, playerX, playerZ, playerAngle] = playerPlacementCircle(0.35);
53 "PlayerPlacement": [playerIDs, playerX, playerZ],
54 "PlayerTileClass": clPlayer,
55 "BaseResourceClass": clBaseResource,
57 "outerTerrain": tCityPlaza,
63 "template": oGrapeBush
67 { "template": oMetalLarge },
68 { "template": oStoneLarge }
72 "template": oSDatePalm
78 Engine.SetProgress(30);
80 log("Creating oases...");
81 for (let i = 0; i < numPlayers; ++i)
83 new ClumpPlacer(diskArea(scaleByMapSize(16, 60)) * 0.185,
87 mapSize * (0.5 + 0.18 * Math.cos(playerAngle[i]) + scaleByMapSize(1, 4) * Math.cos(playerAngle[i]) / 100),
88 mapSize * (0.5 + 0.18 * Math.sin(playerAngle[i]) + scaleByMapSize(1, 4) * Math.sin(playerAngle[i]) / 100)),
91 [tSLush ,[tLush, pForest], [tLush, pForest], tShore, tShore, tWaterDeep],
93 new SmoothElevationPainter(ELEVATION_MODIFY, -3, 10),
97 Engine.SetProgress(50);
99 log("Creating grass patches...");
100 for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
102 new ClumpPlacer(size, 0.3, 0.06, 0.5),
105 [[tDirt1, tSandDunes], [tSandDunes, tDirt2], [tDirt2, tDirt1]],
110 avoidClasses(clForest, 0, clPlayer, 0, clWater, 1, clDirt, 5),
111 scaleByMapSize(15, 45));
112 Engine.SetProgress(55);
114 log("Creating dirt patches...");
115 for (let size of [scaleByMapSize(3, 48), scaleByMapSize(5, 84), scaleByMapSize(8, 128)])
117 new ClumpPlacer(size, 0.3, 0.06, 0.5),
120 [[tDirt2, tDirtCracks], [tDirt2, tFineSand], [tDirtCracks, tFineSand]],
125 avoidClasses(clForest, 0, clDirt, 5, clPlayer, 0, clWater, 1),
126 scaleByMapSize(15, 45));
127 Engine.SetProgress(60);
129 log("Creating stone mines...");
130 var group = new SimpleGroup([new SimpleObject(oStoneSmall, 0,2, 0,4), new SimpleObject(oStoneLarge, 1,1, 0,4)], true, clRock);
131 createObjectGroupsDeprecated(group, 0,
132 avoidClasses(clForest, 1, clPlayer, 26, clRock, 10, clWater, 1),
133 2*scaleByMapSize(4,16), 100
136 log("Creating small stone quarries...");
137 group = new SimpleGroup([new SimpleObject(oStoneSmall, 2,5, 1,3)], true, clRock);
138 createObjectGroupsDeprecated(group, 0,
139 avoidClasses(clForest, 1, clPlayer, 26, clRock, 10, clWater, 1),
140 2*scaleByMapSize(4,16), 100
143 log("Creating metal mines...");
144 group = new SimpleGroup([new SimpleObject(oMetalLarge, 1,1, 0,4)], true, clMetal);
145 createObjectGroupsDeprecated(group, 0,
146 avoidClasses(clForest, 1, clPlayer, 26, clMetal, 10, clRock, 5, clWater, 1),
147 2*scaleByMapSize(4,16), 100
150 log("Creating small decorative rocks...");
151 group = new SimpleGroup(
152 [new SimpleObject(aDecorativeRock, 1,3, 0,1)],
155 createObjectGroupsDeprecated(
157 avoidClasses(clWater, 1, clForest, 0, clPlayer, 0),
158 scaleByMapSize(16, 262), 50
161 log("Creating shrubs...");
162 group = new SimpleGroup(
163 [new SimpleObject(aBush2, 1,2, 0,1), new SimpleObject(aBush1, 1,3, 0,2), new SimpleObject(aBush4, 1,2, 0,1), new SimpleObject(aBush3, 1,3, 0,2)],
166 createObjectGroupsDeprecated(
168 avoidClasses(clWater, 1, clPlayer, 0),
169 scaleByMapSize(10, 100), 50
172 log("Creating small decorative rocks on mines...");
173 group = new SimpleGroup(
174 [new SimpleObject(aDecorativeRock, 1,3, 0,1)],
177 createObjectGroupsDeprecated(
179 stayClasses(clRock, 0),
180 5*scaleByMapSize(16, 262), 50
183 group = new SimpleGroup(
184 [new SimpleObject(aDecorativeRock, 1,3, 0,1)],
187 createObjectGroupsDeprecated(
189 stayClasses(clMetal, 0),
190 5*scaleByMapSize(16, 262), 50
193 log("Creating gazelles...");
194 group = new SimpleGroup([new SimpleObject(oGazelle, 5,7, 0,4)], true, clFood);
195 createObjectGroupsDeprecated(group, 0,
196 borderClasses(clWater, 8, 5),
197 6*scaleByMapSize(5,20), 50
200 log("Creating goats...");
201 group = new SimpleGroup([new SimpleObject(oGoat, 2,4, 0,3)], true, clFood);
202 createObjectGroupsDeprecated(group, 0,
203 borderClasses(clWater, 8, 5),
204 5*scaleByMapSize(5,20), 50
207 log("Creating treasures...");
208 group = new SimpleGroup([new SimpleObject(oFoodTreasure, 1,1, 0,2)], true, clTreasure);
209 createObjectGroupsDeprecated(group, 0,
210 borderClasses(clWater, 8, 5),
211 3*scaleByMapSize(5,20), 50
214 group = new SimpleGroup([new SimpleObject(oWoodTreasure, 1,1, 0,2)], true, clTreasure);
215 createObjectGroupsDeprecated(group, 0,
216 borderClasses(clWater, 8, 5),
217 3*scaleByMapSize(5,20), 50
220 log("Creating camels...");
221 group = new SimpleGroup([new SimpleObject(oCamel, 2,4, 0,2)], true, clFood);
222 createObjectGroupsDeprecated(group, 0,
223 borderClasses(clWater, 14, 5),
224 5*scaleByMapSize(5,20), 50
227 placePlayersNomad(clPlayer, avoidClasses(clWater, 4, clForest, 1, clMetal, 4, clRock, 4, clFood, 2, clTreasure, 2));
230 setSunColor(0.746, 0.718, 0.539);
231 setWaterColor(0, 0.227, 0.843);
232 setWaterTint(0, 0.545, 0.859);
233 setWaterWaviness(1.0);
234 setWaterType("clap");
235 setWaterMurkiness(0.5);