Merge pull request #21642 from Gymnasiast/feature/classic-standup-2024

Add Classic Stand-Up Roller Coaster
This commit is contained in:
Michael Steenbeek 2024-03-26 00:28:19 +01:00 committed by GitHub
commit 457d40bf2b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 1700 additions and 9 deletions

View File

@ -64,9 +64,9 @@ set(TITLE_SEQUENCE_VERSION "0.4.6")
set(TITLE_SEQUENCE_URL "https://github.com/OpenRCT2/title-sequences/releases/download/v${TITLE_SEQUENCE_VERSION}/title-sequences.zip")
set(TITLE_SEQUENCE_SHA1 "80fefc6ebbabc42a6f4703412daa5c62f661420d")
set(OBJECTS_VERSION "1.4.0")
set(OBJECTS_VERSION "1.4.2")
set(OBJECTS_URL "https://github.com/OpenRCT2/objects/releases/download/v${OBJECTS_VERSION}/objects.zip")
set(OBJECTS_SHA1 "f512e230ffa2f16109209e4f30e7d7bf4fe21fc0")
set(OBJECTS_SHA1 "2adc4cb66a6446533d67097bdf44cd9c5882fea3")
set(OPENSFX_VERSION "1.0.5")
set(OPENSFX_URL "https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v${OPENSFX_VERSION}/opensound.zip")

View File

@ -98,6 +98,7 @@ STR_0093 :Hybrid Coaster
STR_0094 :Single Rail Roller Coaster
STR_0095 :Alpine Coaster
STR_0096 :Classic Wooden Roller Coaster
STR_0097 :Classic Stand-up Roller Coaster
STR_0512 :A compact roller coaster with a spiral lift hill and smooth, twisting drops.
STR_0513 :A looping roller coaster where the riders ride in a standing position
STR_0514 :Trains suspended beneath the roller coaster track swing out to the side around corners
@ -181,6 +182,7 @@ STR_0603 :A wooden style roller coaster with a steel track, allowing for stee
STR_0604 :Riders ride single file on a narrow monorail track, as they race through tight inversions and direction changes
STR_0605 :Riders toboggan down a meandering steel track, braking to control their speed
STR_0606 :An older-style wooden roller coaster with a fast and rough ride, with plenty of air-time, some lateral Gs, and designed to feel out-of-control
STR_0607 :An intense, older-style steel looping roller coaster where the riders ride in a standing position
STR_0767 :Guest {INT32}
STR_0768 :Handyman {INT32}
STR_0769 :Mechanic {INT32}

View File

