summaryrefslogtreecommitdiff
path: root/src/train_cmd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/train_cmd.cpp')
-rw-r--r--src/train_cmd.cpp17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp
index 484d0c5c1..87d716627 100644
--- a/src/train_cmd.cpp
+++ b/src/train_cmd.cpp
@@ -474,15 +474,18 @@ static int GetTrainAcceleration(Vehicle *v, bool mode)
/* The distance to go is whatever is still ahead of the train minus the
* distance from the train's stop location to the end of the platform */
int distance_to_go = station_ahead / TILE_SIZE - (station_length - stop_at) / TILE_SIZE;
- int st_max_speed = 120;
- int delta_v = v->cur_speed / (distance_to_go + 1);
- if (v->max_speed > (v->cur_speed - delta_v)) {
- st_max_speed = v->cur_speed - (delta_v / 10);
- }
+ if (distance_to_go > 0) {
+ int st_max_speed = 120;
+
+ int delta_v = v->cur_speed / (distance_to_go + 1);
+ if (v->max_speed > (v->cur_speed - delta_v)) {
+ st_max_speed = v->cur_speed - (delta_v / 10);
+ }
- st_max_speed = max(st_max_speed, 25 * distance_to_go);
- max_speed = min(max_speed, st_max_speed);
+ st_max_speed = max(st_max_speed, 25 * distance_to_go);
+ max_speed = min(max_speed, st_max_speed);
+ }
}
}