diff --git a/src/roadveh_cmd.cpp b/src/roadveh_cmd.cpp --- a/src/roadveh_cmd.cpp +++ b/src/roadveh_cmd.cpp @@ -1416,6 +1416,18 @@ again: if (new_dir != old_dir) { v->direction = new_dir; if (_settings_game.vehicle.roadveh_acceleration_model == AM_ORIGINAL) v->cur_speed -= v->cur_speed >> 2; + + /* Delay the vehicle in curves by making it require one or two additional frames per curve. + * A vehicle has to spend at least 9 frames on a tile, so the following articulated part can follow. + * (The following part may only be one tile behind, and the front part is moved before the following ones.) + * The short (inner) curve has 8 frames, this elongates it to 9 or 10. + * + * The difference between 9 and 10 is arbitrary, and completely bollocks (i.e. a bug). + * Unifying this requires a complicated savegame conversion. */ + if (old_dir != v->state) { + v->UpdateInclination(false, true); + return true; + } } /* If the vehicle is in a normal road stop and the frame equals the stop frame OR