-
Notifications
You must be signed in to change notification settings - Fork 15
Ride
Contents
Since stalls are considered rides as well, this page is split up into three parts. First are properties for All Ride Objects. After that are the properties specific to shops/stalls vs those for actual rides.
If "type"
is "food_stall"
, "drink_stall"
, "shop"
, "information_kiosk"
, "toilets"
, "cash_machine"
, "first_aid"
(i.e., a shop or stall), use properties for Stalls and Shops Only. Otherwise, use properties for Actual Rides Only.
All ride objects start with 3 preview images. In theory, these are for the 3 types
it has, but since almost all of them only support one type, the second 2 images are almost always blank. The rest of the images are described in the other image sections below.
- type :
array of enum (of string)
: required -
Array of ride types of this object. For tracked rides, this is the type of track. For flat rides and stalls, this is the type of it. Currently only up to 3 are used, and most ride objects only have one.
-
*items* :
enum (of string)
- Must be one of:
"spiral_rc"
,"stand_up_rc"
,"suspended_swinging_rc"
,"inverted_rc"
,"junior_rc"
,"miniature_railway"
,"monorail"
,"mini_suspended_rc"
,"boat_hire"
,"wooden_wild_mouse"
,"steeplechase"
,"car_ride"
,"launched_freefall"
,"bobsleigh_rc"
,"observation_tower"
,"looping_rc"
,"dinghy_slide"
,"mine_train_rc"
,"chairlift"
,"corkscrew_rc"
,"maze"
,"spiral_slide"
,"go_karts"
,"log_flume"
,"river_rapids"
,"dodgems"
,"swinging_ship"
,"swinging_inverter_ship"
,"food_stall"
,"drink_stall"
,"shop"
,"merry_go_round"
,"information_kiosk"
,"toilets"
,"ferris_wheel"
,"motion_simulator"
,"3d_cinema"
,"top_spin"
,"space_rings"
,"reverse_freefall_rc"
,"lift"
,"vertical_drop_rc"
,"cash_machine"
,"twist"
,"haunted_house"
,"first_aid"
,"circus"
,"ghost_train"
,"twister_rc"
,"wooden_rc"
,"side_friction_rc"
,"steel_wild_mouse"
,"multi_dimension_rc"
,"flying_rc"
,"virginia_reel"
,"splash_boats"
,"mini_helicopters"
,"lay_down_rc"
,"suspended_monorail"
,"reverser_rc"
,"heartline_twister_rc"
,"mini_golf"
,"giga_rc"
,"roto_drop"
,"flying_saucers"
,"crooked_house"
,"monorail_cycles"
,"compact_inverted_rc"
,"water_coaster"
,"air_powered_vertical_rc"
,"inverted_hairpin_rc"
,"magic_carpet"
,"submarine_ride"
,"river_rafts"
,"enterprise"
,"inverted_impulse_rc"
,"mini_rc"
,"mine_ride"
,"lim_launched_rc"
,"hypercoaster"
,"hyper_twister"
,"monster_trucks"
,"spinning_wild_mouse"
,"classic_mini_rc"
,"hybrid_rc"
,"single_rail_rc"
,
-
*items* :
- category :
string
-
[Deprecated] Ride category is now determined from the type
Example:
"category": "rollercoaster"
- carColours :
array of array
: required -
An array of preset color schemes for the ride. Currently, a ride can either have multiple presets (up to 254) with a single color scheme each (which are randomly chosen from when a ride is built), or it can have a single preset that has different color schemes for each train (car?). Note: If there is more than one preset, only the first color scheme in each preset is used.
-
*items* :
array of array
-
-
*items* :
array
-
-
*item* :
enum (of string)
-
Object color
Must be one of:
"black"
,"grey"
,"white"
,"dark_purple"
,"light_purple"
,"bright_purple"
,"dark_blue"
,"light_blue"
,"icy_blue"
,"teal"
,"aquamarine"
,"saturated_green"
,"dark_green"
,"moss_green"
,"bright_green"
,"olive_green"
,"dark_olive_green"
,"bright_yellow"
,"yellow"
,"dark_yellow"
,"light_orange"
,"dark_orange"
,"light_brown"
,"saturated_brown"
,"dark_brown"
,"salmon_pink"
,"bordeaux_red"
,"saturated_red"
,"bright_red"
,"dark_pink"
,"bright_pink"
,"light_pink"
, -
*item* :
enum (of string)
-
Object color
Must be one of:
"black"
,"grey"
,"white"
,"dark_purple"
,"light_purple"
,"bright_purple"
,"dark_blue"
,"light_blue"
,"icy_blue"
,"teal"
,"aquamarine"
,"saturated_green"
,"dark_green"
,"moss_green"
,"bright_green"
,"olive_green"
,"dark_olive_green"
,"bright_yellow"
,"yellow"
,"dark_yellow"
,"light_orange"
,"dark_orange"
,"light_brown"
,"saturated_brown"
,"dark_brown"
,"salmon_pink"
,"bordeaux_red"
,"saturated_red"
,"bright_red"
,"dark_pink"
,"bright_pink"
,"light_pink"
, -
*item* :
enum (of string)
-
Object color
Must be one of:
"black"
,"grey"
,"white"
,"dark_purple"
,"light_purple"
,"bright_purple"
,"dark_blue"
,"light_blue"
,"icy_blue"
,"teal"
,"aquamarine"
,"saturated_green"
,"dark_green"
,"moss_green"
,"bright_green"
,"olive_green"
,"dark_olive_green"
,"bright_yellow"
,"yellow"
,"dark_yellow"
,"light_orange"
,"dark_orange"
,"light_brown"
,"saturated_brown"
,"dark_brown"
,"salmon_pink"
,"bordeaux_red"
,"saturated_red"
,"bright_red"
,"dark_pink"
,"bright_pink"
,"light_pink"
,
-
*item* :
-
*items* :
Examples:
rct2.ride.scht1
(Looping Roller Coaster Trains)"carColours": [ [ ["bright_red", "bright_red", "yellow"] ], [ ["dark_green", "bright_red", "dark_green"] ], [ ["light_blue", "white", "light_blue"] ] ]
rct2.ride.kart1
(Go-Karts)"carColours": [ [ ["light_blue", "black", "black"], ["bright_red", "black", "black"], ["yellow", "black", "black"], ["bright_green", "black", "black"], ["black", "black", "black"], ["light_purple", "black", "black"], ["light_orange", "black", "black"], ["aquamarine", "black", "black"], ["dark_brown", "black", "black"], ["white", "black", "black"], ["bright_pink", "black", "black"], ["dark_olive_green", "black", "black"], ["bordeaux_red", "black", "black"], ["dark_purple", "black", "black"], ["bright_purple", "black", "black"], ["light_pink", "black", "black"], ["dark_blue", "black", "black"], ["icy_blue", "black", "black"], ["teal", "black", "black"], ["saturated_green", "black", "black"], ["dark_green", "black", "black"], ["moss_green", "black", "black"], ["olive_green", "black", "black"], ["bright_yellow", "black", "black"], ["dark_yellow", "black", "black"], ["dark_orange", "black", "black"], ["saturated_brown", "black", "black"], ["salmon_pink", "black", "black"], ["saturated_red", "black", "black"], ["dark_pink", "black", "black"], ["light_blue", "black", "black"], ["bright_red", "black", "black"] ] ]
-
*items* :
After the 3 preview images, for most stalls, there are just the 4 angles. Unusually, they start facing back-right and then go clockwise. For stalls that peeps can enter ("toilets"
and "first_aid"
), the part that is drawn in front of peeps that enter it is split off for the front facing angles, but unlike other objects with split images, it's all the "behind" angles first and then the "in front" angles:
- Front-left (behind)
- Back-left (can't see the entrance, so there's no split)
- Back-right (again, no split)
- Front-right (behind)
- Front-left (front)
- Front-right (front)
- sells :
array
: required -
The item(s) sold by the shop, currently up to two are used
- items
- Must be one of:
"burger"
,"chips"
,"ice_cream"
,"candyfloss"
,"pizza"
,"popcorn"
,"hot_dog"
,"tentacle"
,"toffee_apple"
,"doughnut"
,"chicken"
,"pretzel"
,"funnel_cake"
,"beef_noodles"
,"fried_rice_noodles"
,"wonton_soup"
,"meatball_soup"
,"sub_sandwich"
,"cookie"
,"roast_sausage"
,"drink"
,"coffee"
,"lemonade"
,"chocolate"
,"iced_tea"
,"fruit_juice"
,"soybean_milk"
,"sujeonggwa"
,"balloon"
,"toy"
,"map"
,"photo"
,"umbrella"
,"voucher"
,"hat"
,"tshirt"
, or"sunglasses"
.
- disablePainting :
boolean
- Flagged if the ride does not support recolouring
rct2.ride.bnoodles
(Beef Noodles Stall)
"properties": {
"type": "food_stall",
"category": "stall",
"sells": "beef_noodles",
"disablePainting": true,
"carColours": [
[
["black", "black", "black"]
]
]
}
- buildMenuPriority :
integer
- For rides that do not list their subtypes separately, this number describes the priority order for which subtype should show for the generic ride type in the build menu. Of all the subtypes that are available and researched, whichever has the highest buildMenuPriority will show as representative of the generic ride type.
- maxHeight :
integer
- Maximum height of the ride (if not set, or set to 0, uses the hardcoded value for the ridetype)
- swingMode :
enum (of integer)
-
If set to 1 or 2, indicates alternate swing modes that are used for some rides
Must be one of:
0
,1
,2
, - rotationMode :
enum (of integer)
-
If set to 1, indicates alternate rotation modes used for twist, if set to 2, indicates alternate rotation mode used for enterprise
Must be one of:
0
,1
,2
, - ratingMultipler :
object
-
Additional rating multiplier(s) for this specific ride subtype (this is separate from the rating multipliers that are hardcoded for each ride type)
excitement :
integer
intensity :
integer
nausea :
integer
- minCarsPerTrain :
integer
- Minimum number of cars that can be in a train
- maxCarsPerTrain :
integer
- Maximum number of cars that can be in a train
- carsPerFlatRide :
integer
- The number of cars, for a flat ride
- numEmptyCars :
integer
- The number of "zero" cars in the train. That is, cars that do not hold any guests
- defaultCar :
integer
-
Index of the car that should be used as the default car for this ride. In other words, this is the normal car that appears throughout the train wherever there isn't a special (i.e. front or rear) car
Defaults to 0 if not specified
- tabCar :
number
- The index of the car that should show in the gui tab for this ride (0 if not specified)
- tabScale :
number
- If <= 0.5, this will scale the size of the tab preview in half
- headCars :
array of integer or number
- The index(es) of up to three cars that should be used to fill the front of a train
- tailCars :
integer
- Index of the car that should be used as the tail car, if any (the code supports listing an array instead of just a single index here, but currently only the first index listed is used)
- cars :
array or object
: required -
The cars in this ride
This can be either a single Car Object or an array of them
- noInversions :
boolean
- Flagged if the ride does not support inversions
- noBanking :
boolean
- Flagged if the ride does not support banking
- playDepartSound :
boolean
- Flagged if the ride plays a departure sound when departing the station. depending on sound_range setting, plays Tram or Train departing sound.
- playSplashSound :
boolean
- Flagged if the ride should play a splashing sound on down to flat elements
- playSplashSoundSlide :
boolean
- Flagged if the ride should play a splashing sound when entering a water channel, for water coasters. Has no effect if playSplashSound is enabled. Note: Internally, water channel track is coded as "covered" track, so if this flag is set for a ride running on a track that supports covered pieces, it will play a splash sound when entering a covered section of track.
- hasShelter :
boolean
-
Flagged if the ride is covered (for example, monorail cars are covered)
Note that there are some ride types in vanilla RCT2 that seem to have this bit set illogically. Pickup-trucks did not have this set, and the uncovered ski lift cars did have these set. These have been changed in OpenRCT2 to make more sense.
- limitAirTimeBonus :
boolean
- Flagged if the ride should have a hard cap on how much bonus it gets from airtime. This is only set for heartline-twister coasters, and makes it so that a max of ~2 seconds of airtime can give an excitement bonus.
- disableBreakdown :
boolean
- Flagged if the ride does not break down
- noCollisionCrashes :
boolean
- Flagged if the ride does not crash when vehicles collide
- disablePainting :
boolean
- Flagged if the ride does not support recolouring
rct2.ride.bboat
(Bumper Boats)
"properties": {
"type": "boat_hire",
"category": [
"water",
"thrill"
],
"ratingMultipler": {
"excitement": 30,
"intensity": 15,
"nausea": 15
},
"carColours": [
[
["yellow", "light_blue", "black"]
],
[
["bright_red", "light_blue", "black"]
],
[
["dark_green", "yellow", "black"]
]
],
"cars": {[...]},
"buildMenuPriority": 5
}
rct2.ride.twist1
(Twist)
"properties": {
"type": "twist",
"category": "thrill",
"tabScale": 0.5,
"rotationMode": 1,
"carsPerFlatRide": 1,
"carColours": [
[
["moss_green", "yellow", "black"]
],
[
["bright_red", "white", "black"]
]
],
"cars": {[..]}
}
- rotationFrameMask :
integer
-
A bitmask indicating which rotation frames this car has, for rendering spinning car in the UI?
Example:
"rotationFrameMask": 31
- spacing :
integer
-
The space taken up by this car (I have no idea what the units are tbh)
Example:
"spacing": 146000
- mass :
integer
-
Mass of this car
Example:
"mass": 650
- tabOffset :
integer
- If used, adds a vertical offset to this car when rendered in the UI
- numSeats :
integer
- Number of seats that this car holds
- seatsInPairs :
boolean
- If set, indicates that guests sit in this car in pairs
- spriteWidth :
integer
- For manually entering the sprite width for this car. This is only used if VEHICLE_ENTRY_FLAG_10 is set, which seems to only be for non-tracked-rides (?), otherwide this value is calculated.
- spriteHeightNegative :
integer
- For manually entering the sprite height below the origin for this car. This is only used if VEHICLE_ENTRY_FLAG_10 is set, which seems to only be for non-tracked-rides (?), otherwide this value is calculated.
- spriteHeightPositive :
integer
- For manually entering the sprite height above the origin for this car. This is only used if VEHICLE_ENTRY_FLAG_10 is set, which seems to only be for non-tracked-rides (?), otherwide this value is calculated.
- animation :
integer
-
Indicates a special animation mode to use for this car.
1: Miniature Railway 2: Swan boats 3: Canoes 4: Row boats 5: Water tricycles 6: Observation tower 7: Helicars 8: Monorail cycles 9: Multidimensional Coaster
- baseNumFrames :
integer
- The number of frames (angles) of rotation when this car is flat. This number is always calculated now so it shouldn't be specified
- numImages :
integer
- The total number of sprites for this car. This number is always calculated now so it shouldn't be specified
numSeatRows : integer
spinningInertia : integer
spinningFriction : integer
- frictionSoundId :
integer
-
Example:
"frictionSoundId": 57
- logFlumeReverserVehicleType :
integer
-
Example:
"logFlumeReverserVehicleType": 0
soundRange : integer
doubleSoundFrequency : integer
poweredAcceleration : integer
poweredMaxSpeed : integer
carVisual : integer
effectVisual : integer
- drawOrder :
integer
-
Example:
"drawOrder": 7
- numVerticalFramesOverride :
integer
- When VEHICLE_ENTRY_FLAG_OVERRIDE_NUM_VERTICAL_FRAMES is set, this value overrides the calculated value
- loadingPositions :
array of integer or integer
-
A list of the different loading positions for this car
*items* :
integer
- loadingWaypoints :
array of array
-
A list of the different loading waypoints guests should use for this car
-
*items* :
array of array
-
-
*items* :
array of integer
-
*items* :
integer
-
*items* :
-
*items* :
- numSegments :
integer
- If loadingWaypoints is used, the number of segments
- frames :
object
-
A set of flags for the different sets of sprites that this car has
- flat :
boolean
- If set, this car has sprites for flat track
- gentleSlopes :
boolean
- If set, this car has sprites for gentle slopes
- steepSlopes :
boolean
- If set, this car has sprites for steep slopes
- verticalSlopes :
boolean
- If set, this car has sprites for vertical slopes
- diagonalSlopes :
boolean
- If set, this car has sprites for diagonal slopes
- flatBanked :
boolean
- If set, this car has sprites for banked, flat track
- inlineTwists :
boolean
- If set, this car has sprites for inline twists
- flatToGentleSlopeBankedTransitions :
boolean
- If set, this car has sprites for flat track to banked gentle sloped track
- diagonalGentleSlopeBankedTransitions :
boolean
- If set, this car has sprites for diagonal banked to unbanked, gentle sloped track transitions
- gentleSlopeBankedTransitions :
boolean
- If set, this car has sprites for banked to unbanked, gentle sloped track transitions
- gentleSlopeBankedTurns :
boolean
- If set, this car has sprites for banked gentle sloping turns
- flatToGentleSlopeWhileBankedTransitions :
boolean
- If set, this car has sprites for banked flat track to banked gentle slope
- corkscrews :
boolean
- If set, this car has sprites for corkscrews
- restraintAnimation :
boolean
- If set, this car has sprites for restraints opening and closing
- curvedLiftHill :
boolean
- If set, this car has sprites for a curved lift-hill
- flat :
- isPoweredRideWithUnrestrictedGravity :
boolean
- Set on powered vehicles that do not slow down when going down a hill
hasNoUpstopWheels : boolean
hasNoUpstopWheelsBobsleigh : boolean
isMiniGolf : boolean
isReverserBogie : boolean
isReverserPassengerCar : boolean
- hasInvertedSpriteSet :
boolean
- Set on vehicles that support running inverted for extended periods of time, i.e. the Flying, Lay-down and Multi-dimension RCs.
- hasDodgemInUseLights :
boolean
- When set the vehicle has an additional frame for when in use. Used only by dodgems.
hasAdditionalColour2 : boolean
- recalculateSpriteBounds :
boolean
- Only used during loading of the object
- VEHICLE_ENTRY_FLAG_11 :
boolean
- Sets VEHICLE_ENTRY_FLAG_USE_16_ROTATION_FRAMES. Instead of the default 32 rotation frames. Only used for boat hire and works only for non sloped sprites.
- overrideNumberOfVerticalFrames :
boolean
- Setting this will cause the game to use numVerticalFramesOverride instead of calculating it
- spriteBoundsIncludeInvertedSet :
boolean
- Used together for recalculateSpriteBounds if hasInvertedSpriteSet is also set so that the inverted sprites are included in the function that recalculates the sprite bounds.
- hasAdditionalSpinningFrames :
boolean
- 16x additional frames for vehicle. A spinning item with additional frames must always face forward to load/unload. Spinning without can load/unload at 4 rotations.
isLift : boolean
hasAdditionalColour1 : boolean
hasSwinging : boolean
hasSpinning : boolean
isPowered : boolean
hasScreamingRiders : boolean
- useSuspendedSwing :
boolean
- Suspended swinging coaster, or bobsleigh if SLIDE_SWING is also enabled.
useBoatHireCollisionDetection : boolean
- hasVehicleAnimation :
boolean
- Set on animated vehicles like the Multi-dimension coaster trains, Miniature Railway locomotives and Helicycles.
- hasRiderAnimation :
boolean
- Set when the animation updates rider sprite positions.
useWoodenWildMouseSwing : boolean
- useSlideSwing :
boolean
- Set on dingy slides. They have there own swing value calculations and have a different amount of images. Also set on bobsleighs together with the SUSPENDED_SWING flag.
isChairlift : boolean
- isWaterRide :
boolean
- Set on rides where water would provide continuous propulsion
isGoKart : boolean
useDodgemCarPlacement : boolean
rct2.ride.twist1
(Twist)
"cars": {
"spacing": 139456,
"mass": 200,
"tabOffset": -12,
"numSeats": 18,
"spriteWidth": 65,
"spriteHeightNegative": 58,
"spriteHeightPositive": 36,
"carVisual": 1,
"drawOrder": 6,
"frames": {
"flat": true
},
"recalculateSpriteBounds": true,
"hasAdditionalColour1": true,
"numSegments": 4,
"loadingWaypoints": [
[
[43, 43],
[43, 43],
[33, 33]
],
[...],
[
[-43, 43],
[-42, -3],
[-42, 0]
]
]
}
rct2.ride.bboat
(Bumper Boats)
"cars": {
"rotationFrameMask": 31,
"spacing": 183036,
"mass": 140,
"numSeats": 2,
"numSeatRows": 1,
"poweredAcceleration": 220,
"poweredMaxSpeed": 9,
"drawOrder": 7,
"frames": {
"flat": true
},
"hasAdditionalColour1": true,
"isPowered": true,
"useBoatHireCollisionDetection": true,
"loadingPositions": [3, -3]
}
rct2.ride.arrt1
(Corkscrew Roller Coaster Trains)
"cars": [
{
"rotationFrameMask": 31,
"spacing": 261480,
"mass": 600,
"numSeats": 4,
"numSeatRows": 2,
"frictionSoundId": 2,
"soundRange": 2,
"drawOrder": 5,
"frames": {
"flat": true,
"gentleSlopes": true,
"steepSlopes": true,
"verticalSlopes": true,
"diagonalSlopes": true,
"flatBanked": true,
"flatToGentleSlopeBankedTransitions": true,
"diagonalGentleSlopeBankedTransitions": true,
"corkscrews": true,
"restraintAnimation": true
},
"hasAdditionalColour2": true,
"hasAdditionalColour1": true,
"hasScreamingRiders": true,
"loadingPositions": [5, 3, -7, -9]
},
{
"rotationFrameMask": 31,
"spacing": 226616,
"mass": 500,
"numSeats": 4,
"numSeatRows": 2,
"frictionSoundId": 2,
"soundRange": 2,
"drawOrder": 6,
"frames": {
"flat": true,
"gentleSlopes": true,
"steepSlopes": true,
"verticalSlopes": true,
"diagonalSlopes": true,
"flatBanked": true,
"flatToGentleSlopeBankedTransitions": true,
"diagonalGentleSlopeBankedTransitions": true,
"corkscrews": true,
"restraintAnimation": true
},
"hasAdditionalColour2": true,
"hasAdditionalColour1": true,
"hasScreamingRiders": true,
"loadingPositions": [7, 9, -3, -1]
},
{
"rotationFrameMask": 31,
"spacing": 52296,
"mass": 50,
"frictionSoundId": 2,
"soundRange": 0,
"drawOrder": 8,
"frames": {
"flat": true,
"gentleSlopes": true,
"steepSlopes": true,
"verticalSlopes": true,
"diagonalSlopes": true,
"flatBanked": true,
"flatToGentleSlopeBankedTransitions": true,
"diagonalGentleSlopeBankedTransitions": true,
"corkscrews": true
}
}
]