diff --git a/src/disaster_vehicle.cpp b/src/disaster_vehicle.cpp index eea873ffca..69ce0319e4 100644 --- a/src/disaster_vehicle.cpp +++ b/src/disaster_vehicle.cpp @@ -925,16 +925,17 @@ static const Disaster _disasters[] = { static void DoDisaster() { - uint8_t buf[lengthof(_disasters)]; + std::vector available_disasters; - uint8_t j = 0; - for (size_t i = 0; i != lengthof(_disasters); i++) { - if (TimerGameCalendar::year >= _disasters[i].min_year && TimerGameCalendar::year < _disasters[i].max_year) buf[j++] = (uint8_t)i; + for (auto &disaster : _disasters) { + if (TimerGameCalendar::year >= disaster.min_year && TimerGameCalendar::year < disaster.max_year) { + available_disasters.push_back(disaster.init_proc); + } } - if (j == 0) return; + if (available_disasters.empty()) return; - _disasters[buf[RandomRange(j)]].init_proc(); + available_disasters[RandomRange(static_cast(available_disasters.size()))](); }