diff --git a/game/modules/tome/data/general/grids/mountain.lua b/game/modules/tome/data/general/grids/mountain.lua
index a2dcb27559736f3fb384da60fa5a821258d0e6a4..d172a962b99a459406dab997cf51c848b3d916a1 100644
--- a/game/modules/tome/data/general/grids/mountain.lua
+++ b/game/modules/tome/data/general/grids/mountain.lua
@@ -71,6 +71,7 @@ end
 
 newEntity{
 	define_as = "HARDMOUNTAIN_WALL",
+	type = "rockwall", subtype = "rock",
 	name = "hard rocky mountain", image = "terrain/rocky_mountain.png",
 	display = '#', color=colors.UMBER, back_color=colors.LIGHT_UMBER,
 	always_remember = true,
@@ -90,6 +91,7 @@ for i = 1, 6 do newEntity{ base="HARDMOUNTAIN_WALL", define_as = "HARDMOUNTAIN_W
 -----------------------------------------
 newEntity{
 	define_as = "ROCKY_UP_WILDERNESS",
+	type = "floor", subtype = "rock",
 	name = "exit to the worldmap", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/worldmap.png"}},
 	display = '<', color_r=255, color_g=0, color_b=255,
 	always_remember = true,
@@ -100,6 +102,7 @@ newEntity{
 
 newEntity{
 	define_as = "ROCKY_UP8",
+	type = "floor", subtype = "rock",
 	name = "way to the previous level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_8.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -108,6 +111,7 @@ newEntity{
 }
 newEntity{
 	define_as = "ROCKY_UP2",
+	type = "floor", subtype = "rock",
 	name = "way to the previous level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_2.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -116,6 +120,7 @@ newEntity{
 }
 newEntity{
 	define_as = "ROCKY_UP4",
+	type = "floor", subtype = "rock",
 	name = "way to the previous level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_4.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -124,6 +129,7 @@ newEntity{
 }
 newEntity{
 	define_as = "ROCKY_UP6",
+	type = "floor", subtype = "rock",
 	name = "way to the previous level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_6.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -133,6 +139,7 @@ newEntity{
 
 newEntity{
 	define_as = "ROCKY_DOWN8",
+	type = "floor", subtype = "rock",
 	name = "way to the next level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_8.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -141,6 +148,7 @@ newEntity{
 }
 newEntity{
 	define_as = "ROCKY_DOWN2",
+	type = "floor", subtype = "rock",
 	name = "way to the next level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_2.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -149,6 +157,7 @@ newEntity{
 }
 newEntity{
 	define_as = "ROCKY_DOWN4",
+	type = "floor", subtype = "rock",
 	name = "way to the next level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_4.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -157,6 +166,7 @@ newEntity{
 }
 newEntity{
 	define_as = "ROCKY_DOWN6",
+	type = "floor", subtype = "rock",
 	name = "way to the next level", image = "terrain/rocky_ground.png", add_displays = {class.new{image="terrain/way_next_6.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
diff --git a/game/modules/tome/data/general/grids/slime.lua b/game/modules/tome/data/general/grids/slime.lua
index e5876cc9fbcc3d81a37bdc4cd001de1131458af6..8d0eee136c081df993b1a637c0f4c404e2840101 100644
--- a/game/modules/tome/data/general/grids/slime.lua
+++ b/game/modules/tome/data/general/grids/slime.lua
@@ -51,7 +51,8 @@ for i = 1, 5 do newEntity{ base="SLIME_WALL", define_as = "SLIME_WALL"..i, image
 -- Level changers
 -----------------------------------------
 newEntity{
-	define_as = "SLIME_UP", image = "terrain/slime/slime_floor_01.png", add_mos = {{image="terrain/slime/slime_stairs_up_left_01.png"}},
+	define_as = "SLIME_UP", image = "terrain/slime/slime_floor_01.png",
+	add_displays = {class.new{image="terrain/slime/slime_stairs_up_left_01.png"}},
 	type = "floor", subtype = "slime",
 	name = "previous level",
 	display = '<', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
@@ -62,7 +63,8 @@ newEntity{
 }
 
 newEntity{
-	define_as = "SLIME_DOWN", image = "tterrain/slime/slime_floor_01.png", add_mos = {{image="terrain/slime/slime_stair_down_01.png"}},
+	define_as = "SLIME_DOWN", image = "tterrain/slime/slime_floor_01.png",
+	add_displays = {class.new{image="terrain/slime/slime_stair_down_01.png"}},
 	type = "floor", subtype = "slime",
 	name = "next level",
 	display = '>', color=colors.LIGHT_GREEN, back_color=colors.GREEN,
@@ -84,7 +86,7 @@ newEntity{
 	notice = true,
 	always_remember = true,
 	block_sight = true,
---	nice_editer = slime_wall_editer,
+	nice_editer = slime_wall_editer,
 	is_door = true,
 	door_opened = "SLIME_DOOR_OPEN",
 	dig = "FLOOR",
@@ -95,7 +97,7 @@ newEntity{
 	name = "open slime door",
 	display = "'", color=colors.LIGHT_GREEN, back_color=colors.GREEN,
 	always_remember = true,
---	nice_editer = slime_wall_editer,
+	nice_editer = slime_wall_editer,
 	is_door = true,
 	door_closed = "SLIME_DOOR",
 }
diff --git a/game/modules/tome/data/zones/infinite-dungeon/grids.lua b/game/modules/tome/data/zones/infinite-dungeon/grids.lua
index 7eb01835ba74dad271e2c625f4f3191fa1be9a2b..4a13bce258376921cca5268ba92b7c2b03dfa93c 100644
--- a/game/modules/tome/data/zones/infinite-dungeon/grids.lua
+++ b/game/modules/tome/data/zones/infinite-dungeon/grids.lua
@@ -50,7 +50,7 @@ newEntity{
 newEntity{
 	define_as = "UNDERGROUND_ROCK",
 	type = "wall", subtype = "underground",
-	name = "huge loose rock", image = "terrain/underground_floor.png", add_mos = {{image="terrain/huge_rock.png"}},
+	name = "huge loose rock", image = "terrain/underground_floor.png", add_mos = {{image="terrain/maze_rock.png"}},
 	display = '+', color=colors.GREY, back_color={r=44,g=95,b=43},
 	notice = true,
 	always_remember = true,
@@ -63,7 +63,7 @@ newEntity{
 newEntity{
 	define_as = "CRYSTAL_ROCK",
 	type = "wall", subtype = "crystal",
-	name = "huge loose rock", image = "terrain/crystal_floor1.png", add_mos = {{image="terrain/huge_rock.png"}},
+	name = "huge loose rock", image = "terrain/crystal_floor1.png", add_mos = {{image="terrain/maze_rock.png"}},
 	display = '+', color=colors.GREY, back_color={r=44,g=95,b=43},
 	notice = true,
 	always_remember = true,
@@ -76,7 +76,7 @@ newEntity{
 newEntity{
 	define_as = "DESERT_ROCK",
 	type = "wall", subtype = "sand",
-	name = "huge loose rock", image = "terrain/sandfloor.png", add_mos = {{image="terrain/huge_rock.png"}},
+	name = "huge loose rock", image = "terrain/sandfloor.png", add_mos = {{image="terrain/maze_rock.png"}},
 	display = '+', color=colors.GREY, back_color={r=44,g=95,b=43},
 	notice = true,
 	always_remember = true,
@@ -86,10 +86,23 @@ newEntity{
 	dig = "SAND",
 }
 
+newEntity{
+	define_as = "SAND_ROCK",
+	type = "wall", subtype = "sand",
+	name = "huge loose rock", image = "terrain/sand.png", add_mos = {{image="terrain/maze_rock.png"}},
+	display = '+', color={r=203,g=189,b=72}, back_color={r=93,g=79,b=22},
+	notice = true,
+	always_remember = true,
+	block_sight = true,
+	is_door = true,
+	door_opened = "UNDERGROUND_SAND",
+	dig = "UNDERGROUND_SAND",
+}
+
 newEntity{
 	define_as = "CAVE_ROCK",
 	type = "wall", subtype = "grass",
-	name = "huge loose rock", image = "terrain/cave/cave_floor_1_01.png", add_mos = {{image="terrain/huge_rock.png"}},
+	name = "huge loose rock", image = "terrain/cave/cave_floor_1_01.png", add_mos = {{image="terrain/maze_rock.png"}},
 	display = '+', color=colors.GREY, back_color={r=44,g=95,b=43},
 	notice = true,
 	always_remember = true,
@@ -112,6 +125,47 @@ newEntity{
 	dig = "JUNGLE_GRASS",
 }
 
+newEntity{
+	define_as = "AUTUMN_ROCK",
+	type = "wall", subtype = "autumn_grass",
+	name = "huge loose rock", image = "terrain/grass/autumn_grass_main_01.png", add_mos = {{image="terrain/huge_rock.png"}},
+	display = '+', color=colors.GREY, back_color={r=44,g=95,b=43},
+	notice = true,
+	always_remember = true,
+	block_sight = true,
+	is_door = true,
+	door_opened = "AUTUMN_GRASS",
+	dig = "AUTUMN_GRASS",
+}
+
+newEntity{
+	define_as = "LAVA_ROCK",
+	type = "wall", subtype = "lava",
+	name = "huge loose rock", image = "terrain/lava_floor.png", add_mos = {{image="terrain/maze_rock.png"}},
+--	display = '+', color=colors.GREY, back_color={r=44,g=95,b=43},
+	display = '+', color=colors.GREY, back_color=colors.DARK_GREY,
+	shader = "lava",
+	notice = true,
+	always_remember = true,
+	block_sight = true,
+	is_door = true,
+	door_opened = "LAVA_FLOOR_FAKE",
+	dig = "LAVA_FLOOR_FAKE",
+}
+
+newEntity{ define_as = "BURNT_DOOR",
+	type = "wall", subtype = "burnt",
+	name='burnt passage',
+	display='.', color=colors.UMBER, back_color=colors.DARK_GREY, image="terrain/grass_burnt1.png",
+	add_mos = {{image="terrain/burnt_floor_deco6.png"},{image="terrain/trees/small_burned_tree_01_trunk.png", display_w=0.5, display_h=.5, display_x=0.5, display_y=0.5}, {image="terrain/trees/burned_tree_01_trunk.png", display_w=0.5, display_h=.5, display_x=0, display_y=0.5}, {image="terrain/trees/small_burned_tree_01_trunk.png", display_w=0.5, display_h=.5, display_x=0.5, display_y=0}, {image="terrain/trees/burned_tree_01_trunk.png", display_w=0.5, display_h=.5, display_x=0, display_y=0}},
+	notice = true,
+	always_remember = true,
+	block_sight = true,
+	is_door = true,
+	door_opened = "BURNT_GROUND",
+	dig = "BURNT_GROUND",
+}
+
 -- add snowy door
 newEntity{
 	define_as = "SNOWY_GRASS_2",
@@ -147,9 +201,38 @@ for i = 1, 30 do
 	newEntity(class:makeNewTrees({base="SNOWY_TREE_2", define_as = "SNOWY_TREE_2"..i, image = "terrain/grass/snowy_grass_main_01.png"}, snowy_treesdef))
 end
 
+newEntity{ define_as = "ROCKY_SNOWY_DOOR",
+	type = "wall", subtype = "rock",
+	name='snowy passage',
+	display= '+', color=colors.UMBER, back_color=colors.LIGHT_UMBER,
+	image = "terrain/rocky_ground.png",
+	add_mos = {{image="terrain/icecave/icecave_rock_2_01.png", display_w=1, display_h=1.5, display_x=0, display_y=-0.5}, {image="terrain/icecave/icecave_rock_3_01.png", display_w=1, display_h=1.5, display_x=0, display_y=-0.5}},
+	notice = true,
+	always_remember = true,
+	block_sight = true,
+	is_door = true,
+	door_opened = "ROCKY_GROUND",
+	dig = "ROCKY_GROUND",
+}
+
+newEntity{ define_as = "SNOWY_DOOR",
+	type = "wall", subtype = "snowy_grass",
+	name='snowy passage',
+	display= '+', color=colors.LIGHT_GREEN, back_color={r=44,g=95,b=43},
+	image = "terrain/grass/snowy_grass_main_01.png",
+	add_mos = {{image="terrain/trees/narrow_cypress_trunk.png", display_w=1, display_h=1, display_x=-0.25, display_y=-0}, {image="terrain/trees/narrow_cypress_trunk.png", display_w=1, display_h=1, display_x=0.25, display_y=-0}, {image="terrain/icecave/icecave_rock_5_01.png", display_w=1.5, display_h=1.5, display_x=-.5, display_y=-0.5}, {image="terrain/trees/narrow_cypress_foliage_winter_01.png", display_w=1, display_h=1, display_x=-0.25, display_y=-0.25}, {image="terrain/trees/narrow_cypress_foliage_winter_02.png", display_w=1, display_h=1, display_x=0.25, display_y=-0.25}},
+	notice = true,
+	always_remember = true,
+	block_sight = true,
+	is_door = true,
+	door_opened = "SNOWY_GRASS",
+	dig = "SNOWY_GRASS",
+}
+
 newEntity{
 	define_as = "RIFT2",
-	name = "Temporal Rift", add_mos={{image="terrain/demon_portal2.png"}},
+	name = "Temporal Rift",
+	add_displays = {class.new{image="terrain/demon_portal2.png"}},
 	display = '&', color_r=255, color_g=0, color_b=220, back_color=colors.VIOLET,
 	notice = true,
 	always_remember = true,
@@ -247,7 +330,8 @@ newEntity{ base = "WATER_DOOR_OPEN_FAKE", define_as = "WATER_DOOR_OPEN_VERT_FAKE
 
 newEntity{
 	define_as = "WATER_DOWN_FAKE",
-	image = "terrain/underwater/subsea_floor_02.png", add_mos = {{image="terrain/underwater/subsea_stair_down_03_64.png"}},
+	image = "terrain/underwater/subsea_floor_02.png",
+	add_displays = {class.new{image="terrain/underwater/subsea_stair_down_03_64.png"}},
 	name = "next level",
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
@@ -287,7 +371,8 @@ for i = 1, 6 do newEntity{ base="LAVA_WALL_FAKE", define_as = "LAVA_WALL_FAKE"..
 newEntity{
 	define_as = "LAVA_DOWN_FAKE",
 	type = "floor", subtype = "lava",
-	name = "next level", image = "terrain/lava_floor.png", add_mos = {{image="terrain/stair_down.png"}},
+	name = "next level", image = "terrain/lava_floor.png",
+	add_displays = {class.new{image="terrain/stair_down.png"}},
 	display = '.', color=colors.RED, back_color=colors.DARK_GREY,
 	shader = "lava",
 	nice_tiler = { method="replace", base={"LAVA_FLOOR_FAKE", 100, 1, 16}},
diff --git a/game/modules/tome/data/zones/infinite-dungeon/zone.lua b/game/modules/tome/data/zones/infinite-dungeon/zone.lua
index 387690aded7aa444ea3598259b6cab123b37c044..f553f03c7625a3d7fe895384c5b549f4b010b350 100644
--- a/game/modules/tome/data/zones/infinite-dungeon/zone.lua
+++ b/game/modules/tome/data/zones/infinite-dungeon/zone.lua
@@ -99,7 +99,7 @@ return {
 		},
 	},
 	alter_level_data = function(zone, lev, data)
-print("Infinite Dungeon: alter_level_data", lev, "data:", data) table.print_shallow(data)
+--print("Infinite Dungeon: alter_level_data", lev, "data:", data) table.print_shallow(data)
 		
 		-- Randomize the size of the dungeon, increasing it slightly as the game progresses.
 		local size = 60 + math.floor(30*lev/(lev + 50)) -- from 60 to 90, 70 @ level 25, 75 @ level 50
@@ -189,25 +189,29 @@ print("Infinite Dungeon: alter_level_data", lev, "data:", data) table.print_shal
 			{id_grids_name="tree", floor="GRASS", wall="TREE", door="GRASS_ROCK", down="GRASS_DOWN2", desc="sylvan"},
 			{id_grids_name="underground", floor="UNDERGROUND_FLOOR", wall="UNDERGROUND_TREE", door="UNDERGROUND_ROCK", down="UNDERGROUND_LADDER_DOWN", desc="subterranean"},
 			{id_grids_name="crystals", floor="CRYSTAL_FLOOR", wall={"CRYSTAL_WALL","CRYSTAL_WALL2","CRYSTAL_WALL3","CRYSTAL_WALL4","CRYSTAL_WALL5","CRYSTAL_WALL6","CRYSTAL_WALL7","CRYSTAL_WALL8","CRYSTAL_WALL9","CRYSTAL_WALL10","CRYSTAL_WALL11","CRYSTAL_WALL12","CRYSTAL_WALL13","CRYSTAL_WALL14","CRYSTAL_WALL15","CRYSTAL_WALL16","CRYSTAL_WALL17","CRYSTAL_WALL18","CRYSTAL_WALL19","CRYSTAL_WALL20",}, door="CRYSTAL_ROCK", down="CRYSTAL_LADDER_DOWN", desc="crystalline"},
-			{id_grids_name="sand", floor="UNDERGROUND_SAND", wall="SANDWALL", door="UNDERGROUND_SAND", down="SAND_LADDER_DOWN", desc="sandy"},
+			{id_grids_name="sand", floor="UNDERGROUND_SAND", wall="SANDWALL", door="SAND_ROCK", down="SAND_LADDER_DOWN", desc="sandy"},
 			{id_grids_name="desert", floor="SAND", wall="PALMTREE", door="DESERT_ROCK", down="SAND_DOWN2", desc="arrid"},
 			{id_grids_name="slime", floor="SLIME_FLOOR", wall="SLIME_WALL", door="SLIME_DOOR", down="SLIME_DOWN", desc="slimey"},
 			{id_grids_name="jungle", floor="JUNGLE_GRASS", wall="JUNGLE_TREE", door="JUNGLE_ROCK", down="JUNGLE_GRASS_DOWN2", desc="humid, tropical"},
 			{id_grids_name="cave", floor="CAVEFLOOR", wall="CAVEWALL", door="CAVE_ROCK", down="CAVE_LADDER_DOWN", desc="unhewn"},
-			{id_grids_name="burntland", floor="BURNT_GROUND", wall="BURNT_TREE", door="BURNT_GROUND", down="BURNT_DOWN6", desc="burned"},
+			{id_grids_name="burntland", floor="BURNT_GROUND", wall="BURNT_TREE", door="BURNT_DOOR", down="BURNT_DOWN6", desc="burned"},
 			{id_grids_name="mountain", floor="ROCKY_GROUND", wall="MOUNTAIN_WALL", door="DOOR", down="ROCKY_DOWN2", desc="mountainous"},
-			{id_grids_name="mountain_forest", floor="ROCKY_GROUND", wall="ROCKY_SNOWY_TREE", door="ROCKY_GROUND", down="ROCKY_DOWN2", desc="alpine"},
-			{id_grids_name="snowy_forest", floor="SNOWY_GRASS_2", wall="SNOWY_TREE_2", door="SNOWY_GRASS_2", down="snowy_DOWN2", desc="cold, wooded"},
+			{id_grids_name="mountain_forest", floor="ROCKY_GROUND", wall="ROCKY_SNOWY_TREE", door="ROCKY_SNOWY_DOOR", down="ROCKY_DOWN2", desc="alpine"},
+			{id_grids_name="snowy_forest", floor="SNOWY_GRASS_2", wall="SNOWY_TREE_2", door="SNOWY_DOOR", down="snowy_DOWN2", desc="cold, wooded"},
 			{id_grids_name="temporal_void", floor="VOID", wall="SPACETIME_RIFT2", door="VOID", down="RIFT2", desc="empty"},
 			{id_grids_name="water", floor="WATER_FLOOR_FAKE", wall="WATER_WALL_FAKE", door="WATER_DOOR_FAKE", down="WATER_DOWN_FAKE", desc="flooded"},
-			{id_grids_name="lava", floor="LAVA_FLOOR_FAKE", wall="LAVA_WALL_FAKE", door="LAVA_FLOOR_FAKE", down="LAVA_DOWN_FAKE", desc="molten"},
-			{id_grids_name="autumn_forest", floor="AUTUMN_GRASS", wall="AUTUMN_TREE", door="AUTUMN_GRASS", down="AUTUMN_GRASS_DOWN2", desc="temperate"},
+			{id_grids_name="lava", floor="LAVA_FLOOR_FAKE", wall="LAVA_WALL_FAKE", door="LAVA_ROCK", down="LAVA_DOWN_FAKE", desc="molten"},
+			{id_grids_name="autumn_forest", floor="AUTUMN_GRASS", wall="AUTUMN_TREE", door="AUTUMN_ROCK", down="AUTUMN_GRASS_DOWN2", desc="temperate"},
 		}
 		zone:triggerHook{"InfiniteDungeon:getGrids", grids=vgrids}
 		
 		-- select layout and grids for the level from those set previously (default 1)
 		local layoutN = ((zone.layoutN or 1) - 1)%#layouts + 1
 		local vgridN = ((zone.vgridN or 1) - 1)%#vgrids + 1
+		
+--vgridN = 12 -- debugging
+--layoutN = 6 -- debugging
+
 		layout = layouts[layoutN]
 		vgrid = vgrids[vgridN]
 		print("[Infinite Dungeon] using zone layout #", layoutN, layout.id_layout_name) table.print(layout)
@@ -221,7 +225,7 @@ print("Infinite Dungeon: alter_level_data", lev, "data:", data) table.print_shal
 --		for i = 1, 2 do -- !debugging
 			layoutN = rng.normal(layoutN + 1, 2)%#layouts + 1  --statistically rotate through all sets
 			vgridN = rng.normal(vgridN + 1, 2)%#vgrids + 1
-game.log("#LIGHT_BLUE# selected alternate down variables[%s]: %s, %s", i, layouts[layoutN].id_layout_name, vgrids[vgridN].id_grids_name) -- debuggins
+game.log("#LIGHT_BLUE# selected alternate down variables[%s]: %s, %s", i, layouts[layoutN].id_layout_name, vgrids[vgridN].id_grids_name) -- debugging
 			data.alternate_exit[i] = {layoutN=layoutN, layout=layouts[layoutN], vgridN=vgridN, grids=vgrids[vgridN]}
 		end
 
@@ -254,7 +258,7 @@ game.log("#LIGHT_BLUE# selected alternate down variables[%s]: %s, %s", i, layout
 		-- Scale enemy count according to map or with map area
 		local enemy_count = layout.enemy_count or math.ceil(vx * vy *34/4900) -- avg: 25 @ 60x60, 34 @ 70x70, 57 @ 90x90
 		data.generator.actor.nb_npc = {enemy_count-5, enemy_count+5}
-game.log("#LIGHT_BLUE#Setting up variable map (%s, %s) (%dw, %dh, %s rooms, %s enemies) data:%s", data.generator.map.id_layout_name, data.generator.map.id_grids_name, vx, vy, enemy_count, layout.nb_rooms, data) -- debugging
+game.log("#LIGHT_BLUE#Setting up variable map (%s, %s) (%dw, %dh, %s rooms, %s enemies) data:%s", data.generator.map.id_layout_name, data.generator.map.id_grids_name, vx, vy, layout.nb_rooms, enemy_count, data) -- debugging
 		print(("[Infinite Dungeon] alter_level_data: (%dw, %dh) %s rooms, %d enemies, layout:%s, grids:%s"):format(vx, vy, layout.nb_rooms, enemy_count, data.generator.map.id_layout_name, data.generator.map.id_grids_name))
 		game.state:infiniteDungeonChallenge(zone, lev, data, data.generator.map.id_layout_name, vgrid.id_grids_name)
 	end,
@@ -308,14 +312,22 @@ game.log("#LIGHT_BLUE# Adding stair guard to alternate exit [%d] at (%d, %d)", i
 					end
 				end
 				
-				if x and y and ex and ex.change_level then
+				if x and y and ex and ex.change_level then -- update the exit tile
 game.log("#LIGHT_BLUE# Adding Alternate exit[%d] [%s, %s] at {%d, %d)", i, ae.layout.id_layout_name, ae.grids.id_grids_name, x, y) table.print(ae) -- debugging
 					ex = ex:clone()
 					ex.show_tooltip = true
 					ex.desc = (ex.desc or "")..("\nAppears to lead to:\n%s%s"):format(ae.grids.desc or "indistinct", ae.layout.desc or "continuation of the Infinite Dungeon")
 					-- make sure the exit is clearly marked (in case the nice tiler hides it)
-					ex.add_displays = ex.add_displays or {}	ex.add_displays[#ex.add_displays+1] = marker
+					if ex.add_displays then -- migrate graphics up, but below actor and nice tiler 3d z levels
+						for i, d in ipairs(ex.add_displays) do
+							d.z = math.min(9, (d.z or 0) + 6)
+						end
+					else ex.add_displays = {}
+					end
+					ex.add_displays[#ex.add_displays+1] = marker -- add extra marker just in case
+					
 ex.desc = (ex.desc or "")..("\n[Alternate Exit[%d] (%s[%s], %s[%s])]"):format(i, ae.grids.id_grids_name, ae.vgridN, ae.layout.id_layout_name, ae.layoutN) -- debugging
+
 					ex.layoutN, ex.vgridN = ae.layoutN, ae.vgridN
 					ex.change_level_check = function(self, player)
 						game.zone.layoutN = self.layoutN