From 1fcfac6d69ab2a411563c6a011e35b6f8cf78c93 Mon Sep 17 00:00:00 2001 From: rubidium Date: Tue, 29 Jun 2010 20:48:34 +0000 Subject: [PATCH] (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. --- src/roadveh_cmd.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp index 4c783519ae..f0ce5d808d 100644 --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -1569,13 +1569,13 @@ static bool RoadVehController(RoadVehicle *v) v->current_order_time++; if (v->reverse_ctr != 0) v->reverse_ctr--; + RoadVehCheckTrainCrash(v); + /* handle crashed */ if (v->vehstatus & VS_CRASHED) { return RoadVehIsCrashed(v); } - RoadVehCheckTrainCrash(v); - /* road vehicle has broken down? */ if (v->breakdown_ctr != 0) { if (v->breakdown_ctr <= 2) {