diff --git a/src/openrct2/actions/TrackPlaceAction.cpp b/src/openrct2/actions/TrackPlaceAction.cpp index 870d956930..eebd0f83d3 100644 --- a/src/openrct2/actions/TrackPlaceAction.cpp +++ b/src/openrct2/actions/TrackPlaceAction.cpp @@ -547,9 +547,17 @@ GameActions::Result TrackPlaceAction::Execute() const ride->num_block_brakes++; ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_OPERATING; + // change the current mode to its circuit blocked equivalent RideMode newMode = RideMode::ContinuousCircuitBlockSectioned; - if (ride->type == RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER) - newMode = RideMode::PoweredLaunchBlockSectioned; + if (ride->mode == RideMode::PoweredLaunch) + { + if (ride->GetRideTypeDescriptor().RideModes + & (1ULL << static_cast(RideMode::PoweredLaunchBlockSectioned)) + || gCheatsShowAllOperatingModes) + newMode = RideMode::PoweredLaunchBlockSectioned; + else + newMode = RideMode::PoweredLaunch; + } auto rideSetSetting = RideSetSettingAction(ride->id, RideSetSetting::Mode, static_cast(newMode)); GameActions::ExecuteNested(&rideSetSetting);