From: Samual <samual@xonotic.org>
Date: Mon, 9 Jan 2012 04:33:57 +0000 (-0500)
Subject: Fix colormap with copybody (so now, ghost bodies of dead players retain the player... 
X-Git-Tag: xonotic-v0.6.0~188^2~16^2
X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=a939674ad9b0e6b62ad9c3eb44ebc8b1d91b6792;p=xonotic%2Fxonotic-data.pk3dir.git

Fix colormap with copybody (so now, ghost bodies of dead players retain the player color instead of going white)
---

diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc
index e6f0433c4e..1db0e928a4 100644
--- a/qcsrc/server/cl_client.qc
+++ b/qcsrc/server/cl_client.qc
@@ -1750,7 +1750,6 @@ void UpdateChatBubble()
 	else self.colormod = '1 1 1';
 }*/
 
-.float oldcolormap;
 void respawn(void)
 {
 	if(self.alpha >= 0 && autocvar_g_respawn_ghosts)
@@ -1761,7 +1760,7 @@ void respawn(void)
 		self.velocity = '0 0 1' * autocvar_g_respawn_ghosts_speed;
 		self.avelocity = randomvec() * autocvar_g_respawn_ghosts_speed * 3 - randomvec() * autocvar_g_respawn_ghosts_speed * 3;
 		self.effects |= EF_ADDITIVE;
-		self.oldcolormap = self.colormap;
+		self.oldcolormap = self.colormap; // saved for copybody to use later
 		self.colormap = 0; // this originally was 512, but raises a warning in the engine, so get rid of it
 		pointparticles(particleeffectnum("respawn_ghost"), self.origin, '0 0 0', 1);
 		if(autocvar_g_respawn_ghosts_maxtime)
@@ -1770,11 +1769,13 @@ void respawn(void)
 
 	CopyBody(1);
 	self.effects |= EF_NODRAW; // prevent another CopyBody
-	if(self.oldcolormap)
+	
+	if(self.oldcolormap) // reset it so that when they respawn it'll be back to normal
 	{
 		self.colormap = self.oldcolormap;
 		self.oldcolormap = 0;
 	}
+	
 	PutClientInServer();
 }
 
diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc
index 04ad12c6ef..ae09df2975 100644
--- a/qcsrc/server/cl_player.qc
+++ b/qcsrc/server/cl_player.qc
@@ -124,6 +124,8 @@ void WeaponStats_LogKill(float awep, float abot, float vwep, float vbot)
 .entity pusher;
 .float pushltime;
 
+.float oldcolormap; // also used in cl_client.c:void respawn(void)
+
 .float CopyBody_nextthink;
 .void(void) CopyBody_think;
 void CopyBody_Think(void)
@@ -149,7 +151,7 @@ void CopyBody(float keepvelocity)
 	self = spawn();
 	self.enemy = oldself;
 	self.lip = oldself.lip;
-	self.colormap = oldself.colormap;
+	self.colormap = oldself.oldcolormap;
 	self.iscreature = oldself.iscreature;
 	self.damagedbycontents = oldself.damagedbycontents;
 	self.angles = oldself.angles;