1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Merge RideRatingsCalculateFuncTable in RideTypeDescriptor

This commit is contained in:
frutiemax
2020-06-17 18:10:08 -04:00
parent f6eb9f1cc5
commit 642f4f83a8
82 changed files with 250 additions and 180 deletions

View File

@@ -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 }),

View File

@@ -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

View File

@@ -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);

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),

View File

@@ -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, }),