Skip to content
Snippets Groups Projects
Commit e3c5d378 authored by dg's avatar dg
Browse files

Flying texts will not appear over unseen targets

git-svn-id: http://svn.net-core.org/repos/t-engine4@2560 51575b47-30f0-44d4-a5cc-537603b46e54
parent 7ac207c6
No related branches found
No related tags found
No related merge requests found
......@@ -276,8 +276,15 @@ local arcane_eye_true_seeing = function() return true, 100 end
function _M:playerFOV()
-- Clean FOV before computing it
game.level.map:cleanFOV()
-- Do wilderness stuff, nothing else
if game.zone.wilderness then
self:computeFOV(game.zone.wilderness_see_radius, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y, wild_fovdist[sqdist]) end, true, true, true)
return
end
-- Compute ESP FOV, using cache
if not game.zone.wilderness then self:computeFOV(self.esp.range or 10, "block_esp", function(x, y) game.level.map:applyESP(x, y, 0.6) end, true, true, true) end
self:computeFOV(self.esp.range or 10, "block_esp", function(x, y) game.level.map:applyESP(x, y, 0.6) end, true, true, true)
-- Handle Sense spell, a simple FOV, using cache. Note that this means some terrain features can be made to block sensing
if self:attr("detect_range") then
......@@ -373,15 +380,11 @@ function _M:playerFOV()
-- Compute both the normal and the lite FOV, using cache
-- Do it last so it overrides others
if game.zone.wilderness_see_radius then
self:computeFOV(game.zone.wilderness_see_radius, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y, wild_fovdist[sqdist]) end, true, true, true)
else
self:computeFOV(self.sight or 10, "block_sight", function(x, y, dx, dy, sqdist)
game.level.map:apply(x, y, fovdist[sqdist])
end, true, false, true)
if self.lite <= 0 then game.level.map:applyLite(self.x, self.y)
else self:computeFOV(self.lite, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y) end, true, true, true) end
end
self:computeFOV(self.sight or 10, "block_sight", function(x, y, dx, dy, sqdist)
game.level.map:apply(x, y, fovdist[sqdist])
end, true, false, true)
if self.lite <= 0 then game.level.map:applyLite(self.x, self.y)
else self:computeFOV(self.lite, "block_sight", function(x, y, dx, dy, sqdist) game.level.map:applyLite(x, y) end, true, true, true) end
end
end
......
......@@ -121,13 +121,13 @@ setDefaultProjector(function(src, x, y, type, dam, tmp, no_martyr)
local sx, sy = game.level.map:getTileToScreen(x, y)
if target:takeHit(dam, src) then
if rsrc == game.player or rtarget == game.player or game.party:hasMember(rsrc) or game.party:hasMember(rtarget) then
if game.level.map.seens(x, y) and (rsrc == game.player or rtarget == game.player or game.party:hasMember(rsrc) or game.party:hasMember(rtarget)) then
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, "Kill!", {255,0,255})
end
elseif not DamageType:get(type).hideFlyer then
if rsrc == game.player or game.party:hasMember(rsrc) then
if game.level.map.seens(x, y) and (rsrc == game.player or game.party:hasMember(rsrc)) then
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, tostring(-math.ceil(dam)), {0,255,0})
elseif rtarget == game.player or game.party:hasMember(rtarget) then
elseif game.level.map.seens(x, y) and (rtarget == game.player or game.party:hasMember(rtarget)) then
game.flyers:add(sx, sy, 30, (rng.range(0,2)-1) * 0.5, -3, tostring(-math.ceil(dam)), {255,0,0})
end
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment