diff --git a/src/engine.cpp b/src/engine.cpp index d59e2fb6f7..f0839aea7c 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -635,7 +635,10 @@ void StartupOneEngine(Engine *e, Date aging_date) } } -/** Start/initialise all our engines. */ +/** + * Start/initialise all our engines. Must be called whenever there are changes + * to the NewGRF config. + */ void StartupEngines() { Engine *e; diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp index 52f5e7bb5a..af6028d1c2 100644 --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -2648,6 +2648,11 @@ bool AfterLoadGame() } } + /* When any NewGRF has been changed the availability of some vehicles might + * have been changed too. e->company_avail must be set to 0 in that case + * which is done by StartupEngines(). */ + if (gcf_res != GLC_ALL_GOOD) StartupEngines(); + /* Road stops is 'only' updating some caches */ AfterLoadRoadStops(); AfterLoadLabelMaps();