diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index 1a879803eb..651de21db0 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -1261,7 +1261,8 @@ static rating_tuple ride_ratings_get_turns_ratings(Ride* ride) intensity += var_112_rating.intensity; nausea += var_112_rating.nausea; - rating_tuple inversions_rating = get_inversions_ratings(ride->inversions); + auto inversions = (ride->type == RIDE_TYPE_MINI_GOLF) ? ride->holes : ride->inversions; + rating_tuple inversions_rating = get_inversions_ratings(inversions); excitement += inversions_rating.excitement; intensity += inversions_rating.intensity; nausea += inversions_rating.nausea; diff --git a/src/openrct2/ride/Track.h b/src/openrct2/ride/Track.h index 52bdc49be0..1ecbaabc4e 100644 --- a/src/openrct2/ride/Track.h +++ b/src/openrct2/ride/Track.h @@ -197,6 +197,7 @@ enum TRACK_ELEM_FLAG_DOWN = (1 << 5), TRACK_ELEM_FLAG_UP = (1 << 6), TRACK_ELEM_FLAG_NORMAL_TO_INVERSION = (1 << 7), + TRACK_ELEM_FLAG_IS_GOLF_HOLE = (1 << 7), TRACK_ELEM_FLAG_STARTS_AT_HALF_HEIGHT = (1 << 8), TRACK_ELEM_FLAG_ONLY_ABOVE_GROUND = (1 << 9), TRACK_ELEM_FLAG_IS_STEEP_UP = (1 << 10), // Used to allow steep backwards lifts on roller coasters that do not allow steep diff --git a/src/openrct2/ride/TrackData.cpp b/src/openrct2/ride/TrackData.cpp index 35b16613d3..4e30f7de72 100644 --- a/src/openrct2/ride/TrackData.cpp +++ b/src/openrct2/ride/TrackData.cpp @@ -32250,11 +32250,11 @@ const uint16_t TrackFlags[] = { /* TRACK_ELEM_HEARTLINE_TRANSFER_DOWN */ 0, /* TRACK_ELEM_LEFT_HEARTLINE_ROLL */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TRACK_ELEM_RIGHT_HEARTLINE_ROLL */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, - /* TRACK_ELEM_MINI_GOLF_HOLE_A */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TRACK_ELEM_MINI_GOLF_HOLE_B */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TRACK_ELEM_MINI_GOLF_HOLE_C */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TRACK_ELEM_MINI_GOLF_HOLE_D */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, - /* TRACK_ELEM_MINI_GOLF_HOLE_E */ TRACK_ELEM_FLAG_NORMAL_TO_INVERSION, + /* TRACK_ELEM_MINI_GOLF_HOLE_A */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TRACK_ELEM_MINI_GOLF_HOLE_B */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TRACK_ELEM_MINI_GOLF_HOLE_C */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TRACK_ELEM_MINI_GOLF_HOLE_D */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, + /* TRACK_ELEM_MINI_GOLF_HOLE_E */ TRACK_ELEM_FLAG_IS_GOLF_HOLE, /* TRACK_ELEM_MULTIDIM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TRACK_ELEM_90_DEG_TO_INVERTED_FLAT_QUARTER_LOOP_UP */ TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_NORMAL_TO_INVERSION | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, /* TRACK_ELEM_INVERTED_FLAT_TO_90_DEG_QUARTER_LOOP_DOWN */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_INVERSION_TO_NORMAL, diff --git a/src/openrct2/ride/Vehicle.cpp b/src/openrct2/ride/Vehicle.cpp index be2c18c701..a93136acda 100644 --- a/src/openrct2/ride/Vehicle.cpp +++ b/src/openrct2/ride/Vehicle.cpp @@ -1781,13 +1781,21 @@ static void vehicle_update_measurements(rct_vehicle* vehicle) ride->start_drop_height = vehicle->z / 8; } - if (track_flags & TRACK_ELEM_FLAG_NORMAL_TO_INVERSION) + if (ride->type == RIDE_TYPE_MINI_GOLF) { - uint8_t inversions = ride->inversions; - if (inversions != 255) - inversions++; - - ride->inversions = inversions; + if (track_flags & TRACK_ELEM_FLAG_IS_GOLF_HOLE) + { + if (ride->holes < 255) + ride->holes++; + } + } + else + { + if (track_flags & TRACK_ELEM_FLAG_NORMAL_TO_INVERSION) + { + if (ride->inversions < 255) + ride->inversions++; + } } if (track_flags & TRACK_ELEM_FLAG_HELIX)