Name several ride construction flags, clean up ride_data.c, fix "mini coaster" boosters

This commit is contained in:
Michael Steenbeek 2017-06-25 12:14:39 +02:00 committed by GitHub
parent f9be3c0046
commit 8333266ca5
11 changed files with 180 additions and 188 deletions

View File

@ -56,7 +56,7 @@ extern "C" {
// This define specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "19"
#define NETWORK_STREAM_VERSION "20"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
#ifdef __cplusplus

View File

@ -217,8 +217,8 @@ static void ride_update(sint32 rideIndex);
static void ride_update_vehicle_colours(sint32 rideIndex);
static void ride_set_vehicle_colours_to_random_preset(rct_ride *ride, uint8 preset_index);
void loc_6DDF9C(rct_ride *ride, rct_map_element *mapElement);
bool sub_6CA2DF(sint32 *trackType, sint32 *trackDirection, sint32 *rideIndex, sint32 *edxRS16, sint32 *x, sint32 *y, sint32 *z, sint32 *properties);
money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32 trackDirection, sint32 edxRS16, sint32 x, sint32 y, sint32 z);
bool sub_6CA2DF(sint32 *trackType, sint32 *trackDirection, sint32 *rideIndex, sint32 *_liftHillAndAlternativeState, sint32 *x, sint32 *y, sint32 *z, sint32 *properties);
money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32 trackDirection, sint32 liftHillAndAlternativeState, sint32 x, sint32 y, sint32 z);
static void ride_set_name_to_track_default(rct_ride * ride, rct_ride_entry * rideEntry);
static void ride_set_name_to_vehicle_default(rct_ride * ride, rct_ride_entry * rideEntry);
@ -1343,11 +1343,11 @@ sint32 sub_6C683D(sint32* x, sint32* y, sint32* z, sint32 direction, sint32 type
void ride_restore_provisional_track_piece()
{
if (_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_TRACK) {
sint32 x, y, z, direction, type, rideIndex, edxRS16;
if (sub_6CA2DF(&type, &direction, &rideIndex, &edxRS16, &x, &y, &z, NULL)) {
sint32 x, y, z, direction, type, rideIndex, liftHillAndAlternativeState;
if (sub_6CA2DF(&type, &direction, &rideIndex, &liftHillAndAlternativeState, &x, &y, &z, NULL)) {
ride_construction_remove_ghosts();
} else {
_currentTrackPrice = place_provisional_track_piece(rideIndex, type, direction, edxRS16, x, y, z);
_currentTrackPrice = place_provisional_track_piece(rideIndex, type, direction, liftHillAndAlternativeState, x, y, z);
window_ride_construction_update_active_elements();
}
}

View File

@ -942,6 +942,8 @@ extern const rct_ride_properties RideProperties[RIDE_TYPE_COUNT];
#define TURN_MASK_3_ELEMENTS 0x0700
#define TURN_MASK_4_PLUS_ELEMENTS 0xF800
#define CONSTRUCTION_LIFT_HILL_SELECTED 1
/** Helper macros until rides are stored in this module. */
rct_ride *get_ride(sint32 index);
rct_ride_entry *get_ride_entry(sint32 index);

View File

@ -1126,97 +1126,97 @@ const rct_ride_entrance_definition RideEntranceDefinitions[RIDE_ENTRANCE_STYLE_C
// rct2: 0x0097D4F0, 0x0097D4F1, 0x0097D4F2, 0x0097D4F4, 0x0097D4F5
const rct_ride_data_4 RideData4[RIDE_TYPE_COUNT] = {
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_3, 0 }, // RIDE_TYPE_SPIRAL_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_STAND_UP_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_INVERTED_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_0 | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_JUNIOR_ROLLER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINIATURE_RAILWAY
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MONORAIL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_MINI_SUSPENDED_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_BOAT_RIDE
{ 20, 20, RIDE_TYPE_FLAG4_0 | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_WOODEN_WILD_MOUSE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_STEEPLECHASE
{ 15, 0, RIDE_TYPE_FLAG4_0 | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_CAR_RIDE
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_LAUNCHED_FREEFALL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_BOBSLEIGH_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_OBSERVATION_TOWER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_LOOPING_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_DINGHY_SLIDE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_MINE_TRAIN_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_CHAIRLIFT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MAZE
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_SPIRAL_SLIDE
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_GO_KARTS
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_LOG_FLUME
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_RIVER_RAPIDS
{ 15, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_DODGEMS_BEAT, 0 }, // RIDE_TYPE_DODGEMS
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_PIRATES, 0 }, // RIDE_TYPE_PIRATE_SHIP
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_SWINGING_INVERTER_SHIP
{ 9, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_FOOD_STALL
{ 15, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_1D
{ 12, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_DRINK_STALL
{ 8, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_1F
{ 15, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_SHOP
{ 10, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_FAIRGROUND_ORGAN, 0 }, // RIDE_TYPE_MERRY_GO_ROUND
{ 9, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_22
{ 6, 25, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_INFORMATION_KIOSK
{ 0, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_TOILETS
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_FERRIS_WHEEL
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_MOTION_SIMULATOR
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_3D_CINEMA
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_TOP_SPIN
{ 5, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_SPACE_RINGS
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_REVERSE_FREEFALL_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_LIFT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER
{ 0, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_CASH_MACHINE
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_TWIST
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_HORROR, 0 }, // RIDE_TYPE_HAUNTED_HOUSE
{ 0, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_FIRST_AID
{ 15, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_CIRCUS_SHOW, 0 }, // RIDE_TYPE_CIRCUS_SHOW
{ 15, 0, RIDE_TYPE_FLAG4_0 | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_HORROR, 0 }, // RIDE_TYPE_GHOST_TRAIN
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_TWISTER_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_WOODEN_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_0 | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_WILD_MOUSE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_3, RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER_ALT }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER_ALT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG4_START_CONSTRUCTION_INVERTED, MUSIC_STYLE_ROCK, RIDE_TYPE_FLYING_ROLLER_COASTER_ALT }, // RIDE_TYPE_FLYING_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG4_START_CONSTRUCTION_INVERTED, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_FLYING_ROLLER_COASTER_ALT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_VIRGINIA_REEL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_SPLASH_BOATS
{ 15, 0, RIDE_TYPE_FLAG4_0 | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINI_HELICOPTERS
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, RIDE_TYPE_LAY_DOWN_ROLLER_COASTER_ALT }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_SUSPENDED_MONORAIL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER_ALT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_REVERSER_ROLLER_COASTER
{ 15, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_HEARTLINE_TWISTER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINI_GOLF
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_ALLOW_CABLE_LIFT_HILL | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_3, 0 }, // RIDE_TYPE_GIGA_COASTER
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_ROTO_DROP
{ 15, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_FLYING_SAUCERS
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_CROOKED_HOUSE
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MONORAIL_CYCLES
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_COMPACT_INVERTED_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_WATER_COASTER
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_EGYPTIAN, 0 }, // RIDE_TYPE_MAGIC_CARPET
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_SUBMARINE_RIDE
{ 10, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_RIVER_RAFTS
{ 7, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_50
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_ENTERPRISE
{ 12, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_52
{ 15, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_53
{ 12, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_54
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_55
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_INVERTED_IMPULSE_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINI_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_MINE_RIDE
{ 20, 20, RIDE_TYPE_FLAG4_0 | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_59
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_3, 0 }, // RIDE_TYPE_SPIRAL_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_STAND_UP_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_SUSPENDED_SWINGING_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_INVERTED_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_JUNIOR_ROLLER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINIATURE_RAILWAY
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MONORAIL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_MINI_SUSPENDED_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_BOAT_RIDE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_WOODEN_WILD_MOUSE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_STEEPLECHASE
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_CAR_RIDE
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_LAUNCHED_FREEFALL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_BOBSLEIGH_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_OBSERVATION_TOWER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_LOOPING_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_DINGHY_SLIDE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_MINE_TRAIN_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_CHAIRLIFT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_CORKSCREW_ROLLER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MAZE
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_SPIRAL_SLIDE
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_GO_KARTS
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_LOG_FLUME
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_RIVER_RAPIDS
{ 15, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_DODGEMS_BEAT, 0 }, // RIDE_TYPE_DODGEMS
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_PIRATES, 0 }, // RIDE_TYPE_PIRATE_SHIP
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_SWINGING_INVERTER_SHIP
{ 9, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_FOOD_STALL
{ 15, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_1D
{ 12, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_DRINK_STALL
{ 8, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_1F
{ 15, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_SHOP
{ 10, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_FAIRGROUND_ORGAN, 0 }, // RIDE_TYPE_MERRY_GO_ROUND
{ 9, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_22
{ 6, 25, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_INFORMATION_KIOSK
{ 0, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_TOILETS
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_FERRIS_WHEEL
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_MOTION_SIMULATOR
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_3D_CINEMA
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_TOP_SPIN
{ 5, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_SPACE_RINGS
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_REVERSE_FREEFALL_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_LIFT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_VERTICAL_DROP_ROLLER_COASTER
{ 0, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_CASH_MACHINE
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_TWIST
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_HORROR, 0 }, // RIDE_TYPE_HAUNTED_HOUSE
{ 0, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_FIRST_AID
{ 15, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_CIRCUS_SHOW, 0 }, // RIDE_TYPE_CIRCUS_SHOW
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_HORROR, 0 }, // RIDE_TYPE_GHOST_TRAIN
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_TWISTER_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_WOODEN_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_SIDE_FRICTION_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_WILD_MOUSE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_3, RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER_ALT }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_MULTI_DIMENSION_ROLLER_COASTER_ALT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG4_START_CONSTRUCTION_INVERTED, MUSIC_STYLE_ROCK, RIDE_TYPE_FLYING_ROLLER_COASTER_ALT }, // RIDE_TYPE_FLYING_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT | RIDE_TYPE_FLAG4_START_CONSTRUCTION_INVERTED, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_FLYING_ROLLER_COASTER_ALT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_VIRGINIA_REEL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_SPLASH_BOATS
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINI_HELICOPTERS
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, RIDE_TYPE_LAY_DOWN_ROLLER_COASTER_ALT }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_TRANSPORT_RIDE, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_SUSPENDED_MONORAIL
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_LAY_DOWN_ROLLER_COASTER_ALT
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_REVERSER_ROLLER_COASTER
{ 15, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_HEARTLINE_TWISTER_COASTER
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINI_GOLF
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_ALLOW_CABLE_LIFT_HILL | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_3, 0 }, // RIDE_TYPE_GIGA_COASTER
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_ROTO_DROP
{ 15, 0, RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_FLYING_SAUCERS
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_CROOKED_HOUSE
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MONORAIL_CYCLES
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_TECHNO, 0 }, // RIDE_TYPE_COMPACT_INVERTED_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_WATER_COASTER
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_AIR_POWERED_VERTICAL_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_INVERTED_HAIRPIN_COASTER
{ 15, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_EGYPTIAN, 0 }, // RIDE_TYPE_MAGIC_CARPET
{ 10, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS, MUSIC_STYLE_WATER, 0 }, // RIDE_TYPE_SUBMARINE_RIDE
{ 10, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_ALLOW_MORE_VEHICLES_THAN_STATION_FITS | RIDE_TYPE_FLAG4_SLIGHTLY_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_RIVER_RAFTS
{ 7, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_50
{ 20, 0, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_SINGLE_SESSION | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_ENTERPRISE
{ 12, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_52
{ 15, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_53
{ 12, 0, 0, MUSIC_STYLE_GENTLE, 0 }, // RIDE_TYPE_54
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_55
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_INVERTED_IMPULSE_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_SUMMER, 0 }, // RIDE_TYPE_MINI_ROLLER_COASTER
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_WILD_WEST, 0 }, // RIDE_TYPE_MINE_RIDE
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK | RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK_STYLE_2, 0 }, // RIDE_TYPE_59
{ 20, 20, RIDE_TYPE_FLAG4_ALLOW_MUSIC | RIDE_TYPE_FLAG4_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG4_HAS_ENTRANCE_EXIT | RIDE_TYPE_FLAG4_HAS_AIR_TIME | RIDE_TYPE_FLAG4_ALLOW_MULTIPLE_CIRCUITS | RIDE_TYPE_FLAG4_SHOW_IN_TRACK_DESIGNER | RIDE_TYPE_FLAG4_INTERESTING_TO_LOOK_AT, MUSIC_STYLE_ROCK, 0 }, // RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER
};
// rct2: 0x0097DD78
@ -2409,7 +2409,7 @@ const rct_ride_properties RideProperties[RIDE_TYPE_COUNT] = {
RIDE_TYPE_FLAG_HAS_DATA_LOGGING | RIDE_TYPE_FLAG_HAS_DROPS | RIDE_TYPE_FLAG_HAS_LOAD_OPTIONS |
RIDE_TYPE_FLAG_PEEP_WILL_RIDE_AGAIN | RIDE_TYPE_FLAG_HAS_VEHICLE_COLOURS | RIDE_TYPE_FLAG_CHECK_FOR_STALLING | RIDE_TYPE_FLAG_HAS_TRACK | RIDE_TYPE_FLAG_HAS_LARGE_CURVES |
RIDE_TYPE_FLAG_SUPPORTS_MULTIPLE_TRACK_COLOUR,
0, 0, 0, 0, 0, 0 }, // RIDE_TYPE_MINI_ROLLER_COASTER
0, 0, 0, 0, 68, 1 }, // RIDE_TYPE_MINI_ROLLER_COASTER
{RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_MAIN | RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_ADDITIONAL |
RIDE_TYPE_FLAG_HAS_TRACK_COLOUR_SUPPORTS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
RIDE_TYPE_FLAG_CAN_SYNCHRONISE_ADJACENT_STATIONS | RIDE_TYPE_FLAG_HAS_G_FORCES |

View File

@ -103,7 +103,7 @@ typedef struct rct_ride_lift_data {
} rct_ride_lift_data;
enum {
RIDE_TYPE_FLAG4_0 = (1 << 0),
RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK = (1 << 0),
RIDE_TYPE_FLAG4_MUSIC_ON_DEFAULT = (1 << 1),
RIDE_TYPE_FLAG4_ALLOW_MUSIC = (1 << 2),
RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE = (1 << 3), // Used by the Flying RC, Lay-down RC, Multi-dimension RC

View File

@ -914,7 +914,7 @@ static bool track_remove_station_element(sint32 x, sint32 y, sint32 z, sint32 di
return true;
}
static money32 track_place(sint32 rideIndex, sint32 type, sint32 originX, sint32 originY, sint32 originZ, sint32 direction, sint32 properties_1, sint32 properties_2, sint32 properties_3, sint32 edx_flags, sint32 flags)
static money32 track_place(sint32 rideIndex, sint32 type, sint32 originX, sint32 originY, sint32 originZ, sint32 direction, sint32 properties_1, sint32 properties_2, sint32 properties_3, sint32 liftHillAndAlternativeState, sint32 flags)
{
rct_ride *ride = get_ride(rideIndex);
if (ride == NULL)
@ -972,7 +972,7 @@ static money32 track_place(sint32 rideIndex, sint32 type, sint32 originX, sint32
return MONEY32_UNDEFINED;
}
}
if ((edx_flags & (1 << 0)) && !(enabledTrackPieces & (1ULL << TRACK_LIFT_HILL_STEEP)) && !gCheatsEnableChainLiftOnAllTrack) {
if ((liftHillAndAlternativeState & CONSTRUCTION_LIFT_HILL_SELECTED) && !(enabledTrackPieces & (1ULL << TRACK_LIFT_HILL_STEEP)) && !gCheatsEnableChainLiftOnAllTrack) {
if (TrackFlags[type] & TRACK_ELEM_FLAG_0400) {
gGameCommandErrorText = STR_TOO_STEEP_FOR_LIFT_HILL;
return MONEY32_UNDEFINED;
@ -1306,7 +1306,7 @@ static money32 track_place(sint32 rideIndex, sint32 type, sint32 originX, sint32
case TRACK_ELEM_60_DEG_UP_TO_FLAT:
case TRACK_ELEM_DIAG_25_DEG_UP_TO_FLAT:
case TRACK_ELEM_DIAG_60_DEG_UP_TO_FLAT:
if (!(edx_flags & 1))
if (!(liftHillAndAlternativeState & CONSTRUCTION_LIFT_HILL_SELECTED))
break;
//Fall Through
case TRACK_ELEM_CABLE_LIFT_HILL:
@ -1336,7 +1336,7 @@ static money32 track_place(sint32 rideIndex, sint32 type, sint32 originX, sint32
uint8 map_type = direction;
map_type |= MAP_ELEMENT_TYPE_TRACK;
if (edx_flags & 1){
if (liftHillAndAlternativeState & CONSTRUCTION_LIFT_HILL_SELECTED){
map_type |= (1 << 7);
}
mapElement->type = map_type;
@ -1371,8 +1371,8 @@ static money32 track_place(sint32 rideIndex, sint32 type, sint32 originX, sint32
}
uint8 colour = properties_2;
if (edx_flags & (1 << 1)){
colour |= (1 << 2);
if (liftHillAndAlternativeState & RIDE_TYPE_ALTERNATIVE_TRACK_TYPE){
colour |= TRACK_ELEMENT_COLOUR_FLAG_INVERTED;
}
mapElement->properties.track.colour |= colour;
@ -2201,7 +2201,7 @@ sint32 track_get_actual_bank(rct_map_element *mapElement, sint32 bank)
sint32 track_get_actual_bank_2(sint32 rideType, sint32 trackColour, sint32 bank)
{
if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) {
if (trackColour & 4) {
if (trackColour & TRACK_ELEMENT_COLOUR_FLAG_INVERTED) {
if (bank == TRACK_BANK_NONE) {
bank = TRACK_BANK_UPSIDE_DOWN;
} else if (bank == TRACK_BANK_UPSIDE_DOWN) {

View File

@ -203,7 +203,7 @@ enum {
TRACK_ELEM_FLAG_0400 = (1 << 10),
TRACK_ELEM_FLAG_HELIX = (1 << 11),
TRACK_ELEM_FLAG_1000 = (1 << 12),
TRACK_ELEM_FLAG_2000 = (1 << 13),
TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT = (1 << 13),
TRACK_ELEM_FLAG_4000 = (1 << 14),
TRACK_ELEM_FLAG_8000 = (1 << 15),
};

View File

@ -32971,10 +32971,10 @@ const uint16 FlatTrackFlags[] = {
/* */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* */ TRACK_ELEM_FLAG_8000,
/* */ TRACK_ELEM_FLAG_8000,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ 0,
/* */ 0,
/* */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
@ -32983,10 +32983,10 @@ const uint16 FlatTrackFlags[] = {
/* */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* */ TRACK_ELEM_FLAG_TURN_LEFT,
/* */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,
@ -33229,10 +33229,10 @@ const uint16 TrackFlags[] = {
/* TRACK_ELEM_25_DEG_DOWN_TO_RIGHT_BANK */ TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_BANK */ TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_LEFT_QUARTER_TURN_5_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_5_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_S_BEND_LEFT */ 0,
/* TRACK_ELEM_S_BEND_RIGHT */ 0,
/* TRACK_ELEM_LEFT_VERTICAL_LOOP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_4000,
@ -33241,10 +33241,10 @@ const uint16 TrackFlags[] = {
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_BANK */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_BANK */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_BANKED | TRACK_ELEM_FLAG_8000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_2000,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_UP */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_UP | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_LEFT_QUARTER_TURN_3_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_LEFT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_3_TILES_25_DEG_DOWN */ TRACK_ELEM_FLAG_TURN_RIGHT | TRACK_ELEM_FLAG_TURN_SLOPED | TRACK_ELEM_FLAG_DOWN | TRACK_ELEM_FLAG_0100 | TRACK_ELEM_FLAG_1000 | TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT,
/* TRACK_ELEM_LEFT_QUARTER_TURN_1_TILE */ TRACK_ELEM_FLAG_TURN_LEFT,
/* TRACK_ELEM_RIGHT_QUARTER_TURN_1_TILE */ TRACK_ELEM_FLAG_TURN_RIGHT,
/* TRACK_ELEM_LEFT_TWIST_DOWN_TO_UP */ TRACK_ELEM_FLAG_INVERSION | TRACK_ELEM_FLAG_4000,

View File

@ -7410,7 +7410,7 @@ loc_6DB358:
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_11;
sint32 rideType = get_ride(mapElement->properties.track.ride_index)->type;
if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) {
if (mapElement->properties.track.colour & 4) {
if (mapElement->properties.track.colour & TRACK_ELEMENT_COLOUR_FLAG_INVERTED) {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_11;
}
}
@ -7756,7 +7756,7 @@ static bool vehicle_update_track_motion_backwards_get_new_track(rct_vehicle *veh
// Update VEHICLE_UPDATE_FLAG_11
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_11;
if (RideData4[ride->type].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) {
if (mapElement->properties.track.colour & 4) {
if (mapElement->properties.track.colour & TRACK_ELEMENT_COLOUR_FLAG_INVERTED) {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_11;
}
}
@ -8124,7 +8124,7 @@ loc_6DC476:
sint32 rideType = get_ride(mapElement->properties.track.ride_index)->type;
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_11;
if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) {
if (mapElement->properties.track.colour & (1 << 2)) {
if (mapElement->properties.track.colour & TRACK_ELEMENT_COLOUR_FLAG_INVERTED) {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_11;
}
}
@ -8341,7 +8341,7 @@ loc_6DCA9A:
rideType = get_ride(mapElement->properties.track.ride_index)->type;
vehicle->update_flags &= ~VEHICLE_UPDATE_FLAG_11;
if (RideData4[rideType].flags & RIDE_TYPE_FLAG4_HAS_ALTERNATIVE_TRACK_TYPE) {
if (mapElement->properties.track.colour & (1 << 2)) {
if (mapElement->properties.track.colour & TRACK_ELEMENT_COLOUR_FLAG_INVERTED) {
vehicle->update_flags |= VEHICLE_UPDATE_FLAG_11;
}
}

View File

@ -441,17 +441,7 @@ rct_string_id RideConfigurationStringIds[] = {
#pragma endregion
#pragma pack(push, 1)
union {
uint64 ab;
struct {
uint32 a;
uint32 b;
};
} _enabledRidePieces;
assert_struct_size(_enabledRidePieces, 8);
#pragma pack(pop)
uint64 _enabledRidePieces;
static bool _trackPlaceCtrlState;
static sint32 _trackPlaceCtrlZ;
static bool _trackPlaceShiftState;
@ -483,7 +473,7 @@ static void window_ride_construction_draw_track_piece(
sint32 width, sint32 height
);
static void window_ride_construction_update_enabled_track_pieces();
bool sub_6CA2DF(sint32 *trackType, sint32 *trackDirection, sint32 *rideIndex, sint32 *edxRS16, sint32 *x, sint32 *y, sint32 *z, sint32 *properties);
bool sub_6CA2DF(sint32 *trackType, sint32 *trackDirection, sint32 *rideIndex, sint32 *_liftHillAndAlternativeState, sint32 *x, sint32 *y, sint32 *z, sint32 *properties);
static void sub_6CBCE2(
sint32 rideIndex, sint32 trackType, sint32 trackDirection, sint32 edx,
sint32 originX, sint32 originY, sint32 originZ
@ -492,7 +482,7 @@ static void window_ride_construction_update_map_selection();
static void window_ride_construction_update_possible_ride_configurations();
static void window_ride_construction_update_widgets(rct_window *w);
static void window_ride_construction_select_map_tiles(rct_ride *ride, sint32 trackType, sint32 trackDirection, sint32 x, sint32 y);
money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32 trackDirection, sint32 edxRS16, sint32 x, sint32 y, sint32 z);
money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32 trackDirection, sint32 liftHillAndAlternativeState, sint32 x, sint32 y, sint32 z);
static void window_ride_construction_show_special_track_dropdown(rct_window *w, rct_widget *widget);
static void ride_selected_track_set_seat_rotation(sint32 seatRotation);
static void loc_6C7502(sint32 al);
@ -522,7 +512,7 @@ static const rct_string_id RideConstructionSeatAngleRotationStrings[] = {
static bool is_track_enabled(sint32 trackFlagIndex)
{
return _enabledRidePieces.ab & (1ULL << trackFlagIndex);
return _enabledRidePieces & (1ULL << trackFlagIndex);
}
static sint32 ride_get_alternative_type(rct_ride *ride)
@ -1122,7 +1112,7 @@ static void window_ride_construction_resize(rct_window *w)
if (_currentTrackCurve != TRACK_CURVE_NONE && _currentTrackSlopeEnd == TRACK_SLOPE_DOWN_60) {
disabledWidgets |= (1ULL << WIDX_SLOPE_DOWN);
}
if ((_currentTrackLiftHill & 1) && !gCheatsEnableChainLiftOnAllTrack) {
if ((_currentTrackLiftHill & CONSTRUCTION_LIFT_HILL_SELECTED) && !gCheatsEnableChainLiftOnAllTrack) {
if (_currentTrackSlopeEnd != TRACK_SLOPE_NONE && !is_track_enabled(TRACK_LIFT_HILL_CURVE)) {
disabledWidgets |=
(1ULL << WIDX_LEFT_CURVE_SMALL) |
@ -1523,8 +1513,8 @@ static void window_ride_construction_mousedown(rct_widgetindex widgetIndex, rct_
break;
case WIDX_CHAIN_LIFT:
ride_construction_invalidate_current_track();
_currentTrackLiftHill ^= 1;
if (_currentTrackLiftHill & 1) {
_currentTrackLiftHill ^= CONSTRUCTION_LIFT_HILL_SELECTED;
if (_currentTrackLiftHill & CONSTRUCTION_LIFT_HILL_SELECTED) {
_currentTrackAlternative &= ~RIDE_TYPE_ALTERNATIVE_TRACK_PIECES;
}
_currentTrackPrice = MONEY32_UNDEFINED;
@ -1596,7 +1586,7 @@ static void window_ride_construction_mousedown(rct_widgetindex widgetIndex, rct_
case WIDX_O_TRACK:
ride_construction_invalidate_current_track();
_currentTrackAlternative |= RIDE_TYPE_ALTERNATIVE_TRACK_PIECES;
_currentTrackLiftHill &= ~1;
_currentTrackLiftHill &= ~CONSTRUCTION_LIFT_HILL_SELECTED;
_currentTrackPrice = MONEY32_UNDEFINED;
window_ride_construction_update_active_elements();
break;
@ -1646,7 +1636,7 @@ static void window_ride_construction_dropdown(rct_window *w, rct_widgetindex wid
case TRACK_ELEM_LEFT_VERTICAL_LOOP:
case TRACK_ELEM_RIGHT_VERTICAL_LOOP:
_currentTrackBankEnd = TRACK_BANK_NONE;
_currentTrackLiftHill &= ~1;
_currentTrackLiftHill &= ~CONSTRUCTION_LIFT_HILL_SELECTED;
break;
}
_currentTrackCurve = trackPiece | 0x100;
@ -1659,13 +1649,13 @@ static void window_ride_construction_dropdown(rct_window *w, rct_widgetindex wid
*/
static void window_ride_construction_construct(rct_window *w)
{
sint32 trackType, trackDirection, rideIndex, edxRS16, x, y, z, properties;
sint32 trackType, trackDirection, rideIndex, liftHillAndAlternativeState, x, y, z, properties;
track_begin_end trackBeginEnd;
_currentTrackPrice = MONEY32_UNDEFINED;
_trackPlaceCost = MONEY32_UNDEFINED;
ride_construction_invalidate_current_track();
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &edxRS16, &x, &y, &z, &properties)) {
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &liftHillAndAlternativeState, &x, &y, &z, &properties)) {
window_ride_construction_update_active_elements();
return;
}
@ -1684,7 +1674,7 @@ static void window_ride_construction_construct(rct_window *w)
x,
(GAME_COMMAND_FLAG_APPLY) | (trackDirection << 8),
y,
rideIndex | (trackType << 8) | (edxRS16 << 16),
rideIndex | (trackType << 8) | (liftHillAndAlternativeState << 16),
GAME_COMMAND_PLACE_TRACK,
z | (properties << 16),
0
@ -2222,8 +2212,8 @@ static void window_ride_construction_paint(rct_window *w, rct_drawpixelinfo *dpi
if (widget->type == WWT_EMPTY)
return;
sint32 trackType, trackDirection, rideIndex, edxRS16;
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &edxRS16, NULL, NULL, NULL, NULL))
sint32 trackType, trackDirection, rideIndex, liftHillAndAlternativeState;
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &liftHillAndAlternativeState, NULL, NULL, NULL, NULL))
return;
// Draw track piece
@ -2232,7 +2222,7 @@ static void window_ride_construction_paint(rct_window *w, rct_drawpixelinfo *dpi
width = widget->right - widget->left - 1;
height = widget->bottom - widget->top - 1;
if (clip_drawpixelinfo(&clipdpi, dpi, x, y, width, height)) {
window_ride_construction_draw_track_piece(w, &clipdpi, rideIndex, trackType, trackDirection, edxRS16, width, height);
window_ride_construction_draw_track_piece(w, &clipdpi, rideIndex, trackType, trackDirection, liftHillAndAlternativeState, width, height);
}
// Draw cost
@ -2584,34 +2574,34 @@ static bool sub_6CA2DF_get_track_element(uint8 *trackElement) {
* @param[out] _trackType (dh)
* @param[out] _trackDirection (bh)
* @param[out] _rideIndex (dl)
* @param[out] _edxRS16 (edxrs16)
* @param[out] _liftHillAndAlternativeState (liftHillAndAlternativeState)
* @param[out] _x (ax)
* @param[out] _y (cx)
* @param[out] _z (di)
* @param[out] _properties (edirs16)
* @return (CF)
*/
bool sub_6CA2DF(sint32 *_trackType, sint32 *_trackDirection, sint32 *_rideIndex, sint32 *_edxRS16, sint32 *_x, sint32 *_y, sint32 *_z, sint32 *_properties) {
bool sub_6CA2DF(sint32 *_trackType, sint32 *_trackDirection, sint32 *_rideIndex, sint32 *_liftHillAndAlternativeState, sint32 *_x, sint32 *_y, sint32 *_z, sint32 *_properties) {
uint8 trackType, trackDirection, rideIndex;
uint16 z, x, y, edxRS16, properties;
uint16 z, x, y, liftHillAndAlternativeState, properties;
if (!sub_6CA2DF_get_track_element(&trackType)) {
return true;
}
edxRS16 = 0;
liftHillAndAlternativeState = 0;
rideIndex = _currentRideIndex;
if (_currentTrackLiftHill & 1) {
edxRS16 |= 0x1;
if (_currentTrackLiftHill & CONSTRUCTION_LIFT_HILL_SELECTED) {
liftHillAndAlternativeState |= CONSTRUCTION_LIFT_HILL_SELECTED;
}
if (_currentTrackAlternative & RIDE_TYPE_ALTERNATIVE_TRACK_TYPE) {
edxRS16 |= RIDE_TYPE_ALTERNATIVE_TRACK_TYPE;
liftHillAndAlternativeState |= RIDE_TYPE_ALTERNATIVE_TRACK_TYPE;
}
rct_ride *ride = get_ride(rideIndex);
if (_enabledRidePieces.b & (1 << 8)) {
if (_enabledRidePieces & (1ULL << TRACK_SLOPE_STEEP_LONG)) {
switch (trackType) {
case TRACK_ELEM_FLAT_TO_60_DEG_UP:
trackType = TRACK_ELEM_FLAT_TO_60_DEG_UP_LONG_BASE;
@ -2643,7 +2633,7 @@ bool sub_6CA2DF(sint32 *_trackType, sint32 *_trackDirection, sint32 *_rideIndex,
if (alternativeType > -1) {
trackType = (uint8) alternativeType;
}
edxRS16 &= 0xFFFE; // unsets 0x1
liftHillAndAlternativeState &= ~CONSTRUCTION_LIFT_HILL_SELECTED;
}
}
@ -2691,8 +2681,8 @@ bool sub_6CA2DF(sint32 *_trackType, sint32 *_trackDirection, sint32 *_rideIndex,
bool do_loc_6CAF26 = false;
if (!(_enabledRidePieces.a & (1 << 5))) {
if (TrackFlags[trackType] & TRACK_ELEM_FLAG_2000) {
if (!(_enabledRidePieces & (1ULL << TRACK_LIFT_HILL_CURVE))) {
if (TrackFlags[trackType] & TRACK_ELEM_FLAG_CURVE_ALLOWS_LIFT) {
do_loc_6CAF26 = true;
}
}
@ -2702,11 +2692,11 @@ bool sub_6CA2DF(sint32 *_trackType, sint32 *_trackDirection, sint32 *_rideIndex,
}
if (do_loc_6CAF26 && !gCheatsEnableChainLiftOnAllTrack) {
edxRS16 &= 0xFFFE; //unsets 0x1
_currentTrackLiftHill &= 0xFE;
liftHillAndAlternativeState &= ~CONSTRUCTION_LIFT_HILL_SELECTED;
_currentTrackLiftHill &= ~CONSTRUCTION_LIFT_HILL_SELECTED;
if (trackType == TRACK_ELEM_LEFT_CURVED_LIFT_HILL || trackType == TRACK_ELEM_RIGHT_CURVED_LIFT_HILL) {
edxRS16 |= 0x1;
liftHillAndAlternativeState |= CONSTRUCTION_LIFT_HILL_SELECTED;
}
}
@ -2721,7 +2711,7 @@ bool sub_6CA2DF(sint32 *_trackType, sint32 *_trackDirection, sint32 *_rideIndex,
if (_trackType != NULL) *_trackType = trackType;
if (_trackDirection != NULL) *_trackDirection = trackDirection;
if (_rideIndex != NULL) *_rideIndex = rideIndex;
if (_edxRS16 != NULL) *_edxRS16 = edxRS16;
if (_liftHillAndAlternativeState != NULL) *_liftHillAndAlternativeState = liftHillAndAlternativeState;
if (_x != NULL) *_x = x;
if (_y != NULL) *_y = y;
if (_z != NULL) *_z = z;
@ -2745,18 +2735,18 @@ static void window_ride_construction_update_enabled_track_pieces()
sint32 rideType = (_currentTrackAlternative & RIDE_TYPE_ALTERNATIVE_TRACK_TYPE) ? RideData4[ride->type].alternate_type : ride->type;
if (!gConfigInterface.select_by_track_type)
{
_enabledRidePieces.ab = rideEntry->enabledTrackPieces & RideTypePossibleTrackConfigurations[rideType];
_enabledRidePieces = rideEntry->enabledTrackPieces & RideTypePossibleTrackConfigurations[rideType];
}
else
{
if (track_type_has_ride_groups(rideType))
{
const ride_group * rideGroup = get_ride_group(rideType, rideEntry);
_enabledRidePieces.ab = rideGroup->available_track_pieces;
_enabledRidePieces = rideGroup->available_track_pieces;
}
else
{
_enabledRidePieces.ab = RideTypePossibleTrackConfigurations[rideType];
_enabledRidePieces = RideTypePossibleTrackConfigurations[rideType];
}
}
@ -2767,7 +2757,7 @@ static void window_ride_construction_update_enabled_track_pieces()
*
* rct2: 0x006CA162
*/
money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32 trackDirection, sint32 edxRS16, sint32 x, sint32 y, sint32 z)
money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32 trackDirection, sint32 liftHillAndAlternativeState, sint32 x, sint32 y, sint32 z)
{
rct_ride *ride;
money32 result;
@ -2775,7 +2765,7 @@ money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32
ride_construction_remove_ghosts();
ride = get_ride(rideIndex);
if (ride->type == RIDE_TYPE_MAZE) {
result = game_do_command(x, 105 | (4 << 8), y, rideIndex | (trackType << 8) | (edxRS16 << 16), GAME_COMMAND_SET_MAZE_TRACK, z, 0);
result = game_do_command(x, 105 | (4 << 8), y, rideIndex | (trackType << 8) | (liftHillAndAlternativeState << 16), GAME_COMMAND_SET_MAZE_TRACK, z, 0);
if (result == MONEY32_UNDEFINED)
return result;
@ -2790,7 +2780,7 @@ money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32
return result;
} else {
result = game_do_command(x, 105 | (trackDirection << 8), y, rideIndex | (trackType << 8) | (edxRS16 << 16), GAME_COMMAND_PLACE_TRACK, z, 0);
result = game_do_command(x, 105 | (trackDirection << 8), y, rideIndex | (trackType << 8) | (liftHillAndAlternativeState << 16), GAME_COMMAND_PLACE_TRACK, z, 0);
if (result == MONEY32_UNDEFINED)
return result;
@ -2817,7 +2807,7 @@ money32 place_provisional_track_piece(sint32 rideIndex, sint32 trackType, sint32
*/
void sub_6C94D8()
{
sint32 x, y, z, direction, type, rideIndex, edxRS16;
sint32 x, y, z, direction, type, rideIndex, liftHillAndAlternativeState;
// Recheck if area is fine for new track.
// Set by footpath placement
@ -2830,10 +2820,10 @@ void sub_6C94D8()
case RIDE_CONSTRUCTION_STATE_FRONT:
case RIDE_CONSTRUCTION_STATE_BACK:
if (!(_currentTrackSelectionFlags & TRACK_SELECTION_FLAG_TRACK)) {
if (sub_6CA2DF(&type, &direction, &rideIndex, &edxRS16, &x, &y, &z, NULL)) {
if (sub_6CA2DF(&type, &direction, &rideIndex, &liftHillAndAlternativeState, &x, &y, &z, NULL)) {
ride_construction_remove_ghosts();
} else {
_currentTrackPrice = place_provisional_track_piece(rideIndex, type, direction, edxRS16, x, y, z);
_currentTrackPrice = place_provisional_track_piece(rideIndex, type, direction, liftHillAndAlternativeState, x, y, z);
window_ride_construction_update_active_elements();
}
}
@ -3506,7 +3496,7 @@ static void window_ride_construction_update_widgets(rct_window *w)
pressedWidgets |= (1ULL << widgetIndex);
}
if (_currentTrackLiftHill & 1)
if (_currentTrackLiftHill & CONSTRUCTION_LIFT_HILL_SELECTED)
pressedWidgets |= (1 << WIDX_CHAIN_LIFT);
w->pressed_widgets = pressedWidgets;
@ -3616,7 +3606,7 @@ static void loc_6C7502(sint32 al)
_currentTrackPrice = MONEY32_UNDEFINED;
if (_rideConstructionState == RIDE_CONSTRUCTION_STATE_FRONT) {
if (al != 2 && al != 4 && al != 0) {
_currentTrackLiftHill &= ~1;
_currentTrackLiftHill &= ~CONSTRUCTION_LIFT_HILL_SELECTED;
}
}
window_ride_construction_update_active_elements();
@ -3684,8 +3674,8 @@ void ride_construction_toolupdate_construct(sint32 screenX, sint32 screenY)
gMapSelectionTiles[1].x = -1;
gMapSelectionTiles[1].y = -1;
sint32 trackType, trackDirection, rideIndex, edxRS16;
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &edxRS16, NULL, NULL, NULL, NULL)) {
sint32 trackType, trackDirection, rideIndex, liftHillAndAlternativeState;
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &liftHillAndAlternativeState, NULL, NULL, NULL, NULL)) {
ride_construction_invalidate_current_track();
map_invalidate_map_selection_tiles();
return;
@ -3745,8 +3735,8 @@ void ride_construction_toolupdate_construct(sint32 screenX, sint32 screenY)
_previousTrackPieceZ = z;
if (ride->type == RIDE_TYPE_MAZE) {
for (;;) {
sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &edxRS16, &x, &y, &z, NULL);
_currentTrackPrice = place_provisional_track_piece(rideIndex, trackType, trackDirection, edxRS16, x, y, z);
sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &liftHillAndAlternativeState, &x, &y, &z, NULL);
_currentTrackPrice = place_provisional_track_piece(rideIndex, trackType, trackDirection, liftHillAndAlternativeState, x, y, z);
if (_currentTrackPrice != MONEY32_UNDEFINED)
break;
@ -3768,8 +3758,8 @@ void ride_construction_toolupdate_construct(sint32 screenX, sint32 screenY)
}
for (;;) {
sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &edxRS16, &x, &y, &z, NULL);
_currentTrackPrice = place_provisional_track_piece(rideIndex, trackType, trackDirection, edxRS16, x, y, z);
sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &liftHillAndAlternativeState, &x, &y, &z, NULL);
_currentTrackPrice = place_provisional_track_piece(rideIndex, trackType, trackDirection, liftHillAndAlternativeState, x, y, z);
if (_currentTrackPrice != MONEY32_UNDEFINED)
break;
@ -3844,13 +3834,13 @@ void ride_construction_toolupdate_entrance_exit(sint32 screenX, sint32 screenY)
void ride_construction_tooldown_construct(sint32 screenX, sint32 screenY)
{
const CursorState * state = context_get_cursor_state();
sint32 trackType, trackDirection, rideIndex, edxRS16, x, y, z, properties, highestZ;
sint32 trackType, trackDirection, rideIndex, liftHillAndAlternativeState, x, y, z, properties, highestZ;
rct_window *w;
map_invalidate_map_selection_tiles();
ride_construction_invalidate_current_track();
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &edxRS16, &x, &y, &z, &properties))
if (sub_6CA2DF(&trackType, &trackDirection, &rideIndex, &liftHillAndAlternativeState, &x, &y, &z, &properties))
return;
_currentTrackPieceType = trackType;
@ -4383,7 +4373,7 @@ void window_ride_construction_keyboard_shortcut_use_track_default()
window_event_mouse_down_call(w, WIDX_LEVEL);
}
if (!widget_is_disabled(w, WIDX_CHAIN_LIFT) && w->widgets[WIDX_CHAIN_LIFT].type != WWT_EMPTY && _currentTrackLiftHill & 1) {
if (!widget_is_disabled(w, WIDX_CHAIN_LIFT) && w->widgets[WIDX_CHAIN_LIFT].type != WWT_EMPTY && _currentTrackLiftHill & CONSTRUCTION_LIFT_HILL_SELECTED) {
window_event_mouse_down_call(w, WIDX_CHAIN_LIFT);
}

View File

@ -84,7 +84,7 @@ static bool WallCheckObstructionWithTrack(rct_scenery_entry * wall,
}
// The following code checks if a door is allowed on the track
if (!(RideData4[ride->type].flags & RIDE_TYPE_FLAG4_0))
if (!(RideData4[ride->type].flags & RIDE_TYPE_FLAG4_ALLOW_DOORS_ON_TRACK))
{
return false;
}