Index: src/station_cmd.cpp =================================================================== --- src/station_cmd.cpp (revision 10048) +++ src/station_cmd.cpp (working copy) @@ -1886,8 +1886,12 @@ if (st == CHECK_STATIONS_ERR) return CMD_ERROR; } + bool reusing_deleted_station = false; /* Find a station close to us */ - if (st == NULL) st = GetClosestStationFromTile(tile); + if (st == NULL) { + st = GetClosestStationFromTile(tile); + reusing_deleted_station = true; + } /* In case of new station if DC_EXEC is NOT set we still need to create the station * to test if everything is OK. In this case we need to delete it before return. */ @@ -1930,6 +1934,17 @@ UpdateStationVirtCoordDirty(st); UpdateStationAcceptance(st, false); RebuildStationLists(); + /* If station is reused and a ship is heading for it, make it go to the stations new tile FS# */ + if (reusing_deleted_station) { + Vehicle *v; + FOR_ALL_VEHICLES(v) { + if (v->type == VEH_SHIP) { + if (v->current_order.dest == st->index) { + v->dest_tile = TILE_ADD(st->dock_tile, ToTileIndexDiff(GetDockOffset(st->dock_tile))); + } + } + } + } InvalidateWindow(WC_STATION_LIST, st->owner); /* success, so don't delete the new station */ st_auto_delete.Release();