X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_player.qc;h=326d13615f12f76253f01f150bce685f3a1366ac;hb=602d2af83e18a5a689180d34aba7c64369484c91;hp=04ad12c6ef66b0a8685b8e55ef277b0fe19e9c6a;hpb=c5fece79dd031dbfaf29160ef33e537b8d12d818;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 04ad12c6e..326d13615 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -166,6 +166,8 @@ void CopyBody(float keepvelocity) self.animstate_endtime = oldself.animstate_endtime; self.animstate_override = oldself.animstate_override; self.animstate_looping = oldself.animstate_looping; + self.dphitcontentsmask = oldself.dphitcontentsmask; + self.death_time = oldself.death_time; self.frame = oldself.frame; self.pain_finished = oldself.pain_finished; self.health = oldself.health; @@ -419,6 +421,7 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float Violence_GibSplash(self, 1, 1, attacker); self.alpha = -1; self.solid = SOLID_NOT; // restore later + self.takedamage = DAMAGE_NO; // restore later } } @@ -758,13 +761,14 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht if(!waves) waves = autocvar_g_respawn_waves; if(waves) - self.death_time = ceil((time + sdelay) / waves) * waves; + self.respawn_time = ceil((time + sdelay) / waves) * waves; else - self.death_time = time + sdelay; - if((sdelay + waves >= 5.0) && (self.death_time - time > 1.75)) + self.respawn_time = time + sdelay; + if((sdelay + waves >= 5.0) && (self.respawn_time - time > 1.75)) self.respawn_countdown = 10; // first number to count down from is 10 else self.respawn_countdown = -1; // do not count down + self.death_time = time; if (random() < 0.5) setanim(self, self.anim_die1, FALSE, TRUE, TRUE); else @@ -976,8 +980,9 @@ float Say(entity source, float teamsay, entity privatesay, string msgin, float f if(!privatesay) if(source.classname != "player") { - if(teamsay || (autocvar_g_chat_nospectators == 1) || (autocvar_g_chat_nospectators == 2 && !inWarmupStage)) - teamsay = -1; // spectators + if not(intermission_running) + if(teamsay || (autocvar_g_chat_nospectators == 1) || (autocvar_g_chat_nospectators == 2 && !inWarmupStage)) + teamsay = -1; // spectators } if(flood) @@ -1009,22 +1014,23 @@ float Say(entity source, float teamsay, entity privatesay, string msgin, float f if(sourcemsgstr != "" && ret != 0) { - if(ret < 0) // fake + if(ret < 0) // faked message, because the player is muted { sprint(source, sourcemsgstr); if(sourcecmsgstr != "" && !privatesay) centerprint(source, sourcecmsgstr); } - else if(privatesay) + else if(privatesay) // private message, between 2 people only, not sent to server console { sprint(source, sourcemsgstr); sprint(privatesay, msgstr); if(cmsgstr != "") centerprint(privatesay, cmsgstr); } - else if(teamsay > 0) + else if(teamsay > 0) // team message, only sent to team mates { sprint(source, sourcemsgstr); + //print(msgstr); // send to server console too if(sourcecmsgstr != "") centerprint(source, sourcecmsgstr); FOR_EACH_REALPLAYER(head) if(head.team == source.team) @@ -1035,22 +1041,24 @@ float Say(entity source, float teamsay, entity privatesay, string msgin, float f centerprint(head, cmsgstr); } } - else if(teamsay < 0) + else if(teamsay < 0) // spectator message, only sent to spectators { sprint(source, sourcemsgstr); + //print(msgstr); // send to server console too FOR_EACH_REALCLIENT(head) if(head.classname != "player") if(head != source) sprint(head, msgstr); } - else if(sourcemsgstr != msgstr) + else if(sourcemsgstr != msgstr) // trimmed/server fixed message, sent to all players { sprint(source, sourcemsgstr); + //print(msgstr); // send to server console too FOR_EACH_REALCLIENT(head) if(head != source) sprint(head, msgstr); } else - bprint(msgstr); + bprint(msgstr); // entirely normal message, sent to all players -- bprint sends to server console too. } return ret;