}\r
\r
.float grabber_length;\r
+.float grabber_sendbeam;\r
\r
void RemoveGrabber(entity pl)\r
{\r
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
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
}\r
}\r
\r
- makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0');\r
- te_beam(self.owner, WarpZone_RefSys_TransformOrigin(self, self.owner, self.origin) + v_forward * (-9), org);\r
+ if(self.grabber_sendbeam < time) // don't kill the bandwidth by sending this each frame\r
+ {\r
+ makevectors(self.angles_x * '-1 0 0' + self.angles_y * '0 1 0');\r
+ te_beam(self.owner, WarpZone_RefSys_TransformOrigin(self, self.owner, self.origin) + v_forward * (-9), org);\r
+ self.grabber_sendbeam = time + cvar("sys_ticrate");\r
+ }\r
}\r
\r
void GrabberTouch (void)\r
if(other.BUTTON_CHAT)\r
self.owner.typehitsound += 1;\r
else\r
- self.owner.hitsound += 1;\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
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
+ self.grabber_state |= GRABBER_PULLING;\r
}\r
\r
if(self.weapon != WEP_GRABBER)\r