(svn r20034) -Fix [FS#3896] (r14869): road vehicles could get crashed twice in a tick

In RoadVehicleController at tick N a road vehicle gets a j of slightly less 
than adv_speed. In tick N+1 RoadVehCheckTrainCrash is called, then the road
vehicle gets a j of slightly more than adv_speed. This causes a second call
of RoadVehCheckTrainCrash. If in tick N the road vehicle moved onto a level
crossing and a (maglev) entered that tile at the same tick, in tick N+1 the
road vehicle would be crashed twice.
This commit is contained in:
rubidium 2010-06-29 20:48:34 +00:00
parent 0d0ed91ac2
commit 1fcfac6d69

View File

@ -1569,13 +1569,13 @@ static bool RoadVehController(RoadVehicle *v)
v->current_order_time++; v->current_order_time++;
if (v->reverse_ctr != 0) v->reverse_ctr--; if (v->reverse_ctr != 0) v->reverse_ctr--;
RoadVehCheckTrainCrash(v);
/* handle crashed */ /* handle crashed */
if (v->vehstatus & VS_CRASHED) { if (v->vehstatus & VS_CRASHED) {
return RoadVehIsCrashed(v); return RoadVehIsCrashed(v);
} }
RoadVehCheckTrainCrash(v);
/* road vehicle has broken down? */ /* road vehicle has broken down? */
if (v->breakdown_ctr != 0) { if (v->breakdown_ctr != 0) {
if (v->breakdown_ctr <= 2) { if (v->breakdown_ctr <= 2) {