setthink(missile, adaptor_think2use_hittype_splash);
missile.nextthink = time + WEP_CVAR(arc, bolt_lifetime);
PROJECTILE_MAKETRIGGER(missile);
+ missile.clipgroup = CLIPGROUP_UNHITTABLEPROJ;
missile.projectiledeathtype = thiswep.m_id | HITTYPE_SECONDARY;
missile.weaponentity_fld = weaponentity;
setorigin(missile, w_shotorg);
- setsize(missile, '0 0 0', '0 0 0');
+ setsize(missile, UNHITTABLEPROJ_MINS, UNHITTABLEPROJ_MAXS);
set_movetype(missile, MOVETYPE_BOUNCEMISSILE);
W_SetupProjVelocity_PRE(missile, arc, bolt_);
cooldown_speed = this.beam_heat / WEP_CVAR(arc, beam_refire);
}
+ bool overheat = (WEP_CVAR(arc, overheat_max) > 0 && this.beam_heat >= WEP_CVAR(arc, overheat_max));
+ if (overheat)
+ {
+ Send_Effect(EFFECT_ARC_OVERHEAT, this.beam_start, this.beam_wantdir, 1);
+ sound(this, CH_WEAPON_A, SND_ARC_STOP, VOL_BASE, ATTN_NORM);
+ }
+
if ( cooldown_speed )
{
- if ( WEP_CVAR(arc, cooldown_release) || (WEP_CVAR(arc, overheat_max) > 0 && this.beam_heat >= WEP_CVAR(arc, overheat_max)) )
+ if (WEP_CVAR(arc, cooldown_release) || overheat)
own.arc_overheat = time + this.beam_heat / cooldown_speed;
own.arc_cooldown = cooldown_speed;
}
- if ( WEP_CVAR(arc, overheat_max) > 0 && this.beam_heat >= WEP_CVAR(arc, overheat_max) )
- {
- Send_Effect(EFFECT_ARC_OVERHEAT, this.beam_start, this.beam_wantdir, 1);
- sound(this, CH_WEAPON_A, SND_ARC_STOP, VOL_BASE, ATTN_NORM);
- }
}
if(this == own.(weaponentity).arc_beam) { own.(weaponentity).arc_beam = NULL; }
WEP_CVAR(arc, beam_botaimspeed),
0,
WEP_CVAR(arc, beam_botaimlifetime),
- false
+ false, true
);
}
else
1000000,
0,
0.001,
- false
+ false, true
);
}
}
}
#endif
}
+METHOD(Arc, wr_suicidemessage, Notification(entity thiswep))
+{
+ if(w_deathtype & HITTYPE_SECONDARY)
+ return WEAPON_ARC_SUICIDE_BOLT;
+ else
+ return WEAPON_THINKING_WITH_PORTALS;
+}
METHOD(Arc, wr_init, void(entity thiswep))
{
if(!arc_shotorigin[0])
{
if(w_deathtype & HITTYPE_SECONDARY)
{
- vector org2;
- org2 = w_org + w_backoff * 6;
+ vector org2 = w_org + w_backoff * 2;
pointparticles(EFFECT_ELECTRO_IMPACT, org2, w_backoff * 1000, 1);
if(!w_issilent) { sound(actor, CH_SHOTS, SND_ELECTRO_IMPACT, VOL_BASE, ATTN_NORM); }
}