diff --git a/src/date.cpp b/src/date.cpp index eb5d2ba327..6e60b8feb7 100644 --- a/src/date.cpp +++ b/src/date.cpp @@ -31,7 +31,7 @@ Date _date; ///< Current date in days (day counter) DateFract _date_fract; ///< Fractional part of the day. uint64 _tick_counter; ///< Ever incrementing tick counter for setting off various events uint8 _tick_skip_counter; ///< Counter for ticks, when only vehicles are moving and nothing else happens -uint32 _scaled_tick_counter; ///< Tick counter in daylength-scaled ticks +uint64 _scaled_tick_counter; ///< Tick counter in daylength-scaled ticks DateTicksScaled _scaled_date_ticks; ///< Date as ticks in daylength-scaled ticks uint32 _quit_after_days; ///< Quit after this many days of run time @@ -63,7 +63,7 @@ void SetDate(Date date, DateFract fract) void SetScaledTickVariables() { _scaled_date_ticks = ((((DateTicksScaled)_date * DAY_TICKS) + _date_fract) * _settings_game.economy.day_length_factor) + _tick_skip_counter; - _scaled_tick_counter = (uint32)((_tick_counter * _settings_game.economy.day_length_factor) + _tick_skip_counter); + _scaled_tick_counter = (uint64)((_tick_counter * _settings_game.economy.day_length_factor) + _tick_skip_counter); } #define M(a, b) ((a << 5) | b) diff --git a/src/date_func.h b/src/date_func.h index 3d03ac0e74..e0e765c71e 100644 --- a/src/date_func.h +++ b/src/date_func.h @@ -17,7 +17,7 @@ extern Date _date; extern DateFract _date_fract; extern uint64 _tick_counter; extern uint8 _tick_skip_counter; -extern uint32 _scaled_tick_counter; +extern uint64 _scaled_tick_counter; extern DateTicksScaled _scaled_date_ticks; extern uint32 _quit_after_days; diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 8c09c1f154..932fec7d55 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -1474,7 +1474,7 @@ void CallVehicleTicks() Vehicle *v = nullptr; SCOPE_INFO_FMT([&v], "CallVehicleTicks -> OnPeriodic: %s", scope_dumper().VehicleInfo(v)); - for (size_t i = _scaled_tick_counter & 0x1FF; i < Vehicle::GetPoolSize(); i += 0x200) { + for (size_t i = (size_t)(_scaled_tick_counter & 0x1FF); i < Vehicle::GetPoolSize(); i += 0x200) { v = Vehicle::Get(i); if (v == nullptr) continue;