From 4344cee11ee18524d1258a69181da13e415bc95c Mon Sep 17 00:00:00 2001
From: MirceaKitsune <sonichedgehog_hyperblast00@yahoo.com>
Date: Mon, 11 Jul 2011 03:24:05 +0300
Subject: [PATCH] Don't hide the predator's stomach model behind walls. This
 fixes walls showing through the stomach when the predator is too close to a
 wall

---
 data/qcsrc/server/cl_client.qc       | 5 +++++
 data/qcsrc/server/cl_weaponsystem.qc | 4 ++++
 data/qcsrc/server/vore.qc            | 1 +
 3 files changed, 10 insertions(+)

diff --git a/data/qcsrc/server/cl_client.qc b/data/qcsrc/server/cl_client.qc
index 1ccdea5c..702125d7 100644
--- a/data/qcsrc/server/cl_client.qc
+++ b/data/qcsrc/server/cl_client.qc
@@ -531,15 +531,20 @@ float Client_customizeentityforclient()
 	if(other.predator == self || other.fakepredator == self)
 	{
 		Client_setmodel(stomachmodel);
+		self.effects |= EF_NODEPTHTEST; // don't hide behind walls
 		self.alpha = other.cvar_cl_vore_stomachmodel;
 		return TRUE;
 	}
 
 	Client_setmodel(setmodel_state());
+	self.effects &~= EF_NODEPTHTEST;
 	if not(self.stat_eaten || self.fakeprey)
 		self.alpha = default_player_alpha;
 	else if(cvar("g_vore_neighborprey_distance") && !self.fakeprey && (self.predator == other.predator || self.predator == other.fakepredator) && !(other.cvar_chase_active || other.classname == "observer"))
+	{
 		self.alpha = default_player_alpha; // allow seeing neighboring prey
+		self.effects |= EF_NODEPTHTEST; // don't hide behind the stomach's own EF_NODEPTHTEST
+	}
 	else
 		self.alpha = -1; // hide prey
 	return TRUE;
diff --git a/data/qcsrc/server/cl_weaponsystem.qc b/data/qcsrc/server/cl_weaponsystem.qc
index 144ade6e..f6ae23fa 100644
--- a/data/qcsrc/server/cl_weaponsystem.qc
+++ b/data/qcsrc/server/cl_weaponsystem.qc
@@ -266,10 +266,14 @@ float CL_ExteriorWeaponentity_CustomizeEntityForClient()
 		return TRUE;
 	}
 
+	self.effects &~= EF_NODEPTHTEST;
 	if not(self.owner.stat_eaten)
 		setmodel(self, strcat("models/weapons/v_", self.owner.weaponname, ".md3"));
 	else if(cvar("g_vore_neighborprey_distance") && (other.predator == self.owner.predator || other.fakepredator == self.owner.predator) && !(other.cvar_chase_active || other.classname == "observer"))
+	{
 		setmodel(self, strcat("models/weapons/v_", self.owner.weaponname, ".md3")); // allow seeing neighboring prey's weapon model
+		self.effects |= EF_NODEPTHTEST; // don't hide behind the stomach's own EF_NODEPTHTEST
+	}
 	else
 		setmodel(self, ""); // hide prey's weapon model
 	return TRUE;
diff --git a/data/qcsrc/server/vore.qc b/data/qcsrc/server/vore.qc
index 531f95d0..7e22cf90 100644
--- a/data/qcsrc/server/vore.qc
+++ b/data/qcsrc/server/vore.qc
@@ -235,6 +235,7 @@ void Vore_SwallowModel_Update(entity prey, entity pred)
 		// apply the properties of the prey
 		prey.swallow_model.viewmodelforclient = prey; // use the same system as the weapon model
 		//prey.swallow_model.effects |= EF_NOGUNBOB; // let it bob
+		prey.swallow_model.effects |= EF_NODEPTHTEST; // don't hide behind walls
 		prey.swallow_model.colormap = prey.colormap; // pants and shirt color
 		prey.swallow_model.glowmod = prey.glowmod; // glow color
 
-- 
2.39.5