}\r
\r
.float grabber_length;\r
+.float grabber_sendbeam;\r
\r
void RemoveGrabber(entity pl)\r
{\r
if(other.classname == "player")\r
sound (self, CHAN_PROJECTILE, "weapons/grabber_impact_player.wav", VOL_BASE, ATTN_NORM);\r
else\r
+ {\r
sound (self, CHAN_PROJECTILE, "weapons/grabber_impact_world.wav", VOL_BASE, ATTN_NORM);\r
+ if(trace_dphitq3surfaceflags & Q3SURFACEFLAG_METALSTEPS)\r
+ pointparticles(particleeffectnum("ground_metal"), trace_endpos, '0 0 0', 1);\r
+ else\r
+ pointparticles(particleeffectnum("ground_dirt"), trace_endpos, '0 0 0', 1);\r
+ }\r
\r
self.state = 1;\r
self.think = GrabberThink;\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
// UGLY WORKAROUND: play this on CHAN_WEAPON2 so it can't cut off fire sounds\r
sound (self, CHAN_WEAPON2, "weapons/grabber_fire.wav", VOL_BASE, ATTN_NORM);\r
org = self.origin + self.view_ofs + v_forward * grabber_shotorigin_x + v_right * grabber_shotorigin_y + v_up * grabber_shotorigin_z;\r
- pointparticles(particleeffectnum("grapple_muzzleflash"), org, '0 0 0', 1);\r
+ pointparticles(particleeffectnum("grabber_muzzleflash"), org, '0 0 0', 1);\r
\r
missile = WarpZone_RefSys_SpawnSameRefSys(self);\r
missile.owner = self;\r