]> de.git.xonotic.org Git - voretournament/voretournament.git/blobdiff - data/qcsrc/server/g_grabber.qc
Grabber: Don't behave differently while the player is crouching. Fixes a bug
[voretournament/voretournament.git] / data / qcsrc / server / g_grabber.qc
index 1c3361e1f929e5403ed5a8d88dac9d333a7dc526..a92cedab7cb2ef880bf6aa24655f81d45c8bfe0f 100644 (file)
@@ -85,7 +85,6 @@ float LostMovetypeFollow(entity ent)
 }\r
 \r
 .float grabber_length;\r
-.float grabber_switchweapon;\r
 \r
 void RemoveGrabber(entity pl)\r
 {\r
@@ -103,10 +102,13 @@ void GrabberThink();
 void Grabber_Stop()\r
 {\r
        pointparticles(particleeffectnum("grabber_impact"), self.origin, '0 0 0', 1);\r
-       sound (self, CHAN_PROJECTILE, "weapons/grabber_impact.wav", VOL_BASE, ATTN_NORM);\r
+       if(other.classname == "player")\r
+               sound (self, CHAN_PROJECTILE, "weapons/grabber_impact_player.wav", VOL_BASE, ATTN_NORM);\r
+       else\r
+               sound (self, CHAN_PROJECTILE, "weapons/grabber_impact_world.wav", VOL_BASE, ATTN_NORM);\r
 \r
        self.state = 1;\r
-       self.think =GrabberThink;\r
+       self.think = GrabberThink;\r
        self.nextthink = time;\r
        self.touch = SUB_Null;\r
        self.velocity = '0 0 0';\r
@@ -132,7 +134,7 @@ void GrabberThink()
                WarpZone_RefSys_AddIncrementally(self, self.aiment);\r
 \r
        // prevent the grabber from sticking to a player that has been swallowed\r
-       if(self.aiment.predator.classname == "player")\r
+       if(self.aiment.stat_eaten)\r
        {\r
                // if the grabber is linked to a player that we swallowed, disconnect it (or the grabber will stick to us / the player inside us)\r
                // otherwise, link the grabber to the player who ate our linked player\r
@@ -265,8 +267,16 @@ void GrabberTouch (void)
        if(other)\r
                if(other.movetype != MOVETYPE_NONE)\r
                {\r
+                       if(other.classname == "player")\r
+                       {\r
+                               if(other.BUTTON_CHAT)\r
+                                       self.owner.typehitsound += 1;\r
+                               else\r
+                                       self.owner.hitsound += 1; // play this for team mates too, as we could be grabbing them to heal them\r
+                               W_Grabber_UpdateStats(self.owner, FALSE, TRUE); // count this as a hit\r
+                       }\r
+\r
                        SetMovetypeFollow(self, other);\r
-                       W_Grabber_UpdateStats(self.owner, FALSE, TRUE); // count this as a hit\r
                        WarpZone_RefSys_BeginAddingIncrementally(self, self.aiment);\r
                }\r
 \r
@@ -338,62 +348,16 @@ void FireGrabber (void)
        missile.damageforcescale = 0;\r
 }\r
 \r
-//  voidGrabberFrame()\r
-//  {\r
-//         // this function has been modified for Voretournament\r
-// -       if (self.BUTTON_JETPACK && g_grabber)\r
-//         {\r
-// -               if (!self.grabber && self.grabber_time <= time && !self.button6_pressed_before)\r
-// -                       if (timeoutStatus != 2) //only allow the player to fire the grabber if the game is not paused (timeout)\r
-// -                               FireGrabber();\r
-//         }\r
-// -       else\r
-//         {\r
-//                 if (self.grabber)\r
-//                         RemoveGrabber(self);\r
-//         }\r
-// -       self.button6_pressed_before = self.BUTTON_JETPACK;\r
-//         /*\r
-//         // if I have no grabber or it's not pulling yet, make sure I'm not flying!\r
-//         if((self.grabber == world || !self.grabber.state) && self.movetype == MOVETYPE_FLY)\r
-\r
 void GrabberFrame()\r
 {\r
        if(timeoutStatus != 2 && self.weapon != WEP_GRABBER)\r
        {\r
-               // offhand grabber controls\r
-               if(self.BUTTON_JETPACK)\r
-               {\r
-                       if not(self.grabber || (self.grabber_state & GRABBER_WAITING_FOR_RELEASE))\r
-                       {\r
-                               self.grabber_state |= GRABBER_FIRING;\r
-                               self.grabber_state |= GRABBER_WAITING_FOR_RELEASE;\r
-                       }\r
-               }\r
-               else\r
-               {\r
-                       self.grabber_state |= GRABBER_REMOVING;\r
-                       self.grabber_state &~= GRABBER_WAITING_FOR_RELEASE;\r
-               }\r
+               self.grabber_state |= GRABBER_REMOVING;\r
+               self.grabber_state &~= GRABBER_WAITING_FOR_RELEASE;\r
 \r
                self.grabber_state &~= GRABBER_RELEASING;\r
-               if(self.BUTTON_CROUCH)\r
-               {\r
-                       self.grabber_state &~= GRABBER_PULLING;\r
-                       //self.grabber_state |= GRABBER_RELEASING;\r
-               }\r
-               else\r
-               {\r
-                       self.grabber_state |= GRABBER_PULLING;\r
-                       //self.grabber_state &~= GRABBER_RELEASING;\r
-               }\r
-       }\r
-       else if(!(self.items & IT_JETPACK) && self.switchweapon != WEP_GRABBER)\r
-       {\r
-               if(self.BUTTON_JETPACK && !self.grabber_switchweapon)\r
-                       W_SwitchWeapon(WEP_GRABBER);\r
+               self.grabber_state |= GRABBER_PULLING;\r
        }\r
-       self.grabber_switchweapon = self.BUTTON_JETPACK;\r
 \r
        if(self.weapon != WEP_GRABBER)\r
        {\r