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..")"