diff --git a/game/engines/default/engine/Chat.lua b/game/engines/default/engine/Chat.lua
index 243a744d529b90e9e3a02a6727dae2197198f166..eb702e0dea54c03eddaa12596cd7d75f2a3a5e2c 100644
--- a/game/engines/default/engine/Chat.lua
+++ b/game/engines/default/engine/Chat.lua
@@ -27,6 +27,7 @@ function _M:init(name, npc, player, data)
 	self.chats = {}
 	self.npc = npc
 	self.player = player
+	self.name = name
 	data = setmetatable(data or {}, {__index=_G})
 
 	local f, err = loadfile("/data/chats/"..name..".lua")
diff --git a/game/engines/default/engine/Game.lua b/game/engines/default/engine/Game.lua
index d083289f962402c2394a46d953f602b456086ff1..31781a9771b8f24bf32ade253cd399967da04c10 100644
--- a/game/engines/default/engine/Game.lua
+++ b/game/engines/default/engine/Game.lua
@@ -202,7 +202,7 @@ function _M:unregisterDialog(d)
 	self.dialogs[d] = nil
 	d:unload()
 	-- Update positions
-	for i, id in ipairs(self.dialogs) do self.dialogs[id] = i end
+	for i, id in ipairs(self.dialogs) do id.__stack_id = i self.dialogs[id] = i end
 
 	local last = self.dialogs[#self.dialogs] or self
 	if last.key then last.key:setCurrent() end
diff --git a/game/engines/default/engine/dialogs/Chat.lua b/game/engines/default/engine/dialogs/Chat.lua
index 41e7ed44798a67de9f549b411a33306ff7d61e5a..9912a37e7076e7cc1d89ad0531cd7aeea7b92b4a 100644
--- a/game/engines/default/engine/dialogs/Chat.lua
+++ b/game/engines/default/engine/dialogs/Chat.lua
@@ -93,8 +93,8 @@ function _M:regen()
 	d.__showup = false
 	game:replaceDialog(self, d)
 end
-
 function _M:resolveAuto()
+--[[
 	if not self.chat:get(self.cur_id).auto then return end
 	for i, a in ipairs(self.chat:get(self.cur_id).answers) do
 		if not a.cond or a.cond(self.npc, self.player) then
@@ -103,6 +103,7 @@ function _M:resolveAuto()
 			end
 		end
 	end
+]]
 end
 
 function _M:generateList()
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 163ebee170b27850259eabe3bae7dc38d3fe1af6..79c7ab9fbd63ac92cafc90f67eb2b6611b5fa33e 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -376,11 +376,20 @@ function _M:changeLevel(lev, zone, keep_old_lev, force_down)
 		self.player:move(self.player.wild_x, self.player.wild_y, true)
 		self.player.last_wilderness = self.zone.short_name
 	else
+		local x, y
 		if lev > old_lev and not force_down then
-			self.player:move(self.level.default_up.x, self.level.default_up.y, true)
+			x, y = self.level.default_up.x, self.level.default_up.y
 		else
-			self.player:move(self.level.default_down.x, self.level.default_down.y, true)
+			x, y = self.level.default_down.x, self.level.default_down.y
 		end
+		-- Check if there is already an actor at that location, if so move it
+		local blocking_actor = self.level.map(x, y, engine.Map.ACTOR)
+		if blocking_actor then
+			local newx, newy = util.findFreeGrid(x, y, 20, true, {[Map.ACTOR]=true})
+			if newx and newy then blocking_actor:move(newx, newy, true)
+			else blocking_actor:teleportRandom(x, y, 200) end
+		end
+		self.player:move(x, y, true)
 	end
 	self.player.changed = true
 	if self.to_re_add_actors then for act, _ in pairs(self.to_re_add_actors) do
diff --git a/game/modules/tome/data/quests/high-peak.lua b/game/modules/tome/data/quests/high-peak.lua
index 58ce90ac98a4365cbafebf61daa4350e92e6436f..8954ebe9288b73164b3d249b0919114c5a8049ef 100644
--- a/game/modules/tome/data/quests/high-peak.lua
+++ b/game/modules/tome/data/quests/high-peak.lua
@@ -115,6 +115,8 @@ function failed_mount_doom(self, level)
 end
 
 function win(self, how)
+	game:playMusic("Lords of the Sky.ogg")
+
 	if how == "full" then world:gainAchievement("WIN_FULL", game.player)
 	elseif how == "aeryn-sacrifice" then world:gainAchievement("WIN_AERYN", game.player)
 	elseif how == "self-sacrifice" then world:gainAchievement("WIN_SACRIFICE", game.player)
@@ -123,3 +125,4 @@ function win(self, how)
 	game.player.winner = how
 	game:registerDialog(require("engine.dialogs.ShowText").new("Winner", "win", {playername=game.player.name, how=how}, game.w * 0.6))
 end
+
diff --git a/game/modules/tome/data/talents/cunning/traps.lua b/game/modules/tome/data/talents/cunning/traps.lua
index 5f48eedd1027e65ce4f4c348add625218829fe89..f038dd84504b47d5da4064d538aa4e2e1d7a316e 100644
--- a/game/modules/tome/data/talents/cunning/traps.lua
+++ b/game/modules/tome/data/talents/cunning/traps.lua
@@ -42,7 +42,7 @@ newTalent{
 		elseif lev == 4 then
 			self:learnTalent(self.T_DISARMING_TRAP, true)
 		elseif lev == 5 then
-			self:learnTalent(self.T_FREEZING_TRAP, true)
+			self:learnTalent(self.T_NIGHTSHADE_TRAP, true)
 		end
 	end,
 	on_unlearn = function(self, t)
@@ -56,7 +56,7 @@ newTalent{
 		elseif lev == 3 then
 			self:unlearnTalent(self.T_DISARMING_TRAP)
 		elseif lev == 4 then
-			self:unlearnTalent(self.T_FREEZING_TRAP)
+			self:unlearnTalent(self.T_NIGHTSHADE_TRAP)
 		end
 	end,
 	info = function(self, t)
@@ -426,7 +426,7 @@ newTalent{
 }
 
 newTalent{
-	name = "Freezing Trap",
+	name = "Nightshade Trap",
 	type = {"cunning/traps", 1},
 	points = 1,
 	cooldown = 8,
@@ -444,15 +444,15 @@ newTalent{
 		local Trap = require "mod.class.Trap"
 		local t = Trap.new{
 			type = "elemental", id_by_type=true, unided_name = "trap",
-			name = "freeze trap", color=colors.LIGHT_BLUE,
+			name = "nightshade trap", color=colors.LIGHT_BLUE,
 			display = '^',
 			dam = dam,
 			faction = self.faction,
 			check_hit = self:combatAttackDex(),
 			triggered = function(self, x, y, who)
-				self:project({type="hit", x=x,y=y}, x, y, engine.DamageType.COLD, self.dam, {type="freeze"})
+				self:project({type="hit", x=x,y=y}, x, y, engine.DamageType.NATURE, self.dam, {type="slime"})
 				if who:checkHit(self.check_hit, who:combatSpellResist(), 0, 95, 15) and who:canBe("stun") then
-					who:setEffect(who.EFF_FROZEN, 4, {src=self.summoner})
+					who:setEffect(who.EFF_STUNNED, 4, {src=self.summoner})
 				end
 				return true, true
 			end,
@@ -480,7 +480,7 @@ newTalent{
 		return true
 	end,
 	info = function(self, t)
-		return ([[Lay a freezing trap, doing %0.2f cold damage to a creature and freezing it for 4 turns.]]):
+		return ([[Lay a trap cotted with a potent venom, doing %0.2f nature damage to a creature and stunning it for 4 turns.]]):
 		format(damDesc(self, DamageType.COLD, 20 + self:getCun() * 0.7 * self:getTalentLevel(self.T_TRAP_MASTERY)))
 	end,
 }
diff --git a/ideas/cunning.ods b/ideas/cunning.ods
index c0782147de9b681bd40636b13a5d1d0815df1bbe..c53ce5bbf79f5c1fa7b5003385d59b6086881836 100644
Binary files a/ideas/cunning.ods and b/ideas/cunning.ods differ