diff --git a/game/modules/tome/class/Grid.lua b/game/modules/tome/class/Grid.lua
index 6218f21444cf03c1a6cef43e3344b5081c9a8ad3..1ee49e93ef60afbf37606668fd6947cdc87af645 100644
--- a/game/modules/tome/class/Grid.lua
+++ b/game/modules/tome/class/Grid.lua
@@ -106,17 +106,20 @@ function _M:tooltip(x, y)
 end
 
 --- Generate sub entities to make nice trees
-function _M:makeTrees(base, max)
+function _M:makeTrees(base, max, bigheight_limit)
 	local function makeTree(nb, z)
 		local inb = 4 - nb
+		local treeid = rng.range(1, max or 5)
 		return engine.Entity.new{
 			z = z,
-			display_scale = rng.float(0.5 + inb / 6, 1.3),
+			display_scale = 1,
+			display_scale = rng.float(0.5 + inb / 6, 1),
 			display_x = rng.float(-1 / 3 * nb / 3, 1 / 3 * nb / 3),
-			display_y = rng.float(-1 / 3 * nb / 3, 1 / 3 * nb / 3),
+			display_y = rng.float(-1 / 3 * nb / 3, 1 / 3 * nb / 3) - (treeid < (bigheight_limit or 9) and 0 or 1),
 			display_on_seen = true,
 			display_on_remember = true,
-			image = (base or "terrain/tree_alpha")..rng.range(1,max or 5)..".png",
+			display_h = treeid < (bigheight_limit or 9) and 1 or 2,
+			image = (base or "terrain/tree_alpha")..treeid..".png",
 		}
 	end
 
diff --git a/game/modules/tome/data/birth/descriptors.lua b/game/modules/tome/data/birth/descriptors.lua
index cdbd015df50eb0b3698a6356f88c02ee483638b8..ece77474a7ce16d6ff28dbe29cf4fd0c523539f6 100644
--- a/game/modules/tome/data/birth/descriptors.lua
+++ b/game/modules/tome/data/birth/descriptors.lua
@@ -81,7 +81,7 @@ newBirthDescriptor{
 			{type="lite", subtype="lite", name="brass lantern", ego_chance=-1000},
 		},
 		make_tile = function(e)
-			e.image = "player/"..e.descriptor.subrace:lower().."_"..e.descriptor.sex:lower()..".png"
+			if not e.image then e.image = "player/"..e.descriptor.subrace:lower():gsub("[^a-z0-9_]", "_").."_"..e.descriptor.sex:lower():gsub("[^a-z0-9_]", "_")..".png" end
 		end,
 	},
 }
