diff --git a/game/engines/default/engine/Zone.lua b/game/engines/default/engine/Zone.lua
index c646bc108a366985869ebc56ff013a32506a77ad..8360ea1ac047ef1415856c3a37023e3b5e857b69 100644
--- a/game/engines/default/engine/Zone.lua
+++ b/game/engines/default/engine/Zone.lua
@@ -626,6 +626,5 @@ function _M:newLevel(level_data, lev, old_lev, game)
 			end
 		end
 	end
-
 	return level
 end
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 654ef3e607ad1bccd2ddeb170e1e3aef61d0ea3e..d9a2a0678deb4bd7f5e85edd1b78ed59c7f39f79 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -514,7 +514,9 @@ function _M:display()
 
 		if not self.zone_name_s then
 			self.player_display.font:setStyle("bold")
-			local s = core.display.drawStringBlendedNewSurface(self.player_display.font, ("%s (%d)"):format(self.zone.name, self.level.level), unpack(colors.simple(colors.GOLD)))
+			local lev = self.level.level
+			if self.level.data.reverse_level_display then lev = 1 + self.level.data.max_level - lev end
+			local s = core.display.drawStringBlendedNewSurface(self.player_display.font, ("%s (%d)"):format(self.zone.name, lev), unpack(colors.simple(colors.GOLD)))
 			self.player_display.font:setStyle("normal")
 			self.zone_name_w, self.zone_name_h = s:getSize()
 			self.zone_name_s, self.zone_name_tw, self.zone_name_th = s:glTexture()
@@ -632,7 +634,7 @@ function _M:setupCommands()
 		end,
 		[{"_g","ctrl"}] = function()
 			if config.settings.tome.cheat then
-				self:changeLevel(4, "tannen-tower")
+				self:changeLevel(1, "tannen-tower")
 --				self:changeLevel(1, "town-minas-tirith")
 --				self.player:grantQuest("east-portal")
 			end
diff --git a/game/modules/tome/data/chats/east-portal-end.lua b/game/modules/tome/data/chats/east-portal-end.lua
index c160c7120aba7fd494c799df774dfb57fcb960da..f6127f079e68c0f412d858a47e6d481c32eeada1 100644
--- a/game/modules/tome/data/chats/east-portal-end.lua
+++ b/game/modules/tome/data/chats/east-portal-end.lua
@@ -24,7 +24,7 @@ I am Meranas, Herald of Angolwen, I have come here at the request of King Eldari
 It has been some time we watched Tannen, and you revealed his true nature - and stopped him. For this we are grateful, and I think we can pay you back.
 We have studied his portal research and if you give me the components I will create the portal for you, here and now!]],
 	answers = {
-		{"Yes Tannen was not exactly friendly. I thank you for your help, here are the components. [hand him the diamon and the athame]", action=function(npc, player) who:hasQuest("east-portal"):create_portal(npc, player) end},
+		{"Yes Tannen was not exactly friendly. I thank you for your help, here are the components. [hand him the diamon and the athame]", action=function(npc, player) player:hasQuest("east-portal"):create_portal(npc, player) end},
 	}
 }
 
diff --git a/game/modules/tome/data/maps/zones/tannen-tower-1.lua b/game/modules/tome/data/maps/zones/tannen-tower-1.lua
index fa3953b092b6f5d4e8bb10e0cc66f8d5d1a89d44..f67c67014cde023c41178cdaf19c9a6df39bc981 100644
--- a/game/modules/tome/data/maps/zones/tannen-tower-1.lua
+++ b/game/modules/tome/data/maps/zones/tannen-tower-1.lua
@@ -20,7 +20,7 @@
 -- defineTile section
 defineTile("g", "FLOOR", nil, "DROLEM")
 defineTile("X", "HARDWALL")
-defineTile("=", "SKY")
+quickEntity('=', {name='open sky', display=' ', does_block_move=true})
 defineTile("p", "FLOOR", nil, "TANNEN")
 defineTile(">", "DOWN")
 defineTile(".", "FLOOR")
diff --git a/game/modules/tome/data/maps/zones/tannen-tower-3.lua b/game/modules/tome/data/maps/zones/tannen-tower-3.lua
index 4cdd8cf900fdd2094aee6ddc4c87286dd4c987ff..07353be2b5707c8a827b8c4fff0bc4cd6ec98514 100644
--- a/game/modules/tome/data/maps/zones/tannen-tower-3.lua
+++ b/game/modules/tome/data/maps/zones/tannen-tower-3.lua
@@ -20,7 +20,7 @@
 startx = 12
 starty = 12
 endx = 19
-endy = 14
+endy = 4
 
 -- defineTile section
 defineTile("X", "HARDWALL")
