diff --git a/game/engines/default/engine/Map.lua b/game/engines/default/engine/Map.lua index 26de64c35f3ec2340be77aa9862fdf6b1f0f71c0..d0a09200ce184829fe5d5d66c09b98b580bbcd84 100644 --- a/game/engines/default/engine/Map.lua +++ b/game/engines/default/engine/Map.lua @@ -388,6 +388,11 @@ function _M:redisplay() end end end +-- Schedules a redisplay, use this in places where multiple redisplays might happen on the same tick +function _M:scheduleRedisplay() + game:onTickEnd(function() self:redisplay() end, "map_redisplay") +end + --- Closes things in the object to allow it to be garbage collected -- Map objects are NOT automatically garbage collected because they contain FOV C structure, which themselves have a reference -- to the map. Cyclic references! BAD BAD BAD !<br/> diff --git a/game/modules/tome/data/talents/chronomancy/anomalies.lua b/game/modules/tome/data/talents/chronomancy/anomalies.lua index 270b3e9c16f89bf1d25c142c3a050ae630832dcc..394a0254dc5531e14d1371d3f8f34f4edad21c10 100644 --- a/game/modules/tome/data/talents/chronomancy/anomalies.lua +++ b/game/modules/tome/data/talents/chronomancy/anomalies.lua @@ -1078,12 +1078,12 @@ newTalent{ game.level.map(self.x, self.y, engine.Map.TERRAIN, self.old_feat) game.nicer_tiles:updateAround(game.level, self.x, self.y) game.level:removeEntity(self) --- game.level.map:redisplay() + game.level.map:scheduleRedisplay() end end, dig = function(src, x, y, old) game.level:removeEntity(old) --- game.level.map:redisplay() + game.level.map:scheduleRedisplay() return nil, old.old_feat end, summoner_gain_exp = true, diff --git a/game/modules/tome/data/talents/cursed/darkness.lua b/game/modules/tome/data/talents/cursed/darkness.lua index 18550c01a6ad74ced18ecb86ca77146cbc2b657d..13f37c0070d57ca2e807560d88a96ef1acba7dbd 100644 --- a/game/modules/tome/data/talents/cursed/darkness.lua +++ b/game/modules/tome/data/talents/cursed/darkness.lua @@ -236,7 +236,7 @@ newTalent{ game.level.map:remove(self.x, self.y, Map.TERRAIN+3) game.level:removeEntity(self, true) self.creepingDark = nil - --game.level.map:redisplay() + game.level.map:scheduleRedisplay() else self.duration = self.duration - 1 diff --git a/game/modules/tome/data/talents/spells/earth.lua b/game/modules/tome/data/talents/spells/earth.lua index 498efd4b484f6cb63200eeb019099f987f442632..a6ec4cc911e5d881219a52fd78e211acdbe5f35e 100644 --- a/game/modules/tome/data/talents/spells/earth.lua +++ b/game/modules/tome/data/talents/spells/earth.lua @@ -179,12 +179,12 @@ newTalent{ game.level.map(self.x, self.y, engine.Map.TERRAIN, self.old_feat) game.nicer_tiles:updateAround(game.level, self.x, self.y) game.level:removeEntity(self) --- game.level.map:redisplay() + game.level.map:scheduleRedisplay() end end, dig = function(src, x, y, old) game.level:removeEntity(old) --- game.level.map:redisplay() + game.level.map:scheduleRedisplay() return nil, old.old_feat end, summoner_gain_exp = true, diff --git a/game/modules/tome/data/talents/spells/fire-alchemy.lua b/game/modules/tome/data/talents/spells/fire-alchemy.lua index bef2597da6219fbafc8ae2806c8018fee578b198..bba4e110c048e605e699cf172146913ed9c2d75e 100644 --- a/game/modules/tome/data/talents/spells/fire-alchemy.lua +++ b/game/modules/tome/data/talents/spells/fire-alchemy.lua @@ -82,7 +82,7 @@ newTalent{ if self.temporary <= 0 then game.level.map:remove(self.x, self.y, engine.Map.TERRAIN+2) game.level:removeEntity(self) - game.level.map:redisplay() + game.level.map:scheduleRedisplay() end end, summoner_gain_exp = true, @@ -100,6 +100,7 @@ newTalent{ end) end game:playSoundNear(self, "talents/breath") + game.level.map:redisplay() return true end, info = function(self, t)