+ makevectors(self.owner.v_angle);
+ vector angle;
+ angle = v_forward;
+ // get effect origin
+ vector vecs, org;
+ if(self.owner.weaponentity.movedir_x > 0)
+ vecs = self.owner.weaponentity.movedir;
+ else
+ vecs = '0 0 0';
+ if(debug_shotorg != '0 0 0')
+ vecs = debug_shotorg;
+ org = self.owner.origin + self.owner.view_ofs + v_forward * vecs_x + v_right * -vecs_y + v_up * vecs_z;
+
+ WarpZone_traceline_antilag(self.owner, self.owner.origin + self.owner.view_ofs, self.owner.origin + self.owner.view_ofs + angle * myradius, FALSE, self.owner, ANTILAG_LATENCY(self.owner));
+ endpos = WarpZone_UnTransformOrigin(WarpZone_trace_transform, trace_endpos);
+ WarpZone_traceline_antilag(self.owner, org, endpos, FALSE, self.owner, ANTILAG_LATENCY(self.owner));
+
+ // apply the damage
+ if(trace_fraction < 1)
+ {
+ vector force;
+ force = angle * myforce;
+ Damage (trace_ent, self.owner, self.owner, damage * frametime, WEP_ELECTRO, trace_endpos, force * frametime);
+ }
+
+ // draw effect
+ if(org != self.hook_start)
+ {
+ self.SendFlags |= 2;
+ self.hook_start = org;
+ }
+ if(endpos != self.hook_end)
+ {
+ self.SendFlags |= 4;
+ self.hook_end = endpos;
+ }
+}
+
+// experimental gauntlet
+void W_Laser_Attack2 (float issecondary)
+{
+ // only play fire sound if 0.5 sec has passed since player let go the fire button
+ if(time - self.prevgauntletfire > 0.5)
+ {
+ sound (self, CHAN_WEAPON, "weapons/gauntlet_fire.wav", VOL_BASE, ATTN_NORM);
+ }