diff --git a/game/engines/default/engine/Mouse.lua b/game/engines/default/engine/Mouse.lua
index 0f90a938128360fdbf9950076c515ade44d6675f..5f4975537182738bd4dc8bdcb868d0cd5773b2d2 100644
--- a/game/engines/default/engine/Mouse.lua
+++ b/game/engines/default/engine/Mouse.lua
@@ -38,7 +38,10 @@ function _M:receiveMouse(button, x, y, isup, force_name, extra)
 	self.status[button] = not isup
 	if not isup then return end
 
-	if _M.drag then return self:endDrag(x, y) end
+	if _M.drag then
+		if _M.drag.predrag then _M.drag = nil
+		else return self:endDrag(x, y) end
+	end
 
 	for i, m in ipairs(self.areas) do
 		if (not m.mode or m.mode.button) and (x >= m.x1 and x < m.x2 and y >= m.y1 and y < m.y2) and (not force_name or force_name == m.name) then
@@ -98,13 +101,17 @@ function _M:reset()
 end
 
 function _M:startDrag(x, y, cursor, payload, on_done)
-	if _M.drag then return end
+	if _M.drag then
+		if math.max(math.abs(_M.drag.x - x), math.abs(_M.drag.y - y)) > 6 then
+		end
+		return
+	end
 
-	_M.drag = {start_x=x, start_y=y, payload=payload, on_done=on_done}
+	_M.drag = {start_x=x, start_y=y, payload=payload, on_done=on_done, prestart=true}
 	if cursor then
 		game:setMouseCursor(cursor, nil, 0, 0)
 	end
-	print("[MOUSE] starting drag'n'drop")
+	print("[MOUSE] pre starting drag'n'drop")
 end
 
 function _M:endDrag(x, y)
diff --git a/game/modules/tome/data/chats/shertul-fortress-command-orb.lua b/game/modules/tome/data/chats/shertul-fortress-command-orb.lua
index 41fe0b2ce6fd7ea43a10e8b39c552e5eb1dbceff..c68977ad51da4983a670f19f4e833305d589499e 100644
--- a/game/modules/tome/data/chats/shertul-fortress-command-orb.lua
+++ b/game/modules/tome/data/chats/shertul-fortress-command-orb.lua
@@ -28,7 +28,7 @@ Rokzz krilt copru.]],
 	answers = {
 		{"[Examine the orb]", jump="examine", cond=has_rod},
 --		{"[Fly the fortress]", action=function(npc, player) player:hasQuest("shertul-fortress"):fly() end},
-		{"[Begin the Lichform ceremory]", cond=function(npc, player) local q = player:hasQuest("lichform") return player:hasQuest("lichform"):check_lichform(player) end, action=function(npc, player) player:setQuestStatus("lichform", engine.Quest.COMPLETED) end},
+		{"[Begin the Lichform ceremory]", cond=function(npc, player) local q = player:hasQuest("lichform") return q and q:check_lichform(player) end, action=function(npc, player) player:setQuestStatus("lichform", engine.Quest.COMPLETED) end},
 		{"[Leave the orb alone]"},
 	}
 }
diff --git a/game/modules/tome/data/talents/spells/necrotic-minions.lua b/game/modules/tome/data/talents/spells/necrotic-minions.lua
index d5d66c31e4d729de92c52d30e58ce483b055105f..6ca3ee94e976e09550fc51850f9a8f04fd92478d 100644
--- a/game/modules/tome/data/talents/spells/necrotic-minions.lua
+++ b/game/modules/tome/data/talents/spells/necrotic-minions.lua
@@ -577,6 +577,8 @@ function getAdvancedMinionChances(self)
 end
 
 local function getMinionChances(self)
+do return { ghoul=30, ghast=30, ghoulking=40 } end
+
 	local cl = math.floor(self:getTalentLevel(self.T_CREATE_MINIONS))
 	if cl <= 1 then
 		return { d_skel_warrior=55, skel_warrior=10, a_skel_warrior=0, skel_archer=10, skel_m_archer=0, skel_mage=5,   ghoul=20, ghast=0, ghoulking=0 }
diff --git a/game/modules/tome/data/zones/ring-of-blood/npcs.lua b/game/modules/tome/data/zones/ring-of-blood/npcs.lua
index a46656a3deb9829b4194912dc567bc2f4a773014..258b0a77ada4a6443d88ebcdf124856e08b0fc21 100644
--- a/game/modules/tome/data/zones/ring-of-blood/npcs.lua
+++ b/game/modules/tome/data/zones/ring-of-blood/npcs.lua
@@ -26,7 +26,7 @@ newEntity{ define_as = "RING_MASTER",
 	name = "Blood Master",
 	display = "@", color=colors.VIOLET,
 	blood_color = colors.BLUE,
-	desc = [[This small humanoid is covered in silky white fur. Its buldging eyes stares deep into your mind.]],
+	desc = [[This small humanoid is covered in silky white fur. Its bulging eyes stare deep into your mind.]],
 	level_range = {14, nil}, exp_worth = 2,
 	max_life = 150, life_rating = 12, fixed_rating = true,
 	rank = 3.5,
diff --git a/game/modules/tome/data/zones/town-derth/zone.lua b/game/modules/tome/data/zones/town-derth/zone.lua
index c36a8d3a62b6cd04b56c46596f84d0dc541a4d38..78ca89d3d7dbb4c4afb031ee5552d0bd55c7d8dc 100644
--- a/game/modules/tome/data/zones/town-derth/zone.lua
+++ b/game/modules/tome/data/zones/town-derth/zone.lua
@@ -66,7 +66,7 @@ return {
 		if nb_keyframes > 10 then return end
 		local Map = require "engine.Map"
 		if not level.eagle then
-			if nb_keyframes > 0 and rng.chance(200 / nb_keyframes) then
+			if nb_keyframes > 0 and rng.chance(800 / nb_keyframes) then
 				local dir = -math.rad(rng.float(310, 340))
 				local dirv = math.rad(rng.float(-0.1, 0.1))
 				local y = rng.range(0, level.map.w / 2 * Map.tile_w)
@@ -77,7 +77,7 @@ return {
 			local dx, dy = level.map:getScreenUpperCorner() -- Display at map border, always, so it scrolls with the map
 			if level.eagle then level.eagle.ps:toScreen(dx, dy, true, 1) end
 			if level.eagle_s then level.eagle_s.ps:toScreen(dx + 100, dy + 120, true, 1) end
-			if nb_keyframes > 0 and rng.chance(400 / nb_keyframes) then game:playSound("actions/eagle_scream") end
+			if nb_keyframes > 0 and rng.chance(1000 / nb_keyframes) then game:playSound("actions/eagle_scream") end
 			if level.eagle and not level.eagle.ps:isAlive() then level.eagle = nil end
 			if level.eagle_s and not level.eagle_s.ps:isAlive() then level.eagle_s = nil end
 		end