Index: simutrans/config/simuconf.tab
===================================================================
--- simutrans/config/simuconf.tab	(Revision 11956)
+++ simutrans/config/simuconf.tab	(Arbeitskopie)
@@ -586,9 +586,23 @@
 # 2: if humidity climate generation is enabled, distribute trees based on humidity (else use 1)
 #tree_distribution = 2
 
-# default groundwater on new maps
+################################# landscape stuff #################################
+# default groundwater (sea level) on new maps
 # groundwater = -2
+# max_mountain_height = 160
+# map_roughness = 4
+# winter_snowline = 7
 
+# climate hight = min, max
+# desert_height     = -3,0
+# tropic_height     = -3,0
+# mediterran_height = -2,1
+# temperate_height  =  0,8
+# tundra_height     =  7,9
+# rocky_height      =  8,10
+# arctic_height     = 10,13
+
+
 # maximum height level for lake creation (-128 or below ground water: no lakes)
 lake_height = 8
 
Index: src/simutrans/dataobj/settings.cc
===================================================================
--- src/simutrans/dataobj/settings.cc	(Revision 11956)
+++ src/simutrans/dataobj/settings.cc	(Arbeitskopie)
@@ -27,6 +27,7 @@
 #include "translator.h"
 
 #include "../tpl/minivec_tpl.h"
+#include "../descriptor/ground_desc.h"
 
 
 #define NEVER 0xFFFFU
@@ -1283,7 +1284,26 @@
 		tree_distribution = no_trees ? TREE_DIST_NONE : TREE_DIST_RANDOM;
 	}
 
+	// landscape stuff
 	groundwater       = contents.get_int_clamped("groundwater", groundwater, -128, 127);
+	max_mountain_height = (double)contents.get_int_clamped( "max_mountain_height", (int)max_mountain_height, 0, 1000 );
+	map_roughness       = (double)(contents.get_int_clamped( "map_roughness", (int)(map_roughness *20.0 + 0.5)-8, 0, 10 ) +8) / 20.0;
+	winter_snowline     = contents.get_int_clamped("winter_snowline", winter_snowline, groundwater, 127);
+
+	// all cimate height
+	for( int i = desert_climate; i < MAX_CLIMATES; i++ ) {
+		char name[ 32 ];
+		sprintf( name, "%s_height", ground_desc_t::get_climate_name_from_bit( (climate)(i) ) );
+		const char *command = contents.get( name );
+		int c1, c2;
+		if( sscanf( command, "%i,%i", &c1, &c2 ) == 2 ) {
+			if (c1 <= c2 && c1 >= groundwater && c2 < 127 ) {
+				climate_borders[i][0] = c1;
+				climate_borders[i][1] = c2;
+			}
+		}
+	}
+
 	tree_distribution = contents.get_int_clamped( "tree_distribution", tree_distribution, TREE_DIST_NONE, TREE_DIST_COUNT-1 );
 	lake_height       = contents.get_int("no_lakes", 1 )==0 ? -128 : lake_height;
 	lake_height       = contents.get_int_clamped("lake_height", lake_height, groundwater, 127 );