@ -1,9 +1,18 @@
0.4.10 (in development)
------------------------------------------------------------------------
- Feature: [#18171] Add port of the RCT1 Stand-Up Roller Coaster.
- Feature: [#21636] Add shortcut key for sorting tile elements.
- Feature: [objects#294] Add scenery versions of wooden truss supports.
- Feature: [objects#295] Flipped version of wooden post.
- Improved: [#21424] Extra viewports can now rotate independently from the main viewport.
- Improved: [#21561, #21631] Enable more features in Android build (plugins, networking, multiplayer, audio formats).
- Improved: [#21599] Currency signs now use non-breaking spaces.
- Improved: [objects#157] Added sloped images for many walls.
- Improved: [objects#288] Better map colours and more sensible prices for RCT1 land surfaces.
- Improved: [objects#292] Vehicle colour cleanups for WW/TT vehicles.
- Improved: [objects#299] More accurate ratings modifiers for RCT1 vehicles.
- Improved: [objects#309] Updated names for dodgems and flying saucers vehicles.
- Improved: [objects#313] buildMenuPriority for dodgems and flying saucers vehicles.
- Change: [#21529] Classify “Southern Sands”, “Tiny Towers”, “Nevermore Park”, “Pacifica” as expert scenarios.
- Fix: [#910] Extra viewport does not preserve the location when rotating.
- Fix: [#18413] Crash when mouse over a hacked train.
@ -13,6 +22,11 @@
- Fix: [#21543] Crash with creating a TrackIterator with invalid arguments.
- Fix: [#21635] Tile inspector hotkey can set wall slope for non-slopeable objects.
- Fix: [#21641] Crash when creating track iterator from an invalid tile element.
- Fix: [objects#290] “Haunted Mansion” cars have a non-functional third remap colour.
- Fix: [objects#296] Incorrect wall placement around large Kremlin/drab pieces.
- Fix: [objects#300] Incorrect Colosseum and volcano corner clearances.
- Fix: [objects#319] Incorrect diagonal slope images used for RCT1 corkscrew.
- Fix: [objects#320] Incorrect Mandarin Duck boats capacity.
0.4.9 (2024-03-02)
------------------------------------------------------------------------

View File

@ -45,8 +45,8 @@
<LibsSha1 Condition="'$(Platform)'=='ARM64'">bd338aa3da9a357fb996dcaa6cea02c4f906718c</LibsSha1>
<TitleSequencesUrl>https://github.com/OpenRCT2/title-sequences/releases/download/v0.4.6/title-sequences.zip</TitleSequencesUrl>
<TitleSequencesSha1>80fefc6ebbabc42a6f4703412daa5c62f661420d</TitleSequencesSha1>
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.4.0/objects.zip</ObjectsUrl>
<ObjectsSha1>f512e230ffa2f16109209e4f30e7d7bf4fe21fc0</ObjectsSha1>
<ObjectsUrl>https://github.com/OpenRCT2/objects/releases/download/v1.4.2/objects.zip</ObjectsUrl>
<ObjectsSha1>2adc4cb66a6446533d67097bdf44cd9c5882fea3</ObjectsSha1>
<OpenSFXUrl>https://github.com/OpenRCT2/OpenSoundEffects/releases/download/v1.0.5/opensound.zip</OpenSFXUrl>
<OpenSFXSha1>b1b1f1b241d2cbff63a1889c4dc5a09bdf769bfb</OpenSFXSha1>
<OpenMSXUrl>https://github.com/OpenRCT2/OpenMusic/releases/download/v1.5/openmusic.zip</OpenMSXUrl>

View File

@ -80,6 +80,7 @@ namespace OpenRCT2::Ui::Windows
RIDE_TYPE_MINE_TRAIN_COASTER,
RIDE_TYPE_LOOPING_ROLLER_COASTER,
RIDE_TYPE_STAND_UP_ROLLER_COASTER,
RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER,
RIDE_TYPE_CORKSCREW_ROLLER_COASTER,
RIDE_TYPE_HYPERCOASTER,
RIDE_TYPE_LIM_LAUNCHED_ROLLER_COASTER,

View File

@ -396,6 +396,7 @@
<ClInclude Include="ride\coaster\meta\AlpineCoaster.h" />
<ClInclude Include="ride\coaster\meta\BobsleighCoaster.h" />
<ClInclude Include="ride\coaster\meta\ClassicMiniRollerCoaster.h" />
<ClInclude Include="ride\coaster\meta\ClassicStandUpRollerCoaster.h" />
<ClInclude Include="ride\coaster\meta\ClassicWoodenRollerCoaster.h" />
<ClInclude Include="ride\coaster\meta\CompactInvertedCoaster.h" />
<ClInclude Include="ride\coaster\meta\CorkscrewRollerCoaster.h" />
@ -901,6 +902,7 @@
<ClCompile Include="ride\coaster\AirPoweredVerticalCoaster.cpp" />
<ClCompile Include="ride\coaster\AlpineCoaster.cpp" />
<ClCompile Include="ride\coaster\BobsleighCoaster.cpp" />
<ClCompile Include="ride\coaster\ClassicStandUpRollerCoaster.cpp" />
<ClCompile Include="ride\coaster\ClassicWoodenRollerCoaster.cpp" />
<ClCompile Include="ride\coaster\CompactInvertedCoaster.cpp" />
<ClCompile Include="ride\coaster\CorkscrewRollerCoaster.cpp" />

View File

@ -113,6 +113,7 @@ enum : uint16_t
STR_RIDE_NAME_SINGLE_RAIL_ROLLER_COASTER = 94,
STR_RIDE_NAME_ALPINE_COASTER = 95,
STR_RIDE_NAME_CLASSIC_WOODEN_ROLLER_COASTER = 96,
STR_RIDE_NAME_CLASSIC_STAND_UP_ROLLER_COASTER = 97,
STR_RIDE_DESCRIPTION_SPIRAL_ROLLER_COASTER = 512,
STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER = 513,
@ -206,6 +207,7 @@ enum : uint16_t
STR_RIDE_DESCRIPTION_SINGLE_RAIL_ROLLER_COASTER = 604,
STR_RIDE_DESCRIPTION_ALPINE_COASTER = 605,
STR_RIDE_DESCRIPTION_CLASSIC_WOODEN_ROLLER_COASTER = 606,
STR_RIDE_DESCRIPTION_CLASSIC_STAND_UP_ROLLER_COASTER = 607,
STR_GUEST_X = 767,
STR_HANDYMAN_X = 768,

View File

@ -178,6 +178,26 @@ static constexpr uint8_t metal_supports_slope_image_map[] = {
};
// clang-format on
static constexpr MetalSupportPlace kMetalSupportPlacementRotated[][NumOrthogonalDirections] = {
{ MetalSupportPlace::TopCorner, MetalSupportPlace::RightCorner, MetalSupportPlace::BottomCorner,
MetalSupportPlace::LeftCorner },
{ MetalSupportPlace::LeftCorner, MetalSupportPlace::TopCorner, MetalSupportPlace::RightCorner,
MetalSupportPlace::BottomCorner },
{ MetalSupportPlace::RightCorner, MetalSupportPlace::BottomCorner, MetalSupportPlace::LeftCorner,
MetalSupportPlace::TopCorner },
{ MetalSupportPlace::BottomCorner, MetalSupportPlace::LeftCorner, MetalSupportPlace::TopCorner,
MetalSupportPlace::RightCorner },
{ MetalSupportPlace::Centre, MetalSupportPlace::Centre, MetalSupportPlace::Centre, MetalSupportPlace::Centre },
{ MetalSupportPlace::TopLeftSide, MetalSupportPlace::TopRightSide, MetalSupportPlace::BottomRightSide,
MetalSupportPlace::BottomLeftSide },
{ MetalSupportPlace::TopRightSide, MetalSupportPlace::BottomRightSide, MetalSupportPlace::BottomLeftSide,
MetalSupportPlace::TopLeftSide },
{ MetalSupportPlace::BottomLeftSide, MetalSupportPlace::BottomLeftSide, MetalSupportPlace::TopLeftSide,
MetalSupportPlace::TopRightSide },
{ MetalSupportPlace::BottomRightSide, MetalSupportPlace::TopLeftSide, MetalSupportPlace::TopRightSide,
MetalSupportPlace::BottomRightSide },
};
/**
* Metal pole supports
* @param supportType (edi)
@ -374,6 +394,14 @@ bool MetalASupportsPaintSetup(
return true;
}
bool MetalASupportsPaintSetupRotated(
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
int32_t special, int32_t height, ImageId imageTemplate)
{
placement = kMetalSupportPlacementRotated[EnumValue(placement)][direction];
return MetalASupportsPaintSetup(session, supportTypeMember, placement, special, height, imageTemplate);
}
/**
* Metal pole supports
* rct2: 0x00663584
@ -559,6 +587,14 @@ bool MetalBSupportsPaintSetup(
return false; // AND
}
bool MetalBSupportsPaintSetupRotated(
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
int32_t special, int32_t height, ImageId imageTemplate)
{
placement = kMetalSupportPlacementRotated[EnumValue(placement)][direction];
return MetalBSupportsPaintSetup(session, supportTypeMember, placement, special, height, imageTemplate);
}
constexpr uint8_t MetalSupportTypeCount = 13;
constexpr MetalSupportType RotatedMetalSupports[MetalSupportTypeCount][NumOrthogonalDirections] = {
{ MetalSupportType::Tubes, MetalSupportType::Tubes, MetalSupportType::Tubes, MetalSupportType::Tubes },

View File

@ -95,9 +95,15 @@ struct PaintSession;
bool MetalASupportsPaintSetup(
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, int32_t special, int32_t height,
ImageId imageTemplate);
bool MetalASupportsPaintSetupRotated(
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
int32_t special, int32_t height, ImageId imageTemplate);
bool MetalBSupportsPaintSetup(
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, int32_t special, int32_t height,
ImageId imageTemplate);
bool MetalBSupportsPaintSetupRotated(
PaintSession& session, MetalSupportType supportTypeMember, MetalSupportPlace placement, Direction direction,
int32_t special, int32_t height, ImageId imageTemplate);
void DrawSupportsSideBySide(
PaintSession& session, Direction direction, uint16_t height, ImageId colour, MetalSupportType type, int32_t special = 0);
bool PathPoleSupportsPaintSetup(

View File

@ -173,7 +173,7 @@ namespace RCT1
static uint8_t map[] =
{
RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER,// RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
RIDE_TYPE_STAND_UP_ROLLER_COASTER, // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER, // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
RIDE_TYPE_SUSPENDED_SWINGING_COASTER, // RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER
RIDE_TYPE_INVERTED_ROLLER_COASTER, // RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER
RIDE_TYPE_CLASSIC_MINI_ROLLER_COASTER, // RCT1_RIDE_TYPE_STEEL_MINI_ROLLER_COASTER
@ -275,7 +275,7 @@ namespace RCT1
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_INVERTED_COASTER_TRAIN, // Not in RCT2
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_SUSPENDED_SWINGING_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_LADYBIRD_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_1, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COPY_COLOUR_2 }, // RCT1_VEHICLE_TYPE_STANDUP_ROLLER_COASTER_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SPINNING_CARS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SINGLE_PERSON_SWINGING_CHAIRS,
{ COPY_COLOUR_1, COPY_COLOUR_2, COLOUR_BLACK }, // RCT1_VEHICLE_TYPE_SWANS_PEDAL_BOATS,
@ -705,7 +705,7 @@ namespace RCT1
static constexpr const char * map[] =
{
"rct1.ride.wooden_rc_trains", // RCT1_RIDE_TYPE_WOODEN_ROLLER_COASTER
"rct2.ride.togst", // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
"rct1.ride.stand_up_trains", // RCT1_RIDE_TYPE_STAND_UP_STEEL_ROLLER_COASTER
"rct1.ride.suspended_swinging_cars", // RCT1_RIDE_TYPE_SUSPENDED_ROLLER_COASTER
"rct1ll.ride.4_across_inverted_trains", // RCT1_RIDE_TYPE_INVERTED_ROLLER_COASTER
"rct1.ride.ladybird_trains", // RCT1_RIDE_TYPE_STEEL_MINI_ROLLER_COASTER
@ -807,7 +807,7 @@ namespace RCT1
"rct1.ride.inverted_trains", // VehicleType::InvertedCoasterTrain//NotinRCT2
"rct1.ride.suspended_swinging_cars", // VehicleType::SuspendedSwingingCars
"rct1.ride.ladybird_trains", // VehicleType::LadybirdCars
"rct2.ride.togst", // VehicleType::StandupRollerCoasterCars
"rct1.ride.stand_up_trains", // VehicleType::StandupRollerCoasterCars
"rct2.ride.wmspin", // VehicleType::SpinningCars
"rct1.ride.single_person_swinging_cars", // VehicleType::SinglePersonSwingingChairs
"rct2.ride.swans", // VehicleType::SwansPedalBoats

View File

@ -611,6 +611,7 @@ enum
RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER,
RIDE_TYPE_ALPINE_COASTER,
RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER,
RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER,
RIDE_TYPE_COUNT
};

View File

@ -34,6 +34,7 @@
#include "coaster/meta/AlpineCoaster.h"
#include "coaster/meta/BobsleighCoaster.h"
#include "coaster/meta/ClassicMiniRollerCoaster.h"
#include "coaster/meta/ClassicStandUpRollerCoaster.h"
#include "coaster/meta/ClassicWoodenRollerCoaster.h"
#include "coaster/meta/CompactInvertedCoaster.h"
#include "coaster/meta/CorkscrewRollerCoaster.h"
@ -350,6 +351,7 @@ constexpr RideTypeDescriptor RideTypeDescriptors[RIDE_TYPE_COUNT] = {
/* RIDE_TYPE_SINGLE_RAIL_ROLLER_COASTER */ SingleRailRollerCoasterRTD,
/* RIDE_TYPE_ALPINE_COASTER */ AlpineCoasterRTD,
/* RIDE_TYPE_CLASSIC_WOODEN_ROLLER_COASTER */ ClassicWoodenRollerCoasterRTD,
/* RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER */ ClassicStandUpRollerCoasterRTD,
};
bool RideTypeDescriptor::HasFlag(uint64_t flag) const

View File

@ -1347,6 +1347,13 @@ const uint8_t mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[] = {
6, 4, 5, 3, 1, 2, 0,
};
const uint8_t mapReversedDiagonalStraight[4] = {
3,
2,
1,
0,
};
constexpr CoordsXY defaultRightQuarterTurn5TilesOffsets[4][5] = {
{
{ 0, 6 },

View File

@ -247,6 +247,8 @@ extern const uint32_t trackSpritesSubmarineRideMiniHelicoptersQuarterTurn3Tiles[
extern const uint32_t trackSpritesSubmarineRideMiniHelicoptersQuarterTurn1Tile[4];
extern const uint8_t mapLeftQuarterTurn5TilesToRightQuarterTurn5Tiles[];
extern const Direction mapReversedDiagonalStraight[];
extern const CoordsXY defaultRightQuarterTurn5TilesOffsets[4][5];
extern const CoordsXYZ defaultRightQuarterTurn5TilesBoundOffsets[4][5];
extern const CoordsXY defaultRightQuarterTurn5TilesBoundLengths[4][5];
@ -494,3 +496,4 @@ namespace AlpineRC
TRACK_PAINT_FUNCTION GetTrackPaintFunction(int32_t trackType);
}
TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicWoodenRC(int32_t trackType);
TRACK_PAINT_FUNCTION GetTrackPaintFunctionClassicStandUpRC(int32_t trackType);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,87 @@
/*****************************************************************************
* Copyright (c) 2014-2024 OpenRCT2 developers
*
* For a complete list of all authors, please refer to contributors.md
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
*
* OpenRCT2 is licensed under the GNU General Public License version 3.
*****************************************************************************/
#pragma once
#include "../../../sprites.h"
#include "../../RideData.h"
#include "../../ShopItem.h"
#include "../../Track.h"
// clang-format off
constexpr RideTypeDescriptor ClassicStandUpRollerCoasterRTD =
{
.AlternateType = RIDE_TYPE_NULL,
.Category = RIDE_CATEGORY_ROLLERCOASTER,
.EnabledTrackPieces = {TRACK_STRAIGHT, TRACK_STATION_END, TRACK_LIFT_HILL, TRACK_FLAT_ROLL_BANKING, TRACK_VERTICAL_LOOP, TRACK_SLOPE, TRACK_SLOPE_STEEP_UP, TRACK_SLOPE_STEEP_DOWN, TRACK_SLOPE_CURVE, TRACK_S_BEND, TRACK_CURVE_SMALL, TRACK_CURVE, TRACK_CURVE_LARGE, TRACK_HALF_LOOP, TRACK_CORKSCREW, TRACK_BRAKES, TRACK_ON_RIDE_PHOTO, TRACK_BLOCK_BRAKES, TRACK_DIAG_BRAKES, TRACK_DIAG_BLOCK_BRAKES},
.ExtraTrackPieces = {},
.CoveredTrackPieces = {},
.StartTrackPiece = TrackElemType::EndStation,
.TrackPaintFunctions = TrackDrawerDescriptor(GetTrackPaintFunctionClassicStandUpRC),
.Flags = RIDE_TYPE_FLAGS_TRACK_HAS_3_COLOURS | RIDE_TYPE_FLAG_HAS_LEAVE_WHEN_ANOTHER_VEHICLE_ARRIVES_AT_STATION |
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT |
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
RIDE_TYPE_FLAG_ALLOW_REVERSED_TRAINS,
.RideModes = EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned, RideMode::ReverseInclineLaunchedShuttle, RideMode::PoweredLaunchPasstrough, RideMode::PoweredLaunch),
.DefaultMode = RideMode::ContinuousCircuit,
.OperatingSettings = { 7, 27, 0, 0, 0, 0 },
.Naming = { STR_RIDE_NAME_CLASSIC_STAND_UP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_CLASSIC_STAND_UP_ROLLER_COASTER },
.NameConvention = { RideComponentType::Train, RideComponentType::Track, RideComponentType::Station },
.EnumName = nameof(RIDE_TYPE_CLASSIC_STAND_UP_ROLLER_COASTER),
.AvailableBreakdowns = (1 << BREAKDOWN_SAFETY_CUT_OUT) | (1 << BREAKDOWN_RESTRAINTS_STUCK_CLOSED) | (1 << BREAKDOWN_RESTRAINTS_STUCK_OPEN) | (1 << BREAKDOWN_VEHICLE_MALFUNCTION) | (1 << BREAKDOWN_BRAKES_FAILURE),
.Heights = { 30, 24, 9, 11, },
.MaxMass = 18,
.LiftData = { OpenRCT2::Audio::SoundId::LiftClassic, 4, 6 },
.RatingsMultipliers = { 50, 30, 10 },
.UpkeepCosts = { 40, 20, 80, 10, 3, 10 },
.BuildCosts = { 50.00_GBP, 2.50_GBP, 50, },
.DefaultPrices = { 20, 20 },
.DefaultMusic = MUSIC_OBJECT_TECHNO,
.PhotoItem = ShopItem::Photo,
.BonusValue = 90,
.ColourPresets = TRACK_COLOUR_PRESETS(
{ COLOUR_BRIGHT_RED, COLOUR_BRIGHT_RED, COLOUR_BLACK },
{ COLOUR_BLACK, COLOUR_LIGHT_BLUE, COLOUR_BLACK },
{ COLOUR_LIGHT_ORANGE, COLOUR_WHITE, COLOUR_LIGHT_ORANGE },
{ COLOUR_BORDEAUX_RED, COLOUR_YELLOW, COLOUR_BORDEAUX_RED },
{ COLOUR_MOSS_GREEN, COLOUR_MOSS_GREEN, COLOUR_WHITE },
{ COLOUR_SATURATED_BROWN, COLOUR_LIGHT_ORANGE, COLOUR_SATURATED_BROWN },
),
.ColourPreview = { SPR_RIDE_DESIGN_PREVIEW_STAND_UP_ROLLER_COASTER_TRACK, SPR_RIDE_DESIGN_PREVIEW_STAND_UP_ROLLER_COASTER_SUPPORTS },
.ColourKey = RideColourKey::Ride,
.Name = "classic_stand_up_rc",
.RatingsData =
{
RatingsCalculationType::Normal,
{ RIDE_RATING(2, 50), RIDE_RATING(3, 00), RIDE_RATING(3, 00) },
17,
-1,
false,
{
{ RatingsModifierType::BonusLength, 6000, 764, 0, 0 },
{ RatingsModifierType::BonusSynchronisation, 0, RIDE_RATING(0, 40), RIDE_RATING(0, 10), 0 },
{ RatingsModifierType::BonusTrainLength, 0, 187245, 0, 0 },
{ RatingsModifierType::BonusMaxSpeed, 0, 44281, 123987, 35424 },
{ RatingsModifierType::BonusAverageSpeed, 0, 291271, 436906, 0 },
{ RatingsModifierType::BonusDuration, 150, 26214, 0, 0 },
{ RatingsModifierType::BonusGForces, 0, 24576, 35746, 59578 },
{ RatingsModifierType::BonusTurns, 0, 26749, 34767, 45749 },
{ RatingsModifierType::BonusDrops, 0, 34952, 46811, 49152 },
{ RatingsModifierType::BonusSheltered, 0, 12850, 28398, 30427 },
{ RatingsModifierType::BonusReversedTrains, 0, 2, 20, 30 },
{ RatingsModifierType::BonusProximity, 0, 17893, 0, 0 },
{ RatingsModifierType::BonusScenery, 0, 5577, 0, 0 },
{ RatingsModifierType::RequirementDropHeight, 12, 2, 2, 2 },
{ RatingsModifierType::RequirementMaxSpeed, 0xA0000, 2, 2, 2 },
{ RatingsModifierType::RequirementNegativeGs, FIXED_2DP(0, 50), 2, 2, 2 },
{ RatingsModifierType::PenaltyLateralGs, 0, 24576, 35746, 59578 },
},
},
};
// clang-format on

View File

@ -28,7 +28,7 @@ constexpr RideTypeDescriptor StandUpRollerCoasterRTD =
RIDE_TYPE_FLAGS_COMMON_COASTER | RIDE_TYPE_FLAGS_COMMON_COASTER_NON_ALT |
RIDE_TYPE_FLAG_PEEP_CHECK_GFORCES | RIDE_TYPE_FLAG_ALLOW_MULTIPLE_CIRCUITS |
RIDE_TYPE_FLAG_ALLOW_REVERSED_TRAINS,
.RideModes = EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned, RideMode::ReverseInclineLaunchedShuttle, RideMode::PoweredLaunchPasstrough, RideMode::PoweredLaunch),
.RideModes = EnumsToFlags(RideMode::ContinuousCircuit, RideMode::ContinuousCircuitBlockSectioned),
.DefaultMode = RideMode::ContinuousCircuit,
.OperatingSettings = { 7, 27, 0, 0, 0, 0 },
.Naming = { STR_RIDE_NAME_STAND_UP_ROLLER_COASTER, STR_RIDE_DESCRIPTION_STAND_UP_ROLLER_COASTER },