- org = normalize(targ.origin);
- SUB_CalcAngleMove(org, TSPEED_TIME, self.ltime - time + self.wait, train_wait);
- self.train_wait_turning = TRUE;
- return;
+ if((self.spawnflags & 1) && targ.curvetarget)
+ cp = find(world, targetname, targ.curvetarget);
+ else
+ cp = world;
+
+ if(cp) // bezier curves movement
+ org = cp.origin - (self.origin + self.mins); // use the origin of the control point of the next path_corner
+ else // linear movement
+ org = targ.origin - (self.origin + self.mins); // use the origin of the next path_corner
+ org_z = -org_z;
+ org = vectoangles(org);
+
+ if(self.wait >= 0) // slow turning
+ {
+ SUB_CalcAngleMove(org, TSPEED_TIME, self.ltime - time + self.wait, train_wait);
+ self.train_wait_turning = TRUE;
+ return;
+ }
+ else // instant turning
+ self.angles = org;