Index: game/engines/default/engine/Target.lua =================================================================== --- game/engines/default/engine/Target.lua (revision 2637) +++ game/engines/default/engine/Target.lua (working copy) @@ -135,19 +135,20 @@ local target_type = { range=20, friendlyfire=true, + can_pass = {projectile=1}, block_path = function(typ, lx, ly) if not typ.no_restrict then if typ.requires_knowledge and not game.level.map.remembers(lx, ly) and not game.level.map.seens(lx, ly) then return true end - if not typ.pass_terrain and game.level.map:checkEntity(lx, ly, engine.Map.TERRAIN, "block_move") then return true + if not typ.pass_terrain and game.level.map:checkEntity(lx, ly, engine.Map.TERRAIN, "block_move", typ) then return true -- If we explode due to something other than terrain, then we should explode ON the tile, not before it - elseif typ.stop_block and game.level.map:checkAllEntities(lx, ly, "block_move") then return true, lx, ly end + elseif typ.stop_block and game.level.map:checkAllEntities(lx, ly, "block_move", typ) then return true, lx, ly end if typ.range and typ.source_actor and typ.source_actor.x and math.sqrt((typ.source_actor.x-lx)^2 + (typ.source_actor.y-ly)^2) > typ.range then return true end end -- If we don't block the path, then the explode point should be here return false, lx, ly end, block_radius=function(typ, lx, ly) - return not typ.no_restrict and game.level.map:checkEntity(lx, ly, engine.Map.TERRAIN, "block_move") + return not typ.no_restrict and game.level.map:checkEntity(lx, ly, engine.Map.TERRAIN, "block_move", typ) end } Index: game/modules/tome/data/general/grids/lava.lua =================================================================== --- game/modules/tome/data/general/grids/lava.lua (revision 2637) +++ game/modules/tome/data/general/grids/lava.lua (working copy) @@ -47,4 +47,5 @@ display = '%', color=colors.LIGHT_RED, back_color=colors.RED, does_block_move = true, shader = "lava", + can_pass = {projectile=0}, }