Last active
March 13, 2018 20:47
-
-
Save hadware/da98c75421e51c956bea74756a403d1d to your computer and use it in GitHub Desktop.
A settlers random map script for Age of Mythology
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* Map Name: settlers.xs | |
*/ | |
//Include the library file. | |
include "MmM_FE_lib.xs"; | |
// Main entry point for random map script | |
void main(void){ | |
/* **************************** */ | |
/* Section 1 Map Initialization */ | |
/* **************************** */ | |
// Create loading bar. | |
rmSetStatusText("",0.01); | |
int playerTiles = 23400; | |
int mapSizeMultiplier = 2; | |
int continentCount = rmRandInt(12,18); | |
int size=2.0*sqrt(cNumberNonGaiaPlayers*playerTiles/0.9); | |
rmEchoInfo("Map size="+size+"m x "+size+"m"); | |
rmSetMapSize(size, size); | |
rmSetSeaLevel(0.0); | |
rmSetSeaType("mediterranean sea"); | |
rmTerrainInitialize("GrassDirt25"); | |
rmTerrainInitialize("water"); | |
rmSetLightingSet("night"); | |
rmSetStatusText("",0.07); | |
/* ***************** */ | |
/* Section 2 Classes */ | |
/* ***************** */ | |
int classCenter=rmDefineClass("center"); | |
int classContinent=rmDefineClass("continents"); | |
int classForest=rmDefineClass("forest"); | |
int classSettlements = rmDefineClass("settlements"); | |
rmSetStatusText("",0.13); | |
/* **************************** */ | |
/* Section 3 Global Constraints */ | |
/* **************************** */ | |
// For Areas and Objects. Local Constraints should be defined right before they are used. | |
int centerConstraint=rmCreateClassDistanceConstraint("stay away from center", classCenter, 50.0); | |
int shortAvoidImpassableLand=rmCreateTerrainDistanceConstraint("short avoid impassable land", "Land", false, 5.0); | |
int continentVsContinentConstraint=rmCreateClassDistanceConstraint("stay away from other continents", classContinent, 20); | |
int avoidAll=rmCreateTypeDistanceConstraint("avoid all", "all", 6.0); | |
/* ******************************** */ | |
/* Section 4 Starting Center Island */ | |
/* ******************************** */ | |
int centerIslandID=rmCreateArea("center island"); | |
rmSetAreaSize(centerIslandID, rmAreaTilesToFraction(300*mapSizeMultiplier), rmAreaTilesToFraction(400*mapSizeMultiplier)); | |
rmSetAreaLocation(centerIslandID, 0.5, 0.5); | |
rmSetAreaTerrainType(centerIslandID, "GrassDirt25"); | |
rmSetAreaBaseHeight(centerIslandID, 3.0); | |
rmSetAreaSmoothDistance(centerIslandID, 10); | |
rmSetAreaHeightBlend(centerIslandID, 2); | |
rmSetAreaMinBlobs(centerIslandID, 3*mapSizeMultiplier); | |
rmSetAreaMaxBlobs(centerIslandID, 5*mapSizeMultiplier); | |
rmSetAreaMinBlobDistance(centerIslandID, 6.0); | |
rmSetAreaMaxBlobDistance(centerIslandID, 10.0*mapSizeMultiplier); | |
rmSetAreaCoherence(centerIslandID, 0.5); | |
rmAddAreaToClass(centerIslandID, classCenter); | |
rmBuildArea(centerIslandID); | |
/* ******************** */ | |
/* Section 5 Continents */ | |
/* ******************** */ | |
for(int i, <continentCount){ | |
id=rmCreateArea("Continent"+i); | |
rmSetAreaSize(id, 0.2, 0.2); | |
rmAddAreaToClass(id, classContinent); | |
rmSetAreaMinBlobs(id, 3); | |
rmSetAreaMaxBlobs(id, 6); | |
rmSetAreaMinBlobDistance(id, 15.0); | |
rmSetAreaMaxBlobDistance(id, 25.0); | |
rmSetAreaCoherence(id, 0.5); | |
rmSetAreaBaseHeight(id, 2.0); | |
rmSetAreaSmoothDistance(id, 10); | |
rmSetAreaHeightBlend(id, 2); | |
rmAddAreaConstraint(id, continentVsContinentConstraint); | |
rmAddAreaConstraint(id, centerConstraint); | |
/* rmAddConnectionArea(teamShallowsID, id);*/ | |
/* rmAddConnectionArea(shallowsID, id);*/ | |
rmSetAreaTerrainType(id, "GrassA"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment