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).