X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_player.qc;h=475171161c153309733d323553d4d28074ed9320;hb=24b8182bcc5b54d5789b80cf814c0e88b9bc9cfb;hp=5de1be4bc33b0e9cbbf1c351f2d98ad8918f856c;hpb=6c37b5e66493181888bc8c5ec2dfeeb2bdf3794b;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index 5de1be4bc..475171161 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 } } @@ -432,7 +435,7 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht float valid_damage_for_weaponstats; float excess; - if((g_arena && numspawned < 2) || (g_ca && !ca_teams_ok) && !inWarmupStage) + if((g_arena && numspawned < 2) || (g_ca && allowed_to_spawn) && !inWarmupStage) return; dh = max(self.health, 0); @@ -690,17 +693,6 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht RemoveGrapplingHook(self); - if(self.flagcarried) - { - if(attacker.classname != "player") - DropFlag(self.flagcarried, self, attacker); // penalty for flag loss by suicide - else if(attacker.team == self.team) - DropFlag(self.flagcarried, attacker, attacker); // penalty for flag loss by suicide/teamkill - else - DropFlag(self.flagcarried, world, attacker); - } - if(self.ballcarried && g_nexball) - DropBall(self.ballcarried, self.origin, self.velocity); Portal_ClearAllLater(self); if(clienttype(self) == CLIENTTYPE_REAL) @@ -977,8 +969,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 || gameover))) + teamsay = -1; // spectators } if(flood) @@ -1010,22 +1003,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) @@ -1036,22 +1030,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;