diff --git a/game/engines/default/engine/dialogs/VideoOptions.lua b/game/engines/default/engine/dialogs/VideoOptions.lua
index 4480ed7f2b463b038086434849e009e813fc248a..9a276bf4ac10e3c4d521382b7e9dcdee86c424c4 100644
--- a/game/engines/default/engine/dialogs/VideoOptions.lua
+++ b/game/engines/default/engine/dialogs/VideoOptions.lua
@@ -75,6 +75,7 @@ function _M:generateList()
 		return tostring(config.settings.display_fps)
 	end, fct=function(item)
 		game:registerDialog(GetQuantity.new("Enter density", "From 5 to 60", config.settings.display_fps, 60, function(qty)
+			qty = util.bound(qty, 5, 60)
 			game:saveSettings("display_fps", ("display_fps = %d\n"):format(qty))
 			config.settings.display_fps = qty
 			core.game.setFPS(qty)
diff --git a/game/engines/default/engine/interface/ActorInventory.lua b/game/engines/default/engine/interface/ActorInventory.lua
index faa05f8a7eb06584eda4107fcc61256601acd493..383d44c9c77f81787eba5b2cb9bc44a9cd10372f 100644
--- a/game/engines/default/engine/interface/ActorInventory.lua
+++ b/game/engines/default/engine/interface/ActorInventory.lua
@@ -121,6 +121,7 @@ end
 
 --- Picks an object from the floor
 function _M:pickupFloor(i, vocal, no_sort)
+	if not self:getInven(self.INVEN_INVEN) then return end
 	local o = game.level.map:getObject(self.x, self.y, i)
 	if o then
 		local prepickup = o:check("on_prepickup", self, i)
@@ -390,6 +391,7 @@ end
 function _M:sortInven(inven)
 	if not inven then inven = self.inven[self.INVEN_INVEN] end
 	inven = self:getInven(inven)
+	if not inven then return end
 
 	-- Stack objects first, from bottom
 	for i = #inven, 1, -1 do
diff --git a/game/modules/tome/ai/summon.lua b/game/modules/tome/ai/summon.lua
index 6add01110107df5ebfd3b31314dd18bba167faa7..acb24066e23e18206c4d9d47192b11310dad9369 100644
--- a/game/modules/tome/ai/summon.lua
+++ b/game/modules/tome/ai/summon.lua
@@ -21,6 +21,7 @@ newAI("summoned", function(self)
 	-- Run out of time ?
 	if self.summon_time then
 		self.summon_time = self.summon_time - 1
+		print("==========",self.summon_time)
 		if self.summon_time <= 0 then
 			game.logPlayer(self.summoner, "#PINK#Your summoned %s disappears.", self.name)
 			self:die()
diff --git a/game/modules/tome/class/Game.lua b/game/modules/tome/class/Game.lua
index 791285a6357059b287955820fbe036fa008ec999..187bd88fa2468451de4843b3026655e06d47ffc5 100644
--- a/game/modules/tome/class/Game.lua
+++ b/game/modules/tome/class/Game.lua
@@ -70,7 +70,6 @@ function _M:init()
 	engine.interface.GameMusic.init(self)
 	engine.interface.GameSound.init(self)
 
-	self.persistent_actors = {}
 	-- Pause at birth
 	self.paused = true
 
@@ -353,7 +352,7 @@ function _M:setupMiniMap()
 end
 
 function _M:save()
-	return class.save(self, self:defaultSavedFields{difficulty=true, persistent_actors=true, to_re_add_actors=true, party=true}, true)
+	return class.save(self, self:defaultSavedFields{difficulty=true, to_re_add_actors=true, party=true}, true)
 end
 
 function _M:getSaveDescription()
@@ -386,8 +385,8 @@ function _M:leaveLevel(level, lev, old_lev)
 			level.exited.up = {x=self.player.x, y=self.player.y}
 		end
 		level.last_turn = self.turn
-		for act, _ in pairs(self.persistent_actors) do
-			if level:hasEntity(act) then
+		for act, _ in pairs(self.party.members) do
+			if self.player ~= act and level:hasEntity(act) then
 				level:removeEntity(act)
 				self.to_re_add_actors[act] = true
 			end
diff --git a/game/modules/tome/class/Party.lua b/game/modules/tome/class/Party.lua
index 19b86f81b61b7a3cc302666fe5b0f847c4e9dd1b..2ba944acb9b2bd256416aaec8a73af671e212b67 100644
--- a/game/modules/tome/class/Party.lua
+++ b/game/modules/tome/class/Party.lua
@@ -117,8 +117,9 @@ function _M:setPlayer(actor)
 end
 
 function _M:findSuitablePlayer(type)
-	for actor, def in pairs(self.members) do
-		if def.control == "full" and (not type or def.type == type) then
+	for i, actor in ipairs(self.m_list) do
+		local def = self.members[actor]
+		if def.control == "full" and (not type or def.type == type) and not actor.dead then
 			self:setPlayer(actor)
 			return true
 		end
diff --git a/game/modules/tome/data/talents/spells/golemancy.lua b/game/modules/tome/data/talents/spells/golemancy.lua
index c494cc0ab40c58285e0cd54280e862313011e752..a2c01b3b1f3ea66995c9c9abc732db2568ffc299 100644
--- a/game/modules/tome/data/talents/spells/golemancy.lua
+++ b/game/modules/tome/data/talents/spells/golemancy.lua
@@ -90,7 +90,6 @@ newTalent{
 		if not self.alchemy_golem then
 			self.alchemy_golem = game.zone:finishEntity(game.level, "actor", makeGolem())
 			game.party:addMember(self.alchemy_golem, {control="full", type="golem", title="Golem"})
-			game.persistent_actors[self.alchemy_golem] = 1
 			if not self.alchemy_golem then return end
 			self.alchemy_golem.faction = self.faction
 			self.alchemy_golem.name = "golem (servant of "..self.name..")"