From 898ef7dc2d89ea6e30173a27f526cdd9aa6230f8 Mon Sep 17 00:00:00 2001
From: dg <dg@51575b47-30f0-44d4-a5cc-537603b46e54>
Date: Wed, 13 Feb 2013 13:28:46 +0000
Subject: [PATCH] Screen will turn greenish when healing is impossible

git-svn-id: http://svn.net-core.org/repos/t-engine4@6403 51575b47-30f0-44d4-a5cc-537603b46e54
---
 game/modules/tome/class/Player.lua               | 8 ++++++++
 game/modules/tome/data/gfx/shaders/main_fbo.frag | 6 ++++++
 2 files changed, 14 insertions(+)

diff --git a/game/modules/tome/class/Player.lua b/game/modules/tome/class/Player.lua
index 15e4aaba55..f805061294 100644
--- a/game/modules/tome/class/Player.lua
+++ b/game/modules/tome/class/Player.lua
@@ -300,6 +300,7 @@ function _M:act()
 	self.shader_old_life = self.life
 	self.old_air = self.air
 	self.old_psi = self.psi
+	self.old_healwarn = (self:attr("no_healing") or ((self.healing_factor or 1) <= 0))
 
 	-- Clean log flasher
 --	game.flash:empty()
@@ -348,6 +349,13 @@ function _M:updateMainShader()
 			if solipsism_power > 0 then game.fbo_shader:setUniform("solipsism_warning", solipsism_power)
 			else game.fbo_shader:setUniform("solipsism_warning", 0) end
 		end
+		if (self:attr("no_healing") or ((self.healing_factor or 1) <= 0)) ~= self.old_healwarn then
+			if (self:attr("no_healing") or ((self.healing_factor or 1) <= 0)) then
+				game.fbo_shader:setUniform("intensify", {0.3,1.3,0.3,1})
+			else
+				game.fbo_shader:setUniform("intensify", {0,0,0,0}) 
+			end
+		end
 
 		-- Colorize shader
 		if self:attr("stealth") and self:attr("stealth") > 0 then game.fbo_shader:setUniform("colorize", {0.9,0.9,0.9,0.6})
diff --git a/game/modules/tome/data/gfx/shaders/main_fbo.frag b/game/modules/tome/data/gfx/shaders/main_fbo.frag
index d169b8d944..21d7fac18e 100644
--- a/game/modules/tome/data/gfx/shaders/main_fbo.frag
+++ b/game/modules/tome/data/gfx/shaders/main_fbo.frag
@@ -1,5 +1,6 @@
 uniform float hp_warning;
 uniform float air_warning;
+uniform float death_warning;
 uniform float solipsism_warning;
 uniform float motionblur;
 uniform float blur;
@@ -104,9 +105,14 @@ void main(void)
 
 	if (intensify.r > 0.0 || intensify.g > 0.0 || intensify.b > 0.0)
 	{
+/*
 		float grey = gl_FragColor.r*0.3+gl_FragColor.g*0.59+gl_FragColor.b*0.11;
 		vec4 vgrey = vec4(grey, grey, grey, gl_FragColor.a);
 		gl_FragColor = max(gl_FragColor * intensify, vgrey);
+*/
+		float grey = gl_FragColor.r*0.3+gl_FragColor.g*0.59+gl_FragColor.b*0.11;
+		vec4 vgrey = vec4(grey, grey, grey, gl_FragColor.a);
+		gl_FragColor = gl_FragColor * intensify;
 	}
 
 	if (hp_warning > 0.0)
-- 
GitLab