Fix improved breakdowns aircraft speed-reductions.

Breakdown speed was wrong and possibly 0 for planes with
GRF-defined speed limits.
This commit is contained in:
Jonathan G Rennison
2016-06-05 22:28:17 +01:00
parent 7caebc2a77
commit 60d5bbc0e7

View File

@@ -1205,8 +1205,8 @@ void DetermineBreakdownType(Vehicle *v, uint32 r) {
if (rand <= breakdown_type_chance[BREAKDOWN_AIRCRAFT_SPEED]) {
v->breakdown_type = BREAKDOWN_AIRCRAFT_SPEED;
/* all speed values here are 1/8th of the real max speed in km/h */
byte max_speed = min(AircraftVehInfo( v->engine_type )->max_speed >> 3, 255);
byte min_speed = min(15 + (max_speed >> 2), AircraftVehInfo(v->engine_type)->max_speed >> 4);
byte max_speed = max(1, min(v->vcache.cached_max_speed >> 3, 255));
byte min_speed = max(1, min(15 + (max_speed >> 2), v->vcache.cached_max_speed >> 4));
v->breakdown_severity = min_speed + (((v->reliability + GB(r, 16, 16)) * (max_speed - min_speed)) >> 17);
} else if (rand <= breakdown_type_chance[BREAKDOWN_AIRCRAFT_DEPOT]) {
v->breakdown_type = BREAKDOWN_AIRCRAFT_DEPOT;