Hendricks266, on 07 October 2011 - 03:54 PM, said:
This code in actors.c seems to be what spawns LASERLINE:
x = A_CheckHitSprite(i,&m);
actor[i].lastvx = x;
s->ang = l;
k = 0;
// if(lTripBombControl & TRIPBOMB_TRIPWIRE)
if (actor[i].t_data[6] != 1)
{
// we're on a trip wire
while (x > 0)
{
j = A_Spawn(i,LASERLINE);
setsprite(j,(vec3_t *)&sprite[j]);
sprite[j].hitag = s->hitag;
actor[j].t_data[1] = sprite[j].z;
s->x += sintable[(T6+512)&2047]>>4;
s->y += sintable[(T6)&2047]>>4;
if (x < 1024)
{
sprite[j].xrepeat = x>>5;
break;
}
x -= 1024;
}
}
Apparently it spawns one LASERLINE for every 1024 units of x. So x is being set to the wrong value before the spawning loop, which means there might be a problem in A_CheckHitSprite(). What's interesting is that there is no check for nullspace or anything else once it gets down into the spawning loop (although there might be some checks built into the A_Spawn function).