Skip to content

Instantly share code, notes, and snippets.

@hadware
Last active March 13, 2018 20:47
Show Gist options
  • Save hadware/da98c75421e51c956bea74756a403d1d to your computer and use it in GitHub Desktop.
Save hadware/da98c75421e51c956bea74756a403d1d to your computer and use it in GitHub Desktop.
A settlers random map script for Age of Mythology
/* 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