diff --git a/misc.c b/misc.c index f317def5ed..ba472e1e9b 100644 --- a/misc.c +++ b/misc.c @@ -772,6 +772,11 @@ static const SaveLoadGlobVarList _date_desc[] = { {&_station_tick_ctr, SLE_UINT16, 0, 255}, {&_random_seeds[0][0], SLE_UINT32, 0, 255}, {&_random_seeds[0][1], SLE_UINT32, 0, 255}, + /* XXX: We save only a portion of the _cur_town_ctr, this should be + * fixed in the next revision bump. It does not hurt so much since + * it just gives a small single-time penalty to the towns with higher + * IDs at the load time. _cur_town_ctr is zeroed in InitializeTowns() + * so the higher octets do not interfere at this time. */ {&_cur_town_ctr, SLE_UINT8, 0, 255}, {&_cur_player_tick_index, SLE_FILE_U8 | SLE_VAR_UINT, 0, 255}, {&_next_competitor_start, SLE_FILE_U16 | SLE_VAR_UINT, 0, 255}, diff --git a/town_cmd.c b/town_cmd.c index 7846d3fc09..7180113966 100644 --- a/town_cmd.c +++ b/town_cmd.c @@ -442,7 +442,7 @@ void OnTick_Town(void) for (counter += GetTownPoolSize(); counter >= TOWN_GROWTH_FREQUENCY; counter -= TOWN_GROWTH_FREQUENCY) { - int i = _cur_town_ctr; + uint32 i = _cur_town_ctr; Town *t; if (++_cur_town_ctr >= GetTownPoolSize()) diff --git a/variables.h b/variables.h index 575f7920ea..68fc02c19c 100644 --- a/variables.h +++ b/variables.h @@ -84,7 +84,7 @@ VARDEF uint32 _random_seeds[2][2]; VARDEF uint32 _player_seeds[MAX_PLAYERS][2]; // Iterator through all towns in OnTick_Town -VARDEF byte _cur_town_ctr; +VARDEF uint32 _cur_town_ctr; VARDEF uint _cur_player_tick_index; VARDEF uint _next_competitor_start;