RMS.LoadLibrary("rmgen");vartGrass=["steppe_grass_a","steppe_grass_b","steppe_grass_c","steppe_grass_d"];vartGrassPForest="steppe_grass_c";vartGrassDForest="steppe_grass_c";vartGrassA="steppe_grass_b";vartGrassB="steppe_grass_c";vartGrassC=["steppe_grass_b","steppe_grass_c","steppe_grass_d"];vartDirt=["steppe_dirt_a","steppe_dirt_b"];vartRoad="road_stones";vartRoadWild="road_stones";vartShoreBlend="desert_shore_stones";vartShore="dirta";vartWater="desert_sand_wet";// gaia entities
varoBeech="gaia/flora_tree_poplar_lombardy";varoBush="gaia/flora_bush_temperate";varoBerryBush="gaia/flora_bush_berry";varoChicken="gaia/fauna_chicken";varoDeer="gaia/fauna_rabbit";varoFish="gaia/fauna_fish";varoSheep="gaia/fauna_sheep";varoStoneLarge="gaia/geology_stonemine_medit_quarry";varoStoneSmall="gaia/geology_stone_mediterranean";varoMetalLarge="gaia/geology_metal_mediterranean_slabs";// decorative props
varaGrass="actor|props/flora/grass_soft_small_tall.xml";varaGrassShort="actor|props/flora/grass_soft_large.xml";varaRockLarge="actor|geology/stone_granite_med.xml";varaRockMedium="actor|geology/stone_granite_med.xml";varaBushMedium="actor|props/flora/bush_medit_me.xml";varaBushSmall="actor|props/flora/bush_medit_sm.xml";varpForestD=[tGrassDForest+TERRAIN_SEPARATOR+oBeech,tGrassDForest];varpForestP=[tGrassPForest+TERRAIN_SEPARATOR+oBeech,tGrassPForest];constBUILDING_ANGlE=-PI/4;// initialize map
log("Initializing map...");InitMap();varnumPlayers=getNumPlayers();varmapSize=getMapSize();varmapArea=mapSize*mapSize;// create tile classes
varclPlayer=createTileClass();varclHill=createTileClass();varclForest=createTileClass();varclWater=createTileClass();varclDirt=createTileClass();varclRock=createTileClass();varclMetal=createTileClass();varclFood=createTileClass();varclBaseResource=createTileClass();varclSettlement=createTileClass();// randomize player order
varplayerIDs=[];for(vari=0;i<numPlayers;i++){playerIDs.push(i+1);}playerIDs=sortPlayers(playerIDs);// place players
varplayerX=newArray(numPlayers);varplayerZ=newArray(numPlayers);varplayerAngle=newArray(numPlayers);varstartAngle=randFloat(0,TWO_PI);for(vari=0;i<numPlayers;i++){playerAngle[i]=startAngle+i*TWO_PI/numPlayers;playerX[i]=0.5+0.35*cos(playerAngle[i]);playerZ[i]=0.5+0.35*sin(playerAngle[i]);}for(vari=0;i<numPlayers;i++){varid=playerIDs[i];log("Creating base for player "+id+"...");// some constants
varradius=scaleByMapSize(15,25);varcliffRadius=2;varelevation=20;// get the x and z in tiles
varfx=fractionToTiles(playerX[i]);varfz=fractionToTiles(playerZ[i]);varix=round(fx);variz=round(fz);addToClass(ix,iz,clPlayer);addToClass(ix+5,iz,clPlayer);addToClass(ix,iz+5,clPlayer);addToClass(ix-5,iz,clPlayer);addToClass(ix,iz-5,clPlayer);// create the city patch
varcityRadius=radius/3;varplacer=newClumpPlacer(PI*cityRadius*cityRadius,0.6,0.3,10,ix,iz);varpainter=newLayeredPainter([tRoadWild,tRoad],[1]);createArea(placer,painter,null);// create starting units
placeCivDefaultEntities(fx,fz,id,BUILDING_ANGlE);// create animals
for(varj=0;j<2;++j){varaAngle=randFloat(0,TWO_PI);varaDist=7;varaX=round(fx+aDist*cos(aAngle));varaZ=round(fz+aDist*sin(aAngle));vargroup=newSimpleGroup([newSimpleObject(oChicken,5,5,0,3)],true,clBaseResource,aX,aZ);createObjectGroup(group,0);}// create berry bushes
varbbAngle=randFloat(0,TWO_PI);varbbDist=12;varbbX=round(fx+bbDist*cos(bbAngle));varbbZ=round(fz+bbDist*sin(bbAngle));group=newSimpleGroup([newSimpleObject(oBerryBush,5,5,0,3)],true,clBaseResource,bbX,bbZ);createObjectGroup(group,0);// create metal mine
varmAngle=bbAngle;whi