mirror of
https://github.com/JGRennison/OpenTTD-patches.git
synced 2024-11-11 13:10:45 +00:00
(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:
parent
0d0ed91ac2
commit
1fcfac6d69
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user