From e3c5d37887d031d1541fadd9ca2753ef545d6b89 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Sat, 29 Jan 2011 22:52:12 +0000
Subject: [PATCH] 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
---
 game/modules/tome/class/Player.lua      | 23 +++++++++++++----------
 game/modules/tome/data/damage_types.lua |  6 +++---
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index 5ecaff7e00..4e4a816586 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -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
 
diff --git a/game/modules/tome/data/damage_types.lua b/game/modules/tome/data/damage_types.lua
index c0a106e965..48005b1ab1 100644
--- a/game/modules/tome/data/damage_types.lua
+++ b/game/modules/tome/data/damage_types.lua
@@ -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
-- 
GitLab