Move upkeep costs to RTD

This commit is contained in:
Gymnasiast 2020-04-19 21:00:21 +02:00
parent f17014877a
commit d2b71392cf
No known key found for this signature in database
GPG Key ID: DBFFF47AB2CA3EDD
82 changed files with 111 additions and 123 deletions

View File

@ -110,100 +110,6 @@
#include <iterator>
// clang-format off
const UpkeepCosts UpkeepCostsDescriptor[RIDE_TYPE_COUNT] = {
{ 41, 20, 80, 10, 3, 10, }, // RIDE_TYPE_SPIRAL_ROLLER_COASTER
{ 40, 20, 80, 10, 3, 10, }, // RIDE_TYPE_STAND_UP_ROLLER_COASTER
{ 40, 20, 80, 20, 3, 10, }, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER
{ 40, 20, 80, 13, 3, 10, }, // RIDE_TYPE_INVERTED_ROLLER_COASTER
{ 40, 20, 80, 8, 3, 5, }, // RIDE_TYPE_JUNIOR_ROLLER_COASTER
{ 60, 20, 0, 10, 3, 5, }, // RIDE_TYPE_MINIATURE_RAILWAY
{ 65, 20, 0, 10, 3, 10, }, // RIDE_TYPE_MONORAIL
{ 40, 20, 80, 10, 3, 10, }, // RIDE_TYPE_MINI_SUSPENDED_COASTER
{ 50, 1, 0, 4, 0, 0, } , // RIDE_TYPE_BOAT_HIRE
{ 40, 20, 80, 9, 3, 10, }, // RIDE_TYPE_WOODEN_WILD_MOUSE
{ 40, 20, 80, 10, 3, 10, }, // RIDE_TYPE_STEEPLECHASE
{ 70, 20, 0, 8, 3, 5, }, // RIDE_TYPE_CAR_RIDE
{ 50, 20, 0, 10, 0, 0, }, // RIDE_TYPE_LAUNCHED_FREEFALL
{ 40, 20, 80, 10, 3, 10, }, // RIDE_TYPE_BOBSLEIGH_COASTER
{ 50, 20, 0, 10, 0, 0, }, // RIDE_TYPE_OBSERVATION_TOWER
{ 40, 20, 80, 10, 3, 10, }, // RIDE_TYPE_LOOPING_ROLLER_COASTER
{ 40, 20, 80, 4, 3, 10, }, // RIDE_TYPE_DINGHY_SLIDE
{ 40, 20, 80, 10, 3, 10, }, // RIDE_TYPE_MINE_TRAIN_COASTER
{ 60, 20, 0, 4, 3, 10, }, // RIDE_TYPE_CHAIRLIFT
{ 40, 20, 80, 11, 3, 10, }, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_MAZE
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_SPIRAL_SLIDE
{ 50, 20, 0, 8, 0, 0, }, // RIDE_TYPE_GO_KARTS
{ 80, 20, 0, 9, 0, 10, }, // RIDE_TYPE_LOG_FLUME
{ 82, 20, 0, 10, 0, 10, }, // RIDE_TYPE_RIVER_RAPIDS
{ 50, 1, 0, 5, 0, 0, } , // RIDE_TYPE_DODGEMS
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_SWINGING_SHIP
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_SWINGING_INVERTER_SHIP
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_FOOD_STALL
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_1D
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_DRINK_STALL
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_1F
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_SHOP
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_MERRY_GO_ROUND
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_22
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_INFORMATION_KIOSK
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_TOILETS
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_FERRIS_WHEEL
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_MOTION_SIMULATOR
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_3D_CINEMA
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_TOP_SPIN
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_SPACE_RINGS
{ 80, 20, 0, 0, 0, 10, }, // RIDE_TYPE_REVERSE_FREEFALL_COASTER
{ 50, 20, 0, 10, 0, 0, }, // RIDE_TYPE_LIFT
{ 44, 20, 80, 11, 3, 10, }, // RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER
{ 40, 1, 0, 0, 0, 0, } , // RIDE_TYPE_CASH_MACHINE
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_TWIST
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_HAUNTED_HOUSE
{ 45, 1, 0, 0, 0, 0, } , // RIDE_TYPE_FIRST_AID
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_CIRCUS
{ 80, 20, 0, 8, 3, 5, }, // RIDE_TYPE_GHOST_TRAIN
{ 43, 20, 80, 11, 3, 10, }, // RIDE_TYPE_TWISTER_ROLLER_COASTER
{ 40, 20, 80, 10, 3, 10, }, // RIDE_TYPE_WOODEN_ROLLER_COASTER
{ 39, 20, 80, 10, 3, 10, }, // RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER
{ 40, 20, 80, 9, 3, 10, }, // RIDE_TYPE_STEEL_WILD_MOUSE
{ 75, 20, 90, 11, 3, 15, }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER
{ 75, 20, 90, 11, 3, 15, }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER_
{ 49, 20, 90, 11, 3, 15, }, // RIDE_TYPE_FLYING_ROLLER_COASTER
{ 49, 20, 90, 11, 3, 15, }, // RIDE_TYPE_FLYING_ROLLER_COASTER_ALT
{ 39, 20, 80, 10, 3, 10, }, // RIDE_TYPE_VIRGINIA_REEL
{ 70, 20, 0, 9, 0, 10, }, // RIDE_TYPE_SPLASH_BOATS
{ 70, 20, 0, 8, 3, 5, }, // RIDE_TYPE_MINI_HELICOPTERS
{ 49, 20, 90, 11, 3, 15, }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER
{ 70, 20, 0, 10, 3, 10, }, // RIDE_TYPE_SUSPENDED_MONORAIL
{ 49, 20, 90, 11, 3, 15, }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER_ALT
{ 39, 20, 80, 10, 3, 10, }, // RIDE_TYPE_REVERSER_ROLLER_COASTER
{ 47, 20, 80, 11, 3, 10, }, // RIDE_TYPE_HEARTLINE_TWISTER_COASTER
{ 30, 20, 80, 11, 3, 10, }, // RIDE_TYPE_MINI_GOLF
{ 10, 20, 80, 12, 3, 40, }, // RIDE_TYPE_GIGA_COASTER
{ 50, 20, 0, 10, 0, 0, }, // RIDE_TYPE_ROTO_DROP
{ 90, 1, 0, 5, 0, 0, } , // RIDE_TYPE_FLYING_SAUCERS
{ 30, 1, 0, 0, 0, 0, } , // RIDE_TYPE_CROOKED_HOUSE
{ 47, 20, 0, 8, 3, 5, }, // RIDE_TYPE_MONORAIL_CYCLES
{ 40, 20, 80, 13, 3, 10, }, // RIDE_TYPE_COMPACT_INVERTED_COASTER
{ 60, 20, 80, 8, 3, 10, }, // RIDE_TYPE_WATER_COASTER
{ 90, 20, 0, 0, 0, 10, }, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
{ 40, 20, 80, 9, 3, 10, }, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_MAGIC_CARPET
{ 50, 1, 0, 4, 0, 0, } , // RIDE_TYPE_SUBMARINE_RIDE
{ 50, 20, 0, 9, 0, 10, }, // RIDE_TYPE_RIVER_RAFTS
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_50
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_ENTERPRISE
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_52
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_53
{ 50, 1, 0, 0, 0, 0, } , // RIDE_TYPE_54
{ 40, 20, 80, 11, 3, 10, }, // RIDE_TYPE_55
{ 180, 20, 80, 11, 3, 10, }, // RIDE_TYPE_INVERTED_IMPULSE_COASTER
{ 35, 20, 80, 8, 3, 10, }, // RIDE_TYPE_MINI_ROLLER_COASTER
{ 50, 20, 80, 10, 3, 10, }, // RIDE_TYPE_MINE_RIDE
{ 42, 20, 80, 9, 3, 10, }, // RIDE_TYPE_59
{ 42, 20, 80, 9, 3, 10, }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
};
// Data at 0x0097D21E
const uint8_t rideBonusValue[RIDE_TYPE_COUNT] = {
85, // 00 Spiral Roller coaster
@ -1726,6 +1632,7 @@ static constexpr const RideTypeDescriptor DummyRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -82,6 +82,27 @@ struct rct_ride_lift_data
uint8_t maximum_speed;
};
struct UpkeepCostsDescriptor
{
/**
* Data about ride running costs. This is widely adjusted by the upkeep
* function, so values that don't make much sense here (a roller coaster having
* cheaper upkeep than a car ride) are fixed later on.
*
* Data generation script: https://gist.github.com/kevinburke/6bcf4a8fcc95faad7bac
*/
uint8_t BaseCost;
/** rct2: 0x0097E3AC */
uint8_t TrackLengthMultiplier;
uint8_t CostPerTrackPiece;
/** rct2: 0x0097E3B4 */
uint8_t CostPerTrain;
/** rct2: 0x0097E3B6 */
uint8_t CostPerCar;
/** rct2: 0x0097E3B8 */
uint8_t CostPerStation;
};
struct RideTypeDescriptor
{
uint8_t AlternateType;
@ -99,6 +120,7 @@ struct RideTypeDescriptor
uint8_t AvailableBreakdowns;
/* rct2: 0x0097D7C8, 0x0097D7C9, 0x0097D7CA */
rct_ride_lift_data LiftData;
UpkeepCostsDescriptor UpkeepCosts;
bool HasFlag(uint64_t flag) const;
uint64_t GetAvailableTrackPieces() const;
@ -197,29 +219,6 @@ constexpr const uint64_t RIDE_TYPE_FLAGS_COMMON_COASTER = RIDE_TYPE_FLAG_HAS_G_F
constexpr const uint64_t RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT = RIDE_TYPE_FLAG_SHOW_IN_TRACK_DESIGNER
| RIDE_TYPE_FLAG_HAS_AIR_TIME | RIDE_TYPE_FLAG_HAS_ENTRANCE_EXIT;
struct UpkeepCosts
{
/**
* Data about ride running costs. This is widely adjusted by the upkeep
* function, so values that don't make much sense here (a roller coaster having
* cheaper upkeep than a car ride) are fixed later on.
*
* Data generation script: https://gist.github.com/kevinburke/6bcf4a8fcc95faad7bac
*/
uint8_t BaseCost;
/** rct2: 0x0097E3AC */
uint8_t TrackLengthMultiplier;
uint8_t CostPerTrackPiece;
/** rct2: 0x0097E3B4 */
uint8_t CostPerTrain;
/** rct2: 0x0097E3B6 */
uint8_t CostPerCar;
/** rct2: 0x0097E3B8 */
uint8_t CostPerStation;
};
extern const UpkeepCosts UpkeepCostsDescriptor[RIDE_TYPE_COUNT];
extern const uint8_t rideBonusValue[RIDE_TYPE_COUNT];
// clang-format off

View File

@ -867,9 +867,9 @@ static void ride_ratings_calculate_value(Ride* ride)
static uint16_t ride_compute_upkeep(Ride* ride)
{
// data stored at 0x0057E3A8, incrementing 18 bytes at a time
uint16_t upkeep = UpkeepCostsDescriptor[ride->type].BaseCost;
uint16_t upkeep = RideTypeDescriptors[ride->type].UpkeepCosts.BaseCost;
uint16_t trackCost = UpkeepCostsDescriptor[ride->type].CostPerTrackPiece;
uint16_t trackCost = RideTypeDescriptors[ride->type].UpkeepCosts.CostPerTrackPiece;
uint8_t dropFactor = ride->drops;
dropFactor >>= 6;
@ -882,7 +882,7 @@ static uint16_t ride_compute_upkeep(Ride* ride)
// rides that had tracks. The 0's were fixed rides like crooked house or
// dodgems.
// Data source is 0x0097E3AC
totalLength *= UpkeepCostsDescriptor[ride->type].TrackLengthMultiplier;
totalLength *= RideTypeDescriptors[ride->type].UpkeepCosts.TrackLengthMultiplier;
upkeep += static_cast<uint16_t>(totalLength >> 10);
if (ride->lifecycle_flags & RIDE_LIFECYCLE_ON_RIDE_PHOTO)
@ -909,12 +909,12 @@ static uint16_t ride_compute_upkeep(Ride* ride)
// various variables set on the ride itself.
// https://gist.github.com/kevinburke/e19b803cd2769d96c540
upkeep += UpkeepCostsDescriptor[ride->type].CostPerTrain * ride->num_vehicles;
upkeep += UpkeepCostsDescriptor[ride->type].CostPerCar * ride->num_cars_per_train;
upkeep += RideTypeDescriptors[ride->type].UpkeepCosts.CostPerTrain * ride->num_vehicles;
upkeep += RideTypeDescriptors[ride->type].UpkeepCosts.CostPerCar * ride->num_cars_per_train;
// slight upkeep boosts for some rides - 5 for mini railway, 10 for log
// flume/rapids, 10 for roller coaster, 28 for giga coaster
upkeep += UpkeepCostsDescriptor[ride->type].CostPerStation * ride->num_stations;
upkeep += RideTypeDescriptors[ride->type].UpkeepCosts.CostPerStation * ride->num_stations;
if (ride->mode == RIDE_MODE_REVERSE_INCLINE_LAUNCHED_SHUTTLE)
{

View File

@ -25,5 +25,6 @@ constexpr const RideTypeDescriptor AirPoweredVerticalCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 90, 20, 0, 0, 0, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor BobsleighCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 5 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor CompactInvertedCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 13, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor CorkscrewRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftArrow, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 11, 3, 10 }),
};
// clang-format on