@@ -127,6 +127,7 @@ newBirthDescriptor{
 		no_birth_levelup = true,
 		easy_mode_lifes = 99999,
 		__game_difficulty = 1,
+		__allow_rod_recall = false,
 	},
 }
 newBirthDescriptor{
diff --git a/game/modules/tome/data/general/encounters/maj-eyal.lua b/game/modules/tome/data/general/encounters/maj-eyal.lua
index e36bae78960bde91c77f9e84558e72cdfb002301..1b089106d581cff39066489e57d359f0c5453f1c 100644
--- a/game/modules/tome/data/general/encounters/maj-eyal.lua
+++ b/game/modules/tome/data/general/encounters/maj-eyal.lua
@@ -247,7 +247,7 @@ newEntity{
 
 		local g = mod.class.WorldNPC.new{
 			name="Agrimley the Hermit",
-			type="humanoid", subtype="elf", faction="angolwen",
+			type="humanoid", subtype="human", faction="neutral",
 			display='@', color=colors.BLUE,
 			can_talk = "alchemist-hermit",
 			unit_power = 300,
diff --git a/game/modules/tome/data/general/grids/forest.lua b/game/modules/tome/data/general/grids/forest.lua
index 53d140dec30faaba72e59c48c896dd3f839e5e5d..c71df9f1218e68e038c6efbd16e322c1e54458b9 100644
--- a/game/modules/tome/data/general/grids/forest.lua
+++ b/game/modules/tome/data/general/grids/forest.lua
@@ -23,31 +23,30 @@ newEntity{
 	name = "grass", image = "terrain/grass.png",
 	display = '.', color=colors.LIGHT_GREEN, back_color={r=44,g=95,b=43},
 	grow = "TREE",
+	nice_tiler = { method="replace", base={"GRASS_PATCH", 70, 1, 15}},
 }
+for i = 1, 12 do newEntity{ base = "GRASS", define_as = "GRASS_PATCH"..i, image = "terrain/grass"..(i<7 and "" or "2")..".png" } end
 
-for i = 1, 20 do
 newEntity{
-	define_as = "TREE"..(i > 1 and i or ""),
+	define_as = "TREE",
 	type = "wall", subtype = "grass",
 	name = "tree",
-	image = "terrain/grass.png",
-	add_displays = class:makeTrees("terrain/tree_alpha"),
+	image = "terrain/tree.png",
 	display = '#', color=colors.LIGHT_GREEN, back_color={r=44,g=95,b=43},
 	always_remember = true,
 	can_pass = {pass_tree=1},
 	does_block_move = true,
 	block_sight = true,
 	dig = "GRASS",
+	nice_tiler = { method="replace", base={"TREE", 100, 1, 30}},
 }
-end
+for i = 1, 30 do newEntity{ base="TREE", define_as = "TREE"..i, image = "terrain/grass.png", add_displays = class:makeTrees("terrain/tree_alpha", 13, 9)} end
 
-for i = 1, 20 do
 newEntity{
-	define_as = "HARDTREE"..(i > 1 and i or ""),
+	define_as = "HARDTREE,
 	type = "wall", subtype = "grass",
 	name = "tall thick tree",
-	image = "terrain/grass.png",
-	add_displays = class:makeTrees("terrain/tree_alpha"),
+	image = "terrain/tree.png",
 	display = '#', color=colors.LIGHT_GREEN, back_color={r=44,g=95,b=43},
 	always_remember = true,
 	does_block_move = true,
@@ -55,7 +54,7 @@ newEntity{
 	block_sense = true,
 	block_esp = true,
 }
-end
+for i = 1, 30 do newEntity{ define_as = "HARDTREE"..i, image = "terrain/grass.png", add_displays = class:makeTrees("terrain/tree_alpha", 13, 9) } end
 
 newEntity{
 	define_as = "GRASS_DARK1",
@@ -100,18 +99,17 @@ end
 newEntity{
 	define_as = "FLOWER",
 	type = "floor", subtype = "grass",
-	name = "flower", image = "terrain/grass_flower3.png",
+	name = "flower", image = "terrain/flower.png",
 	display = ';', color=colors.YELLOW, back_color={r=44,g=95,b=43},
 	grow = "TREE",
-	nice_tiler = { method="replace", base={"FLOWER", 100, 3, 8}},
+	nice_tiler = { method="replace", base={"FLOWER", 100, 1, 1}},
 }
-for i = 3, 8 do newEntity{ base = "FLOWER", define_as = "FLOWER"..i, image = "terrain/grass_flower"..i..".png"} end
-
+for i = 1, 1 do newEntity{ base = "FLOWER", define_as = "FLOWER"..i, image = "terrain/grass.png", add_mos = {{image = "terrain/flower0"..i..".png"}}} end
 
 newEntity{
 	define_as = "ROCK_VAULT",
 	type = "wall", subtype = "grass",
-	name = "huge loose rock", image = "terrain/grass.png", add_displays = {class.new{image="terrain/rock_grass.png"}},
+	name = "huge loose rock", image = "terrain/grass.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,
@@ -126,7 +124,7 @@ newEntity{
 newEntity{
 	define_as = "ROCK_VAULT_DARK",
 	type = "wall", subtype = "grass",
-	name = "huge loose rock", image = "terrain/rock_grass_dark.png",
+	name = "huge loose rock", image = "terrain/grass.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,
@@ -144,7 +142,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_UP_WILDERNESS",
 	type = "floor", subtype = "grass",
-	name = "exit to the worldmap", image = "terrain/grass.png", add_displays = {class.new{image="terrain/worldmap.png"}},
+	name = "exit to the worldmap", image = "terrain/grass.png", add_mos = {{image="terrain/worldmap.png"}},
 	display = '<', color_r=255, color_g=0, color_b=255,
 	always_remember = true,
 	notice = true,
@@ -155,7 +153,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_UP8",
 	type = "floor", subtype = "grass",
-	name = "way to the previous level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_8.png"}},
+	name = "way to the previous level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_8.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
@@ -164,7 +162,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_UP2",
 	type = "floor", subtype = "grass",
-	name = "way to the previous level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_2.png"}},
+	name = "way to the previous level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_2.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
@@ -173,7 +171,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_UP4",
 	type = "floor", subtype = "grass",
-	name = "way to the previous level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_4.png"}},
+	name = "way to the previous level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_4.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
@@ -182,7 +180,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_UP6",
 	type = "floor", subtype = "grass",
-	name = "way to the previous level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_6.png"}},
+	name = "way to the previous level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_6.png"}},
 	display = '<', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
