From 1a2a894ec919a72fb22972c3de8cd52b872b3e9a Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sun, 2 Jan 2011 22:33:31 +0000
Subject: [PATCH] fix

git-svn-id: http://svn.net-core.org/repos/t-engine4@2277 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/engines/default/engine/dialogs/VideoOptions.lua     | 1 +
 game/engines/default/engine/interface/ActorInventory.lua | 2 ++
 game/modules/tome/ai/summon.lua                          | 1 +
 game/modules/tome/class/Game.lua                         | 7 +++----
 game/modules/tome/class/Party.lua                        | 5 +++--
 game/modules/tome/data/talents/spells/golemancy.lua      | 1 -
 6 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/game/engines/default/engine/dialogs/VideoOptions.lua b/game/engines/default/engine/dialogs/VideoOptions.lua
index 4480ed7f2b..9a276bf4ac 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 faa05f8a7e..383d44c9c7 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 6add011101..acb24066e2 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 791285a635..187bd88fa2 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 19b86f81b6..2ba944acb9 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 c494cc0ab4..a2c01b3b1f 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..")"
-- 
GitLab