View File

@ -29,6 +29,7 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftBM, 4, 6 }),
SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }),
};
// Inverted variant
@ -46,5 +47,6 @@ constexpr const RideTypeDescriptor FlyingRollerCoasterAltRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftBM, 4, 6 }),
SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor GigaCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 5, 8 }),
SET_FIELD(UpkeepCosts, { 10, 20, 80, 12, 3, 40 }),
};
// clang-format on

View File

@ -26,5 +26,6 @@ constexpr const RideTypeDescriptor HeartlineTwisterCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 47, 20, 80, 11, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor InvertedHairpinCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftWildMouse, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 9, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor InvertedImpulseCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 7 }),
SET_FIELD(UpkeepCosts, { 180, 20, 80, 11, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor InvertedRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftBM, 5, 7 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 13, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor JuniorRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 8, 3, 5 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor LIMLaunchedRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::Null, 4, 6 }),
SET_FIELD(UpkeepCosts, { 42, 20, 80, 9, 3, 10 }),
};
// clang-format on

View File

@ -27,6 +27,7 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }),
};
constexpr const RideTypeDescriptor LayDownRollerCoasterAltRTD =
@ -42,5 +43,6 @@ constexpr const RideTypeDescriptor LayDownRollerCoasterAltRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 49, 20, 90, 11, 3, 15 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor LoopingRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor MineRideRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor MineTrainCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftArrow, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor MiniRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 35, 20, 80, 8, 3, 10 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor MiniSuspendedCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 5 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -28,6 +28,7 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }),
SET_FIELD(UpkeepCosts, { 75, 20, 90, 11, 3, 15 }),
};
constexpr const RideTypeDescriptor MultiDimensionRollerCoasterAltRTD =
@ -43,5 +44,6 @@ constexpr const RideTypeDescriptor MultiDimensionRollerCoasterAltRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 6 }),
SET_FIELD(UpkeepCosts, { 75, 20, 90, 11, 3, 15 }),
};
// clang-format on

