@@ -3116,13 +3116,11 @@ bool AfterLoadGame()
if (IsDock(t) || IsOilRig(t)) Station::GetByTile(t)->ship_station.Add(t);
}
/* Scan for docking tiles */
for (Station *st : Station::Iterate()) {
if (st->ship_station.tile != INVALID_TILE) UpdateStationDockingTiles(st);
/* Update station docking tiles. */
AfterLoadScanDockingTiles();
/* Compute station catchment areas. This is needed here in case UpdateStationAcceptance is called below. */
Station::RecomputeCatchmentForAll();
@@ -29,6 +29,7 @@ void AfterLoadVehicles(bool part_of_load
void FixupTrainLengths();
void AfterLoadStations();
void AfterLoadRoadStops();
void AfterLoadScanDockingTiles();
void ResetLabelMaps();
void AfterLoadLabelMaps();
void AfterLoadStoryBook();
@@ -141,6 +141,17 @@ void AfterLoadRoadStops()
/**
* (Re)scan for station docking tiles after loading a savegame.
*/
void AfterLoadScanDockingTiles()
{
static const SaveLoad _roadstop_desc[] = {
SLE_VAR(RoadStop, xy, SLE_UINT32),
SLE_CONDNULL(1, SL_MIN_VERSION, SLV_45),
@@ -613,6 +613,7 @@ bool IsShipDestinationTile(TileIndex til
const Industry *i = Industry::GetByTile(t);
if (i->neutral_station != nullptr && i->neutral_station->index == station) return true;
if (IsTileType(t, MP_STATION) && IsOilRig(t) && GetStationIndex(t) == station) return true;
return false;
@@ -196,6 +196,10 @@ void CheckForDockingTile(TileIndex t)
SetDockingTile(t, true);
if (IsTileType(tile, MP_STATION) && IsOilRig(tile)) {
Station::GetByTile(tile)->docking_station.Add(t);
Status change: