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)