diff --git a/distribution/changelog.txt b/distribution/changelog.txt index f5620ac4e8..fc7cabde30 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -1,5 +1,6 @@ 0.4.9 (in development) ------------------------------------------------------------------------ +- Fix: [#20907] RCT1/AA scenarios use the 4-across train for the Inverted Roller Coaster. 0.4.8 (2024-02-04) ------------------------------------------------------------------------ diff --git a/src/openrct2/rct1/S4Importer.cpp b/src/openrct2/rct1/S4Importer.cpp index 43b18981bb..52aaa31838 100644 --- a/src/openrct2/rct1/S4Importer.cpp +++ b/src/openrct2/rct1/S4Importer.cpp @@ -606,7 +606,7 @@ namespace RCT1 if (_rideTypeToRideEntryMap[EnumValue(rideType)] == OBJECT_ENTRY_INDEX_NULL) { - auto entryName = RCT1::GetRideTypeObject(rideType); + auto entryName = RCT1::GetRideTypeObject(rideType, _gameVersion == FILE_VERSION_RCT1_LL); if (!entryName.empty()) { auto entryIndex = _rideEntries.GetOrAddEntry(entryName); diff --git a/src/openrct2/rct1/T4Importer.cpp b/src/openrct2/rct1/T4Importer.cpp index 89eaff9dbc..54447374c7 100644 --- a/src/openrct2/rct1/T4Importer.cpp +++ b/src/openrct2/rct1/T4Importer.cpp @@ -136,11 +136,10 @@ namespace RCT1 td->ride_mode = RideMode::PoweredLaunch; } - // Convert RCT1 vehicle type to RCT2 vehicle type. Initialise with a string consisting of 8 spaces. std::string_view vehicleObject; if (td4Base.Type == RideType::HedgeMaze) { - vehicleObject = RCT1::GetRideTypeObject(td4Base.Type); + vehicleObject = RCT1::GetRideTypeObject(td4Base.Type, false); } else { diff --git a/src/openrct2/rct1/Tables.cpp b/src/openrct2/rct1/Tables.cpp index 94fe3d2b58..f1907300b1 100644 --- a/src/openrct2/rct1/Tables.cpp +++ b/src/openrct2/rct1/Tables.cpp @@ -696,8 +696,12 @@ namespace RCT1 return map[vehicleSubEntry]; } - std::string_view GetRideTypeObject(RideType rideType) + std::string_view GetRideTypeObject(RideType rideType, bool isLL) { + if (rideType == RideType::InvertedRollerCoaster && !isLL) { + return "rct1.ride.inverted_trains"; + } + static constexpr const char * map[] = { "rct1.ride.wooden_rc_trains", // RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER diff --git a/src/openrct2/rct1/Tables.h b/src/openrct2/rct1/Tables.h index d8291093f4..bf9a62ff8d 100644 --- a/src/openrct2/rct1/Tables.h +++ b/src/openrct2/rct1/Tables.h @@ -34,7 +34,7 @@ namespace RCT1 uint8_t NormalisePathAddition(uint8_t pathAdditionType); uint8_t GetVehicleSubEntryIndex(uint8_t rct1VehicleType, uint8_t vehicleSubEntry); - std::string_view GetRideTypeObject(RideType rideType); + std::string_view GetRideTypeObject(RideType rideType, bool isLL); std::string_view GetVehicleObject(uint8_t vehicleType); std::string_view GetSmallSceneryObject(uint8_t smallSceneryType); std::string_view GetLargeSceneryObject(uint8_t largeSceneryType);