1
0
mirror of https://github.com/OpenTTD/OpenTTD synced 2026-01-19 02:12:37 +01:00

(svn r13017) [0.6] -Backport from trunk (r12629):

- Fix: Vehicles going twice to a depot when the automatic service interfered with the current order [FS#1985] (r12629)
This commit is contained in:
rubidium
2008-05-08 17:30:02 +00:00
parent ee7bad769f
commit 391127bfaf
7 changed files with 39 additions and 21 deletions

View File

@@ -2634,7 +2634,7 @@ static bool ProcessTrainOrder(Vehicle *v)
case OT_GOTO_DEPOT:
if (!(v->current_order.flags & OFB_PART_OF_ORDERS)) return false;
if ((v->current_order.flags & OFB_SERVICE_IF_NEEDED) &&
!VehicleNeedsService(v)) {
!v->NeedsServicing()) {
UpdateVehicleTimetable(v, true);
v->cur_order_index++;
}
@@ -3527,7 +3527,7 @@ static bool TrainCheckIfLineEnds(Vehicle *v)
TileIndex tile = v->tile + TileOffsByDiagDir(dir);
/* Determine the track status on the next tile */
TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0, ReverseDiagDir(dir)) & _reachable_tracks[dir];
; TrackStatus ts = GetTileTrackStatus(tile, TRANSPORT_RAIL, 0, ReverseDiagDir(dir)) & _reachable_tracks[dir];
TrackdirBits trackdirbits = TrackStatusToTrackdirBits(ts);
TrackdirBits red_signals = TrackStatusToRedSignals(ts);
@@ -3665,7 +3665,7 @@ void Train::Tick()
static void CheckIfTrainNeedsService(Vehicle *v)
{
if (_patches.servint_trains == 0 || !VehicleNeedsService(v)) return;
if (_patches.servint_trains == 0 || !v->NeedsAutomaticServicing()) return;
if (v->IsInDepot()) {
VehicleServiceInDepot(v);
return;