From d391785297fb3bc674195dbf7c7adacb2de97d8c Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Wed, 15 Feb 2012 12:20:00 +0100 Subject: [PATCH] do not rewrite colormap on corpses (but do rewrite in CopyBody cheats) --- qcsrc/server/cheats.qc | 13 ++++++++----- qcsrc/server/cl_player.qc | 12 ++++++------ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/qcsrc/server/cheats.qc b/qcsrc/server/cheats.qc index 5ba860940..b3487657d 100644 --- a/qcsrc/server/cheats.qc +++ b/qcsrc/server/cheats.qc @@ -1,4 +1,4 @@ -void CopyBody(float keepvelocity); +entity CopyBody(float keepvelocity); #ifdef NOCHEATS @@ -158,15 +158,18 @@ float CheatImpulse(float i) case CHIMPULSE_CLONE_MOVING: IS_CHEAT(i, 0, 0); makevectors (self.v_angle); - self.velocity = self.velocity + v_forward * 300; - CopyBody(1); + e = CopyBody(1); + if(e.colormap <= maxclients && e.colormap > 0) + e.colormap = 1024 + self.clientcolors; + e.velocity = e.velocity + v_forward * 300; self.lip += 1; - self.velocity = self.velocity - v_forward * 300; DID_CHEAT(); break; case CHIMPULSE_CLONE_STANDING: IS_CHEAT(i, 0, 0); - CopyBody(0); + e = CopyBody(0); + if(e.colormap <= maxclients && e.colormap > 0) + e.colormap = 1024 + self.clientcolors; self.lip += 1; DID_CHEAT(); break; diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 49b52555f..86763c78a 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -140,13 +140,14 @@ void CopyBody_Think(void) CSQCMODEL_AUTOUPDATE(); self.nextthink = time; } -void CopyBody(float keepvelocity) +entity CopyBody(float keepvelocity) { + entity ret; entity oldself; if (self.effects & EF_NODRAW) - return; + return world; oldself = self; - self = spawn(); + ret = self = spawn(); self.enemy = oldself; self.lip = oldself.lip; self.colormap = oldself.colormap; @@ -200,9 +201,6 @@ void CopyBody(float keepvelocity) self.owner = oldself; - if(self.colormap <= maxclients && self.colormap > 0) - self.colormap = 1024 + oldself.clientcolors; - CSQCMODEL_AUTOINIT(); self.CopyBody_nextthink = oldself.nextthink; self.CopyBody_think = oldself.think; @@ -210,6 +208,8 @@ void CopyBody(float keepvelocity) self.think = CopyBody_Think; self = oldself; + + return ret; } float player_getspecies() -- 2.39.2