From 8324cfc875ce26eb7d8cfed42290bf8e20e7c3fc Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 16 May 2009 20:08:49 +0000 Subject: [PATCH] (svn r16322) -Fix [FS#2873]: trains could get stuck in a depot when they wanted to go to the same depot again. --- src/train_cmd.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp index 05627c0908..4b0a01b9fb 100644 --- a/src/train_cmd.cpp +++ b/src/train_cmd.cpp @@ -2431,6 +2431,15 @@ static bool CheckTrainStayInDepot(Vehicle *v) seg_state = _settings_game.pf.reserve_paths ? SIGSEG_PBS : UpdateSignalsOnSegment(v->tile, INVALID_DIAGDIR, v->owner); } + /* We are leaving a depot, but have to go to the exact same one; re-enter */ + if (v->tile == v->dest_tile) { + /* We need to have a reservation for this to work. */ + if (GetDepotWaypointReservation(v->tile)) return true; + SetDepotWaypointReservation(v->tile, true); + VehicleEnterDepot(v); + return true; + } + /* Only leave when we can reserve a path to our destination. */ if (seg_state == SIGSEG_PBS && !TryPathReserve(v) && v->u.rail.force_proceed == 0) { /* No path and no force proceed. */