diff -Naur bomberclone-0.11.6.2/include/basic.h bomberclone-0.11.6.2-blambi/include/basic.h
--- bomberclone-0.11.6.2/include/basic.h	2005-04-10 03:36:22.000000000 +0200
+++ bomberclone-0.11.6.2-blambi/include/basic.h	2006-07-17 17:27:04.000000000 +0200
@@ -164,7 +164,8 @@
 enum _mapselection {
         MAPS_select = 0,
         MAPS_randmap,
-        MAPS_randgen
+        MAPS_randgen,
+        MAPS_morerand
 };
 
 enum _mstatus {
diff -Naur bomberclone-0.11.6.2/include/map.h bomberclone-0.11.6.2-blambi/include/map.h
--- bomberclone-0.11.6.2/include/map.h	2004-02-08 02:34:46.000000000 +0100
+++ bomberclone-0.11.6.2-blambi/include/map.h	2006-07-17 17:38:32.000000000 +0200
@@ -83,6 +83,7 @@
 // map.c
 extern void map_random ();
 extern void map_genrandom ();
+extern void map_genmorerandom ();
 extern void init_map_tileset();
 extern void map_new (char *filename);
 extern void map_load (FILE * fmap);
diff -Naur bomberclone-0.11.6.2/src/map.c bomberclone-0.11.6.2-blambi/src/map.c
--- bomberclone-0.11.6.2/src/map.c	2004-04-03 16:48:43.000000000 +0200
+++ bomberclone-0.11.6.2-blambi/src/map.c	2006-07-17 19:14:03.000000000 +0200
@@ -60,8 +60,12 @@
 
     // Clean and create the field //
     if (fmap == NULL)
-        map_genrandom ();
-
+		map_genrandom ();
+	
+	/* Generate a More random map if requested */
+    if (map.map_selection == MAPS_morerand)
+        map_genmorerandom();
+    
     if (map.type == -1)
         map.type = s_random (MAPT_max);
 
@@ -197,6 +201,54 @@
 	// map_ensure_corner_start_points();
 }
 
+void
+map_genmorerandom ()
+{
+    int x,
+      y,
+      d,
+      ra;
+
+    /* This is an enhanced version of genrandom() used by "more random" */
+    d_printf("genmorerandom: *** init ***\n");
+    /* if we can't load the map check first the fieldsize settings */
+    if (map.size.x < MIN_FIELDSIZE_X)
+        map.size.x = MIN_FIELDSIZE_X;
+    if (map.size.x > MAX_FIELDSIZE_X)
+        map.size.x = MAX_FIELDSIZE_X;
+
+    for (x = 0; x < map.size.x; x++)
+        for (y = 0; y < map.size.y; y++) {
+            if ((y == 0) || (y == map.size.y - 1))
+                map.field[x][y].type = FT_block;
+            else if ((x == 0) || (x == map.size.x - 1))
+                map.field[x][y].type = FT_block;
+            else {
+                // create random field
+                ra = s_random (256) & 3;
+                d_printf("genmorerandom: ra = %i\n", ra);
+                
+                if (ra == 0)
+                    map.field[x][y].type = FT_nothing;
+                else if (ra == 1)
+                    map.field[x][y].type = FT_block;
+                else
+                    map.field[x][y].type = FT_stone;
+            }
+
+            for (d = 0; d < 4; d++)
+                map.field[x][y].ex[d].frame = map.field[x][y].ex[d].count = 0;
+            map.field[x][y].ex_nr = -1;
+            map.field[x][y].frame = 0.0f;
+            map.field[x][y].special = FT_nothing;
+        }
+	
+	d_printf("genmorerandom: *** exit ***\n");
+	/* set the corners of the map to be valid start points */
+	
+	// map_ensure_corner_start_points();
+}
+
 
 /* will set the playerposition but in a way that we won't start on a block */
 /* i am just too lazy to write this all again and again */
@@ -265,6 +317,8 @@
         		break;
     		case (2):
         		map_new (NULL);
+            case (3):
+				map_new (NULL); /* for more random */
         	break;
 		}
 		if (map.random_tileset)
diff -Naur bomberclone-0.11.6.2/src/mapmenu.c bomberclone-0.11.6.2-blambi/src/mapmenu.c
--- bomberclone-0.11.6.2/src/mapmenu.c	2004-12-13 22:29:31.000000000 +0100
+++ bomberclone-0.11.6.2-blambi/src/mapmenu.c	2006-07-17 17:27:45.000000000 +0200
@@ -14,7 +14,8 @@
     _charlist maptypes[] = {
         {"selected file", NULL},
         {"random file", NULL},
-        {"autogenerated", NULL}
+        {"autogenerated", NULL},
+        {"more random", NULL}
     }, tiletypes[] = {
         {
         "random"}, {
@@ -27,7 +28,7 @@
     char mname[100];
 	_menu *menu;
 
-    charlist_fillarraypointer (maptypes, 3);
+    charlist_fillarraypointer (maptypes, 4);
     charlist_fillarraypointer (tiletypes, 2);
     charlist_fillarraypointer (tunneltypes, 3);
 
@@ -52,6 +53,12 @@
             menu_create_entry (menu, "X Size:", 20, 160, 120, &map.size.x, MAX_FIELDSIZE_X, MENU_entryint16, 2);
             menu_create_entry (menu, "Y Size:", 20, 180, 120, &map.size.y, MAX_FIELDSIZE_Y, MENU_entryint16, 3);
             break;
+        case (MAPS_morerand): // More Random
+            selmt = charlist_findtext (maptypes, "more random");
+            d_printf ("more random\n");
+            menu_create_entry (menu, "X Size:", 20, 160, 120, &map.size.x, MAX_FIELDSIZE_X, MENU_entryint16, 2);
+            menu_create_entry (menu, "Y Size:", 20, 180, 120, &map.size.y, MAX_FIELDSIZE_Y, MENU_entryint16, 3);
+            break;
         }
         if (map.random_tileset)
 			selts = &tiletypes[0];
