diff --git a/game/modules/tome/data/talents/spells/master-necromancer.lua b/game/modules/tome/data/talents/spells/master-necromancer.lua index 1fe4c64c62f8637127e9fb45227853fbde0f3012..394c465ba9cb7f9e3ad40ecf2a87c256de4e5e58 100644 --- a/game/modules/tome/data/talents/spells/master-necromancer.lua +++ b/game/modules/tome/data/talents/spells/master-necromancer.lua @@ -125,10 +125,12 @@ newTalent{ local stats = necroArmyStats(self) if stats.nb == 0 then return end - local spots, spots_hostile = {}, {} + local spots, spots_hostile, spots_wall = {}, {}, {} self:projectApply({type="ball", radius=1}, self.x, self.y, Map.TERRAIN, function(_, x, y) local target = game.level.map(x, y, Map.ACTOR) + local terrain = game.level.map(x, y, Map.TERRAIN) if target and self:reactionToward(target) < 0 then spots_hostile[#spots_hostile+1] = {x=x, y=y, foe=target} + elseif not target and terrain and terrain.does_block_move then spots_wall[#spots_wall+1] = {x=x, y=y} elseif not target then spots[#spots+1] = {x=x, y=y} end end) @@ -137,6 +139,7 @@ newTalent{ local m = rng.tableRemove(stats.list) if not m then break end local spot = rng.tableRemove(spots_hostile) + if not spot and m.can_pass and m.can_pass.pass_wall then spot = rng.tableRemove(spots_wall) end if not spot then spot = rng.tableRemove(spots) end if not spot then break end