diff --git a/game/modules/tome/class/Actor.lua b/game/modules/tome/class/Actor.lua
index 3d6516029493cdf325bcf93156371d8784bd6ed9..b8d3c0beff25ae6452e6db638512399b1dcdff1f 100644
--- a/game/modules/tome/class/Actor.lua
+++ b/game/modules/tome/class/Actor.lua
@@ -6987,6 +6987,10 @@ function _M:canSeeNoCache(actor, def, def_pct)
 		end
 	end
 
+	if actor.is_doomed_shadow and self:knowTalent(self.T_SHADOW_SENSES) then
+		return true, 100
+	end
+
 	-- Blindness means can't see anything
 	if self:attr("blind") then
 
diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index 8476cee5a817904557a88590524343552da8e76d..da5c50c6f0de03c3b7b115c2dc75acc5a9576036 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -631,10 +631,12 @@ function _M:playerFOV()
 		local range = self:getTalentRange(t)
 		local sqsense = range * range
 
-		for shadow, _ in pairs(game.party.members) do if shadow.is_doomed_shadow and not shadow.dead then
+		for shadow, _ in pairs(game.party.members) do if shadow.is_doomed_shadow and not shadow.dead and shadow.x then
 			local arr = shadow.fov.actors_dist
 			local tbl = shadow.fov.actors
 			local act
+			game.level.map:apply(shadow.x, shadow.y, 0.6)
+			game.level.map:applyExtraLite(shadow.x, shadow.y)
 			for i = 1, #arr do
 				act = arr[i]
 				if act and not act.dead and act.x and tbl[act] and shadow:canSee(act) and tbl[act].sqdist <= sqsense then