diff --git a/src/openrct2/ride/RideData.h b/src/openrct2/ride/RideData.h index b2552afa86..4ca72029e0 100644 --- a/src/openrct2/ride/RideData.h +++ b/src/openrct2/ride/RideData.h @@ -17,6 +17,7 @@ #include "Track.h" #include "TrackPaint.h" +using ride_ratings_calculation = void (*)(Ride* ride); struct RideComponentName { rct_string_id singular; @@ -123,6 +124,8 @@ struct RideTypeDescriptor uint8_t MaxMass; /** rct2: 0x0097D7C8, 0x0097D7C9, 0x0097D7CA */ rct_ride_lift_data LiftData; + // rct2: 0x0097E050 + ride_ratings_calculation RatingsCalculationFunction; // rct2: 0x0097CD1E RatingTuple RatingsMultipliers; UpkeepCostsDescriptor UpkeepCosts; @@ -295,6 +298,7 @@ constexpr const RideTypeDescriptor DummyRTD = SET_FIELD(Heights, { 12, 64, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, nullptr), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 0, 0, 1 }), diff --git a/src/openrct2/ride/RideRatings.cpp b/src/openrct2/ride/RideRatings.cpp index d6cca144e3..9546c5d838 100644 --- a/src/openrct2/ride/RideRatings.cpp +++ b/src/openrct2/ride/RideRatings.cpp @@ -76,12 +76,8 @@ struct ShelteredEights uint8_t TotalShelteredEighths; }; -using ride_ratings_calculation = void (*)(Ride* ride); - RideRatingCalculationData gRideRatingsCalcData; -static ride_ratings_calculation ride_ratings_get_calculate_func(uint8_t rideType); - static void ride_ratings_update_state(); static void ride_ratings_update_state_0(); static void ride_ratings_update_state_1(); @@ -1746,7 +1742,7 @@ static void ride_ratings_apply_first_length_penalty( #pragma region Ride rating calculation functions -static void ride_ratings_calculate_spiral_roller_coaster(Ride* ride) +void ride_ratings_calculate_spiral_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -1792,7 +1788,7 @@ static void ride_ratings_calculate_spiral_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_stand_up_roller_coaster(Ride* ride) +void ride_ratings_calculate_stand_up_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -1830,7 +1826,7 @@ static void ride_ratings_calculate_stand_up_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_suspended_swinging_coaster(Ride* ride) +void ride_ratings_calculate_suspended_swinging_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -1870,7 +1866,7 @@ static void ride_ratings_calculate_suspended_swinging_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_inverted_roller_coaster(Ride* ride) +void ride_ratings_calculate_inverted_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -1913,7 +1909,7 @@ static void ride_ratings_calculate_inverted_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_junior_roller_coaster(Ride* ride) +void ride_ratings_calculate_junior_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -1951,7 +1947,7 @@ static void ride_ratings_calculate_junior_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_miniature_railway(Ride* ride) +void ride_ratings_calculate_miniature_railway(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -1986,7 +1982,7 @@ static void ride_ratings_calculate_miniature_railway(Ride* ride) ride->sheltered_eighths = shelteredEighths.TotalShelteredEighths; } -static void ride_ratings_calculate_monorail(Ride* ride) +void ride_ratings_calculate_monorail(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2021,7 +2017,7 @@ static void ride_ratings_calculate_monorail(Ride* ride) ride->sheltered_eighths = shelteredEighths.TotalShelteredEighths; } -static void ride_ratings_calculate_mini_suspended_coaster(Ride* ride) +void ride_ratings_calculate_mini_suspended_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2060,7 +2056,7 @@ static void ride_ratings_calculate_mini_suspended_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_boat_hire(Ride* ride) +void ride_ratings_calculate_boat_hire(Ride* ride) { ride->unreliability_factor = 7; set_unreliability_factor(ride); @@ -2092,7 +2088,7 @@ static void ride_ratings_calculate_boat_hire(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_wooden_wild_mouse(Ride* ride) +void ride_ratings_calculate_wooden_wild_mouse(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2133,7 +2129,7 @@ static void ride_ratings_calculate_wooden_wild_mouse(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_steeplechase(Ride* ride) +void ride_ratings_calculate_steeplechase(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2173,7 +2169,7 @@ static void ride_ratings_calculate_steeplechase(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_car_ride(Ride* ride) +void ride_ratings_calculate_car_ride(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2207,7 +2203,7 @@ static void ride_ratings_calculate_car_ride(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_launched_freefall(Ride* ride) +void ride_ratings_calculate_launched_freefall(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2258,7 +2254,7 @@ static void ride_ratings_calculate_launched_freefall(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_bobsleigh_coaster(Ride* ride) +void ride_ratings_calculate_bobsleigh_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2296,7 +2292,7 @@ static void ride_ratings_calculate_bobsleigh_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_observation_tower(Ride* ride) +void ride_ratings_calculate_observation_tower(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2326,7 +2322,7 @@ static void ride_ratings_calculate_observation_tower(Ride* ride) ride->excitement /= 4; } -static void ride_ratings_calculate_looping_roller_coaster(Ride* ride) +void ride_ratings_calculate_looping_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2372,7 +2368,7 @@ static void ride_ratings_calculate_looping_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_dinghy_slide(Ride* ride) +void ride_ratings_calculate_dinghy_slide(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2410,7 +2406,7 @@ static void ride_ratings_calculate_dinghy_slide(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_mine_train_coaster(Ride* ride) +void ride_ratings_calculate_mine_train_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2450,7 +2446,7 @@ static void ride_ratings_calculate_mine_train_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_chairlift(Ride* ride) +void ride_ratings_calculate_chairlift(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2492,7 +2488,7 @@ static void ride_ratings_calculate_chairlift(Ride* ride) ride->sheltered_eighths = shelteredEighths.TotalShelteredEighths; } -static void ride_ratings_calculate_corkscrew_roller_coaster(Ride* ride) +void ride_ratings_calculate_corkscrew_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2538,7 +2534,7 @@ static void ride_ratings_calculate_corkscrew_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_maze(Ride* ride) +void ride_ratings_calculate_maze(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2564,7 +2560,7 @@ static void ride_ratings_calculate_maze(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_spiral_slide(Ride* ride) +void ride_ratings_calculate_spiral_slide(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2593,7 +2589,7 @@ static void ride_ratings_calculate_spiral_slide(Ride* ride) ride->sheltered_eighths = 2; } -static void ride_ratings_calculate_go_karts(Ride* ride) +void ride_ratings_calculate_go_karts(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2634,7 +2630,7 @@ static void ride_ratings_calculate_go_karts(Ride* ride) ride->excitement /= 2; } -static void ride_ratings_calculate_log_flume(Ride* ride) +void ride_ratings_calculate_log_flume(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2666,7 +2662,7 @@ static void ride_ratings_calculate_log_flume(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_river_rapids(Ride* ride) +void ride_ratings_calculate_river_rapids(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -2699,7 +2695,7 @@ static void ride_ratings_calculate_river_rapids(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_dodgems(Ride* ride) +void ride_ratings_calculate_dodgems(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2734,7 +2730,7 @@ static void ride_ratings_calculate_dodgems(Ride* ride) ride->sheltered_eighths = 7; } -static void ride_ratings_calculate_pirate_ship(Ride* ride) +void ride_ratings_calculate_pirate_ship(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2759,7 +2755,7 @@ static void ride_ratings_calculate_pirate_ship(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_inverter_ship(Ride* ride) +void ride_ratings_calculate_inverter_ship(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2784,25 +2780,25 @@ static void ride_ratings_calculate_inverter_ship(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_food_stall(Ride* ride) +void ride_ratings_calculate_food_stall(Ride* ride) { ride->upkeep_cost = ride_compute_upkeep(ride); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; } -static void ride_ratings_calculate_drink_stall(Ride* ride) +void ride_ratings_calculate_drink_stall(Ride* ride) { ride->upkeep_cost = ride_compute_upkeep(ride); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; } -static void ride_ratings_calculate_shop(Ride* ride) +void ride_ratings_calculate_shop(Ride* ride) { ride->upkeep_cost = ride_compute_upkeep(ride); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; } -static void ride_ratings_calculate_merry_go_round(Ride* ride) +void ride_ratings_calculate_merry_go_round(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2824,19 +2820,19 @@ static void ride_ratings_calculate_merry_go_round(Ride* ride) ride->sheltered_eighths = 7; } -static void ride_ratings_calculate_information_kiosk(Ride* ride) +void ride_ratings_calculate_information_kiosk(Ride* ride) { ride->upkeep_cost = ride_compute_upkeep(ride); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; } -static void ride_ratings_calculate_toilets(Ride* ride) +void ride_ratings_calculate_toilets(Ride* ride) { ride->upkeep_cost = ride_compute_upkeep(ride); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; } -static void ride_ratings_calculate_ferris_wheel(Ride* ride) +void ride_ratings_calculate_ferris_wheel(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2858,7 +2854,7 @@ static void ride_ratings_calculate_ferris_wheel(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_motion_simulator(Ride* ride) +void ride_ratings_calculate_motion_simulator(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2891,7 +2887,7 @@ static void ride_ratings_calculate_motion_simulator(Ride* ride) ride->sheltered_eighths = 7; } -static void ride_ratings_calculate_3d_cinema(Ride* ride) +void ride_ratings_calculate_3d_cinema(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2931,7 +2927,7 @@ static void ride_ratings_calculate_3d_cinema(Ride* ride) ride->sheltered_eighths |= 7; } -static void ride_ratings_calculate_top_spin(Ride* ride) +void ride_ratings_calculate_top_spin(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2973,7 +2969,7 @@ static void ride_ratings_calculate_top_spin(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_space_rings(Ride* ride) +void ride_ratings_calculate_space_rings(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -2995,7 +2991,7 @@ static void ride_ratings_calculate_space_rings(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_reverse_freefall_coaster(Ride* ride) +void ride_ratings_calculate_reverse_freefall_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3025,7 +3021,7 @@ static void ride_ratings_calculate_reverse_freefall_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_lift(Ride* ride) +void ride_ratings_calculate_lift(Ride* ride) { int32_t totalLength; @@ -3058,7 +3054,7 @@ static void ride_ratings_calculate_lift(Ride* ride) ride->excitement /= 4; } -static void ride_ratings_calculate_vertical_drop_roller_coaster(Ride* ride) +void ride_ratings_calculate_vertical_drop_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3096,13 +3092,13 @@ static void ride_ratings_calculate_vertical_drop_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_cash_machine(Ride* ride) +void ride_ratings_calculate_cash_machine(Ride* ride) { ride->upkeep_cost = ride_compute_upkeep(ride); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; } -static void ride_ratings_calculate_twist(Ride* ride) +void ride_ratings_calculate_twist(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -3124,7 +3120,7 @@ static void ride_ratings_calculate_twist(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_haunted_house(Ride* ride) +void ride_ratings_calculate_haunted_house(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -3148,7 +3144,7 @@ static void ride_ratings_calculate_haunted_house(Ride* ride) ride->sheltered_eighths = 7; } -static void ride_ratings_calculate_flying_roller_coaster(Ride* ride) +void ride_ratings_calculate_flying_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3193,7 +3189,7 @@ static void ride_ratings_calculate_flying_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_virginia_reel(Ride* ride) +void ride_ratings_calculate_virginia_reel(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3230,7 +3226,7 @@ static void ride_ratings_calculate_virginia_reel(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_splash_boats(Ride* ride) +void ride_ratings_calculate_splash_boats(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3262,7 +3258,7 @@ static void ride_ratings_calculate_splash_boats(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_mini_helicopters(Ride* ride) +void ride_ratings_calculate_mini_helicopters(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3296,7 +3292,7 @@ static void ride_ratings_calculate_mini_helicopters(Ride* ride) ride->sheltered_eighths = 6; } -static void ride_ratings_calculate_lay_down_roller_coaster(Ride* ride) +void ride_ratings_calculate_lay_down_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3346,7 +3342,7 @@ static void ride_ratings_calculate_lay_down_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_suspended_monorail(Ride* ride) +void ride_ratings_calculate_suspended_monorail(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3381,7 +3377,7 @@ static void ride_ratings_calculate_suspended_monorail(Ride* ride) ride->sheltered_eighths = shelteredEighths.TotalShelteredEighths; } -static void ride_ratings_calculate_reverser_roller_coaster(Ride* ride) +void ride_ratings_calculate_reverser_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3429,7 +3425,7 @@ static void ride_ratings_calculate_reverser_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_heartline_twister_coaster(Ride* ride) +void ride_ratings_calculate_heartline_twister_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3469,7 +3465,7 @@ static void ride_ratings_calculate_heartline_twister_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_mini_golf(Ride* ride) +void ride_ratings_calculate_mini_golf(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3507,13 +3503,13 @@ static void ride_ratings_calculate_mini_golf(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_first_aid(Ride* ride) +void ride_ratings_calculate_first_aid(Ride* ride) { ride->upkeep_cost = ride_compute_upkeep(ride); ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_INCOME; } -static void ride_ratings_calculate_circus_show(Ride* ride) +void ride_ratings_calculate_circus_show(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -3537,7 +3533,7 @@ static void ride_ratings_calculate_circus_show(Ride* ride) ride->sheltered_eighths = 7; } -static void ride_ratings_calculate_ghost_train(Ride* ride) +void ride_ratings_calculate_ghost_train(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3570,7 +3566,7 @@ static void ride_ratings_calculate_ghost_train(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_twister_roller_coaster(Ride* ride) +void ride_ratings_calculate_twister_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3616,7 +3612,7 @@ static void ride_ratings_calculate_twister_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_wooden_roller_coaster(Ride* ride) +void ride_ratings_calculate_wooden_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3656,7 +3652,7 @@ static void ride_ratings_calculate_wooden_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_side_friction_roller_coaster(Ride* ride) +void ride_ratings_calculate_side_friction_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3695,7 +3691,7 @@ static void ride_ratings_calculate_side_friction_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_wild_mouse(Ride* ride) +void ride_ratings_calculate_wild_mouse(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3735,7 +3731,7 @@ static void ride_ratings_calculate_wild_mouse(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_multi_dimension_roller_coaster(Ride* ride) +void ride_ratings_calculate_multi_dimension_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3780,7 +3776,7 @@ static void ride_ratings_calculate_multi_dimension_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_giga_coaster(Ride* ride) +void ride_ratings_calculate_giga_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3826,7 +3822,7 @@ static void ride_ratings_calculate_giga_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_roto_drop(Ride* ride) +void ride_ratings_calculate_roto_drop(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3854,7 +3850,7 @@ static void ride_ratings_calculate_roto_drop(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_flying_saucers(Ride* ride) +void ride_ratings_calculate_flying_saucers(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -3892,7 +3888,7 @@ static void ride_ratings_calculate_flying_saucers(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_crooked_house(Ride* ride) +void ride_ratings_calculate_crooked_house(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -3916,7 +3912,7 @@ static void ride_ratings_calculate_crooked_house(Ride* ride) ride->sheltered_eighths = 7; } -static void ride_ratings_calculate_monorail_cycles(Ride* ride) +void ride_ratings_calculate_monorail_cycles(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3950,7 +3946,7 @@ static void ride_ratings_calculate_monorail_cycles(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_compact_inverted_coaster(Ride* ride) +void ride_ratings_calculate_compact_inverted_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -3993,7 +3989,7 @@ static void ride_ratings_calculate_compact_inverted_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_water_coaster(Ride* ride) +void ride_ratings_calculate_water_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4034,7 +4030,7 @@ static void ride_ratings_calculate_water_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_air_powered_vertical_coaster(Ride* ride) +void ride_ratings_calculate_air_powered_vertical_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4065,7 +4061,7 @@ static void ride_ratings_calculate_air_powered_vertical_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_inverted_hairpin_coaster(Ride* ride) +void ride_ratings_calculate_inverted_hairpin_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4106,7 +4102,7 @@ static void ride_ratings_calculate_inverted_hairpin_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_magic_carpet(Ride* ride) +void ride_ratings_calculate_magic_carpet(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -4131,7 +4127,7 @@ static void ride_ratings_calculate_magic_carpet(Ride* ride) ride->sheltered_eighths = 0; } -static void ride_ratings_calculate_submarine_ride(Ride* ride) +void ride_ratings_calculate_submarine_ride(Ride* ride) { ride->unreliability_factor = 7; set_unreliability_factor(ride); @@ -4156,7 +4152,7 @@ static void ride_ratings_calculate_submarine_ride(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_river_rafts(Ride* ride) +void ride_ratings_calculate_river_rafts(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4186,7 +4182,7 @@ static void ride_ratings_calculate_river_rafts(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_enterprise(Ride* ride) +void ride_ratings_calculate_enterprise(Ride* ride) { ride->lifecycle_flags |= RIDE_LIFECYCLE_TESTED; ride->lifecycle_flags |= RIDE_LIFECYCLE_NO_RAW_STATS; @@ -4215,7 +4211,7 @@ static void ride_ratings_calculate_enterprise(Ride* ride) ride->sheltered_eighths = 3; } -static void ride_ratings_calculate_inverted_impulse_coaster(Ride* ride) +void ride_ratings_calculate_inverted_impulse_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4252,7 +4248,7 @@ static void ride_ratings_calculate_inverted_impulse_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_mini_roller_coaster(Ride* ride) +void ride_ratings_calculate_mini_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4291,7 +4287,7 @@ static void ride_ratings_calculate_mini_roller_coaster(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_mine_ride(Ride* ride) +void ride_ratings_calculate_mine_ride(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4327,7 +4323,7 @@ static void ride_ratings_calculate_mine_ride(Ride* ride) ride->sheltered_eighths = get_num_of_sheltered_eighths(ride).TotalShelteredEighths; } -static void ride_ratings_calculate_lim_launched_roller_coaster(Ride* ride) +void ride_ratings_calculate_lim_launched_roller_coaster(Ride* ride) { if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)) return; @@ -4377,104 +4373,9 @@ static void ride_ratings_calculate_lim_launched_roller_coaster(Ride* ride) #pragma region Ride rating calculation function table -// rct2: 0x0097E050 -static const ride_ratings_calculation RideRatingsCalculateFuncTable[RIDE_TYPE_COUNT] = { - ride_ratings_calculate_spiral_roller_coaster, // SPIRAL_ROLLER_COASTER - ride_ratings_calculate_stand_up_roller_coaster, // STAND_UP_ROLLER_COASTER - ride_ratings_calculate_suspended_swinging_coaster, // SUSPENDED_SWINGING_COASTER - ride_ratings_calculate_inverted_roller_coaster, // INVERTED_ROLLER_COASTER - ride_ratings_calculate_junior_roller_coaster, // JUNIOR_ROLLER_COASTER - ride_ratings_calculate_miniature_railway, // MINIATURE_RAILWAY - ride_ratings_calculate_monorail, // MONORAIL - ride_ratings_calculate_mini_suspended_coaster, // MINI_SUSPENDED_COASTER - ride_ratings_calculate_boat_hire, // BOAT_HIRE - ride_ratings_calculate_wooden_wild_mouse, // WOODEN_WILD_MOUSE - ride_ratings_calculate_steeplechase, // STEEPLECHASE - ride_ratings_calculate_car_ride, // CAR_RIDE - ride_ratings_calculate_launched_freefall, // LAUNCHED_FREEFALL - ride_ratings_calculate_bobsleigh_coaster, // BOBSLEIGH_COASTER - ride_ratings_calculate_observation_tower, // OBSERVATION_TOWER - ride_ratings_calculate_looping_roller_coaster, // LOOPING_ROLLER_COASTER - ride_ratings_calculate_dinghy_slide, // DINGHY_SLIDE - ride_ratings_calculate_mine_train_coaster, // MINE_TRAIN_COASTER - ride_ratings_calculate_chairlift, // CHAIRLIFT - ride_ratings_calculate_corkscrew_roller_coaster, // CORKSCREW_ROLLER_COASTER - ride_ratings_calculate_maze, // MAZE - ride_ratings_calculate_spiral_slide, // SPIRAL_SLIDE - ride_ratings_calculate_go_karts, // GO_KARTS - ride_ratings_calculate_log_flume, // LOG_FLUME - ride_ratings_calculate_river_rapids, // RIVER_RAPIDS - ride_ratings_calculate_dodgems, // DODGEMS - ride_ratings_calculate_pirate_ship, // PIRATE_SHIP - ride_ratings_calculate_inverter_ship, // SWINGING_INVERTER_SHIP - ride_ratings_calculate_food_stall, // FOOD_STALL - ride_ratings_calculate_food_stall, // 1D - ride_ratings_calculate_drink_stall, // DRINK_STALL - ride_ratings_calculate_drink_stall, // 1F - ride_ratings_calculate_shop, // SHOP - ride_ratings_calculate_merry_go_round, // MERRY_GO_ROUND - ride_ratings_calculate_shop, // 22 - ride_ratings_calculate_information_kiosk, // INFORMATION_KIOSK - ride_ratings_calculate_toilets, // TOILETS - ride_ratings_calculate_ferris_wheel, // FERRIS_WHEEL - ride_ratings_calculate_motion_simulator, // MOTION_SIMULATOR - ride_ratings_calculate_3d_cinema, // 3D_CINEMA - ride_ratings_calculate_top_spin, // TOP_SPIN - ride_ratings_calculate_space_rings, // SPACE_RINGS - ride_ratings_calculate_reverse_freefall_coaster, // REVERSE_FREEFALL_COASTER - ride_ratings_calculate_lift, // LIFT - ride_ratings_calculate_vertical_drop_roller_coaster, // VERTICAL_DROP_ROLLER_COASTER - ride_ratings_calculate_cash_machine, // CASH_MACHINE - ride_ratings_calculate_twist, // TWIST - ride_ratings_calculate_haunted_house, // HAUNTED_HOUSE - ride_ratings_calculate_first_aid, // FIRST_AID - ride_ratings_calculate_circus_show, // CIRCUS_SHOW - ride_ratings_calculate_ghost_train, // GHOST_TRAIN - ride_ratings_calculate_twister_roller_coaster, // TWISTER_ROLLER_COASTER - ride_ratings_calculate_wooden_roller_coaster, // WOODEN_ROLLER_COASTER - ride_ratings_calculate_side_friction_roller_coaster, // SIDE_FRICTION_ROLLER_COASTER - ride_ratings_calculate_wild_mouse, // WILD_MOUSE - ride_ratings_calculate_multi_dimension_roller_coaster, // MULTI_DIMENSION_ROLLER_COASTER - ride_ratings_calculate_multi_dimension_roller_coaster, // 38 - ride_ratings_calculate_flying_roller_coaster, // FLYING_ROLLER_COASTER - ride_ratings_calculate_flying_roller_coaster, // 3A - ride_ratings_calculate_virginia_reel, // VIRGINIA_REEL - ride_ratings_calculate_splash_boats, // SPLASH_BOATS - ride_ratings_calculate_mini_helicopters, // MINI_HELICOPTERS - ride_ratings_calculate_lay_down_roller_coaster, // LAY_DOWN_ROLLER_COASTER - ride_ratings_calculate_suspended_monorail, // SUSPENDED_MONORAIL - ride_ratings_calculate_lay_down_roller_coaster, // 40 - ride_ratings_calculate_reverser_roller_coaster, // REVERSER_ROLLER_COASTER - ride_ratings_calculate_heartline_twister_coaster, // HEARTLINE_TWISTER_COASTER - ride_ratings_calculate_mini_golf, // MINI_GOLF - ride_ratings_calculate_giga_coaster, // GIGA_COASTER - ride_ratings_calculate_roto_drop, // ROTO_DROP - ride_ratings_calculate_flying_saucers, // FLYING_SAUCERS - ride_ratings_calculate_crooked_house, // CROOKED_HOUSE - ride_ratings_calculate_monorail_cycles, // MONORAIL_CYCLES - ride_ratings_calculate_compact_inverted_coaster, // COMPACT_INVERTED_COASTER - ride_ratings_calculate_water_coaster, // WATER_COASTER - ride_ratings_calculate_air_powered_vertical_coaster, // AIR_POWERED_VERTICAL_COASTER - ride_ratings_calculate_inverted_hairpin_coaster, // INVERTED_HAIRPIN_COASTER - ride_ratings_calculate_magic_carpet, // MAGIC_CARPET - ride_ratings_calculate_submarine_ride, // SUBMARINE_RIDE - ride_ratings_calculate_river_rafts, // RIVER_RAFTS - nullptr, // 50 - ride_ratings_calculate_enterprise, // ENTERPRISE - nullptr, // 52 - nullptr, // 53 - nullptr, // 54 - nullptr, // 55 - ride_ratings_calculate_inverted_impulse_coaster, // INVERTED_IMPULSE_COASTER - ride_ratings_calculate_mini_roller_coaster, // MINI_ROLLER_COASTER - ride_ratings_calculate_mine_ride, // MINE_RIDE - nullptr, // 59 - ride_ratings_calculate_lim_launched_roller_coaster, // LIM_LAUNCHED_ROLLER_COASTER -}; - -static ride_ratings_calculation ride_ratings_get_calculate_func(uint8_t rideType) +ride_ratings_calculation ride_ratings_get_calculate_func(uint8_t rideType) { - return RideRatingsCalculateFuncTable[rideType]; + return RideTypeDescriptors[rideType].RatingsCalculationFunction; } #pragma endregion diff --git a/src/openrct2/ride/RideRatings.h b/src/openrct2/ride/RideRatings.h index 3a6975ad0d..dca7d00f29 100644 --- a/src/openrct2/ride/RideRatings.h +++ b/src/openrct2/ride/RideRatings.h @@ -60,3 +60,86 @@ extern RideRatingCalculationData gRideRatingsCalcData; void ride_ratings_update_ride(const Ride& ride); void ride_ratings_update_all(); + +using ride_ratings_calculation = void (*)(Ride* ride); +ride_ratings_calculation ride_ratings_get_calculate_func(uint8_t rideType); + +void ride_ratings_calculate_spiral_roller_coaster(Ride* ride); +void ride_ratings_calculate_stand_up_roller_coaster(Ride* ride); +void ride_ratings_calculate_suspended_swinging_coaster(Ride* ride); +void ride_ratings_calculate_inverted_roller_coaster(Ride* ride); +void ride_ratings_calculate_junior_roller_coaster(Ride* ride); +void ride_ratings_calculate_miniature_railway(Ride* ride); +void ride_ratings_calculate_monorail(Ride* ride); +void ride_ratings_calculate_mini_suspended_coaster(Ride* ride); +void ride_ratings_calculate_boat_hire(Ride* ride); +void ride_ratings_calculate_wooden_wild_mouse(Ride* ride); +void ride_ratings_calculate_steeplechase(Ride* ride); +void ride_ratings_calculate_car_ride(Ride* ride); +void ride_ratings_calculate_launched_freefall(Ride* ride); +void ride_ratings_calculate_bobsleigh_coaster(Ride* ride); +void ride_ratings_calculate_observation_tower(Ride* ride); +void ride_ratings_calculate_looping_roller_coaster(Ride* ride); +void ride_ratings_calculate_dinghy_slide(Ride* ride); +void ride_ratings_calculate_mine_train_coaster(Ride* ride); +void ride_ratings_calculate_chairlift(Ride* ride); +void ride_ratings_calculate_corkscrew_roller_coaster(Ride* ride); +void ride_ratings_calculate_maze(Ride* ride); +void ride_ratings_calculate_spiral_slide(Ride* ride); +void ride_ratings_calculate_go_karts(Ride* ride); +void ride_ratings_calculate_log_flume(Ride* ride); +void ride_ratings_calculate_river_rapids(Ride* ride); +void ride_ratings_calculate_dodgems(Ride* ride); +void ride_ratings_calculate_pirate_ship(Ride* ride); +void ride_ratings_calculate_inverter_ship(Ride* ride); +void ride_ratings_calculate_food_stall(Ride* ride); +void ride_ratings_calculate_shop(Ride* ride); +void ride_ratings_calculate_merry_go_round(Ride* ride); +void ride_ratings_calculate_information_kiosk(Ride* ride); +void ride_ratings_calculate_toilets(Ride* ride); +void ride_ratings_calculate_ferris_wheel(Ride* ride); +void ride_ratings_calculate_motion_simulator(Ride* ride); +void ride_ratings_calculate_3d_cinema(Ride* ride); +void ride_ratings_calculate_top_spin(Ride* ride); +void ride_ratings_calculate_space_rings(Ride* ride); +void ride_ratings_calculate_reverse_freefall_coaster(Ride* ride); +void ride_ratings_calculate_lift(Ride* ride); +void ride_ratings_calculate_vertical_drop_roller_coaster(Ride* ride); +void ride_ratings_calculate_cash_machine(Ride* ride); +void ride_ratings_calculate_twist(Ride* ride); +void ride_ratings_calculate_haunted_house(Ride* ride); +void ride_ratings_calculate_first_aid(Ride* ride); +void ride_ratings_calculate_circus_show(Ride* ride); +void ride_ratings_calculate_ghost_train(Ride* ride); +void ride_ratings_calculate_twister_roller_coaster(Ride* ride); +void ride_ratings_calculate_wooden_roller_coaster(Ride* ride); +void ride_ratings_calculate_side_friction_roller_coaster(Ride* ride); +void ride_ratings_calculate_wild_mouse(Ride* ride); +void ride_ratings_calculate_multi_dimension_roller_coaster(Ride* ride); +void ride_ratings_calculate_flying_roller_coaster(Ride* ride); +void ride_ratings_calculate_virginia_reel(Ride* ride); +void ride_ratings_calculate_splash_boats(Ride* ride); +void ride_ratings_calculate_mini_helicopters(Ride* ride); +void ride_ratings_calculate_lay_down_roller_coaster(Ride* ride); +void ride_ratings_calculate_suspended_monorail(Ride* ride); +void ride_ratings_calculate_reverser_roller_coaster(Ride* ride); +void ride_ratings_calculate_heartline_twister_coaster(Ride* ride); +void ride_ratings_calculate_mini_golf(Ride* ride); +void ride_ratings_calculate_giga_coaster(Ride* ride); +void ride_ratings_calculate_roto_drop(Ride* ride); +void ride_ratings_calculate_flying_saucers(Ride* ride); +void ride_ratings_calculate_crooked_house(Ride* ride); +void ride_ratings_calculate_monorail_cycles(Ride* ride); +void ride_ratings_calculate_compact_inverted_coaster(Ride* ride); +void ride_ratings_calculate_water_coaster(Ride* ride); +void ride_ratings_calculate_air_powered_vertical_coaster(Ride* ride); +void ride_ratings_calculate_inverted_hairpin_coaster(Ride* ride); +void ride_ratings_calculate_magic_carpet(Ride* ride); +void ride_ratings_calculate_submarine_ride(Ride* ride); +void ride_ratings_calculate_river_rafts(Ride* ride); +void ride_ratings_calculate_enterprise(Ride* ride); +void ride_ratings_calculate_inverted_impulse_coaster(Ride* ride); +void ride_ratings_calculate_mini_roller_coaster(Ride* ride); +void ride_ratings_calculate_mine_ride(Ride* ride); +void ride_ratings_calculate_lim_launched_roller_coaster(Ride* ride); +void ride_ratings_calculate_drink_stall(Ride* ride); diff --git a/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h b/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h index 26919687e4..28c8ce4a87 100644 --- a/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h +++ b/src/openrct2/ride/coaster/meta/AirPoweredVerticalCoaster.h @@ -32,6 +32,7 @@ constexpr const RideTypeDescriptor AirPoweredVerticalCoasterRTD = SET_FIELD(Heights, { 255, 32, 4, 7, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_air_powered_vertical_coaster), SET_FIELD(RatingsMultipliers, { 44, 66, 10 }), SET_FIELD(UpkeepCosts, { 90, 20, 0, 0, 0, 10 }), SET_FIELD(BuildCosts, { 200, 0, 45, }), diff --git a/src/openrct2/ride/coaster/meta/BobsleighCoaster.h b/src/openrct2/ride/coaster/meta/BobsleighCoaster.h index 4015cb3d2e..3f8bfb510e 100644 --- a/src/openrct2/ride/coaster/meta/BobsleighCoaster.h +++ b/src/openrct2/ride/coaster/meta/BobsleighCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor BobsleighCoasterRTD = SET_FIELD(Heights, { 19, 24, 5, 7, }), SET_FIELD(MaxMass, 25), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_bobsleigh_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 80, 5, 45, }), diff --git a/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h b/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h index 750bc17cdd..7dc20c0411 100644 --- a/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h +++ b/src/openrct2/ride/coaster/meta/CompactInvertedCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor CompactInvertedCoasterRTD = SET_FIELD(Heights, { 27, 40, 29, 8, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_compact_inverted_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 13, 3, 10 }), SET_FIELD(BuildCosts, { 100, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h b/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h index 7bbc3b768a..3f36bc0905 100644 --- a/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/CorkscrewRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor CorkscrewRollerCoasterRTD = SET_FIELD(Heights, { 28, 24, 8, 11, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::LiftArrow, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_corkscrew_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 11, 3, 10 }), SET_FIELD(BuildCosts, { 105, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h b/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h index 06896ad017..b12f386abf 100644 --- a/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/FlyingRollerCoaster.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterRTD = SET_FIELD(Heights, { 30, 24, 8, 11, }), SET_FIELD(MaxMass, 35), SET_FIELD(LiftData, { SoundId::LiftBM, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_flying_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }), SET_FIELD(BuildCosts, { 125, 5, 50, }), @@ -66,6 +67,7 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterAltRTD = SET_FIELD(Heights, { 30, 24, 8, 11, }), SET_FIELD(MaxMass, 35), SET_FIELD(LiftData, { SoundId::LiftBM, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_flying_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }), SET_FIELD(BuildCosts, { 125, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/GigaCoaster.h b/src/openrct2/ride/coaster/meta/GigaCoaster.h index c58dbcf8c6..d406a57cef 100644 --- a/src/openrct2/ride/coaster/meta/GigaCoaster.h +++ b/src/openrct2/ride/coaster/meta/GigaCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor GigaCoasterRTD = SET_FIELD(Heights, { 86, 24, 9, 11, }), SET_FIELD(MaxMass, 31), SET_FIELD(LiftData, { SoundId::LiftClassic, 5, 8 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_giga_coaster), SET_FIELD(RatingsMultipliers, { 51, 32, 10 }), SET_FIELD(UpkeepCosts, { 10, 20, 80, 12, 3, 40 }), SET_FIELD(BuildCosts, { 120, 5, 55, }), diff --git a/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h b/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h index f9f7d62aa5..98b10b5f23 100644 --- a/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h +++ b/src/openrct2/ride/coaster/meta/HeartlineTwisterCoaster.h @@ -33,6 +33,7 @@ constexpr const RideTypeDescriptor HeartlineTwisterCoasterRTD = SET_FIELD(Heights, { 22, 24, 15, 9, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_heartline_twister_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 47, 20, 80, 11, 3, 10 }), SET_FIELD(BuildCosts, { 135, 7, 30, }), diff --git a/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h b/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h index 6a010462cd..8a0830f924 100644 --- a/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h +++ b/src/openrct2/ride/coaster/meta/InvertedHairpinCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor InvertedHairpinCoasterRTD = SET_FIELD(Heights, { 16, 24, 24, 7, }), SET_FIELD(MaxMass, 4), SET_FIELD(LiftData, { SoundId::LiftWildMouse, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_inverted_hairpin_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 30 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 9, 3, 10 }), SET_FIELD(BuildCosts, { 67, 4, 40, }), diff --git a/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h b/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h index 68ad74e1b5..2ae8337573 100644 --- a/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h +++ b/src/openrct2/ride/coaster/meta/InvertedImpulseCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor InvertedImpulseCoasterRTD = SET_FIELD(Heights, { 45, 40, 29, 8, }), SET_FIELD(MaxMass, 23), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 7 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_inverted_impulse_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 180, 20, 80, 11, 3, 10 }), SET_FIELD(BuildCosts, { 125, 5, 25, }), diff --git a/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h b/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h index 28554cc642..018815a07e 100644 --- a/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/InvertedRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor InvertedRollerCoasterRTD = SET_FIELD(Heights, { 38, 40, 29, 8, }), SET_FIELD(MaxMass, 27), SET_FIELD(LiftData, { SoundId::LiftBM, 5, 7 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_inverted_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 13, 3, 10 }), SET_FIELD(BuildCosts, { 110, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h b/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h index 56b0b114b5..02993eed17 100644 --- a/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/JuniorRollerCoaster.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor JuniorRollerCoasterRTD = SET_FIELD(Heights, { 15, 24, 4, 7, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_junior_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 8, 3, 5 }), SET_FIELD(BuildCosts, { 45, 4, 40, }), diff --git a/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h b/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h index 8d74df3ac7..74a69c761f 100644 --- a/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/LIMLaunchedRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor LIMLaunchedRollerCoasterRTD = SET_FIELD(Heights, { 35, 24, 5, 7, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::Null, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_lim_launched_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 42, 20, 80, 9, 3, 10 }), SET_FIELD(BuildCosts, { 95, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h b/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h index 3ffa5e9ff3..709637ec4b 100644 --- a/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/LayDownRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterRTD = SET_FIELD(Heights, { 26, 24, 8, 11, }), SET_FIELD(MaxMass, 25), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_lay_down_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }), SET_FIELD(BuildCosts, { 107, 5, 50, }), @@ -62,6 +63,7 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterAltRTD = SET_FIELD(Heights, { 26, 24, 8, 11, }), SET_FIELD(MaxMass, 25), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_lay_down_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }), SET_FIELD(BuildCosts, { 107, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h b/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h index 9a6c074a89..69023cf1c0 100644 --- a/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/LoopingRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor LoopingRollerCoasterRTD = SET_FIELD(Heights, { 35, 24, 5, 7, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_looping_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 90, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/MineRide.h b/src/openrct2/ride/coaster/meta/MineRide.h index f7deb2cc19..77de758945 100644 --- a/src/openrct2/ride/coaster/meta/MineRide.h +++ b/src/openrct2/ride/coaster/meta/MineRide.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor MineRideRTD = SET_FIELD(Heights, { 13, 24, 9, 11, }), SET_FIELD(MaxMass, 27), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_mine_ride), SET_FIELD(RatingsMultipliers, { 60, 20, 10 }), SET_FIELD(UpkeepCosts, { 50, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 85, 4, 40, }), diff --git a/src/openrct2/ride/coaster/meta/MineTrainCoaster.h b/src/openrct2/ride/coaster/meta/MineTrainCoaster.h index 9032d32e95..820c78d6a2 100644 --- a/src/openrct2/ride/coaster/meta/MineTrainCoaster.h +++ b/src/openrct2/ride/coaster/meta/MineTrainCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor MineTrainCoasterRTD = SET_FIELD(Heights, { 21, 24, 4, 7, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::LiftArrow, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_mine_train_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 82, 6, 50, }), diff --git a/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h b/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h index 11d84a004d..3f55829ebd 100644 --- a/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/MiniRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor MiniRollerCoasterRTD = SET_FIELD(Heights, { 16, 24, 9, 11, }), SET_FIELD(MaxMass, 10), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_mini_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 35, 20, 80, 8, 3, 10 }), SET_FIELD(BuildCosts, { 65, 4, 40, }), diff --git a/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h b/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h index 278cc09ff5..67f57e9bdc 100644 --- a/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h +++ b/src/openrct2/ride/coaster/meta/MiniSuspendedCoaster.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor MiniSuspendedCoasterRTD = SET_FIELD(Heights, { 10, 24, 24, 8, }), SET_FIELD(MaxMass, 3), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_mini_suspended_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 60, 5, 40, }), diff --git a/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h b/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h index 1e11261ea4..21cc2ebc78 100644 --- a/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/MultiDimensionRollerCoaster.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterRTD = SET_FIELD(Heights, { 40, 24, 8, 11, }), SET_FIELD(MaxMass, 78), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_multi_dimension_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 75, 20, 90, 11, 3, 15 }), SET_FIELD(BuildCosts, { 180, 5, 50, }), @@ -63,6 +64,7 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterAltRTD = SET_FIELD(Heights, { 40, 24, 8, 11, }), SET_FIELD(MaxMass, 78), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_multi_dimension_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 75, 20, 90, 11, 3, 15 }), SET_FIELD(BuildCosts, { 180, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h b/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h index 083155cc2d..7c35ce5749 100644 --- a/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h +++ b/src/openrct2/ride/coaster/meta/ReverseFreefallCoaster.h @@ -32,6 +32,7 @@ constexpr const RideTypeDescriptor ReverseFreefallCoasterRTD = SET_FIELD(Heights, { 255, 32, 4, 7, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_reverse_freefall_coaster), SET_FIELD(RatingsMultipliers, { 44, 66, 10 }), SET_FIELD(UpkeepCosts, { 80, 20, 0, 0, 0, 10 }), SET_FIELD(BuildCosts, { 200, 0, 45, }), diff --git a/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h b/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h index ce8b923f18..0a5ec9a940 100644 --- a/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/ReverserRollerCoaster.h @@ -33,6 +33,7 @@ constexpr const RideTypeDescriptor ReverserRollerCoasterRTD = SET_FIELD(Heights, { 18, 24, 8, 11, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::LiftClassic, 3, 4 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_reverser_roller_coaster), SET_FIELD(RatingsMultipliers, { 48, 28, 7 }), SET_FIELD(UpkeepCosts, { 39, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 55, 6, 37, }), diff --git a/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h b/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h index 4b9860eaf8..b230c8992f 100644 --- a/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/SideFrictionRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor SideFrictionRollerCoasterRTD = SET_FIELD(Heights, { 15, 24, 4, 11, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::LiftWood, 3, 4 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_side_friction_roller_coaster), SET_FIELD(RatingsMultipliers, { 48, 28, 7 }), SET_FIELD(UpkeepCosts, { 39, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 55, 6, 37, }), diff --git a/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h b/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h index 93b94efaf4..8d807551d1 100644 --- a/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/SpiralRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor SpiralRollerCoasterRTD = SET_FIELD(Heights, { 19, 24, 9, 11, }), SET_FIELD(MaxMass, 31), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 7, 7 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_spiral_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 41, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 70, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h b/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h index f10a298401..e6dc40902e 100644 --- a/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/StandUpRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor StandUpRollerCoasterRTD = SET_FIELD(Heights, { 25, 24, 9, 11, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_stand_up_roller_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 100, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/SteelWildMouse.h b/src/openrct2/ride/coaster/meta/SteelWildMouse.h index 9daeb08d15..e28a9d0329 100644 --- a/src/openrct2/ride/coaster/meta/SteelWildMouse.h +++ b/src/openrct2/ride/coaster/meta/SteelWildMouse.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor SteelWildMouseRTD = SET_FIELD(Heights, { 16, 24, 4, 7, }), SET_FIELD(MaxMass, 4), SET_FIELD(LiftData, { SoundId::LiftWildMouse, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_wild_mouse), SET_FIELD(RatingsMultipliers, { 50, 30, 30 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 9, 3, 10 }), SET_FIELD(BuildCosts, { 55, 4, 40, }), diff --git a/src/openrct2/ride/coaster/meta/Steeplechase.h b/src/openrct2/ride/coaster/meta/Steeplechase.h index ea91176654..250dc2475c 100644 --- a/src/openrct2/ride/coaster/meta/Steeplechase.h +++ b/src/openrct2/ride/coaster/meta/Steeplechase.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor SteeplechaseRTD = SET_FIELD(Heights, { 14, 24, 7, 7, }), SET_FIELD(MaxMass, 4), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_steeplechase), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 57, 4, 40, }), diff --git a/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h b/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h index 988c042669..b9159bf812 100644 --- a/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h +++ b/src/openrct2/ride/coaster/meta/SuspendedSwingingCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor SuspendedSwingingCoasterRTD = SET_FIELD(Heights, { 24, 40, 29, 8, }), SET_FIELD(MaxMass, 26), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_suspended_swinging_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 20, 3, 10 }), SET_FIELD(BuildCosts, { 95, 5, 50, }), diff --git a/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h b/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h index 05cc4e0580..39336d4147 100644 --- a/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/TwisterRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor TwisterRollerCoasterRTD = SET_FIELD(Heights, { 54, 24, 8, 9, }), SET_FIELD(MaxMass, 31), SET_FIELD(LiftData, { SoundId::LiftBM, 5, 8 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_twister_roller_coaster), SET_FIELD(RatingsMultipliers, { 52, 36, 10 }), SET_FIELD(UpkeepCosts, { 43, 20, 80, 11, 3, 10 }), SET_FIELD(BuildCosts, { 120, 5, 55, }), diff --git a/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h b/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h index c226876165..81615e31c8 100644 --- a/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h +++ b/src/openrct2/ride/coaster/meta/VerticalDropCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor VerticalDropCoasterRTD = SET_FIELD(Heights, { 53, 24, 8, 11, }), SET_FIELD(MaxMass, 25), SET_FIELD(LiftData, { SoundId::LiftBM, 4, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_vertical_drop_roller_coaster), SET_FIELD(RatingsMultipliers, { 52, 38, 10 }), SET_FIELD(UpkeepCosts, { 44, 20, 80, 11, 3, 10 }), SET_FIELD(BuildCosts, { 120, 5, 42, }), diff --git a/src/openrct2/ride/coaster/meta/VirginiaReel.h b/src/openrct2/ride/coaster/meta/VirginiaReel.h index 97ef1fd81c..a20eb67fd5 100644 --- a/src/openrct2/ride/coaster/meta/VirginiaReel.h +++ b/src/openrct2/ride/coaster/meta/VirginiaReel.h @@ -33,6 +33,7 @@ constexpr const RideTypeDescriptor VirginiaReelRTD = SET_FIELD(Heights, { 14, 24, 6, 7, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::LiftClassic, 3, 4 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_virginia_reel), SET_FIELD(RatingsMultipliers, { 30, 15, 25 }), SET_FIELD(UpkeepCosts, { 39, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 53, 6, 25, }), diff --git a/src/openrct2/ride/coaster/meta/WaterCoaster.h b/src/openrct2/ride/coaster/meta/WaterCoaster.h index c490453e22..b62b612853 100644 --- a/src/openrct2/ride/coaster/meta/WaterCoaster.h +++ b/src/openrct2/ride/coaster/meta/WaterCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor WaterCoasterRTD = SET_FIELD(Heights, { 18, 24, 4, 7, }), SET_FIELD(MaxMass, 13), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_water_coaster), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 60, 20, 80, 8, 3, 10 }), SET_FIELD(BuildCosts, { 55, 4, 40, }), diff --git a/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h b/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h index 12a7bf1247..465063c8de 100644 --- a/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h +++ b/src/openrct2/ride/coaster/meta/WoodenRollerCoaster.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor WoodenRollerCoasterRTD = SET_FIELD(Heights, { 41, 24, 8, 11, }), SET_FIELD(MaxMass, 19), SET_FIELD(LiftData, { SoundId::LiftWood, 5, 7 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_wooden_roller_coaster), SET_FIELD(RatingsMultipliers, { 52, 33, 8 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }), SET_FIELD(BuildCosts, { 75, 7, 50, }), diff --git a/src/openrct2/ride/coaster/meta/WoodenWildMouse.h b/src/openrct2/ride/coaster/meta/WoodenWildMouse.h index fe04c63a23..f0afb63a0d 100644 --- a/src/openrct2/ride/coaster/meta/WoodenWildMouse.h +++ b/src/openrct2/ride/coaster/meta/WoodenWildMouse.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor WoodenWildMouseRTD = SET_FIELD(Heights, { 14, 24, 4, 7, }), SET_FIELD(MaxMass, 4), SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_wooden_wild_mouse), SET_FIELD(RatingsMultipliers, { 50, 30, 30 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 9, 3, 10 }), SET_FIELD(BuildCosts, { 50, 6, 40, }), diff --git a/src/openrct2/ride/gentle/meta/CarRide.h b/src/openrct2/ride/gentle/meta/CarRide.h index 394bc9e3b4..8a0aff1ba3 100644 --- a/src/openrct2/ride/gentle/meta/CarRide.h +++ b/src/openrct2/ride/gentle/meta/CarRide.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor CarRideRTD = SET_FIELD(Heights, { 6, 24, 4, 7, }), SET_FIELD(MaxMass, 2), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_car_ride), SET_FIELD(RatingsMultipliers, { 70, 10, 10 }), SET_FIELD(UpkeepCosts, { 70, 20, 0, 8, 3, 5 }), SET_FIELD(BuildCosts, { 25, 5, 30, }), diff --git a/src/openrct2/ride/gentle/meta/Circus.h b/src/openrct2/ride/gentle/meta/Circus.h index f58ab8d610..1f15b37627 100644 --- a/src/openrct2/ride/gentle/meta/Circus.h +++ b/src/openrct2/ride/gentle/meta/Circus.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor CircusRTD = SET_FIELD(Heights, { 12, 128, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_circus_show), SET_FIELD(RatingsMultipliers, { 20, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 125, 2, 1, }), diff --git a/src/openrct2/ride/gentle/meta/CrookedHouse.h b/src/openrct2/ride/gentle/meta/CrookedHouse.h index 65fd645a5a..4c9b499f61 100644 --- a/src/openrct2/ride/gentle/meta/CrookedHouse.h +++ b/src/openrct2/ride/gentle/meta/CrookedHouse.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor CrookedHouseRTD = SET_FIELD(Heights, { 16, 96, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_crooked_house), SET_FIELD(RatingsMultipliers, { 15, 8, 0 }), SET_FIELD(UpkeepCosts, { 30, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 65, 2, 1, }), diff --git a/src/openrct2/ride/gentle/meta/Dodgems.h b/src/openrct2/ride/gentle/meta/Dodgems.h index 2378af5683..1488a89a4f 100644 --- a/src/openrct2/ride/gentle/meta/Dodgems.h +++ b/src/openrct2/ride/gentle/meta/Dodgems.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor DodgemsRTD = SET_FIELD(Heights, { 9, 48, 2, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_dodgems), SET_FIELD(RatingsMultipliers, { 40, 20, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 5, 0, 0 }), SET_FIELD(BuildCosts, { 55, 2, 1, }), diff --git a/src/openrct2/ride/gentle/meta/FerrisWheel.h b/src/openrct2/ride/gentle/meta/FerrisWheel.h index 399270efb2..210eaa5330 100644 --- a/src/openrct2/ride/gentle/meta/FerrisWheel.h +++ b/src/openrct2/ride/gentle/meta/FerrisWheel.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor FerrisWheelRTD = SET_FIELD(Heights, { 16, 176, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_ferris_wheel), SET_FIELD(RatingsMultipliers, { 60, 20, 10 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 225, 2, 1, }), diff --git a/src/openrct2/ride/gentle/meta/FlyingSaucers.h b/src/openrct2/ride/gentle/meta/FlyingSaucers.h index a128d23fbb..256dcd2135 100644 --- a/src/openrct2/ride/gentle/meta/FlyingSaucers.h +++ b/src/openrct2/ride/gentle/meta/FlyingSaucers.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor FlyingSaucersRTD = SET_FIELD(Heights, { 9, 48, 2, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_flying_saucers), SET_FIELD(RatingsMultipliers, { 50, 25, 0 }), SET_FIELD(UpkeepCosts, { 90, 1, 0, 5, 0, 0 }), SET_FIELD(BuildCosts, { 70, 4, 1, }), diff --git a/src/openrct2/ride/gentle/meta/GhostTrain.h b/src/openrct2/ride/gentle/meta/GhostTrain.h index 0e98abeec2..6aef9f4991 100644 --- a/src/openrct2/ride/gentle/meta/GhostTrain.h +++ b/src/openrct2/ride/gentle/meta/GhostTrain.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor GhostTrainRTD = SET_FIELD(Heights, { 8, 24, 6, 7, }), SET_FIELD(MaxMass, 2), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_ghost_train), SET_FIELD(RatingsMultipliers, { 70, 10, 10 }), SET_FIELD(UpkeepCosts, { 80, 20, 0, 8, 3, 5 }), SET_FIELD(BuildCosts, { 26, 5, 30, }), diff --git a/src/openrct2/ride/gentle/meta/HauntedHouse.h b/src/openrct2/ride/gentle/meta/HauntedHouse.h index 9f41234718..32debbe9a4 100644 --- a/src/openrct2/ride/gentle/meta/HauntedHouse.h +++ b/src/openrct2/ride/gentle/meta/HauntedHouse.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor HauntedHouseRTD = SET_FIELD(Heights, { 16, 160, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_haunted_house), SET_FIELD(RatingsMultipliers, { 20, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 85, 2, 1, }), diff --git a/src/openrct2/ride/gentle/meta/Maze.h b/src/openrct2/ride/gentle/meta/Maze.h index d3b4c4f3b4..0ae6406556 100644 --- a/src/openrct2/ride/gentle/meta/Maze.h +++ b/src/openrct2/ride/gentle/meta/Maze.h @@ -33,6 +33,7 @@ constexpr const RideTypeDescriptor MazeRTD = SET_FIELD(Heights, { 6, 24, 0, 1, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_maze), SET_FIELD(RatingsMultipliers, { 50, 0, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 55, 2, 8, }), diff --git a/src/openrct2/ride/gentle/meta/MerryGoRound.h b/src/openrct2/ride/gentle/meta/MerryGoRound.h index 43bf5ff010..1bb9a794e9 100644 --- a/src/openrct2/ride/gentle/meta/MerryGoRound.h +++ b/src/openrct2/ride/gentle/meta/MerryGoRound.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor MerryGoRoundRTD = SET_FIELD(Heights, { 12, 64, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_merry_go_round), SET_FIELD(RatingsMultipliers, { 50, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 115, 2, 1, }), diff --git a/src/openrct2/ride/gentle/meta/MiniGolf.h b/src/openrct2/ride/gentle/meta/MiniGolf.h index 3d77a7d00a..940549936e 100644 --- a/src/openrct2/ride/gentle/meta/MiniGolf.h +++ b/src/openrct2/ride/gentle/meta/MiniGolf.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor MiniGolfRTD = SET_FIELD(Heights, { 7, 32, 2, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_mini_golf), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 30, 20, 80, 11, 3, 10 }), SET_FIELD(BuildCosts, { 50, 7, 20, }), diff --git a/src/openrct2/ride/gentle/meta/MiniHelicopters.h b/src/openrct2/ride/gentle/meta/MiniHelicopters.h index 3fd4ca5eae..3db7ac5073 100644 --- a/src/openrct2/ride/gentle/meta/MiniHelicopters.h +++ b/src/openrct2/ride/gentle/meta/MiniHelicopters.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor MiniHelicoptersRTD = SET_FIELD(Heights, { 7, 24, 4, 7, }), SET_FIELD(MaxMass, 2), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_mini_helicopters), SET_FIELD(RatingsMultipliers, { 70, 10, 10 }), SET_FIELD(UpkeepCosts, { 70, 20, 0, 8, 3, 5 }), SET_FIELD(BuildCosts, { 25, 5, 30, }), diff --git a/src/openrct2/ride/gentle/meta/MonorailCycles.h b/src/openrct2/ride/gentle/meta/MonorailCycles.h index ab94e70f43..3c5fbf6d47 100644 --- a/src/openrct2/ride/gentle/meta/MonorailCycles.h +++ b/src/openrct2/ride/gentle/meta/MonorailCycles.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor MonorailCyclesRTD = SET_FIELD(Heights, { 5, 24, 8, 7, }), SET_FIELD(MaxMass, 2), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_monorail_cycles), SET_FIELD(RatingsMultipliers, { 50, 10, 10 }), SET_FIELD(UpkeepCosts, { 47, 20, 0, 8, 3, 5 }), SET_FIELD(BuildCosts, { 20, 5, 30, }), diff --git a/src/openrct2/ride/gentle/meta/ObservationTower.h b/src/openrct2/ride/gentle/meta/ObservationTower.h index 5416aa0a8b..446464c13a 100644 --- a/src/openrct2/ride/gentle/meta/ObservationTower.h +++ b/src/openrct2/ride/gentle/meta/ObservationTower.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor ObservationTowerRTD = SET_FIELD(Heights, { 255, 32, 3, 2, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_observation_tower), SET_FIELD(RatingsMultipliers, { 80, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }), SET_FIELD(BuildCosts, { 37, 0, 4, }), diff --git a/src/openrct2/ride/gentle/meta/SpaceRings.h b/src/openrct2/ride/gentle/meta/SpaceRings.h index 5451607733..bbf8a3fe5d 100644 --- a/src/openrct2/ride/gentle/meta/SpaceRings.h +++ b/src/openrct2/ride/gentle/meta/SpaceRings.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor SpaceRingsRTD = SET_FIELD(Heights, { 16, 48, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_space_rings), SET_FIELD(RatingsMultipliers, { 12, 4, 4 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 72, 2, 1, }), diff --git a/src/openrct2/ride/gentle/meta/SpiralSlide.h b/src/openrct2/ride/gentle/meta/SpiralSlide.h index ae6cdc4b99..9b55ff4a78 100644 --- a/src/openrct2/ride/gentle/meta/SpiralSlide.h +++ b/src/openrct2/ride/gentle/meta/SpiralSlide.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor SpiralSlideRTD = SET_FIELD(Heights, { 15, 128, 0, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_spiral_slide), SET_FIELD(RatingsMultipliers, { 50, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 165, 2, 1, }), diff --git a/src/openrct2/ride/shops/meta/CashMachine.h b/src/openrct2/ride/shops/meta/CashMachine.h index 1442315c14..b84021e5b0 100644 --- a/src/openrct2/ride/shops/meta/CashMachine.h +++ b/src/openrct2/ride/shops/meta/CashMachine.h @@ -33,6 +33,7 @@ constexpr const RideTypeDescriptor CashMachineRTD = SET_FIELD(Heights, { 12, 32, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_cash_machine), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 40, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 400, 0, 1, }), diff --git a/src/openrct2/ride/shops/meta/DrinkStall.h b/src/openrct2/ride/shops/meta/DrinkStall.h index 801c0d3245..fcf1b140fe 100644 --- a/src/openrct2/ride/shops/meta/DrinkStall.h +++ b/src/openrct2/ride/shops/meta/DrinkStall.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor DrinkStallRTD = SET_FIELD(Heights, { 12, 64, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_drink_stall), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 500, 0, 1, }), diff --git a/src/openrct2/ride/shops/meta/FirstAid.h b/src/openrct2/ride/shops/meta/FirstAid.h index b65c4c2fcb..30ef4674ff 100644 --- a/src/openrct2/ride/shops/meta/FirstAid.h +++ b/src/openrct2/ride/shops/meta/FirstAid.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor FirstAidRTD = SET_FIELD(Heights, { 12, 48, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_first_aid), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 45, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 500, 0, 1, }), diff --git a/src/openrct2/ride/shops/meta/FoodStall.h b/src/openrct2/ride/shops/meta/FoodStall.h index 0dcd93a526..9664d950f1 100644 --- a/src/openrct2/ride/shops/meta/FoodStall.h +++ b/src/openrct2/ride/shops/meta/FoodStall.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor FoodStallRTD = SET_FIELD(Heights, { 12, 64, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_food_stall), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 600, 0, 1, }), diff --git a/src/openrct2/ride/shops/meta/InformationKiosk.h b/src/openrct2/ride/shops/meta/InformationKiosk.h index 59bd2e44d1..4bd1b32274 100644 --- a/src/openrct2/ride/shops/meta/InformationKiosk.h +++ b/src/openrct2/ride/shops/meta/InformationKiosk.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor InformationKioskRTD = SET_FIELD(Heights, { 12, 48, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_information_kiosk), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 500, 0, 1, }), diff --git a/src/openrct2/ride/shops/meta/Shop.h b/src/openrct2/ride/shops/meta/Shop.h index 4e6afb1020..12c1718920 100644 --- a/src/openrct2/ride/shops/meta/Shop.h +++ b/src/openrct2/ride/shops/meta/Shop.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor ShopRTD = SET_FIELD(Heights, { 12, 64, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_shop), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 400, 0, 1, }), diff --git a/src/openrct2/ride/shops/meta/Toilets.h b/src/openrct2/ride/shops/meta/Toilets.h index cafc52946b..e4b45f49ee 100644 --- a/src/openrct2/ride/shops/meta/Toilets.h +++ b/src/openrct2/ride/shops/meta/Toilets.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor ToiletsRTD = SET_FIELD(Heights, { 12, 32, 0, 0, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_toilets), SET_FIELD(RatingsMultipliers, { 0, 0, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 450, 0, 1, }), diff --git a/src/openrct2/ride/thrill/meta/3DCinema.h b/src/openrct2/ride/thrill/meta/3DCinema.h index f9966b510f..d48bafe512 100644 --- a/src/openrct2/ride/thrill/meta/3DCinema.h +++ b/src/openrct2/ride/thrill/meta/3DCinema.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor CinemaRTD = SET_FIELD(Heights, { 12, 128, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_3d_cinema), SET_FIELD(RatingsMultipliers, { 20, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 140, 2, 1, }), diff --git a/src/openrct2/ride/thrill/meta/Enterprise.h b/src/openrct2/ride/thrill/meta/Enterprise.h index e53279258c..616b72b12e 100644 --- a/src/openrct2/ride/thrill/meta/Enterprise.h +++ b/src/openrct2/ride/thrill/meta/Enterprise.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor EnterpriseRTD = SET_FIELD(Heights, { 16, 160, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_enterprise), SET_FIELD(RatingsMultipliers, { 50, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 100, 2, 1, }), diff --git a/src/openrct2/ride/thrill/meta/GoKarts.h b/src/openrct2/ride/thrill/meta/GoKarts.h index 6e4224558e..4fe372bb1b 100644 --- a/src/openrct2/ride/thrill/meta/GoKarts.h +++ b/src/openrct2/ride/thrill/meta/GoKarts.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor GoKartsRTD = SET_FIELD(Heights, { 7, 24, 2, 1, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_go_karts), SET_FIELD(RatingsMultipliers, { 120, 20, 0 }), SET_FIELD(UpkeepCosts, { 50, 20, 0, 8, 0, 0 }), SET_FIELD(BuildCosts, { 62, 4, 20, }), diff --git a/src/openrct2/ride/thrill/meta/LaunchedFreefall.h b/src/openrct2/ride/thrill/meta/LaunchedFreefall.h index acaec8a3bb..d496d00d8c 100644 --- a/src/openrct2/ride/thrill/meta/LaunchedFreefall.h +++ b/src/openrct2/ride/thrill/meta/LaunchedFreefall.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor LaunchedFreefallRTD = SET_FIELD(Heights, { 255, 32, 3, 2, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_launched_freefall), SET_FIELD(RatingsMultipliers, { 50, 50, 10 }), SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }), SET_FIELD(BuildCosts, { 50, 0, 4, }), diff --git a/src/openrct2/ride/thrill/meta/MagicCarpet.h b/src/openrct2/ride/thrill/meta/MagicCarpet.h index 0244fa28e3..364f0f534f 100644 --- a/src/openrct2/ride/thrill/meta/MagicCarpet.h +++ b/src/openrct2/ride/thrill/meta/MagicCarpet.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor MagicCarpetRTD = SET_FIELD(Heights, { 15, 176, 7, 11, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_magic_carpet), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 198, 2, 1, }), diff --git a/src/openrct2/ride/thrill/meta/MotionSimulator.h b/src/openrct2/ride/thrill/meta/MotionSimulator.h index c21c7352d6..fc6f6c75dc 100644 --- a/src/openrct2/ride/thrill/meta/MotionSimulator.h +++ b/src/openrct2/ride/thrill/meta/MotionSimulator.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor MotionSimulatorRTD = SET_FIELD(Heights, { 12, 64, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_motion_simulator), SET_FIELD(RatingsMultipliers, { 24, 20, 10 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 220, 2, 1, }), diff --git a/src/openrct2/ride/thrill/meta/RotoDrop.h b/src/openrct2/ride/thrill/meta/RotoDrop.h index df33b8cb01..5dd4eab04a 100644 --- a/src/openrct2/ride/thrill/meta/RotoDrop.h +++ b/src/openrct2/ride/thrill/meta/RotoDrop.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor RotoDropRTD = SET_FIELD(Heights, { 255, 32, 3, 2, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_roto_drop), SET_FIELD(RatingsMultipliers, { 50, 50, 10 }), SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }), SET_FIELD(BuildCosts, { 55, 0, 4, }), diff --git a/src/openrct2/ride/thrill/meta/SwingingInverterShip.h b/src/openrct2/ride/thrill/meta/SwingingInverterShip.h index 9beaabd49b..3f9df36fd2 100644 --- a/src/openrct2/ride/thrill/meta/SwingingInverterShip.h +++ b/src/openrct2/ride/thrill/meta/SwingingInverterShip.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor SwingingInverterShipRTD = SET_FIELD(Heights, { 15, 176, 7, 11, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_inverter_ship), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 212, 2, 1, }), diff --git a/src/openrct2/ride/thrill/meta/SwingingShip.h b/src/openrct2/ride/thrill/meta/SwingingShip.h index 8087abcbe6..50c839820e 100644 --- a/src/openrct2/ride/thrill/meta/SwingingShip.h +++ b/src/openrct2/ride/thrill/meta/SwingingShip.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor SwingingShipRTD = SET_FIELD(Heights, { 12, 112, 7, 11, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_pirate_ship), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 155, 2, 1, }), diff --git a/src/openrct2/ride/thrill/meta/TopSpin.h b/src/openrct2/ride/thrill/meta/TopSpin.h index e21538b768..2451330ef4 100644 --- a/src/openrct2/ride/thrill/meta/TopSpin.h +++ b/src/openrct2/ride/thrill/meta/TopSpin.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor TopSpinRTD = SET_FIELD(Heights, { 16, 112, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_top_spin), SET_FIELD(RatingsMultipliers, { 24, 20, 10 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 145, 2, 1, }), diff --git a/src/openrct2/ride/thrill/meta/Twist.h b/src/openrct2/ride/thrill/meta/Twist.h index 9a17cd45ee..95cc9b22b5 100644 --- a/src/openrct2/ride/thrill/meta/Twist.h +++ b/src/openrct2/ride/thrill/meta/Twist.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor TwistRTD = SET_FIELD(Heights, { 12, 64, 3, 2, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_twist), SET_FIELD(RatingsMultipliers, { 40, 20, 10 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }), SET_FIELD(BuildCosts, { 90, 2, 1, }), diff --git a/src/openrct2/ride/transport/meta/Chairlift.h b/src/openrct2/ride/transport/meta/Chairlift.h index 0be8776957..82cbf0a901 100644 --- a/src/openrct2/ride/transport/meta/Chairlift.h +++ b/src/openrct2/ride/transport/meta/Chairlift.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor ChairliftRTD = SET_FIELD(Heights, { 40, 32, 28, 2, }), SET_FIELD(MaxMass, 18), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_chairlift), SET_FIELD(RatingsMultipliers, { 70, 10, 0 }), SET_FIELD(UpkeepCosts, { 60, 20, 0, 4, 3, 10 }), SET_FIELD(BuildCosts, { 65, 1, 30, }), diff --git a/src/openrct2/ride/transport/meta/Lift.h b/src/openrct2/ride/transport/meta/Lift.h index 0cb6014503..34b87fbc95 100644 --- a/src/openrct2/ride/transport/meta/Lift.h +++ b/src/openrct2/ride/transport/meta/Lift.h @@ -35,6 +35,7 @@ constexpr const RideTypeDescriptor LiftRTD = SET_FIELD(Heights, { 255, 32, 3, 2, }), SET_FIELD(MaxMass, 15), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_lift), SET_FIELD(RatingsMultipliers, { 80, 10, 0 }), SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }), SET_FIELD(BuildCosts, { 39, 0, 4, }), diff --git a/src/openrct2/ride/transport/meta/MiniatureRailway.h b/src/openrct2/ride/transport/meta/MiniatureRailway.h index 1654e16e19..350d6654e3 100644 --- a/src/openrct2/ride/transport/meta/MiniatureRailway.h +++ b/src/openrct2/ride/transport/meta/MiniatureRailway.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor MiniatureRailwayRTD = SET_FIELD(Heights, { 7, 32, 5, 9, }), SET_FIELD(MaxMass, 39), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_miniature_railway), SET_FIELD(RatingsMultipliers, { 70, 6, -10 }), SET_FIELD(UpkeepCosts, { 60, 20, 0, 10, 3, 5 }), SET_FIELD(BuildCosts, { 35, 6, 50, }), diff --git a/src/openrct2/ride/transport/meta/Monorail.h b/src/openrct2/ride/transport/meta/Monorail.h index 83a01d5c76..a0367ccb2d 100644 --- a/src/openrct2/ride/transport/meta/Monorail.h +++ b/src/openrct2/ride/transport/meta/Monorail.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor MonorailRTD = SET_FIELD(Heights, { 8, 32, 8, 9, }), SET_FIELD(MaxMass, 78), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_monorail), SET_FIELD(RatingsMultipliers, { 70, 6, -10 }), SET_FIELD(UpkeepCosts, { 65, 20, 0, 10, 3, 10 }), SET_FIELD(BuildCosts, { 42, 5, 50, }), diff --git a/src/openrct2/ride/transport/meta/SuspendedMonorail.h b/src/openrct2/ride/transport/meta/SuspendedMonorail.h index f396df315e..8817b42ef5 100644 --- a/src/openrct2/ride/transport/meta/SuspendedMonorail.h +++ b/src/openrct2/ride/transport/meta/SuspendedMonorail.h @@ -38,6 +38,7 @@ constexpr const RideTypeDescriptor SuspendedMonorailRTD = SET_FIELD(Heights, { 12, 40, 32, 8, }), SET_FIELD(MaxMass, 78), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_suspended_monorail), SET_FIELD(RatingsMultipliers, { 70, 6, -10 }), SET_FIELD(UpkeepCosts, { 70, 20, 0, 10, 3, 10 }), SET_FIELD(BuildCosts, { 65, 5, 50, }), diff --git a/src/openrct2/ride/water/meta/BoatHire.h b/src/openrct2/ride/water/meta/BoatHire.h index efc56f1812..6a483be000 100644 --- a/src/openrct2/ride/water/meta/BoatHire.h +++ b/src/openrct2/ride/water/meta/BoatHire.h @@ -34,6 +34,7 @@ constexpr const RideTypeDescriptor BoatHireRTD = SET_FIELD(Heights, { 255, 16, 0, 3, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_boat_hire), SET_FIELD(RatingsMultipliers, { 70, 6, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 4, 0, 0 }), SET_FIELD(BuildCosts, { 55, 5, 5, }), diff --git a/src/openrct2/ride/water/meta/DinghySlide.h b/src/openrct2/ride/water/meta/DinghySlide.h index 45d8977ab4..11f397b59f 100644 --- a/src/openrct2/ride/water/meta/DinghySlide.h +++ b/src/openrct2/ride/water/meta/DinghySlide.h @@ -38,6 +38,7 @@ constexpr const RideTypeDescriptor DinghySlideRTD = SET_FIELD(Heights, { 15, 24, 5, 7, }), SET_FIELD(MaxMass, 5), SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_dinghy_slide), SET_FIELD(RatingsMultipliers, { 50, 30, 10 }), SET_FIELD(UpkeepCosts, { 40, 20, 80, 4, 3, 10 }), SET_FIELD(BuildCosts, { 40, 4, 40, }), diff --git a/src/openrct2/ride/water/meta/LogFlume.h b/src/openrct2/ride/water/meta/LogFlume.h index c7fce9e5c2..7502acd282 100644 --- a/src/openrct2/ride/water/meta/LogFlume.h +++ b/src/openrct2/ride/water/meta/LogFlume.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor LogFlumeRTD = SET_FIELD(Heights, { 9, 24, 7, 9, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_log_flume), SET_FIELD(RatingsMultipliers, { 80, 34, 6 }), SET_FIELD(UpkeepCosts, { 80, 20, 0, 9, 0, 10 }), SET_FIELD(BuildCosts, { 45, 5, 40, }), diff --git a/src/openrct2/ride/water/meta/RiverRafts.h b/src/openrct2/ride/water/meta/RiverRafts.h index 4dc6da1609..3ad22990f1 100644 --- a/src/openrct2/ride/water/meta/RiverRafts.h +++ b/src/openrct2/ride/water/meta/RiverRafts.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor RiverRaftsRTD = SET_FIELD(Heights, { 12, 24, 7, 11, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_river_rafts), SET_FIELD(RatingsMultipliers, { 80, 34, 6 }), SET_FIELD(UpkeepCosts, { 50, 20, 0, 9, 0, 10 }), SET_FIELD(BuildCosts, { 40, 5, 30, }), diff --git a/src/openrct2/ride/water/meta/RiverRapids.h b/src/openrct2/ride/water/meta/RiverRapids.h index 83a229c8fb..759acb9313 100644 --- a/src/openrct2/ride/water/meta/RiverRapids.h +++ b/src/openrct2/ride/water/meta/RiverRapids.h @@ -38,6 +38,7 @@ constexpr const RideTypeDescriptor RiverRapidsRTD = SET_FIELD(Heights, { 9, 32, 14, 15, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_river_rapids), SET_FIELD(RatingsMultipliers, { 72, 26, 6 }), SET_FIELD(UpkeepCosts, { 82, 20, 0, 10, 0, 10 }), SET_FIELD(BuildCosts, { 62, 6, 40, }), diff --git a/src/openrct2/ride/water/meta/SplashBoats.h b/src/openrct2/ride/water/meta/SplashBoats.h index 32c3819b72..0abd564f70 100644 --- a/src/openrct2/ride/water/meta/SplashBoats.h +++ b/src/openrct2/ride/water/meta/SplashBoats.h @@ -37,6 +37,7 @@ constexpr const RideTypeDescriptor SplashBoatsRTD = SET_FIELD(Heights, { 16, 24, 7, 11, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_splash_boats), SET_FIELD(RatingsMultipliers, { 80, 34, 6 }), SET_FIELD(UpkeepCosts, { 70, 20, 0, 9, 0, 10 }), SET_FIELD(BuildCosts, { 57, 5, 30, }), diff --git a/src/openrct2/ride/water/meta/SubmarineRide.h b/src/openrct2/ride/water/meta/SubmarineRide.h index af1afea0e2..736c1b898f 100644 --- a/src/openrct2/ride/water/meta/SubmarineRide.h +++ b/src/openrct2/ride/water/meta/SubmarineRide.h @@ -36,6 +36,7 @@ constexpr const RideTypeDescriptor SubmarineRideRTD = SET_FIELD(Heights, { 255, 16, 0, 3, }), SET_FIELD(MaxMass, 255), SET_FIELD(LiftData, { SoundId::Null, 5, 5 }), + SET_FIELD(RatingsCalculationFunction, ride_ratings_calculate_submarine_ride), SET_FIELD(RatingsMultipliers, { 70, 6, 0 }), SET_FIELD(UpkeepCosts, { 50, 1, 0, 4, 0, 0 }), SET_FIELD(BuildCosts, { 70, 0, 5, }),