diff --git a/game/modules/tome/data/quests/east-portal.lua b/game/modules/tome/data/quests/east-portal.lua
index b0b31e029cf9786e99cfa0b9b7c1719ab9f2cba9..afc01845dffaafc0e0bc1d7b947d062a6f623091 100644
--- a/game/modules/tome/data/quests/east-portal.lua
+++ b/game/modules/tome/data/quests/east-portal.lua
@@ -79,7 +79,7 @@ This one seems to go near the Gates of Morning in the Far East.]],
 
 		orb_portal = {
 			change_level = 1,
-			change_zone = "wilderness-farest",
+			change_zone = "wilderness-arda-fareast",
 			change_wilderness = {
 				x = 65, y = 35,
 			},
@@ -156,7 +156,7 @@ ask_east = function(self, player)
 end
 
 tannen_tower = function(self, player)
-	game:changeLevel(4, "tannen-tower")
+	game:changeLevel(1, "tannen-tower")
 	player:setQuestStatus(self.id, engine.Quest.COMPLETED, "trapped")
 end
 
diff --git a/game/modules/tome/data/zones/tannen-tower/grids.lua b/game/modules/tome/data/zones/tannen-tower/grids.lua
index 941796b8efc9ec70560a1d2f432c5189e5ed1667..c5c94720c78ebe5357cd1d9fc7883a2d29598cd8 100644
--- a/game/modules/tome/data/zones/tannen-tower/grids.lua
+++ b/game/modules/tome/data/zones/tannen-tower/grids.lua
@@ -60,3 +60,22 @@ newEntity{
 		end
 	end,
 }
+
+-- Reversed!
+newEntity{
+	define_as = "UP",
+	name = "previous level",
+	display = '<', color_r=255, color_g=255, color_b=0,
+	notice = true,
+	always_remember = true,
+	change_level = 1,
+}
+
+newEntity{
+	define_as = "DOWN",
+	name = "next level",
+	display = '>', color_r=255, color_g=255, color_b=0,
+	notice = true,
+	always_remember = true,
+	change_level = -1,
+}
diff --git a/game/modules/tome/data/zones/tannen-tower/zone.lua b/game/modules/tome/data/zones/tannen-tower/zone.lua
index 31b6a36c1eedb70f9f01548fb3388b01ad48a0a8..ed99ce368535b6d94da5059c8506e50f1e58813a 100644
--- a/game/modules/tome/data/zones/tannen-tower/zone.lua
+++ b/game/modules/tome/data/zones/tannen-tower/zone.lua
@@ -21,13 +21,12 @@ return {
 	name = "Tannen's Tower",
 	level_range = {35, 40},
 	level_scheme = "player",
-	max_level = 4,
+	max_level = 4, reverse_level_display=true,
 	decay = {300, 800},
-	actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + (zone.max_level - level.level) + rng.range(-1,2) end,
-	level_adjust_level = function(zone, level) return zone.base_level + (zone.max_level - level.level) end,
+	actor_adjust_level = function(zone, level, e) return zone.base_level + e:getRankLevelAdjust() + level.level-1 + rng.range(-1,2) end,
 	width = 25, height = 25,
-	all_remembered = true,
-	all_lited = true,
+--	all_remembered = true,
+--	all_lited = true,
 	persistant = "zone",
 	no_level_connectivity = true,
 	ambiant_music = "Remembrance.ogg",
@@ -56,9 +55,9 @@ return {
 	end,
 	levels =
 	{
-		[1] = { generator = { map = { map = "zones/tannen-tower-1" }, }, },
-		[2] = { generator = { map = { map = "zones/tannen-tower-2" }, actor = { nb_npc = {22, 22}, }, trap = { nb_trap = {6, 6} }, }, },
-		[3] = { generator = { map = { map = "zones/tannen-tower-3" }, actor = { nb_npc = {22, 22}, filters={{special_rarity="aquatic_rarity"}} }, trap = { nb_trap = {6, 6} }, }, },
-		[4] = { generator = { map = { map = "zones/tannen-tower-4" }, }, },
+		[4] = { generator = { map = { map = "zones/tannen-tower-1" }, }, all_remembered = true, all_lited = true, },
+		[3] = { generator = { map = { map = "zones/tannen-tower-2" }, actor = { nb_npc = {22, 22}, }, trap = { nb_trap = {6, 6} }, }, },
+		[2] = { generator = { map = { map = "zones/tannen-tower-3" }, actor = { nb_npc = {22, 22}, filters={{special_rarity="aquatic_rarity"}} }, trap = { nb_trap = {6, 6} }, }, },
+		[1] = { generator = { map = { map = "zones/tannen-tower-4" }, }, },
 	},
 }