diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index d05cb344de7da452127269670019ddb7428aac34..ba36424899d49100de22ff67541a30e00e7ca4bd 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -278,7 +278,7 @@ function _M:loaded()
 		end,
 	}
 	Map:setViewerActor(self.player)
-	Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 32, 32, nil, 22, true)
+	Map:setViewPort(216, 36, self.w - 216, math.floor(self.h * 0.80) - 36, 32, 32, nil, 22, true)
 	if self.player then self.player.changed = true end
 	self.key = engine.KeyBind.new()
 
@@ -310,13 +310,13 @@ function _M:setupDisplayMode(reboot)
 	local do_bg = true
 
 	if gfx.size == "64x64" then
-		Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 64, 64, nil, 44, do_bg)
+		Map:setViewPort(216, 36, self.w - 216, math.floor(self.h * 0.80) - 36, 64, 64, nil, 44, do_bg)
 		Map:resetTiles()
 	elseif gfx.size == "32x32" then
-		Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 32, 32, nil, 22, do_bg)
+		Map:setViewPort(216, 36, self.w - 216, math.floor(self.h * 0.80) - 36, 32, 32, nil, 22, do_bg)
 		Map:resetTiles()
 	elseif gfx.size == "16x16" then
-		Map:setViewPort(200, 20, self.w - 200, math.floor(self.h * 0.80) - 20, 16, 16, "/data/font/FSEX300.ttf", 16, do_bg)
+		Map:setViewPort(216, 36, self.w - 216, math.floor(self.h * 0.80) - 36, 16, 16, "/data/font/FSEX300.ttf", 16, do_bg)
 		Map:resetTiles()
 	end
 
diff --git a/game/modules/tome/data/talents/psionic/absorption.lua b/game/modules/tome/data/talents/psionic/absorption.lua
index 0f9ca1c9ce63a5bf6f46567520f5940e12fccf83..f156fd099b3fd08cf758e7dcb640b601ac09338b 100644
--- a/game/modules/tome/data/talents/psionic/absorption.lua
+++ b/game/modules/tome/data/talents/psionic/absorption.lua
@@ -17,18 +17,6 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-local function getGemLevel(self)
-		local gem_level = 0
-		if not self:getInven("PSIONIC_FOCUS") or self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
-		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
-		if tk_item.type == "gem" then
-			gem_level = tk_item.material_level
-		else
-			gem_level = 0
-		end
-		return gem_level
-end
-
 local function getShieldStrength(self, t)
 	local add = 0
 	if self:knowTalent(self.T_FOCUSED_CHANNELING) then