@@ -192,7 +190,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_DOWN8",
 	type = "floor", subtype = "grass",
-	name = "way to the next level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_8.png"}},
+	name = "way to the next level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_8.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
@@ -201,7 +199,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_DOWN2",
 	type = "floor", subtype = "grass",
-	name = "way to the next level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_2.png"}},
+	name = "way to the next level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_2.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
@@ -210,7 +208,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_DOWN4",
 	type = "floor", subtype = "grass",
-	name = "way to the next level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_4.png"}},
+	name = "way to the next level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_4.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
@@ -219,7 +217,7 @@ newEntity{
 newEntity{
 	define_as = "GRASS_DOWN6",
 	type = "floor", subtype = "grass",
-	name = "way to the next level", image = "terrain/grass.png", add_displays = {class.new{image="terrain/way_next_6.png"}},
+	name = "way to the next level", image = "terrain/grass.png", add_mos = {{image="terrain/way_next_6.png"}},
 	display = '>', color_r=255, color_g=255, color_b=0,
 	notice = true,
 	always_remember = true,
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation.png b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation.png
index e87798cd5437b27bcb96c6f14b64de5c3eb4ccc5..d5d1b62ae8dc83324af243ba3794b189a8b3256b 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation.png and b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation01.png b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation01.png
index 32c2ebccf1586cbb3c216e4ede123a5b4f06b6cf..3b2205a78b644d13f50615a40e822f650fa95206 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation01.png and b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation01.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation02.png b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation02.png
index e87798cd5437b27bcb96c6f14b64de5c3eb4ccc5..d5d1b62ae8dc83324af243ba3794b189a8b3256b 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation02.png and b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation02.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation03.png b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation03.png
index 2c8a56aa78dd417811f3cf54b29ace7ad45f8ecb..b8ddb5ba888b067c9e77d5908c200a5c0fca22d1 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation03.png and b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation03.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation04.png b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation04.png
index 177baa36bb7d35b1be1eb93da46919f8d6bc8591..c1cff3b71a182271ffa81ee7faa9cd03a5fb7ad9 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/cultivation04.png and b/game/modules/tome/data/gfx/shockbolt/terrain/cultivation04.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grass.png b/game/modules/tome/data/gfx/shockbolt/terrain/grass.png
index 6b1b1940c4b3f23cb9f161ff1bba86b52f70e5ef..db5091dd4434cf1c6a1a7f83bc50f679f9816ae7 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/grass.png and b/game/modules/tome/data/gfx/shockbolt/terrain/grass.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower3.png b/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower3.png
deleted file mode 100644
index 2a5ae09960d8de9476ff672716ae8fb0a1c6ecb6..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower3.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower4.png b/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower4.png
deleted file mode 100644
index 990587914aa28137cd8f19579477208f5deb7ed3..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower4.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower5.png b/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower5.png
deleted file mode 100644
index 71ca07a86fe360d80372e4efed9364680ecae7a9..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower5.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower6.png b/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower6.png
deleted file mode 100644
index b78692fca47ff10f71f8d5aaceda6d1497dbd2ec..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower6.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower7.png b/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower7.png
deleted file mode 100644
index 9ee4d479b9782f94c1abf3a2bf344722eee6e569..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower7.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower8.png b/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower8.png
deleted file mode 100644
index b8c66697e04bf2b1e41fb53ffe0038a03bc4ae78..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/grass_flower8.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/rock_grass.png b/game/modules/tome/data/gfx/shockbolt/terrain/rock_grass.png
deleted file mode 100644
index ac04317dcb6445c41fbd9bd7be72f05f58369d3d..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/rock_grass.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/town1.png b/game/modules/tome/data/gfx/shockbolt/terrain/town1.png
index 5165fd52088a9638066341bf3458c29fa4333b82..a1370b80b0c7506824c6a7e0754fc7b45f01e6d9 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/town1.png and b/game/modules/tome/data/gfx/shockbolt/terrain/town1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/town2.png b/game/modules/tome/data/gfx/shockbolt/terrain/town2.png
deleted file mode 100644
index 0427ebe02a0e2f3538baefd577fe33a739c95469..0000000000000000000000000000000000000000
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/town2.png and /dev/null differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha1.png b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha1.png
index b70122009caf6108480234fb820ed204447bf6c2..bdb612a9003560f891ddd9e1fa38f076d4433065 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha1.png and b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha1.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha2.png b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha2.png
index 2393c90a21556c4f817a812bae2ceaeabfb32b1b..ab92cf5478c6dd7df838b01e2952f541ff0fe399 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha2.png and b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha2.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha3.png b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha3.png
index 057fb207da812e0f464995fe50cbebb8479469eb..f2d3ae505b9e36e0f8424eb60778592204bcde29 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha3.png and b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha3.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha4.png b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha4.png
index 3fcd0e0a45fd4953ac96ff1ca3946056a438eb3d..eb594d7cb46838de0f62308a39456f0e3cecf7a5 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha4.png and b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha4.png differ
diff --git a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha5.png b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha5.png
index 66b3d02668ef57bf321b8096af4862f87375e6ef..3d690d4431a3af652a21f4065a0efb064cac0728 100644
Binary files a/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha5.png and b/game/modules/tome/data/gfx/shockbolt/terrain/tree_alpha5.png differ
diff --git a/game/modules/tome/data/maps/wilderness/eyal.lua b/game/modules/tome/data/maps/wilderness/eyal.lua
index a1d3f893efdc3b6b07bacd1f7737078511c38450..a6052dc0c0b808e3526197fcff3aac753c2cfbca 100644
--- a/game/modules/tome/data/maps/wilderness/eyal.lua
+++ b/game/modules/tome/data/maps/wilderness/eyal.lua
@@ -51,7 +51,7 @@ quickEntity('{', {always_remember = true, show_tooltip=true, name='Charred Scar'
 quickEntity('!', {always_remember = true, show_tooltip=true, name='hills', display='^', color=colors.GREEN, back_color=colors.DARK_GREEN, image="terrain/hills.png", can_encounter=true, equilibrium_level=-10})
 quickEntity('h', {always_remember = true, show_tooltip=true, name='low hills', display='^', color=colors.GREEN, back_color=colors.DARK_GREEN, image="terrain/hills.png", can_encounter=true, equilibrium_level=-10})
 
-quickEntity('&', {always_remember = true, show_tooltip=true, name='cultivated fields', display=';', color=colors.GREEN, back_color=colors.DARK_GREEN, image="terrain/cultivation.png", can_encounter=true, equilibrium_level=-10})
+quickEntity('&', {always_remember = true, show_tooltip=true, name='cultivated fields', display=';', color=colors.GREEN, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/cultivation.png"}}, can_encounter=true, equilibrium_level=-10})
 
 -- Maj'Eyal
 quickEntity('kor-pul', {always_remember = true, show_tooltip=true, name="Ruins of Kor'Pul", 	display='>', color={r=0, g=255, b=255}, notice = true, change_level=1, change_zone="ruins-kor-pul"})
@@ -68,10 +68,10 @@ quickEntity('rhaloren-camp', {always_remember = true, show_tooltip=true, name="S
 quickEntity('norgos-lair', {always_remember = true, show_tooltip=true, name="Passageway into Norgos' Lair", display='>', color={r=255, g=255, b=255}, notice = true, change_level=1, change_zone="norgos-lair"})
 quickEntity('heart-gloom', {always_remember = true, show_tooltip=true, name="Way into the heart of the gloom", display='>', color={r=255, g=255, b=0}, notice = true, change_level=1, change_zone="heart-gloom"})
 
-quickEntity('derth', {always_remember = true, show_tooltip=true, name="Derth (Town)", desc="A quiet town at the crossroads of the north", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-derth"})
-quickEntity('last-hope', {always_remember = true, show_tooltip=true, name="Last Hope (Town)", desc="Capital city of the Allied Kingdoms ruled by King Tolak", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-last-hope"})
-quickEntity('shatur', {always_remember = true, show_tooltip=true, name="Shatur (Town)", desc="Capital city of Thaloren lands, ruled by Nessilla Tantaelen", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-shatur"})
-quickEntity('elvala', {always_remember = true, show_tooltip=true, name="Elvala (Town)", desc="Capital city of Shaloren lands, ruled by Aranion Gayaeil", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-elvala"})
+quickEntity('derth', {always_remember = true, show_tooltip=true, name="Derth (Town)", desc="A quiet town at the crossroads of the north", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true, change_level=1, change_zone="town-derth"})
+quickEntity('last-hope', {always_remember = true, show_tooltip=true, name="Last Hope (Town)", desc="Capital city of the Allied Kingdoms ruled by King Tolak", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true, change_level=1, change_zone="town-last-hope"})
+quickEntity('shatur', {always_remember = true, show_tooltip=true, name="Shatur (Town)", desc="Capital city of Thaloren lands, ruled by Nessilla Tantaelen", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true, change_level=1, change_zone="town-shatur"})
+quickEntity('elvala', {always_remember = true, show_tooltip=true, name="Elvala (Town)", desc="Capital city of Shaloren lands, ruled by Aranion Gayaeil", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true, change_level=1, change_zone="town-elvala"})
 
 -- Far East
 quickEntity('gates-of-morning', {always_remember = true, show_tooltip=true, name="Gates of Morning (Town)", desc="A massive hole in the Sunwall.", display='*', color=colors.GOLD, back_color=colors.CRIMSON, image="terrain/gate-morning.png", tint=colors.GOLD, notice = true, change_level=1, change_zone="town-gates-of-morning"})
@@ -79,14 +79,14 @@ quickEntity('high-peak', {always_remember = true, show_tooltip=true, name="High
 quickEntity('unremarkable-cave', {always_remember = true, show_tooltip=true, name="Unremarkable cave", display='>', color=colors.UMBER, notice = true, change_level=1, change_zone="unremarkable-cave"})
 
 -- Island of Rel
-quickEntity('irkkk', {always_remember = true, show_tooltip=true, name="Irkkk (Town)", desc="Yeek Wayist capital", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true})
+quickEntity('irkkk', {always_remember = true, show_tooltip=true, name="Irkkk (Town)", desc="Yeek Wayist capital", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true})
 quickEntity('ritch-tunnels', {always_remember = true, show_tooltip=true, name="Tunnel into the ritchs grounds",display='>', color=colors.UMBER, notice = true, change_level=1, change_zone="ritch-tunnels"})
 quickEntity('murgol-lair', {always_remember = true, show_tooltip=true, name="Way into the lair of Murgol",display='>', color=colors.LIGHT_BLUE, notice = true, change_level=1, change_zone="murgol-lair"})
 quickEntity('rel-tunnel', {always_remember = true, show_tooltip=true, name="Tunnel to Maj'Eyal", display='>', color=colors.LIGHT_BLUE, notice = true, force_down=true, change_level=4, change_zone="halfling-ruins", change_level_check = function() local p = game.party:findMember{main=true} if p:hasQuest("start-yeek") and not p:isQuestStatus("start-yeek", engine.Quest.DONE) then require("engine.ui.Dialog"):simplePopup("Long tunnel", "You can not abandon the yeeks of Rel to the dangers that lie within the island.") return true end p:setQuestStatus("rel-tunnel", engine.Quest.DONE) return false end})
 
 -- Angolwen is only know from the start to mages
 if game.player:knowTalent(game.player.T_TELEPORT_ANGOLWEN) then
-	quickEntity('angolwen', {always_remember = true, show_tooltip=true, name="Angolwen, the hidden city of magic", desc="Secret place of magic, set apart from the world to protect it.\nLead by the Supreme Archmage Linaniil.", display='*', color=colors.WHITE, back_color=colors.UMBER, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-angolwen"})
+	quickEntity('angolwen', {always_remember = true, show_tooltip=true, name="Angolwen, the hidden city of magic", desc="Secret place of magic, set apart from the world to protect it.\nLead by the Supreme Archmage Linaniil.", display='*', color=colors.WHITE, back_color=colors.UMBER, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true, change_level=1, change_zone="town-angolwen"})
 	quickEntity('angolwen-teleport', {always_remember = true, show_tooltip=true, name="Hidden teleportation portal to Angolwen, the hidden city of magic", display='&', color=colors.LIGHT_BLUE, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_displays = {mod.class.Grid.new{image="terrain/maze_teleport.png"}}, notice = true, change_level=1, change_zone="town-angolwen", change_level_check = function() local p = game.party:findMember{main=true} if p:attr("forbid_arcane") then game.log("The portal fizzles.") return true end return false end})
 else
 	quickEntity('angolwen', '^')
@@ -95,14 +95,14 @@ end
 
 -- Zigur is only know from the start to non casters
 if not game.player:knowTalent(game.player.T_MANA_POOL) and not game.player:knowTalent(game.player.T_VIM_POOL) and not game.player:knowTalent(game.player.T_VIM_POOL) and not game.player:knowTalent(game.player.T_NEGATIVE_POOL) and not game.player:knowTalent(game.player.T_POSITIVE_POOL) and not game.player:knowTalent(game.player.T_PARADOX_POOL) then
-	quickEntity('zigur', {always_remember = true, show_tooltip=true, name="Zigur (Town)", desc="Ziguranth main training ground", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-zigur"})
+	quickEntity('zigur', {always_remember = true, show_tooltip=true, name="Zigur (Town)", desc="Ziguranth main training ground", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true, change_level=1, change_zone="town-zigur"})
 else
 	quickEntity('zigur', ')')
 end
 
 -- Iron Council is only known to dwarves
 if game.player:knowTalent(game.player.T_DWARF_RESILIENCE) then
-	quickEntity('iron-council', {always_remember = true, show_tooltip=true, name="Iron Council (Town)", desc="Heart of the dwarven Empire", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/town1.png", notice = true, change_level=1, change_zone="town-iron-council"})
+	quickEntity('iron-council', {always_remember = true, show_tooltip=true, name="Iron Council (Town)", desc="Heart of the dwarven Empire", display='*', color={r=255, g=255, b=255}, back_color=colors.DARK_GREEN, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}}, notice = true, change_level=1, change_zone="town-iron-council"})
 else
 	quickEntity('iron-council', '#')
 end
diff --git a/game/modules/tome/data/quests/lumberjack-cursed.lua b/game/modules/tome/data/quests/lumberjack-cursed.lua
index f02f12f919a292c624d733b45088f76531ea6a9f..76ac8e3d2ecdd2f94d83fcfb9820547a7372e5ec 100644
--- a/game/modules/tome/data/quests/lumberjack-cursed.lua
+++ b/game/modules/tome/data/quests/lumberjack-cursed.lua
@@ -34,7 +34,7 @@ on_grant = function(self, who)
 		show_tooltip=true, always_remember = true,
 		name="Small lumberjack village",
 		display='*', color=colors.WHITE,
-		notice = true, image="terrain/town1.png",
+		notice = true, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}},
 		change_level=1, change_zone="town-lumberjack-village",
 	}
 	g:resolve() g:resolve(nil, true)
diff --git a/game/modules/tome/data/quests/mage-apprentice.lua b/game/modules/tome/data/quests/mage-apprentice.lua
index fa8fa3f1ce896f2a79c26644db2babb40db08315..460e061c19d806debf12c4eec60ee8b7e6aa4e93 100644
--- a/game/modules/tome/data/quests/mage-apprentice.lua
+++ b/game/modules/tome/data/quests/mage-apprentice.lua
@@ -126,7 +126,7 @@ access_angolwen = function(self, player)
 		show_tooltip=true, always_remember = true,
 		name="Angolwen, the hidden city of magic",
 		desc="Secret place of magic, set apart from the world to protect it.",
-		display='*', color=colors.WHITE, image="terrain/town1.png",
+		display='*', color=colors.WHITE, image="terrain/grass.png", add_mos={{image="terrain/town1.png"}},
 		notice = true,
 		change_level=1, change_zone="town-angolwen"
 	}
diff --git a/game/modules/tome/dialogs/Birther.lua b/game/modules/tome/dialogs/Birther.lua
index 1b48c384df07522946da3a560ef1f2b904541734..aa176a914e66c709065bdaae6b8d1297d7a6f266 100644
--- a/game/modules/tome/dialogs/Birther.lua
+++ b/game/modules/tome/dialogs/Birther.lua
@@ -165,6 +165,8 @@ function _M:atEnd(v)
 			local ps = self.actor:getParticlesList()
 			for i, p in ipairs(ps) do self.actor:removeParticles(p) end
 			self.actor:defineDisplayCallback()
+			if self.actor._mo then self.actor._mo:invalidate() end
+			self.actor._mo = nil
 
 			game:unregisterDialog(self)
 			self:apply()
@@ -721,7 +723,7 @@ end
 function _M:setTile(f, w, h)
 	if not f then
 		if not self.actor.has_custom_tile and self.descriptors_by_type.subrace and self.descriptors_by_type.sex then
-			self.actor.image = "player/"..self.descriptors_by_type.subrace:lower().."_"..self.descriptors_by_type.sex:lower()..".png"
+			self.actor.image = "player/"..self.descriptors_by_type.subrace:lower():gsub("[^a-z0-9_]", "_").."_"..self.descriptors_by_type.sex:lower():gsub("[^a-z0-9_]", "_")..".png"
 			self.actor.add_mos = nil
 		end
 	else