Merge branch 'improved_breakdowns' into improved_breakdowns-sx

This commit is contained in:
Jonathan G Rennison 2016-01-08 18:26:52 +00:00
commit 417f51db8a

View File

@ -1352,14 +1352,16 @@ bool Vehicle::HandleBreakdown()
} }
/* Max Speed reduction*/ /* Max Speed reduction*/
if (_settings_game.vehicle.improved_breakdowns) { if (_settings_game.vehicle.improved_breakdowns) {
const Engine *e = Engine::Get(this->engine_type);
const RailVehicleInfo *rvi = &e->u.rail;
if (!HasBit(Train::From(this)->flags,VRF_NEED_REPAIR)) { if (!HasBit(Train::From(this)->flags,VRF_NEED_REPAIR)) {
const Engine *e = Engine::Get(this->engine_type); if (rvi->max_speed > this->vcache.cached_max_speed) {
const RailVehicleInfo *rvi = &e->u.rail;
if (rvi->max_speed > this->vcache.cached_max_speed)
this->vcache.cached_max_speed = rvi->max_speed; this->vcache.cached_max_speed = rvi->max_speed;
}
} }
this->vcache.cached_max_speed = min(this->vcache.cached_max_speed - uint16 target_max_speed = min(this->vcache.cached_max_speed -
(this->vcache.cached_max_speed >> 1) / Train::From(this->First())->tcache.cached_num_engines + 1, this->vcache.cached_max_speed); (this->vcache.cached_max_speed >> 1) / Train::From(this->First())->tcache.cached_num_engines + 1, this->vcache.cached_max_speed);
this->vcache.cached_max_speed = max(target_max_speed, min<uint16>(rvi->max_speed / 4, 28));
SetBit(Train::From(this)->flags, VRF_NEED_REPAIR); SetBit(Train::From(this)->flags, VRF_NEED_REPAIR);
Train::From(this->First())->ConsistChanged(CCF_TRACK); Train::From(this->First())->ConsistChanged(CCF_TRACK);
} }