View File

@ -25,5 +25,6 @@ constexpr const RideTypeDescriptor ReverseFreefallCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 80, 20, 0, 0, 0, 10 }),
};
// clang-format on

View File

@ -26,5 +26,6 @@ constexpr const RideTypeDescriptor ReverserRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 3, 4 }),
SET_FIELD(UpkeepCosts, { 39, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor SideFrictionRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftWood, 3, 4 }),
SET_FIELD(UpkeepCosts, { 39, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor SpiralRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 7, 7 }),
SET_FIELD(UpkeepCosts, { 41, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor StandUpRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor SteelWildMouseRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftWildMouse, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 9, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor SteeplechaseRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 5 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor SuspendedSwingingCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 20, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor TwisterRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftBM, 5, 8 }),
SET_FIELD(UpkeepCosts, { 43, 20, 80, 11, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor VerticalDropCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftBM, 4, 5 }),
SET_FIELD(UpkeepCosts, { 44, 20, 80, 11, 3, 10 }),
};
// clang-format on

View File

@ -26,5 +26,6 @@ constexpr const RideTypeDescriptor VirginiaReelRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 3, 4 }),
SET_FIELD(UpkeepCosts, { 39, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor WaterCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 6 }),
SET_FIELD(UpkeepCosts, { 60, 20, 80, 8, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor WoodenRollerCoasterRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftWood, 5, 7 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 10, 3, 10 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor WoodenWildMouseRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE)),
SET_FIELD(LiftData, { SoundId::LiftClassic, 4, 5 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 9, 3, 10 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor CarRideRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 70, 20, 0, 8, 3, 5 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor CircusRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor CrookedHouseRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 30, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor DodgemsRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 5, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor FerrisWheelRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_WHEEL, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor FlyingSaucersRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 90, 1, 0, 5, 0, 0 }),
};
// clang-format on

