]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
BlaXpirits patch for http://dev.xonotic.org/issues/1255
authorJakob MG <jakob_mg@hotmail.com>
Tue, 31 Jul 2012 23:00:12 +0000 (01:00 +0200)
committerJakob MG <jakob_mg@hotmail.com>
Tue, 31 Jul 2012 23:00:12 +0000 (01:00 +0200)
qcsrc/server/cl_client.qc
qcsrc/server/cl_player.qc
qcsrc/server/g_damage.qc
qcsrc/server/g_hook.qc
qcsrc/server/t_jumppads.qc
qcsrc/server/t_teleporters.qc

index 715bdab450cac3e329f8aaf6a98189f2704e97ce..5972c06f5bade95ae7988143e2b43c2d3292d3b7 100644 (file)
@@ -472,6 +472,7 @@ void PutObserverInServer (void)
        self.invincible_finished = 0;
        self.superweapons_finished = 0;
        self.pushltime = 0;
+       self.istypefrag = 0;
        self.think = SUB_Null;
        self.nextthink = 0;
        self.hook_time = 0;
index fd14d42b8d9aa4718450f3a68591d0a4a04bfc0c..b57c18a17872ccb4552e73398b03b1c00b2aadc1 100644 (file)
@@ -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;
@@ -580,11 +581,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)
        {
@@ -592,7 +595,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);
index ac7c3cd2a7ceb637b4a69d5f2529a110a454a456..741dc6b757fcf9a62621fcd3b814146544535938 100644 (file)
@@ -55,6 +55,7 @@ float damage_headshotbonus; // bonus multiplier for head shots, set to 0 after u
 .float teamkill_soundtime;
 .entity teamkill_soundsource;
 .entity pusher;
+.float istypefrag;
 .float taunt_soundtime;
 
 
@@ -420,7 +421,7 @@ void Obituary (entity attacker, entity inflictor, entity targ, float deathtype)
                                        PlayerStats_Event(targ, PLAYERSTATS_ACHIEVEMENT_FIRSTVICTIM, 1);
                                }
 
-                               if(targ.BUTTON_CHAT) {
+                               if(targ.istypefrag) {
                                        Send_CSQC_KillCenterprint(attacker, s, Obituary_ExtraFragInfo(targ), KILL_TYPEFRAG, MSG_KILL);
                                        Send_CSQC_KillCenterprint(targ, a, Obituary_ExtraFragInfo(attacker), KILL_TYPEFRAGGED, MSG_KILL);
                                } else {
index 370f2fb9878041cea1bac0cd540d82d2c450a231..8867d0725b0f7c3a6cea40d022c5e133a01291dc 100644 (file)
@@ -213,6 +213,7 @@ void GrapplingHookThink()
                                                self.aiment.flags &~= FL_ONGROUND;
                                                self.aiment.pusher = self.realowner;
                                                self.aiment.pushltime = time + autocvar_g_maxpushtime;
+                                               self.aiment.istypefrag = self.aiment.BUTTON_CHAT;
                                        }
                                }
 
@@ -285,6 +286,7 @@ void GrapplingHook_Damage (entity inflictor, entity attacker, float damage, floa
                {
                        self.realowner.pusher = attacker;
                        self.realowner.pushltime = time + autocvar_g_maxpushtime;
+                       self.realowner.istypefrag = self.realowner.BUTTON_CHAT;
                }
                RemoveGrapplingHook(self.realowner);
        }
index eef4d28b8c67d644b9e3fc51b5efda64dda6febe..8923c19f18300e1f742acd0586e61539744c3c15 100644 (file)
@@ -2,6 +2,7 @@ float PUSH_ONCE                 = 1;
 float PUSH_SILENT              = 2;
 
 .float pushltime;
+.float istypefrag;
 .float height;
 
 void() SUB_UseTargets;
@@ -213,6 +214,7 @@ void trigger_push_touch()
 
                // reset tracking of who pushed you into a hazard (for kill credit)
                other.pushltime = 0;
+               other.istypefrag = 0;
        }
 
        if(self.enemy.target)
index 1705d8f8ea705edc6f71d4c5490bb32cd5d40c76..25dc837f953a514ce0ad9918b02d6d0bec92adc2 100644 (file)
@@ -131,10 +131,12 @@ void TeleportPlayer(entity teleporter, entity player, vector to, vector to_angle
                {
                        player.pusher = teleporter.owner;
                        player.pushltime = time + autocvar_g_maxpushtime;
+                       player.istypefrag = player.BUTTON_CHAT;
                }
                else
                {
                        player.pushltime = 0;
+                       player.istypefrag = 0;
                }
 
                player.lastteleporttime = time;