X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_player.qc;h=64329f23eeab2234b5c244479a3c27d53c8adb7d;hb=dc550ef55f6f2d079741662577a75578bd1097b5;hp=b03d8aa7d7b4626718c153d4338a0fca0e101051;hpb=8ec332c7d3cffdc6b39c3ada385fa41995630589;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_player.qc b/qcsrc/server/cl_player.qc index b03d8aa7d..64329f23e 100644 --- a/qcsrc/server/cl_player.qc +++ b/qcsrc/server/cl_player.qc @@ -123,6 +123,7 @@ void WeaponStats_LogKill(float awep, float abot, float vwep, float vbot) .entity pusher; .float pushltime; +.float istypefrag; .float CopyBody_nextthink; .void(void) CopyBody_think; @@ -151,6 +152,7 @@ void CopyBody(float keepvelocity) self.lip = oldself.lip; self.colormap = oldself.colormap; self.iscreature = oldself.iscreature; + self.teleportable = oldself.teleportable; self.damagedbycontents = oldself.damagedbycontents; self.angles = oldself.angles; self.avelocity = oldself.avelocity; @@ -424,11 +426,11 @@ void PlayerCorpseDamage (entity inflictor, entity attacker, float damage, float self.alpha = -1; self.solid = SOLID_NOT; // restore later self.takedamage = DAMAGE_NO; // restore later + self.damagedbycontents = FALSE; } } void ClientKill_Now_TeamChange(); -void freezetag_CheckWinner(); void PlayerDamage (entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force) { @@ -582,11 +584,13 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht // don't reset pushltime for self damage as it may be an attempt to // escape a lava pit or similar //self.pushltime = 0; + self.istypefrag = 0; } else if(attacker.classname == "player") { self.pusher = attacker; self.pushltime = time + autocvar_g_maxpushtime; + self.istypefrag = self.BUTTON_CHAT; } else if(time < self.pushltime) { @@ -594,7 +598,10 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht self.pushltime = max(self.pushltime, time + 0.6); } else + { self.pushltime = 0; + self.istypefrag = 0; + } float abot, vbot, awep; abot = (clienttype(attacker) == CLIENTTYPE_BOT); @@ -681,31 +688,17 @@ void PlayerDamage (entity inflictor, entity attacker, float damage, float deatht if(accuracy_isgooddamage(attacker, self)) attacker.accuracy.(accuracy_frags[w-1]) += 1; - if(deathtype == DEATH_HURTTRIGGER && g_freezetag) - { - PutClientInServer(); - count_alive_players(); // re-count players - freezetag_CheckWinner(); - return; - } - frag_attacker = attacker; frag_inflictor = inflictor; frag_target = self; - MUTATOR_CALLHOOK(PlayerDies); + frag_deathtype = deathtype; + if (MUTATOR_CALLHOOK(PlayerDies)) + return; + weapon_action(self.weapon, WR_PLAYERDEATH); 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); - } Portal_ClearAllLater(self); if(clienttype(self) == CLIENTTYPE_REAL)