diff --git a/game/modules/tome/data/talents/psionic/augmented-mobility.lua b/game/modules/tome/data/talents/psionic/augmented-mobility.lua
index 164c40ffe08bcc697f6c3958a5776da4286aab8b..d3f6e72c718eeb63e04c74cdd534f8c07c63a3a3 100644
--- a/game/modules/tome/data/talents/psionic/augmented-mobility.lua
+++ b/game/modules/tome/data/talents/psionic/augmented-mobility.lua
@@ -17,18 +17,6 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-local function getGemLevel(self)
-		local gem_level = 0
-		if not self:getInven("PSIONIC_FOCUS") or self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
-		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
-		if tk_item.type == "gem" then
-			gem_level = tk_item.material_level
-		else
-			gem_level = 0
-		end
-		return gem_level
-end
-
 newTalent{
 	name = "Mindhook",
 	type = {"psionic/augmented-mobility", 1},
diff --git a/game/modules/tome/data/talents/psionic/focus.lua b/game/modules/tome/data/talents/psionic/focus.lua
index 061953d7fcb8d4b17effc46c4f8edd7bd69b7a1e..85f0b4f8f5bf389d6f301d06c0de8f3e62909d0c 100644
--- a/game/modules/tome/data/talents/psionic/focus.lua
+++ b/game/modules/tome/data/talents/psionic/focus.lua
@@ -22,19 +22,6 @@
 --Reach: gem-based range improvements
 --Channeling: gem-based shield and improvement
 
-local function getGemLevel(self)
-		local gem_level = 0
-		if not self:getInven("PSIONIC_FOCUS") or self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
-		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
-		if tk_item.type == "gem" then
-			gem_level = tk_item.material_level
-		else
-			gem_level = 0
-		end
-		return gem_level
-end
-
-
 newTalent{
 	name = "Mindlash",
 	type = {"psionic/focus", 1},
diff --git a/game/modules/tome/data/talents/psionic/projection.lua b/game/modules/tome/data/talents/psionic/projection.lua
index f616daeae81737f92bcfecca81b385402d94d8ac..fb9a96449104c9b6d43e9072be840027f668f60b 100644
--- a/game/modules/tome/data/talents/psionic/projection.lua
+++ b/game/modules/tome/data/talents/psionic/projection.lua
@@ -17,18 +17,6 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-local function getGemLevel(self)
-		local gem_level = 0
-		if not self:getInven("PSIONIC_FOCUS") or self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
-		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
-		if tk_item.type == "gem" then
-			gem_level = tk_item.material_level
-		else
-			gem_level = 0
-		end
-		return gem_level
-end
-
 local function combatTalentDamage(self, t, min, max)
 	return self:combatTalentSpellDamage(t, min, max, self.level + self:getWil())
 end
diff --git a/game/modules/tome/data/talents/psionic/psionic.lua b/game/modules/tome/data/talents/psionic/psionic.lua
index 636894c0db324503e7e877c2bb8fe6f23bb9ee01..985ad807f3fae5f65607083653412e06718ad09e 100644
--- a/game/modules/tome/data/talents/psionic/psionic.lua
+++ b/game/modules/tome/data/talents/psionic/psionic.lua
@@ -115,6 +115,17 @@ psi_cun_high5 = {
 	level = function(level) return 26 + (level-1)  end,
 }
 
+-- Useful definitions for psionic talents
+function getGemLevel(self)
+	local gem_level = 0
+	if self:getInven("PSIONIC_FOCUS") then
+		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
+		if tk_item and (tk_item.type == "gem") then
+			gem_level = tk_item.material_level
+		end
+	end
+	return gem_level
+end
 
 load("/data/talents/psionic/absorption.lua")
 load("/data/talents/psionic/finer-energy-manipulations.lua")
diff --git a/game/modules/tome/data/talents/psionic/voracity.lua b/game/modules/tome/data/talents/psionic/voracity.lua
index 7829a1528d9678e77ab0fcd25b0b67fb474fb060..68081897166501762e74f94bdbf8bfcc1b870b88 100644
--- a/game/modules/tome/data/talents/psionic/voracity.lua
+++ b/game/modules/tome/data/talents/psionic/voracity.lua
@@ -17,18 +17,6 @@
 -- Nicolas Casalini "DarkGod"
 -- darkgod@te4.org
 
-local function getGemLevel(self)
-		local gem_level = 0
-		if not self:getInven("PSIONIC_FOCUS") or self:getInven("PSIONIC_FOCUS")[1] then return gem_level end
-		local tk_item = self:getInven("PSIONIC_FOCUS")[1]
-		if tk_item.type == "gem" then
-			gem_level = tk_item.material_level
-		else
-			gem_level = 0
-		end
-		return gem_level
-end
-
 newTalent{
 	name = "Kinetic Leech",
 	type = {"psionic/voracity", 1},
diff --git a/game/modules/tome/data/zones/temporal-rift/zone.lua b/game/modules/tome/data/zones/temporal-rift/zone.lua
index 01959b45e3b50c4275e0383a7ace214099012a86..2b9406533790a230734e14f8f34b874cc346fc5a 100644
--- a/game/modules/tome/data/zones/temporal-rift/zone.lua
+++ b/game/modules/tome/data/zones/temporal-rift/zone.lua
@@ -22,7 +22,7 @@ return {
 	display_name = function(x, y)
 		if game.level.level == 2 then return "Temporal Rift: Lumberjack village"
 		elseif game.level.level == 3 then return "Temporal Rift: Daikara"
-		elseif game.level.level == 2 then return "Temporal Rift: Lake of Nur"
+		elseif game.level.level == 4 then return "Temporal Rift: Lake of Nur"
 		end
 		return "Temporal Rift"
 	end,
@@ -35,9 +35,13 @@ return {
 	width = 60, height = 25,
 --	all_remembered = true,
 	all_lited = true,
+	no_worldport = true,
 	persistent = "zone",
 	generator =  {
 	},
+	color_shown = {0.4, 0.3, 0.5, 1},
+	color_obscure = {0.4*0.6, 0.3*0.6, 0.5*0.6, 1},
+	ambient_music = "Through the Dark Portal.ogg",
 	levels =
 	{
 		[1] = { generator = {