}
float Arc_GetHeat_Percent(entity player)
-{
+{
if ( WEP_CVAR(arc, overheat_max) <= 0 || WEP_CVAR(arc, overheat_max) <= 0 )
{
player.arc_overheat = 0;
return 0;
}
-
+
if ( player.arc_beam )
return player.arc_beam.beam_heat/WEP_CVAR(arc, overheat_max);
-
+
if ( player.arc_overheat > time )
{
- return (player.arc_overheat-time) / WEP_CVAR(arc, overheat_max)
+ return (player.arc_overheat-time) / WEP_CVAR(arc, overheat_max)
* player.arc_cooldown;
}
-
+
return 0;
}
void Arc_Player_SetHeat(entity player)
remove(self);
return;
}
-
-
+
+
float burst = 0;
if( self.owner.BUTTON_ATCK2 || self.beam_bursting)
{
{
cooldown_speed = self.beam_heat / WEP_CVAR(arc, beam_refire);
}
-
+
if ( cooldown_speed )
{
self.owner.arc_overheat = time + self.beam_heat / cooldown_speed;
self.owner.arc_cooldown = cooldown_speed;
}
-
+
if ( WEP_CVAR(arc, overheat_max) > 0 && self.beam_heat >= WEP_CVAR(arc, overheat_max) )
{
- pointparticles( particleeffectnum("arc_overheat"),
+ pointparticles( particleeffectnum("arc_overheat"),
self.beam_start, self.beam_wantdir, 1 );
sound(self, CH_WEAPON_A, "weapons/arc_stop.wav", VOL_BASE, ATTN_NORM);
}
}
-
+
if(self == self.owner.arc_beam) { self.owner.arc_beam = world; }
entity oldself = self;
self = self.owner;
remove(self);
return;
}
-
+
// decrease ammo
float coefficient = frametime;
if(!(self.owner.items & IT_UNLIMITED_WEAPON_AMMO))
// note that if we do this, it'll always be corrected to a maximum angle by beam_maxangle handling
- float segments;
+ float segments;
if(self.beam_dir != w_shotdir)
{
// calculate how much we're going to move the end of the beam to the want position
if(WEP_CVAR(arc, beam_degreespersegment))
{
segments = bound(
- 1,
+ 1,
(
min(
angle,
new_beam_type = ARC_BT_HIT;
}
- break;
+ break;
}
else if(trace_fraction != 1)
{
else if ( self.arc_beam && WEP_CVAR(arc, overheat_max) > 0 &&
self.arc_beam.beam_heat > WEP_CVAR(arc, overheat_min) )
{
- if ( random() < (self.arc_beam.beam_heat-WEP_CVAR(arc, overheat_min)) /
+ if ( random() < (self.arc_beam.beam_heat-WEP_CVAR(arc, overheat_min)) /
( WEP_CVAR(arc, overheat_max)-WEP_CVAR(arc, overheat_min) ) )
pointparticles( particleeffectnum("arc_smoke"), smoke_origin, '0 0 0', 1 );
}
-
- if ( self.arc_smoke_sound && ( self.arc_overheat <= time ||
+
+ if ( self.arc_smoke_sound && ( self.arc_overheat <= time ||
!( self.BUTTON_ATCK || self.BUTTON_ATCK2 ) ) || self.switchweapon != WEP_ARC )
{
self.arc_smoke_sound = 0;
if ( self.arc_overheat <= time )
if(self.BUTTON_ATCK || self.BUTTON_ATCK2 || self.arc_beam.beam_bursting )
{
-
+
if(self.arc_BUTTON_ATCK_prev)
{
#if 0
if(weapon_prepareattack(!!self.BUTTON_ATCK2, 0))
{
W_Arc_Beam(!!self.BUTTON_ATCK2);
-
+
if(!self.arc_BUTTON_ATCK_prev)
{
weapon_thinkf(WFRAME_FIRE1, WEP_CVAR(arc, beam_animtime), w_ready);
}
}
}
-
+
return true;
}
-
+
if(self.arc_BUTTON_ATCK_prev != 0)
{
sound(self, CH_WEAPON_A, "weapons/arc_stop.wav", VOL_BASE, ATTN_NORM);
// draw primary beam render
vector top = hitorigin + (thickdir * thickness);
vector bottom = hitorigin - (thickdir * thickness);
-
+
vector last_top = WarpZone_TransformOrigin(WarpZone_trace_transform, Draw_ArcBeam_callback_last_top);
vector last_bottom = WarpZone_TransformOrigin(WarpZone_trace_transform, Draw_ArcBeam_callback_last_bottom);
trailparticles(beam, beam.beam_traileffect, start, hitorigin);
}
- // set up for the next
+ // set up for the next
Draw_ArcBeam_callback_last_thickness = thickness;
Draw_ArcBeam_callback_last_top = WarpZone_UnTransformOrigin(WarpZone_trace_transform, top);
Draw_ArcBeam_callback_last_bottom = WarpZone_UnTransformOrigin(WarpZone_trace_transform, bottom);
// Currently we have to replicate nearly the same method of figuring
// out the shotdir that the server does... Ideally in the future we
// should be able to acquire this from a generalized function built
- // into a weapon system for client code.
+ // into a weapon system for client code.
// find where we are aiming
makevectors(warpzone_save_view_angles);
if(self.beam_degreespersegment)
{
segments = bound(
- 1,
+ 1,
(
min(
angle,
if(self.beam_degreespersegment)
{
segments = bound(
- 1,
+ 1,
(
min(
angle,