#else
#ifdef SVQC
.float gravity;
-.float crylink_release;
+.float crylink_waitrelease;
.entity crylink_lastgroup;
.entity queuenext;
float a;
a = bound(0, 1 - (time - e.fade_time) * e.fade_rate, 1);
+ if(e == e.realowner.crylink_lastgroup)
+ e.realowner.crylink_lastgroup = world;
+
RadiusDamage (e, e.realowner, cvar("g_balance_crylink_primary_damage") * a, cvar("g_balance_crylink_primary_edgedamage") * a, cvar("g_balance_crylink_primary_radius"), world, cvar("g_balance_crylink_primary_force") * a, e.projectiledeathtype, other);
if(e.queuenext != e2)
W_Crylink_LinkExplode(e.queuenext, e2);
+
remove (e);
}
for(p = e; (p = p.queuenext) != e; )
avg_dist += pow(vlen(e.origin - avg_origin), 2);
avg_dist *= (1.0 / n);
+ avg_dist = sqrt(avg_dist);
w_crylink_linkjoin_time = 0;
if(avg_dist == 0)
else if (req == WR_THINK)
{
if (self.BUTTON_ATCK)
- if (weapon_prepareattack(0, cvar("g_balance_crylink_primary_refire")))
{
- W_Crylink_Attack();
- weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_crylink_primary_animtime"), w_ready);
+ if (!self.crylink_waitrelease)
+ if (weapon_prepareattack(0, cvar("g_balance_crylink_primary_refire")))
+ {
+ W_Crylink_Attack();
+ weapon_thinkf(WFRAME_FIRE1, cvar("g_balance_crylink_primary_animtime"), w_ready);
+ if(cvar("g_balance_crylink_primary_joinspeed") != 0)
+ self.crylink_waitrelease = 1;
+ }
}
- if (self.BUTTON_ATCK2 && cvar("g_balance_crylink_secondary"))
- if (weapon_prepareattack(1, cvar("g_balance_crylink_secondary_refire")))
+ else if(self.BUTTON_ATCK2 && cvar("g_balance_crylink_secondary"))
+ {
+ if (!self.crylink_waitrelease)
+ if (weapon_prepareattack(1, cvar("g_balance_crylink_secondary_refire")))
+ {
+ W_Crylink_Attack2();
+ weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_crylink_secondary_animtime"), w_ready);
+ if(cvar("g_balance_crylink_secondary_joinspeed") != 0)
+ self.crylink_waitrelease = 2;
+ }
+ }
+ else
{
- W_Crylink_Attack2();
- weapon_thinkf(WFRAME_FIRE2, cvar("g_balance_crylink_secondary_animtime"), w_ready);
+ if (self.crylink_waitrelease)
+ {
+ // fired and released now!
+ if(self.crylink_lastgroup)
+ {
+ if(self.crylink_waitrelease == 1)
+ {
+ W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_primary_joinspeed"));
+ }
+ else
+ {
+ W_Crylink_LinkJoin(self.crylink_lastgroup, cvar("g_balance_crylink_secondary_joinspeed"));
+ }
+ }
+ }
+ self.crylink_waitrelease = 0;
}
}
else if (req == WR_PRECACHE)