View File

@ -30,5 +30,6 @@ constexpr const RideTypeDescriptor GhostTrainRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 80, 20, 0, 8, 3, 5 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor HauntedHouseRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -26,5 +26,6 @@ constexpr const RideTypeDescriptor MazeRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor MerryGoRoundRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor MiniGolfRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_PLAYER, RIDE_COMPONENT_TYPE_COURSE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 30, 20, 80, 11, 3, 10 }),
};
// clang-format on

View File

@ -30,5 +30,6 @@ constexpr const RideTypeDescriptor MiniHelicoptersRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 70, 20, 0, 8, 3, 5 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor MonorailCyclesRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 47, 20, 0, 8, 3, 5 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor ObservationTowerRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CABIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor SpaceRingsRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_RING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor SpiralSlideRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -26,5 +26,6 @@ constexpr const RideTypeDescriptor CashMachineRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 40, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor DrinkStallRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor FirstAidRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 45, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor FoodStallRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor InformationKioskRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor ShopRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor ToiletsRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, 0),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor CinemaRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BUILDING, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor EnterpriseRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_WHEEL, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor GoKartsRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 20, 0, 8, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor LaunchedFreefallRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor MagicCarpetRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor MotionSimulatorRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor RotoDropRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor SwingingInverterShipRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_SHIP, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor SwingingShipRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_SHIP, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor TopSpinRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor TwistRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STRUCTURE, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 0, 0, 0 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor ChairliftRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CAR, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 60, 20, 0, 4, 3, 10 }),
};
// clang-format on

