diff --git a/src/openrct2/management/Research.cpp b/src/openrct2/management/Research.cpp index d041ec72da..f17a5877b8 100644 --- a/src/openrct2/management/Research.cpp +++ b/src/openrct2/management/Research.cpp @@ -200,11 +200,14 @@ void research_finish_item(ResearchItem* researchItem) if (rideEntry != nullptr && base_ride_type != RIDE_TYPE_NULL) { + if (!RideTypeIsValid(base_ride_type)) + { + log_warning("Invalid ride type: %d", base_ride_type); + base_ride_type = ride_entry_get_first_non_null_ride_type(rideEntry); + } + rct_string_id availabilityString; - ride_type_set_invented(base_ride_type); - openrct2_assert(base_ride_type < RIDE_TYPE_COUNT, "Invalid base_ride_type = %d", base_ride_type); - ride_entry_set_invented(rideEntryIndex); bool seenRideEntry[MAX_RIDE_OBJECTS]{}; @@ -528,8 +531,7 @@ bool research_insert_scenery_group_entry(ObjectEntryIndex entryIndex, bool resea bool ride_type_is_invented(uint32_t rideType) { - Guard::Assert(rideType < std::size(_researchedRideTypes), GUARD_LINE); - return _researchedRideTypes[rideType]; + return RideTypeIsValid(rideType) ? _researchedRideTypes[rideType] : false; } bool ride_entry_is_invented(int32_t rideEntryIndex) @@ -539,8 +541,10 @@ bool ride_entry_is_invented(int32_t rideEntryIndex) void ride_type_set_invented(uint32_t rideType) { - Guard::Assert(rideType < std::size(_researchedRideTypes), GUARD_LINE); - _researchedRideTypes[rideType] = true; + if (RideTypeIsValid(rideType)) + { + _researchedRideTypes[rideType] = true; + } } void ride_entry_set_invented(int32_t rideEntryIndex)