diff --git a/src/saveload/afterload.cpp b/src/saveload/afterload.cpp --- a/src/saveload/afterload.cpp +++ b/src/saveload/afterload.cpp @@ -58,6 +58,8 @@ #include "../disaster_vehicle.h" #include "../ship.h" #include "../water.h" +#include "../timer/timer.h" +#include "../timer/timer_game_tick.h" #include "saveload_internal.h" @@ -3259,6 +3261,16 @@ bool AfterLoadGame() for (Station *st : Station::Iterate()) UpdateStationAcceptance(st, false); } + if (IsSavegameVersionBefore(SLV_AI_START_DATE)) { + /* For older savegames, we don't now the actual interval; so set it to the newgame value. */ + _settings_game.difficulty.competitors_interval = _settings_newgame.difficulty.competitors_interval; + + /* We did load the "period" of the timer, but not the fired/elapsed. We can deduce that here. */ + extern TimeoutTimer _new_competitor_timeout; + _new_competitor_timeout.storage.elapsed = 0; + _new_competitor_timeout.fired = _new_competitor_timeout.period == 0; + } + AfterLoadLabelMaps(); AfterLoadCompanyStats(); AfterLoadStoryBook();