{
if(vlen(trace_endpos - fireBallisticBullet_trace_callback_ent.origin) > 16)
zcurveparticles_from_tracetoss(fireBallisticBullet_trace_callback_eff, fireBallisticBullet_trace_callback_ent.origin, trace_endpos, fireBallisticBullet_trace_callback_ent.velocity);
+ WarpZone_trace_forent = world;
+ self.owner = world;
}
void fireBallisticBullet(vector start, vector dir, float spread, float pSpeed, float lifetime, float damage, float headshotbonus, float force, float dtype, float tracereffects, float gravityfactor, float bulletconstant)
if(lag)
FOR_EACH_PLAYER(pl)
- antilag_takeback(pl, time - lag);
+ if(pl != self)
+ antilag_takeback(pl, time - lag);
oldself = self;
self = proj;
trace_fraction = 0;
fireBallisticBullet_trace_callback_ent = self;
fireBallisticBullet_trace_callback_eff = eff;
- // FIXME can we somehow do this with just ONE trace?
- WarpZone_TraceToss(self, self.owner);
- if(self.owner && WarpZone_trace_firstzone)
- {
- self.owner = world;
- self.velocity = v0;
- self.gravity = g0;
- continue;
- }
WarpZone_TraceToss_ThroughZone(self, self.owner, world, fireBallisticBullet_trace_callback);
self.velocity = v0;
self.gravity = g0;
if(lag)
FOR_EACH_PLAYER(pl)
- antilag_restore(pl);
+ if(pl != self)
+ antilag_restore(pl);
remove(proj);