# HG changeset patch # User rubidium # Date 1218405407 0 # Node ID edc31db66fbbc1eb07ab728d20bf3aaa3e40e9ac # Parent d78e15f4ac71d71c0ce37b2ce892783df5f524b3 (svn r14039) -Fix [FS#2217]: reversing an overlength train at a station would try to find a route out and sometimes reset the unload counter making it wait 2.5 years before departing instead of waiting until the train would actually leave the station (michi_cc) diff -r d78e15f4ac71 -r edc31db66fbb src/train_cmd.cpp --- a/src/train_cmd.cpp Sun Aug 10 19:00:33 2008 +0000 +++ b/src/train_cmd.cpp Sun Aug 10 21:56:47 2008 +0000 @@ -1950,9 +1950,12 @@ !IsPbsSignal(GetSignalType(v->tile, FindFirstTrack(v->u.rail.track)))); if (IsRailwayStationTile(v->tile)) SetRailwayStationPlatformReservation(v->tile, TrackdirToExitdir(GetVehicleTrackdir(v)), true); - if (TryPathReserve(v, true, first_tile_okay)) { + if (TryPathReserve(v, false, first_tile_okay)) { /* Do a look-ahead now in case our current tile was already a safe tile. */ CheckNextTrainTile(v); + } else if (v->current_order.GetType() != OT_LOADING) { + /* Do not wait for a way out when we're still loading */ + MarkTrainAsStuck(v); } } } diff -r d78e15f4ac71 -r edc31db66fbb src/vehicle.cpp --- a/src/vehicle.cpp Sun Aug 10 19:00:33 2008 +0000 +++ b/src/vehicle.cpp Sun Aug 10 21:56:47 2008 +0000 @@ -2345,8 +2345,16 @@ HideFillingPercent(this->fill_percent_te_id); this->fill_percent_te_id = INVALID_TE_ID; - /* Trigger station animation for trains only */ - if (this->type == VEH_TRAIN && IsTileType(this->tile, MP_STATION)) StationAnimationTrigger(st, this->tile, STAT_ANIM_TRAIN_DEPARTS); + if (this->type == VEH_TRAIN) { + /* Trigger station animation (trains only) */ + if (IsTileType(this->tile, MP_STATION)) StationAnimationTrigger(st, this->tile, STAT_ANIM_TRAIN_DEPARTS); + + /* Try to reserve a path when leaving the station as we + * might not be marked as wanting a reservation, e.g. + * when an overlenght train gets turned around in a station. + */ + TryPathReserve(this, true, true); + } }