View File

@ -28,5 +28,6 @@ constexpr const RideTypeDescriptor LiftRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_CABIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_DOORS_STUCK_CLOSED) | (1 << BREAKDOWN_DOORS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 20, 0, 10, 0, 0 }),
};
// clang-format on

View File

@ -30,5 +30,6 @@ constexpr const RideTypeDescriptor MiniatureRailwayRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 60, 20, 0, 10, 3, 5 }),
};
// clang-format on

View File

@ -30,5 +30,6 @@ constexpr const RideTypeDescriptor MonorailRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_DOORS_STUCK_CLOSED) | (1 << BREAKDOWN_DOORS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 65, 20, 0, 10, 3, 10 }),
};
// clang-format on

View File

@ -31,5 +31,6 @@ constexpr const RideTypeDescriptor SuspendedMonorailRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_TRAIN, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_DOORS_STUCK_CLOSED) | (1 << BREAKDOWN_DOORS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 70, 20, 0, 10, 3, 10 }),
};
// clang-format on

View File

@ -27,5 +27,6 @@ constexpr const RideTypeDescriptor BoatHireRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_DOCKING_PLATFORM, RIDE_COMPONENT_TYPE_DOCKING_PLATFORM }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 4, 0, 0 }),
};
// clang-format on

View File

@ -31,5 +31,6 @@ constexpr const RideTypeDescriptor DinghySlideRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::LiftFrictionWheels, 4, 5 }),
SET_FIELD(UpkeepCosts, { 40, 20, 80, 4, 3, 10 }),
};
// clang-format on

View File

@ -30,5 +30,6 @@ constexpr const RideTypeDescriptor LogFlumeRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 80, 20, 0, 9, 0, 10 }),
};
// clang-format on

View File

@ -30,5 +30,6 @@ constexpr const RideTypeDescriptor RiverRaftsRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 20, 0, 9, 0, 10 }),
};
// clang-format on

View File

@ -31,5 +31,6 @@ constexpr const RideTypeDescriptor RiverRapidsRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 82, 20, 0, 10, 0, 10 }),
};
// clang-format on

View File

@ -30,5 +30,6 @@ constexpr const RideTypeDescriptor SplashBoatsRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_STATION }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_CONTROL_FAILURE)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 70, 20, 0, 9, 0, 10 }),
};
// clang-format on

View File

@ -29,5 +29,6 @@ constexpr const RideTypeDescriptor SubmarineRideRTD =
SET_FIELD(NameConvention, { RIDE_COMPONENT_TYPE_BOAT, RIDE_COMPONENT_TYPE_TRACK, RIDE_COMPONENT_TYPE_DOCKING_PLATFORM }),
SET_FIELD(AvailableBreakdowns, (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION)),
SET_FIELD(LiftData, { SoundId::Null, 5, 5 }),
SET_FIELD(UpkeepCosts, { 50, 1, 0, 4, 0, 0 }),
};
// clang-format on