#ifdef REGISTER_WEAPON
-REGISTER_WEAPON(CRYLINK, w_crylink, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "crylink", "crylink", "Crylink");
+REGISTER_WEAPON(CRYLINK, w_crylink, IT_CELLS, 6, WEP_FLAG_NORMAL | WEP_TYPE_SPLASH, BOT_PICKUP_RATING_MID, "crylink", "crylink", _("Crylink"));
#else
#ifdef SVQC
.float gravity;
if(e == world)
error("W_Crylink_CheckLinks: entity is world");
+ if(e.classname != "spike")
+ error("W_Crylink_CheckLinks: entity is not a spike");
p = e;
for(i = 0; i < 1000; ++i)
void W_Crylink_Dequeue_Raw(entity own, entity prev, entity me, entity next)
{
+ W_Crylink_CheckLinks(next);
if(me == own.crylink_lastgroup)
own.crylink_lastgroup = ((me == next) ? world : next);
prev.queuenext = next;
next.queueprev = prev;
+ if(me != next)
+ W_Crylink_CheckLinks(next);
}
void W_Crylink_Dequeue(entity e)
if(e == e.realowner.crylink_lastgroup)
e.realowner.crylink_lastgroup = world;
- RadiusDamage (e, e.realowner, autocvar_g_balance_crylink_primary_damage * a, autocvar_g_balance_crylink_primary_edgedamage * a, autocvar_g_balance_crylink_primary_radius, world, autocvar_g_balance_crylink_primary_force * a, e.projectiledeathtype, other);
+ if(e.projectiledeathtype & HITTYPE_SECONDARY)
+ RadiusDamage (e, e.realowner, autocvar_g_balance_crylink_secondary_damage * a, autocvar_g_balance_crylink_secondary_edgedamage * a, autocvar_g_balance_crylink_secondary_radius, world, autocvar_g_balance_crylink_secondary_force * a, e.projectiledeathtype, other);
+ else
+ RadiusDamage (e, e.realowner, autocvar_g_balance_crylink_primary_damage * a, autocvar_g_balance_crylink_primary_edgedamage * a, autocvar_g_balance_crylink_primary_radius, world, autocvar_g_balance_crylink_primary_force * a, e.projectiledeathtype, other);
if(e.queuenext != e2)
W_Crylink_LinkExplode(e.queuenext, e2);
// p->velocity -> HUEG away from center
}
+ W_Crylink_CheckLinks(e);
+
return targ_origin;
}
}
float a;
- a = 1 - (time - self.fade_time) * self.fade_rate;
+ a = bound(0, 1 - (time - self.fade_time) * self.fade_rate, 1);
finalhit = ((self.cnt <= 0) || (other.takedamage != DAMAGE_NO));
if(finalhit)
counter = counter + 1;
}
self.crylink_lastgroup = proj;
+ W_Crylink_CheckLinks(proj);
}
void W_Crylink_Attack2 (void)
}
else if (req == WR_SUICIDEMESSAGE)
{
- w_deathtypestring = "%s succeeded at self-destructing themself with the Crylink";
+ w_deathtypestring = _("%s succeeded at self-destructing themself with the Crylink");
}
else if (req == WR_KILLMESSAGE)
{
if(w_deathtype & HITTYPE_BOUNCE)
- w_deathtypestring = "%s could not hide from %s's Crylink"; // unchecked: SPLASH (SECONDARY can't be)
+ w_deathtypestring = _("%s could not hide from %s's Crylink"); // unchecked: SPLASH (SECONDARY can't be)
else if(w_deathtype & HITTYPE_SPLASH)
- w_deathtypestring = "%s was too close to %s's Crylink"; // unchecked: SECONDARY
+ w_deathtypestring = _("%s was too close to %s's Crylink"); // unchecked: SECONDARY
else
- w_deathtypestring = "%s took a close look at %s's Crylink"; // unchecked: SECONDARY
+ w_deathtypestring = _("%s took a close look at %s's Crylink"); // unchecked: SECONDARY
}
return TRUE;
}