up = v_up;
shots = WEP_CVAR_PRI(crylink, shots);
- Send_Effect(EFFECT_CRYLINK_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, shots);
+ W_MuzzleFlash(thiswep, actor, weaponentity, w_shotorg, w_shotdir);
proj = prevproj = firstproj = NULL;
for(counter = 0; counter < shots; ++counter)
{
set_movetype(proj, MOVETYPE_BOUNCEMISSILE);
PROJECTILE_MAKETRIGGER(proj);
+ proj.clipgroup = CLIPGROUP_UNHITTABLEPROJ;
proj.projectiledeathtype = thiswep.m_id;
//proj.gravity = 0.001;
setorigin(proj, w_shotorg);
- setsize(proj, '0 0 0', '0 0 0');
+ setsize(proj, UNHITTABLEPROJ_MINS, UNHITTABLEPROJ_MAXS);
s = '0 0 0';
s.y = v_forward.x;
s.z = v_forward.y;
}
- s = s * WEP_CVAR_PRI(crylink, spread) * g_weaponspreadfactor;
+ s = s * WEP_CVAR_PRI(crylink, spread) * autocvar_g_weaponspreadfactor;
W_SetupProjVelocity_Explicit(proj, w_shotdir + right * s.y + up * s.z, v_up, WEP_CVAR_PRI(crylink, speed), 0, 0, 0, false);
settouch(proj, W_Crylink_Touch);
up = v_up;
shots = WEP_CVAR_SEC(crylink, shots);
- Send_Effect(EFFECT_CRYLINK_MUZZLEFLASH, w_shotorg, w_shotdir * 1000, shots);
+ W_MuzzleFlash(thiswep, actor, weaponentity, w_shotorg, w_shotdir);
proj = prevproj = firstproj = NULL;
for(counter = 0; counter < shots; ++counter)
{
set_movetype(proj, MOVETYPE_BOUNCEMISSILE);
PROJECTILE_MAKETRIGGER(proj);
+ proj.clipgroup = CLIPGROUP_UNHITTABLEPROJ;
proj.projectiledeathtype = thiswep.m_id | HITTYPE_SECONDARY;
//proj.gravity = 0.001;
setorigin(proj, w_shotorg);
- setsize(proj, '0 0 0', '0 0 0');
+ setsize(proj, UNHITTABLEPROJ_MINS, UNHITTABLEPROJ_MAXS);
if(WEP_CVAR_SEC(crylink, spreadtype) == 1)
{
s.y = v_forward.x;
s.z = v_forward.y;
}
- s = s * WEP_CVAR_SEC(crylink, spread) * g_weaponspreadfactor;
+ s = s * WEP_CVAR_SEC(crylink, spread) * autocvar_g_weaponspreadfactor;
s = w_shotdir + right * s.y + up * s.z;
}
else
{
- s = (w_shotdir + (((counter + 0.5) / shots) * 2 - 1) * v_right * WEP_CVAR_SEC(crylink, spread) * g_weaponspreadfactor);
+ s = (w_shotdir + (((counter + 0.5) / shots) * 2 - 1) * v_right * WEP_CVAR_SEC(crylink, spread) * autocvar_g_weaponspreadfactor);
}
W_SetupProjVelocity_Explicit(proj, s, v_up, WEP_CVAR_SEC(crylink, speed), 0, 0, 0, false);
proj.flags = FL_PROJECTILE;
IL_PUSH(g_projectiles, proj);
IL_PUSH(g_bot_dodge, proj);
- proj.missile_flags = MIF_SPLASH;
+ proj.missile_flags = MIF_SPLASH;
CSQCProjectile(proj, true, (proj.cnt ? PROJECTILE_CRYLINK_BOUNCING : PROJECTILE_CRYLINK), true);
METHOD(Crylink, wr_aim, void(entity thiswep, entity actor, .entity weaponentity))
{
if(random() < 0.10)
- PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, WEP_CVAR_PRI(crylink, speed), 0, WEP_CVAR_PRI(crylink, middle_lifetime), false);
+ PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, WEP_CVAR_PRI(crylink, speed), 0, WEP_CVAR_PRI(crylink, middle_lifetime), false, true);
else
- PHYS_INPUT_BUTTON_ATCK2(actor) = bot_aim(actor, weaponentity, WEP_CVAR_SEC(crylink, speed), 0, WEP_CVAR_SEC(crylink, middle_lifetime), false);
+ PHYS_INPUT_BUTTON_ATCK2(actor) = bot_aim(actor, weaponentity, WEP_CVAR_SEC(crylink, speed), 0, WEP_CVAR_SEC(crylink, middle_lifetime), false, true);
}
METHOD(Crylink, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
{
}
actor.(weaponentity).crylink_waitrelease = 0;
if(!thiswep.wr_checkammo1(thiswep, actor, weaponentity) && !thiswep.wr_checkammo2(thiswep, actor, weaponentity))
- if(!(actor.items & IT_UNLIMITED_WEAPON_AMMO))
+ if(!(actor.items & IT_UNLIMITED_AMMO))
{
// ran out of ammo!
actor.cnt = thiswep.m_id;
#ifdef CSQC
METHOD(Crylink, wr_impacteffect, void(entity thiswep, entity actor))
{
- vector org2;
- org2 = w_org + w_backoff * 2;
+ vector org2 = w_org + w_backoff * 2;
if(w_deathtype & HITTYPE_SECONDARY)
{
pointparticles(EFFECT_CRYLINK_IMPACT2, org2, '0 0 0', 1);