diff --git a/game/engines/default/engine/Map.lua b/game/engines/default/engine/Map.lua
index 3337a9fafe0c227edccf102e2b2a960d5d185ba8..76eab03ba21671c598fe5b3f4aea88a57cee9d34 100644
--- a/game/engines/default/engine/Map.lua
+++ b/game/engines/default/engine/Map.lua
@@ -406,9 +406,9 @@ function _M:updateMap(x, y)
 	-- This is to improve speed, we create a function for each spot that checks entities it knows are there
 	-- This avoid a costly for iteration over a pairs() and this allows luajit to compile only code that is needed
 	local ce = {}
-	local fstr = [[p = m[%s]:check(what, x, y, ...) if p then return p end ]]
+	local fstr = [[if m[%s] then p = m[%s]:check(what, x, y, ...) if p then return p end end ]]
 	ce[#ce+1] = [[return function(self, x, y, what, ...) local p local m = self.map[x + y * self.w] ]]
-	for idx, e in pairs(self.map[x + y * self.w]) do ce[#ce+1] = fstr:format(idx) end
+	for idx, e in pairs(self.map[x + y * self.w]) do ce[#ce+1] = fstr:format(idx, idx) end
 	ce[#ce+1] = [[end]]
 	local ce = table.concat(ce)
 	self._check_entities[x + y * self.w] = self._check_entities_store[ce] or loadstring(ce)()
diff --git a/game/engines/default/engine/interface/ActorAI.lua b/game/engines/default/engine/interface/ActorAI.lua
index fb4d9dbbd599bc7a28fe4adc6ca2e9d89597b8aa..1fbb80a62dcf71c80d38888d347b6643f28b9b1a 100644
--- a/game/engines/default/engine/interface/ActorAI.lua
+++ b/game/engines/default/engine/interface/ActorAI.lua
@@ -121,6 +121,7 @@ end
 --- Main entry point for AIs
 function _M:doAI()
 	if not self.ai then return end
+	if self.dead then return end
 --	if self.x < game.player.x - 10 or self.x > game.player.x + 10 or self.y < game.player.y - 10 or self.y > game.player.y + 10 then return end
 
 	-- If we have a target but it is dead (it was not yet garbage collected but it'll come)
diff --git a/game/engines/default/special/mainmenu/class/Game.lua b/game/engines/default/special/mainmenu/class/Game.lua
index 3609343ab1c80e70a54688eb1105746d0b0e0738..8a8ebce93a64ffc407012f2aea20d01dede6f5cc 100644
--- a/game/engines/default/special/mainmenu/class/Game.lua
+++ b/game/engines/default/special/mainmenu/class/Game.lua
@@ -237,7 +237,7 @@ Now go and have some fun!]]
 	end
 	self.step.do_tooltip = true
 
-	self:installNewEngine()
+--	self:installNewEngine()
 
 	if not self.firstrunchecked then
 		-- Check first time run for online profile
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index f87e1afccea152a6a996aced341ca5b74beea469..edbcdb7b64bade36ae9c54c4b3067ef52deab6f3 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -239,13 +239,14 @@ function _M:save()
 end
 
 function _M:getSaveDescription()
+	local player = self.player:resolveSource()
 	return {
-		name = self.player.name,
+		name = player.name,
 		description = ([[%s the level %d %s %s.
 Difficulty: %s
 Exploring level %d of %s.]]):format(
-		self.player.name, self.player.level, self.player.descriptor.subrace, self.player.descriptor.subclass,
-		self.player.descriptor.difficulty,
+		player.name, player.level, player.descriptor.subrace, player.descriptor.subclass,
+		player.descriptor.difficulty,
 		self.level.level, self.zone.name
 		),
 	}
diff --git a/game/modules/tome/data/achievements/kills.lua b/game/modules/tome/data/achievements/kills.lua
index ed06bda422f484f36c77fc95e732490115323805..ec5378c8a75e5b1e8fd8d8c0f6a53d8e7e9350d2 100644
--- a/game/modules/tome/data/achievements/kills.lua
+++ b/game/modules/tome/data/achievements/kills.lua
@@ -52,7 +52,7 @@ newAchievement{
 	mode = "player",
 	can_gain = function(self, who, target)
 		if target.type == "humanoid" then
-			self.nb = (self.nb or 0) + 500
+			self.nb = (self.nb or 0) + 1
 			if self.nb >= 1000 then return true end
 		end
 	end,
diff --git a/game/modules/tome/data/quests/escort-duty.lua b/game/modules/tome/data/quests/escort-duty.lua
index c52b4d04224f7bf7e4da6d668b34b102819be382..dd251f143acfc1aa7ba342ed5216eb0e24c42ec9 100644
--- a/game/modules/tome/data/quests/escort-duty.lua
+++ b/game/modules/tome/data/quests/escort-duty.lua
@@ -312,10 +312,10 @@ on_grant = function(self, who)
 		on_move = function(self, x, y, who)
 			if not who.escort_quest then return end
 			game.player:setQuestStatus(who.quest_id, engine.Quest.DONE)
-			who:disappear()
-			who:removed()
 			local Chat = require "engine.Chat"
 			Chat.new("escort-quest", who, game.player, {npc=who}):invoke()
+			who:disappear()
+			who:removed()
 		end,
 	}
 	g:resolve() g:resolve(nil, true)
diff --git a/game/modules/tome/data/talents/gifts/summon-distance.lua b/game/modules/tome/data/talents/gifts/summon-distance.lua
index 4a00b83d328765522cd7840a66464ae4589ffc97..2a67d505d5372fed6942031ba06cb7f98de7007f 100644
--- a/game/modules/tome/data/talents/gifts/summon-distance.lua
+++ b/game/modules/tome/data/talents/gifts/summon-distance.lua
@@ -25,7 +25,7 @@ newTalent{ short_name = "FIRE_IMP_BOLT",
 	range = 20,
 	reflectable = true,
 	action = function(self, t)
-		local tg = {type="hit", range=self:getTalentRange(t), talent=t}
+		local tg = {type="bolt", range=self:getTalentRange(t), talent=t}
 		local x, y = self:getTarget(tg)
 		if not x or not y then return nil end
 		self:project(tg, x, y, DamageType.FIRE, self:spellCrit(self:combatTalentSpellDamage(t, 8, 120)), {type="flame"})
diff --git a/game/modules/tome/data/talents/gifts/summon-utility.lua b/game/modules/tome/data/talents/gifts/summon-utility.lua
index 877f68f5a44d0f13a15f3cdd177f0cf80a99bd59..d02438ce3efe8b4f8cf9bea25e07fff4504b9750 100644
--- a/game/modules/tome/data/talents/gifts/summon-utility.lua
+++ b/game/modules/tome/data/talents/gifts/summon-utility.lua
@@ -354,11 +354,11 @@ newTalent{
 	action = function(self, t)
 		local tg = {type="hit", range=self:getTalentRange(t), nolock=true, talent=t, first_target="friend"}
 		local tx, ty, target = self:getTarget(tg)
-		if not tx or not ty or not target then print("1") return nil end
+		if not tx or not ty or not target then return nil end
 		local _ _, tx, ty = self:canProject(tg, tx, ty)
 		target = game.level.map(tx, ty, Map.ACTOR)
-		if target == self then print("2") return nil end
-		if not target.summoner == game.player then print("3") return nil end
+		if not target or target == self then return nil end
+		if not target.summoner == game.player then return nil end
 
 		local ot = target
 		target = mod.class.Player.new(target)